@azure-tools/typespec-azure-core 0.59.0-dev.0 → 0.59.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.
Files changed (56) hide show
  1. package/README.md +0 -18
  2. package/dist/generated-defs/Azure.Core.d.ts +0 -6
  3. package/dist/generated-defs/Azure.Core.d.ts.map +1 -1
  4. package/dist/src/decorators/lro-cancelled.d.ts +9 -0
  5. package/dist/src/decorators/lro-cancelled.d.ts.map +1 -0
  6. package/dist/src/decorators/lro-cancelled.js +10 -0
  7. package/dist/src/decorators/lro-cancelled.js.map +1 -0
  8. package/dist/src/decorators/lro-failed.d.ts +9 -0
  9. package/dist/src/decorators/lro-failed.d.ts.map +1 -0
  10. package/dist/src/decorators/lro-failed.js +10 -0
  11. package/dist/src/decorators/lro-failed.js.map +1 -0
  12. package/dist/src/decorators/lro-status.d.ts +12 -0
  13. package/dist/src/decorators/lro-status.d.ts.map +1 -0
  14. package/dist/src/decorators/lro-status.js +118 -0
  15. package/dist/src/decorators/lro-status.js.map +1 -0
  16. package/dist/src/decorators/lro-status.test.d.ts +2 -0
  17. package/dist/src/decorators/lro-status.test.d.ts.map +1 -0
  18. package/dist/src/decorators/lro-status.test.js +216 -0
  19. package/dist/src/decorators/lro-status.test.js.map +1 -0
  20. package/dist/src/decorators/lro-succeeded.d.ts +9 -0
  21. package/dist/src/decorators/lro-succeeded.d.ts.map +1 -0
  22. package/dist/src/decorators/lro-succeeded.js +10 -0
  23. package/dist/src/decorators/lro-succeeded.js.map +1 -0
  24. package/dist/src/decorators/preview-version.d.ts +7 -0
  25. package/dist/src/decorators/preview-version.d.ts.map +1 -0
  26. package/dist/src/decorators/preview-version.js +32 -0
  27. package/dist/src/decorators/preview-version.js.map +1 -0
  28. package/dist/src/decorators/preview-version.test.d.ts +2 -0
  29. package/dist/src/decorators/preview-version.test.d.ts.map +1 -0
  30. package/dist/src/decorators/preview-version.test.js +60 -0
  31. package/dist/src/decorators/preview-version.test.js.map +1 -0
  32. package/dist/src/decorators/utils.d.ts +3 -0
  33. package/dist/src/decorators/utils.d.ts.map +1 -0
  34. package/dist/src/decorators/utils.js +13 -0
  35. package/dist/src/decorators/utils.js.map +1 -0
  36. package/dist/src/decorators.d.ts +2 -29
  37. package/dist/src/decorators.d.ts.map +1 -1
  38. package/dist/src/decorators.js +2 -177
  39. package/dist/src/decorators.js.map +1 -1
  40. package/dist/src/index.d.ts +1 -0
  41. package/dist/src/index.d.ts.map +1 -1
  42. package/dist/src/index.js +1 -0
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/lro-helpers.js +2 -1
  45. package/dist/src/lro-helpers.js.map +1 -1
  46. package/dist/src/lro-info.d.ts.map +1 -1
  47. package/dist/src/lro-info.js +2 -1
  48. package/dist/src/lro-info.js.map +1 -1
  49. package/dist/src/tsp-index.d.ts.map +1 -1
  50. package/dist/src/tsp-index.js +6 -2
  51. package/dist/src/tsp-index.js.map +1 -1
  52. package/dist/src/validate.d.ts.map +1 -1
  53. package/dist/src/validate.js +2 -1
  54. package/dist/src/validate.js.map +1 -1
  55. package/lib/decorators.tsp +0 -6
  56. package/package.json +11 -11
package/README.md CHANGED
@@ -74,7 +74,6 @@ Available ruleSets:
74
74
 
