@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.
Files changed (93) hide show
  1. package/assets/bundle/distribute/package.json +1 -1
  2. package/lib/factories/ExpressionFactory.d.ts +9 -0
  3. package/lib/factories/ExpressionFactory.js +16 -0
  4. package/lib/factories/ExpressionFactory.js.map +1 -0
  5. package/lib/factories/IdentifierFactory.d.ts +22 -0
  6. package/lib/factories/IdentifierFactory.js +50 -0
  7. package/lib/factories/IdentifierFactory.js.map +1 -0
  8. package/lib/factories/LiteralFactory.d.ts +9 -0
  9. package/lib/factories/LiteralFactory.js +48 -0
  10. package/lib/factories/LiteralFactory.js.map +1 -0
  11. package/lib/factories/StatementFactory.d.ts +14 -0
  12. package/lib/factories/StatementFactory.js +20 -0
  13. package/lib/factories/StatementFactory.js.map +1 -0
  14. package/lib/factories/TypeFactory.d.ts +24 -0
  15. package/lib/factories/TypeFactory.js +27 -0
  16. package/lib/factories/TypeFactory.js.map +1 -0
  17. package/lib/generates/CloneGenerator.js +2 -2
  18. package/lib/generates/CloneGenerator.js.map +1 -1
  19. package/lib/generates/internal/E2eFileProgrammer.js +30 -29
  20. package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
  21. package/lib/generates/internal/FilePrinter.d.ts +2 -2
  22. package/lib/generates/internal/FilePrinter.js +14 -25
  23. package/lib/generates/internal/FilePrinter.js.map +1 -1
  24. package/lib/generates/internal/ImportDictionary.d.ts +1 -1
  25. package/lib/generates/internal/ImportDictionary.js +10 -9
  26. package/lib/generates/internal/ImportDictionary.js.map +1 -1
  27. package/lib/generates/internal/SdkAliasCollection.d.ts +12 -12
  28. package/lib/generates/internal/SdkAliasCollection.js +23 -25
  29. package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
  30. package/lib/generates/internal/SdkFileProgrammer.js +2 -2
  31. package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
  32. package/lib/generates/internal/SdkHttpCloneProgrammer.d.ts +1 -1
  33. package/lib/generates/internal/SdkHttpCloneProgrammer.js +3 -3
  34. package/lib/generates/internal/SdkHttpCloneProgrammer.js.map +1 -1
  35. package/lib/generates/internal/SdkHttpFunctionProgrammer.d.ts +1 -1
  36. package/lib/generates/internal/SdkHttpFunctionProgrammer.js +45 -48
  37. package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
  38. package/lib/generates/internal/SdkHttpNamespaceProgrammer.d.ts +1 -1
  39. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +61 -60
  40. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
  41. package/lib/generates/internal/SdkHttpParameterProgrammer.d.ts +2 -2
  42. package/lib/generates/internal/SdkHttpParameterProgrammer.js +11 -13
  43. package/lib/generates/internal/SdkHttpParameterProgrammer.js.map +1 -1
  44. package/lib/generates/internal/SdkHttpRouteProgrammer.d.ts +1 -1
  45. package/lib/generates/internal/SdkHttpSimulationProgrammer.d.ts +1 -1
  46. package/lib/generates/internal/SdkHttpSimulationProgrammer.js +50 -48
  47. package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
  48. package/lib/generates/internal/SdkMcpRouteProgrammer.d.ts +1 -1
  49. package/lib/generates/internal/SdkMcpRouteProgrammer.js +54 -53
  50. package/lib/generates/internal/SdkMcpRouteProgrammer.js.map +1 -1
  51. package/lib/generates/internal/SdkTypeProgrammer.d.ts +3 -3
  52. package/lib/generates/internal/SdkTypeProgrammer.js +42 -43
  53. package/lib/generates/internal/SdkTypeProgrammer.js.map +1 -1
  54. package/lib/generates/internal/SdkTypeTagProgrammer.d.ts +2 -1
  55. package/lib/generates/internal/SdkTypeTagProgrammer.js +7 -9
  56. package/lib/generates/internal/SdkTypeTagProgrammer.js.map +1 -1
  57. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.d.ts +2 -2
  58. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +45 -47
  59. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
  60. package/lib/generates/internal/SdkWebSocketParameterProgrammer.d.ts +3 -3
  61. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js +9 -9
  62. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js.map +1 -1
  63. package/lib/generates/internal/SdkWebSocketRouteProgrammer.d.ts +2 -2
  64. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +34 -40
  65. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
  66. package/lib/transform.d.ts +5 -9
  67. package/lib/transform.js +8 -31
  68. package/lib/transform.js.map +1 -1
  69. package/package.json +11 -11
  70. package/src/factories/ExpressionFactory.ts +23 -0
  71. package/src/factories/IdentifierFactory.ts +84 -0
  72. package/src/factories/LiteralFactory.ts +54 -0
  73. package/src/factories/StatementFactory.ts +56 -0
  74. package/src/factories/TypeFactory.ts +27 -0
  75. package/src/generates/CloneGenerator.ts +8 -7
  76. package/src/generates/internal/E2eFileProgrammer.ts +59 -53
  77. package/src/generates/internal/FilePrinter.ts +28 -36
  78. package/src/generates/internal/ImportDictionary.ts +19 -21
  79. package/src/generates/internal/SdkAliasCollection.ts +55 -49
  80. package/src/generates/internal/SdkFileProgrammer.ts +4 -7
  81. package/src/generates/internal/SdkHttpCloneProgrammer.ts +11 -13
  82. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +90 -101
  83. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +153 -166
  84. package/src/generates/internal/SdkHttpParameterProgrammer.ts +15 -17
  85. package/src/generates/internal/SdkHttpRouteProgrammer.ts +1 -1
  86. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +121 -130
  87. package/src/generates/internal/SdkMcpRouteProgrammer.ts +135 -140
  88. package/src/generates/internal/SdkTypeProgrammer.ts +389 -382
  89. package/src/generates/internal/SdkTypeTagProgrammer.ts +13 -17
  90. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +124 -130
  91. package/src/generates/internal/SdkWebSocketParameterProgrammer.ts +17 -15
  92. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +112 -139
  93. package/src/transform.ts +14 -45
