@azure-tools/typespec-azure-resource-manager 0.61.0-dev.2 → 0.61.0-dev.3

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=identifiers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.test.d.ts","sourceRoot":"","sources":["../../../../src/decorators/identifiers/identifiers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import { Tester } from "#test/tester.js";
2
+ import { expectDiagnosticEmpty, expectDiagnostics } from "@typespec/compiler/testing";
3
+ import { it } from "vitest";
4
+ it("allows multiple model properties in identifiers decorator", async () => {
5
+ const diagnostics = await Tester.diagnose(`
6
+ @armProviderNamespace
7
+ namespace Microsoft.Contoso;
8
+
9
+ model Dog {
10
+ name: string;
11
+ age: int32;
12
+ }
13
+
14
+ model Pets
15
+ {
16
+ @identifiers(#["name", "age"])
17
+ dogs: Dog[];
18
+ }
19
+ `);
20
+ expectDiagnosticEmpty(diagnostics);
21
+ });
22
+ it("allows inner model properties in identifiers decorator", async () => {
23
+ const diagnostics = await Tester.diagnose(`
24
+ @armProviderNamespace
25
+ namespace Microsoft.Contoso;
26
+
27
+ model Dog {
28
+ breed: Breed;
29
+ }
30
+
31
+ model Breed {
32
+ type: string;
33
+ }
34
+
35
+ model Pets
36
+ {
37
+ @identifiers(#["breed/type"])
38
+ dogs: Dog[];
39
+ }
40
+ `);
41
+ expectDiagnosticEmpty(diagnostics);
42
+ });
43
+ it("emits diagnostic when identifiers is not of a model property object array", async () => {
44
+ const diagnostics = await Tester.diagnose(`
45
+ @armProviderNamespace
46
+ namespace Microsoft.Contoso;
47
+
48
+ model Dog {
49
+ name: string;
50
+ }
51
+
52
+ model Pets
53
+ {
54
+ @identifiers(#["age"])
55
+ dogs: Dog;
56
+ }
57
+ `);
58
+ expectDiagnostics(diagnostics, [
59
+ {
60
+ code: "@azure-tools/typespec-azure-resource-manager/decorator-param-wrong-type",
61
+ message: "The @identifiers decorator must be applied to a property that is an array of objects",
62
+ },
63
+ ]);
64
+ });
65
+ it("emits diagnostics when a provider cannot be updated", async () => {
66
+ const diagnostics = await Tester.diagnose(`
67
+ @armProviderNamespace
68
+ @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5)
69
+ namespace Microsoft.ContosoProviderHub {
70
+
71
+ @armResourceOperations
72
+ interface VirtualMachines {
73
+ @armResourceRead(Azure.ResourceManager.Extension.VirtualMachine)
74
+ @get op read(
75
+ ...ApiVersionParameter;
76
+ ...Extension.TargetProviderNamespace<Azure.ResourceManager.Extension.VirtualMachine>;
77
+ ...KeysOf<Azure.ResourceManager.Extension.VirtualMachine>): void;
78
+ }
79
+
80
+ }
81
+
82
+ namespace Azure.ResourceManager.Extension {
83
+ model VirtualMachine {
84
+ @visibility(Lifecycle.Read) @path @key @segment("virtualMachines") vmName: string;
85
+ }
86
+ }
87
+ `);
88
+ expectDiagnostics(diagnostics, [
89
+ {
90
+ code: "@azure-tools/typespec-azure-resource-manager/resource-without-provider-namespace",
91
+ message: `The resource "VirtualMachine" does not have a provider namespace. Please use a resource in a namespace marked with '@armProviderNamespace' or a virtual resource with a specific namespace`,
92
+ },
93
+ {
94
+ code: "@azure-tools/typespec-azure-resource-manager/resource-without-provider-namespace",
95
+ message: `The resource "VirtualMachine" does not have a provider namespace. Please use a resource in a namespace marked with '@armProviderNamespace' or a virtual resource with a specific namespace`,
96
+ },
97
+ ]);
98
+ });
99
+ //# sourceMappingURL=identifiers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.test.js","sourceRoot":"","sources":["../../../../src/decorators/identifiers/identifiers.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;CAc3C,CAAC,CAAC;IAED,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACtE,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;CAiB3C,CAAC,CAAC;IAED,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;IACzF,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;;;;;;;;;;;;;CAa3C,CAAC,CAAC;IAED,iBAAiB,CAAC,WAAW,EAAE;QAC7B;YACE,IAAI,EAAE,yEAAyE;YAC/E,OAAO,EACL,sFAAsF;SACzF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACnE,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;KAqBvC,CAAC,CAAC;IAEL,iBAAiB,CAAC,WAAW,EAAE;QAC7B;YACE,IAAI,EAAE,kFAAkF;YACxF,OAAO,EAAE,6LAA6L;SACvM;QACD;YACE,IAAI,EAAE,kFAAkF;YACxF,OAAO,EAAE,6LAA6L;SACvM;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -21,7 +21,7 @@ import { armResourceProvisioningStateRule } from "./rules/arm-resource-provision
21
21
  import { beyondNestingRule } from "./rules/beyond-nesting-levels.js";
