@nestia/sdk 12.0.0-dev.20260612.2 → 12.0.0-dev.20260619.1
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/assets/bundle/distribute/package.json +1 -1
- package/lib/factories/ExpressionFactory.d.ts +9 -0
- package/lib/factories/ExpressionFactory.js +16 -0
- package/lib/factories/ExpressionFactory.js.map +1 -0
- package/lib/factories/IdentifierFactory.d.ts +22 -0
- package/lib/factories/IdentifierFactory.js +50 -0
- package/lib/factories/IdentifierFactory.js.map +1 -0
- package/lib/factories/LiteralFactory.d.ts +9 -0
- package/lib/factories/LiteralFactory.js +48 -0
- package/lib/factories/LiteralFactory.js.map +1 -0
- package/lib/factories/StatementFactory.d.ts +14 -0
- package/lib/factories/StatementFactory.js +20 -0
- package/lib/factories/StatementFactory.js.map +1 -0
- package/lib/factories/TypeFactory.d.ts +24 -0
- package/lib/factories/TypeFactory.js +27 -0
- package/lib/factories/TypeFactory.js.map +1 -0
- package/lib/generates/CloneGenerator.js +2 -2
- package/lib/generates/CloneGenerator.js.map +1 -1
- package/lib/generates/internal/E2eFileProgrammer.js +30 -29
- package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
- package/lib/generates/internal/FilePrinter.d.ts +2 -2
- package/lib/generates/internal/FilePrinter.js +14 -25
- package/lib/generates/internal/FilePrinter.js.map +1 -1
- package/lib/generates/internal/ImportDictionary.d.ts +1 -1
- package/lib/generates/internal/ImportDictionary.js +10 -9
- package/lib/generates/internal/ImportDictionary.js.map +1 -1
- package/lib/generates/internal/SdkAliasCollection.d.ts +12 -12
- package/lib/generates/internal/SdkAliasCollection.js +23 -25
- package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
- package/lib/generates/internal/SdkFileProgrammer.js +2 -2
- package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpCloneProgrammer.d.ts +1 -1
- package/lib/generates/internal/SdkHttpCloneProgrammer.js +3 -3
- package/lib/generates/internal/SdkHttpCloneProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpFunctionProgrammer.d.ts +1 -1
- package/lib/generates/internal/SdkHttpFunctionProgrammer.js +45 -48
- package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpNamespaceProgrammer.d.ts +1 -1
- package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +61 -60
- package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpParameterProgrammer.d.ts +2 -2
- package/lib/generates/internal/SdkHttpParameterProgrammer.js +11 -13
- package/lib/generates/internal/SdkHttpParameterProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpRouteProgrammer.d.ts +1 -1
- package/lib/generates/internal/SdkHttpSimulationProgrammer.d.ts +1 -1
- package/lib/generates/internal/SdkHttpSimulationProgrammer.js +50 -48
- package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkMcpRouteProgrammer.d.ts +1 -1
- package/lib/generates/internal/SdkMcpRouteProgrammer.js +54 -53
- package/lib/generates/internal/SdkMcpRouteProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkTypeProgrammer.d.ts +3 -3
- package/lib/generates/internal/SdkTypeProgrammer.js +42 -43
- package/lib/generates/internal/SdkTypeProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkTypeTagProgrammer.d.ts +2 -1
- package/lib/generates/internal/SdkTypeTagProgrammer.js +7 -9
- package/lib/generates/internal/SdkTypeTagProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.d.ts +2 -2
- package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +45 -47
- package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkWebSocketParameterProgrammer.d.ts +3 -3
- package/lib/generates/internal/SdkWebSocketParameterProgrammer.js +9 -9
- package/lib/generates/internal/SdkWebSocketParameterProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkWebSocketRouteProgrammer.d.ts +2 -2
- package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +34 -40
- package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
- package/lib/transform.d.ts +5 -9
- package/lib/transform.js +8 -31
- package/lib/transform.js.map +1 -1
- package/package.json +11 -11
- package/src/factories/ExpressionFactory.ts +23 -0
- package/src/factories/IdentifierFactory.ts +84 -0
- package/src/factories/LiteralFactory.ts +54 -0
- package/src/factories/StatementFactory.ts +56 -0
- package/src/factories/TypeFactory.ts +27 -0
- package/src/generates/CloneGenerator.ts +8 -7
- package/src/generates/internal/E2eFileProgrammer.ts +59 -53
- package/src/generates/internal/FilePrinter.ts +28 -36
- package/src/generates/internal/ImportDictionary.ts +19 -21
- package/src/generates/internal/SdkAliasCollection.ts +55 -49
- package/src/generates/internal/SdkFileProgrammer.ts +4 -7
- package/src/generates/internal/SdkHttpCloneProgrammer.ts +11 -13
- package/src/generates/internal/SdkHttpFunctionProgrammer.ts +90 -101
- package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +153 -166
- package/src/generates/internal/SdkHttpParameterProgrammer.ts +15 -17
- package/src/generates/internal/SdkHttpRouteProgrammer.ts +1 -1
- package/src/generates/internal/SdkHttpSimulationProgrammer.ts +121 -130
- package/src/generates/internal/SdkMcpRouteProgrammer.ts +135 -140
- package/src/generates/internal/SdkTypeProgrammer.ts +389 -382
- package/src/generates/internal/SdkTypeTagProgrammer.ts +13 -17
- package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +124 -130
- package/src/generates/internal/SdkWebSocketParameterProgrammer.ts +17 -15
- package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +112 -139
- package/src/transform.ts +14 -45
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
type Expression,
|
|
3
3
|
NodeFlags,
|
|
4
|
+
type Statement,
|
|
4
5
|
SyntaxKind,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
type TypeNode,
|
|
7
|
+
factory,
|
|
8
|
+
} from "@ttsc/factory";
|
|
8
9
|
import { IJsDocTagInfo } from "typia";
|
|
9
10
|
|
|
11
|
+
import { IdentifierFactory } from "../../factories/IdentifierFactory";
|
|
10
12
|
import { INestiaProject } from "../../structures/INestiaProject";
|
|
11
13
|
import { ITypedWebSocketRoute } from "../../structures/ITypedWebSocketRoute";
|
|
12
14
|
import { StringUtil } from "../../utils/StringUtil";
|
|
@@ -20,7 +22,7 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
20
22
|
export const write =
|
|
21
23
|
(project: INestiaProject) =>
|
|
22
24
|
(importer: ImportDictionary) =>
|
|
23
|
-
(route: ITypedWebSocketRoute):
|
|
25
|
+
(route: ITypedWebSocketRoute): Statement[] => [
|
|
24
26
|
FilePrinter.description(
|
|
25
27
|
writeFunction(project)(importer)(route),
|
|
26
28
|
writeDescription(route),
|
|
@@ -64,14 +66,14 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
64
66
|
const writeFunction =
|
|
65
67
|
(project: INestiaProject) =>
|
|
66
68
|
(importer: ImportDictionary) =>
|
|
67
|
-
(route: ITypedWebSocketRoute):
|
|
69
|
+
(route: ITypedWebSocketRoute): Statement => {
|
|
68
70
|
const connection: string = StringUtil.escapeDuplicate([route.name])(
|
|
69
71
|
"connection",
|
|
70
72
|
);
|
|
71
|
-
return
|
|
73
|
+
return factory.createFunctionDeclaration(
|
|
72
74
|
[
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
factory.createModifier(SyntaxKind.ExportKeyword),
|
|
76
|
+
factory.createModifier(SyntaxKind.AsyncKeyword),
|
|
75
77
|
],
|
|
76
78
|
undefined,
|
|
77
79
|
route.name,
|
|
@@ -79,13 +81,9 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
79
81
|
[
|
|
80
82
|
IdentifierFactory.parameter(
|
|
81
83
|
connection,
|
|
82
|
-
|
|
84
|
+
factory.createTypeReferenceNode(
|
|
83
85
|
SdkImportWizard.IConnection(importer),
|
|
84
|
-
[
|
|
85
|
-
TypeScriptFactory.createTypeReferenceNode(
|
|
86
|
-
`${route.name}.Header`,
|
|
87
|
-
),
|
|
88
|
-
],
|
|
86
|
+
[factory.createTypeReferenceNode(`${route.name}.Header`)],
|
|
89
87
|
),
|
|
90
88
|
),
|
|
91
89
|
...SdkWebSocketParameterProgrammer.getParameterDeclarations({
|
|
@@ -95,10 +93,10 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
95
93
|
prefix: true,
|
|
96
94
|
}),
|
|
97
95
|
],
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
factory.createTypeReferenceNode("Promise", [
|
|
97
|
+
factory.createTypeReferenceNode(`${route.name}.Output`),
|
|
100
98
|
]),
|
|
101
|
-
|
|
99
|
+
factory.createBlock(
|
|
102
100
|
writeFunctionBody(project)(importer)(route)(connection),
|
|
103
101
|
true,
|
|
104
102
|
),
|
|
@@ -109,38 +107,38 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
109
107
|
(project: INestiaProject) =>
|
|
110
108
|
(importer: ImportDictionary) =>
|
|
111
109
|
(route: ITypedWebSocketRoute) =>
|
|
112
|
-
(connection: string):
|
|
110
|
+
(connection: string): Statement[] => {
|
|
113
111
|
const access = (key: string) =>
|
|
114
112
|
project.config.keyword === true
|
|
115
|
-
?
|
|
116
|
-
|
|
113
|
+
? factory.createPropertyAccessExpression(
|
|
114
|
+
factory.createIdentifier("props"),
|
|
117
115
|
key,
|
|
118
116
|
)
|
|
119
|
-
:
|
|
117
|
+
: factory.createIdentifier(key);
|
|
120
118
|
return [
|
|
121
|
-
local("url")(
|
|
119
|
+
local("url")(factory.createTypeReferenceNode("string"))(
|
|
122
120
|
joinPath(
|
|
123
121
|
connection,
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
122
|
+
factory.createCallExpression(
|
|
123
|
+
factory.createPropertyAccessExpression(
|
|
124
|
+
factory.createIdentifier(route.name),
|
|
127
125
|
"path",
|
|
128
126
|
),
|
|
129
127
|
[],
|
|
130
128
|
project.config.keyword === true &&
|
|
131
129
|
SdkWebSocketParameterProgrammer.isPathEmpty(route) === false
|
|
132
|
-
? [
|
|
130
|
+
? [factory.createIdentifier("props")]
|
|
133
131
|
: SdkWebSocketParameterProgrammer.getEntries({
|
|
134
132
|
project,
|
|
135
133
|
route,
|
|
136
134
|
provider: false,
|
|
137
135
|
prefix: true,
|
|
138
|
-
}).map((p) =>
|
|
136
|
+
}).map((p) => factory.createIdentifier(p.key)),
|
|
139
137
|
),
|
|
140
138
|
),
|
|
141
139
|
),
|
|
142
140
|
local("connector")(
|
|
143
|
-
|
|
141
|
+
factory.createTypeReferenceNode(
|
|
144
142
|
importer.external({
|
|
145
143
|
declaration: false,
|
|
146
144
|
file: "tgrid",
|
|
@@ -148,18 +146,14 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
148
146
|
name: "WebSocketConnector",
|
|
149
147
|
}),
|
|
150
148
|
[
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
),
|
|
155
|
-
TypeScriptFactory.createTypeReferenceNode(
|
|
156
|
-
`${route.name}.Listener`,
|
|
157
|
-
),
|
|
149
|
+
factory.createTypeReferenceNode(`${route.name}.Header`),
|
|
150
|
+
factory.createTypeReferenceNode(`${route.name}.Provider`),
|
|
151
|
+
factory.createTypeReferenceNode(`${route.name}.Listener`),
|
|
158
152
|
],
|
|
159
153
|
),
|
|
160
154
|
)(
|
|
161
|
-
|
|
162
|
-
|
|
155
|
+
factory.createNewExpression(
|
|
156
|
+
factory.createIdentifier(
|
|
163
157
|
importer.external({
|
|
164
158
|
declaration: false,
|
|
165
159
|
file: "tgrid",
|
|
@@ -169,82 +163,74 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
169
163
|
),
|
|
170
164
|
undefined,
|
|
171
165
|
[
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
166
|
+
factory.createAsExpression(
|
|
167
|
+
factory.createBinaryExpression(
|
|
168
|
+
factory.createPropertyAccessExpression(
|
|
169
|
+
factory.createIdentifier(connection),
|
|
176
170
|
"headers",
|
|
177
171
|
),
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
),
|
|
181
|
-
TypeScriptFactory.createObjectLiteralExpression([], false),
|
|
172
|
+
factory.createToken(SyntaxKind.QuestionQuestionToken),
|
|
173
|
+
factory.createObjectLiteralExpression([], false),
|
|
182
174
|
),
|
|
183
|
-
|
|
175
|
+
factory.createKeywordTypeNode(SyntaxKind.AnyKeyword),
|
|
184
176
|
),
|
|
185
177
|
access("provider"),
|
|
186
178
|
],
|
|
187
179
|
),
|
|
188
180
|
),
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
181
|
+
factory.createExpressionStatement(
|
|
182
|
+
factory.createAwaitExpression(
|
|
183
|
+
factory.createCallExpression(
|
|
184
|
+
factory.createPropertyAccessExpression(
|
|
185
|
+
factory.createIdentifier("connector"),
|
|
194
186
|
"connect",
|
|
195
187
|
),
|
|
196
188
|
undefined,
|
|
197
|
-
[
|
|
189
|
+
[factory.createIdentifier("url")],
|
|
198
190
|
),
|
|
199
191
|
),
|
|
200
192
|
),
|
|
201
193
|
local("driver")(
|
|
202
|
-
|
|
194
|
+
factory.createTypeReferenceNode(
|
|
203
195
|
importer.external({
|
|
204
196
|
declaration: true,
|
|
205
197
|
file: "tgrid",
|
|
206
198
|
type: "element",
|
|
207
199
|
name: "Driver",
|
|
208
200
|
}),
|
|
209
|
-
[
|
|
210
|
-
TypeScriptFactory.createTypeReferenceNode(
|
|
211
|
-
`${route.name}.Listener`,
|
|
212
|
-
),
|
|
213
|
-
],
|
|
201
|
+
[factory.createTypeReferenceNode(`${route.name}.Listener`)],
|
|
214
202
|
),
|
|
215
203
|
)(
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
204
|
+
factory.createCallExpression(
|
|
205
|
+
factory.createPropertyAccessExpression(
|
|
206
|
+
factory.createIdentifier("connector"),
|
|
219
207
|
"getDriver",
|
|
220
208
|
),
|
|
221
209
|
undefined,
|
|
222
210
|
undefined,
|
|
223
211
|
),
|
|
224
212
|
),
|
|
225
|
-
|
|
226
|
-
|
|
213
|
+
factory.createReturnStatement(
|
|
214
|
+
factory.createObjectLiteralExpression(
|
|
227
215
|
[
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
[
|
|
216
|
+
factory.createShorthandPropertyAssignment("connector"),
|
|
217
|
+
factory.createShorthandPropertyAssignment("driver"),
|
|
218
|
+
factory.createPropertyAssignment(
|
|
219
|
+
factory.createIdentifier("reconnect"),
|
|
220
|
+
factory.createArrowFunction(
|
|
221
|
+
[factory.createToken(SyntaxKind.AsyncKeyword)],
|
|
234
222
|
undefined,
|
|
235
223
|
[],
|
|
236
224
|
undefined,
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
TypeScriptFactory.createIdentifier("connector"),
|
|
244
|
-
TypeScriptFactory.createIdentifier("connect"),
|
|
225
|
+
factory.createToken(SyntaxKind.EqualsGreaterThanToken),
|
|
226
|
+
factory.createAwaitExpression(
|
|
227
|
+
factory.createCallExpression(
|
|
228
|
+
factory.createPropertyAccessExpression(
|
|
229
|
+
factory.createIdentifier("connector"),
|
|
230
|
+
factory.createIdentifier("connect"),
|
|
245
231
|
),
|
|
246
232
|
undefined,
|
|
247
|
-
[
|
|
233
|
+
[factory.createIdentifier("url")],
|
|
248
234
|
),
|
|
249
235
|
),
|
|
250
236
|
),
|
|
@@ -257,75 +243,62 @@ export namespace SdkWebSocketRouteProgrammer {
|
|
|
257
243
|
};
|
|
258
244
|
}
|
|
259
245
|
|
|
260
|
-
const local = (name: string) => (type:
|
|
261
|
-
|
|
246
|
+
const local = (name: string) => (type: TypeNode) => (expression: Expression) =>
|
|
247
|
+
factory.createVariableStatement(
|
|
262
248
|
[],
|
|
263
|
-
|
|
264
|
-
[
|
|
265
|
-
TypeScriptFactory.createVariableDeclaration(
|
|
266
|
-
name,
|
|
267
|
-
undefined,
|
|
268
|
-
type,
|
|
269
|
-
expression,
|
|
270
|
-
),
|
|
271
|
-
],
|
|
249
|
+
factory.createVariableDeclarationList(
|
|
250
|
+
[factory.createVariableDeclaration(name, undefined, type, expression)],
|
|
272
251
|
NodeFlags.Const,
|
|
273
252
|
),
|
|
274
253
|
);
|
|
275
254
|
|
|
276
|
-
const joinPath = (connection: string, caller:
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
TypeScriptFactory.createIdentifier(connection),
|
|
286
|
-
TypeScriptFactory.createIdentifier("host"),
|
|
287
|
-
),
|
|
288
|
-
TypeScriptFactory.createIdentifier("endsWith"),
|
|
255
|
+
const joinPath = (connection: string, caller: Expression) =>
|
|
256
|
+
factory.createTemplateExpression(factory.createTemplateHead("", ""), [
|
|
257
|
+
factory.createTemplateSpan(
|
|
258
|
+
factory.createConditionalExpression(
|
|
259
|
+
factory.createCallExpression(
|
|
260
|
+
factory.createPropertyAccessExpression(
|
|
261
|
+
factory.createPropertyAccessExpression(
|
|
262
|
+
factory.createIdentifier(connection),
|
|
263
|
+
factory.createIdentifier("host"),
|
|
289
264
|
),
|
|
290
|
-
|
|
291
|
-
[TypeScriptFactory.createStringLiteral("/")],
|
|
265
|
+
factory.createIdentifier("endsWith"),
|
|
292
266
|
),
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
267
|
+
undefined,
|
|
268
|
+
[factory.createStringLiteral("/")],
|
|
269
|
+
),
|
|
270
|
+
factory.createToken(SyntaxKind.QuestionToken),
|
|
271
|
+
factory.createCallExpression(
|
|
272
|
+
factory.createPropertyAccessExpression(
|
|
273
|
+
factory.createPropertyAccessExpression(
|
|
274
|
+
factory.createIdentifier(connection),
|
|
275
|
+
factory.createIdentifier("host"),
|
|
301
276
|
),
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
),
|
|
311
|
-
|
|
277
|
+
factory.createIdentifier("substring"),
|
|
278
|
+
),
|
|
279
|
+
undefined,
|
|
280
|
+
[
|
|
281
|
+
factory.createNumericLiteral("0"),
|
|
282
|
+
factory.createBinaryExpression(
|
|
283
|
+
factory.createPropertyAccessExpression(
|
|
284
|
+
factory.createPropertyAccessExpression(
|
|
285
|
+
factory.createIdentifier(connection),
|
|
286
|
+
factory.createIdentifier("host"),
|
|
312
287
|
),
|
|
313
|
-
|
|
314
|
-
TypeScriptFactory.createNumericLiteral("1"),
|
|
288
|
+
factory.createIdentifier("length"),
|
|
315
289
|
),
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
290
|
+
factory.createToken(SyntaxKind.MinusToken),
|
|
291
|
+
factory.createNumericLiteral("1"),
|
|
292
|
+
),
|
|
293
|
+
],
|
|
294
|
+
),
|
|
295
|
+
factory.createToken(SyntaxKind.ColonToken),
|
|
296
|
+
factory.createPropertyAccessExpression(
|
|
297
|
+
factory.createIdentifier(connection),
|
|
298
|
+
factory.createIdentifier("host"),
|
|
323
299
|
),
|
|
324
|
-
TypeScriptFactory.createTemplateMiddle("", ""),
|
|
325
|
-
),
|
|
326
|
-
TypeScriptFactory.createTemplateSpan(
|
|
327
|
-
caller,
|
|
328
|
-
TypeScriptFactory.createTemplateTail("", ""),
|
|
329
300
|
),
|
|
330
|
-
|
|
331
|
-
|
|
301
|
+
factory.createTemplateMiddle(""),
|
|
302
|
+
),
|
|
303
|
+
factory.createTemplateSpan(caller, factory.createTemplateTail("")),
|
|
304
|
+
]);
|
package/src/transform.ts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
1
2
|
import path from "node:path";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
interface ITtscPlugin {
|
|
5
|
-
name: string;
|
|
6
|
-
source: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const filename: string = currentFilename();
|
|
10
|
-
const dirname: string = path.dirname(filename);
|
|
3
|
+
import type { ITtscPlugin, ITtscPluginFactoryContext } from "ttsc";
|
|
11
4
|
|
|
12
5
|
/**
|
|
13
6
|
* `@nestia/sdk` ttsc plugin descriptor.
|
|
@@ -15,45 +8,21 @@ const dirname: string = path.dirname(filename);
|
|
|
15
8
|
* Points ttsc at this package's own Go source (`native/sdk`, package `sdk`).
|
|
16
9
|
* Because that package is not `package main`, ttsc classifies it as a linked
|
|
17
10
|
* transform and statically links it into the `@nestia/core` host binary as a
|
|
18
|
-
* contributor — but only for projects that actually depend on `@nestia/sdk`.
|
|
19
|
-
*
|
|
20
|
-
*
|
|
11
|
+
* contributor — but only for projects that actually depend on `@nestia/sdk`. A
|
|
12
|
+
* project depending on `@nestia/core` alone never links, compiles, or ships any
|
|
13
|
+
* of this SDK transform code.
|
|
21
14
|
*/
|
|
22
|
-
export function createTtscPlugin(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
15
|
+
export default function createTtscPlugin(
|
|
16
|
+
context: ITtscPluginFactoryContext,
|
|
17
|
+
): ITtscPlugin {
|
|
18
|
+
const requireFrom = createRequire(
|
|
19
|
+
path.join(context.projectRoot, "package.json"),
|
|
20
|
+
);
|
|
21
|
+
const root: string = path.dirname(
|
|
22
|
+
requireFrom.resolve("@nestia/sdk/package.json"),
|
|
23
|
+
);
|
|
26
24
|
return {
|
|
27
25
|
name: "@nestia/sdk",
|
|
28
26
|
source: path.resolve(root, "native", "sdk"),
|
|
29
27
|
};
|
|
30
28
|
}
|
|
31
|
-
export default createTtscPlugin;
|
|
32
|
-
|
|
33
|
-
function currentFilename(): string {
|
|
34
|
-
if (
|
|
35
|
-
typeof __filename === "string" &&
|
|
36
|
-
__filename !== "[stdin]" &&
|
|
37
|
-
__filename.length !== 0
|
|
38
|
-
)
|
|
39
|
-
return normalizeFilename(__filename);
|
|
40
|
-
|
|
41
|
-
const line: string | undefined = new Error().stack
|
|
42
|
-
?.split("\n")
|
|
43
|
-
.find(
|
|
44
|
-
(entry) =>
|
|
45
|
-
entry.includes("/src/transform.ts") ||
|
|
46
|
-
entry.includes("/lib/transform.js") ||
|
|
47
|
-
entry.includes("/lib/transform.mjs"),
|
|
48
|
-
);
|
|
49
|
-
const matched: RegExpMatchArray | null | undefined = line?.match(
|
|
50
|
-
/\(([^()]+):\d+:\d+\)|at ([^\s()]+):\d+:\d+/,
|
|
51
|
-
);
|
|
52
|
-
const fallback: string = typeof __filename === "string" ? __filename : "";
|
|
53
|
-
return normalizeFilename(matched?.[1] ?? matched?.[2] ?? fallback);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function normalizeFilename(value: string): string {
|
|
57
|
-
if (value.startsWith("file:")) return fileURLToPath(value);
|
|
58
|
-
return value;
|
|
59
|
-
}
|