@@ -1,12 +1,14 @@
1
1
  import {
2
- Node,
2
+ type Expression,
3
3
  NodeFlags,
4
+ type Statement,
4
5
  SyntaxKind,
5
- TypeScriptFactory,
6
- } from "@nestia/factory";
7
- import { IdentifierFactory } from "@nestia/factory";
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): Node[] => [
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): Node => {
69
+ (route: ITypedWebSocketRoute): Statement => {
68
70
  const connection: string = StringUtil.escapeDuplicate([route.name])(
69
71
  "connection",
70
72
  );
71
- return TypeScriptFactory.createFunctionDeclaration(
73
+ return factory.createFunctionDeclaration(
72
74
  [
73
- TypeScriptFactory.createModifier(SyntaxKind.ExportKeyword),
74
- TypeScriptFactory.createModifier(SyntaxKind.AsyncKeyword),
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
- TypeScriptFactory.createTypeReferenceNode(
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
- TypeScriptFactory.createTypeReferenceNode("Promise", [
99
- TypeScriptFactory.createTypeReferenceNode(`${route.name}.Output`),
96
+ factory.createTypeReferenceNode("Promise", [
97
+ factory.createTypeReferenceNode(`${route.name}.Output`),
100
98
  ]),
101
- TypeScriptFactory.createBlock(
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): Node[] => {
110
+ (connection: string): Statement[] => {
113
111
  const access = (key: string) =>
114
112
  project.config.keyword === true
115
- ? TypeScriptFactory.createPropertyAccessExpression(
116
- TypeScriptFactory.createIdentifier("props"),
113
+ ? factory.createPropertyAccessExpression(
114
+ factory.createIdentifier("props"),
117
115
  key,
118
116
  )
119
- : TypeScriptFactory.createIdentifier(key);
117
+ : factory.createIdentifier(key);
120
118
  return [
121
- local("url")(TypeScriptFactory.createTypeReferenceNode("string"))(
119
+ local("url")(factory.createTypeReferenceNode("string"))(
122
120
  joinPath(
123
121
  connection,
124
- TypeScriptFactory.createCallExpression(
125
- TypeScriptFactory.createPropertyAccessExpression(
126
- TypeScriptFactory.createIdentifier(route.name),
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
- ? [TypeScriptFactory.createIdentifier("props")]
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) => TypeScriptFactory.createIdentifier(p.key)),
136
+ }).map((p) => factory.createIdentifier(p.key)),
139
137
  ),
140
138
  ),
141
139
  ),
142
140
  local("connector")(
143
- TypeScriptFactory.createTypeReferenceNode(
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
- TypeScriptFactory.createTypeReferenceNode(`${route.name}.Header`),
152
- TypeScriptFactory.createTypeReferenceNode(
153
- `${route.name}.Provider`,
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
- TypeScriptFactory.createNewExpression(
162
- TypeScriptFactory.createIdentifier(
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
- TypeScriptFactory.createAsExpression(
173
- TypeScriptFactory.createBinaryExpression(
174
- TypeScriptFactory.createPropertyAccessExpression(
175
- TypeScriptFactory.createIdentifier(connection),
166
+ factory.createAsExpression(
167
+ factory.createBinaryExpression(
168
+ factory.createPropertyAccessExpression(
169
+ factory.createIdentifier(connection),
176
170
  "headers",
177
171
  ),
178
- TypeScriptFactory.createToken(
179
- SyntaxKind.QuestionQuestionToken,
180
- ),
181
- TypeScriptFactory.createObjectLiteralExpression([], false),
172
+ factory.createToken(SyntaxKind.QuestionQuestionToken),
173
+ factory.createObjectLiteralExpression([], false),
182
174
  ),
183
- TypeScriptFactory.createKeywordTypeNode(SyntaxKind.AnyKeyword),
175
+ factory.createKeywordTypeNode(SyntaxKind.AnyKeyword),
184
176
  ),
185
177
  access("provider"),
186
178
  ],
187
179
  ),
188
180
  ),
189
- TypeScriptFactory.createExpressionStatement(
190
- TypeScriptFactory.createAwaitExpression(
191
- TypeScriptFactory.createCallExpression(
192
- TypeScriptFactory.createPropertyAccessExpression(
193
- TypeScriptFactory.createIdentifier("connector"),
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
- [TypeScriptFactory.createIdentifier("url")],
189
+ [factory.createIdentifier("url")],
198
190
  ),
199
191
  ),
200
192
  ),
201
193
  local("driver")(
202
- TypeScriptFactory.createTypeReferenceNode(
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
- TypeScriptFactory.createCallExpression(
217
- TypeScriptFactory.createPropertyAccessExpression(
218
- TypeScriptFactory.createIdentifier("connector"),
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
- TypeScriptFactory.createReturnStatement(
226
- TypeScriptFactory.createObjectLiteralExpression(
213
+ factory.createReturnStatement(
214
+ factory.createObjectLiteralExpression(
227
215
  [
228
- TypeScriptFactory.createShorthandPropertyAssignment("connector"),
229
- TypeScriptFactory.createShorthandPropertyAssignment("driver"),
230
- TypeScriptFactory.createPropertyAssignment(
231
- TypeScriptFactory.createIdentifier("reconnect"),
232
- TypeScriptFactory.createArrowFunction(
233
- [TypeScriptFactory.createToken(SyntaxKind.AsyncKeyword)],
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
- TypeScriptFactory.createToken(
238
- SyntaxKind.EqualsGreaterThanToken,
239
- ),
240
- TypeScriptFactory.createAwaitExpression(
241
- TypeScriptFactory.createCallExpression(
242
- TypeScriptFactory.createPropertyAccessExpression(
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
- [TypeScriptFactory.createIdentifier("url")],
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: Node) => (expression: Node) =>
261
- TypeScriptFactory.createVariableStatement(
246
+ const local = (name: string) => (type: TypeNode) => (expression: Expression) =>
247
+ factory.createVariableStatement(
262
248
  [],
263
- TypeScriptFactory.createVariableDeclarationList(
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: Node) =>
277
- TypeScriptFactory.createTemplateExpression(
278
- TypeScriptFactory.createTemplateHead("", ""),
279
- [
280
- TypeScriptFactory.createTemplateSpan(
281
- TypeScriptFactory.createConditionalExpression(
282
- TypeScriptFactory.createCallExpression(
283
- TypeScriptFactory.createPropertyAccessExpression(
284
- TypeScriptFactory.createPropertyAccessExpression(
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
- undefined,
291
- [TypeScriptFactory.createStringLiteral("/")],
265
+ factory.createIdentifier("endsWith"),
292
266
  ),
293
- TypeScriptFactory.createToken(SyntaxKind.QuestionToken),
294
- TypeScriptFactory.createCallExpression(
295
- TypeScriptFactory.createPropertyAccessExpression(
296
- TypeScriptFactory.createPropertyAccessExpression(
297
- TypeScriptFactory.createIdentifier(connection),
298
- TypeScriptFactory.createIdentifier("host"),
299
- ),
300
- TypeScriptFactory.createIdentifier("substring"),
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
- undefined,
303
- [
304
- TypeScriptFactory.createNumericLiteral("0"),
305
- TypeScriptFactory.createBinaryExpression(
306
- TypeScriptFactory.createPropertyAccessExpression(
307
- TypeScriptFactory.createPropertyAccessExpression(
308
- TypeScriptFactory.createIdentifier(connection),
309
- TypeScriptFactory.createIdentifier("host"),
310
- ),
311
- TypeScriptFactory.createIdentifier("length"),
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
- TypeScriptFactory.createToken(SyntaxKind.MinusToken),
314
- TypeScriptFactory.createNumericLiteral("1"),
288
+ factory.createIdentifier("length"),
315
289
  ),
316
- ],
317
- ),
318
- TypeScriptFactory.createToken(SyntaxKind.ColonToken),
319
- TypeScriptFactory.createPropertyAccessExpression(
320
- TypeScriptFactory.createIdentifier(connection),
321
- TypeScriptFactory.createIdentifier("host"),
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 { fileURLToPath } from "node:url";
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
- * A project depending on `@nestia/core` alone never links, compiles, or ships
20
- * any of this SDK transform code.
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(): ITtscPlugin {
23
- // `<root>/lib/transform.js` (published) or `<root>/src/transform.ts` (dev)
24
- // `<root>` → the `native/sdk` linked-transform source package.
25
- const root: string = path.resolve(dirname, "..");
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
- }