typespec-typescript-emitter 0.3.4 → 0.4.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/.github/workflows/create-release.yml +1 -0
- package/CHANGELOG.md +13 -22
- package/README.md +3 -3
- package/dist/src/emit_routes.js +3 -3
- package/dist/src/emit_routes.js.map +1 -1
- package/dist/src/emitter.js +2 -0
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/lib.d.ts +1 -0
- package/dist/src/lib.js +1 -0
- package/dist/src/lib.js.map +1 -1
- package/package.json +3 -3
- package/src/emit_routes.ts +3 -3
- package/src/emitter.ts +3 -0
- package/src/lib.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,56 +1,47 @@
|
|
|
1
|
-
|
|
1
|
+
# [0.4.0](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.5...v0.4.0) (2025-02-25)
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
###
|
|
4
|
+
### Features
|
|
5
5
|
|
|
6
|
-
*
|
|
7
|
-
* model typeguard resolution if spread over mutliple files ([eab6064](https://github.com/crowbait/typespec-typescript-emitter/commit/eab606421c930d5c9a747ffbd0d1a0707608374b))
|
|
8
|
-
* support recursive records ([c0bad3f](https://github.com/crowbait/typespec-typescript-emitter/commit/c0bad3f15f2f0913ef99129ce17c53a17fd0d125)), closes [#3](https://github.com/crowbait/typespec-typescript-emitter/issues/3)
|
|
6
|
+
* option to emit relative URLs in routes object ([be50613](https://github.com/crowbait/typespec-typescript-emitter/commit/be50613ac94550899805faf2555b3f407d88be33))
|
|
9
7
|
|
|
10
8
|
|
|
11
9
|
|
|
12
|
-
## [0.3.
|
|
10
|
+
## [0.3.5](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.4...v0.3.5) (2025-02-23)
|
|
13
11
|
|
|
14
12
|
|
|
15
13
|
### Bug Fixes
|
|
16
14
|
|
|
17
|
-
*
|
|
15
|
+
* ci (no skip on chore-only) ([75b2e5d](https://github.com/crowbait/typespec-typescript-emitter/commit/75b2e5d4346fd17de5c7baf689de6e4cac259542))
|
|
18
16
|
|
|
19
17
|
|
|
20
18
|
|
|
21
|
-
## [0.3.
|
|
19
|
+
## [0.3.4](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.3...v0.3.4) (2025-01-03)
|
|
22
20
|
|
|
23
21
|
|
|
24
22
|
### Bug Fixes
|
|
25
23
|
|
|
26
|
-
*
|
|
24
|
+
* model resolution if spread over multiple files ([bd34d4e](https://github.com/crowbait/typespec-typescript-emitter/commit/bd34d4ee7a7cc83c3c233ffd3ae9086db318be51))
|
|
25
|
+
* model typeguard resolution if spread over mutliple files ([eab6064](https://github.com/crowbait/typespec-typescript-emitter/commit/eab606421c930d5c9a747ffbd0d1a0707608374b))
|
|
26
|
+
* support recursive records ([c0bad3f](https://github.com/crowbait/typespec-typescript-emitter/commit/c0bad3f15f2f0913ef99129ce17c53a17fd0d125)), closes [#3](https://github.com/crowbait/typespec-typescript-emitter/issues/3)
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
## [0.3.
|
|
30
|
+
## [0.3.3](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.2...v0.3.3) (2025-01-02)
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
### Bug Fixes
|
|
34
34
|
|
|
35
|
-
*
|
|
35
|
+
* parsing of Record-type models ([b6e1dd9](https://github.com/crowbait/typespec-typescript-emitter/commit/b6e1dd91b94e39ad657d584f49051bc8e9e83608)), closes [#2](https://github.com/crowbait/typespec-typescript-emitter/issues/2)
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
## [0.3.2](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.1...v0.3.2) (2025-01-02)
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
### Bug Fixes
|
|
43
43
|
|
|
44
|
-
*
|
|
45
|
-
* remove useless routes interface ([b828ee9](https://github.com/crowbait/typespec-typescript-emitter/commit/b828ee994743c7fbbb313adb042088057f59466f))
|
|
46
|
-
* typo in typeguards (double space) ([253aacf](https://github.com/crowbait/typespec-typescript-emitter/commit/253aacff2859e58c659a1357a0d7e16088520f6f))
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
### Features
|
|
50
|
-
|
|
51
|
-
* support for unions and nested models in typeguards ([9292107](https://github.com/crowbait/typespec-typescript-emitter/commit/92921073ad83a1cec74d7b7595cb178120cdc32b))
|
|
52
|
-
* typeguards ([8dc3eef](https://github.com/crowbait/typespec-typescript-emitter/commit/8dc3eef62c4d9bc0df71d7878ada52254ed1475a))
|
|
53
|
-
* typeguards in routes ([010388a](https://github.com/crowbait/typespec-typescript-emitter/commit/010388a2ff1c0c53ce34828e4197e31ada745e83))
|
|
44
|
+
* dashes in enum names ([79926dd](https://github.com/crowbait/typespec-typescript-emitter/commit/79926dd6c1e437687ab84943c3dade74a3d0498e)), closes [#1](https://github.com/crowbait/typespec-typescript-emitter/issues/1)
|
|
54
45
|
|
|
55
46
|
|
|
56
47
|
|
package/README.md
CHANGED
|
@@ -45,6 +45,7 @@ options:
|
|
|
45
45
|
enable-types: true
|
|
46
46
|
enable-typeguards: false
|
|
47
47
|
enable-routes: false
|
|
48
|
+
relative-routes: false
|
|
48
49
|
typeguards-in-routes: true
|
|
49
50
|
```
|
|
50
51
|
|
|
@@ -55,6 +56,7 @@ The following options are available:
|
|
|
55
56
|
- `enable-types` (default: true): enables output of TypeScript types.
|
|
56
57
|
- `enable-typeguards` (default: false): enables output of typeguards, *IF* type-output is enabled.
|
|
57
58
|
- `enable-routes` (default: false): enables output of the HTTP-routes object.
|
|
59
|
+
- `relative-routes` (default: false): emits URLs in the routes object relative to the server's address (as opposed to a fully qualified URL when set to false).
|
|
58
60
|
- `typeguards-in-routes` (default: false) **Experimental**: generates or references typeguards in the routes object, *IF* types, typeguards *and* routes are enabled.
|
|
59
61
|
|
|
60
62
|
## Types emitter
|
|
@@ -152,9 +154,7 @@ model Derived2 {...OmitProperties<Demo, "prop1">};
|
|
|
152
154
|
**This emitter depends on your use of the `TypeSpec.Http` library**.
|
|
153
155
|
|
|
154
156
|
If you're using `TypeSpec.Http` to define your API routes and endpoints, this library offers an emitter to export a `routes` object.
|
|
155
|
-
|
|
156
|
-
It is strongly advised to define a `server`, to make URL generation more meaningful. The way this is implemented however, will currently only work well for 'simpler' projects using one root domain.
|
|
157
|
-
|
|
157
|
+
The way this is implemented, it will currently only work well for 'simpler' projects using one root domain.
|
|
158
158
|
Just as the types emitter, this emitter will also preserve docs as JSDoc-style comments.
|
|
159
159
|
|
|
160
160
|
Example:
|
package/dist/src/emit_routes.js
CHANGED
|
@@ -5,7 +5,7 @@ import autogenerateWarning from "./helper_autogenerateWarning.js";
|
|
|
5
5
|
const emitRoutes = (context, namespace, rootServer, options, knownTypeguards) => {
|
|
6
6
|
const rootNode = `routes_${context.options["root-namespace"]}`;
|
|
7
7
|
const imports = [];
|
|
8
|
-
let out = autogenerateWarning
|
|
8
|
+
let out = `/* eslint-disable */\n${autogenerateWarning}`;
|
|
9
9
|
out += `const ${rootNode} = {\n`;
|
|
10
10
|
const traverseNamespace = (n, nestLevel) => {
|
|
11
11
|
// operations
|
|
@@ -28,11 +28,11 @@ const emitRoutes = (context, namespace, rootServer, options, knownTypeguards) =>
|
|
|
28
28
|
.map((p) => `${p.name}: string`)
|
|
29
29
|
.forEach((p) => (out = out.addLine(p, nestLevel + 3)));
|
|
30
30
|
let fn = "}) => ";
|
|
31
|
-
fn += pathParams.reduce((sum, cur) => sum.replaceAll(`{${cur.name}}`, `${"$"}{p.${cur.name}}`), `\`${rootServer}${httpOp[0].path}\`,`);
|
|
31
|
+
fn += pathParams.reduce((sum, cur) => sum.replaceAll(`{${cur.name}}`, `${"$"}{p.${cur.name}}`), `\`${!options["relative-routes"] ? rootServer : ""}${httpOp[0].path}\`,`);
|
|
32
32
|
out = out.addLine(fn, nestLevel + 2);
|
|
33
33
|
}
|
|
34
34
|
else {
|
|
35
|
-
out = out.addLine(`getUrl: () => '${rootServer}${httpOp[0].path}',`, nestLevel + 2);
|
|
35
|
+
out = out.addLine(`getUrl: () => '${!options["relative-routes"] ? rootServer : ""}${httpOp[0].path}',`, nestLevel + 2);
|
|
36
36
|
}
|
|
37
37
|
// auth
|
|
38
38
|
let auth = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit_routes.js","sourceRoot":"","sources":["../../src/emit_routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,GAIP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAY,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,mBAAmB,MAAM,iCAAiC,CAAC;AAGlE,MAAM,UAAU,GAAG,CACjB,OAAoB,EACpB,SAAoB,EACpB,UAAkB,EAClB,OAAuB,EACvB,eAA0D,EAClD,EAAE;IACV,MAAM,QAAQ,GAAG,UAAU,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,GAAG,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"emit_routes.js","sourceRoot":"","sources":["../../src/emit_routes.ts"],"names":[],"mappings":"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"}
|
package/dist/src/emitter.js
CHANGED
|
@@ -18,6 +18,8 @@ export async function $onEmit(context) {
|
|
|
18
18
|
(context.options["enable-typeguards"] ?? false) &&
|
|
19
19
|
(context.options["enable-routes"] ?? false) &&
|
|
20
20
|
(context.options["typeguards-in-routes"] ?? false),
|
|
21
|
+
"relative-routes": (context.options["enable-routes"] ?? false) &&
|
|
22
|
+
(context.options["relative-routes"] ?? false),
|
|
21
23
|
};
|
|
22
24
|
console.log(`Writing routes to ${options["out-dir"]}`);
|
|
23
25
|
let targetNamespaceFound = false;
|
package/dist/src/emitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,SAAS,MAAM,iBAAiB,CAAC;AASxC,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAEzB,GAAW,EACX,IAAa,EACb,SAAmB;IAEnB,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAmB;YAC9B,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACnD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,gBAAgB;YACjE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI;YACvD,mBAAmB,EACjB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;gBACzC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC;YACjD,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,KAAK;YAC1D,sBAAsB,EACpB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;gBACzC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC;gBAC/C,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC;gBAC3C,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface EmitterOptions {
|
|
|
5
5
|
"enable-typeguards": boolean;
|
|
6
6
|
"enable-routes": boolean;
|
|
7
7
|
"typeguards-in-routes": boolean;
|
|
8
|
+
"relative-routes": boolean;
|
|
8
9
|
}
|
|
9
10
|
export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
|
|
10
11
|
[code: string]: import("@typespec/compiler").DiagnosticMessages;
|
package/dist/src/lib.js
CHANGED
package/dist/src/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;AAY3E,MAAM,oBAAoB,GAAmC;IAC3D,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE;QACtD,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACnC,mBAAmB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACxC,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACpC,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3C,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KACvC;IACD,QAAQ,EAAE,CAAC,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;IACxC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,EAAE;IACf,OAAO,EAAE;QACP,OAAO,EAAE,oBAAoB;KAC9B;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typespec-typescript-emitter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A TypeSpec library providing an emitter that generates TypeScript types and a structured routes object for robust importing",
|
|
5
5
|
"homepage": "https://github.com/crowbait/typespec-typescript-emitter#readme",
|
|
6
6
|
"bugs": "https://github.com/crowbait/typespec-typescript-emitter/issues",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"typescript-eslint": "^8.15.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@typespec/compiler": "
|
|
35
|
-
"@typespec/http": "
|
|
34
|
+
"@typespec/compiler": "0.x",
|
|
35
|
+
"@typespec/http": "0.x"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "rimraf dist && tsc",
|
package/src/emit_routes.ts
CHANGED
|
@@ -19,7 +19,7 @@ const emitRoutes = (
|
|
|
19
19
|
): string => {
|
|
20
20
|
const rootNode = `routes_${context.options["root-namespace"]}`;
|
|
21
21
|
const imports: string[] = [];
|
|
22
|
-
let out = autogenerateWarning
|
|
22
|
+
let out = `/* eslint-disable */\n${autogenerateWarning}`;
|
|
23
23
|
out += `const ${rootNode} = {\n`;
|
|
24
24
|
|
|
25
25
|
const traverseNamespace = (n: Namespace, nestLevel: number): void => {
|
|
@@ -53,12 +53,12 @@ const emitRoutes = (
|
|
|
53
53
|
fn += pathParams.reduce(
|
|
54
54
|
(sum, cur) =>
|
|
55
55
|
sum.replaceAll(`{${cur.name}}`, `${"$"}{p.${cur.name}}`),
|
|
56
|
-
`\`${rootServer}${httpOp[0].path}\`,`,
|
|
56
|
+
`\`${!options["relative-routes"] ? rootServer : ""}${httpOp[0].path}\`,`,
|
|
57
57
|
);
|
|
58
58
|
out = out.addLine(fn, nestLevel + 2);
|
|
59
59
|
} else {
|
|
60
60
|
out = out.addLine(
|
|
61
|
-
`getUrl: () => '${rootServer}${httpOp[0].path}',`,
|
|
61
|
+
`getUrl: () => '${!options["relative-routes"] ? rootServer : ""}${httpOp[0].path}',`,
|
|
62
62
|
nestLevel + 2,
|
|
63
63
|
);
|
|
64
64
|
}
|
package/src/emitter.ts
CHANGED
|
@@ -39,6 +39,9 @@ export async function $onEmit(context: EmitContext) {
|
|
|
39
39
|
(context.options["enable-typeguards"] ?? false) &&
|
|
40
40
|
(context.options["enable-routes"] ?? false) &&
|
|
41
41
|
(context.options["typeguards-in-routes"] ?? false),
|
|
42
|
+
"relative-routes":
|
|
43
|
+
(context.options["enable-routes"] ?? false) &&
|
|
44
|
+
(context.options["relative-routes"] ?? false),
|
|
42
45
|
};
|
|
43
46
|
|
|
44
47
|
console.log(`Writing routes to ${options["out-dir"]}`);
|
package/src/lib.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface EmitterOptions {
|
|
|
7
7
|
"enable-typeguards": boolean;
|
|
8
8
|
"enable-routes": boolean;
|
|
9
9
|
"typeguards-in-routes": boolean;
|
|
10
|
+
"relative-routes": boolean;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
const EmitterOptionsSchema: JSONSchemaType<EmitterOptions> = {
|
|
@@ -19,6 +20,7 @@ const EmitterOptionsSchema: JSONSchemaType<EmitterOptions> = {
|
|
|
19
20
|
"enable-typeguards": { type: "boolean" },
|
|
20
21
|
"enable-routes": { type: "boolean" },
|
|
21
22
|
"typeguards-in-routes": { type: "boolean" },
|
|
23
|
+
"relative-routes": { type: "boolean" },
|
|
22
24
|
},
|
|
23
25
|
required: ["root-namespace"],
|
|
24
26
|
};
|