@microsoft/typespec-msgraph 0.0.1-Preview.15 → 0.0.1-Preview.17
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/src/components/operation-element.js +1 -1
- package/dist/src/components/operation-element.js.map +1 -1
- package/dist/src/components/property-element.js +1 -1
- package/dist/src/components/property-element.js.map +1 -1
- package/dist/src/components/structured-type-element.d.ts.map +1 -1
- package/dist/src/components/structured-type-element.js +4 -4
- package/dist/src/components/structured-type-element.js.map +1 -1
- package/dist/src/decorators/graph-route.d.ts.map +1 -1
- package/dist/src/decorators/graph-route.js +3 -0
- package/dist/src/decorators/graph-route.js.map +1 -1
- package/dist/src/decorators/index.d.ts +12 -10
- package/dist/src/decorators/index.d.ts.map +1 -1
- package/dist/src/decorators/index.js +12 -10
- package/dist/src/decorators/index.js.map +1 -1
- package/dist/src/decorators/limited-charset.d.ts +9 -0
- package/dist/src/decorators/limited-charset.d.ts.map +1 -0
- package/dist/src/decorators/limited-charset.js +13 -0
- package/dist/src/decorators/limited-charset.js.map +1 -0
- package/dist/src/decorators/media.d.ts +10 -0
- package/dist/src/decorators/media.d.ts.map +1 -0
- package/dist/src/decorators/media.js +16 -0
- package/dist/src/decorators/media.js.map +1 -0
- package/dist/src/decorators/passthrough-address-url-msa.d.ts +2 -3
- package/dist/src/decorators/passthrough-address-url-msa.d.ts.map +1 -1
- package/dist/src/decorators/passthrough-address-url-msa.js +2 -4
- package/dist/src/decorators/passthrough-address-url-msa.js.map +1 -1
- package/dist/src/decorators/passthrough-address-url.d.ts +2 -3
- package/dist/src/decorators/passthrough-address-url.d.ts.map +1 -1
- package/dist/src/decorators/passthrough-address-url.js +2 -4
- package/dist/src/decorators/passthrough-address-url.js.map +1 -1
- package/dist/src/decorators/workload-namespace.d.ts +10 -0
- package/dist/src/decorators/workload-namespace.d.ts.map +1 -0
- package/dist/src/decorators/workload-namespace.js +19 -0
- package/dist/src/decorators/workload-namespace.js.map +1 -0
- package/dist/src/dom/error-interceptor.d.ts +2 -0
- package/dist/src/dom/error-interceptor.d.ts.map +1 -0
- package/dist/src/dom/error-interceptor.js +13 -0
- package/dist/src/dom/error-interceptor.js.map +1 -0
- package/dist/src/dom/renderer.d.ts +1 -0
- package/dist/src/dom/renderer.d.ts.map +1 -1
- package/dist/src/dom/renderer.js +1 -0
- package/dist/src/dom/renderer.js.map +1 -1
- package/dist/src/entities/address-url.d.ts +3 -2
- package/dist/src/entities/address-url.d.ts.map +1 -1
- package/dist/src/entities/address-url.js +7 -2
- package/dist/src/entities/address-url.js.map +1 -1
- package/dist/src/entities/annotations.d.ts.map +1 -1
- package/dist/src/entities/annotations.js +26 -20
- package/dist/src/entities/annotations.js.map +1 -1
- package/dist/src/entities/model.d.ts +6 -5
- package/dist/src/entities/model.d.ts.map +1 -1
- package/dist/src/entities/model.js +7 -5
- package/dist/src/entities/model.js.map +1 -1
- package/dist/src/entities/ms-graph-route.d.ts.map +1 -1
- package/dist/src/entities/ms-graph-route.js +8 -2
- package/dist/src/entities/ms-graph-route.js.map +1 -1
- package/dist/src/entities/namespace.js +3 -3
- package/dist/src/entities/namespace.js.map +1 -1
- package/dist/src/entities/operation.d.ts +1 -0
- package/dist/src/entities/operation.d.ts.map +1 -1
- package/dist/src/entities/operation.js +3 -2
- package/dist/src/entities/operation.js.map +1 -1
- package/dist/src/lib.d.ts +2 -0
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +1 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/linter.d.ts.map +1 -1
- package/dist/src/linter.js +4 -2
- package/dist/src/linter.js.map +1 -1
- package/dist/src/rules/address-url.d.ts +1 -0
- package/dist/src/rules/address-url.d.ts.map +1 -1
- package/dist/src/rules/address-url.js +62 -0
- package/dist/src/rules/address-url.js.map +1 -1
- package/dist/src/rules/computed.d.ts +0 -2
- package/dist/src/rules/computed.d.ts.map +1 -1
- package/dist/src/rules/computed.js +5 -8
- package/dist/src/rules/computed.js.map +1 -1
- package/dist/src/rules/expand.d.ts.map +1 -1
- package/dist/src/rules/expand.js +3 -1
- package/dist/src/rules/expand.js.map +1 -1
- package/dist/src/rules/filter.d.ts.map +1 -1
- package/dist/src/rules/filter.js +15 -3
- package/dist/src/rules/filter.js.map +1 -1
- package/dist/src/rules/graph-route.d.ts.map +1 -1
- package/dist/src/rules/graph-route.js +19 -11
- package/dist/src/rules/graph-route.js.map +1 -1
- package/dist/src/rules/index.d.ts +2 -1
- package/dist/src/rules/index.d.ts.map +1 -1
- package/dist/src/rules/index.js +2 -1
- package/dist/src/rules/index.js.map +1 -1
- package/dist/src/rules/limited-charset.d.ts +3 -0
- package/dist/src/rules/limited-charset.d.ts.map +1 -0
- package/dist/src/rules/limited-charset.js +42 -0
- package/dist/src/rules/limited-charset.js.map +1 -0
- package/dist/src/rules/media.d.ts +10 -0
- package/dist/src/rules/media.d.ts.map +1 -0
- package/dist/src/rules/media.js +122 -0
- package/dist/src/rules/media.js.map +1 -0
- package/dist/src/rules/namespace.d.ts +1 -0
- package/dist/src/rules/namespace.d.ts.map +1 -1
- package/dist/src/rules/namespace.js +21 -0
- package/dist/src/rules/namespace.js.map +1 -1
- package/dist/src/rules/required-for-create.d.ts.map +1 -1
- package/dist/src/rules/required-for-create.js +3 -2
- package/dist/src/rules/required-for-create.js.map +1 -1
- package/dist/src/utils.d.ts +3 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +81 -1
- package/dist/src/utils.js.map +1 -1
- package/dist/src/validate.d.ts.map +1 -1
- package/dist/src/validate.js +4 -1
- package/dist/src/validate.js.map +1 -1
- package/lib/bodies.tsp +71 -0
- package/lib/decorators.tsp +22 -12
- package/lib/msgraph.tsp +1 -0
- package/lib/porcelain.tsp +43 -18
- package/lib/responses.tsp +4 -52
- package/lib/shared-models.tsp +2 -2
- package/package.json +4 -4
- package/dist/src/decorators/has-stream.d.ts +0 -10
- package/dist/src/decorators/has-stream.d.ts.map +0 -1
- package/dist/src/decorators/has-stream.js +0 -17
- package/dist/src/decorators/has-stream.js.map +0 -1
- package/dist/src/rules/has-stream.d.ts +0 -3
- package/dist/src/rules/has-stream.d.ts.map +0 -1
- package/dist/src/rules/has-stream.js +0 -30
- package/dist/src/rules/has-stream.js.map +0 -1
|
@@ -3,6 +3,7 @@ import { reportDiagnostic } from "../lib.js";
|
|
|
3
3
|
import { navigateTypesInNamespace } from "@typespec/compiler";
|
|
4
4
|
import { GetDeclaredNamespaces } from "../entities/namespace.js";
|
|
5
5
|
import { hasPassthroughAddressUrlMsa } from "../decorators/passthrough-address-url-msa.js";
|
|
6
|
+
import { getIdForType } from "../utils.js";
|
|
6
7
|
/**
|
|
7
8
|
* @addressUrl only applies to either routed interfaces (entity sets, singletons and navigation properties) or action operations.
|
|
8
9
|
*/
|
|
@@ -79,6 +80,67 @@ export function validatePassthroughAddressUrlMsaOnlyAppliesToRoutedInterfacesOrA
|
|
|
79
80
|
});
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
export function validatePassthroughAddressUrlDecoratorIsUsedTogetherWithAddressUrlDecorator(program) {
|
|
84
|
+
for (const namespace of GetDeclaredNamespaces(program)) {
|
|
85
|
+
navigateTypesInNamespace(namespace, {
|
|
86
|
+
interface: (theInterface) => {
|
|
87
|
+
if (hasPassthroughAddressUrl(program, theInterface) &&
|
|
88
|
+
!hasAddressUrl(program, theInterface)) {
|
|
89
|
+
reportDiagnostic(program, {
|
|
90
|
+
code: "decorator-missing-dependencies",
|
|
91
|
+
target: theInterface,
|
|
92
|
+
messageId: "default",
|
|
93
|
+
format: {
|
|
94
|
+
decorator: "@passthroughAddressUrl",
|
|
95
|
+
required: "@addressUrl",
|
|
96
|
+
location: `interface "${getIdForType(program, theInterface)}"`,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (hasPassthroughAddressUrlMsa(program, theInterface) &&
|
|
101
|
+
!hasAddressUrlMsa(program, theInterface)) {
|
|
102
|
+
reportDiagnostic(program, {
|
|
103
|
+
code: "decorator-missing-dependencies",
|
|
104
|
+
target: theInterface,
|
|
105
|
+
messageId: "default",
|
|
106
|
+
format: {
|
|
107
|
+
decorator: "@passthroughAddressUrlMsa",
|
|
108
|
+
required: "@addressUrlMsa",
|
|
109
|
+
location: `interface "${getIdForType(program, theInterface)}"`,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
operation: (operation) => {
|
|
115
|
+
if (hasPassthroughAddressUrl(program, operation) && !hasAddressUrl(program, operation)) {
|
|
116
|
+
reportDiagnostic(program, {
|
|
117
|
+
code: "decorator-missing-dependencies",
|
|
118
|
+
target: operation,
|
|
119
|
+
messageId: "default",
|
|
120
|
+
format: {
|
|
121
|
+
decorator: "@passthroughAddressUrl",
|
|
122
|
+
required: "@addressUrl",
|
|
123
|
+
location: `operation "${getIdForType(program, operation)}"`,
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (hasPassthroughAddressUrlMsa(program, operation) &&
|
|
128
|
+
!hasAddressUrlMsa(program, operation)) {
|
|
129
|
+
reportDiagnostic(program, {
|
|
130
|
+
code: "decorator-missing-dependencies",
|
|
131
|
+
target: operation,
|
|
132
|
+
messageId: "default",
|
|
133
|
+
format: {
|
|
134
|
+
decorator: "@passthroughAddressUrlMsa",
|
|
135
|
+
required: "@addressUrlMsa",
|
|
136
|
+
location: `operation "${getIdForType(program, operation)}"`,
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
82
144
|
function validateAddressUrlApplication(program, target, decorator) {
|
|
83
145
|
if (target.kind === "Interface" && hasGraphRoute(program, target)) {
|
|
84
146
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-url.js","sourceRoot":"","sources":["../../../src/rules/address-url.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAiC,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"address-url.js","sourceRoot":"","sources":["../../../src/rules/address-url.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Program } from "@typespec/compiler";
|
|
2
2
|
/**
|
|
3
|
-
* @computed cannot be combined with nullable
|
|
4
|
-
* @computed cannot be combined with @required
|
|
5
3
|
* @computed cannot be combined with @writeOnly
|
|
6
4
|
*/
|
|
7
5
|
export declare function validateComputedCannotBeCombined(program: Program): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../../src/rules/computed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA4B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../../src/rules/computed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA4B,MAAM,oBAAoB,CAAC;AAMvE;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,OAAO,QAoChE"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { navigateTypesInNamespace } from "@typespec/compiler";
|
|
2
2
|
import { isComputed } from "../decorators/computed.js";
|
|
3
|
-
import { isWriteOnly } from "../index.js";
|
|
3
|
+
import { isRequiredForCreate, isWriteOnly } from "../index.js";
|
|
4
4
|
import { reportDiagnostic } from "../lib.js";
|
|
5
|
-
import { isTypeNullable } from "../utils.js";
|
|
6
5
|
import { GetDeclaredNamespaces } from "../entities/namespace.js";
|
|
7
6
|
/**
|
|
8
|
-
* @computed cannot be combined with nullable
|
|
9
|
-
* @computed cannot be combined with @required
|
|
10
7
|
* @computed cannot be combined with @writeOnly
|
|
11
8
|
*/
|
|
12
9
|
export function validateComputedCannotBeCombined(program) {
|
|
@@ -16,26 +13,26 @@ export function validateComputedCannotBeCombined(program) {
|
|
|
16
13
|
if (!isComputed(program, property)) {
|
|
17
14
|
return;
|
|
18
15
|
}
|
|
19
|
-
if (
|
|
16
|
+
if (isWriteOnly(program, property)) {
|
|
20
17
|
reportDiagnostic(program, {
|
|
21
18
|
code: "decorator-invalid-use",
|
|
22
19
|
target: property,
|
|
23
20
|
messageId: "default",
|
|
24
21
|
format: {
|
|
25
22
|
decorator: "@computed",
|
|
26
|
-
other: "
|
|
23
|
+
other: "@writeOnly",
|
|
27
24
|
location: "property",
|
|
28
25
|
},
|
|
29
26
|
});
|
|
30
27
|
}
|
|
31
|
-
if (
|
|
28
|
+
if (isRequiredForCreate(program, property)) {
|
|
32
29
|
reportDiagnostic(program, {
|
|
33
30
|
code: "decorator-invalid-use",
|
|
34
31
|
target: property,
|
|
35
32
|
messageId: "default",
|
|
36
33
|
format: {
|
|
37
34
|
decorator: "@computed",
|
|
38
|
-
other: "@
|
|
35
|
+
other: "@requiredForCreate",
|
|
39
36
|
location: "property",
|
|
40
37
|
},
|
|
41
38
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../../src/rules/computed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../../src/rules/computed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAgB;IAC/D,KAAK,MAAM,SAAS,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;QACtD,wBAAwB,CAAC,SAAS,EAAE;YAClC,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;oBAClC,OAAO;iBACR;gBAED,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;oBAClC,gBAAgB,CAAC,OAAO,EAAE;wBACxB,IAAI,EAAE,uBAAuB;wBAC7B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,SAAS;wBACpB,MAAM,EAAE;4BACN,SAAS,EAAE,WAAW;4BACtB,KAAK,EAAE,YAAY;4BACnB,QAAQ,EAAE,UAAU;yBACrB;qBACF,CAAC,CAAC;iBACJ;gBAED,IAAI,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;oBAC1C,gBAAgB,CAAC,OAAO,EAAE;wBACxB,IAAI,EAAE,uBAAuB;wBAC7B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,SAAS;wBACpB,MAAM,EAAE;4BACN,SAAS,EAAE,WAAW;4BACtB,KAAK,EAAE,oBAAoB;4BAC3B,QAAQ,EAAE,UAAU;yBACrB;qBACF,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAAA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../../src/rules/expand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,OAAO,EAAqD,MAAM,oBAAoB,CAAC;AAOvG,wBAAgB,uCAAuC,CAAC,OAAO,EAAE,OAAO,QA0BvE;AAED,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../../src/rules/expand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,OAAO,EAAqD,MAAM,oBAAoB,CAAC;AAOvG,wBAAgB,uCAAuC,CAAC,OAAO,EAAE,OAAO,QA0BvE;AAED,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,QAyCtE"}
|
package/dist/src/rules/expand.js
CHANGED
|
@@ -46,7 +46,9 @@ export function validateExpandOnlyNavigationProperties(program) {
|
|
|
46
46
|
const navigationProperties = [...walkPropertiesInherited(modelType)]
|
|
47
47
|
.filter((property) => isContains(program, property) || isReferences(program, property))
|
|
48
48
|
.map((property) => property.name);
|
|
49
|
-
const invalidExpansions = expanded.filter((property) =>
|
|
49
|
+
const invalidExpansions = expanded.filter((property) => {
|
|
50
|
+
return !navigationProperties.includes(property) && property !== "$value";
|
|
51
|
+
});
|
|
50
52
|
if (!invalidExpansions.length) {
|
|
51
53
|
return;
|
|
52
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../../src/rules/expand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,UAAU,uCAAuC,CAAC,OAAgB;IACtE,KAAK,MAAM,SAAS,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;QACtD,wBAAwB,CAAC,SAAS,EAAE;YAClC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;oBACjC,OAAO;iBACR;gBAED,IAAI,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,KAAK,EAAE;oBAClD,IAAG,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,SAAS,EAAE;wBAC5D,OAAO;qBACR;iBACF;gBAED,gBAAgB,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,uBAAuB;oBAC7B,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE,WAAW;oBACtB,MAAM,EAAE;wBACN,SAAS,EAAE,SAAS;wBACpB,MAAM,EAAE,eAAe;qBACxB;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,sCAAsC,CAAC,OAAgB;IACrE,KAAK,MAAM,SAAS,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;QACtD,wBAAwB,CAAC,SAAS,EAAE;YAClC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE;gBACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC/C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,OAAO;iBACR;gBAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,EAAE;oBACf,OAAO;iBACR;gBAED,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE,UAAU,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC,CAAC,UAAU,CAAC;gBACxF,MAAM,oBAAoB,GAAG,CAAC,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;qBACjE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;qBACtF,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEpC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CACvC,CAAC,QAAQ,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../../src/rules/expand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/rules/filter.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/rules/filter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwB,OAAO,EAAuF,MAAM,oBAAoB,CAAC;AAGxJ,wBAAgB,yDAAyD,CAAC,OAAO,EAAE,OAAO,QA4BzF;AAED,wBAAgB,0CAA0C,CAAC,OAAO,EAAE,OAAO,QAkD1E;AAED,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,QAyBtE"}
|
package/dist/src/rules/filter.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getFilter, isFilter } from "../index.js";
|
|
2
2
|
import { getOperationVerb } from "@typespec/http";
|
|
3
|
-
import { getNavigationSourceType, isTypeCollection } from "../utils.js";
|
|
3
|
+
import { getNavigationSourceType, getNestedPropertyNames, isTypeCollection } from "../utils.js";
|
|
4
4
|
import { reportDiagnostic } from "../lib.js";
|
|
5
5
|
import { navigateTypesInNamespace, walkPropertiesInherited } from "@typespec/compiler";
|
|
6
6
|
import { GetDeclaredNamespaces } from "../entities/namespace.js";
|
|
@@ -45,8 +45,20 @@ export function validateFilterOnlyAppliesToModelProperties(program) {
|
|
|
45
45
|
}
|
|
46
46
|
const modelType = returnType.indexer ? returnType.indexer.value : returnType;
|
|
47
47
|
const filterProperties = getFilter(program, operation);
|
|
48
|
-
|
|
49
|
-
const
|
|
48
|
+
let inheritedModelProperties = [...walkPropertiesInherited(modelType)].map((property) => property.name);
|
|
49
|
+
const inheritedProperties = walkPropertiesInherited(modelType);
|
|
50
|
+
const propertiesOfTypeModel = [];
|
|
51
|
+
for (const property of inheritedProperties) {
|
|
52
|
+
if (property.type.kind === "Model") {
|
|
53
|
+
propertiesOfTypeModel.push(property.type);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (propertiesOfTypeModel.length > 0) {
|
|
57
|
+
// walk through the properties of the models recursively
|
|
58
|
+
const nestedProperties = getNestedPropertyNames(program, propertiesOfTypeModel);
|
|
59
|
+
inheritedModelProperties = inheritedModelProperties.concat(nestedProperties);
|
|
60
|
+
}
|
|
61
|
+
const invalidFilterProperties = filterProperties.filter((property) => !inheritedModelProperties.includes(property));
|
|
50
62
|
if (!invalidFilterProperties.length) {
|
|
51
63
|
return;
|
|
52
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/rules/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/rules/filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-route.d.ts","sourceRoot":"","sources":["../../../src/rules/graph-route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAInG;;GAEG;AAEH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,QAW9D;AAyBD,wBAAgB,oDAAoD,CAAC,OAAO,EAAE,OAAO,QAWpF;AAqDD,wBAAgB,wDAAwD,CAAC,OAAO,EAAE,OAAO,QA2BxF;AAeD;;GAEG;AACH,wBAAgB,wDAAwD,CAAC,OAAO,EAAE,OAAO,QA0BxF;AAED,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"graph-route.d.ts","sourceRoot":"","sources":["../../../src/rules/graph-route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAInG;;GAEG;AAEH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,QAW9D;AAyBD,wBAAgB,oDAAoD,CAAC,OAAO,EAAE,OAAO,QAWpF;AAqDD,wBAAgB,wDAAwD,CAAC,OAAO,EAAE,OAAO,QA2BxF;AAeD;;GAEG;AACH,wBAAgB,wDAAwD,CAAC,OAAO,EAAE,OAAO,QA0BxF;AAED,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,QAwBtE;AAgBD,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,OAAO,QA6BxE"}
|
|
@@ -162,29 +162,37 @@ export function validateDuplicateGraphRoutesNotAllowed(program) {
|
|
|
162
162
|
for (const namespace of GetDeclaredNamespaces(program)) {
|
|
163
163
|
navigateTypesInNamespace(namespace, {
|
|
164
164
|
interface: ($interface) => {
|
|
165
|
-
const existingRoutes = getGraphRoutes(program);
|
|
166
165
|
if (!hasGraphRoute(program, $interface)) {
|
|
167
166
|
return;
|
|
168
167
|
}
|
|
168
|
+
const existingRoutes = getGraphRoutes(program);
|
|
169
169
|
const graphRoutePaths = getGraphRoutePaths(program, $interface);
|
|
170
|
+
const uniqueGraphRoutePaths = new Set(graphRoutePaths);
|
|
171
|
+
if (graphRoutePaths.length !== uniqueGraphRoutePaths.size) {
|
|
172
|
+
const duplicates = graphRoutePaths.filter((path, index) => graphRoutePaths.indexOf(path) !== index);
|
|
173
|
+
reportDuplicateRouteDiagnostics(program, $interface, duplicates[0], existingRoutes);
|
|
174
|
+
}
|
|
170
175
|
for (const graphRoutePath of graphRoutePaths) {
|
|
171
176
|
if (existingRoutes.has(graphRoutePath) && existingRoutes.get(graphRoutePath) !== $interface) {
|
|
172
|
-
|
|
173
|
-
code: "decorator-invalid-use",
|
|
174
|
-
target: $interface,
|
|
175
|
-
messageId: "duplicateGraphRouteNotAllowed",
|
|
176
|
-
format: {
|
|
177
|
-
target: getIdForType(program, $interface),
|
|
178
|
-
graphRoute: graphRoutePath,
|
|
179
|
-
existing: getIdForType(program, existingRoutes.get(graphRoutePath))
|
|
180
|
-
},
|
|
181
|
-
});
|
|
177
|
+
reportDuplicateRouteDiagnostics(program, $interface, graphRoutePath, existingRoutes);
|
|
182
178
|
}
|
|
183
179
|
}
|
|
184
180
|
}
|
|
185
181
|
});
|
|
186
182
|
}
|
|
187
183
|
}
|
|
184
|
+
function reportDuplicateRouteDiagnostics(program, $interface, graphRoutePath, existingRoutes) {
|
|
185
|
+
reportDiagnostic(program, {
|
|
186
|
+
code: "decorator-invalid-use",
|
|
187
|
+
target: $interface,
|
|
188
|
+
messageId: "duplicateGraphRouteNotAllowed",
|
|
189
|
+
format: {
|
|
190
|
+
target: getIdForType(program, $interface),
|
|
191
|
+
graphRoute: graphRoutePath,
|
|
192
|
+
existing: getIdForType(program, existingRoutes.get(graphRoutePath))
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
}
|
|
188
196
|
export function validateGraphRouteParametersMustBeUnique(program) {
|
|
189
197
|
for (const namespace of GetDeclaredNamespaces(program)) {
|
|
190
198
|
navigateTypesInNamespace(namespace, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-route.js","sourceRoot":"","sources":["../../../src/rules/graph-route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"graph-route.js","sourceRoot":"","sources":["../../../src/rules/graph-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,8 @@ export * from "./extends-on-same-type.js";
|
|
|
13
13
|
export * from "./filter.js";
|
|
14
14
|
export * from "./function.js";
|
|
15
15
|
export * from "./graph-route.js";
|
|
16
|
-
export * from "./
|
|
16
|
+
export * from "./limited-charset.js";
|
|
17
|
+
export * from "./media.js";
|
|
17
18
|
export * from "./namespace.js";
|
|
18
19
|
export * from "./open.js";
|
|
19
20
|
export * from "./operation-inside-interface.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
package/dist/src/rules/index.js
CHANGED
|
@@ -13,7 +13,8 @@ export * from "./extends-on-same-type.js";
|
|
|
13
13
|
export * from "./filter.js";
|
|
14
14
|
export * from "./function.js";
|
|
15
15
|
export * from "./graph-route.js";
|
|
16
|
-
export * from "./
|
|
16
|
+
export * from "./limited-charset.js";
|
|
17
|
+
export * from "./media.js";
|
|
17
18
|
export * from "./namespace.js";
|
|
18
19
|
export * from "./open.js";
|
|
19
20
|
export * from "./operation-inside-interface.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limited-charset.d.ts","sourceRoot":"","sources":["../../../src/rules/limited-charset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0C,MAAM,oBAAoB,CAAC;AAMrF,eAAO,MAAM,gEAAgE,YAClE,OAAO,SA0CjB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { isStringType, navigateTypesInNamespace } from "@typespec/compiler";
|
|
2
|
+
import { GetDeclaredNamespaces } from "../entities/namespace.js";
|
|
3
|
+
import { supportsLimitedCharset } from "../index.js";
|
|
4
|
+
import { reportDiagnostic } from "../lib.js";
|
|
5
|
+
import { extractTypesFromUnion } from "../utils.js";
|
|
6
|
+
export const validatedLimitedCharsetOnlyAppliesToStringPropertiesOrParameters = (program) => {
|
|
7
|
+
for (const namespace of GetDeclaredNamespaces(program)) {
|
|
8
|
+
navigateTypesInNamespace(namespace, {
|
|
9
|
+
modelProperty: (property) => {
|
|
10
|
+
if (!supportsLimitedCharset(program, property)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (isStringType(program, property.type)) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
// Nullable Properties and Parameters
|
|
17
|
+
if (property.type.kind === "Union") {
|
|
18
|
+
const types = extractTypesFromUnion(property.type);
|
|
19
|
+
if (types.some((type) => isStringType(program, type))) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Arrays of strings
|
|
24
|
+
if (property.type.kind === "Model" &&
|
|
25
|
+
property.type.name === "Array" &&
|
|
26
|
+
isStringType(program, property.type.indexer.value)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
reportDiagnostic(program, {
|
|
30
|
+
code: "decorator-invalid-use",
|
|
31
|
+
target: property,
|
|
32
|
+
messageId: "wrongType",
|
|
33
|
+
format: {
|
|
34
|
+
decorator: "@limitedCharset",
|
|
35
|
+
target: "string model property, parameter or their collections",
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=limited-charset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limited-charset.js","sourceRoot":"","sources":["../../../src/rules/limited-charset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,MAAM,gEAAgE,GAAG,CAC9E,OAAgB,EAChB,EAAE;IACF,KAAK,MAAM,SAAS,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;QACtD,wBAAwB,CAAC,SAAS,EAAE;YAClC,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC1B,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;oBAC9C,OAAO;iBACR;gBAED,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACxC,OAAO;iBACR;gBAED,qCAAqC;gBACrC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;oBAClC,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE;wBACrD,OAAO;qBACR;iBACF;gBAED,oBAAoB;gBACpB,IACE,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;oBAC9B,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;oBAC9B,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC,EACnD;oBACA,OAAO;iBACR;gBAED,gBAAgB,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,uBAAuB;oBAC7B,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,WAAW;oBACtB,MAAM,EAAE;wBACN,SAAS,EAAE,iBAAiB;wBAC5B,MAAM,EAAE,uDAAuD;qBAChE;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;KACJ;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Program } from "@typespec/compiler";
|
|
2
|
+
export declare function validateIsMediaOnlyOnEntity(program: Program): void;
|
|
3
|
+
export declare const mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes: import("@typespec/compiler").LinterRuleDefinition<"media-type-values-should-be-minimally-formatted", {
|
|
4
|
+
readonly default: import("@typespec/compiler").CallableMessage<[string]>;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified: import("@typespec/compiler").LinterRuleDefinition<"navigation-source-should-have-media-if-value-is-specified", {
|
|
7
|
+
readonly interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecifiedInRoute: import("@typespec/compiler").CallableMessage<[string, string]>;
|
|
8
|
+
readonly interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecifiedInParameters: import("@typespec/compiler").CallableMessage<[string]>;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/rules/media.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAsD,MAAM,oBAAoB,CAAC;AAIjG,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAsB3D;AAED,eAAO,MAAM,qDAAqD;;EA6BhE,CAAA;AAEF,eAAO,MAAM,2DAA2D;;;EA4DtE,CAAA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { getMediaTypes, isMedia } from "../decorators/media.js";
|
|
2
|
+
import { getExpand, getGraphRoutePaths, hasGraphRoute, isEntity } from "../index.js";
|
|
3
|
+
import { reportDiagnostic } from "../lib.js";
|
|
4
|
+
import { createRule, navigateTypesInNamespace, paramMessage } from "@typespec/compiler";
|
|
5
|
+
import { GetDeclaredNamespaces } from "../entities/namespace.js";
|
|
6
|
+
import { getInterfaceNavigationSourceType, getNavigationSourceType } from "../utils.js";
|
|
7
|
+
export function validateIsMediaOnlyOnEntity(program) {
|
|
8
|
+
for (const namespace of GetDeclaredNamespaces(program)) {
|
|
9
|
+
navigateTypesInNamespace(namespace, {
|
|
10
|
+
model: (model) => {
|
|
11
|
+
if (!isMedia(program, model)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (isEntity(program, model)) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
reportDiagnostic(program, {
|
|
18
|
+
code: "decorator-invalid-use",
|
|
19
|
+
target: model,
|
|
20
|
+
messageId: "wrongType",
|
|
21
|
+
format: {
|
|
22
|
+
decorator: "@media",
|
|
23
|
+
target: "@entity model",
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
;
|
|
31
|
+
export const mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes = createRule({
|
|
32
|
+
name: "media-type-values-should-be-minimally-formatted",
|
|
33
|
+
severity: "warning",
|
|
34
|
+
description: "Media type values should be two part strings with a / separator",
|
|
35
|
+
messages: {
|
|
36
|
+
default: paramMessage `Media type value '${"value"}' should be a two part string with a \/ separator.`,
|
|
37
|
+
},
|
|
38
|
+
create(context) {
|
|
39
|
+
return {
|
|
40
|
+
model: (model) => {
|
|
41
|
+
if (!isMedia(context.program, model)) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const mediaTypes = getMediaTypes(context.program, model);
|
|
45
|
+
if (mediaTypes.length > 0) {
|
|
46
|
+
for (const mediaType of mediaTypes) {
|
|
47
|
+
if (mediaType.split("/").length !== 2) {
|
|
48
|
+
context.reportDiagnostic({
|
|
49
|
+
target: model,
|
|
50
|
+
format: {
|
|
51
|
+
value: mediaType,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
export const interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified = createRule({
|
|
62
|
+
name: "navigation-source-should-have-media-if-value-is-specified",
|
|
63
|
+
severity: "warning",
|
|
64
|
+
description: "Interface navigation source should have media if $value is specified",
|
|
65
|
+
messages: {
|
|
66
|
+
interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecifiedInRoute: paramMessage `Interface navigation source '${"model"}' should have @media if $value is specified in the interface route '${"route"}'.`,
|
|
67
|
+
interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecifiedInParameters: paramMessage `Interface navigation source '${"model"}' should have @media if $value is specified in the parameters.`,
|
|
68
|
+
},
|
|
69
|
+
create(context) {
|
|
70
|
+
return {
|
|
71
|
+
operation: (operation) => {
|
|
72
|
+
operation.decorators.forEach((decorator) => {
|
|
73
|
+
if (decorator.decorator.name === "$expand") {
|
|
74
|
+
const expanded = getExpand(context.program, operation);
|
|
75
|
+
if (expanded.includes("$value")) {
|
|
76
|
+
const navigationSource = getNavigationSourceType(context.program, operation);
|
|
77
|
+
if (!navigationSource) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (!isMedia(context.program, navigationSource)) {
|
|
81
|
+
context.reportDiagnostic({
|
|
82
|
+
target: operation,
|
|
83
|
+
format: {
|
|
84
|
+
model: navigationSource.name,
|
|
85
|
+
},
|
|
86
|
+
messageId: "interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecifiedInParameters",
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
interface: (_interface) => {
|
|
94
|
+
if (!hasGraphRoute(context.program, _interface)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const graphRoutes = getGraphRoutePaths(context.program, _interface);
|
|
98
|
+
if (graphRoutes && graphRoutes.length > 0) {
|
|
99
|
+
for (const graphRoute of graphRoutes) {
|
|
100
|
+
if (graphRoute.includes("$value")) {
|
|
101
|
+
const navigationSource = getInterfaceNavigationSourceType(context.program, _interface);
|
|
102
|
+
if (!navigationSource) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (!isMedia(context.program, navigationSource)) {
|
|
106
|
+
context.reportDiagnostic({
|
|
107
|
+
target: _interface,
|
|
108
|
+
format: {
|
|
109
|
+
model: navigationSource.name,
|
|
110
|
+
route: graphRoute,
|
|
111
|
+
},
|
|
112
|
+
messageId: "interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecifiedInRoute"
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/rules/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,5 @@ import { Program } from "@typespec/compiler";
|
|
|
2
2
|
export declare function validateNamespaceIsRequired(program: Program): void;
|
|
3
3
|
export declare function validatePublicNamespaceName(program: Program): void;
|
|
4
4
|
export declare function validateTopLevelNamespaceMustHavePublicNamespace(program: Program): void;
|
|
5
|
+
export declare function validateWorkloadNamespaceName(program: Program): void;
|
|
5
6
|
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/rules/namespace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkD,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/rules/namespace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkD,MAAM,oBAAoB,CAAC;AAK7F,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QA0B3D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAqB3D;AAED,wBAAgB,gDAAgD,CAAC,OAAO,EAAE,OAAO,QAkChF;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,QAqB7D"}
|