typia 13.0.0-dev.20260509 → 13.0.0-dev.20260510
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/native/adapter/adapter.go +3 -3
- package/native/go.mod +0 -4
- package/native/internal/printer/printer.go +229 -0
- package/package.json +6 -6
- package/native/go.work +0 -20
- package/native/go.work.sum +0 -11
- package/native/shim/printer/go.mod +0 -5
- package/native/shim/printer/shim.go +0 -249
- package/native/third_party/ttsc/driver/host.go +0 -31
- package/native/third_party/ttsc/driver/program.go +0 -466
- package/native/third_party/ttsc/driver/rewrite.go +0 -341
- package/native/third_party/ttsc/go.mod +0 -48
- package/native/third_party/ttsc/go.sum +0 -22
- package/native/third_party/ttsc/shim/ast/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/ast/go.mod +0 -5
- package/native/third_party/ttsc/shim/ast/lint.go +0 -331
- package/native/third_party/ttsc/shim/ast/shim.go +0 -210
- package/native/third_party/ttsc/shim/bundled/extra-shim.json +0 -1
- package/native/third_party/ttsc/shim/bundled/go.mod +0 -5
- package/native/third_party/ttsc/shim/bundled/shim.go +0 -23
- package/native/third_party/ttsc/shim/checker/extra-shim.json +0 -31
- package/native/third_party/ttsc/shim/checker/go.mod +0 -5
- package/native/third_party/ttsc/shim/checker/shim.go +0 -166
- package/native/third_party/ttsc/shim/compiler/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/compiler/go.mod +0 -5
- package/native/third_party/ttsc/shim/compiler/shim.go +0 -65
- package/native/third_party/ttsc/shim/core/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/core/go.mod +0 -5
- package/native/third_party/ttsc/shim/core/shim.go +0 -29
- package/native/third_party/ttsc/shim/diagnosticwriter/go.mod +0 -5
- package/native/third_party/ttsc/shim/diagnosticwriter/lint.go +0 -137
- package/native/third_party/ttsc/shim/diagnosticwriter/shim.go +0 -29
- package/native/third_party/ttsc/shim/parser/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/parser/go.mod +0 -5
- package/native/third_party/ttsc/shim/parser/shim.go +0 -61
- package/native/third_party/ttsc/shim/scanner/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/scanner/go.mod +0 -5
- package/native/third_party/ttsc/shim/scanner/shim.go +0 -134
- package/native/third_party/ttsc/shim/tsoptions/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/tsoptions/go.mod +0 -5
- package/native/third_party/ttsc/shim/tsoptions/shim.go +0 -173
- package/native/third_party/ttsc/shim/tspath/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/tspath/go.mod +0 -5
- package/native/third_party/ttsc/shim/tspath/shim.go +0 -236
- package/native/third_party/ttsc/shim/vfs/cachedvfs/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/vfs/cachedvfs/go.mod +0 -5
- package/native/third_party/ttsc/shim/vfs/cachedvfs/shim.go +0 -12
- package/native/third_party/ttsc/shim/vfs/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/vfs/go.mod +0 -5
- package/native/third_party/ttsc/shim/vfs/osvfs/extra-shim.json +0 -4
- package/native/third_party/ttsc/shim/vfs/osvfs/go.mod +0 -5
- package/native/third_party/ttsc/shim/vfs/osvfs/shim.go +0 -13
- package/native/third_party/ttsc/shim/vfs/shim.go +0 -22
|
@@ -8,10 +8,10 @@ import (
|
|
|
8
8
|
"strings"
|
|
9
9
|
|
|
10
10
|
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
11
|
-
shimprinter "github.com/microsoft/typescript-go/shim/printer"
|
|
12
11
|
"github.com/samchon/ttsc/packages/ttsc/driver"
|
|
13
12
|
nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
|
|
14
13
|
nativeprogrammers "github.com/samchon/typia/packages/typia/native/core/programmers"
|
|
14
|
+
nativeprinter "github.com/samchon/typia/packages/typia/native/internal/printer"
|
|
15
15
|
nativetransform "github.com/samchon/typia/packages/typia/native/transform"
|
|
16
16
|
)
|
|
17
17
|
|
|
@@ -87,13 +87,13 @@ func emitCallWithOptions(program *driver.Program, site CallSite, plugin PluginOp
|
|
|
87
87
|
return "", false, nil
|
|
88
88
|
}
|
|
89
89
|
if preserveTypes {
|
|
90
|
-
return cleanupPrintedExpression(
|
|
90
|
+
return cleanupPrintedExpression(nativeprinter.EmitPreservingTypesWithIdentifierSubstitutions(
|
|
91
91
|
node,
|
|
92
92
|
site.File,
|
|
93
93
|
nil,
|
|
94
94
|
)), true, nil
|
|
95
95
|
}
|
|
96
|
-
return cleanupPrintedExpression(
|
|
96
|
+
return cleanupPrintedExpression(nativeprinter.EmitWithIdentifierSubstitutions(
|
|
97
97
|
node,
|
|
98
98
|
site.File,
|
|
99
99
|
identifierSubstitutionsForEmit(program, site.File),
|
package/native/go.mod
CHANGED
|
@@ -2,10 +2,6 @@ module github.com/samchon/typia/packages/typia/native
|
|
|
2
2
|
|
|
3
3
|
go 1.26
|
|
4
4
|
|
|
5
|
-
replace github.com/microsoft/typescript-go/shim/printer => ./shim/printer
|
|
6
|
-
|
|
7
|
-
replace github.com/samchon/ttsc/packages/ttsc => ./third_party/ttsc
|
|
8
|
-
|
|
9
5
|
require (
|
|
10
6
|
github.com/microsoft/typescript-go/shim/ast v0.0.0
|
|
11
7
|
github.com/microsoft/typescript-go/shim/checker v0.0.0
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
package printer
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
5
|
+
shimprinter "github.com/microsoft/typescript-go/shim/printer"
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
const kindColonToken = shimast.KindQuestionToken + 1
|
|
9
|
+
|
|
10
|
+
func EmitWithIdentifierSubstitutions(node *shimast.Node, sourceFile *shimast.SourceFile, substitutions map[string]string) string {
|
|
11
|
+
node = stripTypeSyntax(node)
|
|
12
|
+
node = rewriteIdentifiers(node, substitutions)
|
|
13
|
+
normalizeSyntheticTokens(node)
|
|
14
|
+
return emit(node, sourceFile)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func EmitPreservingTypesWithIdentifierSubstitutions(node *shimast.Node, sourceFile *shimast.SourceFile, substitutions map[string]string) string {
|
|
18
|
+
node = rewriteIdentifiers(node, substitutions)
|
|
19
|
+
normalizeSyntheticTokens(node)
|
|
20
|
+
return emit(node, sourceFile)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
func emit(node *shimast.Node, sourceFile *shimast.SourceFile) string {
|
|
24
|
+
return shimprinter.NewPrinter(shimprinter.PrinterOptions{
|
|
25
|
+
RemoveComments: true,
|
|
26
|
+
NewLine: 2,
|
|
27
|
+
}, shimprinter.PrintHandlers{}, nil).Emit(node, sourceFile)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func stripTypeSyntax(node *shimast.Node) *shimast.Node {
|
|
31
|
+
if node == nil {
|
|
32
|
+
return nil
|
|
33
|
+
}
|
|
34
|
+
factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
|
|
35
|
+
var visitor *shimast.NodeVisitor
|
|
36
|
+
visitor = shimast.NewNodeVisitor(func(current *shimast.Node) *shimast.Node {
|
|
37
|
+
if current == nil {
|
|
38
|
+
return nil
|
|
39
|
+
}
|
|
40
|
+
switch current.Kind {
|
|
41
|
+
case shimast.KindAsExpression, shimast.KindSatisfiesExpression, shimast.KindTypeAssertionExpression, shimast.KindNonNullExpression:
|
|
42
|
+
return visitor.VisitNode(current.Expression())
|
|
43
|
+
case shimast.KindVariableDeclaration:
|
|
44
|
+
decl := current.AsVariableDeclaration()
|
|
45
|
+
return factory.UpdateVariableDeclaration(
|
|
46
|
+
decl,
|
|
47
|
+
visitor.VisitNode(decl.Name()),
|
|
48
|
+
nil,
|
|
49
|
+
nil,
|
|
50
|
+
visitor.VisitNode(decl.Initializer),
|
|
51
|
+
)
|
|
52
|
+
case shimast.KindParameter:
|
|
53
|
+
parameter := current.AsParameterDeclaration()
|
|
54
|
+
return factory.UpdateParameterDeclaration(
|
|
55
|
+
parameter,
|
|
56
|
+
visitor.VisitModifiers(parameter.Modifiers()),
|
|
57
|
+
visitor.VisitNode(parameter.DotDotDotToken),
|
|
58
|
+
visitor.VisitNode(parameter.Name()),
|
|
59
|
+
nil,
|
|
60
|
+
nil,
|
|
61
|
+
visitor.VisitNode(parameter.Initializer),
|
|
62
|
+
)
|
|
63
|
+
case shimast.KindArrowFunction:
|
|
64
|
+
arrow := current.AsArrowFunction()
|
|
65
|
+
return factory.UpdateArrowFunction(
|
|
66
|
+
arrow,
|
|
67
|
+
visitor.VisitModifiers(arrow.Modifiers()),
|
|
68
|
+
nil,
|
|
69
|
+
visitor.VisitNodes(arrow.Parameters),
|
|
70
|
+
nil,
|
|
71
|
+
nil,
|
|
72
|
+
visitor.VisitNode(arrow.EqualsGreaterThanToken),
|
|
73
|
+
visitor.VisitNode(arrow.Body),
|
|
74
|
+
)
|
|
75
|
+
case shimast.KindCallExpression:
|
|
76
|
+
call := current.AsCallExpression()
|
|
77
|
+
return factory.UpdateCallExpression(
|
|
78
|
+
call,
|
|
79
|
+
visitor.VisitNode(call.Expression),
|
|
80
|
+
visitor.VisitNode(call.QuestionDotToken),
|
|
81
|
+
nil,
|
|
82
|
+
visitor.VisitNodes(call.Arguments),
|
|
83
|
+
call.Flags,
|
|
84
|
+
)
|
|
85
|
+
case shimast.KindNewExpression:
|
|
86
|
+
expr := current.AsNewExpression()
|
|
87
|
+
return factory.UpdateNewExpression(
|
|
88
|
+
expr,
|
|
89
|
+
visitor.VisitNode(expr.Expression),
|
|
90
|
+
nil,
|
|
91
|
+
visitor.VisitNodes(expr.Arguments),
|
|
92
|
+
)
|
|
93
|
+
default:
|
|
94
|
+
return visitor.VisitEachChild(current)
|
|
95
|
+
}
|
|
96
|
+
}, factory, shimast.NodeVisitorHooks{})
|
|
97
|
+
return visitor.VisitNode(node)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
func rewriteIdentifiers(node *shimast.Node, substitutions map[string]string) *shimast.Node {
|
|
101
|
+
if node == nil || len(substitutions) == 0 {
|
|
102
|
+
return node
|
|
103
|
+
}
|
|
104
|
+
factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
|
|
105
|
+
var visitor *shimast.NodeVisitor
|
|
106
|
+
visitor = shimast.NewNodeVisitor(func(current *shimast.Node) *shimast.Node {
|
|
107
|
+
if current == nil {
|
|
108
|
+
return nil
|
|
109
|
+
}
|
|
110
|
+
switch current.Kind {
|
|
111
|
+
case shimast.KindIdentifier:
|
|
112
|
+
if replacement, ok := substitutions[current.Text()]; ok {
|
|
113
|
+
return rewriteIdentifierExpression(factory, replacement)
|
|
114
|
+
}
|
|
115
|
+
return current
|
|
116
|
+
case shimast.KindVariableDeclaration:
|
|
117
|
+
decl := current.AsVariableDeclaration()
|
|
118
|
+
return factory.UpdateVariableDeclaration(
|
|
119
|
+
decl,
|
|
120
|
+
decl.Name(),
|
|
121
|
+
nil,
|
|
122
|
+
nil,
|
|
123
|
+
visitor.VisitNode(decl.Initializer),
|
|
124
|
+
)
|
|
125
|
+
case shimast.KindParameter:
|
|
126
|
+
parameter := current.AsParameterDeclaration()
|
|
127
|
+
return factory.UpdateParameterDeclaration(
|
|
128
|
+
parameter,
|
|
129
|
+
parameter.Modifiers(),
|
|
130
|
+
parameter.DotDotDotToken,
|
|
131
|
+
parameter.Name(),
|
|
132
|
+
nil,
|
|
133
|
+
nil,
|
|
134
|
+
visitor.VisitNode(parameter.Initializer),
|
|
135
|
+
)
|
|
136
|
+
case shimast.KindPropertyAssignment:
|
|
137
|
+
assignment := current.AsPropertyAssignment()
|
|
138
|
+
return factory.UpdatePropertyAssignment(
|
|
139
|
+
assignment,
|
|
140
|
+
assignment.Modifiers(),
|
|
141
|
+
assignment.Name(),
|
|
142
|
+
assignment.PostfixToken,
|
|
143
|
+
nil,
|
|
144
|
+
visitor.VisitNode(assignment.Initializer),
|
|
145
|
+
)
|
|
146
|
+
case shimast.KindShorthandPropertyAssignment:
|
|
147
|
+
assignment := current.AsShorthandPropertyAssignment()
|
|
148
|
+
name := assignment.Name()
|
|
149
|
+
if name != nil && name.Kind == shimast.KindIdentifier {
|
|
150
|
+
if replacement, ok := substitutions[name.Text()]; ok && assignment.ObjectAssignmentInitializer == nil {
|
|
151
|
+
return factory.NewPropertyAssignment(
|
|
152
|
+
assignment.Modifiers(),
|
|
153
|
+
name,
|
|
154
|
+
assignment.PostfixToken,
|
|
155
|
+
nil,
|
|
156
|
+
rewriteIdentifierExpression(factory, replacement),
|
|
157
|
+
)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return factory.UpdateShorthandPropertyAssignment(
|
|
161
|
+
assignment,
|
|
162
|
+
assignment.Modifiers(),
|
|
163
|
+
name,
|
|
164
|
+
assignment.PostfixToken,
|
|
165
|
+
nil,
|
|
166
|
+
nil,
|
|
167
|
+
visitor.VisitNode(assignment.ObjectAssignmentInitializer),
|
|
168
|
+
)
|
|
169
|
+
case shimast.KindPropertyAccessExpression:
|
|
170
|
+
access := current.AsPropertyAccessExpression()
|
|
171
|
+
return factory.UpdatePropertyAccessExpression(
|
|
172
|
+
access,
|
|
173
|
+
visitor.VisitNode(access.Expression),
|
|
174
|
+
access.QuestionDotToken,
|
|
175
|
+
access.Name(),
|
|
176
|
+
access.Flags,
|
|
177
|
+
)
|
|
178
|
+
default:
|
|
179
|
+
return visitor.VisitEachChild(current)
|
|
180
|
+
}
|
|
181
|
+
}, factory, shimast.NodeVisitorHooks{})
|
|
182
|
+
return visitor.VisitNode(node)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
func rewriteIdentifierExpression(factory *shimast.NodeFactory, replacement string) *shimast.Node {
|
|
186
|
+
parts := []string{}
|
|
187
|
+
start := 0
|
|
188
|
+
for i := 0; i <= len(replacement); i++ {
|
|
189
|
+
if i == len(replacement) || replacement[i] == '.' {
|
|
190
|
+
if start < i {
|
|
191
|
+
parts = append(parts, replacement[start:i])
|
|
192
|
+
}
|
|
193
|
+
start = i + 1
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if len(parts) == 0 {
|
|
197
|
+
return factory.NewIdentifier(replacement)
|
|
198
|
+
}
|
|
199
|
+
output := factory.NewIdentifier(parts[0])
|
|
200
|
+
for _, part := range parts[1:] {
|
|
201
|
+
output = factory.NewPropertyAccessExpression(
|
|
202
|
+
output,
|
|
203
|
+
nil,
|
|
204
|
+
factory.NewIdentifier(part),
|
|
205
|
+
shimast.NodeFlagsNone,
|
|
206
|
+
)
|
|
207
|
+
}
|
|
208
|
+
return output
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
func normalizeSyntheticTokens(node *shimast.Node) {
|
|
212
|
+
if node == nil {
|
|
213
|
+
return
|
|
214
|
+
}
|
|
215
|
+
if node.Kind == shimast.KindConditionalExpression {
|
|
216
|
+
conditional := node.AsConditionalExpression()
|
|
217
|
+
factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
|
|
218
|
+
if conditional.QuestionToken == nil {
|
|
219
|
+
conditional.QuestionToken = factory.NewToken(shimast.KindQuestionToken)
|
|
220
|
+
}
|
|
221
|
+
if conditional.ColonToken == nil {
|
|
222
|
+
conditional.ColonToken = factory.NewToken(kindColonToken)
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
node.ForEachChild(func(child *shimast.Node) bool {
|
|
226
|
+
normalizeSyntheticTokens(child)
|
|
227
|
+
return false
|
|
228
|
+
})
|
|
229
|
+
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typia",
|
|
3
|
-
"version": "13.0.0-dev.
|
|
3
|
+
"version": "13.0.0-dev.20260510",
|
|
4
4
|
"description": "Superfast runtime validators with only one line",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
|
-
"types": "lib/index.d.ts",
|
|
7
6
|
"exports": {
|
|
8
7
|
".": {
|
|
9
8
|
"types": "./lib/index.d.ts",
|
|
@@ -45,8 +44,8 @@
|
|
|
45
44
|
"commander": "^10.0.0",
|
|
46
45
|
"inquirer": "^8.2.5",
|
|
47
46
|
"randexp": "^0.5.3",
|
|
48
|
-
"@typia/interface": "^13.0.0-dev.
|
|
49
|
-
"@typia/utils": "^13.0.0-dev.
|
|
47
|
+
"@typia/interface": "^13.0.0-dev.20260510",
|
|
48
|
+
"@typia/utils": "^13.0.0-dev.20260510"
|
|
50
49
|
},
|
|
51
50
|
"devDependencies": {
|
|
52
51
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
@@ -55,7 +54,7 @@
|
|
|
55
54
|
"@types/node": "^25.3.0",
|
|
56
55
|
"@typescript-eslint/eslint-plugin": "^8.1.0",
|
|
57
56
|
"@typescript-eslint/parser": "^8.1.0",
|
|
58
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
57
|
+
"@typescript/native-preview": "7.0.0-dev.20260510.1",
|
|
59
58
|
"chalk": "^4.0.0",
|
|
60
59
|
"eslint-plugin-deprecation": "^3.0.0",
|
|
61
60
|
"rimraf": "^6.1.2",
|
|
@@ -64,7 +63,7 @@
|
|
|
64
63
|
"rollup-plugin-node-externals": "^8.1.2",
|
|
65
64
|
"suppress-warnings": "^1.0.2",
|
|
66
65
|
"tinyglobby": "^0.2.12",
|
|
67
|
-
"ttsc": "^0.
|
|
66
|
+
"ttsc": "^0.10.0"
|
|
68
67
|
},
|
|
69
68
|
"sideEffects": [
|
|
70
69
|
"./lib/_virtual/*.mjs",
|
|
@@ -119,5 +118,6 @@
|
|
|
119
118
|
"build": "rimraf lib && ttsc && rollup -c && cp ../../README.md README.md",
|
|
120
119
|
"dev": "ttsc --watch"
|
|
121
120
|
},
|
|
121
|
+
"types": "lib/index.d.ts",
|
|
122
122
|
"module": "lib/index.mjs"
|
|
123
123
|
}
|
package/native/go.work
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
go 1.26
|
|
2
|
-
|
|
3
|
-
use (
|
|
4
|
-
.
|
|
5
|
-
./shim/printer
|
|
6
|
-
./third_party/ttsc
|
|
7
|
-
./third_party/ttsc/shim/ast
|
|
8
|
-
./third_party/ttsc/shim/bundled
|
|
9
|
-
./third_party/ttsc/shim/checker
|
|
10
|
-
./third_party/ttsc/shim/compiler
|
|
11
|
-
./third_party/ttsc/shim/core
|
|
12
|
-
./third_party/ttsc/shim/diagnosticwriter
|
|
13
|
-
./third_party/ttsc/shim/parser
|
|
14
|
-
./third_party/ttsc/shim/scanner
|
|
15
|
-
./third_party/ttsc/shim/tsoptions
|
|
16
|
-
./third_party/ttsc/shim/tspath
|
|
17
|
-
./third_party/ttsc/shim/vfs
|
|
18
|
-
./third_party/ttsc/shim/vfs/cachedvfs
|
|
19
|
-
./third_party/ttsc/shim/vfs/osvfs
|
|
20
|
-
)
|
package/native/go.work.sum
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
|
2
|
-
github.com/mackerelio/go-osstat v0.2.7/go.mod h1:dwpYh5pIPmvk+IEwBKNIWRFMB92mrC08CmXOhDC7nQk=
|
|
3
|
-
github.com/matryer/moq v0.7.1/go.mod h1:IabIiFkaKCyHxej25INgFR+fnOxSZFMv2LYrU+ioyDs=
|
|
4
|
-
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
5
|
-
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
|
6
|
-
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
|
7
|
-
golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU=
|
|
8
|
-
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
|
|
9
|
-
golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE=
|
|
10
|
-
golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY=
|
|
11
|
-
golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI=
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
package printer
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
innerast "github.com/microsoft/typescript-go/internal/ast"
|
|
5
|
-
innercore "github.com/microsoft/typescript-go/internal/core"
|
|
6
|
-
innerprinter "github.com/microsoft/typescript-go/internal/printer"
|
|
7
|
-
)
|
|
8
|
-
|
|
9
|
-
type Printer = innerprinter.Printer
|
|
10
|
-
type PrinterOptions = innerprinter.PrinterOptions
|
|
11
|
-
type PrintHandlers = innerprinter.PrintHandlers
|
|
12
|
-
type EmitContext = innerprinter.EmitContext
|
|
13
|
-
|
|
14
|
-
func NewPrinter(options PrinterOptions, handlers PrintHandlers, emitContext *EmitContext) *Printer {
|
|
15
|
-
return innerprinter.NewPrinter(options, handlers, emitContext)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
func NewEmitContext() *EmitContext {
|
|
19
|
-
return innerprinter.NewEmitContext()
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
func Emit(node *innerast.Node, sourceFile *innerast.SourceFile) string {
|
|
23
|
-
node = stripTypeSyntax(node)
|
|
24
|
-
normalizeSyntheticTokens(node)
|
|
25
|
-
return NewPrinter(PrinterOptions{
|
|
26
|
-
RemoveComments: true,
|
|
27
|
-
NewLine: innercore.NewLineKindLF,
|
|
28
|
-
}, PrintHandlers{}, nil).Emit(node, sourceFile)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
func EmitWithIdentifierSubstitutions(node *innerast.Node, sourceFile *innerast.SourceFile, substitutions map[string]string) string {
|
|
32
|
-
node = stripTypeSyntax(node)
|
|
33
|
-
node = rewriteIdentifiers(node, substitutions)
|
|
34
|
-
normalizeSyntheticTokens(node)
|
|
35
|
-
return NewPrinter(PrinterOptions{
|
|
36
|
-
RemoveComments: true,
|
|
37
|
-
NewLine: innercore.NewLineKindLF,
|
|
38
|
-
}, PrintHandlers{}, nil).Emit(node, sourceFile)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
func EmitPreservingTypesWithIdentifierSubstitutions(node *innerast.Node, sourceFile *innerast.SourceFile, substitutions map[string]string) string {
|
|
42
|
-
node = rewriteIdentifiers(node, substitutions)
|
|
43
|
-
normalizeSyntheticTokens(node)
|
|
44
|
-
return NewPrinter(PrinterOptions{
|
|
45
|
-
RemoveComments: true,
|
|
46
|
-
NewLine: innercore.NewLineKindLF,
|
|
47
|
-
}, PrintHandlers{}, nil).Emit(node, sourceFile)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
func stripTypeSyntax(node *innerast.Node) *innerast.Node {
|
|
51
|
-
if node == nil {
|
|
52
|
-
return nil
|
|
53
|
-
}
|
|
54
|
-
factory := innerast.NewNodeFactory(innerast.NodeFactoryHooks{})
|
|
55
|
-
var visitor *innerast.NodeVisitor
|
|
56
|
-
visitor = innerast.NewNodeVisitor(func(current *innerast.Node) *innerast.Node {
|
|
57
|
-
if current == nil {
|
|
58
|
-
return nil
|
|
59
|
-
}
|
|
60
|
-
switch current.Kind {
|
|
61
|
-
case innerast.KindAsExpression, innerast.KindSatisfiesExpression, innerast.KindTypeAssertionExpression, innerast.KindNonNullExpression:
|
|
62
|
-
return visitor.VisitNode(current.Expression())
|
|
63
|
-
case innerast.KindVariableDeclaration:
|
|
64
|
-
decl := current.AsVariableDeclaration()
|
|
65
|
-
return factory.UpdateVariableDeclaration(
|
|
66
|
-
decl,
|
|
67
|
-
visitor.VisitNode(decl.Name()),
|
|
68
|
-
nil,
|
|
69
|
-
nil,
|
|
70
|
-
visitor.VisitNode(decl.Initializer),
|
|
71
|
-
)
|
|
72
|
-
case innerast.KindParameter:
|
|
73
|
-
parameter := current.AsParameterDeclaration()
|
|
74
|
-
return factory.UpdateParameterDeclaration(
|
|
75
|
-
parameter,
|
|
76
|
-
visitor.VisitModifiers(parameter.Modifiers()),
|
|
77
|
-
visitor.VisitNode(parameter.DotDotDotToken),
|
|
78
|
-
visitor.VisitNode(parameter.Name()),
|
|
79
|
-
nil,
|
|
80
|
-
nil,
|
|
81
|
-
visitor.VisitNode(parameter.Initializer),
|
|
82
|
-
)
|
|
83
|
-
case innerast.KindArrowFunction:
|
|
84
|
-
arrow := current.AsArrowFunction()
|
|
85
|
-
return factory.UpdateArrowFunction(
|
|
86
|
-
arrow,
|
|
87
|
-
visitor.VisitModifiers(arrow.Modifiers()),
|
|
88
|
-
nil,
|
|
89
|
-
visitor.VisitNodes(arrow.Parameters),
|
|
90
|
-
nil,
|
|
91
|
-
nil,
|
|
92
|
-
visitor.VisitNode(arrow.EqualsGreaterThanToken),
|
|
93
|
-
visitor.VisitNode(arrow.Body),
|
|
94
|
-
)
|
|
95
|
-
case innerast.KindCallExpression:
|
|
96
|
-
call := current.AsCallExpression()
|
|
97
|
-
return factory.UpdateCallExpression(
|
|
98
|
-
call,
|
|
99
|
-
visitor.VisitNode(call.Expression),
|
|
100
|
-
visitor.VisitNode(call.QuestionDotToken),
|
|
101
|
-
nil,
|
|
102
|
-
visitor.VisitNodes(call.Arguments),
|
|
103
|
-
call.Flags,
|
|
104
|
-
)
|
|
105
|
-
case innerast.KindNewExpression:
|
|
106
|
-
expr := current.AsNewExpression()
|
|
107
|
-
return factory.UpdateNewExpression(
|
|
108
|
-
expr,
|
|
109
|
-
visitor.VisitNode(expr.Expression),
|
|
110
|
-
nil,
|
|
111
|
-
visitor.VisitNodes(expr.Arguments),
|
|
112
|
-
)
|
|
113
|
-
default:
|
|
114
|
-
return visitor.VisitEachChild(current)
|
|
115
|
-
}
|
|
116
|
-
}, factory, innerast.NodeVisitorHooks{})
|
|
117
|
-
return visitor.VisitNode(node)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
func rewriteIdentifiers(node *innerast.Node, substitutions map[string]string) *innerast.Node {
|
|
121
|
-
if node == nil || len(substitutions) == 0 {
|
|
122
|
-
return node
|
|
123
|
-
}
|
|
124
|
-
factory := innerast.NewNodeFactory(innerast.NodeFactoryHooks{})
|
|
125
|
-
var visitor *innerast.NodeVisitor
|
|
126
|
-
visitor = innerast.NewNodeVisitor(func(current *innerast.Node) *innerast.Node {
|
|
127
|
-
if current == nil {
|
|
128
|
-
return nil
|
|
129
|
-
}
|
|
130
|
-
switch current.Kind {
|
|
131
|
-
case innerast.KindIdentifier:
|
|
132
|
-
if replacement, ok := substitutions[current.Text()]; ok {
|
|
133
|
-
return rewriteIdentifierExpression(factory, replacement)
|
|
134
|
-
}
|
|
135
|
-
return current
|
|
136
|
-
case innerast.KindVariableDeclaration:
|
|
137
|
-
decl := current.AsVariableDeclaration()
|
|
138
|
-
return factory.UpdateVariableDeclaration(
|
|
139
|
-
decl,
|
|
140
|
-
decl.Name(),
|
|
141
|
-
nil,
|
|
142
|
-
nil,
|
|
143
|
-
visitor.VisitNode(decl.Initializer),
|
|
144
|
-
)
|
|
145
|
-
case innerast.KindParameter:
|
|
146
|
-
parameter := current.AsParameterDeclaration()
|
|
147
|
-
return factory.UpdateParameterDeclaration(
|
|
148
|
-
parameter,
|
|
149
|
-
parameter.Modifiers(),
|
|
150
|
-
parameter.DotDotDotToken,
|
|
151
|
-
parameter.Name(),
|
|
152
|
-
nil,
|
|
153
|
-
nil,
|
|
154
|
-
visitor.VisitNode(parameter.Initializer),
|
|
155
|
-
)
|
|
156
|
-
case innerast.KindPropertyAssignment:
|
|
157
|
-
assignment := current.AsPropertyAssignment()
|
|
158
|
-
return factory.UpdatePropertyAssignment(
|
|
159
|
-
assignment,
|
|
160
|
-
assignment.Modifiers(),
|
|
161
|
-
assignment.Name(),
|
|
162
|
-
assignment.PostfixToken,
|
|
163
|
-
nil,
|
|
164
|
-
visitor.VisitNode(assignment.Initializer),
|
|
165
|
-
)
|
|
166
|
-
case innerast.KindShorthandPropertyAssignment:
|
|
167
|
-
assignment := current.AsShorthandPropertyAssignment()
|
|
168
|
-
name := assignment.Name()
|
|
169
|
-
if name != nil && name.Kind == innerast.KindIdentifier {
|
|
170
|
-
if replacement, ok := substitutions[name.Text()]; ok && assignment.ObjectAssignmentInitializer == nil {
|
|
171
|
-
return factory.NewPropertyAssignment(
|
|
172
|
-
assignment.Modifiers(),
|
|
173
|
-
name,
|
|
174
|
-
assignment.PostfixToken,
|
|
175
|
-
nil,
|
|
176
|
-
rewriteIdentifierExpression(factory, replacement),
|
|
177
|
-
)
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return factory.UpdateShorthandPropertyAssignment(
|
|
181
|
-
assignment,
|
|
182
|
-
assignment.Modifiers(),
|
|
183
|
-
name,
|
|
184
|
-
assignment.PostfixToken,
|
|
185
|
-
nil,
|
|
186
|
-
nil,
|
|
187
|
-
visitor.VisitNode(assignment.ObjectAssignmentInitializer),
|
|
188
|
-
)
|
|
189
|
-
case innerast.KindPropertyAccessExpression:
|
|
190
|
-
access := current.AsPropertyAccessExpression()
|
|
191
|
-
return factory.UpdatePropertyAccessExpression(
|
|
192
|
-
access,
|
|
193
|
-
visitor.VisitNode(access.Expression),
|
|
194
|
-
access.QuestionDotToken,
|
|
195
|
-
access.Name(),
|
|
196
|
-
access.Flags,
|
|
197
|
-
)
|
|
198
|
-
default:
|
|
199
|
-
return visitor.VisitEachChild(current)
|
|
200
|
-
}
|
|
201
|
-
}, factory, innerast.NodeVisitorHooks{})
|
|
202
|
-
return visitor.VisitNode(node)
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
func rewriteIdentifierExpression(factory *innerast.NodeFactory, replacement string) *innerast.Node {
|
|
206
|
-
parts := []string{}
|
|
207
|
-
start := 0
|
|
208
|
-
for i := 0; i <= len(replacement); i++ {
|
|
209
|
-
if i == len(replacement) || replacement[i] == '.' {
|
|
210
|
-
if start < i {
|
|
211
|
-
parts = append(parts, replacement[start:i])
|
|
212
|
-
}
|
|
213
|
-
start = i + 1
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
if len(parts) == 0 {
|
|
217
|
-
return factory.NewIdentifier(replacement)
|
|
218
|
-
}
|
|
219
|
-
output := factory.NewIdentifier(parts[0])
|
|
220
|
-
for _, part := range parts[1:] {
|
|
221
|
-
output = factory.NewPropertyAccessExpression(
|
|
222
|
-
output,
|
|
223
|
-
nil,
|
|
224
|
-
factory.NewIdentifier(part),
|
|
225
|
-
innerast.NodeFlagsNone,
|
|
226
|
-
)
|
|
227
|
-
}
|
|
228
|
-
return output
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
func normalizeSyntheticTokens(node *innerast.Node) {
|
|
232
|
-
if node == nil {
|
|
233
|
-
return
|
|
234
|
-
}
|
|
235
|
-
if node.Kind == innerast.KindConditionalExpression {
|
|
236
|
-
conditional := node.AsConditionalExpression()
|
|
237
|
-
factory := innerast.NewNodeFactory(innerast.NodeFactoryHooks{})
|
|
238
|
-
if conditional.QuestionToken == nil {
|
|
239
|
-
conditional.QuestionToken = factory.NewToken(innerast.KindQuestionToken)
|
|
240
|
-
}
|
|
241
|
-
if conditional.ColonToken == nil {
|
|
242
|
-
conditional.ColonToken = factory.NewToken(innerast.KindColonToken)
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
node.ForEachChild(func(child *innerast.Node) bool {
|
|
246
|
-
normalizeSyntheticTokens(child)
|
|
247
|
-
return false
|
|
248
|
-
})
|
|
249
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// Package driver wraps the typescript-go compiler so the rest of ttsc doesn't
|
|
2
|
-
// need to know about shim packages directly. It is the only part of the engine
|
|
3
|
-
// that imports `shim/*` by design — everything downstream consumes a small,
|
|
4
|
-
// shim-agnostic interface (`*Program`).
|
|
5
|
-
//
|
|
6
|
-
// Structural note: this file is deliberately adapted from tsgonest's
|
|
7
|
-
// `internal/compiler/host.go` (MIT, github.com/tsgonest/tsgonest).
|
|
8
|
-
// The helper surface is the same because both hosts need the same bundled-lib
|
|
9
|
-
// filesystem and CompilerHost construction.
|
|
10
|
-
package driver
|
|
11
|
-
|
|
12
|
-
import (
|
|
13
|
-
"github.com/microsoft/typescript-go/shim/bundled"
|
|
14
|
-
shimcompiler "github.com/microsoft/typescript-go/shim/compiler"
|
|
15
|
-
"github.com/microsoft/typescript-go/shim/vfs"
|
|
16
|
-
"github.com/microsoft/typescript-go/shim/vfs/cachedvfs"
|
|
17
|
-
"github.com/microsoft/typescript-go/shim/vfs/osvfs"
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
// DefaultFS returns an OS-backed filesystem wrapped with tsgo's bundled libs so
|
|
21
|
-
// built-in definitions (lib.es*.d.ts, dom, etc.) resolve without a network
|
|
22
|
-
// fetch. Mirrors tsgonest/tsgolint behavior.
|
|
23
|
-
func DefaultFS() vfs.FS {
|
|
24
|
-
return bundled.WrapFS(cachedvfs.From(osvfs.FS()))
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// DefaultHost returns a CompilerHost anchored at cwd that can find tsgo's
|
|
28
|
-
// bundled library files via `bundled.LibPath()`.
|
|
29
|
-
func DefaultHost(cwd string, fs vfs.FS) shimcompiler.CompilerHost {
|
|
30
|
-
return shimcompiler.NewCompilerHost(cwd, fs, bundled.LibPath(), nil, nil)
|
|
31
|
-
}
|