@distilled.cloud/core 1.0.0-rc.2 → 1.0.0-rc.4
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/category.d.ts +4 -4
- package/lib/category.js +4 -4
- package/lib/codegen/cli.d.ts +48 -0
- package/lib/codegen/cli.d.ts.map +1 -1
- package/lib/codegen/cli.js +50 -10
- package/lib/codegen/cli.js.map +1 -1
- package/lib/codegen/emit.d.ts +2 -2
- package/lib/codegen/emit.js +4 -4
- package/lib/codegen/emit.js.map +1 -1
- package/lib/codegen/generator.d.ts.map +1 -1
- package/lib/codegen/generator.js +80 -14
- package/lib/codegen/generator.js.map +1 -1
- package/lib/codegen/graphql.d.ts +201 -0
- package/lib/codegen/graphql.d.ts.map +1 -0
- package/lib/codegen/graphql.js +789 -0
- package/lib/codegen/graphql.js.map +1 -0
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +17 -13
- package/lib/errors.js.map +1 -1
- package/lib/pagination.d.ts +43 -3
- package/lib/pagination.d.ts.map +1 -1
- package/lib/pagination.js +84 -5
- package/lib/pagination.js.map +1 -1
- package/lib/protocol-http.d.ts.map +1 -1
- package/lib/protocol-http.js +12 -3
- package/lib/protocol-http.js.map +1 -1
- package/lib/schema.js +1 -1
- package/lib/schema.js.map +1 -1
- package/package.json +4 -4
- package/src/category.ts +4 -4
- package/src/codegen/cli.ts +110 -16
- package/src/codegen/emit.ts +4 -4
- package/src/codegen/generator.ts +83 -16
- package/src/codegen/graphql.ts +1195 -0
- package/src/errors.ts +20 -25
- package/src/pagination.ts +125 -7
- package/src/protocol-http.ts +11 -3
- package/src/schema.ts +1 -1
package/lib/category.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* ```ts
|
|
10
10
|
* import * as Category from "@distilled.cloud/core/category";
|
|
11
11
|
*
|
|
12
|
-
* export class Unauthorized extends Schema.
|
|
12
|
+
* export class Unauthorized extends Schema.TaggedError<Unauthorized>()(
|
|
13
13
|
* "Unauthorized",
|
|
14
14
|
* { message: Schema.String },
|
|
15
15
|
* ).pipe(Category.withAuthError) {}
|
|
@@ -56,7 +56,7 @@ export interface RetryableInfo {
|
|
|
56
56
|
*
|
|
57
57
|
* @example
|
|
58
58
|
* ```ts
|
|
59
|
-
* export class MyError extends Schema.
|
|
59
|
+
* export class MyError extends Schema.TaggedError<MyError>()(
|
|
60
60
|
* "MyError",
|
|
61
61
|
* { message: Schema.String },
|
|
62
62
|
* ).pipe(Category.withCategory(Category.AuthError)) {}
|
|
@@ -76,13 +76,13 @@ export declare const withCategory: <Categories extends Array<Category>>(...categ
|
|
|
76
76
|
* @example
|
|
77
77
|
* ```ts
|
|
78
78
|
* // Standard retryable error
|
|
79
|
-
* export class TransientError extends Schema.
|
|
79
|
+
* export class TransientError extends Schema.TaggedError<TransientError>()(
|
|
80
80
|
* "TransientError",
|
|
81
81
|
* { message: Schema.String },
|
|
82
82
|
* ).pipe(Category.withRetryable()) {}
|
|
83
83
|
*
|
|
84
84
|
* // Throttling error (uses longer backoff)
|
|
85
|
-
* export class RateLimitError extends Schema.
|
|
85
|
+
* export class RateLimitError extends Schema.TaggedError<RateLimitError>()(
|
|
86
86
|
* "RateLimitError",
|
|
87
87
|
* { message: Schema.String },
|
|
88
88
|
* ).pipe(Category.withRetryable({ throttling: true })) {}
|
package/lib/category.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* ```ts
|
|
10
10
|
* import * as Category from "@distilled.cloud/core/category";
|
|
11
11
|
*
|
|
12
|
-
* export class Unauthorized extends Schema.
|
|
12
|
+
* export class Unauthorized extends Schema.TaggedError<Unauthorized>()(
|
|
13
13
|
* "Unauthorized",
|
|
14
14
|
* { message: Schema.String },
|
|
15
15
|
* ).pipe(Category.withAuthError) {}
|
|
@@ -62,7 +62,7 @@ export const retryableKey = "@distilled.cloud/error/retryable";
|
|
|
62
62
|
*
|
|
63
63
|
* @example
|
|
64
64
|
* ```ts
|
|
65
|
-
* export class MyError extends Schema.
|
|
65
|
+
* export class MyError extends Schema.TaggedError<MyError>()(
|
|
66
66
|
* "MyError",
|
|
67
67
|
* { message: Schema.String },
|
|
68
68
|
* ).pipe(Category.withCategory(Category.AuthError)) {}
|
|
@@ -84,13 +84,13 @@ export const withCategory = (...categories) => (C) => {
|
|
|
84
84
|
* @example
|
|
85
85
|
* ```ts
|
|
86
86
|
* // Standard retryable error
|
|
87
|
-
* export class TransientError extends Schema.
|
|
87
|
+
* export class TransientError extends Schema.TaggedError<TransientError>()(
|
|
88
88
|
* "TransientError",
|
|
89
89
|
* { message: Schema.String },
|
|
90
90
|
* ).pipe(Category.withRetryable()) {}
|
|
91
91
|
*
|
|
92
92
|
* // Throttling error (uses longer backoff)
|
|
93
|
-
* export class RateLimitError extends Schema.
|
|
93
|
+
* export class RateLimitError extends Schema.TaggedError<RateLimitError>()(
|
|
94
94
|
* "RateLimitError",
|
|
95
95
|
* { message: Schema.String },
|
|
96
96
|
* ).pipe(Category.withRetryable({ throttling: true })) {}
|
package/lib/codegen/cli.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import * as FileSystem from "effect/FileSystem";
|
|
3
|
+
import * as Path from "effect/Path";
|
|
1
4
|
import { type SdkSpec } from "./generator.ts";
|
|
2
5
|
export interface GeneratorCliOptions {
|
|
3
6
|
/** Command description shown in --help. */
|
|
@@ -10,6 +13,51 @@ export interface GeneratorCliOptions {
|
|
|
10
13
|
readonly outDir?: string;
|
|
11
14
|
/** Model files to skip (e.g. a shared protocols model). */
|
|
12
15
|
readonly excludeModel?: (file: string) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Where the models are, when they aren't a flat directory of `<resource>.json`.
|
|
18
|
+
* AWS vendors Amazon's own repo, whose models sit at
|
|
19
|
+
* `models/<service>/service/<version>/<service>-<version>.json`.
|
|
20
|
+
*
|
|
21
|
+
* Returns the model files to compile; manual specs are merged in after,
|
|
22
|
+
* as usual.
|
|
23
|
+
*/
|
|
24
|
+
readonly discoverModels?: (ctx: {
|
|
25
|
+
readonly smithyDir: string;
|
|
26
|
+
}) => Effect.Effect<ReadonlyArray<{
|
|
27
|
+
readonly file: string;
|
|
28
|
+
readonly dir: string;
|
|
29
|
+
}>, never, FileSystem.FileSystem | Path.Path>;
|
|
30
|
+
/**
|
|
31
|
+
* Side effects to run before generating — e.g. AWS copies `partitions.json`
|
|
32
|
+
* out of the smithy submodule, runtime data its endpoint resolver reads.
|
|
33
|
+
*/
|
|
34
|
+
readonly prepare?: (ctx: {
|
|
35
|
+
readonly root: string;
|
|
36
|
+
readonly outDir: string;
|
|
37
|
+
}) => Effect.Effect<void, never, FileSystem.FileSystem | Path.Path>;
|
|
38
|
+
/**
|
|
39
|
+
* The output module's name, when it isn't the model's filename. AWS names
|
|
40
|
+
* modules after the service's `aws.api#service` sdkId (`amazon-s3.json` →
|
|
41
|
+
* `s3.ts`), so the public surface reads `AWS.S3.getObject`.
|
|
42
|
+
*/
|
|
43
|
+
readonly resourceName?: (ctx: {
|
|
44
|
+
readonly model: any;
|
|
45
|
+
readonly file: string;
|
|
46
|
+
}) => string;
|
|
47
|
+
/** Barrel export name for a resource. Default: the resource name itself. */
|
|
48
|
+
readonly barrelExportName?: (resource: string) => string;
|
|
49
|
+
/**
|
|
50
|
+
* The closing pass over the output directory. Defaults to formatting;
|
|
51
|
+
* AWS lint-fixes first (see `codegen/format.ts`).
|
|
52
|
+
*/
|
|
53
|
+
readonly finalize?: (dir: string) => Effect.Effect<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Keep generating after a model fails, instead of stopping at the first.
|
|
56
|
+
* AWS compiles 430 services in one run, and one broken model shouldn't
|
|
57
|
+
* hide the state of the other 429. The run still FAILS at the end — the
|
|
58
|
+
* failures are reported together rather than swallowed.
|
|
59
|
+
*/
|
|
60
|
+
readonly continueOnModelError?: boolean;
|
|
13
61
|
/** Directory of hand-authored models merged after the generated ones. */
|
|
14
62
|
readonly manualSpecsDir?: string;
|
|
15
63
|
/** RFC-6902 patch chain root. Default `patches`; `false` disables. */
|
package/lib/codegen/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/codegen/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/codegen/cli.ts"],"names":[],"mappings":"AAcA,OAAO,EAAW,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAUpC,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE;QAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,KAAK,MAAM,CAAC,MAAM,CACjB,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,EAC9D,KAAK,EACL,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAClC,CAAC;IACF;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAC5B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;QACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,KAAK,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,yEAAyE;IACzE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC1E,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC;CACxC;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,YAAa,mBAAmB,KAAG,IAoQ9D,CAAC"}
|
package/lib/codegen/cli.js
CHANGED
|
@@ -36,12 +36,15 @@ export const runGeneratorCli = (options) => {
|
|
|
36
36
|
yield* Console.log("⚙️ generate");
|
|
37
37
|
yield* Console.log(` Smithy: ${smithyDir}`);
|
|
38
38
|
yield* Console.log(` Output: ${outDir}`);
|
|
39
|
+
yield* options.prepare?.({ root, outDir }) ?? Effect.void;
|
|
39
40
|
// Generated models plus optional manual-specs (hand-authored models
|
|
40
41
|
// for APIs the provider's spec source doesn't cover). A manual model
|
|
41
42
|
// must not shadow a generated one.
|
|
42
|
-
const generated =
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
const generated = options.discoverModels
|
|
44
|
+
? yield* options.discoverModels({ smithyDir })
|
|
45
|
+
: (yield* fs.readDirectory(smithyDir))
|
|
46
|
+
.filter((f) => f.endsWith(".json") && !(options.excludeModel?.(f) ?? false))
|
|
47
|
+
.map((f) => ({ file: f, dir: smithyDir }));
|
|
45
48
|
const manualDir = options.manualSpecsDir
|
|
46
49
|
? path.resolve(root, options.manualSpecsDir)
|
|
47
50
|
: undefined;
|
|
@@ -58,6 +61,7 @@ export const runGeneratorCli = (options) => {
|
|
|
58
61
|
const entries = [...generated, ...manual].sort((a, b) => a.file.localeCompare(b.file));
|
|
59
62
|
yield* fs.makeDirectory(outDir, { recursive: true });
|
|
60
63
|
const written = [];
|
|
64
|
+
const failedModels = [];
|
|
61
65
|
let totalOps = 0;
|
|
62
66
|
let totalPatches = 0;
|
|
63
67
|
let staleOps = 0;
|
|
@@ -76,10 +80,13 @@ export const runGeneratorCli = (options) => {
|
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
for (const { file, dir } of entries) {
|
|
79
|
-
const
|
|
83
|
+
const model = JSON.parse(yield* fs.readFileString(path.join(dir, file)));
|
|
84
|
+
// The module's name — the model's filename unless the provider
|
|
85
|
+
// derives it from the model itself (AWS: the service's sdkId).
|
|
86
|
+
const resource = options.resourceName?.({ model, file }) ??
|
|
87
|
+
file.replace(/\.json$/, "");
|
|
80
88
|
if (config.resource && resource !== config.resource)
|
|
81
89
|
continue;
|
|
82
|
-
const model = JSON.parse(yield* fs.readFileString(path.join(dir, file)));
|
|
83
90
|
// Apply the RFC-6902 patch chain before generating. Hand-written
|
|
84
91
|
// *.manual.json patches apply after the generated ones — they
|
|
85
92
|
// usually target post-rename shape names.
|
|
@@ -114,7 +121,22 @@ export const runGeneratorCli = (options) => {
|
|
|
114
121
|
if (note)
|
|
115
122
|
yield* Console.log(` ${note}`);
|
|
116
123
|
}
|
|
117
|
-
|
|
124
|
+
// `generateService` and the provider spec are synchronous and
|
|
125
|
+
// throw; with continueOnModelError the throw is recorded and the
|
|
126
|
+
// run moves on, so one broken model doesn't hide the state of
|
|
127
|
+
// every model after it. The run still fails at the end.
|
|
128
|
+
let generated;
|
|
129
|
+
try {
|
|
130
|
+
generated = generateService(model, options.spec(model));
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
if (!options.continueOnModelError)
|
|
134
|
+
throw e;
|
|
135
|
+
failedModels.push(`${resource}: ${e instanceof Error ? e.message : String(e)}`);
|
|
136
|
+
yield* Console.error(`❌ ${resource}`);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const { code, operations } = generated;
|
|
118
140
|
if (operations === 0)
|
|
119
141
|
continue;
|
|
120
142
|
yield* fs.writeFileString(path.join(outDir, `${resource}.ts`), code);
|
|
@@ -140,11 +162,17 @@ export const runGeneratorCli = (options) => {
|
|
|
140
162
|
// resource without removing anything.
|
|
141
163
|
const barrelPath = path.join(outDir, "index.ts");
|
|
142
164
|
const filtered = config.resource !== "";
|
|
143
|
-
|
|
165
|
+
// Sorted, not in generation order: a provider that discovers models
|
|
166
|
+
// in some other order (AWS walks Amazon's directory tree) would
|
|
167
|
+
// otherwise reshuffle the barrel on every run.
|
|
168
|
+
let resources = [...written].sort((a, b) => `${a}.json`.localeCompare(`${b}.json`));
|
|
144
169
|
if (filtered && (yield* fs.exists(barrelPath))) {
|
|
170
|
+
// Recover the RESOURCE from each export line's path, not its name:
|
|
171
|
+
// the two differ when barrelExportName renames (AWS exports
|
|
172
|
+
// `S3` from `./s3.ts`).
|
|
145
173
|
const existing = (yield* fs.readFileString(barrelPath))
|
|
146
174
|
.split("\n")
|
|
147
|
-
.map((line) => /^export \* as
|
|
175
|
+
.map((line) => /^export \* as \S+ from "\.\/(.+)\.ts";/.exec(line)?.[1])
|
|
148
176
|
.filter((name) => name !== undefined);
|
|
149
177
|
// Ordered exactly as a full run orders it: by MODEL FILENAME, so
|
|
150
178
|
// the `.json` takes part in the collation (`ai_gateway.json` sorts
|
|
@@ -152,13 +180,25 @@ export const runGeneratorCli = (options) => {
|
|
|
152
180
|
// Otherwise a filtered run reshuffles the barrel into diff noise.
|
|
153
181
|
resources = [...new Set([...existing, ...written])].sort((a, b) => `${a}.json`.localeCompare(`${b}.json`));
|
|
154
182
|
}
|
|
155
|
-
yield* fs.writeFileString(barrelPath, barrel(`// AUTO-GENERATED by scripts/generate.ts. Do not edit.\n`, resources.map((r) => ({
|
|
156
|
-
|
|
183
|
+
yield* fs.writeFileString(barrelPath, barrel(`// AUTO-GENERATED by scripts/generate.ts. Do not edit.\n`, resources.map((r) => ({
|
|
184
|
+
name: options.barrelExportName?.(r) ?? r,
|
|
185
|
+
path: `./${r}.ts`,
|
|
186
|
+
}))));
|
|
187
|
+
yield* (options.finalize ?? formatGenerated)(outDir);
|
|
157
188
|
yield* Console.log(`\n✅ Generated ${totalOps} operations across ${written.length} resource modules` +
|
|
158
189
|
(totalPatches
|
|
159
190
|
? ` (${totalPatches} patch files applied${staleOps ? `, ${staleOps} stale op(s) skipped` : ""}).`
|
|
160
191
|
: "."));
|
|
161
192
|
yield* Console.log(` ${path.join(outDir, "index.ts")}`);
|
|
193
|
+
// Models that failed under continueOnModelError. Reported together,
|
|
194
|
+
// at the end, and the run FAILS — a generate that couldn't produce
|
|
195
|
+
// a module must not exit 0 with the failure buried in the log.
|
|
196
|
+
if (failedModels.length) {
|
|
197
|
+
yield* Console.error(`\n❌ ${failedModels.length} model(s) failed to generate:`);
|
|
198
|
+
for (const f of failedModels)
|
|
199
|
+
yield* Console.error(` ${f}`);
|
|
200
|
+
return yield* Effect.die(new Error(`${failedModels.length} model(s) failed to generate`));
|
|
201
|
+
}
|
|
162
202
|
})).pipe(Command.withDescription(options.description));
|
|
163
203
|
BunRuntime.runMain(Effect.provide(Command.run(command, { version: "1.0.0" }), BunServices.layer));
|
|
164
204
|
};
|
package/lib/codegen/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/codegen/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAgB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/codegen/cli.ts"],"names":[],"mappings":"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"}
|
package/lib/codegen/emit.d.ts
CHANGED
|
@@ -68,7 +68,7 @@ export interface ErrorClassOptions {
|
|
|
68
68
|
readonly wrap?: (cls: string) => string;
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
|
-
* `export class X extends /*@__PURE__*/ S.
|
|
71
|
+
* `export class X extends /*@__PURE__*/ S.TaggedError<X>()("X", { … }) {}`
|
|
72
72
|
*
|
|
73
73
|
* The PURE markers are what make an unused error class droppable. A class
|
|
74
74
|
* whose heritage clause is an unannotated call can never be tree-shaken —
|
|
@@ -78,7 +78,7 @@ export interface ErrorClassOptions {
|
|
|
78
78
|
*
|
|
79
79
|
* `wrap` needs its own marker as well as the inner one: a pure call's
|
|
80
80
|
* ARGUMENTS are still evaluated, so annotating only
|
|
81
|
-
* `T.applyErrorMatchers(S.
|
|
81
|
+
* `T.applyErrorMatchers(S.TaggedError…(…), […])` leaves the inner call
|
|
82
82
|
* holding the class alive. Verified against esbuild in both directions.
|
|
83
83
|
*/
|
|
84
84
|
export declare const errorClass: (o: ErrorClassOptions) => string;
|
package/lib/codegen/emit.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* .annotate({ identifier: "X" })
|
|
10
10
|
* as any as S.Schema<X>; // no inference needed
|
|
11
11
|
*
|
|
12
|
-
* plus closed-alias string-union enums, `S.
|
|
12
|
+
* plus closed-alias string-union enums, `S.TaggedError` error classes, and
|
|
13
13
|
* `API.make(() => ({ … }))` operation consts. The helpers here own those
|
|
14
14
|
* shared skeletons; providers own the content strings (member pipes, trait
|
|
15
15
|
* calls, config fields). Emitted output is normalized by oxfmt afterwards,
|
|
@@ -69,7 +69,7 @@ export const enumDecl = (o) => {
|
|
|
69
69
|
];
|
|
70
70
|
};
|
|
71
71
|
/**
|
|
72
|
-
* `export class X extends /*@__PURE__*/ S.
|
|
72
|
+
* `export class X extends /*@__PURE__*/ S.TaggedError<X>()("X", { … }) {}`
|
|
73
73
|
*
|
|
74
74
|
* The PURE markers are what make an unused error class droppable. A class
|
|
75
75
|
* whose heritage clause is an unannotated call can never be tree-shaken —
|
|
@@ -79,12 +79,12 @@ export const enumDecl = (o) => {
|
|
|
79
79
|
*
|
|
80
80
|
* `wrap` needs its own marker as well as the inner one: a pure call's
|
|
81
81
|
* ARGUMENTS are still evaluated, so annotating only
|
|
82
|
-
* `T.applyErrorMatchers(S.
|
|
82
|
+
* `T.applyErrorMatchers(S.TaggedError…(…), […])` leaves the inner call
|
|
83
83
|
* holding the class alive. Verified against esbuild in both directions.
|
|
84
84
|
*/
|
|
85
85
|
export const errorClass = (o) => {
|
|
86
86
|
const annotations = o.annotations ? `,\n${o.annotations}` : "";
|
|
87
|
-
const cls = `${PURE}S.
|
|
87
|
+
const cls = `${PURE}S.TaggedError<${o.name}>()(${q(o.tag ?? o.name)}, {\n${o.fields.join("\n")}\n}${annotations})${o.pipes ?? ""}`;
|
|
88
88
|
const body = o.wrap ? `${PURE}${o.wrap(cls)}` : cls;
|
|
89
89
|
return `export class ${o.name} extends ${body} {}\n`;
|
|
90
90
|
};
|
package/lib/codegen/emit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/codegen/emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAErC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,MAAgB,EAAU,EAAE,CACtE,MAAM,CAAC,MAAM;IACX,CAAC,CAAC,oBAAoB,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;IACvD,CAAC,CAAC,oBAAoB,IAAI,KAAK,CAAC;AAuBpC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAsB,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,CAAC,IAAI,GAAG,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS;QACzB,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM;QACrC,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;IACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU;QAC3B,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,GAAG;QAC9B,CAAC,CAAC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;YAC3C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,gBAAgB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,OAAO,GAAG,QAAQ,cAAc,IAAI,KAAK,CAAC;AAC9F,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK,EAAU,EAAE,CAChE,KAAK;IACH,CAAC,CAAC,0BAA0B,IAAI,QAAQ,IAAI,4BAA4B,CAAC,CAAC,IAAI,CAAC,KAAK;IACpF,CAAC,CAAC,mBAAmB,IAAI,4BAA4B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAUtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAkB,EAAY,EAAE;IACvD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvE,OAAO;QACL,eAAe,CAAC,CAAC,IAAI,MAAM,KAAK,GAAG;QACnC,gBAAgB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,IAAI,UAAU,KAAK;KAC3E,CAAC;AACJ,CAAC,CAAC;AAgBF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAoB,EAAU,EAAE;IACzD,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,GAAG,GAAG,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/codegen/emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/codegen/generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/codegen/generator.ts"],"names":[],"mappings":"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"}
|
package/lib/codegen/generator.js
CHANGED
|
@@ -117,8 +117,25 @@ export const generateService = (model, spec) => {
|
|
|
117
117
|
const reachable = reachableFrom(shapes, roots, shapeDeps);
|
|
118
118
|
const order = topoOrder(shapes, reachable, shapeDeps);
|
|
119
119
|
const indexOf = orderIndex(order);
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
/**
|
|
121
|
+
* Shape id → the id whose emitted body it shares.
|
|
122
|
+
*
|
|
123
|
+
* Structural aliasing (see the struct emission below) has to cascade: a
|
|
124
|
+
* parent only matches another parent if their MEMBERS render identically,
|
|
125
|
+
* and a member renders as its target's name. So every reference resolves
|
|
126
|
+
* through this map first — once `…ItemGroupRuleGroup` is aliased onto a
|
|
127
|
+
* canonical shape, the parents referencing it start rendering the same
|
|
128
|
+
* text and collapse in turn.
|
|
129
|
+
*
|
|
130
|
+
* Filled in topological order, so a canonical target is always a shape
|
|
131
|
+
* that was already emitted — a back-reference, never a forward one.
|
|
132
|
+
*/
|
|
133
|
+
const canonicalId = new Map();
|
|
134
|
+
const canon = (target) => canonicalId.get(target) ?? target;
|
|
135
|
+
const rawRef = makeSchemaRef(prelude, indexOf);
|
|
136
|
+
const rawTsRef = makeTsRef(tsPrelude);
|
|
137
|
+
const ref = (target, selfIdx) => rawRef(canon(target), selfIdx);
|
|
138
|
+
const tsRef = (target) => rawTsRef(canon(target));
|
|
122
139
|
// Direction classification for enum openness. Enum ALIASES are emitted
|
|
123
140
|
// CLOSED (exhaustively matchable on reads); request-reachable shapes
|
|
124
141
|
// re-open enum references inline (`X | (string & {})`) so consumers can
|
|
@@ -154,7 +171,8 @@ export const generateService = (model, spec) => {
|
|
|
154
171
|
* pure response/error shapes stay the plain closed alias, and so do
|
|
155
172
|
* union-arm discriminant literals.
|
|
156
173
|
*/
|
|
157
|
-
const tsRefAt = (
|
|
174
|
+
const tsRefAt = (rawTarget, ownerId) => {
|
|
175
|
+
const target = canon(rawTarget);
|
|
158
176
|
const base = tsRef(target);
|
|
159
177
|
if (!requestReachable.has(ownerId))
|
|
160
178
|
return base;
|
|
@@ -325,6 +343,13 @@ export const generateService = (model, spec) => {
|
|
|
325
343
|
}
|
|
326
344
|
// 4. Error classes from the operations' errors lists.
|
|
327
345
|
const out = [];
|
|
346
|
+
// Emitted struct body → the name that owns it, for structural aliasing.
|
|
347
|
+
// Keyed on the emitted TEXT, so two shapes collapse only when what they
|
|
348
|
+
// would emit is byte-identical — including member names, targets, docs and
|
|
349
|
+
// pipes. References are already resolved to names at this point, so a
|
|
350
|
+
// difference anywhere in the tree shows up as different text.
|
|
351
|
+
const structBodies = new Map();
|
|
352
|
+
let aliased = 0;
|
|
328
353
|
// Set when any error carries CATEGORY_TRAIT, so the header only imports
|
|
329
354
|
// the category module when something actually uses it.
|
|
330
355
|
let usesCategories = false;
|
|
@@ -438,7 +463,6 @@ export const generateService = (model, spec) => {
|
|
|
438
463
|
fields.push(...inject.interfaceLines);
|
|
439
464
|
members.push(inject.structLine);
|
|
440
465
|
}
|
|
441
|
-
out.push(interfaceDecl(name, fields));
|
|
442
466
|
const struct = members.length
|
|
443
467
|
? `S.Struct({\n${members.join("\n")}\n})`
|
|
444
468
|
: `S.Struct({})`;
|
|
@@ -456,13 +480,42 @@ export const generateService = (model, spec) => {
|
|
|
456
480
|
: []),
|
|
457
481
|
];
|
|
458
482
|
const tail = pipes.map((p) => `.pipe(${p})`).join("");
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
483
|
+
// Shapes whose emitted body is byte-identical are one shape wearing
|
|
484
|
+
// many names. The docs pipelines generate a fresh copy of every nested
|
|
485
|
+
// shape per operation, so cloudflare's zero_trust carries 374 copies of
|
|
486
|
+
// `{ group?: unknown }` — one per operation x application type x
|
|
487
|
+
// include/exclude/require — and 72% of its 16,800 structures are
|
|
488
|
+
// redundant that way.
|
|
489
|
+
//
|
|
490
|
+
// Emit the body once and alias the rest to it. The public name is kept,
|
|
491
|
+
// so nothing about the surface changes; only the duplicate bodies go.
|
|
492
|
+
// Operation I/O is excluded: those carry the operation's Http trait and
|
|
493
|
+
// must never be merged onto one another.
|
|
494
|
+
const bodyKey = `${JSON.stringify(fields)}|${struct}${tail}`;
|
|
495
|
+
const canonical = structCtx.isOpIo
|
|
496
|
+
? undefined
|
|
497
|
+
: structBodies.get(bodyKey);
|
|
498
|
+
if (canonical !== undefined) {
|
|
499
|
+
out.push(`export type ${name} = ${canonical.name};`);
|
|
500
|
+
out.push(`export const ${name} = ${canonical.name};\n`);
|
|
501
|
+
// Later shapes referencing this one now render the canonical name,
|
|
502
|
+
// which is what lets their bodies collapse too.
|
|
503
|
+
canonicalId.set(id, canonical.id);
|
|
504
|
+
aliased++;
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
if (!structCtx.isOpIo) {
|
|
508
|
+
structBodies.set(bodyKey, { id, name });
|
|
509
|
+
}
|
|
510
|
+
out.push(interfaceDecl(name, fields));
|
|
511
|
+
out.push(suspendConst({
|
|
512
|
+
name,
|
|
513
|
+
pure,
|
|
514
|
+
multiline: true,
|
|
515
|
+
annotateIdentifier: true,
|
|
516
|
+
expr: `${struct}${tail}`,
|
|
517
|
+
}));
|
|
518
|
+
}
|
|
466
519
|
}
|
|
467
520
|
else if (d.type === "list") {
|
|
468
521
|
out.push(`export type ${name} = Array<${tsRefAt(d.member.target, id)}>;`);
|
|
@@ -535,16 +588,29 @@ export const generateService = (model, spec) => {
|
|
|
535
588
|
// item IS a whole response.
|
|
536
589
|
if (!itemsPath)
|
|
537
590
|
return tsRef(outputId);
|
|
538
|
-
let
|
|
591
|
+
let id = outputId;
|
|
592
|
+
// Whether the path crossed a list on the way down (`"edges.node"` on a
|
|
593
|
+
// Relay connection). When it did, the path itself is what fans out, so
|
|
594
|
+
// the value it lands on IS one item — it needn't be a list again.
|
|
595
|
+
let fannedOut = false;
|
|
539
596
|
for (const segment of itemsPath.split(".")) {
|
|
597
|
+
let def = shapes[id];
|
|
598
|
+
if (def?.type === "list") {
|
|
599
|
+
id = def.member.target;
|
|
600
|
+
def = shapes[id];
|
|
601
|
+
fannedOut = true;
|
|
602
|
+
}
|
|
540
603
|
if (def?.type !== "structure")
|
|
541
604
|
return undefined;
|
|
542
605
|
const info = memberInfos(def).find((m) => m.tsName === segment);
|
|
543
606
|
if (!info)
|
|
544
607
|
return undefined;
|
|
545
|
-
|
|
608
|
+
id = info.target;
|
|
546
609
|
}
|
|
547
|
-
|
|
610
|
+
const last = shapes[id];
|
|
611
|
+
if (last?.type === "list")
|
|
612
|
+
return tsRef(last.member.target);
|
|
613
|
+
return fannedOut ? tsRef(id) : undefined;
|
|
548
614
|
};
|
|
549
615
|
const emitOperation = spec.operation ??
|
|
550
616
|
((ctx) => {
|