@typespec/compiler 0.49.0-dev.8 → 0.50.0-dev.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/dist/manifest.js +2 -2
- package/dist/src/config/config-to-options.d.ts +13 -5
- package/dist/src/config/config-to-options.d.ts.map +1 -1
- package/dist/src/config/config-to-options.js +18 -6
- package/dist/src/config/config-to-options.js.map +1 -1
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +87 -18
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/cli/actions/format.d.ts.map +1 -1
- package/dist/src/core/cli/actions/format.js +6 -1
- package/dist/src/core/cli/actions/format.js.map +1 -1
- package/dist/src/core/decorator-utils.d.ts +3 -0
- package/dist/src/core/decorator-utils.d.ts.map +1 -1
- package/dist/src/core/decorator-utils.js +6 -2
- package/dist/src/core/decorator-utils.js.map +1 -1
- package/dist/src/core/formatter-fs.d.ts +9 -1
- package/dist/src/core/formatter-fs.d.ts.map +1 -1
- package/dist/src/core/formatter-fs.js +12 -2
- package/dist/src/core/formatter-fs.js.map +1 -1
- package/dist/src/core/messages.d.ts +23 -2
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +9 -0
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +31 -0
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/scanner.d.ts +1 -1
- package/dist/src/core/scanner.d.ts.map +1 -1
- package/dist/src/core/scanner.js +2 -0
- package/dist/src/core/scanner.js.map +1 -1
- package/dist/src/core/types.d.ts +38 -34
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js +34 -33
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/formatter/print/printer.d.ts +1 -1
- package/dist/src/formatter/print/printer.d.ts.map +1 -1
- package/dist/src/formatter/print/printer.js +28 -33
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/init.d.ts.map +1 -1
- package/dist/src/init/init.js +22 -5
- package/dist/src/init/init.js.map +1 -1
- package/dist/src/lib/decorators.d.ts +39 -2
- package/dist/src/lib/decorators.d.ts.map +1 -1
- package/dist/src/lib/decorators.js +134 -47
- package/dist/src/lib/decorators.js.map +1 -1
- package/dist/src/server/serverlib.d.ts.map +1 -1
- package/dist/src/server/serverlib.js +3 -2
- package/dist/src/server/serverlib.js.map +1 -1
- package/dist/src/server/tmlanguage.js +1 -1
- package/dist/src/server/tmlanguage.js.map +1 -1
- package/dist/src/server/type-details.js +1 -1
- package/dist/src/server/type-details.js.map +1 -1
- package/dist/typespec.tmLanguage +1 -1
- package/lib/decorators.tsp +30 -0
- package/package.json +27 -27
package/dist/manifest.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { CompilerOptions } from "../core/options.js";
|
|
2
2
|
import { CompilerHost, Diagnostic } from "../core/types.js";
|
|
3
3
|
import { TypeSpecConfig } from "./types.js";
|
|
4
|
-
export interface ResolveCompilerOptionsOptions {
|
|
4
|
+
export interface ResolveCompilerOptionsOptions extends ConfigToOptionsOptions {
|
|
5
5
|
/** Absolute entrypoint path */
|
|
6
6
|
entrypoint: string;
|
|
7
7
|
/** Explicit config path. */
|
|
8
8
|
configPath?: string;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
}
|
|
10
|
+
export interface ConfigToOptionsOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Current working directory. This will be used to interpolate `{cwd}` in the config.
|
|
11
13
|
*/
|
|
12
|
-
cwd
|
|
14
|
+
cwd: string;
|
|
13
15
|
/**
|
|
14
16
|
* Environment variables.
|
|
15
|
-
* @default process.env
|
|
16
17
|
*/
|
|
17
18
|
env?: Record<string, string | undefined>;
|
|
18
19
|
/**
|
|
@@ -28,4 +29,11 @@ export interface ResolveCompilerOptionsOptions {
|
|
|
28
29
|
* @param compilerOptions
|
|
29
30
|
*/
|
|
30
31
|
export declare function resolveCompilerOptions(host: CompilerHost, options: ResolveCompilerOptionsOptions): Promise<[CompilerOptions, readonly Diagnostic[]]>;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the compiler options from the given raw TypeSpec config
|
|
34
|
+
* @param config TypeSpec config.
|
|
35
|
+
* @param options Options for interpolation in the config.
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveOptionsFromConfig(config: TypeSpecConfig, options: ConfigToOptionsOptions): import("../core/types.js").DiagnosticResult<CompilerOptions>;
|
|
31
39
|
//# sourceMappingURL=config-to-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-to-options.d.ts","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI5D,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"config-to-options.d.ts","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI5D,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC3E,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAEzC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,CAAC,eAAe,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAsBnD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,gEA8B/F"}
|
|
@@ -8,22 +8,34 @@ import { loadTypeSpecConfigForPath, validateConfigPathsAbsolute } from "./config
|
|
|
8
8
|
* @param compilerOptions
|
|
9
9
|
*/
|
|
10
10
|
export async function resolveCompilerOptions(host, options) {
|
|
11
|
-
var _a
|
|
12
|
-
const cwd = normalizePath((_a = options.cwd) !== null && _a !== void 0 ? _a : process.cwd());
|
|
11
|
+
var _a;
|
|
13
12
|
const diagnostics = createDiagnosticCollector();
|
|
14
13
|
const entrypointStat = await doIO(host.stat, options.entrypoint, (diag) => diagnostics.add(diag), { allowFileNotFound: true });
|
|
15
|
-
const configPath = (
|
|
14
|
+
const configPath = (_a = options.configPath) !== null && _a !== void 0 ? _a : ((entrypointStat === null || entrypointStat === void 0 ? void 0 : entrypointStat.isDirectory()) ? options.entrypoint : getDirectoryPath(options.entrypoint));
|
|
16
15
|
const config = await loadTypeSpecConfigForPath(host, configPath, options.configPath !== undefined, options.configPath === undefined);
|
|
17
16
|
config.diagnostics.forEach((x) => diagnostics.add(x));
|
|
17
|
+
const compilerOptions = diagnostics.pipe(resolveOptionsFromConfig(config, options));
|
|
18
|
+
return diagnostics.wrap(compilerOptions);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the compiler options from the given raw TypeSpec config
|
|
22
|
+
* @param config TypeSpec config.
|
|
23
|
+
* @param options Options for interpolation in the config.
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
export function resolveOptionsFromConfig(config, options) {
|
|
27
|
+
var _a, _b, _c;
|
|
28
|
+
const cwd = normalizePath(options.cwd);
|
|
29
|
+
const diagnostics = createDiagnosticCollector();
|
|
18
30
|
const configWithOverrides = {
|
|
19
31
|
...config,
|
|
20
32
|
...options.overrides,
|
|
21
|
-
options: mergeOptions(config.options, (
|
|
33
|
+
options: mergeOptions(config.options, (_a = options.overrides) === null || _a === void 0 ? void 0 : _a.options),
|
|
22
34
|
};
|
|
23
35
|
const expandedConfig = diagnostics.pipe(expandConfigVariables(configWithOverrides, {
|
|
24
36
|
cwd,
|
|
25
|
-
outputDir: (
|
|
26
|
-
env: (
|
|
37
|
+
outputDir: (_b = options.overrides) === null || _b === void 0 ? void 0 : _b.outputDir,
|
|
38
|
+
env: (_c = options.env) !== null && _c !== void 0 ? _c : {},
|
|
27
39
|
args: options.args,
|
|
28
40
|
}));
|
|
29
41
|
validateConfigPathsAbsolute(expandedConfig).forEach((x) => diagnostics.add(x));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-to-options.js","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG9F,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-to-options.js","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/checker.js
CHANGED
|
@@ -42,7 +42,8 @@ export function createChecker(program) {
|
|
|
42
42
|
};
|
|
43
43
|
const globalNamespaceNode = createGlobalNamespaceNode();
|
|
44
44
|
const globalNamespaceType = createGlobalNamespaceType();
|
|
45
|
-
|
|
45
|
+
// Caches the deprecation test of nodes in the program
|
|
46
|
+
const nodeDeprecationMap = new Map();
|
|
46
47
|
const errorType = createType({ kind: "Intrinsic", name: "ErrorType" });
|
|
47
48
|
const voidType = createType({ kind: "Intrinsic", name: "void" });
|
|
48
49
|
const neverType = createType({ kind: "Intrinsic", name: "never" });
|
|
@@ -76,20 +77,19 @@ export function createChecker(program) {
|
|
|
76
77
|
for (const file of program.sourceFiles.values()) {
|
|
77
78
|
mergeSourceFile(file);
|
|
78
79
|
}
|
|
79
|
-
for (const file of program.sourceFiles.values()) {
|
|
80
|
-
setUsingsForFile(file);
|
|
81
|
-
}
|
|
82
80
|
const typespecNamespaceBinding = globalNamespaceNode.symbol.exports.get("TypeSpec");
|
|
83
81
|
if (typespecNamespaceBinding) {
|
|
84
82
|
// the typespec namespace binding will be absent if we've passed
|
|
85
83
|
// the no-std-lib option.
|
|
86
84
|
// the first declaration here is the JS file for the typespec script.
|
|
87
|
-
typespecNamespaceNode = typespecNamespaceBinding.declarations[1];
|
|
88
85
|
initializeTypeSpecIntrinsics();
|
|
89
86
|
for (const file of program.sourceFiles.values()) {
|
|
90
87
|
addUsingSymbols(typespecNamespaceBinding.exports, file.locals);
|
|
91
88
|
}
|
|
92
89
|
}
|
|
90
|
+
for (const file of program.sourceFiles.values()) {
|
|
91
|
+
setUsingsForFile(file);
|
|
92
|
+
}
|
|
93
93
|
let evalContext = undefined;
|
|
94
94
|
const checker = {
|
|
95
95
|
getTypeForNode,
|
|
@@ -191,9 +191,6 @@ export function createChecker(program) {
|
|
|
191
191
|
usedUsing.add(namespaceSym);
|
|
192
192
|
addUsingSymbols(sym.exports, parentNs.locals);
|
|
193
193
|
}
|
|
194
|
-
if (typespecNamespaceNode) {
|
|
195
|
-
addUsingSymbols(typespecNamespaceBinding.exports, file.locals);
|
|
196
|
-
}
|
|
197
194
|
}
|
|
198
195
|
function applyAugmentDecorators(node) {
|
|
199
196
|
if (!node.statements || !isArray(node.statements)) {
|
|
@@ -525,6 +522,41 @@ export function createChecker(program) {
|
|
|
525
522
|
reportDeprecation(program, target, deprecationDetails.message, reportCheckerDiagnostic);
|
|
526
523
|
}
|
|
527
524
|
}
|
|
525
|
+
function isTypeReferenceContextDeprecated(node) {
|
|
526
|
+
function checkDeprecatedNode(node) {
|
|
527
|
+
var _a;
|
|
528
|
+
// Perform a simple check if the parent node is deprecated. We do this
|
|
529
|
+
// out of band because `checkDirectives` usually gets called on the parent
|
|
530
|
+
// type after child types have already been checked (including their
|
|
531
|
+
// deprecations).
|
|
532
|
+
if (!nodeDeprecationMap.has(node)) {
|
|
533
|
+
nodeDeprecationMap.set(node, ((_a = node.directives) !== null && _a !== void 0 ? _a : []).findIndex((d) => d.target.sv === "deprecated") >= 0);
|
|
534
|
+
}
|
|
535
|
+
return nodeDeprecationMap.get(node);
|
|
536
|
+
}
|
|
537
|
+
// Walk the parent hierarchy up to a node which might have a
|
|
538
|
+
// deprecation which would mitigate the deprecation warning of the original
|
|
539
|
+
// type reference. This is done to prevent multiple deprecation notices from
|
|
540
|
+
// being raised when a parent context is already being deprecated.
|
|
541
|
+
switch (node.kind) {
|
|
542
|
+
case SyntaxKind.ModelStatement:
|
|
543
|
+
return checkDeprecatedNode(node);
|
|
544
|
+
case SyntaxKind.OperationStatement:
|
|
545
|
+
return (checkDeprecatedNode(node) ||
|
|
546
|
+
(node.parent.kind === SyntaxKind.InterfaceStatement &&
|
|
547
|
+
isTypeReferenceContextDeprecated(node.parent)));
|
|
548
|
+
case SyntaxKind.InterfaceStatement:
|
|
549
|
+
return checkDeprecatedNode(node);
|
|
550
|
+
case SyntaxKind.IntersectionExpression:
|
|
551
|
+
case SyntaxKind.UnionExpression:
|
|
552
|
+
case SyntaxKind.ModelProperty:
|
|
553
|
+
case SyntaxKind.OperationSignatureDeclaration:
|
|
554
|
+
case SyntaxKind.OperationSignatureReference:
|
|
555
|
+
return isTypeReferenceContextDeprecated(node.parent);
|
|
556
|
+
default:
|
|
557
|
+
return false;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
528
560
|
function checkTypeReferenceArgs(node, mapper) {
|
|
529
561
|
const args = [];
|
|
530
562
|
if (node.kind !== SyntaxKind.TypeReference) {
|
|
@@ -680,10 +712,14 @@ export function createChecker(program) {
|
|
|
680
712
|
}
|
|
681
713
|
}
|
|
682
714
|
}
|
|
683
|
-
// Check for deprecations here, first on symbol, then on type.
|
|
715
|
+
// Check for deprecations here, first on symbol, then on type. However,
|
|
716
|
+
// don't raise deprecation when the usage site is also a deprecated
|
|
717
|
+
// declaration.
|
|
684
718
|
const declarationNode = sym === null || sym === void 0 ? void 0 : sym.declarations[0];
|
|
685
719
|
if (declarationNode && mapper === undefined) {
|
|
686
|
-
|
|
720
|
+
if (!isTypeReferenceContextDeprecated(node.parent)) {
|
|
721
|
+
checkDeprecated(baseType, declarationNode, node);
|
|
722
|
+
}
|
|
687
723
|
}
|
|
688
724
|
return baseType;
|
|
689
725
|
}
|
|
@@ -2323,10 +2359,7 @@ export function createChecker(program) {
|
|
|
2323
2359
|
((_c = prop.parent.parent.parent) === null || _c === void 0 ? void 0 : _c.kind) === SyntaxKind.OperationStatement) {
|
|
2324
2360
|
const doc = extractParamDoc(prop.parent.parent.parent, type.name);
|
|
2325
2361
|
if (doc) {
|
|
2326
|
-
type.decorators.unshift(
|
|
2327
|
-
decorator: $docFromComment,
|
|
2328
|
-
args: [{ value: createLiteralType(doc), jsValue: doc }],
|
|
2329
|
-
});
|
|
2362
|
+
type.decorators.unshift(createDocFromCommentDecorator("self", doc));
|
|
2330
2363
|
}
|
|
2331
2364
|
}
|
|
2332
2365
|
finishType(type);
|
|
@@ -2334,6 +2367,15 @@ export function createChecker(program) {
|
|
|
2334
2367
|
pendingResolutions.finish(symId, ResolutionKind.Type);
|
|
2335
2368
|
return type;
|
|
2336
2369
|
}
|
|
2370
|
+
function createDocFromCommentDecorator(key, doc) {
|
|
2371
|
+
return {
|
|
2372
|
+
decorator: $docFromComment,
|
|
2373
|
+
args: [
|
|
2374
|
+
{ value: createLiteralType(key), jsValue: key },
|
|
2375
|
+
{ value: createLiteralType(doc), jsValue: doc },
|
|
2376
|
+
],
|
|
2377
|
+
};
|
|
2378
|
+
}
|
|
2337
2379
|
function isValueType(type) {
|
|
2338
2380
|
if (type === nullType) {
|
|
2339
2381
|
return true;
|
|
@@ -2533,10 +2575,16 @@ export function createChecker(program) {
|
|
|
2533
2575
|
// Doc comment should always be the first decorator in case an explicit @doc must override it.
|
|
2534
2576
|
const docComment = extractMainDoc(targetType);
|
|
2535
2577
|
if (docComment) {
|
|
2536
|
-
decorators.unshift(
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2578
|
+
decorators.unshift(createDocFromCommentDecorator("self", docComment));
|
|
2579
|
+
}
|
|
2580
|
+
if (targetType.kind === "Operation") {
|
|
2581
|
+
const returnTypesDocs = extractReturnsDocs(targetType);
|
|
2582
|
+
if (returnTypesDocs.returns) {
|
|
2583
|
+
decorators.unshift(createDocFromCommentDecorator("returns", returnTypesDocs.returns));
|
|
2584
|
+
}
|
|
2585
|
+
if (returnTypesDocs.errors) {
|
|
2586
|
+
decorators.unshift(createDocFromCommentDecorator("errors", returnTypesDocs.errors));
|
|
2587
|
+
}
|
|
2540
2588
|
}
|
|
2541
2589
|
return decorators;
|
|
2542
2590
|
}
|
|
@@ -4437,6 +4485,27 @@ function extractMainDoc(type) {
|
|
|
4437
4485
|
const trimmed = mainDoc.trim();
|
|
4438
4486
|
return trimmed === "" ? undefined : trimmed;
|
|
4439
4487
|
}
|
|
4488
|
+
function extractReturnsDocs(type) {
|
|
4489
|
+
var _a;
|
|
4490
|
+
const result = {
|
|
4491
|
+
returns: undefined,
|
|
4492
|
+
errors: undefined,
|
|
4493
|
+
};
|
|
4494
|
+
if (((_a = type.node) === null || _a === void 0 ? void 0 : _a.docs) === undefined) {
|
|
4495
|
+
return result;
|
|
4496
|
+
}
|
|
4497
|
+
for (const doc of type.node.docs) {
|
|
4498
|
+
for (const tag of doc.tags) {
|
|
4499
|
+
if (tag.kind === SyntaxKind.DocReturnsTag) {
|
|
4500
|
+
result.returns = getDocContent(tag.content);
|
|
4501
|
+
}
|
|
4502
|
+
if (tag.kind === SyntaxKind.DocErrorsTag) {
|
|
4503
|
+
result.errors = getDocContent(tag.content);
|
|
4504
|
+
}
|
|
4505
|
+
}
|
|
4506
|
+
}
|
|
4507
|
+
return result;
|
|
4508
|
+
}
|
|
4440
4509
|
function extractParamDoc(node, paramName) {
|
|
4441
4510
|
if (node.docs === undefined) {
|
|
4442
4511
|
return undefined;
|