@kattebak/typespec-enum-emitter 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +22 -2
- package/dist/emitter.js.map +1 -1
- package/dist/lib.d.ts +16 -4
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +7 -1
- package/dist/lib.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -49,6 +49,9 @@ emit:
|
|
|
49
49
|
options:
|
|
50
50
|
typespec-enum-emitter:
|
|
51
51
|
output-file: "enums.js"
|
|
52
|
+
emitter-output-dir: "{cwd}/build/ts-enums"
|
|
53
|
+
package-name: "@mycorp/enums"
|
|
54
|
+
package-version: "1.0.0"
|
|
52
55
|
```
|
|
53
56
|
|
|
54
57
|
### 3. Compile
|
|
@@ -109,7 +112,9 @@ export declare const HttpStatusCode: {
|
|
|
109
112
|
## Configuration Options
|
|
110
113
|
|
|
111
114
|
- `output-file`: Name of the output file (default: "enums.js")
|
|
112
|
-
- `output-dir`:
|
|
115
|
+
- `emitter-output-dir`: Custom output directory (supports variable interpolation like `{cwd}`, `{project-root}`)
|
|
116
|
+
- `package-name`: If provided, generates a package.json file with this name
|
|
117
|
+
- `package-version`: Version for the generated package.json (default: "0.0.1")
|
|
113
118
|
|
|
114
119
|
## Why Use This?
|
|
115
120
|
|
package/dist/emitter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,iBA8CrE"}
|
package/dist/emitter.js
CHANGED
|
@@ -16,6 +16,8 @@ export async function $onEmit(context) {
|
|
|
16
16
|
}
|
|
17
17
|
const outputDir = context.emitterOutputDir;
|
|
18
18
|
const outputFile = context.options["output-file"] ?? "enums.js";
|
|
19
|
+
const packageName = context.options["package-name"];
|
|
20
|
+
const packageVersion = context.options["package-version"] ?? "0.0.1";
|
|
19
21
|
const jsContent = generateJavaScript(enums);
|
|
20
22
|
const tsContent = generateTypeScript(enums);
|
|
21
23
|
await emitFile(context.program, {
|
|
@@ -26,6 +28,14 @@ export async function $onEmit(context) {
|
|
|
26
28
|
path: resolvePath(outputDir, outputFile.replace(".js", ".d.ts")),
|
|
27
29
|
content: tsContent,
|
|
28
30
|
});
|
|
31
|
+
// Generate package.json if package-name is provided
|
|
32
|
+
if (packageName) {
|
|
33
|
+
const packageJson = generatePackageJson(packageName, packageVersion);
|
|
34
|
+
await emitFile(context.program, {
|
|
35
|
+
path: resolvePath(outputDir, "package.json"),
|
|
36
|
+
content: packageJson,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
29
39
|
}
|
|
30
40
|
function generateJavaScript(enums) {
|
|
31
41
|
const enumDefinitions = enums
|
|
@@ -43,7 +53,7 @@ function generateEnumObject(members) {
|
|
|
43
53
|
const key = member.name;
|
|
44
54
|
const value = member.value ?? member.name;
|
|
45
55
|
const valueStr = typeof value === "string" ? `"${value}"` : value;
|
|
46
|
-
return `\t${key}: ${valueStr}`;
|
|
56
|
+
return `\t"${key}": ${valueStr}`;
|
|
47
57
|
})
|
|
48
58
|
.join(",\n");
|
|
49
59
|
return `{\n${entries}\n}`;
|
|
@@ -57,7 +67,7 @@ function generateTypeScript(enums) {
|
|
|
57
67
|
const key = member.name;
|
|
58
68
|
const value = member.value ?? member.name;
|
|
59
69
|
const valueStr = typeof value === "string" ? `"${value}"` : value;
|
|
60
|
-
return `\treadonly ${key}: ${valueStr}`;
|
|
70
|
+
return `\treadonly "${key}": ${valueStr}`;
|
|
61
71
|
})
|
|
62
72
|
.join(";\n");
|
|
63
73
|
return `export declare const ${enumType.name}: {\n${memberTypes}\n};`;
|
|
@@ -65,4 +75,14 @@ function generateTypeScript(enums) {
|
|
|
65
75
|
.join("\n\n");
|
|
66
76
|
return `${enumDeclarations}\n`;
|
|
67
77
|
}
|
|
78
|
+
function generatePackageJson(name, version) {
|
|
79
|
+
const packageJson = {
|
|
80
|
+
name,
|
|
81
|
+
version,
|
|
82
|
+
type: "module",
|
|
83
|
+
main: "enums.js",
|
|
84
|
+
types: "enums.d.ts",
|
|
85
|
+
};
|
|
86
|
+
return JSON.stringify(packageJson, null, 2);
|
|
87
|
+
}
|
|
68
88
|
//# sourceMappingURL=emitter.js.map
|
package/dist/emitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,QAAQ,EAER,WAAW,GACX,MAAM,oBAAoB,CAAC;AAG5B,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAwC;IACrE,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,SAAS,YAAY,CAAC,SAAoB;QACzC,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YAC5C,YAAY,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACF,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;IACjE,YAAY,CAAC,eAAe,CAAC,CAAC;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;IACR,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"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"}
|
package/dist/lib.d.ts
CHANGED
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
export interface EnumEmitterOptions {
|
|
2
|
-
"output-dir"?: string;
|
|
3
2
|
"output-file"?: string;
|
|
3
|
+
"emitter-output-dir"?: string;
|
|
4
|
+
"package-name"?: string;
|
|
5
|
+
"package-version"?: string;
|
|
4
6
|
}
|
|
5
7
|
export declare const $lib: {
|
|
6
8
|
"emitter-options-schema": {
|
|
7
9
|
readonly type: "object";
|
|
8
10
|
readonly additionalProperties: false;
|
|
9
11
|
readonly properties: {
|
|
10
|
-
readonly "output-
|
|
12
|
+
readonly "output-file": {
|
|
11
13
|
readonly type: "string";
|
|
12
14
|
readonly nullable: true;
|
|
15
|
+
readonly default: "enums.js";
|
|
13
16
|
};
|
|
14
|
-
readonly "output-
|
|
17
|
+
readonly "emitter-output-dir": {
|
|
15
18
|
readonly type: "string";
|
|
19
|
+
readonly format: "absolute-path";
|
|
16
20
|
readonly nullable: true;
|
|
17
|
-
|
|
21
|
+
};
|
|
22
|
+
readonly "package-name": {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly nullable: true;
|
|
25
|
+
};
|
|
26
|
+
readonly "package-version": {
|
|
27
|
+
readonly type: "string";
|
|
28
|
+
readonly nullable: true;
|
|
29
|
+
readonly default: "0.0.1";
|
|
18
30
|
};
|
|
19
31
|
};
|
|
20
32
|
readonly required: readonly [];
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAClC,
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBhB,CAAC"}
|
package/dist/lib.js
CHANGED
|
@@ -3,8 +3,14 @@ export const $lib = {
|
|
|
3
3
|
type: "object",
|
|
4
4
|
additionalProperties: false,
|
|
5
5
|
properties: {
|
|
6
|
-
"output-dir": { type: "string", nullable: true },
|
|
7
6
|
"output-file": { type: "string", nullable: true, default: "enums.js" },
|
|
7
|
+
"emitter-output-dir": {
|
|
8
|
+
type: "string",
|
|
9
|
+
format: "absolute-path",
|
|
10
|
+
nullable: true,
|
|
11
|
+
},
|
|
12
|
+
"package-name": { type: "string", nullable: true },
|
|
13
|
+
"package-version": { type: "string", nullable: true, default: "0.0.1" },
|
|
8
14
|
},
|
|
9
15
|
required: [],
|
|
10
16
|
},
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,IAAI,GAAG;IACnB,wBAAwB,EAAE;QACzB,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACX,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;YACtE,oBAAoB,EAAE;gBACrB,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE,IAAI;aACd;YACD,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClD,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;SACvE;QACD,QAAQ,EAAE,EAAE;KACH;CACV,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kattebak/typespec-enum-emitter",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "TypeSpec emitter for JavaScript const enums",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "tsc",
|
|
23
23
|
"watch": "tsc --watch",
|
|
24
|
-
"test": "npm run build && npm run lint",
|
|
24
|
+
"test": "npm run build && npm run lint && npm run build",
|
|
25
|
+
"test:emit": "sp compile test/main.tsp --config test/tspconfig.yaml",
|
|
25
26
|
"fix": "npx @biomejs/biome check --write",
|
|
26
27
|
"lint": "npx @biomejs/biome check"
|
|
27
28
|
},
|