@azure-tools/typespec-azure-core 0.74.0-dev.1 → 0.74.0-dev.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-unnamed-types.d.ts","sourceRoot":"","sources":["../../../src/rules/no-unnamed-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-unnamed-types.d.ts","sourceRoot":"","sources":["../../../src/rules/no-unnamed-types.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,kBAAkB;;yBA0F7B,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { createRule, isNullType, paramMessage, } from "@typespec/compiler";
|
|
1
|
+
import { createRule, fileRef, ignoreDiagnostics, isNullType, paramMessage, } from "@typespec/compiler";
|
|
2
2
|
import { SyntaxKind } from "@typespec/compiler/ast";
|
|
3
|
-
import { getHeaderFieldName, isBody, isBodyRoot, isHeader, isMetadata, isMultipartBodyProperty, isStatusCode, } from "@typespec/http";
|
|
3
|
+
import { getHeaderFieldName, getHttpOperation, isBody, isBodyRoot, isHeader, isMetadata, isMultipartBodyProperty, isStatusCode, } from "@typespec/http";
|
|
4
4
|
export const noUnnamedTypesRule = createRule({
|
|
5
5
|
name: "no-unnamed-types",
|
|
6
|
+
docs: fileRef.fromPackageRoot("src/rules/no-unnamed-types.md"),
|
|
6
7
|
description: "Azure services should not have anonymous models, union expressions, enum expressions, or scalar expressions. Define them as named declarations.",
|
|
7
8
|
severity: "warning",
|
|
8
9
|
url: "https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-unnamed-types",
|
|
@@ -14,7 +15,7 @@ export const noUnnamedTypesRule = createRule({
|
|
|
14
15
|
// Unions: collect all unnamed unions, then exclude specific patterns.
|
|
15
16
|
const excludedUnions = new Set();
|
|
16
17
|
const invalidUnions = new Set();
|
|
17
|
-
// Models:
|
|
18
|
+
// Models: collect anonymous property types and request bodies.
|
|
18
19
|
const invalidModels = new Set();
|
|
19
20
|
const excludedModels = new Set();
|
|
20
21
|
return {
|
|
@@ -29,10 +30,7 @@ export const noUnnamedTypesRule = createRule({
|
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
// Flag anonymous models used as property types.
|
|
32
|
-
if (type
|
|
33
|
-
type.name === "" &&
|
|
34
|
-
type.properties.size > 0 &&
|
|
35
|
-
!isHttpEnvelope(program, type) &&
|
|
33
|
+
if (needsModelName(program, type) &&
|
|
36
34
|
!isInsideTemplateArgument(type) &&
|
|
37
35
|
!isMultipartBodyProperty(program, prop)) {
|
|
38
36
|
invalidModels.add(type);
|
|
@@ -51,6 +49,13 @@ export const noUnnamedTypesRule = createRule({
|
|
|
51
49
|
if (operation.returnType.kind === "Union") {
|
|
52
50
|
excludedUnions.add(operation.returnType);
|
|
53
51
|
}
|
|
52
|
+
const { body } = ignoreDiagnostics(getHttpOperation(program, operation)).parameters;
|
|
53
|
+
if (body?.bodyKind === "single" &&
|
|
54
|
+
body.property !== undefined &&
|
|
55
|
+
needsModelName(program, body.type) &&
|
|
56
|
+
isInsideTemplateArgument(body.type)) {
|
|
57
|
+
invalidModels.add(body.type);
|
|
58
|
+
}
|
|
54
59
|
},
|
|
55
60
|
union: (union) => {
|
|
56
61
|
if (!union.name && !isOnlyNullableUnion(union)) {
|
|
@@ -72,6 +77,12 @@ export const noUnnamedTypesRule = createRule({
|
|
|
72
77
|
};
|
|
73
78
|
},
|
|
74
79
|
});
|
|
80
|
+
function needsModelName(program, type) {
|
|
81
|
+
return (type.kind === "Model" &&
|
|
82
|
+
type.name === "" &&
|
|
83
|
+
type.properties.size > 0 &&
|
|
84
|
+
!isHttpEnvelope(program, type));
|
|
85
|
+
}
|
|
75
86
|
/** Check if the type's source node is inside a template argument position */
|
|
76
87
|
function isInsideTemplateArgument(type) {
|
|
77
88
|
let node = type.node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-unnamed-types.js","sourceRoot":"","sources":["../../../src/rules/no-unnamed-types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EAGV,YAAY,
|
|
1
|
+
{"version":3,"file":"no-unnamed-types.js","sourceRoot":"","sources":["../../../src/rules/no-unnamed-types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure-tools/typespec-azure-core",
|
|
3
|
-
"version": "0.74.0-dev.
|
|
3
|
+
"version": "0.74.0-dev.2",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec Azure Core library",
|
|
6
6
|
"homepage": "https://azure.github.io/typespec-azure",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@typespec/rest": "^0.87.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@types/node": "^26.
|
|
55
|
+
"@types/node": "^26.6.4",
|
|
56
56
|
"@vitest/coverage-v8": "^5.0.0",
|
|
57
57
|
"@vitest/ui": "^5.0.0",
|
|
58
58
|
"rimraf": "^6.1.3",
|
|
@@ -60,10 +60,10 @@
|
|
|
60
60
|
"vitest": "^5.0.0",
|
|
61
61
|
"@typespec/compiler": "^1.17.0",
|
|
62
62
|
"@typespec/http": "^1.17.0",
|
|
63
|
-
"@typespec/rest": "^0.87.0",
|
|
64
63
|
"@typespec/openapi": "^1.17.0",
|
|
65
64
|
"@typespec/library-linter": "^0.87.0",
|
|
66
65
|
"@typespec/tspd": "^0.77.1",
|
|
66
|
+
"@typespec/rest": "^0.87.0",
|
|
67
67
|
"@typespec/versioning": "^0.87.0"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {
|