22
22
  import { coreOperationsRule } from "./rules/core-operations.js";
23
23
  import { envelopePropertiesRules } from "./rules/envelope-properties.js";
24
- import { listBySubscriptionRule } from "./rules/list-operation.js";
24
+ import { improperSubscriptionListOperationRule } from "./rules/improper-subscription-list-operation.js";
25
25
  import { lroLocationHeaderRule } from "./rules/lro-location-header.js";
26
26
  import { missingXmsIdentifiersRule } from "./rules/missing-x-ms-identifiers.js";
27
27
  import { noEmptyModel } from "./rules/no-empty-model.js";
@@ -55,7 +55,7 @@ const rules = [
55
55
  envelopePropertiesRules,
56
56
  interfacesRule,
57
57
  armResourceInvalidActionVerbRule,
58
- listBySubscriptionRule,
58
+ improperSubscriptionListOperationRule,
59
59
  lroLocationHeaderRule,
60
60
  missingXmsIdentifiersRule,
61
61
  noResponseBodyRule,
@@ -1 +1 @@
1
- {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * verify tenant and extension resources do not define list by subscription
3
+ */
4
+ export declare const improperSubscriptionListOperationRule: import("@typespec/compiler").LinterRuleDefinition<"improper-subscription-list-operation", {
5
+ readonly default: "Tenant and Extension resources should not define a list by subscription operation.";
6
+ }>;
7
+ //# sourceMappingURL=improper-subscription-list-operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improper-subscription-list-operation.d.ts","sourceRoot":"","sources":["../../../src/rules/improper-subscription-list-operation.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,qCAAqC;;EA8BhD,CAAC"}
@@ -4,7 +4,7 @@ import { getInterface } from "./utils.js";
4
4
  /**
5
5
  * verify tenant and extension resources do not define list by subscription
6
6
  */
7
- export const listBySubscriptionRule = createRule({
7
+ export const improperSubscriptionListOperationRule = createRule({
8
8
  name: "improper-subscription-list-operation",
9
9
  severity: "warning",
10
10
  description: `Tenant and Extension resources should not define a list by subscription operation.`,
@@ -35,4 +35,4 @@ export const listBySubscriptionRule = createRule({
35
35
  };
36
36
  },
37
37
  });
38
- //# sourceMappingURL=list-operation.js.map
38
+ //# sourceMappingURL=improper-subscription-list-operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improper-subscription-list-operation.js","sourceRoot":"","sources":["../../../src/rules/improper-subscription-list-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAU,CAAC;IAC9D,IAAI,EAAE,sCAAsC;IAC5C,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,oFAAoF;IACjG,QAAQ,EAAE;QACR,OAAO,EAAE,oFAAoF;KAC9F;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE;gBACzB,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC3C,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;oBACpC,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;wBAChD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;wBAChF,IAAI,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;4BACzC,KAAK,MAAM,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gCAC1E,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gCACtE,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oCACpD,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;oCACpD,OAAO,CAAC,gBAAgB,CAAC;wCACvB,MAAM,EAAE,iBAAiB,IAAI,WAAW,CAAC,YAAY;qCACtD,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure-tools/typespec-azure-resource-manager",
3
- "version": "0.61.0-dev.2",
3
+ "version": "0.61.0-dev.3",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec Azure Resource Manager library",
6
6
  "homepage": "https://azure.github.io/typespec-azure",
@@ -30,6 +30,9 @@
30
30
  "default": "./dist/src/testing/index.js"
31
31
  }
32
32
  },
33
+ "imports": {
34
+ "#test/*": "./test/*"
35
+ },
33
36
  "type": "module",
34
37
  "engines": {
35
38
  "node": ">=20.0.0"
@@ -1,7 +0,0 @@
1
- /**
2
- * verify tenant and extension resources do not define list by subscription
3
- */
4
- export declare const listBySubscriptionRule: import("@typespec/compiler").LinterRuleDefinition<"improper-subscription-list-operation", {
5
- readonly default: "Tenant and Extension resources should not define a list by subscription operation.";
6
- }>;
7
- //# sourceMappingURL=list-operation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-operation.d.ts","sourceRoot":"","sources":["../../../src/rules/list-operation.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,sBAAsB;;EA8BjC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-operation.js","sourceRoot":"","sources":["../../../src/rules/list-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAC/C,IAAI,EAAE,sCAAsC;IAC5C,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,oFAAoF;IACjG,QAAQ,EAAE;QACR,OAAO,EAAE,oFAAoF;KAC9F;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE;gBACzB,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC3C,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;oBACpC,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;wBAChD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;wBAChF,IAAI,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;4BACzC,KAAK,MAAM,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gCAC1E,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gCACtE,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oCACpD,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;oCACpD,OAAO,CAAC,gBAAgB,CAAC;wCACvB,MAAM,EAAE,iBAAiB,IAAI,WAAW,CAAC,YAAY;qCACtD,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}