@azure-tools/typespec-azure-resource-manager 0.47.0-dev.9 → 0.48.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/README.md +1 -0
- package/dist/generated-defs/Azure.ResourceManager.Private.d.ts +6 -6
- package/dist/generated-defs/Azure.ResourceManager.Private.d.ts.map +1 -1
- package/dist/src/linter.d.ts.map +1 -1
- package/dist/src/linter.js +2 -0
- package/dist/src/linter.js.map +1 -1
- package/dist/src/rules/arm-resource-invalid-action-verb.d.ts.map +1 -1
- package/dist/src/rules/arm-resource-invalid-action-verb.js +3 -2
- package/dist/src/rules/arm-resource-invalid-action-verb.js.map +1 -1
- package/dist/src/rules/core-operations.d.ts.map +1 -1
- package/dist/src/rules/core-operations.js +3 -2
- package/dist/src/rules/core-operations.js.map +1 -1
- package/dist/src/rules/no-empty-model.d.ts +5 -0
- package/dist/src/rules/no-empty-model.d.ts.map +1 -0
- package/dist/src/rules/no-empty-model.js +24 -0
- package/dist/src/rules/no-empty-model.js.map +1 -0
- package/dist/src/rules/utils.d.ts +1 -0
- package/dist/src/rules/utils.d.ts.map +1 -1
- package/dist/src/rules/utils.js +7 -0
- package/dist/src/rules/utils.js.map +1 -1
- package/lib/operations.tsp +59 -0
- package/lib/parameters.tsp +28 -0
- package/package.json +14 -14
package/README.md
CHANGED
|
@@ -60,6 +60,7 @@ Available ruleSets:
|
|
|
60
60
|
| `@azure-tools/typespec-azure-resource-manager/resource-name` | Check the resource name. |
|
|
61
61
|
| `@azure-tools/typespec-azure-resource-manager/retry-after` | Check if retry-after header appears in response body. |
|
|
62
62
|
| [`@azure-tools/typespec-azure-resource-manager/unsupported-type`](https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/rules/unsupported-type) | Check for unsupported ARM types. |
|
|
63
|
+
| [`@azure-tools/typespec-azure-resource-manager/no-empty-model`](https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/rules/no-empty-model) | ARM Properties with type:object that don't reference a model definition are not allowed. ARM doesn't allow generic type definitions as this leads to bad customer experience. |
|
|
63
64
|
|
|
64
65
|
## Decorators
|
|
65
66
|
|
|
@@ -3,16 +3,16 @@ import type { DecoratorContext, Model, ModelProperty, Operation, Type } from "@t
|
|
|
3
3
|
*
|
|
4
4
|
*
|
|
5
5
|
*
|
|
6
|
-
* @param
|
|
6
|
+
* @param values Values
|
|
7
7
|
*/
|
|
8
|
-
export type
|
|
8
|
+
export type ResourceParameterBaseForDecorator = (context: DecoratorContext, target: ModelProperty, values: Type) => void;
|
|
9
9
|
/**
|
|
10
10
|
*
|
|
11
11
|
*
|
|
12
12
|
*
|
|
13
|
-
* @param
|
|
13
|
+
* @param propertyName Name of the property to omit
|
|
14
14
|
*/
|
|
15
|
-
export type
|
|
15
|
+
export type ResourceBaseParametersOfDecorator = (context: DecoratorContext, target: Model, propertyName: Model) => void;
|
|
16
16
|
/**
|
|
17
17
|
* This decorator is used to identify Azure Resource Manager resource. In generated
|
|
18
18
|
* swagger definition, it will be marked with `x-ms-azure-resource`.
|
|
@@ -84,11 +84,11 @@ export type ArmRenameListByOperationDecorator = (context: DecoratorContext, targ
|
|
|
84
84
|
*/
|
|
85
85
|
export type ArmResourcePropertiesOptionalityDecorator = (context: DecoratorContext, target: ModelProperty, isOptional: boolean) => void;
|
|
86
86
|
export type AzureResourceManagerPrivateDecorators = {
|
|
87
|
-
resourceBaseParametersOf: ResourceBaseParametersOfDecorator;
|
|
88
87
|
resourceParameterBaseFor: ResourceParameterBaseForDecorator;
|
|
88
|
+
resourceBaseParametersOf: ResourceBaseParametersOfDecorator;
|
|
89
89
|
azureResourceBase: AzureResourceBaseDecorator;
|
|
90
|
-
omitIfEmpty: OmitIfEmptyDecorator;
|
|
91
90
|
conditionalClientFlatten: ConditionalClientFlattenDecorator;
|
|
91
|
+
omitIfEmpty: OmitIfEmptyDecorator;
|
|
92
92
|
assignProviderNameValue: AssignProviderNameValueDecorator;
|
|
93
93
|
armUpdateProviderNamespace: ArmUpdateProviderNamespaceDecorator;
|
|
94
94
|
armResourceInternal: ArmResourceInternalDecorator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Azure.ResourceManager.Private.d.ts","sourceRoot":"","sources":["../../generated-defs/Azure.ResourceManager.Private.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAElG;;;;;GAKG;AACH,MAAM,MAAM,iCAAiC,GAAG,CAC9C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"Azure.ResourceManager.Private.d.ts","sourceRoot":"","sources":["../../generated-defs/Azure.ResourceManager.Private.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAElG;;;;;GAKG;AACH,MAAM,MAAM,iCAAiC,GAAG,CAC9C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,IAAI,KACT,IAAI,CAAC;AAEV;;;;;GAKG;AACH,MAAM,MAAM,iCAAiC,GAAG,CAC9C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,KAAK,KAChB,IAAI,CAAC;AAEV;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAM,MAAM,iCAAiC,GAAG,CAC9C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,aAAa,KAClB,IAAI,CAAC;AAgBV;;;;;GAKG;AACH,MAAM,MAAM,gCAAgC,GAAG,CAC7C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,KAAK,KACZ,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,CAChD,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;AAEV;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,4BAA4B,GAAG,CACzC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,KAAK,EACb,UAAU,EAAE,KAAK,KACd,IAAI,CAAC;AAEV;;;GAGG;AACH,MAAM,MAAM,sCAAsC,GAAG,CACnD,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,KACZ,IAAI,CAAC;AAEV;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,CACvC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,GAAG,KAAK,EACzB,UAAU,EAAE,KAAK,EACjB,cAAc,EAAE,KAAK,KAClB,IAAI,CAAC;AAEV;;;;;;;GAOG;AACH,MAAM,MAAM,iCAAiC,GAAG,CAC9C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,KAAK,EACnB,cAAc,CAAC,EAAE,MAAM,EACvB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,oBAAoB,CAAC,EAAE,OAAO,KAC3B,IAAI,CAAC;AAEV;;;GAGG;AACH,MAAM,MAAM,yCAAyC,GAAG,CACtD,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,OAAO,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,qCAAqC,GAAG;IAClD,wBAAwB,EAAE,iCAAiC,CAAC;IAC5D,wBAAwB,EAAE,iCAAiC,CAAC;IAC5D,iBAAiB,EAAE,0BAA0B,CAAC;IAC9C,wBAAwB,EAAE,iCAAiC,CAAC;IAC5D,WAAW,EAAE,oBAAoB,CAAC;IAClC,uBAAuB,EAAE,gCAAgC,CAAC;IAC1D,0BAA0B,EAAE,mCAAmC,CAAC;IAChE,mBAAmB,EAAE,4BAA4B,CAAC;IAClD,6BAA6B,EAAE,sCAAsC,CAAC;IACtE,iBAAiB,EAAE,0BAA0B,CAAC;IAC9C,wBAAwB,EAAE,iCAAiC,CAAC;IAC5D,gCAAgC,EAAE,yCAAyC,CAAC;CAC7E,CAAC"}
|
package/dist/src/linter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAmEA,eAAO,MAAM,OAAO,+CAElB,CAAC"}
|
package/dist/src/linter.js
CHANGED
|
@@ -23,6 +23,7 @@ import { envelopePropertiesRules } from "./rules/envelope-properties.js";
|
|
|
23
23
|
import { listBySubscriptionRule } from "./rules/list-operation.js";
|
|
24
24
|
import { lroLocationHeaderRule } from "./rules/lro-location-header.js";
|
|
25
25
|
import { missingXmsIdentifiersRule } from "./rules/missing-x-ms-identifiers.js";
|
|
26
|
+
import { noEmptyModel } from "./rules/no-empty-model.js";
|
|
26
27
|
import { noResponseBodyRule } from "./rules/no-response-body.js";
|
|
27
28
|
import { operationsInterfaceMissingRule } from "./rules/operations-interface-missing.js";
|
|
28
29
|
import { patchEnvelopePropertiesRules } from "./rules/patch-envelope-properties.js";
|
|
@@ -60,6 +61,7 @@ const rules = [
|
|
|
60
61
|
resourceNameRule,
|
|
61
62
|
retryAfterRule,
|
|
62
63
|
unsupportedTypeRule,
|
|
64
|
+
noEmptyModel,
|
|
63
65
|
];
|
|
64
66
|
export const $linter = defineLinter({
|
|
65
67
|
rules,
|
package/dist/src/linter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAClG,OAAO,EAAE,mCAAmC,EAAE,MAAM,gDAAgD,CAAC;AACrG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,KAAK,GAAG;IACZ,eAAe;IACf,yBAAyB;IACzB,0BAA0B;IAC1B,uBAAuB;IACvB,wBAAwB;IACxB,8BAA8B;IAC9B,kCAAkC;IAClC,6BAA6B;IAC7B,mCAAmC;IACnC,8BAA8B;IAC9B,0BAA0B;IAC1B,yBAAyB;IACzB,+BAA+B;IAC/B,gCAAgC;IAChC,iBAAiB;IACjB,kBAAkB;IAClB,0BAA0B;IAC1B,uBAAuB;IACvB,cAAc;IACd,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,yBAAyB;IACzB,kBAAkB;IAClB,8BAA8B;IAC9B,4BAA4B;IAC5B,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,mBAAmB;
|
|
1
|
+
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAClG,OAAO,EAAE,mCAAmC,EAAE,MAAM,gDAAgD,CAAC;AACrG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,KAAK,GAAG;IACZ,eAAe;IACf,yBAAyB;IACzB,0BAA0B;IAC1B,uBAAuB;IACvB,wBAAwB;IACxB,8BAA8B;IAC9B,kCAAkC;IAClC,6BAA6B;IAC7B,mCAAmC;IACnC,8BAA8B;IAC9B,0BAA0B;IAC1B,yBAAyB;IACzB,+BAA+B;IAC/B,gCAAgC;IAChC,iBAAiB;IACjB,kBAAkB;IAClB,0BAA0B;IAC1B,uBAAuB;IACvB,cAAc;IACd,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,yBAAyB;IACzB,kBAAkB;IAClB,8BAA8B;IAC9B,4BAA4B;IAC5B,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,YAAY;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;IAClC,KAAK;CACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arm-resource-invalid-action-verb.d.ts","sourceRoot":"","sources":["../../../src/rules/arm-resource-invalid-action-verb.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB;;
|
|
1
|
+
{"version":3,"file":"arm-resource-invalid-action-verb.d.ts","sourceRoot":"","sources":["../../../src/rules/arm-resource-invalid-action-verb.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB;;EAyBhC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRule } from "@typespec/compiler";
|
|
2
2
|
import { getOperationVerb } from "@typespec/http";
|
|
3
3
|
import { getActionDetails } from "@typespec/rest";
|
|
4
|
-
import { isInternalTypeSpec } from "./utils.js";
|
|
4
|
+
import { isInternalTypeSpec, isSourceOperationResourceManagerInternal } from "./utils.js";
|
|
5
5
|
export const invalidActionVerbRule = createRule({
|
|
6
6
|
name: "arm-resource-invalid-action-verb",
|
|
7
7
|
severity: "warning",
|
|
@@ -12,7 +12,8 @@ export const invalidActionVerbRule = createRule({
|
|
|
12
12
|
create(context) {
|
|
13
13
|
return {
|
|
14
14
|
operation: (operation) => {
|
|
15
|
-
if (!isInternalTypeSpec(context.program, operation)
|
|
15
|
+
if (!isInternalTypeSpec(context.program, operation) &&
|
|
16
|
+
!isSourceOperationResourceManagerInternal(operation)) {
|
|
16
17
|
const actionType = getActionDetails(context.program, operation);
|
|
17
18
|
const verb = getOperationVerb(context.program, operation);
|
|
18
19
|
if (actionType !== undefined && verb !== "post") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arm-resource-invalid-action-verb.js","sourceRoot":"","sources":["../../../src/rules/arm-resource-invalid-action-verb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"arm-resource-invalid-action-verb.js","sourceRoot":"","sources":["../../../src/rules/arm-resource-invalid-action-verb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,wCAAwC,EAAE,MAAM,YAAY,CAAC;AAE1F,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;IAC9C,IAAI,EAAE,kCAAkC;IACxC,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,uCAAuC;IACpD,QAAQ,EAAE;QACR,OAAO,EAAE,uCAAuC;KACjD;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,SAAS,EAAE,CAAC,SAAoB,EAAE,EAAE;gBAClC,IACE,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;oBAC/C,CAAC,wCAAwC,CAAC,SAAS,CAAC,EACpD,CAAC;oBACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAChE,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAC1D,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;wBAChD,OAAO,CAAC,gBAAgB,CAAC;4BACvB,MAAM,EAAE,SAAS;yBAClB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-operations.d.ts","sourceRoot":"","sources":["../../../src/rules/core-operations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core-operations.d.ts","sourceRoot":"","sources":["../../../src/rules/core-operations.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,kBAAkB;;;;EA2D7B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SyntaxKind, createRule, paramMessage, } from "@typespec/compiler";
|
|
2
2
|
import { getOperationVerb } from "@typespec/http";
|
|
3
|
-
import { getNamespaceName, getSourceModel, isInternalTypeSpec, isTemplatedInterfaceOperation, } from "./utils.js";
|
|
3
|
+
import { getNamespaceName, getSourceModel, isInternalTypeSpec, isSourceOperationResourceManagerInternal, isTemplatedInterfaceOperation, } from "./utils.js";
|
|
4
4
|
export const coreOperationsRule = createRule({
|
|
5
5
|
name: "arm-resource-operation",
|
|
6
6
|
severity: "warning",
|
|
@@ -13,7 +13,8 @@ export const coreOperationsRule = createRule({
|
|
|
13
13
|
create(context) {
|
|
14
14
|
return {
|
|
15
15
|
operation: (operation) => {
|
|
16
|
-
if (!isInternalTypeSpec(context.program, operation)
|
|
16
|
+
if (!isInternalTypeSpec(context.program, operation) &&
|
|
17
|
+
!isSourceOperationResourceManagerInternal(operation)) {
|
|
17
18
|
const verb = getOperationVerb(context.program, operation);
|
|
18
19
|
if (!isTemplatedInterfaceOperation(operation) &&
|
|
19
20
|
(!operation.node.parent || operation.node.parent.kind !== SyntaxKind.InterfaceStatement)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-operations.js","sourceRoot":"","sources":["../../../src/rules/core-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAY,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC3C,IAAI,EAAE,wBAAwB;IAC9B,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE;QACR,OAAO,EACL,+PAA+P;QACjQ,kBAAkB,EAAE,yDAAyD;QAC7E,kBAAkB,EAAE,YAAY,CAAA,YAAY,MAAM,qCAAqC,WAAW,GAAG;KACtG;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,SAAS,EAAE,CAAC,SAAoB,EAAE,EAAE;gBAClC,
|
|
1
|
+
{"version":3,"file":"core-operations.js","sourceRoot":"","sources":["../../../src/rules/core-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const noEmptyModel: import("@typespec/compiler").LinterRuleDefinition<"no-empty-model", {
|
|
2
|
+
readonly default: "Properties with type:object must have definition of a reference model.";
|
|
3
|
+
readonly extends: "The `type:object` model is not defined in the payload. Define the reference model of the object or change the `type` to a primitive data type like string, int, etc";
|
|
4
|
+
}>;
|
|
5
|
+
//# sourceMappingURL=no-empty-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-empty-model.d.ts","sourceRoot":"","sources":["../../../src/rules/no-empty-model.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;EAuBvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createRule } from "@typespec/compiler";
|
|
2
|
+
export const noEmptyModel = createRule({
|
|
3
|
+
name: "no-empty-model",
|
|
4
|
+
severity: "warning",
|
|
5
|
+
description: "ARM Properties with type:object that don't reference a model definition are not allowed. ARM doesn't allow generic type definitions as this leads to bad customer experience.",
|
|
6
|
+
url: "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/rules/no-empty-model",
|
|
7
|
+
messages: {
|
|
8
|
+
default: "Properties with type:object must have definition of a reference model.",
|
|
9
|
+
extends: "The `type:object` model is not defined in the payload. Define the reference model of the object or change the `type` to a primitive data type like string, int, etc",
|
|
10
|
+
},
|
|
11
|
+
create(context) {
|
|
12
|
+
return {
|
|
13
|
+
model: (model) => {
|
|
14
|
+
if (model.properties.size === 0) {
|
|
15
|
+
context.reportDiagnostic({
|
|
16
|
+
code: "no-empty-model",
|
|
17
|
+
target: model,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=no-empty-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-empty-model.js","sourceRoot":"","sources":["../../../src/rules/no-empty-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,MAAM,oBAAoB,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,+KAA+K;IACjL,GAAG,EAAE,mGAAmG;IACxG,QAAQ,EAAE;QACR,OAAO,EAAE,wEAAwE;QACjF,OAAO,EACL,qKAAqK;KACxK;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE;gBACtB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,gBAAgB,CAAC;wBACvB,IAAI,EAAE,gBAAgB;wBACtB,MAAM,EAAE,KAAK;qBACd,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -14,6 +14,7 @@ export declare function getInterface(res: ArmResourceDetails): Interface | undef
|
|
|
14
14
|
export declare function getSourceModel(property: ModelProperty): Model | undefined;
|
|
15
15
|
export declare function getSourceProperty(property: ModelProperty): ModelProperty;
|
|
16
16
|
export declare function isInternalTypeSpec(program: Program, type: Model | Operation | ModelProperty | Interface | Namespace): boolean;
|
|
17
|
+
export declare function isSourceOperationResourceManagerInternal(operation: Operation | undefined): boolean;
|
|
17
18
|
export declare function getNamespaceName(program: Program, type: Model | Operation | ModelProperty | Interface | Namespace | undefined): string;
|
|
18
19
|
export declare function isValidKey(key: string): boolean;
|
|
19
20
|
export declare function getDecoratorParam(type: Model | ModelProperty, name: string): DecoratorArgument | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EAER,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,gBAAgB,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,uBAM9D;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,KAAK,WAGpD;AAED,wBAAgB,UAAU,CAAC,YAAY,EAAE,KAAK,WAG7C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,WAElE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,mBAOzC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,kBAAkB,yBAUnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAOzE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAOxE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAC9D,OAAO,CAOT;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAC1E,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAQD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,KAAK,GAAG,aAAa,EAC3B,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAK/B"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EAER,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,gBAAgB,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,uBAM9D;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,KAAK,WAGpD;AAED,wBAAgB,UAAU,CAAC,YAAY,EAAE,KAAK,WAG7C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,WAElE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,mBAOzC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,kBAAkB,yBAUnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAOzE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAOxE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAC9D,OAAO,CAOT;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,SAAS,GAAG,SAAS,GAC/B,OAAO,CAOT;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAC1E,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAQD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,KAAK,GAAG,aAAa,EAC3B,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAK/B"}
|
package/dist/src/rules/utils.js
CHANGED
|
@@ -61,6 +61,13 @@ export function isInternalTypeSpec(program, type) {
|
|
|
61
61
|
namespace.startsWith("Azure.ResourceManager") ||
|
|
62
62
|
namespace.startsWith("Azure.Core"));
|
|
63
63
|
}
|
|
64
|
+
export function isSourceOperationResourceManagerInternal(operation) {
|
|
65
|
+
if (!operation?.sourceOperation?.namespace) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const namespace = getNamespaceFullName(operation.sourceOperation.namespace);
|
|
69
|
+
return namespace.startsWith("Azure.ResourceManager");
|
|
70
|
+
}
|
|
64
71
|
export function getNamespaceName(program, type) {
|
|
65
72
|
if (type === undefined)
|
|
66
73
|
return "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/operations.tsp
CHANGED
|
@@ -694,3 +694,62 @@ op checkLocalNameAvailability<
|
|
|
694
694
|
Response,
|
|
695
695
|
AdditionalParams
|
|
696
696
|
>;
|
|
697
|
+
|
|
698
|
+
/**
|
|
699
|
+
* @dev A provider action performed over a tenant
|
|
700
|
+
* @template Request The request model for the action
|
|
701
|
+
* @template Response The response type for the action
|
|
702
|
+
* @template Scope The scope of the action (SubscriptionActionScope or TenantActionScope)
|
|
703
|
+
* @template Parameters Optional. Additional parameters after the path parameters (e.g. Location)
|
|
704
|
+
* @template Error Optional. The error response, if non-standard.
|
|
705
|
+
*/
|
|
706
|
+
@post
|
|
707
|
+
@action
|
|
708
|
+
@armResourceCollectionAction
|
|
709
|
+
op ArmProviderActionSync<
|
|
710
|
+
Request extends {} | void = void,
|
|
711
|
+
Response extends {} | void = void,
|
|
712
|
+
Scope extends {} = TenantActionScope,
|
|
713
|
+
Parameters extends {} = {},
|
|
714
|
+
Error extends {} = ErrorResponse
|
|
715
|
+
>(
|
|
716
|
+
...Azure.ResourceManager.Foundations.DefaultBaseParameters<Scope>,
|
|
717
|
+
...ProviderNamespace<Scope>,
|
|
718
|
+
...Parameters,
|
|
719
|
+
|
|
720
|
+
/** The request body */
|
|
721
|
+
@bodyRoot body: Request,
|
|
722
|
+
): Response | ErrorResponse;
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* @dev A long-running provider action.
|
|
726
|
+
* @template Request The request model for the action
|
|
727
|
+
* @template Response The response type for the action
|
|
728
|
+
* @template Scope The scope of the action (SubscriptionActionScope or TenantActionScope)
|
|
729
|
+
* @template Parameters Optional. Additional parameters after the path parameters (e.g. Location)
|
|
730
|
+
* @template LroHeaders Optional. Allows overriding the lro headers returned in the Accepted response
|
|
731
|
+
* @template Error Optional. The error response, if non-standard.
|
|
732
|
+
*/
|
|
733
|
+
@post
|
|
734
|
+
@action
|
|
735
|
+
@armResourceCollectionAction
|
|
736
|
+
op ArmProviderActionAsync<
|
|
737
|
+
Request extends {} | void = void,
|
|
738
|
+
Response extends {} | void = void,
|
|
739
|
+
Scope extends {} = TenantActionScope,
|
|
740
|
+
Parameters extends {} = {},
|
|
741
|
+
LroHeaders extends TypeSpec.Reflection.Model = ArmLroLocationHeader<
|
|
742
|
+
Azure.Core.StatusMonitorPollingOptions<ArmOperationStatus>,
|
|
743
|
+
Response,
|
|
744
|
+
string
|
|
745
|
+
> &
|
|
746
|
+
Azure.Core.Foundations.RetryAfterHeader,
|
|
747
|
+
Error extends {} = ErrorResponse
|
|
748
|
+
>(
|
|
749
|
+
...Azure.ResourceManager.Foundations.DefaultBaseParameters<Scope>,
|
|
750
|
+
...ProviderNamespace<Scope>,
|
|
751
|
+
...Parameters,
|
|
752
|
+
|
|
753
|
+
/** The request body */
|
|
754
|
+
@bodyRoot body: Request,
|
|
755
|
+
): Response | ErrorResponse;
|
package/lib/parameters.tsp
CHANGED
|
@@ -136,3 +136,31 @@ alias TenantInstanceParameters<Resource extends Foundations.Resource> = Resource
|
|
|
136
136
|
Resource,
|
|
137
137
|
TenantBaseParameters
|
|
138
138
|
>;
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Template used by ArmProviderAction templates.
|
|
142
|
+
*/
|
|
143
|
+
@armVirtualResource
|
|
144
|
+
@subscriptionResource
|
|
145
|
+
model SubscriptionActionScope {
|
|
146
|
+
@doc("Symbolic name of scope")
|
|
147
|
+
@path
|
|
148
|
+
@visibility("read")
|
|
149
|
+
@key
|
|
150
|
+
@segment("subscription")
|
|
151
|
+
name: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Template used by ArmTenantAction templates.
|
|
156
|
+
*/
|
|
157
|
+
@armVirtualResource
|
|
158
|
+
@tenantResource
|
|
159
|
+
model TenantActionScope {
|
|
160
|
+
@doc("Symbolic name of scope")
|
|
161
|
+
@path
|
|
162
|
+
@visibility("read")
|
|
163
|
+
@key
|
|
164
|
+
@segment("tenant")
|
|
165
|
+
name: string;
|
|
166
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure-tools/typespec-azure-resource-manager",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.0-dev.0",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec Azure Resource Manager library",
|
|
6
6
|
"homepage": "https://azure.github.io/typespec-azure",
|
|
@@ -43,23 +43,23 @@
|
|
|
43
43
|
"pluralize": "^8.0.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@azure-tools/typespec-azure-core": "~0.
|
|
47
|
-
"@typespec/compiler": "~0.
|
|
48
|
-
"@typespec/http": "~0.
|
|
49
|
-
"@typespec/openapi": "~0.
|
|
50
|
-
"@typespec/rest": "~0.
|
|
51
|
-
"@typespec/versioning": "~0.
|
|
46
|
+
"@azure-tools/typespec-azure-core": "~0.47.0 || >=0.48.0-dev <0.48.0",
|
|
47
|
+
"@typespec/compiler": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
48
|
+
"@typespec/http": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
49
|
+
"@typespec/openapi": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
50
|
+
"@typespec/rest": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
51
|
+
"@typespec/versioning": "~0.61.0 || >=0.62.0-dev <0.62.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@azure-tools/typespec-azure-core": "~0.
|
|
54
|
+
"@azure-tools/typespec-azure-core": "~0.47.0 || >=0.48.0-dev <0.48.0",
|
|
55
55
|
"@types/node": "~22.7.1",
|
|
56
56
|
"@types/pluralize": "^0.0.33",
|
|
57
|
-
"@typespec/compiler": "~0.
|
|
58
|
-
"@typespec/http": "~0.
|
|
59
|
-
"@typespec/library-linter": "~0.
|
|
60
|
-
"@typespec/openapi": "~0.
|
|
61
|
-
"@typespec/rest": "~0.
|
|
62
|
-
"@typespec/versioning": "~0.
|
|
57
|
+
"@typespec/compiler": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
58
|
+
"@typespec/http": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
59
|
+
"@typespec/library-linter": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
60
|
+
"@typespec/openapi": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
61
|
+
"@typespec/rest": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
62
|
+
"@typespec/versioning": "~0.61.0 || >=0.62.0-dev <0.62.0",
|
|
63
63
|
"@vitest/coverage-v8": "^2.1.1",
|
|
64
64
|
"@vitest/ui": "^2.1.1",
|
|
65
65
|
"c8": "^10.1.2",
|