@typespec/compiler 1.0.0-rc.2-dev.11 → 1.0.0-rc.2-dev.14
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/dist/manifest.js +2 -2
- package/dist/src/core/cli/actions/format.d.ts.map +1 -1
- package/dist/src/core/cli/actions/format.js +64 -17
- package/dist/src/core/cli/actions/format.js.map +1 -1
- package/dist/src/core/formatter-fs.d.ts +57 -13
- package/dist/src/core/formatter-fs.d.ts.map +1 -1
- package/dist/src/core/formatter-fs.js +95 -48
- package/dist/src/core/formatter-fs.js.map +1 -1
- package/dist/src/core/formatter.d.ts +30 -0
- package/dist/src/core/formatter.d.ts.map +1 -1
- package/dist/src/core/formatter.js +63 -2
- package/dist/src/core/formatter.js.map +1 -1
- package/dist/src/core/type-utils.d.ts.map +1 -1
- package/dist/src/core/type-utils.js +10 -1
- package/dist/src/core/type-utils.js.map +1 -1
- package/package.json +1 -1
package/dist/manifest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../../src/core/cli/actions/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../../src/core/cli/actions/format.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,iBAMzE"}
|
|
@@ -1,30 +1,77 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
1
2
|
import { logDiagnostics } from "../../diagnostics.js";
|
|
2
|
-
import {
|
|
3
|
+
import { checkFilesFormat, formatFiles } from "../../formatter-fs.js";
|
|
3
4
|
export async function formatAction(host, args) {
|
|
4
5
|
if (args["check"]) {
|
|
5
|
-
|
|
6
|
+
await check(host, args);
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
await format(host, args);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
async function check(host, args) {
|
|
13
|
+
await host.logger.trackAction("Checking format", "", async (task) => {
|
|
14
|
+
const result = await checkFilesFormat(args["include"], {
|
|
6
15
|
exclude: args["exclude"],
|
|
7
|
-
debug: args.debug,
|
|
8
16
|
});
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
if (result.errored.length > 0) {
|
|
18
|
+
logDiagnostics(result.errored.map((x) => x[1]), host.logSink);
|
|
19
|
+
}
|
|
20
|
+
if (result.needsFormat.length > 0 || result.errored.length > 0) {
|
|
21
|
+
const msg = [
|
|
22
|
+
needsFormatText(result.needsFormat),
|
|
23
|
+
result.errored.length > 0 ? errorText(result.errored) : undefined,
|
|
24
|
+
formattedText(result.formatted),
|
|
25
|
+
result.ignored.length > 0 ? ignoredText(result.ignored) : undefined,
|
|
26
|
+
];
|
|
27
|
+
task.warn(msg.filter((x) => x).join(", "));
|
|
16
28
|
process.exit(1);
|
|
17
29
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
30
|
+
else {
|
|
31
|
+
const msg = [
|
|
32
|
+
formattedText(result.formatted),
|
|
33
|
+
result.ignored.length > 0 ? ignoredText(result.ignored) : undefined,
|
|
34
|
+
];
|
|
35
|
+
task.succeed(msg.filter((x) => x).join(", "));
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async function format(host, args) {
|
|
40
|
+
await host.logger.trackAction("Formatting", "", async (task) => {
|
|
41
|
+
const result = await formatFiles(args["include"], {
|
|
21
42
|
exclude: args["exclude"],
|
|
22
|
-
debug: args.debug,
|
|
23
43
|
});
|
|
24
|
-
|
|
25
|
-
|
|
44
|
+
const msg = [
|
|
45
|
+
result.formatted.length > 0 ? formattedText(result.formatted) : undefined,
|
|
46
|
+
result.alreadyFormatted.length > 0 ? unchangedText(result.alreadyFormatted) : undefined,
|
|
47
|
+
result.ignored.length > 0 ? ignoredText(result.ignored) : undefined,
|
|
48
|
+
result.errored.length > 0 ? errorText(result.errored) : undefined,
|
|
49
|
+
]
|
|
50
|
+
.filter((x) => x)
|
|
51
|
+
.join(", ");
|
|
52
|
+
if (result.errored.length > 0) {
|
|
53
|
+
logDiagnostics(result.errored.map((x) => x[1]), host.logSink);
|
|
54
|
+
task.warn(msg);
|
|
26
55
|
process.exit(1);
|
|
27
56
|
}
|
|
28
|
-
|
|
57
|
+
else {
|
|
58
|
+
task.succeed(msg);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function formattedText(files) {
|
|
63
|
+
return pc.green(`${files.length} formatted`);
|
|
64
|
+
}
|
|
65
|
+
function unchangedText(files) {
|
|
66
|
+
return pc.green(`${files.length} unchanged`);
|
|
67
|
+
}
|
|
68
|
+
function needsFormatText(files) {
|
|
69
|
+
return pc.yellow(`${files.length} need format`);
|
|
70
|
+
}
|
|
71
|
+
function ignoredText(files) {
|
|
72
|
+
return pc.gray(`${files.length} ignored`);
|
|
73
|
+
}
|
|
74
|
+
function errorText(errored) {
|
|
75
|
+
return pc.red(`${errored.length} error${errored.length > 1 ? "s" : ""}`);
|
|
29
76
|
}
|
|
30
77
|
//# sourceMappingURL=format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../../src/core/cli/actions/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../../src/core/cli/actions/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,73 @@
|
|
|
1
1
|
import { Diagnostic } from "./types.js";
|
|
2
2
|
export interface TypeSpecFormatOptions {
|
|
3
3
|
exclude?: string[];
|
|
4
|
-
debug?: boolean;
|
|
5
4
|
}
|
|
5
|
+
/** The paths of which are either relative or absolute based on the original file path patterns. */
|
|
6
6
|
export interface TypeSpecFormatResult {
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
/** Files which were formatted successfully, */
|
|
8
|
+
readonly formatted: string[];
|
|
9
|
+
/** Files which had a valid format already. */
|
|
10
|
+
readonly alreadyFormatted: string[];
|
|
11
|
+
/** Files that were included in the filter but are not in the scope of the typespec formatter. */
|
|
12
|
+
readonly ignored: string[];
|
|
13
|
+
/** Files with errors */
|
|
14
|
+
readonly errored: [string, Diagnostic][];
|
|
11
15
|
}
|
|
12
16
|
/**
|
|
13
|
-
* Format all the TypeSpec files.
|
|
17
|
+
* Format all the TypeSpec project files(.tsp, tspconfig.yaml).
|
|
14
18
|
* @param patterns List of wildcard pattern searching for TypeSpec files.
|
|
15
19
|
* @returns list of files which failed to format.
|
|
16
20
|
*/
|
|
17
|
-
export declare function
|
|
21
|
+
export declare function formatFiles(patterns: string[], { exclude }: TypeSpecFormatOptions): Promise<TypeSpecFormatResult>;
|
|
22
|
+
export interface CheckFilesFormatResult {
|
|
23
|
+
readonly formatted: string[];
|
|
24
|
+
readonly needsFormat: string[];
|
|
25
|
+
readonly ignored: string[];
|
|
26
|
+
readonly errored: [string, Diagnostic][];
|
|
27
|
+
}
|
|
18
28
|
/**
|
|
19
|
-
*
|
|
20
|
-
* @returns list of files not formatted.
|
|
29
|
+
* Check the format of the files in the given pattern.
|
|
21
30
|
*/
|
|
22
|
-
export declare function
|
|
23
|
-
export
|
|
31
|
+
export declare function checkFilesFormat(patterns: string[], { exclude }: TypeSpecFormatOptions): Promise<CheckFilesFormatResult>;
|
|
32
|
+
export type FormatFileResult =
|
|
33
|
+
/** File formatted successfully. */
|
|
34
|
+
{
|
|
35
|
+
kind: "formatted";
|
|
36
|
+
}
|
|
37
|
+
/** File was already formatted. */
|
|
38
|
+
| {
|
|
39
|
+
kind: "already-formatted";
|
|
40
|
+
}
|
|
41
|
+
/** File is not in a format that can be formatted by TypeSpec */
|
|
42
|
+
| {
|
|
43
|
+
kind: "ignored";
|
|
44
|
+
}
|
|
45
|
+
/** Error occurred, probably a parsing error. */
|
|
46
|
+
| {
|
|
47
|
+
kind: "error";
|
|
48
|
+
diagnostic: Diagnostic;
|
|
49
|
+
};
|
|
50
|
+
export declare function formatFile(filename: string): Promise<FormatFileResult>;
|
|
51
|
+
export type CheckFormatResult =
|
|
52
|
+
/** File formatted successfully. */
|
|
53
|
+
{
|
|
54
|
+
kind: "formatted";
|
|
55
|
+
}
|
|
56
|
+
/** File needs format */
|
|
57
|
+
| {
|
|
58
|
+
kind: "needs-format";
|
|
59
|
+
}
|
|
60
|
+
/** File is not in a format that can be formatted by TypeSpec */
|
|
61
|
+
| {
|
|
62
|
+
kind: "ignored";
|
|
63
|
+
}
|
|
64
|
+
/** Error occurred, probably a parsing error. */
|
|
65
|
+
| {
|
|
66
|
+
kind: "error";
|
|
67
|
+
diagnostic: Diagnostic;
|
|
68
|
+
};
|
|
24
69
|
/**
|
|
25
70
|
* Check the given TypeSpec file is correctly formatted.
|
|
26
|
-
* @returns true if code is formatted correctly.
|
|
27
71
|
*/
|
|
28
|
-
export declare function
|
|
72
|
+
export declare function checkFileFormat(filename: string): Promise<CheckFormatResult>;
|
|
29
73
|
//# sourceMappingURL=formatter-fs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter-fs.d.ts","sourceRoot":"","sources":["../../../src/core/formatter-fs.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter-fs.d.ts","sourceRoot":"","sources":["../../../src/core/formatter-fs.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,oGAAoG;AACpG,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IACpC,iGAAiG;IACjG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,EAAE,OAAO,EAAE,EAAE,qBAAqB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAyB/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;CAC1C;AACD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAAE,EAClB,EAAE,OAAO,EAAE,EAAE,qBAAqB,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAyBjC;AAED,MAAM,MAAM,gBAAgB;AAC1B,mCAAmC;AACjC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;AACvB,kCAAkC;GAChC;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE;AAC/B,gEAAgE;GAC9D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,gDAAgD;GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAE9C,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4B5E;AAED,MAAM,MAAM,iBAAiB;AAC3B,mCAAmC;AACjC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;AACvB,wBAAwB;GACtB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE;AAC1B,gEAAgE;GAC9D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,gDAAgD;GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAE9C;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwBlF"}
|
|
@@ -2,81 +2,128 @@ import { readFile, writeFile } from "fs/promises";
|
|
|
2
2
|
import { globby } from "globby";
|
|
3
3
|
import { resolveConfig } from "prettier";
|
|
4
4
|
import { PrettierParserError } from "../formatter/parser.js";
|
|
5
|
-
import {
|
|
5
|
+
import { checkFormat, format, getFormatterFromFilename } from "./formatter.js";
|
|
6
6
|
import { createDiagnostic } from "./messages.js";
|
|
7
7
|
import { normalizePath } from "./path-utils.js";
|
|
8
8
|
import { NoTarget } from "./types.js";
|
|
9
9
|
/**
|
|
10
|
-
* Format all the TypeSpec files.
|
|
10
|
+
* Format all the TypeSpec project files(.tsp, tspconfig.yaml).
|
|
11
11
|
* @param patterns List of wildcard pattern searching for TypeSpec files.
|
|
12
12
|
* @returns list of files which failed to format.
|
|
13
13
|
*/
|
|
14
|
-
export async function
|
|
14
|
+
export async function formatFiles(patterns, { exclude }) {
|
|
15
15
|
const files = await findFiles(patterns, exclude);
|
|
16
|
-
const
|
|
17
|
-
const
|
|
16
|
+
const errored = [];
|
|
17
|
+
const formatted = [];
|
|
18
|
+
const alreadyFormatted = [];
|
|
19
|
+
const ignored = [];
|
|
18
20
|
for (const file of files) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
throw e;
|
|
34
|
-
}
|
|
21
|
+
const result = await formatFile(file);
|
|
22
|
+
switch (result.kind) {
|
|
23
|
+
case "formatted":
|
|
24
|
+
formatted.push(file);
|
|
25
|
+
break;
|
|
26
|
+
case "already-formatted":
|
|
27
|
+
alreadyFormatted.push(file);
|
|
28
|
+
break;
|
|
29
|
+
case "ignored":
|
|
30
|
+
ignored.push(file);
|
|
31
|
+
break;
|
|
32
|
+
case "error":
|
|
33
|
+
errored.push([file, result.diagnostic]);
|
|
34
|
+
break;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
return
|
|
37
|
+
return { formatted, ignored, errored, alreadyFormatted };
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
* @returns list of files not formatted.
|
|
40
|
+
* Check the format of the files in the given pattern.
|
|
42
41
|
*/
|
|
43
|
-
export async function
|
|
42
|
+
export async function checkFilesFormat(patterns, { exclude }) {
|
|
44
43
|
const files = await findFiles(patterns, exclude);
|
|
45
|
-
const
|
|
44
|
+
const errored = [];
|
|
45
|
+
const formatted = [];
|
|
46
|
+
const needsFormat = [];
|
|
47
|
+
const ignored = [];
|
|
46
48
|
for (const file of files) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
49
|
+
const result = await checkFileFormat(file);
|
|
50
|
+
switch (result.kind) {
|
|
51
|
+
case "formatted":
|
|
52
|
+
formatted.push(file);
|
|
53
|
+
break;
|
|
54
|
+
case "needs-format":
|
|
55
|
+
formatted.push(file);
|
|
56
|
+
break;
|
|
57
|
+
case "ignored":
|
|
58
|
+
ignored.push(file);
|
|
59
|
+
break;
|
|
60
|
+
case "error":
|
|
61
|
+
errored.push([file, result.diagnostic]);
|
|
62
|
+
break;
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
|
-
return
|
|
65
|
+
return { formatted, needsFormat, ignored, errored };
|
|
65
66
|
}
|
|
66
|
-
export async function
|
|
67
|
+
export async function formatFile(filename) {
|
|
67
68
|
const content = await readFile(filename, "utf-8");
|
|
68
69
|
const prettierConfig = await resolveConfig(filename);
|
|
69
|
-
const
|
|
70
|
-
|
|
70
|
+
const formatter = getFormatterFromFilename(filename);
|
|
71
|
+
if (formatter === undefined) {
|
|
72
|
+
return { kind: "ignored" };
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const formattedContent = await format(content, formatter, prettierConfig ?? {});
|
|
76
|
+
if (formattedContent === content) {
|
|
77
|
+
return { kind: "already-formatted" };
|
|
78
|
+
}
|
|
79
|
+
await writeFile(filename, formattedContent);
|
|
80
|
+
return { kind: "formatted" };
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
if (e instanceof PrettierParserError) {
|
|
84
|
+
return {
|
|
85
|
+
kind: "error",
|
|
86
|
+
diagnostic: createDiagnostic({
|
|
87
|
+
code: "format-failed",
|
|
88
|
+
format: { file: filename, details: e.message },
|
|
89
|
+
target: NoTarget,
|
|
90
|
+
}),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
throw e;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
71
97
|
}
|
|
72
98
|
/**
|
|
73
99
|
* Check the given TypeSpec file is correctly formatted.
|
|
74
|
-
* @returns true if code is formatted correctly.
|
|
75
100
|
*/
|
|
76
|
-
export async function
|
|
101
|
+
export async function checkFileFormat(filename) {
|
|
77
102
|
const content = await readFile(filename, "utf-8");
|
|
78
103
|
const prettierConfig = await resolveConfig(filename);
|
|
79
|
-
|
|
104
|
+
const formatter = getFormatterFromFilename(filename);
|
|
105
|
+
if (formatter === undefined) {
|
|
106
|
+
return { kind: "ignored" };
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const formatted = await checkFormat(content, formatter, prettierConfig ?? {});
|
|
110
|
+
return { kind: formatted ? "formatted" : "needs-format" };
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
if (e instanceof PrettierParserError) {
|
|
114
|
+
return {
|
|
115
|
+
kind: "error",
|
|
116
|
+
diagnostic: createDiagnostic({
|
|
117
|
+
code: "format-failed",
|
|
118
|
+
format: { file: filename, details: e.message },
|
|
119
|
+
target: NoTarget,
|
|
120
|
+
}),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
throw e;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
80
127
|
}
|
|
81
128
|
async function findFiles(include, ignore = []) {
|
|
82
129
|
const patterns = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter-fs.js","sourceRoot":"","sources":["../../../src/core/formatter-fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"formatter-fs.js","sourceRoot":"","sources":["../../../src/core/formatter-fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
1
|
import type { Options } from "prettier";
|
|
2
|
+
export type Formatter = "typespec" | "tspconfig";
|
|
3
|
+
/**
|
|
4
|
+
* Get the formatter name for the given filename
|
|
5
|
+
* @param filename The filename to check
|
|
6
|
+
*/
|
|
7
|
+
export declare function getFormatterFromFilename(filename: string): Formatter | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Format the code with the given formatter
|
|
10
|
+
* @param code The code to format
|
|
11
|
+
* @param formatter The formatter to use
|
|
12
|
+
* @param prettierConfig Optional config for prettier
|
|
13
|
+
* @returns The formatted code
|
|
14
|
+
* @throws PrettierParserError if the code is not valid
|
|
15
|
+
*/
|
|
16
|
+
export declare function format(code: string, formatter: Formatter, prettierConfig?: Options): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Check the given code is correctly formatted with the given formatter
|
|
19
|
+
* @param code The code to check the format of
|
|
20
|
+
* @param formatter The formatter to use
|
|
21
|
+
* @param prettierConfig Optional config for prettier
|
|
22
|
+
* @returns true if the code is formatted correctly
|
|
23
|
+
* @throws PrettierParserError if the code is not valid
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkFormat(code: string, formatter: Formatter, prettierConfig?: Options): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Format TypeSpec code
|
|
28
|
+
* @param code Code to format
|
|
29
|
+
* @param prettierConfig Optional config for prettier.
|
|
30
|
+
* @returns Formatted code
|
|
31
|
+
*/
|
|
2
32
|
export declare function formatTypeSpec(code: string, prettierConfig?: Options): Promise<string>;
|
|
3
33
|
/**
|
|
4
34
|
* Check the given is correctly formatted.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/core/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/core/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAMxC,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAUhF;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,OAAO,CAAC,CAElB;AAwBD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5F;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,OAAO,CAAC,CAMlB"}
|
|
@@ -1,7 +1,68 @@
|
|
|
1
|
-
import
|
|
1
|
+
import YamlPlugin from "prettier/plugins/yaml.js";
|
|
2
|
+
import { check, format as prettierFormat } from "prettier/standalone";
|
|
2
3
|
import * as typespecPrettierPlugin from "../formatter/index.js";
|
|
4
|
+
import { getAnyExtensionFromPath } from "./path-utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Get the formatter name for the given filename
|
|
7
|
+
* @param filename The filename to check
|
|
8
|
+
*/
|
|
9
|
+
export function getFormatterFromFilename(filename) {
|
|
10
|
+
const ext = getAnyExtensionFromPath(filename);
|
|
11
|
+
if (filename.endsWith("tspconfig.yaml")) {
|
|
12
|
+
return "tspconfig";
|
|
13
|
+
}
|
|
14
|
+
switch (ext) {
|
|
15
|
+
case ".tsp":
|
|
16
|
+
return "typespec";
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Format the code with the given formatter
|
|
22
|
+
* @param code The code to format
|
|
23
|
+
* @param formatter The formatter to use
|
|
24
|
+
* @param prettierConfig Optional config for prettier
|
|
25
|
+
* @returns The formatted code
|
|
26
|
+
* @throws PrettierParserError if the code is not valid
|
|
27
|
+
*/
|
|
28
|
+
export async function format(code, formatter, prettierConfig) {
|
|
29
|
+
return runFormatter(prettierFormat, code, formatter, prettierConfig);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check the given code is correctly formatted with the given formatter
|
|
33
|
+
* @param code The code to check the format of
|
|
34
|
+
* @param formatter The formatter to use
|
|
35
|
+
* @param prettierConfig Optional config for prettier
|
|
36
|
+
* @returns true if the code is formatted correctly
|
|
37
|
+
* @throws PrettierParserError if the code is not valid
|
|
38
|
+
*/
|
|
39
|
+
export async function checkFormat(code, formatter, prettierConfig) {
|
|
40
|
+
return runFormatter(check, code, formatter, prettierConfig);
|
|
41
|
+
}
|
|
42
|
+
async function runFormatter(fn, code, formatter, prettierConfig) {
|
|
43
|
+
switch (formatter) {
|
|
44
|
+
case "typespec":
|
|
45
|
+
return fn(code, {
|
|
46
|
+
...prettierConfig,
|
|
47
|
+
parser: "typespec",
|
|
48
|
+
plugins: [typespecPrettierPlugin],
|
|
49
|
+
});
|
|
50
|
+
case "tspconfig":
|
|
51
|
+
return await fn(code, {
|
|
52
|
+
...prettierConfig,
|
|
53
|
+
parser: "yaml",
|
|
54
|
+
plugins: [YamlPlugin],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Format TypeSpec code
|
|
60
|
+
* @param code Code to format
|
|
61
|
+
* @param prettierConfig Optional config for prettier.
|
|
62
|
+
* @returns Formatted code
|
|
63
|
+
*/
|
|
3
64
|
export async function formatTypeSpec(code, prettierConfig) {
|
|
4
|
-
const output = await
|
|
65
|
+
const output = await prettierFormat(code, {
|
|
5
66
|
...prettierConfig,
|
|
6
67
|
parser: "typespec",
|
|
7
68
|
plugins: [typespecPrettierPlugin],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/core/formatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/core/formatter.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,sBAAsB,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,MAAM,GAAG,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxC,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,UAAU,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAY,EACZ,SAAoB,EACpB,cAAwB;IAExB,OAAO,YAAY,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,SAAoB,EACpB,cAAwB;IAExB,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,EAAmD,EACnD,IAAY,EACZ,SAAoB,EACpB,cAAwB;IAExB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,EAAE,CAAC,IAAI,EAAE;gBACd,GAAG,cAAc;gBACjB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;aAClC,CAAC,CAAC;QACL,KAAK,WAAW;YACd,OAAO,MAAM,EAAE,CAAC,IAAI,EAAE;gBACpB,GAAG,cAAc;gBACjB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,CAAC,UAAU,CAAC;aACtB,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,cAAwB;IACzE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE;QACxC,GAAG,cAAc;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;KAClC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,cAAwB;IAExB,OAAO,KAAK,CAAC,IAAI,EAAE;QACjB,GAAG,cAAc;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;KAClC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../../src/core/type-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,MAAM,EACN,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,GAAG,EAGH,uBAAuB,EACvB,aAAa,EACb,IAAI,EACJ,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAE3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAEzD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAE3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,WAAW,CAE/D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAEzD;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,IAAI,CAErD;AACD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,KAAK,CAEvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,cAAc,CAEtF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,cAAc,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,uBAAuB,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../../src/core/type-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,MAAM,EACN,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,GAAG,EAGH,uBAAuB,EACvB,aAAa,EACb,IAAI,EACJ,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAE3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAEzD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAE3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,WAAW,CAE/D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAEzD;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,IAAI,CAErD;AACD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,KAAK,CAEvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,cAAc,CAEtF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,cAAc,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,uBAAuB,CAAC,GAAG,SAAS,CAwB9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,GACT,IAAI,IAAI,aAAa,GAAG;IAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAAC,cAAc,EAAE,UAAU,CAAA;CAAE,CAOnF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAQlD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,aAAa,GAClB,IAAI,IAAI,aAAa,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAU3D;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAM5E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GACnB,SAAS,IAAI,SAAS,GAAG;IAAE,IAAI,EAAE,EAAE,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,EACtD,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAwB,WAmBvD;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,GAAG,GAAG,SAAS,EACpB,OAAO,CAAC,EAAE;IAAE,yBAAyB,CAAC,EAAE,OAAO,CAAA;CAAE,GAChD,MAAM,CAcR"}
|
|
@@ -42,13 +42,22 @@ export function getParentTemplateNode(node) {
|
|
|
42
42
|
switch (node.kind) {
|
|
43
43
|
case SyntaxKind.ModelStatement:
|
|
44
44
|
case SyntaxKind.ScalarStatement:
|
|
45
|
-
case SyntaxKind.OperationStatement:
|
|
46
45
|
case SyntaxKind.UnionStatement:
|
|
47
46
|
case SyntaxKind.InterfaceStatement:
|
|
48
47
|
return node.templateParameters.length > 0 ? node : undefined;
|
|
48
|
+
case SyntaxKind.OperationStatement:
|
|
49
|
+
return node.templateParameters.length > 0
|
|
50
|
+
? node
|
|
51
|
+
: node.parent?.kind === SyntaxKind.InterfaceStatement
|
|
52
|
+
? node.parent.templateParameters.length > 0
|
|
53
|
+
? node.parent
|
|
54
|
+
: undefined
|
|
55
|
+
: undefined;
|
|
49
56
|
case SyntaxKind.OperationSignatureDeclaration:
|
|
50
57
|
case SyntaxKind.ModelProperty:
|
|
58
|
+
case SyntaxKind.UnionVariant:
|
|
51
59
|
case SyntaxKind.ModelExpression:
|
|
60
|
+
case SyntaxKind.UnionExpression:
|
|
52
61
|
return node.parent ? getParentTemplateNode(node.parent) : undefined;
|
|
53
62
|
default:
|
|
54
63
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/core/type-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAcL,UAAU,GAQX,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC;AACtC,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,IAAW;IAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,IAAW;IAC7D,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAU;IAC9C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU,CAAC,cAAc,CAAC;QAC/B,KAAK,UAAU,CAAC,eAAe,CAAC;QAChC,KAAK,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/core/type-utils.ts"],"names":[],"mappings":"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"}
|