Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
5d68c339
U
uni-app
项目概览
DCloud
/
uni-app
6 个月 前同步成功
通知
751
Star
38709
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
8
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
8
Issue
8
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
5d68c339
编写于
2月 23, 2023
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
wip(uts): compiler
上级
3c11f5a1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
28 addition
and
12 deletion
+28
-12
packages/uni-uts-v1/src/code.ts
packages/uni-uts-v1/src/code.ts
+21
-9
packages/uni-uts-v1/src/utils.ts
packages/uni-uts-v1/src/utils.ts
+7
-3
未找到文件。
packages/uni-uts-v1/src/code.ts
浏览文件 @
5d68c339
import
fs
from
'
fs
'
import
path
from
'
path
'
import
{
camelize
,
capitalize
}
from
'
@vue/shared
'
import
{
camelize
,
capitalize
,
isArray
}
from
'
@vue/shared
'
import
type
{
ArrowFunctionExpression
,
...
...
@@ -252,16 +252,21 @@ async function parseInterfaceTypes(
const
ast
:
Module
=
await
parse
(
fs
.
readFileSync
(
interfaceFilename
,
'
utf8
'
),
{
noColor
:
!
isColorSupported
(),
})
const
types
:
Record
<
string
,
Param
[]
>
=
{}
const
types
:
Record
<
string
,
Param
[]
|
string
>
=
{}
ast
.
body
.
filter
((
node
)
=>
{
if
(
node
.
type
===
'
ExportDeclaration
'
&&
node
.
declaration
.
type
===
'
TsTypeAliasDeclaration
'
&&
node
.
declaration
.
typeAnnotation
.
type
===
'
TsFunctionType
'
node
.
declaration
.
type
===
'
TsTypeAliasDeclaration
'
)
{
const
params
=
createParams
(
node
.
declaration
.
typeAnnotation
.
params
)
if
(
params
.
length
)
{
types
[
node
.
declaration
.
id
.
value
]
=
params
switch
(
node
.
declaration
.
typeAnnotation
.
type
)
{
case
'
TsFunctionType
'
:
const
params
=
createParams
(
node
.
declaration
.
typeAnnotation
.
params
)
if
(
params
.
length
)
{
types
[
node
.
declaration
.
id
.
value
]
=
params
}
break
case
'
TsTypeLiteral
'
:
types
[
node
.
declaration
.
id
.
value
]
=
node
.
declaration
.
id
.
value
}
}
})
...
...
@@ -373,7 +378,11 @@ async function parseCode(code: string, namespace: string, types: Types) {
// eslint-disable-next-line no-restricted-globals
const
{
parse
}
=
require
(
'
@dcloudio/uts
'
)
const
ast
=
await
parse
(
code
,
{
noColor
:
!
isColorSupported
()
})
return
parseAst
(
ast
,
createResolveTypeReferenceName
(
namespace
,
ast
),
types
)
return
parseAst
(
ast
,
createResolveTypeReferenceName
(
namespace
,
ast
,
types
),
types
)
}
type
ProxyDecl
=
ProxyFunctionDeclaration
|
ProxyClass
|
VariableDeclaration
...
...
@@ -701,7 +710,10 @@ function genVariableDeclaration(
if
(
typeAnn
&&
typeAnn
.
typeAnnotation
.
type
===
'
TsTypeReference
'
)
{
const
{
typeName
}
=
typeAnn
.
typeAnnotation
if
(
typeName
.
type
===
'
Identifier
'
)
{
params
=
types
[
typeName
.
value
]
const
value
=
types
[
typeName
.
value
]
if
(
isArray
(
value
))
{
params
=
value
}
}
}
return
genFunctionDeclaration
(
...
...
packages/uni-uts-v1/src/utils.ts
浏览文件 @
5d68c339
import
path
,
{
basename
,
resolve
}
from
'
path
'
import
fs
from
'
fs-extra
'
import
type
{
parse
,
bundle
,
UTSTarget
}
from
'
@dcloudio/uts
'
import
{
camelize
,
capitalize
,
extend
}
from
'
@vue/shared
'
import
{
camelize
,
capitalize
,
extend
,
isString
}
from
'
@vue/shared
'
import
glob
from
'
fast-glob
'
import
{
Module
,
ModuleItem
}
from
'
../types/types
'
import
{
...
...
@@ -184,10 +184,14 @@ function resolveTypeAliasDeclNames(items: ModuleItem[]) {
return
names
}
export
function
createResolveTypeReferenceName
(
namespace
:
string
,
ast
:
Module
)
{
export
function
createResolveTypeReferenceName
(
namespace
:
string
,
ast
:
Module
,
types
:
Record
<
string
,
unknown
>
)
{
const
names
=
resolveTypeAliasDeclNames
(
ast
.
body
)
return
(
name
:
string
)
=>
{
if
(
names
.
includes
(
name
))
{
if
(
names
.
includes
(
name
)
||
isString
(
types
[
name
])
)
{
return
namespace
+
capitalize
(
name
)
}
return
name
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录