ttsc 0.5.0-dev.20260429-4 → 0.5.0-dev.20260429-5
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/README.md +9 -6
- package/package.json +8 -8
- package/shim/ast/shim.go +92 -0
- package/shim/checker/shim.go +21 -1
package/README.md
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
[](https://www.npmjs.com/package/ttsc)
|
|
7
7
|
[](https://www.npmjs.com/package/ttsc)
|
|
8
8
|
[](https://github.com/samchon/ttsc/actions?query=workflow%3Atest)
|
|
9
|
+
[](https://github.com/samchon/ttsc/tree/master/docs)
|
|
9
10
|
[](https://discord.gg/E94XhzrUCZ)
|
|
10
11
|
|
|
11
12
|
A `typescript-go` toolchain for compiler-powered transforms and type-safe execution.
|
|
@@ -142,15 +143,17 @@ It is transformed into dedicated JavaScript:
|
|
|
142
143
|
|
|
143
144
|
`ttsc` ships a few small utility plugins in this repository.
|
|
144
145
|
|
|
145
|
-
- [
|
|
146
|
-
- [
|
|
147
|
-
- [
|
|
148
|
-
- [
|
|
146
|
+
- [`@ttsc/banner`](https://github.com/samchon/ttsc/tree/master/packages/banner): adds banner comments to emitted JS and declarations.
|
|
147
|
+
- [`@ttsc/lint`](https://github.com/samchon/ttsc/tree/master/packages/lint): fails compilation on lint violations.
|
|
148
|
+
- [`@ttsc/paths`](https://github.com/samchon/ttsc/tree/master/packages/paths): rewrites path aliases in emitted imports.
|
|
149
|
+
- [`@ttsc/strip`](https://github.com/samchon/ttsc/tree/master/packages/strip): removes configured calls and `debugger` statements.
|
|
150
|
+
|
|
151
|
+
Plugin authors should start from the [`Guide Documents`](https://github.com/samchon/ttsc/tree/master/docs).
|
|
149
152
|
|
|
150
153
|
Ecosystem plugins are listed below; PRs adding `ttsc` plugins are welcome.
|
|
151
154
|
|
|
152
|
-
- [
|
|
153
|
-
- [`
|
|
155
|
+
- [`@nestia/core`](https://github.com/samchon/nestia): generates NestJS routes, OpenAPI, and SDKs.
|
|
156
|
+
- [`typia`](https://github.com/samchon/typia): generates validators, serializers, and type-driven runtime code.
|
|
154
157
|
|
|
155
158
|
## References
|
|
156
159
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ttsc",
|
|
3
|
-
"version": "0.5.0-dev.20260429-
|
|
3
|
+
"version": "0.5.0-dev.20260429-5",
|
|
4
4
|
"description": "General-purpose TypeScript-Go compiler, plugin host, and runtime.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
"rimraf": "^6.1.2"
|
|
32
32
|
},
|
|
33
33
|
"optionalDependencies": {
|
|
34
|
-
"@ttsc/linux-x64": "0.5.0-dev.20260429-
|
|
35
|
-
"@ttsc/linux-
|
|
36
|
-
"@ttsc/darwin-x64": "0.5.0-dev.20260429-
|
|
37
|
-
"@ttsc/
|
|
38
|
-
"@ttsc/
|
|
39
|
-
"@ttsc/
|
|
40
|
-
"@ttsc/
|
|
34
|
+
"@ttsc/linux-x64": "0.5.0-dev.20260429-5",
|
|
35
|
+
"@ttsc/linux-arm": "0.5.0-dev.20260429-5",
|
|
36
|
+
"@ttsc/darwin-x64": "0.5.0-dev.20260429-5",
|
|
37
|
+
"@ttsc/linux-arm64": "0.5.0-dev.20260429-5",
|
|
38
|
+
"@ttsc/win32-x64": "0.5.0-dev.20260429-5",
|
|
39
|
+
"@ttsc/win32-arm64": "0.5.0-dev.20260429-5",
|
|
40
|
+
"@ttsc/darwin-arm64": "0.5.0-dev.20260429-5"
|
|
41
41
|
},
|
|
42
42
|
"sideEffects": false,
|
|
43
43
|
"files": [
|
package/shim/ast/shim.go
CHANGED
|
@@ -8,11 +8,55 @@ import (
|
|
|
8
8
|
type CallExpression = innerast.CallExpression
|
|
9
9
|
type Diagnostic = innerast.Diagnostic
|
|
10
10
|
type Identifier = innerast.Identifier
|
|
11
|
+
type IdentifierNode = innerast.IdentifierNode
|
|
12
|
+
type ImportAttributesNode = innerast.ImportAttributesNode
|
|
13
|
+
type ImportClauseNode = innerast.ImportClauseNode
|
|
14
|
+
type ImportPhaseModifierSyntaxKind = innerast.ImportPhaseModifierSyntaxKind
|
|
15
|
+
type ImportSpecifierList = innerast.ImportSpecifierList
|
|
11
16
|
type IntersectionTypeNode = innerast.IntersectionTypeNode
|
|
12
17
|
type Kind = innerast.Kind
|
|
18
|
+
type KeywordExpressionSyntaxKind = innerast.KeywordExpressionSyntaxKind
|
|
19
|
+
type KeywordTypeSyntaxKind = innerast.KeywordTypeSyntaxKind
|
|
13
20
|
type LiteralTypeNode = innerast.LiteralTypeNode
|
|
14
21
|
type NoSubstitutionTemplateLiteral = innerast.NoSubstitutionTemplateLiteral
|
|
15
22
|
type Node = innerast.Node
|
|
23
|
+
type NodeFactory = innerast.NodeFactory
|
|
24
|
+
type NodeFactoryHooks = innerast.NodeFactoryHooks
|
|
25
|
+
type NodeVisitor = innerast.NodeVisitor
|
|
26
|
+
type NodeVisitorHooks = innerast.NodeVisitorHooks
|
|
27
|
+
type TokenFlags = innerast.TokenFlags
|
|
28
|
+
type ModifierList = innerast.ModifierList
|
|
29
|
+
type StatementList = innerast.StatementList
|
|
30
|
+
type VariableDeclarationNodeList = innerast.VariableDeclarationNodeList
|
|
31
|
+
type BindingElementList = innerast.BindingElementList
|
|
32
|
+
type TypeParameterList = innerast.TypeParameterList
|
|
33
|
+
type ParameterList = innerast.ParameterList
|
|
34
|
+
type ElementList = innerast.ElementList
|
|
35
|
+
type TypeList = innerast.TypeList
|
|
36
|
+
type TypeElementList = innerast.TypeElementList
|
|
37
|
+
type Statement = innerast.Statement
|
|
38
|
+
type Expression = innerast.Expression
|
|
39
|
+
type TypeNode = innerast.TypeNode
|
|
40
|
+
type TypePredicateParameterName = innerast.TypePredicateParameterName
|
|
41
|
+
type AssertsKeyword = innerast.AssertsKeyword
|
|
42
|
+
type BindingName = innerast.BindingName
|
|
43
|
+
type BinaryOperatorToken = innerast.BinaryOperatorToken
|
|
44
|
+
type PropertyName = innerast.PropertyName
|
|
45
|
+
type MemberName = innerast.MemberName
|
|
46
|
+
type EntityName = innerast.EntityName
|
|
47
|
+
type ModuleExportName = innerast.ModuleExportName
|
|
48
|
+
type NamedImportBindings = innerast.NamedImportBindings
|
|
49
|
+
type ConciseBody = innerast.ConciseBody
|
|
50
|
+
type TemplateSpanList = innerast.TemplateSpanList
|
|
51
|
+
type TemplateMiddleOrTail = innerast.TemplateMiddleOrTail
|
|
52
|
+
type TemplateHeadNode = innerast.TemplateHeadNode
|
|
53
|
+
type QuestionDotToken = innerast.QuestionDotToken
|
|
54
|
+
type QuestionToken = innerast.QuestionToken
|
|
55
|
+
type DotDotDotToken = innerast.DotDotDotToken
|
|
56
|
+
type ExclamationToken = innerast.ExclamationToken
|
|
57
|
+
type EqualsGreaterThanToken = innerast.EqualsGreaterThanToken
|
|
58
|
+
type AsteriskToken = innerast.AsteriskToken
|
|
59
|
+
type TokenNode = innerast.TokenNode
|
|
16
60
|
type TemplateHead = innerast.TemplateHead
|
|
17
61
|
type TemplateLiteralTypeNode = innerast.TemplateLiteralTypeNode
|
|
18
62
|
type TemplateLiteralTypeSpan = innerast.TemplateLiteralTypeSpan
|
|
@@ -62,6 +106,7 @@ const (
|
|
|
62
106
|
KindBooleanKeyword = innerast.KindBooleanKeyword
|
|
63
107
|
KindBigIntKeyword = innerast.KindBigIntKeyword
|
|
64
108
|
KindAnyKeyword = innerast.KindAnyKeyword
|
|
109
|
+
KindUnknownKeyword = innerast.KindUnknownKeyword
|
|
65
110
|
KindNeverKeyword = innerast.KindNeverKeyword
|
|
66
111
|
KindUndefinedKeyword = innerast.KindUndefinedKeyword
|
|
67
112
|
KindNullKeyword = innerast.KindNullKeyword
|
|
@@ -103,13 +148,60 @@ const (
|
|
|
103
148
|
KindModuleDeclaration = innerast.KindModuleDeclaration
|
|
104
149
|
KindFunctionDeclaration = innerast.KindFunctionDeclaration
|
|
105
150
|
KindMinusToken = innerast.KindMinusToken
|
|
151
|
+
KindQuestionDotToken = innerast.KindQuestionDotToken
|
|
152
|
+
KindAssertsKeyword = innerast.KindAssertsKeyword
|
|
153
|
+
KindEqualsGreaterThanToken = innerast.KindEqualsGreaterThanToken
|
|
154
|
+
|
|
155
|
+
NodeFlagsOptionalChain = innerast.NodeFlagsOptionalChain
|
|
156
|
+
|
|
157
|
+
TokenFlagsNone = innerast.TokenFlagsNone
|
|
106
158
|
|
|
107
159
|
SymbolFlagsOptional = innerast.SymbolFlagsOptional
|
|
108
160
|
SymbolFlagsAlias = innerast.SymbolFlagsAlias
|
|
109
161
|
SymbolFlagsType = innerast.SymbolFlagsType
|
|
110
162
|
SymbolFlagsNamespace = innerast.SymbolFlagsNamespace
|
|
163
|
+
|
|
164
|
+
ModifierFlagsPrivate = innerast.ModifierFlagsPrivate
|
|
165
|
+
ModifierFlagsProtected = innerast.ModifierFlagsProtected
|
|
166
|
+
ModifierFlagsReadonly = innerast.ModifierFlagsReadonly
|
|
111
167
|
)
|
|
112
168
|
|
|
169
|
+
func NewNodeFactory(hooks NodeFactoryHooks) *NodeFactory {
|
|
170
|
+
return innerast.NewNodeFactory(hooks)
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
func NewNodeVisitor(visit func(node *Node) *Node, factory *NodeFactory, hooks NodeVisitorHooks) *NodeVisitor {
|
|
174
|
+
return innerast.NewNodeVisitor(visit, factory, hooks)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
func IsFunctionLike(node *Node) bool {
|
|
178
|
+
return innerast.IsFunctionLike(node)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
func IsPropertyAssignment(node *Node) bool {
|
|
182
|
+
return innerast.IsPropertyAssignment(node)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
func IsPropertyDeclaration(node *Node) bool {
|
|
186
|
+
return innerast.IsPropertyDeclaration(node)
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
func IsModuleBlock(node *Node) bool {
|
|
190
|
+
return innerast.IsModuleBlock(node)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
func IsStringLiteral(node *Node) bool {
|
|
194
|
+
return innerast.IsStringLiteral(node)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
func IsPropertyAccessExpression(node *Node) bool {
|
|
198
|
+
return innerast.IsPropertyAccessExpression(node)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
func IsElementAccessExpression(node *Node) bool {
|
|
202
|
+
return innerast.IsElementAccessExpression(node)
|
|
203
|
+
}
|
|
204
|
+
|
|
113
205
|
//go:linkname GetSourceFileOfNode github.com/microsoft/typescript-go/internal/ast.GetSourceFileOfNode
|
|
114
206
|
func GetSourceFileOfNode(node *innerast.Node) *innerast.SourceFile
|
|
115
207
|
|
package/shim/checker/shim.go
CHANGED
|
@@ -13,6 +13,7 @@ type SignatureKind = innerchecker.SignatureKind
|
|
|
13
13
|
type Type = innerchecker.Type
|
|
14
14
|
type TypeFlags = innerchecker.TypeFlags
|
|
15
15
|
type ObjectFlags = innerchecker.ObjectFlags
|
|
16
|
+
type ElementFlags = innerchecker.ElementFlags
|
|
16
17
|
|
|
17
18
|
const (
|
|
18
19
|
SignatureKindCall = innerchecker.SignatureKindCall
|
|
@@ -38,7 +39,16 @@ const (
|
|
|
38
39
|
TypeFlagsBigIntLike = innerchecker.TypeFlagsBigIntLike
|
|
39
40
|
TypeFlagsBooleanLike = innerchecker.TypeFlagsBooleanLike
|
|
40
41
|
|
|
41
|
-
ObjectFlagsReference
|
|
42
|
+
ObjectFlagsReference = innerchecker.ObjectFlagsReference
|
|
43
|
+
ObjectFlagsClass = innerchecker.ObjectFlagsClass
|
|
44
|
+
ObjectFlagsInterface = innerchecker.ObjectFlagsInterface
|
|
45
|
+
ObjectFlagsClassOrInterface = innerchecker.ObjectFlagsClassOrInterface
|
|
46
|
+
|
|
47
|
+
ElementFlagsNone = innerchecker.ElementFlagsNone
|
|
48
|
+
ElementFlagsRequired = innerchecker.ElementFlagsRequired
|
|
49
|
+
ElementFlagsOptional = innerchecker.ElementFlagsOptional
|
|
50
|
+
ElementFlagsRest = innerchecker.ElementFlagsRest
|
|
51
|
+
ElementFlagsVariadic = innerchecker.ElementFlagsVariadic
|
|
42
52
|
)
|
|
43
53
|
|
|
44
54
|
func IsTupleType(t *innerchecker.Type) bool {
|
|
@@ -144,3 +154,13 @@ func checkerIsArrayType(recv *innerchecker.Checker, t *innerchecker.Type) bool
|
|
|
144
154
|
func Checker_isArrayType(recv *innerchecker.Checker, t *innerchecker.Type) bool {
|
|
145
155
|
return checkerIsArrayType(recv, t)
|
|
146
156
|
}
|
|
157
|
+
|
|
158
|
+
//go:linkname checkerGetBaseTypes github.com/microsoft/typescript-go/internal/checker.(*Checker).getBaseTypes
|
|
159
|
+
func checkerGetBaseTypes(recv *innerchecker.Checker, t *innerchecker.Type) []*innerchecker.Type
|
|
160
|
+
|
|
161
|
+
func Checker_getBaseTypes(recv *innerchecker.Checker, t *innerchecker.Type) []*innerchecker.Type {
|
|
162
|
+
if recv == nil || t == nil {
|
|
163
|
+
return nil
|
|
164
|
+
}
|
|
165
|
+
return checkerGetBaseTypes(recv, t)
|
|
166
|
+
}
|