@redocly/client-generator 0.0.0-snapshot.1784554531
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +506 -0
- package/lib/config-file.d.ts +8 -0
- package/lib/config-file.d.ts.map +1 -0
- package/lib/config-file.js +32 -0
- package/lib/config-file.js.map +1 -0
- package/lib/config.d.ts +63 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +2 -0
- package/lib/config.js.map +1 -0
- package/lib/emitters/auth.d.ts +14 -0
- package/lib/emitters/auth.d.ts.map +1 -0
- package/lib/emitters/auth.js +30 -0
- package/lib/emitters/auth.js.map +1 -0
- package/lib/emitters/client-assembly.d.ts +15 -0
- package/lib/emitters/client-assembly.d.ts.map +1 -0
- package/lib/emitters/client-assembly.js +299 -0
- package/lib/emitters/client-assembly.js.map +1 -0
- package/lib/emitters/descriptor.d.ts +22 -0
- package/lib/emitters/descriptor.d.ts.map +1 -0
- package/lib/emitters/descriptor.js +207 -0
- package/lib/emitters/descriptor.js.map +1 -0
- package/lib/emitters/emit-options.d.ts +71 -0
- package/lib/emitters/emit-options.d.ts.map +1 -0
- package/lib/emitters/emit-options.js +28 -0
- package/lib/emitters/emit-options.js.map +1 -0
- package/lib/emitters/faker.d.ts +11 -0
- package/lib/emitters/faker.d.ts.map +1 -0
- package/lib/emitters/faker.js +204 -0
- package/lib/emitters/faker.js.map +1 -0
- package/lib/emitters/identifier.d.ts +28 -0
- package/lib/emitters/identifier.d.ts.map +1 -0
- package/lib/emitters/identifier.js +94 -0
- package/lib/emitters/identifier.js.map +1 -0
- package/lib/emitters/inline-runtime.d.ts +11 -0
- package/lib/emitters/inline-runtime.d.ts.map +1 -0
- package/lib/emitters/inline-runtime.js +97 -0
- package/lib/emitters/inline-runtime.js.map +1 -0
- package/lib/emitters/jsdoc.d.ts +9 -0
- package/lib/emitters/jsdoc.d.ts.map +1 -0
- package/lib/emitters/jsdoc.js +83 -0
- package/lib/emitters/jsdoc.js.map +1 -0
- package/lib/emitters/mock.d.ts +22 -0
- package/lib/emitters/mock.d.ts.map +1 -0
- package/lib/emitters/mock.js +243 -0
- package/lib/emitters/mock.js.map +1 -0
- package/lib/emitters/operation-aliases.d.ts +27 -0
- package/lib/emitters/operation-aliases.d.ts.map +1 -0
- package/lib/emitters/operation-aliases.js +138 -0
- package/lib/emitters/operation-aliases.js.map +1 -0
- package/lib/emitters/operation-signature.d.ts +23 -0
- package/lib/emitters/operation-signature.d.ts.map +1 -0
- package/lib/emitters/operation-signature.js +34 -0
- package/lib/emitters/operation-signature.js.map +1 -0
- package/lib/emitters/operation-types.d.ts +32 -0
- package/lib/emitters/operation-types.d.ts.map +1 -0
- package/lib/emitters/operation-types.js +117 -0
- package/lib/emitters/operation-types.js.map +1 -0
- package/lib/emitters/operations.d.ts +39 -0
- package/lib/emitters/operations.d.ts.map +1 -0
- package/lib/emitters/operations.js +33 -0
- package/lib/emitters/operations.js.map +1 -0
- package/lib/emitters/pagination.d.ts +69 -0
- package/lib/emitters/pagination.d.ts.map +1 -0
- package/lib/emitters/pagination.js +223 -0
- package/lib/emitters/pagination.js.map +1 -0
- package/lib/emitters/runtime-sources.d.ts +16 -0
- package/lib/emitters/runtime-sources.d.ts.map +1 -0
- package/lib/emitters/runtime-sources.js +16 -0
- package/lib/emitters/runtime-sources.js.map +1 -0
- package/lib/emitters/sample.d.ts +27 -0
- package/lib/emitters/sample.d.ts.map +1 -0
- package/lib/emitters/sample.js +161 -0
- package/lib/emitters/sample.js.map +1 -0
- package/lib/emitters/setup-bake.d.ts +15 -0
- package/lib/emitters/setup-bake.d.ts.map +1 -0
- package/lib/emitters/setup-bake.js +65 -0
- package/lib/emitters/setup-bake.js.map +1 -0
- package/lib/emitters/sse.d.ts +10 -0
- package/lib/emitters/sse.d.ts.map +1 -0
- package/lib/emitters/sse.js +46 -0
- package/lib/emitters/sse.js.map +1 -0
- package/lib/emitters/support.d.ts +13 -0
- package/lib/emitters/support.d.ts.map +1 -0
- package/lib/emitters/support.js +21 -0
- package/lib/emitters/support.js.map +1 -0
- package/lib/emitters/swr.d.ts +10 -0
- package/lib/emitters/swr.d.ts.map +1 -0
- package/lib/emitters/swr.js +88 -0
- package/lib/emitters/swr.js.map +1 -0
- package/lib/emitters/tanstack-query.d.ts +11 -0
- package/lib/emitters/tanstack-query.d.ts.map +1 -0
- package/lib/emitters/tanstack-query.js +68 -0
- package/lib/emitters/tanstack-query.js.map +1 -0
- package/lib/emitters/transformers.d.ts +11 -0
- package/lib/emitters/transformers.d.ts.map +1 -0
- package/lib/emitters/transformers.js +334 -0
- package/lib/emitters/transformers.js.map +1 -0
- package/lib/emitters/ts.d.ts +40 -0
- package/lib/emitters/ts.d.ts.map +1 -0
- package/lib/emitters/ts.js +104 -0
- package/lib/emitters/ts.js.map +1 -0
- package/lib/emitters/type-guards.d.ts +21 -0
- package/lib/emitters/type-guards.d.ts.map +1 -0
- package/lib/emitters/type-guards.js +183 -0
- package/lib/emitters/type-guards.js.map +1 -0
- package/lib/emitters/types.d.ts +23 -0
- package/lib/emitters/types.d.ts.map +1 -0
- package/lib/emitters/types.js +127 -0
- package/lib/emitters/types.js.map +1 -0
- package/lib/emitters/wrapper-support.d.ts +40 -0
- package/lib/emitters/wrapper-support.d.ts.map +1 -0
- package/lib/emitters/wrapper-support.js +112 -0
- package/lib/emitters/wrapper-support.js.map +1 -0
- package/lib/emitters/zod.d.ts +13 -0
- package/lib/emitters/zod.d.ts.map +1 -0
- package/lib/emitters/zod.js +344 -0
- package/lib/emitters/zod.js.map +1 -0
- package/lib/errors.d.ts +4 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +7 -0
- package/lib/errors.js.map +1 -0
- package/lib/generators/anchor.d.ts +9 -0
- package/lib/generators/anchor.d.ts.map +1 -0
- package/lib/generators/anchor.js +10 -0
- package/lib/generators/anchor.js.map +1 -0
- package/lib/generators/index.d.ts +15 -0
- package/lib/generators/index.d.ts.map +1 -0
- package/lib/generators/index.js +62 -0
- package/lib/generators/index.js.map +1 -0
- package/lib/generators/mock.d.ts +9 -0
- package/lib/generators/mock.d.ts.map +1 -0
- package/lib/generators/mock.js +23 -0
- package/lib/generators/mock.js.map +1 -0
- package/lib/generators/resolve.d.ts +19 -0
- package/lib/generators/resolve.d.ts.map +1 -0
- package/lib/generators/resolve.js +68 -0
- package/lib/generators/resolve.js.map +1 -0
- package/lib/generators/sdk.d.ts +12 -0
- package/lib/generators/sdk.d.ts.map +1 -0
- package/lib/generators/sdk.js +26 -0
- package/lib/generators/sdk.js.map +1 -0
- package/lib/generators/swr.d.ts +15 -0
- package/lib/generators/swr.d.ts.map +1 -0
- package/lib/generators/swr.js +27 -0
- package/lib/generators/swr.js.map +1 -0
- package/lib/generators/tanstack-query.d.ts +17 -0
- package/lib/generators/tanstack-query.d.ts.map +1 -0
- package/lib/generators/tanstack-query.js +30 -0
- package/lib/generators/tanstack-query.js.map +1 -0
- package/lib/generators/transformers.d.ts +19 -0
- package/lib/generators/transformers.d.ts.map +1 -0
- package/lib/generators/transformers.js +28 -0
- package/lib/generators/transformers.js.map +1 -0
- package/lib/generators/types.d.ts +66 -0
- package/lib/generators/types.d.ts.map +1 -0
- package/lib/generators/types.js +2 -0
- package/lib/generators/types.js.map +1 -0
- package/lib/generators/zod.d.ts +14 -0
- package/lib/generators/zod.d.ts.map +1 -0
- package/lib/generators/zod.js +23 -0
- package/lib/generators/zod.js.map +1 -0
- package/lib/index.d.ts +29 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +119 -0
- package/lib/index.js.map +1 -0
- package/lib/intermediate-representation/build.d.ts +4 -0
- package/lib/intermediate-representation/build.d.ts.map +1 -0
- package/lib/intermediate-representation/build.js +761 -0
- package/lib/intermediate-representation/build.js.map +1 -0
- package/lib/intermediate-representation/model.d.ts +275 -0
- package/lib/intermediate-representation/model.d.ts.map +1 -0
- package/lib/intermediate-representation/model.js +5 -0
- package/lib/intermediate-representation/model.js.map +1 -0
- package/lib/intermediate-representation/normalize-swagger2.d.ts +10 -0
- package/lib/intermediate-representation/normalize-swagger2.d.ts.map +1 -0
- package/lib/intermediate-representation/normalize-swagger2.js +210 -0
- package/lib/intermediate-representation/normalize-swagger2.js.map +1 -0
- package/lib/intermediate-representation/sanitize-identifiers.d.ts +30 -0
- package/lib/intermediate-representation/sanitize-identifiers.d.ts.map +1 -0
- package/lib/intermediate-representation/sanitize-identifiers.js +153 -0
- package/lib/intermediate-representation/sanitize-identifiers.js.map +1 -0
- package/lib/loader.d.ts +4 -0
- package/lib/loader.d.ts.map +1 -0
- package/lib/loader.js +14 -0
- package/lib/loader.js.map +1 -0
- package/lib/plugin.d.ts +19 -0
- package/lib/plugin.d.ts.map +1 -0
- package/lib/plugin.js +41 -0
- package/lib/plugin.js.map +1 -0
- package/lib/runtime/auth.d.ts +15 -0
- package/lib/runtime/auth.d.ts.map +1 -0
- package/lib/runtime/auth.js +67 -0
- package/lib/runtime/auth.js.map +1 -0
- package/lib/runtime/create-client.d.ts +35 -0
- package/lib/runtime/create-client.d.ts.map +1 -0
- package/lib/runtime/create-client.js +215 -0
- package/lib/runtime/create-client.js.map +1 -0
- package/lib/runtime/errors.d.ts +11 -0
- package/lib/runtime/errors.d.ts.map +1 -0
- package/lib/runtime/errors.js +25 -0
- package/lib/runtime/errors.js.map +1 -0
- package/lib/runtime/index.d.ts +14 -0
- package/lib/runtime/index.d.ts.map +1 -0
- package/lib/runtime/index.js +24 -0
- package/lib/runtime/index.js.map +1 -0
- package/lib/runtime/multipart.d.ts +9 -0
- package/lib/runtime/multipart.d.ts.map +1 -0
- package/lib/runtime/multipart.js +31 -0
- package/lib/runtime/multipart.js.map +1 -0
- package/lib/runtime/paginate.d.ts +36 -0
- package/lib/runtime/paginate.d.ts.map +1 -0
- package/lib/runtime/paginate.js +99 -0
- package/lib/runtime/paginate.js.map +1 -0
- package/lib/runtime/parse.d.ts +9 -0
- package/lib/runtime/parse.d.ts.map +1 -0
- package/lib/runtime/parse.js +37 -0
- package/lib/runtime/parse.js.map +1 -0
- package/lib/runtime/retry.d.ts +15 -0
- package/lib/runtime/retry.d.ts.map +1 -0
- package/lib/runtime/retry.js +51 -0
- package/lib/runtime/retry.js.map +1 -0
- package/lib/runtime/send.d.ts +31 -0
- package/lib/runtime/send.d.ts.map +1 -0
- package/lib/runtime/send.js +138 -0
- package/lib/runtime/send.js.map +1 -0
- package/lib/runtime/setup.d.ts +11 -0
- package/lib/runtime/setup.d.ts.map +1 -0
- package/lib/runtime/setup.js +13 -0
- package/lib/runtime/setup.js.map +1 -0
- package/lib/runtime/sse.d.ts +21 -0
- package/lib/runtime/sse.d.ts.map +1 -0
- package/lib/runtime/sse.js +163 -0
- package/lib/runtime/sse.js.map +1 -0
- package/lib/runtime/types.d.ts +232 -0
- package/lib/runtime/types.d.ts.map +1 -0
- package/lib/runtime/types.js +9 -0
- package/lib/runtime/types.js.map +1 -0
- package/lib/runtime/url.d.ts +25 -0
- package/lib/runtime/url.d.ts.map +1 -0
- package/lib/runtime/url.js +97 -0
- package/lib/runtime/url.js.map +1 -0
- package/lib/runtime-contract.d.ts +27 -0
- package/lib/runtime-contract.d.ts.map +1 -0
- package/lib/runtime-contract.js +14 -0
- package/lib/runtime-contract.js.map +1 -0
- package/lib/types.d.ts +118 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { OperationModel } from '../intermediate-representation/model.js';
|
|
2
|
+
import { ts } from './ts.js';
|
|
3
|
+
import { type DateType } from './types.js';
|
|
4
|
+
/** Whether an operation streams Server-Sent Events. */
|
|
5
|
+
export declare function isSseOp(op: OperationModel): boolean;
|
|
6
|
+
/** The TS type of a streamed event payload (`string` when no schema is declared). */
|
|
7
|
+
export declare function sseEventType(op: OperationModel, dateType: DateType): ts.TypeNode;
|
|
8
|
+
/** Whether the streamed `data:` payload should be `JSON.parse`d (`'json'`) or passed raw (`'text'`). */
|
|
9
|
+
export declare function sseDataKind(op: OperationModel): 'json' | 'text';
|
|
10
|
+
//# sourceMappingURL=sse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/emitters/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAc7D,uDAAuD;AACvD,wBAAgB,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAEnD;AAWD,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAKhF;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,CAW/D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ts } from './ts.js';
|
|
2
|
+
import { schemaToTypeNode } from './types.js';
|
|
3
|
+
const { factory } = ts;
|
|
4
|
+
/** The media type that marks an operation as a Server-Sent Events stream. */
|
|
5
|
+
const SSE_CONTENT_TYPE = 'text/event-stream';
|
|
6
|
+
/** The event-stream success response of an operation, if it declares one. */
|
|
7
|
+
function sseResponse(op) {
|
|
8
|
+
return op.successResponses.find((r) => r.contentType.split(';')[0].trim().toLowerCase() === SSE_CONTENT_TYPE);
|
|
9
|
+
}
|
|
10
|
+
/** Whether an operation streams Server-Sent Events. */
|
|
11
|
+
export function isSseOp(op) {
|
|
12
|
+
return sseResponse(op) !== undefined;
|
|
13
|
+
}
|
|
14
|
+
/** The per-event schema: `itemSchema` → the response `schema` → undefined (typeless slots skipped). */
|
|
15
|
+
function eventSchema(op) {
|
|
16
|
+
const r = sseResponse(op);
|
|
17
|
+
if (!r)
|
|
18
|
+
return undefined;
|
|
19
|
+
if (r.itemSchema && r.itemSchema.kind !== 'unknown')
|
|
20
|
+
return r.itemSchema;
|
|
21
|
+
if (r.schema.kind !== 'unknown')
|
|
22
|
+
return r.schema;
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
/** The TS type of a streamed event payload (`string` when no schema is declared). */
|
|
26
|
+
export function sseEventType(op, dateType) {
|
|
27
|
+
const schema = eventSchema(op);
|
|
28
|
+
return schema
|
|
29
|
+
? schemaToTypeNode(schema, dateType)
|
|
30
|
+
: factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
|
|
31
|
+
}
|
|
32
|
+
/** Whether the streamed `data:` payload should be `JSON.parse`d (`'json'`) or passed raw (`'text'`). */
|
|
33
|
+
export function sseDataKind(op) {
|
|
34
|
+
const schema = eventSchema(op);
|
|
35
|
+
if (!schema)
|
|
36
|
+
return 'text';
|
|
37
|
+
return schema.kind === 'object' ||
|
|
38
|
+
schema.kind === 'ref' ||
|
|
39
|
+
schema.kind === 'array' ||
|
|
40
|
+
schema.kind === 'record' ||
|
|
41
|
+
schema.kind === 'union' ||
|
|
42
|
+
schema.kind === 'intersection'
|
|
43
|
+
? 'json'
|
|
44
|
+
: 'text';
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=sse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/emitters/sse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAiB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAEvB,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,6EAA6E;AAC7E,SAAS,WAAW,CAAC,EAAkB;IACrC,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAC7E,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,OAAO,CAAC,EAAkB;IACxC,OAAO,WAAW,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;AACvC,CAAC;AAED,uGAAuG;AACvG,SAAS,WAAW,CAAC,EAAkB;IACrC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,UAAU,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,EAAkB,EAAE,QAAkB;IACjE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,MAAM;QACX,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC;QACpC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACjE,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,WAAW,CAAC,EAAkB;IAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC7B,MAAM,CAAC,IAAI,KAAK,KAAK;QACrB,MAAM,CAAC,IAAI,KAAK,OAAO;QACvB,MAAM,CAAC,IAAI,KAAK,QAAQ;QACxB,MAAM,CAAC,IAAI,KAAK,OAAO;QACvB,MAAM,CAAC,IAAI,KAAK,cAAc;QAC9B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upper-case the first character of an operation name. We don't normalize the
|
|
3
|
+
* rest because almost every spec uses camelCase or PascalCase, and names that
|
|
4
|
+
* contain digits or `_` are passed through unchanged — the user named them that
|
|
5
|
+
* way for a reason.
|
|
6
|
+
*
|
|
7
|
+
* `op.name` reaches here already sanitized into a non-empty, valid TS identifier
|
|
8
|
+
* by the IR builder (see `intermediate-representation/sanitize-identifiers.ts`), so no empty-string or
|
|
9
|
+
* unsafe-character guard is needed.
|
|
10
|
+
*/
|
|
11
|
+
export declare function pascalCase(name: string): string;
|
|
12
|
+
export declare function splitLines(text: string): string[];
|
|
13
|
+
//# sourceMappingURL=support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/emitters/support.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKjD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Low-level text helpers shared across the emitters. Private to `emitters/`.
|
|
2
|
+
/**
|
|
3
|
+
* Upper-case the first character of an operation name. We don't normalize the
|
|
4
|
+
* rest because almost every spec uses camelCase or PascalCase, and names that
|
|
5
|
+
* contain digits or `_` are passed through unchanged — the user named them that
|
|
6
|
+
* way for a reason.
|
|
7
|
+
*
|
|
8
|
+
* `op.name` reaches here already sanitized into a non-empty, valid TS identifier
|
|
9
|
+
* by the IR builder (see `intermediate-representation/sanitize-identifiers.ts`), so no empty-string or
|
|
10
|
+
* unsafe-character guard is needed.
|
|
11
|
+
*/
|
|
12
|
+
export function pascalCase(name) {
|
|
13
|
+
return name[0].toUpperCase() + name.slice(1);
|
|
14
|
+
}
|
|
15
|
+
export function splitLines(text) {
|
|
16
|
+
return text
|
|
17
|
+
.replace(/\r\n/g, '\n')
|
|
18
|
+
.split('\n')
|
|
19
|
+
.map((line) => line.trimEnd());
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/emitters/support.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI;SACR,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;SACtB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ApiModel } from '../intermediate-representation/model.js';
|
|
2
|
+
export type SwrOptions = {
|
|
3
|
+
/** Import specifier for the sdk entry the operation functions/types live in. */
|
|
4
|
+
sdkModule: string;
|
|
5
|
+
/** How the sdk function takes its inputs — must match the generated client. */
|
|
6
|
+
argsStyle: 'flat' | 'grouped';
|
|
7
|
+
};
|
|
8
|
+
/** Render the full SWR module source. `''` when there are no wrappable operations. */
|
|
9
|
+
export declare function renderSwrModule(model: ApiModel, opts: SwrOptions): string;
|
|
10
|
+
//# sourceMappingURL=swr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swr.d.ts","sourceRoot":"","sources":["../../src/emitters/swr.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,yCAAyC,CAAC;AAsBxF,MAAM,MAAM,UAAU,GAAG;IACvB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAIzE"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Emits an idiomatic SWR module wrapping the sdk operation functions. Per query
|
|
2
|
+
// operation (GET/HEAD) a `<op>Key(vars)` tuple factory + a `use<Op>(vars, init?)`
|
|
3
|
+
// hook returning `useSWR(key, fetcher)`; per mutation (everything else) a
|
|
4
|
+
// `use<Op>()` hook returning `useSWRMutation(key, (key, { arg }) => <op>(arg))`.
|
|
5
|
+
// The fetcher forwards args per the configured args style (grouped `<op>(vars, init)`
|
|
6
|
+
// or flat `<op>(vars.petId, …, init)`) via the shared `operationSignature`, so the
|
|
7
|
+
// call type-checks against the generated sdk.
|
|
8
|
+
// `swr`/`swr/mutation` are the consumer's peer; the sdk stays dependency-free.
|
|
9
|
+
// AST-native via `ts.factory`.
|
|
10
|
+
import { pascalCase } from './support.js';
|
|
11
|
+
import { arrow, constArray, exportConstStatement as exportConst, printStatements, ts, } from './ts.js';
|
|
12
|
+
import { hasInputs, initParam, isQuery, sdkCall, sdkNamedImport, variablesName, varsParam, wrappableOperations, } from './wrapper-support.js';
|
|
13
|
+
const { factory } = ts;
|
|
14
|
+
/** Render the full SWR module source. `''` when there are no wrappable operations. */
|
|
15
|
+
export function renderSwrModule(model, opts) {
|
|
16
|
+
const ops = wrappableOperations(model, 'swr');
|
|
17
|
+
if (ops.length === 0)
|
|
18
|
+
return '';
|
|
19
|
+
return printStatements(swrStatements(ops, opts));
|
|
20
|
+
}
|
|
21
|
+
/** The SWR module statements: the import header followed by per-op hooks. */
|
|
22
|
+
function swrStatements(ops, opts) {
|
|
23
|
+
const hasQuery = ops.some(isQuery);
|
|
24
|
+
const hasMutation = ops.some((op) => !isQuery(op));
|
|
25
|
+
const statements = [];
|
|
26
|
+
for (const op of ops) {
|
|
27
|
+
statements.push(...(isQuery(op) ? queryStatements(op, opts) : [mutationStatement(op, opts)]));
|
|
28
|
+
}
|
|
29
|
+
return [...importHeader(ops, opts, hasQuery, hasMutation), ...statements];
|
|
30
|
+
}
|
|
31
|
+
/** An exported `function use<Op>(<params>) { <body> }` declaration. */
|
|
32
|
+
function exportHook(op, params, ret) {
|
|
33
|
+
const name = `use${pascalCase(op.name)}`;
|
|
34
|
+
return factory.createFunctionDeclaration([factory.createModifier(ts.SyntaxKind.ExportKeyword)], undefined, name, undefined, params, undefined, factory.createBlock([factory.createReturnStatement(ret)], true));
|
|
35
|
+
}
|
|
36
|
+
/** A query op's `<op>Key` factory + `use<Op>` hook calling `useSWR`. */
|
|
37
|
+
function queryStatements(op, opts) {
|
|
38
|
+
const inputs = hasInputs(op);
|
|
39
|
+
const keyId = factory.createStringLiteral(op.name);
|
|
40
|
+
const keyParams = inputs ? [varsParam(op)] : [];
|
|
41
|
+
const keyElements = inputs ? [keyId, factory.createIdentifier('vars')] : [keyId];
|
|
42
|
+
const key = exportConst(`${op.name}Key`, arrow(keyParams, constArray(keyElements)));
|
|
43
|
+
const keyCall = factory.createCallExpression(factory.createIdentifier(`${op.name}Key`), undefined, inputs ? [factory.createIdentifier('vars')] : []);
|
|
44
|
+
const useSwr = factory.createCallExpression(factory.createIdentifier('useSWR'), undefined, [
|
|
45
|
+
keyCall,
|
|
46
|
+
arrow([], sdkCall(op, opts.argsStyle, 'vars', true)),
|
|
47
|
+
]);
|
|
48
|
+
const params = inputs ? [varsParam(op), initParam()] : [initParam()];
|
|
49
|
+
return [key, exportHook(op, params, useSwr)];
|
|
50
|
+
}
|
|
51
|
+
/** A mutation op's `use<Op>` hook calling `useSWRMutation`. */
|
|
52
|
+
function mutationStatement(op, opts) {
|
|
53
|
+
const inputs = hasInputs(op);
|
|
54
|
+
const key = factory.createStringLiteral(op.name);
|
|
55
|
+
// `(_key: string, { arg }: { arg: <Op>Variables }) => <op>(…arg)` when the op has inputs;
|
|
56
|
+
// a no-arg `() => <op>()` when it has none (`arg` would be unused).
|
|
57
|
+
const trigger = inputs
|
|
58
|
+
? triggerWithArg(op, opts)
|
|
59
|
+
: arrow([], sdkCall(op, opts.argsStyle, 'arg', false));
|
|
60
|
+
const useSwrMutation = factory.createCallExpression(factory.createIdentifier('useSWRMutation'), undefined, [key, trigger]);
|
|
61
|
+
return exportHook(op, [], useSwrMutation);
|
|
62
|
+
}
|
|
63
|
+
/** `(_key: string, { arg }: { arg: <Op>Variables }) => <op>(…arg)`. */
|
|
64
|
+
function triggerWithArg(op, opts) {
|
|
65
|
+
const keyParam = factory.createParameterDeclaration(undefined, undefined, '_key', undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
66
|
+
const argParam = factory.createParameterDeclaration(undefined, undefined, factory.createObjectBindingPattern([factory.createBindingElement(undefined, undefined, 'arg')]), undefined, factory.createTypeLiteralNode([
|
|
67
|
+
factory.createPropertySignature(undefined, 'arg', undefined, factory.createTypeReferenceNode(variablesName(op))),
|
|
68
|
+
]));
|
|
69
|
+
return arrow([keyParam, argParam], sdkCall(op, opts.argsStyle, 'arg', false));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The import header: `useSWR` from `swr` (when any query op), `useSWRMutation` from
|
|
73
|
+
* `swr/mutation` (when any mutation op), then the shared sdk named import.
|
|
74
|
+
*/
|
|
75
|
+
function importHeader(ops, opts, hasQuery, hasMutation) {
|
|
76
|
+
const imports = [];
|
|
77
|
+
if (hasQuery)
|
|
78
|
+
imports.push(defaultImport('useSWR', 'swr'));
|
|
79
|
+
if (hasMutation)
|
|
80
|
+
imports.push(defaultImport('useSWRMutation', 'swr/mutation'));
|
|
81
|
+
imports.push(sdkNamedImport(ops, opts.sdkModule, hasQuery));
|
|
82
|
+
return imports;
|
|
83
|
+
}
|
|
84
|
+
/** `import <name> from "<module>";` (default import). */
|
|
85
|
+
function defaultImport(name, module) {
|
|
86
|
+
return factory.createImportDeclaration(undefined, factory.createImportClause(false, factory.createIdentifier(name), undefined), factory.createStringLiteral(module));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=swr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swr.js","sourceRoot":"","sources":["../../src/emitters/swr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ApiModel } from '../intermediate-representation/model.js';
|
|
2
|
+
export type TanstackOptions = {
|
|
3
|
+
argsStyle: 'flat' | 'grouped';
|
|
4
|
+
/** Import specifier for the sdk entry the operation functions/types live in. */
|
|
5
|
+
sdkModule: string;
|
|
6
|
+
/** TanStack adapter to import `queryOptions` from (`@tanstack/${framework}-query`). */
|
|
7
|
+
framework: 'react' | 'vue' | 'svelte' | 'solid';
|
|
8
|
+
};
|
|
9
|
+
/** Render the full TanStack Query module source. `''` when there are no wrappable operations. */
|
|
10
|
+
export declare function renderTanstackModule(model: ApiModel, opts: TanstackOptions): string;
|
|
11
|
+
//# sourceMappingURL=tanstack-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-query.d.ts","sourceRoot":"","sources":["../../src/emitters/tanstack-query.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,yCAAyC,CAAC;AAoBxF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;CACjD,CAAC;AAEF,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,CAInF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Emits an idiomatic TanStack Query v5 (React) module wrapping the sdk operation
|
|
2
|
+
// functions. Per query operation (GET/HEAD) a `<op>QueryKey(vars)` +
|
|
3
|
+
// `<op>Options(vars, init?)` (`queryOptions({ queryKey, queryFn })`); per mutation
|
|
4
|
+
// (everything else) a `<op>Mutation()` (`{ mutationKey, mutationFn }`). Each
|
|
5
|
+
// factory forwards to the sdk function per the configured args style — grouped
|
|
6
|
+
// (`getPet(vars, init)`) or flat (`getPet(vars.petId, vars.params, …, init)`),
|
|
7
|
+
// matching `operations.ts` positional order so the call type-checks against the
|
|
8
|
+
// generated sdk. AST-native via `ts.factory`.
|
|
9
|
+
import { arrow, constArray, exportConstStatement as exportConst, printStatements, ts, } from './ts.js';
|
|
10
|
+
import { hasInputs, initParam, isQuery, sdkCall, sdkNamedImport, varsParam, wrappableOperations, } from './wrapper-support.js';
|
|
11
|
+
const { factory } = ts;
|
|
12
|
+
/** Render the full TanStack Query module source. `''` when there are no wrappable operations. */
|
|
13
|
+
export function renderTanstackModule(model, opts) {
|
|
14
|
+
const ops = wrappableOperations(model, 'tanstack-query');
|
|
15
|
+
if (ops.length === 0)
|
|
16
|
+
return '';
|
|
17
|
+
return printStatements(tanstackStatements(ops, opts));
|
|
18
|
+
}
|
|
19
|
+
/** The TanStack module statements: the import header followed by per-op factories. */
|
|
20
|
+
function tanstackStatements(ops, opts) {
|
|
21
|
+
const hasQuery = ops.some(isQuery);
|
|
22
|
+
const statements = [];
|
|
23
|
+
for (const op of ops) {
|
|
24
|
+
statements.push(...(isQuery(op) ? queryStatements(op, opts) : [mutationStatement(op, opts)]));
|
|
25
|
+
}
|
|
26
|
+
return [...importHeader(ops, opts, hasQuery), ...statements];
|
|
27
|
+
}
|
|
28
|
+
/** A query op's `<op>QueryKey` + `<op>Options` statements. */
|
|
29
|
+
function queryStatements(op, opts) {
|
|
30
|
+
const inputs = hasInputs(op);
|
|
31
|
+
const keyId = factory.createStringLiteral(op.name);
|
|
32
|
+
const keyParams = inputs ? [varsParam(op)] : [];
|
|
33
|
+
const keyElements = inputs ? [keyId, factory.createIdentifier('vars')] : [keyId];
|
|
34
|
+
const queryKey = exportConst(`${op.name}QueryKey`, arrow(keyParams, constArray(keyElements)));
|
|
35
|
+
const keyCall = factory.createCallExpression(factory.createIdentifier(`${op.name}QueryKey`), undefined, inputs ? [factory.createIdentifier('vars')] : []);
|
|
36
|
+
const queryOptionsCall = factory.createCallExpression(factory.createIdentifier('queryOptions'), undefined, [
|
|
37
|
+
factory.createObjectLiteralExpression([
|
|
38
|
+
factory.createPropertyAssignment('queryKey', keyCall),
|
|
39
|
+
factory.createPropertyAssignment('queryFn', arrow([], sdkCall(op, opts.argsStyle, 'vars', true))),
|
|
40
|
+
], true),
|
|
41
|
+
]);
|
|
42
|
+
const optionsParams = inputs ? [varsParam(op), initParam()] : [initParam()];
|
|
43
|
+
const options = exportConst(`${op.name}Options`, arrow(optionsParams, queryOptionsCall));
|
|
44
|
+
return [queryKey, options];
|
|
45
|
+
}
|
|
46
|
+
/** A mutation op's `<op>Mutation` statement. */
|
|
47
|
+
function mutationStatement(op, opts) {
|
|
48
|
+
const inputs = hasInputs(op);
|
|
49
|
+
const mutationFn = arrow(inputs ? [varsParam(op)] : [], sdkCall(op, opts.argsStyle, 'vars', false));
|
|
50
|
+
const obj = factory.createObjectLiteralExpression([
|
|
51
|
+
factory.createPropertyAssignment('mutationKey', constArray([factory.createStringLiteral(op.name)])),
|
|
52
|
+
factory.createPropertyAssignment('mutationFn', mutationFn),
|
|
53
|
+
], true);
|
|
54
|
+
// Wrap in parens so the arrow body is an object literal, not a block.
|
|
55
|
+
return exportConst(`${op.name}Mutation`, arrow([], factory.createParenthesizedExpression(obj)));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The import header: `queryOptions` from `@tanstack/${framework}-query` (when any
|
|
59
|
+
* query op), then the shared sdk named import.
|
|
60
|
+
*/
|
|
61
|
+
function importHeader(ops, opts, hasQuery) {
|
|
62
|
+
const tanstack = factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
63
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier('queryOptions')),
|
|
64
|
+
])), factory.createStringLiteral(`@tanstack/${opts.framework}-query`));
|
|
65
|
+
const sdkImport = sdkNamedImport(ops, opts.sdkModule, hasQuery);
|
|
66
|
+
return hasQuery ? [tanstack, sdkImport] : [sdkImport];
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=tanstack-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-query.js","sourceRoot":"","sources":["../../src/emitters/tanstack-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ApiModel } from '../intermediate-representation/model.js';
|
|
2
|
+
/**
|
|
3
|
+
* Render the transformers module. Emits one `transform<Name>` per named schema
|
|
4
|
+
* that carries a date field; `''` when none do. `opts.sdkModule` is the import
|
|
5
|
+
* specifier the schema TYPES are pulled from (the transformers call each other
|
|
6
|
+
* as siblings, so only the types need importing).
|
|
7
|
+
*/
|
|
8
|
+
export declare function renderTransformersModule(model: ApiModel, opts: {
|
|
9
|
+
sdkModule: string;
|
|
10
|
+
}): string;
|
|
11
|
+
//# sourceMappingURL=transformers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/emitters/transformers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,yCAAyC,CAAC;AAqbjD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAU7F"}
|