@nestia/core 12.0.0 → 12.1.0
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/lib/adaptors/McpAdaptor.js +21 -18
- package/lib/adaptors/McpAdaptor.js.map +1 -1
- package/lib/decorators/EncryptedBody.js +2 -7
- package/lib/decorators/EncryptedBody.js.map +1 -1
- package/lib/decorators/EncryptedRoute.js +1 -1
- package/lib/decorators/EncryptedRoute.js.map +1 -1
- package/lib/decorators/McpRoute.js +1 -1
- package/lib/decorators/McpRoute.js.map +1 -1
- package/lib/decorators/NoTransformConfigurationError.js +2 -2
- package/lib/decorators/PlainBody.js +2 -7
- package/lib/decorators/PlainBody.js.map +1 -1
- package/lib/decorators/SwaggerCustomizer.js +2 -2
- package/lib/decorators/SwaggerCustomizer.js.map +1 -1
- package/lib/decorators/SwaggerExample.d.ts +37 -40
- package/lib/decorators/SwaggerExample.js +24 -26
- package/lib/decorators/SwaggerExample.js.map +1 -1
- package/lib/decorators/TypedBody.js +3 -7
- package/lib/decorators/TypedBody.js.map +1 -1
- package/lib/decorators/TypedException.d.ts +1 -1
- package/lib/decorators/TypedFormData.js +2 -7
- package/lib/decorators/TypedFormData.js.map +1 -1
- package/lib/decorators/TypedQuery.js +2 -9
- package/lib/decorators/TypedQuery.js.map +1 -1
- package/lib/decorators/WebSocketRoute.js +1 -1
- package/lib/decorators/WebSocketRoute.js.map +1 -1
- package/lib/decorators/internal/get_path_and_querify.js +1 -1
- package/lib/decorators/internal/get_path_and_querify.js.map +1 -1
- package/lib/decorators/internal/is_media_type.d.ts +1 -0
- package/lib/decorators/internal/is_media_type.js +11 -0
- package/lib/decorators/internal/is_media_type.js.map +1 -0
- package/lib/decorators/internal/validate_request_query.js.map +1 -1
- package/native/plugin/plan.go +17 -0
- package/native/transform/build.go +39 -80
- package/native/transform/contributor.go +4 -64
- package/native/transform/core_transform.go +42 -705
- package/native/transform/node_transform.go +3 -5
- package/native/transform/printer.go +0 -217
- package/native/transform/transform.go +2 -91
- package/native/transform/typia_fast.go +0 -320
- package/package.json +8 -8
- package/src/adaptors/McpAdaptor.ts +29 -21
- package/src/decorators/EncryptedBody.ts +2 -9
- package/src/decorators/EncryptedRoute.ts +1 -1
- package/src/decorators/McpRoute.ts +6 -5
- package/src/decorators/NoTransformConfigurationError.ts +2 -2
- package/src/decorators/PlainBody.ts +2 -9
- package/src/decorators/SwaggerCustomizer.ts +8 -2
- package/src/decorators/SwaggerExample.ts +43 -45
- package/src/decorators/TypedBody.ts +5 -9
- package/src/decorators/TypedException.ts +1 -1
- package/src/decorators/TypedFormData.ts +7 -9
- package/src/decorators/TypedQuery.ts +7 -12
- package/src/decorators/WebSocketRoute.ts +1 -1
- package/src/decorators/internal/get_path_and_querify.ts +1 -1
- package/src/decorators/internal/is_media_type.ts +10 -0
- package/src/decorators/internal/validate_request_query.ts +2 -1
- package/native/transform/cleanup.go +0 -408
- package/native/transform/exports.go +0 -13
- package/native/transform/rewrite.go +0 -668
- package/native/transform/typia_replacement.go +0 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketRoute.js","sourceRoot":"","sources":["../../src/decorators/WebSocketRoute.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WebSocketRoute.js","sourceRoot":"","sources":["../../src/decorators/WebSocketRoute.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ const take = (method) => (functor) => {
|
|
|
40
40
|
const querify = (input) => {
|
|
41
41
|
const output = new URLSearchParams();
|
|
42
42
|
for (const [key, value] of Object.entries(input))
|
|
43
|
-
if (
|
|
43
|
+
if (value === undefined)
|
|
44
44
|
continue;
|
|
45
45
|
else if (Array.isArray(value))
|
|
46
46
|
for (const elem of value)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get_path_and_querify.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_path_and_querify.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA8D;AAC9D,kDAA2D;AAG3D,oFAAiF;AAEjF,gBAAgB;AACT,MAAM,oBAAoB,GAC/B,CAAC,MAAc,EAAE,EAAE,CACnB,CACE,GAAG,IAAW,EACoD,EAAE;IACpE,MAAM,IAAI,GACR,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;QACrB,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,OAAO,GACX,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAdS,QAAA,oBAAoB,GAApB,oBAAoB,CAc7B;AAEJ,gBAAgB;AAChB,MAAM,IAAI,GACR,CAAC,MAAc,EAAE,EAAE,CACnB,CAAI,OAA0C,EAAE,EAAE;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAA,6DAA6B,EAAC,MAAM,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;SACvC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC;SAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC7D,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACjD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,uCAAuC,CACtE,CAAC;AACJ,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,OAAO,GAAG,CAAC,KAA0B,EAAmB,EAAE;IAC9D,MAAM,MAAM,GAAoB,IAAI,eAAe,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9C,IAAI,
|
|
1
|
+
{"version":3,"file":"get_path_and_querify.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_path_and_querify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.is_media_type = void 0;
|
|
4
|
+
/** @internal */
|
|
5
|
+
const is_media_type = (text, expected) => text !== undefined &&
|
|
6
|
+
text
|
|
7
|
+
.split(";")
|
|
8
|
+
.map((str) => str.trim().toLowerCase())
|
|
9
|
+
.some((str) => str === expected.toLowerCase());
|
|
10
|
+
exports.is_media_type = is_media_type;
|
|
11
|
+
//# sourceMappingURL=is_media_type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is_media_type.js","sourceRoot":"","sources":["../../../src/decorators/internal/is_media_type.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AACT,MAAM,aAAa,GAAG,CAC3B,IAAwB,EACxB,QAAgB,EACP,EAAE,CACX,IAAI,KAAK,SAAS;IAClB,IAAI;SACD,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACtC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AARtC,QAAA,aAAa,GAAb,aAAa,CAQyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate_request_query.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_query.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AACrD,kDAA2D;AAG3D,oFAAiF;AAEjF,gBAAgB;AACT,MAAM,sBAAsB,GACjC,CAAC,MAAc,EAAE,EAAE,CACnB,CAAI,SAAqC,EAAE,EAAE;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAA,6DAA6B,EAAC,MAAM,CAAC,CAAC;QACtC,OAAO,CAAC,KAAsB,EAAE,EAAE,CAChC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAM,CAAC;IAC7C,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACnE,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACrD,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5E,OAAO,GAAG,EAAE,CACV,IAAI,KAAK,CAAC,wBAAwB,MAAM,8BAA8B,CAAC,CAAC;AAC5E,CAAC,CAAC;AAZS,QAAA,sBAAsB,GAAtB,sBAAsB,CAY/B;AAEJ,gBAAgB;AAChB,MAAM,MAAM,GACV,CAAI,OAAsC,EAAE,EAAE,CAC9C,CAAC,KAAsB,EAA2B,EAAE;IAClD,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb;;;aAA6B,GAAG,GAAG,CAAC;YAClC,OAAO,IAAI,4BAAmB,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,yBAAyB,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"validate_request_query.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_query.ts"],"names":[],"mappings":"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"}
|
package/native/plugin/plan.go
CHANGED
|
@@ -32,6 +32,23 @@ func (p Plan) UsesNestia() bool {
|
|
|
32
32
|
return p.Core || p.SDK
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
// Kind reports which plugin family an entry belongs to: "core", "sdk", "typia",
|
|
36
|
+
// or "" when it is none of them.
|
|
37
|
+
func (e Entry) Kind() string {
|
|
38
|
+
return classify(e)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// BoolConfig reads a boolean option from an entry's resolved plugin config. The
|
|
42
|
+
// second result distinguishes an option explicitly set to false from one that is
|
|
43
|
+
// absent, which the tri-state options depend on.
|
|
44
|
+
func (e Entry) BoolConfig(key string) (bool, bool) {
|
|
45
|
+
if e.Config == nil {
|
|
46
|
+
return false, false
|
|
47
|
+
}
|
|
48
|
+
value, ok := e.Config[key].(bool)
|
|
49
|
+
return value, ok
|
|
50
|
+
}
|
|
51
|
+
|
|
35
52
|
func ParsePlan(payload string) (Plan, error) {
|
|
36
53
|
payload = strings.TrimSpace(payload)
|
|
37
54
|
if payload == "" {
|
|
@@ -8,12 +8,9 @@ import (
|
|
|
8
8
|
"io"
|
|
9
9
|
"os"
|
|
10
10
|
"path/filepath"
|
|
11
|
-
"regexp"
|
|
12
11
|
"time"
|
|
13
12
|
|
|
14
|
-
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
15
13
|
shimcompiler "github.com/microsoft/typescript-go/shim/compiler"
|
|
16
|
-
shimscanner "github.com/microsoft/typescript-go/shim/scanner"
|
|
17
14
|
"github.com/samchon/nestia/packages/core/native/plugin"
|
|
18
15
|
"github.com/samchon/ttsc/packages/ttsc/driver"
|
|
19
16
|
typiaadapter "github.com/samchon/typia/packages/typia/native/adapter"
|
|
@@ -105,7 +102,7 @@ func runBuild(args []string) int {
|
|
|
105
102
|
// AST-integration emit: typia's per-file transformer and @nestia/core's own
|
|
106
103
|
// per-file transformer both run inside tsgo's emit pipeline (sharing the
|
|
107
104
|
// EmitContext), so they return AST and tsgo's module-transform aliases the
|
|
108
|
-
// namespace imports they inject.
|
|
105
|
+
// namespace imports they inject. This is the only emit path.
|
|
109
106
|
transformDiags := []Diagnostic{}
|
|
110
107
|
addDiagnostic := func(diag Diagnostic) {
|
|
111
108
|
transformDiags = append(transformDiags, diag)
|
|
@@ -116,7 +113,7 @@ func runBuild(args []string) int {
|
|
|
116
113
|
newPathsRewriter(prog).applyAll(prog.SourceFiles())
|
|
117
114
|
profileBuildStep(profile, "paths-rewrite", started)
|
|
118
115
|
|
|
119
|
-
typiaTransform := nestiaTypiaNodeTransform(prog, readTypiaPluginOptions(
|
|
116
|
+
typiaTransform := nestiaTypiaNodeTransform(prog, readTypiaPluginOptions(plan), addDiagnostic)
|
|
120
117
|
coreTransform := nestiaCoreNodeTransform(prog, plan, addDiagnostic)
|
|
121
118
|
|
|
122
119
|
// Statically linked contributors (e.g. the @nestia/sdk OperationMetadata
|
|
@@ -286,95 +283,57 @@ func profileBuildStep(enabled bool, name string, started time.Time) {
|
|
|
286
283
|
profileBuildDuration(enabled, name, time.Since(started))
|
|
287
284
|
}
|
|
288
285
|
}
|
|
289
|
-
|
|
290
|
-
func profileBuildStepCount(enabled bool, name string, started time.Time, count int) {
|
|
291
|
-
if enabled {
|
|
292
|
-
fmt.Fprintf(stderr, "ttsc-nestia profile: %s=%s count=%d\n", name, time.Since(started), count)
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
286
|
func profileBuildDuration(enabled bool, name string, elapsed time.Duration) {
|
|
297
287
|
if enabled {
|
|
298
288
|
fmt.Fprintf(stderr, "ttsc-nestia profile: %s=%s\n", name, elapsed)
|
|
299
289
|
}
|
|
300
290
|
}
|
|
301
291
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
292
|
+
// readTypiaPluginOptions takes typia's transform options from the resolved plugin
|
|
293
|
+
// payload ttsc hands this binary, not from the text of one tsconfig file.
|
|
294
|
+
//
|
|
295
|
+
// The file is the wrong source twice over. It is only the *entry* of an `extends`
|
|
296
|
+
// chain, so an option declared in a base was invisible — the compile then
|
|
297
|
+
// succeeded with a weaker validator than the project asked for, and nothing said
|
|
298
|
+
// so. And a text scan matches anywhere, so `"numeric": true` inside a comment or
|
|
299
|
+
// an unrelated object turned the option on for a project that never set it. ttsc
|
|
300
|
+
// has already resolved the whole chain by the time it builds --plugins-json.
|
|
301
|
+
//
|
|
302
|
+
// Options are read from every plugin entry, with typia's own entry winning, so a
|
|
303
|
+
// project that sets them on the composing @nestia/core entry keeps working.
|
|
304
|
+
func readTypiaPluginOptions(plan plugin.Plan) typiaadapter.PluginOptions {
|
|
305
|
+
options := typiaadapter.PluginOptions{}
|
|
306
|
+
apply := func(entry plugin.Entry) {
|
|
307
|
+
if value, ok := entry.BoolConfig("functional"); ok {
|
|
308
|
+
options.Functional = value
|
|
309
309
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
File: site.FilePath,
|
|
313
|
-
Line: line,
|
|
314
|
-
Column: column,
|
|
315
|
-
Code: "typia." + site.Module + "." + site.Method,
|
|
316
|
-
Message: message,
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
func typiaBuildRewriteSortKey(site typiaadapter.CallSite) int {
|
|
321
|
-
node := site.Call.AsNode()
|
|
322
|
-
if node == nil {
|
|
323
|
-
return 0
|
|
324
|
-
}
|
|
325
|
-
insideDecorator := false
|
|
326
|
-
classEnd := 0
|
|
327
|
-
for current := node.Parent; current != nil; current = current.Parent {
|
|
328
|
-
if current.Kind == NestiaCoreKindDecorator {
|
|
329
|
-
insideDecorator = true
|
|
310
|
+
if value, ok := entry.BoolConfig("numeric"); ok {
|
|
311
|
+
options.Numeric = value
|
|
330
312
|
}
|
|
331
|
-
if
|
|
332
|
-
|
|
333
|
-
|
|
313
|
+
if value, ok := entry.BoolConfig("finite"); ok {
|
|
314
|
+
options.Finite = value
|
|
315
|
+
}
|
|
316
|
+
// `undefined` is tri-state: an explicit false must stay distinguishable
|
|
317
|
+
// from an absent option, so copy into a fresh variable rather than
|
|
318
|
+
// aliasing the closure's parameter.
|
|
319
|
+
if value, ok := entry.BoolConfig("undefined"); ok {
|
|
320
|
+
flag := value
|
|
321
|
+
options.Undefined = &flag
|
|
334
322
|
}
|
|
335
323
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
return classEnd + node.Pos()
|
|
341
|
-
}
|
|
342
|
-
return node.Pos() + 1_000_000_000
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
func readTypiaPluginOptions(cwd, tsconfigPath string) typiaadapter.PluginOptions {
|
|
346
|
-
path := tsconfigPath
|
|
347
|
-
if !filepath.IsAbs(path) {
|
|
348
|
-
path = filepath.Join(cwd, path)
|
|
349
|
-
}
|
|
350
|
-
data, err := os.ReadFile(path)
|
|
351
|
-
if err != nil {
|
|
352
|
-
return typiaadapter.PluginOptions{}
|
|
353
|
-
}
|
|
354
|
-
text := string(data)
|
|
355
|
-
return typiaadapter.PluginOptions{
|
|
356
|
-
Functional: typiaOptionFunctionalPattern.MatchString(text),
|
|
357
|
-
Numeric: typiaOptionNumericPattern.MatchString(text),
|
|
358
|
-
Finite: typiaOptionFinitePattern.MatchString(text),
|
|
359
|
-
Undefined: readBooleanPluginOption(text, "undefined"),
|
|
324
|
+
for _, entry := range plan.Entries {
|
|
325
|
+
if entry.Kind() != "typia" {
|
|
326
|
+
apply(entry)
|
|
327
|
+
}
|
|
360
328
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
if matched == nil {
|
|
366
|
-
return nil
|
|
329
|
+
for _, entry := range plan.Entries {
|
|
330
|
+
if entry.Kind() == "typia" {
|
|
331
|
+
apply(entry)
|
|
332
|
+
}
|
|
367
333
|
}
|
|
368
|
-
|
|
369
|
-
return &value
|
|
334
|
+
return options
|
|
370
335
|
}
|
|
371
336
|
|
|
372
|
-
var (
|
|
373
|
-
typiaOptionFunctionalPattern = regexp.MustCompile(`(?s)"functional"\s*:\s*true`)
|
|
374
|
-
typiaOptionNumericPattern = regexp.MustCompile(`(?s)"numeric"\s*:\s*true`)
|
|
375
|
-
typiaOptionFinitePattern = regexp.MustCompile(`(?s)"finite"\s*:\s*true`)
|
|
376
|
-
)
|
|
377
|
-
|
|
378
337
|
func resolveCWD(label string, cwdOverride string) (string, bool) {
|
|
379
338
|
if cwdOverride != "" {
|
|
380
339
|
return cwdOverride, true
|
|
@@ -5,81 +5,21 @@ import (
|
|
|
5
5
|
"github.com/samchon/ttsc/packages/ttsc/driver"
|
|
6
6
|
)
|
|
7
7
|
|
|
8
|
-
// BuildOutputRewriter patches emitted JavaScript after the core native
|
|
9
|
-
// rewrites have been applied. Contributor packages register these from init().
|
|
10
|
-
type BuildOutputRewriter struct {
|
|
11
|
-
Len func() int
|
|
12
|
-
Apply func(outputName string, text string) (string, error)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
type buildOutputRewriteCollector func(*driver.Program, plugin.Plan) (*BuildOutputRewriter, []Diagnostic)
|
|
16
|
-
type sourceRewriteCollector func(*driver.Program, plugin.Plan, string) (map[string][]SourceRewrite, []Diagnostic)
|
|
17
8
|
type emitTransformCollector func(*driver.Program, plugin.Plan) (driver.PluginTransform, []Diagnostic)
|
|
18
9
|
|
|
19
|
-
var buildOutputRewriteCollectors []buildOutputRewriteCollector
|
|
20
|
-
var sourceRewriteCollectors []sourceRewriteCollector
|
|
21
10
|
var emitTransformCollectors []emitTransformCollector
|
|
22
11
|
|
|
23
|
-
// RegisterBuildOutputRewriteCollector registers a statically linked
|
|
24
|
-
// contributor's emitted-JavaScript rewrite pass.
|
|
25
|
-
func RegisterBuildOutputRewriteCollector(collector buildOutputRewriteCollector) {
|
|
26
|
-
if collector != nil {
|
|
27
|
-
buildOutputRewriteCollectors = append(buildOutputRewriteCollectors, collector)
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// RegisterSourceRewriteCollector registers a statically linked contributor's
|
|
32
|
-
// TypeScript source-to-source rewrite pass.
|
|
33
|
-
func RegisterSourceRewriteCollector(collector sourceRewriteCollector) {
|
|
34
|
-
if collector != nil {
|
|
35
|
-
sourceRewriteCollectors = append(sourceRewriteCollectors, collector)
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
12
|
// RegisterEmitTransformCollector registers a statically linked contributor's
|
|
40
|
-
// emit-phase AST transformer. The `transform`
|
|
41
|
-
// shared EmitContext alongside the typia and core node transforms, so
|
|
42
|
-
// contributor (e.g. @nestia/sdk) participates in the
|
|
43
|
-
//
|
|
13
|
+
// emit-phase AST transformer. The `build` and `transform` subcommands run these
|
|
14
|
+
// inside the shared EmitContext alongside the typia and core node transforms, so
|
|
15
|
+
// a linked contributor (e.g. @nestia/sdk) participates in the same emit pass
|
|
16
|
+
// rather than patching its output afterwards.
|
|
44
17
|
func RegisterEmitTransformCollector(collector emitTransformCollector) {
|
|
45
18
|
if collector != nil {
|
|
46
19
|
emitTransformCollectors = append(emitTransformCollectors, collector)
|
|
47
20
|
}
|
|
48
21
|
}
|
|
49
22
|
|
|
50
|
-
func collectContributorBuildOutputRewriters(
|
|
51
|
-
prog *driver.Program,
|
|
52
|
-
plan plugin.Plan,
|
|
53
|
-
) ([]BuildOutputRewriter, []Diagnostic) {
|
|
54
|
-
output := []BuildOutputRewriter{}
|
|
55
|
-
diagnostics := []Diagnostic{}
|
|
56
|
-
for _, collector := range buildOutputRewriteCollectors {
|
|
57
|
-
rewriter, diags := collector(prog, plan)
|
|
58
|
-
diagnostics = append(diagnostics, diags...)
|
|
59
|
-
if rewriter != nil && rewriter.Apply != nil {
|
|
60
|
-
output = append(output, *rewriter)
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return output, diagnostics
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
func collectContributorSourceRewriteMap(
|
|
67
|
-
prog *driver.Program,
|
|
68
|
-
plan plugin.Plan,
|
|
69
|
-
onlyFile string,
|
|
70
|
-
) (map[string][]SourceRewrite, []Diagnostic) {
|
|
71
|
-
output := map[string][]SourceRewrite{}
|
|
72
|
-
diagnostics := []Diagnostic{}
|
|
73
|
-
for _, collector := range sourceRewriteCollectors {
|
|
74
|
-
rewrites, diags := collector(prog, plan, onlyFile)
|
|
75
|
-
diagnostics = append(diagnostics, diags...)
|
|
76
|
-
for file, entries := range rewrites {
|
|
77
|
-
output[file] = append(output[file], entries...)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return output, diagnostics
|
|
81
|
-
}
|
|
82
|
-
|
|
83
23
|
func collectContributorEmitTransforms(
|
|
84
24
|
prog *driver.Program,
|
|
85
25
|
plan plugin.Plan,
|