@typespec/http-server-js 0.58.0-alpha.13-dev.7 → 0.58.0-alpha.13-dev.8
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/.testignore +0 -1
- package/build-helpers.ts +35 -3
- package/dist/generated-defs/package.json.d.ts +2 -0
- package/dist/generated-defs/package.json.d.ts.map +1 -0
- package/dist/generated-defs/package.json.js +36 -0
- package/dist/generated-defs/package.json.js.map +1 -0
- package/dist/src/common/scalar.d.ts.map +1 -1
- package/dist/src/common/scalar.js +34 -1
- package/dist/src/common/scalar.js.map +1 -1
- package/dist/src/scripts/scaffold/bin.d.mts.map +1 -1
- package/dist/src/scripts/scaffold/bin.mjs +91 -53
- package/dist/src/scripts/scaffold/bin.mjs.map +1 -1
- package/dist/src/scripts/scaffold/data-mocks.js +12 -7
- package/dist/src/scripts/scaffold/data-mocks.js.map +1 -1
- package/generated-defs/package.json.ts +37 -0
- package/package.json +8 -1
- package/src/common/scalar.ts +42 -1
- package/src/scripts/scaffold/bin.mts +106 -53
- package/src/scripts/scaffold/data-mocks.ts +12 -7
- package/temp/tsconfig.tsbuildinfo +1 -1
package/.testignore
CHANGED
package/build-helpers.ts
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
import fs from "node:fs/promises";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
const HELPER_SRC_PATH = path.resolve("src", "helpers");
|
|
9
|
+
const GENERATED_DEFS = path.resolve("generated-defs");
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
const HELPER_DECLARATION_PATH = path.resolve(GENERATED_DEFS, "helpers");
|
|
12
|
+
const HELPER_SRC_PATH = path.resolve("src", "helpers");
|
|
13
13
|
|
|
14
14
|
async function* visitAllFiles(base: string): AsyncIterable<string> {
|
|
15
15
|
const contents = await fs.readdir(base, { withFileTypes: true });
|
|
@@ -23,7 +23,39 @@ async function* visitAllFiles(base: string): AsyncIterable<string> {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
async function buildPackageJsonTs() {
|
|
27
|
+
console.log("Building package.json.ts");
|
|
28
|
+
const packageJson = await fs.readFile(path.resolve("package.json"), "utf-8");
|
|
29
|
+
|
|
30
|
+
const parsed = JSON.parse(packageJson);
|
|
31
|
+
|
|
32
|
+
const mergedDependencies: Record<string, string> = {
|
|
33
|
+
...parsed.devDependencies,
|
|
34
|
+
...parsed.dependencies,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const fileText = [
|
|
38
|
+
"// Copyright (c) Microsoft Corporation",
|
|
39
|
+
"// Licensed under the MIT license.",
|
|
40
|
+
"",
|
|
41
|
+
"// prettier-ignore",
|
|
42
|
+
"",
|
|
43
|
+
`export const hsjsDependencies: Record<string, string> = {`,
|
|
44
|
+
...Object.entries(mergedDependencies).map(([name, version]) => {
|
|
45
|
+
return ` ${JSON.stringify(name)}: ${JSON.stringify(version)},`;
|
|
46
|
+
}),
|
|
47
|
+
"};",
|
|
48
|
+
"",
|
|
49
|
+
].join("\n");
|
|
50
|
+
|
|
51
|
+
await fs.writeFile(path.resolve(GENERATED_DEFS, "package.json.ts"), fileText);
|
|
52
|
+
}
|
|
53
|
+
|
|
26
54
|
async function main() {
|
|
55
|
+
console.log("Building JS server generator helpers.");
|
|
56
|
+
|
|
57
|
+
await buildPackageJsonTs();
|
|
58
|
+
|
|
27
59
|
const allFiles: string[] = [];
|
|
28
60
|
const indices = new Map<string, string[]>();
|
|
29
61
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.json.d.ts","sourceRoot":"","sources":["../../generated-defs/package.json.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+BnD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation
|
|
2
|
+
// Licensed under the MIT license.
|
|
3
|
+
// prettier-ignore
|
|
4
|
+
export const hsjsDependencies = {
|
|
5
|
+
"@types/express": "^5.0.1",
|
|
6
|
+
"@types/morgan": "^1.9.9",
|
|
7
|
+
"@types/node": "~22.13.11",
|
|
8
|
+
"@types/swagger-ui-express": "^4.1.8",
|
|
9
|
+
"@typespec/compiler": "workspace:^",
|
|
10
|
+
"@typespec/http": "workspace:^",
|
|
11
|
+
"@typespec/http-specs": "workspace:^",
|
|
12
|
+
"@typespec/internal-build-utils": "workspace:^",
|
|
13
|
+
"@typespec/openapi3": "workspace:^",
|
|
14
|
+
"@typespec/spector": "workspace:^",
|
|
15
|
+
"@typespec/tspd": "workspace:^",
|
|
16
|
+
"@vitest/coverage-v8": "^3.0.9",
|
|
17
|
+
"@vitest/ui": "^3.0.9",
|
|
18
|
+
"decimal.js": "^10.5.0",
|
|
19
|
+
"express": "^5.1.0",
|
|
20
|
+
"fs-extra": "^11.2.0",
|
|
21
|
+
"globby": "~14.1.0",
|
|
22
|
+
"inquirer": "^12.5.0",
|
|
23
|
+
"morgan": "^1.10.0",
|
|
24
|
+
"ora": "^8.1.1",
|
|
25
|
+
"p-limit": "^6.2.0",
|
|
26
|
+
"pathe": "^2.0.3",
|
|
27
|
+
"picocolors": "~1.1.1",
|
|
28
|
+
"swagger-ui-express": "^5.0.1",
|
|
29
|
+
"tsx": "^4.19.3",
|
|
30
|
+
"typescript": "~5.8.2",
|
|
31
|
+
"vitest": "^3.0.9",
|
|
32
|
+
"yargs": "~17.7.2",
|
|
33
|
+
"prettier": "~3.5.3",
|
|
34
|
+
"yaml": "~2.7.0",
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=package.json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.json.js","sourceRoot":"","sources":["../../generated-defs/package.json.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kCAAkC;AAElC,kBAAkB;AAElB,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,gBAAgB,EAAE,QAAQ;IAC1B,eAAe,EAAE,QAAQ;IACzB,aAAa,EAAE,WAAW;IAC1B,2BAA2B,EAAE,QAAQ;IACrC,oBAAoB,EAAE,aAAa;IACnC,gBAAgB,EAAE,aAAa;IAC/B,sBAAsB,EAAE,aAAa;IACrC,gCAAgC,EAAE,aAAa;IAC/C,oBAAoB,EAAE,aAAa;IACnC,mBAAmB,EAAE,aAAa;IAClC,gBAAgB,EAAE,aAAa;IAC/B,qBAAqB,EAAE,QAAQ;IAC/B,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,QAAQ;IACtB,oBAAoB,EAAE,QAAQ;IAC9B,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,QAAQ;IACtB,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE,QAAQ;CACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../../../src/common/scalar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAW,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAK9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAIxD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,CAAC,MAAM,EAAE,MAAM,GAAG;YAChB;;eAEG;YACH,OAAO,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;YAEzC;;eAEG;YACH,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;SAChE,CAAC;KACH,CAAC;IAEF;;OAEG;IACH,gBAAgB,CAAC,EAAE;QACjB;;WAEG;QACH,UAAU,CAAC,EAAE;YAAE,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;QACzD;;WAEG;QACH,IAAI,CAAC,EAAE;aACJ,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SACzD,CAAC;KACH,CAAC;IAEF;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,uBAAuB,GAAG,iBAAiB,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvC;;;;OAIG;IACH,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAExC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CACzC;
|
|
1
|
+
{"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../../../src/common/scalar.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,16 @@ const DURATION_BIGINT_ENCODING = (_, module) => {
|
|
|
26
26
|
decodeTemplate: "Duration.fromSeconds(globalThis.Number({}))",
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Resolves the encoding of Duration values to a BigDecimal number of seconds.
|
|
31
|
+
*/
|
|
32
|
+
const DURATION_BIGDECIMAL_ENCODING = (_, module) => {
|
|
33
|
+
module.imports.push({ from: dateTimeModule, binder: ["Duration"] }, { from: "decimal.js", binder: ["Decimal"] });
|
|
34
|
+
return {
|
|
35
|
+
encodeTemplate: "new Decimal(Duration.totalSeconds({}).toString())",
|
|
36
|
+
decodeTemplate: "Duration.fromSeconds({}.toNumber())",
|
|
37
|
+
};
|
|
38
|
+
};
|
|
29
39
|
const TYPESPEC_DURATION = {
|
|
30
40
|
type: function importDuration(_, module) {
|
|
31
41
|
module.imports.push({ from: dateTimeModule, binder: ["Duration"] });
|
|
@@ -44,7 +54,7 @@ const TYPESPEC_DURATION = {
|
|
|
44
54
|
};
|
|
45
55
|
},
|
|
46
56
|
},
|
|
47
|
-
...Object.fromEntries(["int32", "uint32"].map((n) => [
|
|
57
|
+
...Object.fromEntries(["int32", "uint32", "float32", "float64"].map((n) => [
|
|
48
58
|
`TypeSpec.${n}`,
|
|
49
59
|
{
|
|
50
60
|
default: { via: "seconds" },
|
|
@@ -58,6 +68,10 @@ const TYPESPEC_DURATION = {
|
|
|
58
68
|
seconds: DURATION_BIGINT_ENCODING,
|
|
59
69
|
},
|
|
60
70
|
])),
|
|
71
|
+
"TypeSpec.float": {
|
|
72
|
+
default: { via: "seconds" },
|
|
73
|
+
seconds: DURATION_BIGDECIMAL_ENCODING,
|
|
74
|
+
},
|
|
61
75
|
},
|
|
62
76
|
defaultEncodings: {
|
|
63
77
|
byMimeType: {
|
|
@@ -78,6 +92,21 @@ const NUMBER = {
|
|
|
78
92
|
},
|
|
79
93
|
isJsonCompatible: true,
|
|
80
94
|
};
|
|
95
|
+
const BIGDECIMAL = {
|
|
96
|
+
type(_, module) {
|
|
97
|
+
module.imports.push({ from: "decimal.js", binder: ["Decimal"] });
|
|
98
|
+
return "Decimal";
|
|
99
|
+
},
|
|
100
|
+
encodings: {
|
|
101
|
+
"TypeSpec.string": {
|
|
102
|
+
default: {
|
|
103
|
+
encodeTemplate: "{}.toString()",
|
|
104
|
+
decodeTemplate: "new Decimal({})",
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
isJsonCompatible: false,
|
|
109
|
+
};
|
|
81
110
|
/**
|
|
82
111
|
* Declarative scalar table.
|
|
83
112
|
*
|
|
@@ -160,6 +189,10 @@ const SCALARS = new Map([
|
|
|
160
189
|
["TypeSpec.int16", NUMBER],
|
|
161
190
|
["TypeSpec.int8", NUMBER],
|
|
162
191
|
["TypeSpec.safeint", NUMBER],
|
|
192
|
+
["TypeSpec.numeric", BIGDECIMAL],
|
|
193
|
+
["TypeSpec.float", BIGDECIMAL],
|
|
194
|
+
["TypeSpec.decimal", BIGDECIMAL],
|
|
195
|
+
["TypeSpec.decimal128", BIGDECIMAL],
|
|
163
196
|
[
|
|
164
197
|
"TypeSpec.integer",
|
|
165
198
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../src/common/scalar.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../src/common/scalar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.d.mts","sourceRoot":"","sources":["../../../../src/scripts/scaffold/bin.mts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"bin.d.mts","sourceRoot":"","sources":["../../../../src/scripts/scaffold/bin.mts"],"names":[],"mappings":";AAsGA,UAAU,kBAAkB;IAC1B;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AA+CD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,iBAgYzD;AAgTD,wBAAsB,IAAI,kBAEzB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
|
+
import { hsjsDependencies } from "../../../generated-defs/package.json.js";
|
|
4
5
|
import { compile, formatDiagnostic, NodeHost } from "@typespec/compiler";
|
|
5
6
|
import YAML from "yaml";
|
|
6
7
|
import { getHttpService } from "@typespec/http";
|
|
@@ -100,7 +101,7 @@ function parseScaffoldArguments(args) {
|
|
|
100
101
|
options.force = true;
|
|
101
102
|
}
|
|
102
103
|
else {
|
|
103
|
-
console.error(`[
|
|
104
|
+
console.error(`[hsjs] Unrecognized scaffolding argument: '${arg}'`);
|
|
104
105
|
process.exit(1);
|
|
105
106
|
}
|
|
106
107
|
cursor++;
|
|
@@ -115,7 +116,7 @@ async function confirmYesNo(message) {
|
|
|
115
116
|
try {
|
|
116
117
|
const response = await rl.question(`${message} [y/N] `);
|
|
117
118
|
if (response.trim().toLowerCase() !== "y") {
|
|
118
|
-
console.error("[
|
|
119
|
+
console.error("[hsjs] Operation cancelled.");
|
|
119
120
|
process.exit(0);
|
|
120
121
|
}
|
|
121
122
|
}
|
|
@@ -125,20 +126,20 @@ async function confirmYesNo(message) {
|
|
|
125
126
|
}
|
|
126
127
|
export async function scaffold(options) {
|
|
127
128
|
if (options.force) {
|
|
128
|
-
await confirmYesNo("[
|
|
129
|
+
await confirmYesNo("[hsjs] The `--force` flag is set and will overwrite existing files and settings that may have been modified. Continue?");
|
|
129
130
|
}
|
|
130
131
|
const cwd = process.cwd();
|
|
131
132
|
const projectYamlPath = path.resolve(cwd, COMMON_PATHS.projectYaml);
|
|
132
133
|
const mainTspPath = path.resolve(cwd, COMMON_PATHS.mainTsp);
|
|
133
|
-
console.info("[
|
|
134
|
-
console.info(`[
|
|
134
|
+
console.info("[hsjs] Scaffolding TypeScript project...");
|
|
135
|
+
console.info(`[hsjs] Using project file '${path.relative(cwd, projectYamlPath)}' and main file '${path.relative(cwd, mainTspPath)}'`);
|
|
135
136
|
let config;
|
|
136
137
|
try {
|
|
137
138
|
const configText = await fs.readFile(projectYamlPath);
|
|
138
139
|
config = YAML.parse(configText.toString("utf-8"));
|
|
139
140
|
}
|
|
140
141
|
catch {
|
|
141
|
-
console.error("[
|
|
142
|
+
console.error("[hsjs] Failed to read project configuration file. Is the project initialized using `tsp init`?");
|
|
142
143
|
process.exit(1);
|
|
143
144
|
}
|
|
144
145
|
// TODO: all of this path handling is awful. We need a good API from the compiler to interpolate the paths for us and
|
|
@@ -153,14 +154,14 @@ export async function scaffold(options) {
|
|
|
153
154
|
isExpress: !!config.options?.["@typespec/http-server-js"]?.express,
|
|
154
155
|
openApi3: undefined,
|
|
155
156
|
};
|
|
156
|
-
console.info(`[
|
|
157
|
+
console.info(`[hsjs] Emitter options have 'express: ${expressOptions.isExpress}'. Generating server model: '${expressOptions.isExpress ? "Express" : "Node"}'.`);
|
|
157
158
|
if (options["no-standalone"]) {
|
|
158
|
-
console.info("[
|
|
159
|
+
console.info("[hsjs] Standalone mode disabled, generating project in current directory.");
|
|
159
160
|
}
|
|
160
161
|
else {
|
|
161
|
-
console.info("[
|
|
162
|
+
console.info("[hsjs] Generating standalone project in output directory.");
|
|
162
163
|
}
|
|
163
|
-
console.info("[
|
|
164
|
+
console.info("[hsjs] Compiling TypeSpec project...");
|
|
164
165
|
const program = await compile(NodeHost, mainTspPath, {
|
|
165
166
|
noEmit: true,
|
|
166
167
|
config: projectYamlPath,
|
|
@@ -172,7 +173,7 @@ export async function scaffold(options) {
|
|
|
172
173
|
"omit-unreachable-types": true,
|
|
173
174
|
});
|
|
174
175
|
if (!jsCtx) {
|
|
175
|
-
console.error("[
|
|
176
|
+
console.error("[hsjs] No services were found in the program. Exiting.");
|
|
176
177
|
process.exit(1);
|
|
177
178
|
}
|
|
178
179
|
expressOptions.openApi3 = await tryGetOpenApi3(program, jsCtx.service);
|
|
@@ -183,13 +184,13 @@ export async function scaffold(options) {
|
|
|
183
184
|
console.error(formatDiagnostic(diagnostic, { pathRelativeTo: cwd, pretty: true }));
|
|
184
185
|
}
|
|
185
186
|
if (program.hasError() || hadError) {
|
|
186
|
-
console.error("[
|
|
187
|
+
console.error("[hsjs] TypeScript compilation failed. See above error output.");
|
|
187
188
|
process.exit(1);
|
|
188
189
|
}
|
|
189
|
-
console.info("[
|
|
190
|
+
console.info("[hsjs] TypeSpec compiled successfully. Scaffolding implementation...");
|
|
190
191
|
const indexModule = jsCtx.srcModule;
|
|
191
192
|
const routeControllers = await createRouteControllers(jsCtx, httpService, indexModule);
|
|
192
|
-
console.info("[
|
|
193
|
+
console.info("[hsjs] Generating server entry point...");
|
|
193
194
|
const controllerModules = new Set();
|
|
194
195
|
for (const { name, module } of routeControllers) {
|
|
195
196
|
controllerModules.add(module);
|
|
@@ -278,7 +279,7 @@ export async function scaffold(options) {
|
|
|
278
279
|
"});",
|
|
279
280
|
]);
|
|
280
281
|
}
|
|
281
|
-
console.info("[
|
|
282
|
+
console.info("[hsjs] Writing files...");
|
|
282
283
|
const queue = createOnceQueue();
|
|
283
284
|
await writeModuleFile(jsCtx, baseOutputDir, indexModule, queue, /* format */ true, tryWrite);
|
|
284
285
|
for (const module of controllerModules) {
|
|
@@ -317,37 +318,39 @@ export async function scaffold(options) {
|
|
|
317
318
|
ownPackageJson = JSON.parse((await fs.readFile(ownPackageJsonPath)).toString("utf-8"));
|
|
318
319
|
}
|
|
319
320
|
catch {
|
|
320
|
-
console.error("[
|
|
321
|
+
console.error("[hsjs] Failed to read package.json of TypeSpec project. Exiting.");
|
|
321
322
|
process.exit(1);
|
|
322
323
|
}
|
|
324
|
+
// Accumulate all dependencies
|
|
325
|
+
const externalDependencies = getAllExternalDependencies(jsCtx);
|
|
323
326
|
let packageJsonChanged = true;
|
|
324
327
|
if (options["no-standalone"]) {
|
|
325
|
-
console.info("[
|
|
326
|
-
packageJsonChanged = updatePackageJson(ownPackageJson,
|
|
328
|
+
console.info("[hsjs] Checking package.json for changes...");
|
|
329
|
+
packageJsonChanged = updatePackageJson(ownPackageJson, options.force, externalDependencies);
|
|
327
330
|
if (packageJsonChanged) {
|
|
328
|
-
console.info("[
|
|
331
|
+
console.info("[hsjs] Writing updated package.json...");
|
|
329
332
|
try {
|
|
330
333
|
await fs.writeFile(ownPackageJsonPath, JSON.stringify(ownPackageJson, null, 2) + "\n");
|
|
331
334
|
}
|
|
332
335
|
catch {
|
|
333
|
-
console.error("[
|
|
336
|
+
console.error("[hsjs] Failed to write package.json.");
|
|
334
337
|
process.exit(1);
|
|
335
338
|
}
|
|
336
339
|
}
|
|
337
340
|
else {
|
|
338
|
-
console.info("[
|
|
341
|
+
console.info("[hsjs] No changes to package.json suggested.");
|
|
339
342
|
}
|
|
340
343
|
}
|
|
341
344
|
else {
|
|
342
345
|
// Standalone mode, need to generate package.json from scratch
|
|
343
346
|
const relativePathToSpec = path.relative(baseOutputDir, cwd);
|
|
344
|
-
const packageJson = getPackageJsonForStandaloneProject(ownPackageJson,
|
|
347
|
+
const packageJson = getPackageJsonForStandaloneProject(ownPackageJson, relativePathToSpec, externalDependencies);
|
|
345
348
|
const packageJsonPath = path.resolve(baseOutputDir, COMMON_PATHS.packageJson);
|
|
346
349
|
await tryWrite(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n");
|
|
347
350
|
}
|
|
348
351
|
if (packageJsonChanged) {
|
|
349
352
|
// Run npm install to ensure dependencies are installed.
|
|
350
|
-
console.info("[
|
|
353
|
+
console.info("[hsjs] Running npm install...");
|
|
351
354
|
try {
|
|
352
355
|
await spawn("npm", ["install"], {
|
|
353
356
|
stdio: "inherit",
|
|
@@ -356,10 +359,10 @@ export async function scaffold(options) {
|
|
|
356
359
|
});
|
|
357
360
|
}
|
|
358
361
|
catch {
|
|
359
|
-
console.warn("[
|
|
362
|
+
console.warn("[hsjs] Failed to run npm install. Check the output above for errors and install dependencies manually.");
|
|
360
363
|
}
|
|
361
364
|
}
|
|
362
|
-
console.info("[
|
|
365
|
+
console.info("[hsjs] Project scaffolding complete. Building project...");
|
|
363
366
|
try {
|
|
364
367
|
await spawn("npm", ["run", "build"], {
|
|
365
368
|
stdio: "inherit",
|
|
@@ -368,15 +371,15 @@ export async function scaffold(options) {
|
|
|
368
371
|
});
|
|
369
372
|
}
|
|
370
373
|
catch {
|
|
371
|
-
console.error("[
|
|
374
|
+
console.error("[hsjs] Failed to build project. Check the output above for errors.");
|
|
372
375
|
process.exit(1);
|
|
373
376
|
}
|
|
374
377
|
const codeDirectory = path.relative(cwd, options["no-standalone"] ? cwd : baseOutputDir);
|
|
375
|
-
console.info("[
|
|
376
|
-
console.info("[
|
|
377
|
-
console.info(`[
|
|
378
|
-
console.info(`[
|
|
379
|
-
console.info("[
|
|
378
|
+
console.info("[hsjs] Project is ready to run. Use `npm start` to launch the server.");
|
|
379
|
+
console.info("[hsjs] A debug configuration has been created for Visual Studio Code.");
|
|
380
|
+
console.info(`[hsjs] Try \`code ${codeDirectory}\` to open the project and press F5 to start debugging.`);
|
|
381
|
+
console.info(`[hsjs] The newly-generated route controllers in '${path.join(codeDirectory, "src", "controllers")}' are ready to be implemented.`);
|
|
382
|
+
console.info("[hsjs] Done.");
|
|
380
383
|
async function tryWrite(file, contents) {
|
|
381
384
|
try {
|
|
382
385
|
const relative = path.relative(cwd, file);
|
|
@@ -385,21 +388,47 @@ export async function scaffold(options) {
|
|
|
385
388
|
.then(() => true)
|
|
386
389
|
.catch(() => false);
|
|
387
390
|
if (exists && !options.force) {
|
|
388
|
-
console.warn(`[
|
|
389
|
-
console.warn(`[
|
|
391
|
+
console.warn(`[hsjs] File '${relative}' already exists and will not be overwritten.`);
|
|
392
|
+
console.warn(`[hsjs] Manually update the file or delete it and run scaffolding again.`);
|
|
390
393
|
return;
|
|
391
394
|
}
|
|
392
395
|
else if (exists) {
|
|
393
|
-
console.warn(`[
|
|
396
|
+
console.warn(`[hsjs] Overwriting file '${relative}'...`);
|
|
394
397
|
}
|
|
395
398
|
else {
|
|
396
|
-
console.info(`[
|
|
399
|
+
console.info(`[hsjs] Writing file '${relative}'...`);
|
|
397
400
|
}
|
|
398
401
|
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
399
402
|
await fs.writeFile(file, contents);
|
|
400
403
|
}
|
|
401
404
|
catch (e) {
|
|
402
|
-
console.error(`[
|
|
405
|
+
console.error(`[hsjs] Failed to write file: '${e.message}'`);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
function getAllExternalDependencies(ctx) {
|
|
410
|
+
const externalDependencies = new Set();
|
|
411
|
+
const visited = new Set();
|
|
412
|
+
addModule(ctx.rootModule);
|
|
413
|
+
return externalDependencies;
|
|
414
|
+
function addModule(module) {
|
|
415
|
+
visited.add(module);
|
|
416
|
+
for (const declaration of module.declarations) {
|
|
417
|
+
if (isModule(declaration) && !visited.has(declaration)) {
|
|
418
|
+
addModule(declaration);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
for (const _import of module.imports) {
|
|
422
|
+
if (typeof _import.from === "string" &&
|
|
423
|
+
!_import.from.startsWith(".") &&
|
|
424
|
+
!_import.from.startsWith("/")) {
|
|
425
|
+
externalDependencies.add(_import.from);
|
|
426
|
+
}
|
|
427
|
+
else if (typeof _import.from !== "string") {
|
|
428
|
+
if (!visited.has(_import.from)) {
|
|
429
|
+
addModule(_import.from);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
403
432
|
}
|
|
404
433
|
}
|
|
405
434
|
}
|
|
@@ -432,7 +461,7 @@ async function createRouteController(ctx, container, operations, controllersModu
|
|
|
432
461
|
from: routerModule,
|
|
433
462
|
});
|
|
434
463
|
const controllerName = containerNameCase.pascalCase + "Impl";
|
|
435
|
-
console.info(`[
|
|
464
|
+
console.info(`[hsjs] Generating controller '${controllerName}'...`);
|
|
436
465
|
module.declarations.push([
|
|
437
466
|
`export class ${controllerName} implements ${containerNameCase.pascalCase}<HttpContext> {`,
|
|
438
467
|
...indent(emitControllerOperationHandlers(ctx, container, operations, module)),
|
|
@@ -499,7 +528,7 @@ function* emitControllerOperationHandlers(ctx, container, httpOperations, module
|
|
|
499
528
|
});
|
|
500
529
|
}
|
|
501
530
|
}
|
|
502
|
-
function getPackageJsonForStandaloneProject(ownPackageJson,
|
|
531
|
+
function getPackageJsonForStandaloneProject(ownPackageJson, relativePathToSpec, externalDependencies) {
|
|
503
532
|
const packageJson = {
|
|
504
533
|
name: (ownPackageJson.name ?? path.basename(process.cwd())) + "-server",
|
|
505
534
|
version: ownPackageJson.version ?? "0.1.0",
|
|
@@ -509,13 +538,13 @@ function getPackageJsonForStandaloneProject(ownPackageJson, express, relativePat
|
|
|
509
538
|
if (ownPackageJson.private) {
|
|
510
539
|
packageJson.private = true;
|
|
511
540
|
}
|
|
512
|
-
updatePackageJson(packageJson,
|
|
541
|
+
updatePackageJson(packageJson, true, externalDependencies, () => { });
|
|
513
542
|
delete packageJson.scripts["build:scaffold"];
|
|
514
543
|
packageJson.scripts["build:typespec"] = 'tsp compile --output-dir=".." ' + relativePathToSpec;
|
|
515
544
|
return packageJson;
|
|
516
545
|
}
|
|
517
546
|
const JS_IDENTIFIER_RE = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
|
|
518
|
-
function updatePackageJson(packageJson,
|
|
547
|
+
function updatePackageJson(packageJson, force, externalDependencies, info = console.info) {
|
|
519
548
|
let changed = false;
|
|
520
549
|
updateObjectPath(["scripts", "start"], "node dist/src/index.js");
|
|
521
550
|
updateObjectPath(["scripts", "build"], "npm run build:typespec && tsc");
|
|
@@ -523,15 +552,24 @@ function updatePackageJson(packageJson, express, force, info = console.info) {
|
|
|
523
552
|
updateObjectPath(["scripts", "build:scaffold"], "hsjs-scaffold");
|
|
524
553
|
updateObjectPath(["devDependencies", "typescript"], "^5.7.3");
|
|
525
554
|
updateObjectPath(["devDependencies", "@types/node"], "^22.13.1");
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
if (
|
|
530
|
-
|
|
531
|
-
|
|
555
|
+
let hadError = false;
|
|
556
|
+
for (const dependency of externalDependencies) {
|
|
557
|
+
const dependencyVersion = hsjsDependencies[dependency];
|
|
558
|
+
if (!dependencyVersion) {
|
|
559
|
+
hadError = true;
|
|
560
|
+
console.error("[hsjs] Failed to find version for dependency:", dependency);
|
|
561
|
+
continue;
|
|
562
|
+
}
|
|
563
|
+
updateObjectPath(["dependencies", dependency], dependencyVersion);
|
|
564
|
+
const typesDependency = `@types/${dependency}`;
|
|
565
|
+
const typesDependencyVersion = hsjsDependencies[typesDependency];
|
|
566
|
+
if (typesDependencyVersion) {
|
|
567
|
+
updateObjectPath(["devDependencies", typesDependency], typesDependencyVersion);
|
|
532
568
|
}
|
|
533
|
-
|
|
534
|
-
|
|
569
|
+
}
|
|
570
|
+
if (hadError) {
|
|
571
|
+
console.error("[hsjs] FATAL: Failed to find dependency versions. This is a bug. Please report this error to https://github.com/microsoft/typespec");
|
|
572
|
+
process.exit(1);
|
|
535
573
|
}
|
|
536
574
|
return changed;
|
|
537
575
|
function updateObjectPath(path, value) {
|
|
@@ -551,19 +589,19 @@ function updatePackageJson(packageJson, express, force, info = console.info) {
|
|
|
551
589
|
}
|
|
552
590
|
if (!existingValue || force) {
|
|
553
591
|
if (!existingValue) {
|
|
554
|
-
info(`[
|
|
592
|
+
info(`[hsjs] - Setting package.json property '${property}' to "${value}".`);
|
|
555
593
|
}
|
|
556
594
|
else if (force) {
|
|
557
|
-
info(`[
|
|
595
|
+
info(`[hsjs] - Overwriting package.json property '${property}' to "${value}".`);
|
|
558
596
|
}
|
|
559
597
|
current[path[path.length - 1]] = value;
|
|
560
598
|
changed ||= true;
|
|
561
599
|
return;
|
|
562
600
|
}
|
|
563
601
|
if (current[path[path.length - 1]] !== value) {
|
|
564
|
-
info(`[
|
|
565
|
-
info(`[
|
|
566
|
-
info("[
|
|
602
|
+
info(`[hsjs] - Skipping package.json property '${property}'.`);
|
|
603
|
+
info(`[hsjs] Scaffolding prefers "${value}", but it is already set to "${existingValue}".`);
|
|
604
|
+
info("[hsjs] Manually update the property or remove it and run scaffolding again if needed.");
|
|
567
605
|
}
|
|
568
606
|
}
|
|
569
607
|
}
|