75
75
  - [`@finalLocation`](#@finallocation)
76
76
  - [`@finalOperation`](#@finaloperation)
77
- - [`@fixed`](#@fixed)
78
77
  - [`@items`](#@items)
79
78
  - [`@lroCanceled`](#@lrocanceled)
80
79
  - [`@lroErrorResult`](#@lroerrorresult)
@@ -128,23 +127,6 @@ Identifies that an operation is the final operation for an LRO.
128
127
  | linkedOperation | `Operation` | The linked Operation |
129
128
  | parameters | `{}` | Map of `RequestParameter<Name>` and/or `ResponseProperty<Name>` that will<br />be passed to the linked operation request. |
130
129
 
131
- #### `@fixed`
132
-
133
- Marks an Enum as being fixed since enums in Azure are
134
- assumed to be extensible.
135
-
136
- ```typespec
137
- @Azure.Core.fixed
138
- ```
139
-
140
- ##### Target
141
-
142
- `Enum`
143
-
144
- ##### Parameters
145
-
146
- None
147
-
148
130
  #### `@items`
149
131
 
150
132
  Identifies the ModelProperty that contains the paged items. Can only be used on a Model marked with `@pagedResult`.
@@ -48,11 +48,6 @@ export type PagedResultDecorator = (context: DecoratorContext, entity: Model) =>
48
48
  * ```
49
49
  */
50
50
  export type PreviewVersionDecorator = (context: DecoratorContext, target: EnumMember) => void;
51
- /**
52
- * Marks an Enum as being fixed since enums in Azure are
53
- * assumed to be extensible.
54
- */
55
- export type FixedDecorator = (context: DecoratorContext, target: Enum) => void;
56
51
  /**
57
52
  * Used for custom StatusMonitor implementation.
58
53
  * Identifies an EnumMember as a long-running "Succeeded" terminal state.
@@ -134,7 +129,6 @@ export type AzureCoreDecorators = {
134
129
  items: ItemsDecorator;
135
130
  pagedResult: PagedResultDecorator;
136
131
  previewVersion: PreviewVersionDecorator;
137
- fixed: FixedDecorator;
138
132
  lroSucceeded: LroSucceededDecorator;
139
133
  lroCanceled: LroCanceledDecorator;
140
134
  lroFailed: LroFailedDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"Azure.Core.d.ts","sourceRoot":"","sources":["../../generated-defs/Azure.Core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Azure.Core.d.ts","sourceRoot":"","sources":["../../generated-defs/Azure.Core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { LroCanceledDecorator } from "../../generated-defs/Azure.Core.js";
2
+ export declare const
3
+ /**
4
+ * Returns `true` if the enum member represents a "canceled" state.
5
+ */
6
+ isLroCanceledState: (program: import("@typespec/compiler").Program, type: import("@typespec/compiler").EnumMember | import("@typespec/compiler").UnionVariant) => boolean, markLroCanceled: (program: import("@typespec/compiler").Program, type: import("@typespec/compiler").EnumMember | import("@typespec/compiler").UnionVariant) => void,
7
+ /** {@inheritdoc LroCanceledDecorator} */
8
+ $lroCanceled: LroCanceledDecorator;
9
+ //# sourceMappingURL=lro-cancelled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-cancelled.d.ts","sourceRoot":"","sources":["../../../src/decorators/lro-cancelled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAI/E,eAAO;AACL;;GAEG;AACH,kBAAkB,yJAClB,eAAe;AACf,yCAAyC;AACzC,YAAY,sBACiE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AzureCoreStateKeys } from "../lib.js";
2
+ import { createMarkerDecorator } from "./utils.js";
3
+ export const [
4
+ /**
5
+ * Returns `true` if the enum member represents a "canceled" state.
6
+ */
7
+ isLroCanceledState, markLroCanceled,
8
+ /** {@inheritdoc LroCanceledDecorator} */
9
+ $lroCanceled,] = createMarkerDecorator(AzureCoreStateKeys.lroCanceled);
10
+ //# sourceMappingURL=lro-cancelled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-cancelled.js","sourceRoot":"","sources":["../../../src/decorators/lro-cancelled.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,CAAC,MAAM;AACX;;GAEG;AACH,kBAAkB,EAClB,eAAe;AACf,yCAAyC;AACzC,YAAY,EACb,GAAG,qBAAqB,CAAuB,kBAAkB,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { LroFailedDecorator } from "../../generated-defs/Azure.Core.js";
2
+ export declare const
3
+ /**
4
+ * Returns `true` if the enum member represents a "failed" state.
5
+ */
6
+ isLroFailedState: (program: import("@typespec/compiler").Program, type: import("@typespec/compiler").EnumMember | import("@typespec/compiler").UnionVariant) => boolean, markLroFailed: (program: import("@typespec/compiler").Program, type: import("@typespec/compiler").EnumMember | import("@typespec/compiler").UnionVariant) => void,
7
+ /** {@inheritdoc LroFailedDecorator} */
8
+ $lroFailed: LroFailedDecorator;
9
+ //# sourceMappingURL=lro-failed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-failed.d.ts","sourceRoot":"","sources":["../../../src/decorators/lro-failed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,eAAO;AACL;;GAEG;AACH,gBAAgB,yJAChB,aAAa;AACb,uCAAuC;AACvC,UAAU,oBAC+D,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AzureCoreStateKeys } from "../lib.js";
2
+ import { createMarkerDecorator } from "./utils.js";
3
+ export const [
4
+ /**
5
+ * Returns `true` if the enum member represents a "failed" state.
6
+ */
7
+ isLroFailedState, markLroFailed,
8
+ /** {@inheritdoc LroFailedDecorator} */
9
+ $lroFailed,] = createMarkerDecorator(AzureCoreStateKeys.lroFailed);
10
+ //# sourceMappingURL=lro-failed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-failed.js","sourceRoot":"","sources":["../../../src/decorators/lro-failed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,CAAC,MAAM;AACX;;GAEG;AACH,gBAAgB,EAChB,aAAa;AACb,uCAAuC;AACvC,UAAU,EACX,GAAG,qBAAqB,CAAqB,kBAAkB,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type Diagnostic, type Enum, type ModelProperty, type Program, type Type, type Union } from "@typespec/compiler";
2
+ import type { LroStatusDecorator } from "../../generated-defs/Azure.Core.js";
3
+ import { type LongRunningStates } from "../decorators.js";
4
+ declare const
5
+ /**
6
+ * Returns the `LongRunningStates` associated with `entity`.
7
+ */
8
+ getLongRunningStates: (program: Program, type: ModelProperty | Enum | Union) => LongRunningStates | undefined;
9
+ export { getLongRunningStates };
10
+ export declare const $lroStatus: LroStatusDecorator;
11
+ export declare function extractLroStates(program: Program, entity: Type): [LongRunningStates | undefined, readonly Diagnostic[]];
12
+ //# sourceMappingURL=lro-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-status.d.ts","sourceRoot":"","sources":["../../../src/decorators/lro-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EAEf,KAAK,IAAI,EAET,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,KAAK,EAEX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAM1D,QAAA;AACE;;GAEG;AACH,oBAAoB,yFAEwE,CAAC;AAE/F,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,eAAO,MAAM,UAAU,EAAE,kBASxB,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,IAAI,GACX,CAAC,iBAAiB,GAAG,SAAS,EAAE,SAAS,UAAU,EAAE,CAAC,CAuDxD"}
@@ -0,0 +1,118 @@
1
+ import { createDiagnosticCollector, } from "@typespec/compiler";
2
+ import { useStateMap } from "@typespec/compiler/utils";
3
+ import { AzureCoreStateKeys, createDiagnostic } from "../lib.js";
4
+ import { isLroCanceledState } from "./lro-cancelled.js";
5
+ import { isLroFailedState } from "./lro-failed.js";
6
+ import { isLroSucceededState } from "./lro-succeeded.js";
7
+ const [
8
+ /**
9
+ * Returns the `LongRunningStates` associated with `entity`.
10
+ */
11
+ getLongRunningStates, setLroStatus,] = useStateMap(AzureCoreStateKeys.lroStatus);
12
+ export { getLongRunningStates };
13
+ export const $lroStatus = (context, entity) => {
14
+ const [states, diagnostics] = extractLroStates(context.program, entity);
15
+ if (diagnostics.length > 0)
16
+ context.program.reportDiagnostics(diagnostics);
17
+ if (states) {
18
+ setLroStatus(context.program, entity, states);
19
+ }
20
+ };
21
+ export function extractLroStates(program, entity) {
22
+ const result = {
23
+ states: [],
24
+ succeededState: [],
25
+ failedState: [],
26
+ canceledState: [],
27
+ };
28
+ const diagnostics = createDiagnosticCollector();
29
+ if (entity.kind === "ModelProperty") {
30
+ // Call the function recursively on the property type
31
+ return extractLroStates(program, entity.type);
32
+ }
33
+ else if (entity.kind === "Enum") {
34
+ for (const member of entity.members.values()) {
35
+ storeLroState(program, result, member.name, member);
36
+ }
37
+ }
38
+ else if (entity.kind === "Union") {
39
+ extractLroStatesFromUnion(program, entity, result, diagnostics);
40
+ }
41
+ else {
42
+ diagnostics.add(createDiagnostic({
43
+ code: "lro-status-property-invalid-type",
44
+ target: entity,
45
+ format: {
46
+ type: entity.kind,
47
+ },
48
+ }));
49
+ return diagnostics.wrap(undefined);
50
+ }
51
+ // Make sure all terminal states have been identified
52
+ const missingStates = [];
53
+ if (result.succeededState.length < 1) {
54
+ missingStates.push("Succeeded");
55
+ }
56
+ if (result.failedState.length < 1) {
57
+ missingStates.push("Failed");
58
+ }
59
+ if (missingStates.length > 0) {
60
+ diagnostics.add(createDiagnostic({
61
+ code: "lro-status-missing",
62
+ target: entity,
63
+ format: {
64
+ states: missingStates.join(", "),
65
+ },
66
+ }));
67
+ return diagnostics.wrap(undefined);
68
+ }
69
+ return diagnostics.wrap(result);
70
+ }
71
+ function storeLroState(program, states, name, member) {
72
+ const expectedStates = [
73
+ ["Succeeded", isLroSucceededState, () => states.succeededState.push(name)],
74
+ ["Failed", isLroFailedState, () => states.failedState.push(name)],
75
+ ["Canceled", isLroCanceledState, () => states.canceledState.push(name)],
76
+ ];
77
+ states.states.push(name);
78
+ for (const [knownState, stateTest, setter] of expectedStates) {
79
+ if (name === knownState || (member && stateTest(program, member))) {
80
+ setter();
81
+ break;
82
+ }
83
+ }
84
+ }
85
+ function extractLroStatesFromUnion(program, entity, lroStateResult, diagnostics) {
86
+ if (entity.kind === "Union") {
87
+ for (const variant of entity.variants.values()) {
88
+ const option = variant.type;
89
+ if (option.kind === "Enum") {
90
+ for (const member of option.members.values()) {
91
+ storeLroState(program, lroStateResult, member.name, member);
92
+ }
93
+ }
94
+ else if (option.kind === "Union") {
95
+ extractLroStatesFromUnion(program, option, lroStateResult, diagnostics);
96
+ }
97
+ else if (option.kind === "Scalar" && option.name === "string") {
98
+ // Ignore string marking this union as open.
99
+ continue;
100
+ }
101
+ else if (option.kind !== "String") {
102
+ diagnostics.add(createDiagnostic({
103
+ code: "lro-status-union-non-string",
104
+ target: option,
105
+ format: {
106
+ type: option.kind,
107
+ },
108
+ }));
109
+ return diagnostics.wrap(undefined);
110
+ }
111
+ else {
112
+ storeLroState(program, lroStateResult, typeof variant.name === "string" ? variant.name : option.value, variant);
113
+ }
114
+ }
115
+ }
116
+ return;
117
+ }
118
+ //# sourceMappingURL=lro-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-status.js","sourceRoot":"","sources":["../../../src/decorators/lro-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lro-status.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-status.test.d.ts","sourceRoot":"","sources":["../../../src/decorators/lro-status.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,216 @@
1
+ import { expectDiagnostics, t } from "@typespec/compiler/testing";
2
+ import { deepStrictEqual } from "assert";
3
+ import { it } from "vitest";
4
+ import { Tester } from "../../test/test-host.js";
5
+ import { getLongRunningStates } from "./lro-status.js";
6
+ it("emits diagnostic if used on wrong type", async () => {
7
+ const diagnostics = await Tester.diagnose(`
8
+ @lroStatus
9
+ op foo(): void;
10
+
11
+ @lroStatus
12
+ interface Foo {}
13
+ `);
14
+ expectDiagnostics(diagnostics, [
15
+ {
16
+ code: "decorator-wrong-target",
17
+ message: "Cannot apply @lroStatus decorator to foo since it is not assignable to Enum | Union | ModelProperty",
18
+ },
19
+ {
20
+ code: "decorator-wrong-target",
21
+ message: "Cannot apply @lroStatus decorator to Foo since it is not assignable to Enum | Union | ModelProperty",
22
+ },
23
+ ]);
24
+ });
25
+ it("emits diagnostic when model property type isn't valid", async () => {
26
+ const diagnostics = await Tester.diagnose(`
27
+ model BadStatusType {
28
+ @lroStatus status: int32;
29
+ }
30
+
31
+ model BadUnionType {
32
+ @lroStatus status: "Succeeded" | int64;
33
+ }
34
+ `);
35
+ expectDiagnostics(diagnostics, [
36
+ {
37
+ code: "@azure-tools/typespec-azure-core/lro-status-property-invalid-type",
38
+ message: "Property type must be a union of strings or an enum.",
39
+ },
40
+ {
41
+ code: "@azure-tools/typespec-azure-core/lro-status-union-non-string",
42
+ message: "Union contains non-string value type Scalar.",
43
+ },
44
+ {
45
+ code: "@azure-tools/typespec-azure-core/lro-status-missing",
46
+ message: "Terminal long-running operation states are missing: Failed.",
47
+ },
48
+ ]);
49
+ });
50
+ it("emits diagnostic when standard terminal states are missing", async () => {
51
+ const diagnostics = await Tester.diagnose(`
52
+ model UnionMissingStates {
53
+ @lroStatus status: "Completed" | "Failed" | "Cancelled" | "Working" | "Extra";
54
+ }
55
+
56
+ @lroStatus
57
+ enum EnumMissingStates {
58
+ Succeeded, Error, Cancelled
59
+ }
60
+ `);
61
+ expectDiagnostics(diagnostics, [
62
+ {
63
+ code: "@azure-tools/typespec-azure-core/lro-status-missing",
64
+ message: "Terminal long-running operation states are missing: Succeeded.",
65
+ },
66
+ {
67
+ code: "@azure-tools/typespec-azure-core/lro-status-missing",
68
+ message: "Terminal long-running operation states are missing: Failed.",
69
+ },
70
+ ]);
71
+ });
72
+ it("returns LRO states from a string union", async () => {
73
+ const { StatusModel, program } = await Tester.compile(t.code `
74
+ model ${t.model("StatusModel")} {
75
+ @lroStatus status: "Succeeded" | "Failed" | "Canceled" | "Working" | "Extra";
76
+ }
77
+ `);
78
+ deepStrictEqual(getLongRunningStates(program, StatusModel.properties.get("status")), {
79
+ succeededState: ["Succeeded"],
80
+ failedState: ["Failed"],
81
+ canceledState: ["Canceled"],
82
+ states: ["Succeeded", "Failed", "Canceled", "Working", "Extra"],
83
+ });
84
+ });
85
+ it("returns LRO states from an enum type", async () => {
86
+ const { DefaultLroStates, CustomLroStates, program } = await Tester.compile(t.code `
87
+ @lroStatus
88
+ enum ${t.enum("DefaultLroStates")} {
89
+ Succeeded,
90
+ Failed,
91
+ Canceled,
92
+ Extra,
93
+ }
94
+
95
+ @lroStatus
96
+ enum ${t.enum("CustomLroStates")} {
97
+ @lroSucceeded Donezo,
98
+ @lroFailed Borked,
99
+ @lroCanceled Chucked,
100
+ HaveAnother,
101
+ }
102
+ `);
103
+ deepStrictEqual(getLongRunningStates(program, DefaultLroStates), {
104
+ succeededState: ["Succeeded"],
105
+ failedState: ["Failed"],
106
+ canceledState: ["Canceled"],
107
+ states: ["Succeeded", "Failed", "Canceled", "Extra"],
108
+ });
109
+ deepStrictEqual(getLongRunningStates(program, CustomLroStates), {
110
+ succeededState: ["Donezo"],
111
+ failedState: ["Borked"],
112
+ canceledState: ["Chucked"],
113
+ states: ["Donezo", "Borked", "Chucked", "HaveAnother"],
114
+ });
115
+ });
116
+ it("returns LRO states from an named union type", async () => {
117
+ const { DefaultLroStates, CustomLroStates, program } = await Tester.compile(t.code `
118
+ @lroStatus
119
+ union ${t.union("DefaultLroStates")} {
120
+ "Succeeded",
121
+ "Failed",
122
+ "Canceled",
123
+ "Extra",
124
+ }
125
+
126
+ @lroStatus
127
+ union ${t.union("CustomLroStates")} {
128
+ @lroSucceeded "Donezo",
129
+ @lroFailed "Borked",
130
+ @lroCanceled "Chucked",
131
+ "HaveAnother",
132
+ }
133
+ `);
134
+ deepStrictEqual(getLongRunningStates(program, DefaultLroStates), {
135
+ succeededState: ["Succeeded"],
136
+ failedState: ["Failed"],
137
+ canceledState: ["Canceled"],
138
+ states: ["Succeeded", "Failed", "Canceled", "Extra"],
139
+ });
140
+ deepStrictEqual(getLongRunningStates(program, CustomLroStates), {
141
+ succeededState: ["Donezo"],
142
+ failedState: ["Borked"],
143
+ canceledState: ["Chucked"],
144
+ states: ["Donezo", "Borked", "Chucked", "HaveAnother"],
145
+ });
146
+ });
147
+ it("returns LRO states from an named union type built with enum", async () => {
148
+ const { DefaultLroStates, program } = await Tester.compile(t.code `
149
+ enum CommonStates {
150
+ Succeeded,
151
+ Failed,
152
+ Canceled
153
+ }
154
+
155
+ @lroStatus
156
+ union ${t.union("DefaultLroStates")} {
157
+ CommonStates,
158
+ "Extra",
159
+ }
160
+ `);
161
+ deepStrictEqual(getLongRunningStates(program, DefaultLroStates), {
162
+ succeededState: ["Succeeded"],
163
+ failedState: ["Failed"],
164
+ canceledState: ["Canceled"],
165
+ states: ["Succeeded", "Failed", "Canceled", "Extra"],
166
+ });
167
+ });
168
+ it("returns LRO states from a string type with known values", async () => {
169
+ const { DefaultLroStates, CustomLroStates, program } = await Tester.compile(t.code `
170
+ @lroStatus
171
+ enum ${t.enum("DefaultLroStates")} {
172
+ Succeeded,
173
+ Failed,
174
+ Canceled,
175
+ Extra,
176
+ }
177
+
178
+ @lroStatus
179
+ enum ${t.enum("CustomLroStates")} {
180
+ @lroSucceeded Donezo,
181
+ @lroFailed Borked,
182
+ @lroCanceled Chucked,
183
+ HaveAnother,
184
+ }
185
+ `);
186
+ deepStrictEqual(getLongRunningStates(program, DefaultLroStates), {
187
+ succeededState: ["Succeeded"],
188
+ failedState: ["Failed"],
189
+ canceledState: ["Canceled"],
190
+ states: ["Succeeded", "Failed", "Canceled", "Extra"],
191
+ });
192
+ deepStrictEqual(getLongRunningStates(program, CustomLroStates), {
193
+ succeededState: ["Donezo"],
194
+ failedState: ["Borked"],
195
+ canceledState: ["Chucked"],
196
+ states: ["Donezo", "Borked", "Chucked", "HaveAnother"],
197
+ });
198
+ });
199
+ it("resolve default state from union variant name", async () => {
200
+ const { DefaultLroStates, program } = await Tester.compile(t.code `
201
+ @lroStatus
202
+ union ${t.union("DefaultLroStates")} {
203
+ Succeeded: "uSucceeded",
204
+ Failed: "uFailed",
205
+ Canceled: "uCancelled",
206
+ Extra: "uExtra",
207
+ }
208
+ `);
209
+ deepStrictEqual(getLongRunningStates(program, DefaultLroStates), {
210
+ succeededState: ["Succeeded"],
211
+ failedState: ["Failed"],
212
+ canceledState: ["Canceled"],
213
+ states: ["Succeeded", "Failed", "Canceled", "Extra"],
214
+ });
215
+ });
216
+ //# sourceMappingURL=lro-status.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-status.test.js","sourceRoot":"","sources":["../../../src/decorators/lro-status.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { LroSucceededDecorator } from "../../generated-defs/Azure.Core.js";
2
+ export declare const
3
+ /**
4
+ * Returns `true` if the enum member represents a "succeeded" state.
5
+ */
6
+ isLroSucceededState: (program: import("@typespec/compiler").Program, type: import("@typespec/compiler").EnumMember | import("@typespec/compiler").UnionVariant) => boolean, markLroSucceeded: (program: import("@typespec/compiler").Program, type: import("@typespec/compiler").EnumMember | import("@typespec/compiler").UnionVariant) => void,
7
+ /** {@inheritdoc LroSucceededDecorator} */
8
+ $lroSucceeded: LroSucceededDecorator;
9
+ //# sourceMappingURL=lro-succeeded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-succeeded.d.ts","sourceRoot":"","sources":["../../../src/decorators/lro-succeeded.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAIhF,eAAO;AACL;;GAEG;AACH,mBAAmB,yJACnB,gBAAgB;AAChB,0CAA0C;AAC1C,aAAa,uBACkE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AzureCoreStateKeys } from "../lib.js";
2
+ import { createMarkerDecorator } from "./utils.js";
3
+ export const [
4
+ /**
5
+ * Returns `true` if the enum member represents a "succeeded" state.
6
+ */
7
+ isLroSucceededState, markLroSucceeded,
8
+ /** {@inheritdoc LroSucceededDecorator} */
9
+ $lroSucceeded,] = createMarkerDecorator(AzureCoreStateKeys.lroSucceeded);
10
+ //# sourceMappingURL=lro-succeeded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lro-succeeded.js","sourceRoot":"","sources":["../../../src/decorators/lro-succeeded.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,CAAC,MAAM;AACX;;GAEG;AACH,mBAAmB,EACnB,gBAAgB;AAChB,0CAA0C;AAC1C,aAAa,EACd,GAAG,qBAAqB,CAAwB,kBAAkB,CAAC,YAAY,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { EnumMember, Program } from "@typespec/compiler";
2
+ import type { PreviewVersionDecorator } from "../../generated-defs/Azure.Core.js";
3
+ declare const isPreviewVersion: (program: Program, type: EnumMember) => boolean;
4
+ export { isPreviewVersion };
5
+ export declare const $previewVersion: PreviewVersionDecorator;
6
+ export declare function checkPreviewVersion(program: Program): void;
7
+ //# sourceMappingURL=preview-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-version.d.ts","sourceRoot":"","sources":["../../../src/decorators/preview-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,UAAU,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAGlF,QAAA,MAAO,gBAAgB,iDAEtB,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,eAAO,MAAM,eAAe,EAAE,uBAK7B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA+BnD"}
@@ -0,0 +1,32 @@
1
+ import { useStateSet } from "@typespec/compiler/utils";
2
+ import { getVersionForEnumMember } from "@typespec/versioning";
3
+ import { AzureCoreStateKeys, createDiagnostic } from "../lib.js";
4
+ const [isPreviewVersion, markPreviewVersion] = useStateSet(AzureCoreStateKeys.previewVersion);
5
+ export { isPreviewVersion };
6
+ export const $previewVersion = (context, target) => {
7
+ markPreviewVersion(context.program, target);
8
+ };
9
+ export function checkPreviewVersion(program) {
10
+ const previewVersions = program.stateSet(AzureCoreStateKeys.previewVersion);
11
+ for (const target of previewVersions) {
12
+ const resolvedVersion = getVersionForEnumMember(program, target);
13
+ // Validate that the target is a member of a Version enum
14
+ if (!resolvedVersion) {
15
+ program.reportDiagnostic(createDiagnostic({
16
+ code: "preview-version-invalid-enum-member",
17
+ target,
18
+ }));
19
+ return;
20
+ }
21
+ // Validate that the target is the last member of the Version enum
22
+ const totalMembers = resolvedVersion.enumMember.enum.members.size;
23
+ if (resolvedVersion.index !== totalMembers - 1) {
24
+ program.reportDiagnostic(createDiagnostic({
25
+ code: "preview-version-last-member",
26
+ target,
27
+ }));
28
+ return;
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=preview-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-version.js","sourceRoot":"","sources":["../../../src/decorators/preview-version.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,GAAG,WAAW,CACxD,kBAAkB,CAAC,cAAc,CAClC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,CAAC,MAAM,eAAe,GAA4B,CACtD,OAAyB,EACzB,MAAkB,EAClB,EAAE;IACF,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CACtC,kBAAkB,CAAC,cAAc,CACV,CAAC;IAE1B,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEjE,yDAAyD;QACzD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,gBAAgB,CACtB,gBAAgB,CAAC;gBACf,IAAI,EAAE,qCAAqC;gBAC3C,MAAM;aACP,CAAC,CACH,CAAC;YACF,OAAO;QACT,CAAC;QAED,kEAAkE;QAClE,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAClE,IAAI,eAAe,CAAC,KAAK,KAAK,YAAY,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,gBAAgB,CACtB,gBAAgB,CAAC;gBACf,IAAI,EAAE,6BAA6B;gBACnC,MAAM;aACP,CAAC,CACH,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=preview-version.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-version.test.d.ts","sourceRoot":"","sources":["../../../src/decorators/preview-version.test.ts"],"names":[],"mappings":""}