Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wzj-java
uni-app
提交
a51e70f5
U
uni-app
项目概览
wzj-java
/
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,发现更多精彩内容 >>
提交
a51e70f5
编写于
9月 14, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
wip(uts): compiler
上级
0a8dd9e5
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
143 addition
and
40 deletion
+143
-40
packages/playground/uts/uni_modules/test-uniplugin/app-ios/index.uts
...ayground/uts/uni_modules/test-uniplugin/app-ios/index.uts
+21
-0
packages/playground/uts/unpackage/dist/app/uni_modules/test-uniplugin/app-ios/index.swift
...e/dist/app/uni_modules/test-uniplugin/app-ios/index.swift
+15
-0
packages/playground/uts/unpackage/dist/app/uni_modules/test-uniplugin/app-ios/index.swift.map
...st/app/uni_modules/test-uniplugin/app-ios/index.swift.map
+1
-0
packages/uni-uts-vite/src/utils/compiler/swift.ts
packages/uni-uts-vite/src/utils/compiler/swift.ts
+3
-2
packages/uni-uts-vite/src/utils/compiler/utils.ts
packages/uni-uts-vite/src/utils/compiler/utils.ts
+7
-5
packages/uts-darwin-arm64/uts.darwin-arm64.node
packages/uts-darwin-arm64/uts.darwin-arm64.node
+0
-0
packages/uts-darwin-x64/uts.darwin-x64.node
packages/uts-darwin-x64/uts.darwin-x64.node
+0
-0
packages/uts-win32-ia32-msvc/uts.win32-ia32-msvc.node
packages/uts-win32-ia32-msvc/uts.win32-ia32-msvc.node
+0
-0
packages/uts-win32-x64-msvc/uts.win32-x64-msvc.node
packages/uts-win32-x64-msvc/uts.win32-x64-msvc.node
+0
-0
packages/uts/src/api.ts
packages/uts/src/api.ts
+14
-2
packages/uts/src/index.ts
packages/uts/src/index.ts
+12
-2
scripts/test.js
scripts/test.js
+70
-29
未找到文件。
packages/playground/uts/uni_modules/test-uniplugin/app-ios/index.uts
浏览文件 @
a51e70f5
import
{
UIDevice
}
from
'UIKit'
type
GetBatteryInfoOptions
=
{
success
?:
(
res
:
UTSJSONObject
)
=>
void
fail
?:
(
res
:
UTSJSONObject
)
=>
void
complete
?:
(
res
:
UTSJSONObject
)
=>
void
}
export
default
async
function
getBatteryInfo
(
options
:
GetBatteryInfoOptions
)
{
const
res
=
{
errMsg
:
'getBatteryInfo:ok'
,
level
:
UIDevice
.
current
.
batteryLevel
*
100
,
isCharging
:
UIDevice
.
current
.
batteryState
==
UIDevice
.
BatteryState
.
charging
,
}
if
(
options
.
success
!=
null
)
{
options
.
success
!
(
res
)
}
if
(
options
.
complete
!=
null
)
{
options
.
complete
!
(
res
)
}
}
packages/playground/uts/unpackage/dist/app/uni_modules/test-uniplugin/app-ios/index.swift
0 → 100644
浏览文件 @
a51e70f5
import
UIKit
;
typealias
GetBatteryInfoOptions
=
{
var
success
?:
(
_
res
:
UTSJSONObject
)
->
Void
;
var
fail
?:
(
_
res
:
UTSJSONObject
)
->
Void
;
var
complete
?:
(
_
res
:
UTSJSONObject
)
->
Void
;
};
async
func
getBatteryInfo
(
_
options
:
GetBatteryInfoOptions
)
{
var
res
=
[
"errMsg"
:
"getBatteryInfo:ok"
,
"level"
:
UIDevice
.
current
.
batteryLevel
*
100
,
"isCharging"
:
UIDevice
.
current
.
batteryState
==
UIDevice
.
BatteryState
.
charging
];
if
(
options
.
success
!=
nil
)
options
.
success
!
(
res
);
if
(
options
.
complete
!=
nil
)
options
.
complete
!
(
res
);
}
packages/playground/uts/unpackage/dist/app/uni_modules/test-uniplugin/app-ios/index.swift.map
0 → 100644
浏览文件 @
a51e70f5
{
"version"
:
3
,
"sources"
:
[
"/Users/fxy/Projects/GitHub/uni-app/uni-app-next/packages/playground/uts/uni_modules/test-uniplugin/app-ios/index.uts"
],
"sourcesContent"
:
[
"import { UIDevice } from 'UIKit'
\n\n
type GetBatteryInfoOptions = {\n success?: (res: UTSJSONObject) => void
\n
fail?: (res: UTSJSONObject) => void
\n
complete?: (res: UTSJSONObject) => void
\n
}
\n\n
export default async function getBatteryInfo(options: GetBatteryInfoOptions) {\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
"
],
"names"
:
[],
"mappings"
:
"AAAA;UAEK,qBAAqB;QACxB,OAAO,MAAI,GAAkB,EAAb,aAAa,KAAK,IAAI;QACtC,IAAI,MAAI,GAAkB,EAAb,aAAa,KAAK,IAAI;QACnC,QAAQ,MAAI,GAAkB,EAAb,aAAa,KAAK,IAAI;;AAG1B,WAAe,cAAc,CAAC,EAAA,OAA8B,EAArB,qBAAqB,EAAE;IAC3E,IAAM,GAAG,GAAG;QACV,CAAA,MAAM,GAAE,mBAAmB;QAC3B,CAAA,KAAK,GAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG;QAC1C,CAAA,UAAU,GAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ;KAC5E;IACD,IAAI,OAAO,CAAC,OAAO,IAAI,GAAI,EACzB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;IAEvB,IAAI,OAAO,CAAC,QAAQ,IAAI,GAAI,EAC1B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;AAE1B"
}
\ No newline at end of file
packages/uni-uts-vite/src/utils/compiler/swift.ts
浏览文件 @
a51e70f5
import
{
isInHBuilderX
,
resolveSourceMapPath
}
from
'
@dcloudio/uni-cli-shared
'
import
{
capitalize
}
from
'
@vue/shared
'
import
{
genUTSPlatformResource
,
getUtsCompiler
,
resolvePackage
}
from
'
./utils
'
export
function
parseSwiftPackage
(
filename
:
string
)
{
...
...
@@ -6,7 +7,7 @@ export function parseSwiftPackage(filename: string) {
if
(
!
res
)
{
return
''
}
return
'
UTSSDK
'
+
(
res
.
is_uni_modules
?
'
Modules
'
:
''
)
+
res
.
name
return
'
UTSSDK
'
+
(
res
.
is_uni_modules
?
'
Modules
'
:
''
)
+
capitalize
(
res
.
name
)
}
export
async
function
compileSwift
(
filename
:
string
)
{
...
...
@@ -31,7 +32,7 @@ export async function compileSwift(filename: string) {
outDir
:
outputDir
,
package
:
''
,
sourceMap
:
resolveSourceMapPath
(),
extname
:
'
k
t
'
,
extname
:
'
swif
t
'
,
imports
:
[],
logFilename
:
true
,
noColor
:
isInHBuilderX
(),
...
...
packages/uni-uts-vite/src/utils/compiler/utils.ts
浏览文件 @
a51e70f5
...
...
@@ -44,11 +44,13 @@ export function genUTSPlatformResource(
const
utsOutputDir
=
resolveUTSPlatformDir
(
platformFile
,
platform
)
// 拷贝所有非uts文件及目录
fs
.
copySync
(
utsInputDir
,
utsOutputDir
,
{
filter
(
src
)
{
return
path
.
extname
(
src
)
!==
'
.uts
'
},
})
if
(
fs
.
existsSync
(
utsInputDir
))
{
fs
.
copySync
(
utsInputDir
,
utsOutputDir
,
{
filter
(
src
)
{
return
path
.
extname
(
src
)
!==
'
.uts
'
},
})
}
// 生产模式下,需要将 kt 文件转移到 src 下
const
srcDir
=
path
.
resolve
(
utsOutputDir
,
'
src
'
)
...
...
packages/uts-darwin-arm64/uts.darwin-arm64.node
浏览文件 @
a51e70f5
无法预览此类型文件
packages/uts-darwin-x64/uts.darwin-x64.node
浏览文件 @
a51e70f5
无法预览此类型文件
packages/uts-win32-ia32-msvc/uts.win32-ia32-msvc.node
浏览文件 @
a51e70f5
无法预览此类型文件
packages/uts-win32-x64-msvc/uts.win32-x64-msvc.node
浏览文件 @
a51e70f5
无法预览此类型文件
packages/uts/src/api.ts
浏览文件 @
a51e70f5
...
...
@@ -63,6 +63,16 @@ export function toKotlin(options: UtsOptions): Promise<UtsResult> {
.
then
((
res
:
string
)
=>
JSON
.
parse
(
res
))
}
export
function
bundleKotlin
(
options
:
UtsBundleOptions
):
Promise
<
UtsResult
>
{
const
bundleOptions
=
resolveOptions
(
options
)
if
(
!
bundleOptions
)
{
return
Promise
.
resolve
({})
}
return
bindings
.
bundleKotlin
(
toBuffer
(
bundleOptions
))
.
then
((
res
:
string
)
=>
res
)
}
export
function
toSwift
(
options
:
UtsOptions
):
Promise
<
UtsResult
>
{
const
swiftOptions
=
resolveOptions
(
options
)
if
(
!
swiftOptions
)
{
...
...
@@ -73,12 +83,14 @@ export function toSwift(options: UtsOptions): Promise<UtsResult> {
.
then
((
res
:
string
)
=>
JSON
.
parse
(
res
))
}
export
function
bundle
(
options
:
UtsBundleOptions
):
Promise
<
UtsResult
>
{
export
function
bundle
Swift
(
options
:
UtsBundleOptions
):
Promise
<
UtsResult
>
{
const
bundleOptions
=
resolveOptions
(
options
)
if
(
!
bundleOptions
)
{
return
Promise
.
resolve
({})
}
return
bindings
.
bundle
(
toBuffer
(
bundleOptions
)).
then
((
res
:
string
)
=>
res
)
return
bindings
.
bundleSwift
(
toBuffer
(
bundleOptions
))
.
then
((
res
:
string
)
=>
res
)
}
function
toBuffer
(
t
:
any
):
Buffer
{
...
...
packages/uts/src/index.ts
浏览文件 @
a51e70f5
...
...
@@ -4,8 +4,9 @@ import glob from 'fast-glob'
import
chokidar
from
'
chokidar
'
import
{
toKotlin
,
toSwift
}
from
'
./api
'
import
{
bundleKotlin
,
bundleSwift
,
toKotlin
,
toSwift
}
from
'
./api
'
import
{
UtsBundleOptions
,
UtsInputOptions
,
UtsOptions
,
UtsOutputOptions
,
...
...
@@ -316,7 +317,16 @@ function buildFile(
})
}
export
{
parse
,
bundle
}
from
'
./api
'
export
{
parse
,
bundleKotlin
,
bundleSwift
}
from
'
./api
'
export
function
bundle
(
target
:
UtsTarget
,
opts
:
UtsBundleOptions
)
{
if
(
target
===
UtsTarget
.
KOTLIN
)
{
return
bundleKotlin
(
opts
)
}
else
if
(
target
===
UtsTarget
.
SWIFT
)
{
return
bundleSwift
(
opts
)
}
return
Promise
.
resolve
({})
}
export
function
runDev
(
target
:
UtsTarget
,
opts
:
ToOptions
)
{
opts
=
parseOptions
(
'
dev
'
,
target
,
opts
)
...
...
scripts/test.js
浏览文件 @
a51e70f5
const
fs
=
require
(
'
fs
'
)
const
path
=
require
(
'
path
'
)
const
{
parse
,
bundle
}
=
require
(
'
../packages/uts/dist
'
)
const
{
parse
,
bundle
,
UtsTarget
}
=
require
(
'
../packages/uts/dist
'
)
const
projectDir
=
path
.
resolve
(
__dirname
,
'
../packages/playground/uts
'
)
le
t
start
=
Date
.
now
()
cons
t
start
=
Date
.
now
()
parse
(
fs
.
readFileSync
(
path
.
resolve
(
...
...
@@ -16,33 +16,74 @@ parse(
console
.
log
(
'
parse:
'
+
(
Date
.
now
()
-
start
)
+
'
ms
'
)
console
.
log
(
JSON
.
stringify
(
res
))
})
start
=
Date
.
now
()
bundle
({
input
:
{
root
:
projectDir
,
filename
:
path
.
resolve
(
projectDir
,
'
uni_modules/test-uniplugin/app-android/index.uts
'
),
},
output
:
{
outDir
:
path
.
resolve
(
projectDir
,
'
unpackage/dist/app
'
),
package
:
'
uts.modules.testUniPlugin
'
,
imports
:
[
'
kotlinx.coroutines.*
'
,
'
io.dcloud.uts.runtime.*
'
],
sourceMap
:
true
,
extname
:
'
kt
'
,
logFilename
:
true
,
},
}).
then
((
res
)
=>
{
console
.
log
(
'
bundle:
'
+
(
Date
.
now
()
-
start
)
+
'
ms
'
)
console
.
log
(
JSON
.
stringify
(
res
))
console
.
log
(
fs
.
readFileSync
(
path
.
resolve
(
function
testKotlin
()
{
const
start
=
Date
.
now
()
return
bundle
(
UtsTarget
.
KOTLIN
,
{
input
:
{
root
:
projectDir
,
filename
:
path
.
resolve
(
projectDir
,
'
un
package/dist/app/uni_modules/test-uniplugin/app-android/index.kt
'
'
un
i_modules/test-uniplugin/app-android/index.uts
'
),
'
utf8
'
},
output
:
{
outDir
:
path
.
resolve
(
projectDir
,
'
unpackage/dist/app
'
),
package
:
'
uts.modules.testUniPlugin
'
,
imports
:
[
'
kotlinx.coroutines.*
'
,
'
io.dcloud.uts.runtime.*
'
],
sourceMap
:
true
,
extname
:
'
kt
'
,
logFilename
:
true
,
},
}).
then
((
res
)
=>
{
console
.
log
(
'
bundle:
'
+
(
Date
.
now
()
-
start
)
+
'
ms
'
)
console
.
log
(
JSON
.
stringify
(
res
))
console
.
log
(
fs
.
readFileSync
(
path
.
resolve
(
projectDir
,
'
unpackage/dist/app/uni_modules/test-uniplugin/app-android/index.kt
'
),
'
utf8
'
)
)
)
})
})
}
function
testSwift
()
{
const
start
=
Date
.
now
()
return
bundle
(
UtsTarget
.
SWIFT
,
{
input
:
{
root
:
projectDir
,
filename
:
path
.
resolve
(
projectDir
,
'
uni_modules/test-uniplugin/app-ios/index.uts
'
),
},
output
:
{
outDir
:
path
.
resolve
(
projectDir
,
'
unpackage/dist/app
'
),
package
:
'
uts.modules.testUniPlugin
'
,
sourceMap
:
true
,
extname
:
'
swift
'
,
logFilename
:
true
,
},
}).
then
((
res
)
=>
{
console
.
log
(
'
bundle:
'
+
(
Date
.
now
()
-
start
)
+
'
ms
'
)
console
.
log
(
JSON
.
stringify
(
res
))
console
.
log
(
fs
.
readFileSync
(
path
.
resolve
(
projectDir
,
'
unpackage/dist/app/uni_modules/test-uniplugin/app-ios/index.swift
'
),
'
utf8
'
)
)
})
}
async
function
test
()
{
await
testKotlin
()
await
testSwift
()
}
test
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录