@azure-tools/typespec-azure-core 0.43.0-dev.1 → 0.43.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.
- package/README.md +0 -2
- package/dist/src/linter.d.ts.map +1 -1
- package/dist/src/linter.js +0 -6
- package/dist/src/linter.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/rules/extensible-enums.d.ts +0 -4
- package/dist/src/rules/extensible-enums.d.ts.map +0 -1
- package/dist/src/rules/extensible-enums.js +0 -22
- package/dist/src/rules/extensible-enums.js.map +0 -1
- package/dist/src/rules/no-fixed-enum-discriminator.d.ts +0 -4
- package/dist/src/rules/no-fixed-enum-discriminator.d.ts.map +0 -1
- package/dist/src/rules/no-fixed-enum-discriminator.js +0 -31
- package/dist/src/rules/no-fixed-enum-discriminator.js.map +0 -1
package/README.md
CHANGED
|
@@ -37,14 +37,12 @@ Available ruleSets:
|
|
|
37
37
|
| `@azure-tools/typespec-azure-core/byos` | Use the BYOS pattern recommended for Azure Services. |
|
|
38
38
|
| `@azure-tools/typespec-azure-core/casing-style` | Ensure proper casing style. |
|
|
39
39
|
| `@azure-tools/typespec-azure-core/composition-over-inheritance` | Check that if a model is used in an operation and has derived models that it has a discriminator or recommend to use composition via spread or `is`. |
|
|
40
|
-
| `@azure-tools/typespec-azure-core/use-extensible-enum` | Enums should be extensible. |
|
|
41
40
|
| `@azure-tools/typespec-azure-core/known-encoding` | Check for supported encodings. |
|
|
42
41
|
| `@azure-tools/typespec-azure-core/long-running-polling-operation-required` | Long-running operations should have a linked polling operation. |
|
|
43
42
|
| [`@azure-tools/typespec-azure-core/no-closed-literal-union`](https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-closed-literal-union) | Unions of literals should include the base scalar type to mark them as open enum. |
|
|
44
43
|
| [`@azure-tools/typespec-azure-core/no-enum`](https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-enum) | Azure services should not use enums. |
|
|
45
44
|
| `@azure-tools/typespec-azure-core/no-error-status-codes` | Recommend using the error response defined by Azure REST API guidelines. |
|
|
46
45
|
| `@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops` | The @route decorator should not be used on standard resource operation signatures. |
|
|
47
|
-
| `@azure-tools/typespec-azure-core/no-fixed-enum-discriminator` | Discriminator shouldn't be a fixed enum. |
|
|
48
46
|
| [`@azure-tools/typespec-azure-core/non-breaking-versioning`](https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/non-breaking-versioning) | Check that only backward compatible versioning change are done to a service. |
|
|
49
47
|
| [`@azure-tools/typespec-azure-core/no-generic-numeric`](https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-generic-numeric) | Don't use generic types. Use more specific types instead. |
|
|
50
48
|
| `@azure-tools/typespec-azure-core/no-nullable` | Use `?` for optional properties. |
|
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":"AAwEA,eAAO,MAAM,OAAO,+CA+ClB,CAAC"}
|
package/dist/src/linter.js
CHANGED
|
@@ -4,7 +4,6 @@ import { authRequiredRule } from "./rules/auth-required.js";
|
|
|
4
4
|
import { byosRule } from "./rules/byos.js";
|
|
5
5
|
import { casingRule } from "./rules/casing.js";
|
|
6
6
|
import { compositionOverInheritanceRule } from "./rules/composition-over-inheritance.js";
|
|
7
|
-
import { extensibleEnumRule } from "./rules/extensible-enums.js";
|
|
8
7
|
import { friendlyNameRule } from "./rules/friendly-name.js";
|
|
9
8
|
import { knownEncodingRule } from "./rules/known-encoding.js";
|
|
10
9
|
import { longRunningOperationsRequirePollingOperation } from "./rules/lro-polling-operation.js";
|
|
@@ -12,7 +11,6 @@ import { noClosedLiteralUnionRule } from "./rules/no-closed-literal-union.js";
|
|
|
12
11
|
import { noEnumRule } from "./rules/no-enum.js";
|
|
13
12
|
import { noErrorStatusCodesRule } from "./rules/no-error-status-codes.js";
|
|
14
13
|
import { noExplicitRoutesResourceOps } from "./rules/no-explicit-routes-resource-ops.js";
|
|
15
|
-
import { noFixedEnumDiscriminatorRule } from "./rules/no-fixed-enum-discriminator.js";
|
|
16
14
|
import { noGenericNumericRule } from "./rules/no-generic-numeric.js";
|
|
17
15
|
import { noNullableRule } from "./rules/no-nullable.js";
|
|
18
16
|
import { noOffsetDateTimeRule } from "./rules/no-offsetdatetime.js";
|
|
@@ -42,14 +40,12 @@ const rules = [
|
|
|
42
40
|
byosRule,
|
|
43
41
|
casingRule,
|
|
44
42
|
compositionOverInheritanceRule,
|
|
45
|
-
extensibleEnumRule,
|
|
46
43
|
knownEncodingRule,
|
|
47
44
|
longRunningOperationsRequirePollingOperation,
|
|
48
45
|
noClosedLiteralUnionRule,
|
|
49
46
|
noEnumRule,
|
|
50
47
|
noErrorStatusCodesRule,
|
|
51
48
|
noExplicitRoutesResourceOps,
|
|
52
|
-
noFixedEnumDiscriminatorRule,
|
|
53
49
|
nonBreakingVersioningRule,
|
|
54
50
|
noGenericNumericRule,
|
|
55
51
|
noNullableRule,
|
|
@@ -86,11 +82,9 @@ export const $linter = defineLinter({
|
|
|
86
82
|
[`@azure-tools/typespec-azure-core/${compositionOverInheritanceRule.name}`]: true,
|
|
87
83
|
[`@azure-tools/typespec-azure-core/${spreadDiscriminatedModelRule.name}`]: true,
|
|
88
84
|
[`@azure-tools/typespec-azure-core/${preferCsvCollectionFormatRule.name}`]: true,
|
|
89
|
-
[`@azure-tools/typespec-azure-core/${extensibleEnumRule.name}`]: true,
|
|
90
85
|
[`@azure-tools/typespec-azure-core/${knownEncodingRule.name}`]: true,
|
|
91
86
|
[`@azure-tools/typespec-azure-core/${useStandardOperations.name}`]: true,
|
|
92
87
|
[`@azure-tools/typespec-azure-core/${noErrorStatusCodesRule.name}`]: true,
|
|
93
|
-
[`@azure-tools/typespec-azure-core/${noFixedEnumDiscriminatorRule.name}`]: true,
|
|
94
88
|
[`@azure-tools/typespec-azure-core/${noNullableRule.name}`]: true,
|
|
95
89
|
[`@azure-tools/typespec-azure-core/${noOffsetDateTimeRule.name}`]: true,
|
|
96
90
|
[`@azure-tools/typespec-azure-core/${noRpcPathParamsRule.name}`]: true,
|
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,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extensible-enums.d.ts","sourceRoot":"","sources":["../../../src/rules/extensible-enums.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;EAkB7B,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { createRule } from "@typespec/compiler";
|
|
2
|
-
import { isFixed } from "../decorators.js";
|
|
3
|
-
export const extensibleEnumRule = createRule({
|
|
4
|
-
name: "use-extensible-enum",
|
|
5
|
-
description: "Enums should be extensible.",
|
|
6
|
-
severity: "warning",
|
|
7
|
-
messages: {
|
|
8
|
-
default: "Enums should be defined without the `@fixed` decorator.",
|
|
9
|
-
},
|
|
10
|
-
create(context) {
|
|
11
|
-
return {
|
|
12
|
-
enum: (enumType) => {
|
|
13
|
-
if (isFixed(context.program, enumType)) {
|
|
14
|
-
context.reportDiagnostic({
|
|
15
|
-
target: enumType,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=extensible-enums.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extensible-enums.js","sourceRoot":"","sources":["../../../src/rules/extensible-enums.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC3C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,6BAA6B;IAC1C,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE;QACR,OAAO,EAAE,yDAAyD;KACnE;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,IAAI,EAAE,CAAC,QAAc,EAAE,EAAE;gBACvB,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,gBAAgB,CAAC;wBACvB,MAAM,EAAE,QAAQ;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare const noFixedEnumDiscriminatorRule: import("@typespec/compiler").LinterRuleDefinition<"no-fixed-enum-discriminator", {
|
|
2
|
-
readonly default: import("@typespec/compiler").CallableMessage<[string]>;
|
|
3
|
-
}>;
|
|
4
|
-
//# sourceMappingURL=no-fixed-enum-discriminator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-fixed-enum-discriminator.d.ts","sourceRoot":"","sources":["../../../src/rules/no-fixed-enum-discriminator.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,4BAA4B;;EA6BvC,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { createRule, getDiscriminator, paramMessage } from "@typespec/compiler";
|
|
2
|
-
import { isFixed } from "../decorators.js";
|
|
3
|
-
export const noFixedEnumDiscriminatorRule = createRule({
|
|
4
|
-
name: "no-fixed-enum-discriminator",
|
|
5
|
-
description: "Discriminator shouldn't be a fixed enum.",
|
|
6
|
-
severity: "warning",
|
|
7
|
-
messages: {
|
|
8
|
-
default: paramMessage `Discriminator shouldn't be a fixed enum. A discriminated model is likely to expand over time. Removed "@fixed" from "${"enumName"}" enum.`,
|
|
9
|
-
},
|
|
10
|
-
create(context) {
|
|
11
|
-
return {
|
|
12
|
-
model: (model) => {
|
|
13
|
-
const discriminator = getDiscriminator(context.program, model);
|
|
14
|
-
if (discriminator === undefined) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
const property = model.properties.get(discriminator.propertyName);
|
|
18
|
-
if (property === undefined || property.type.kind !== "Enum") {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
if (isFixed(context.program, property.type)) {
|
|
22
|
-
context.reportDiagnostic({
|
|
23
|
-
format: { enumName: property.type.name },
|
|
24
|
-
target: property,
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
//# sourceMappingURL=no-fixed-enum-discriminator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-fixed-enum-discriminator.js","sourceRoot":"","sources":["../../../src/rules/no-fixed-enum-discriminator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC;IACrD,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,0CAA0C;IACvD,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE;QACR,OAAO,EAAE,YAAY,CAAA,wHAAwH,UAAU,SAAS;KACjK;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE;gBACtB,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC/D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC5D,OAAO;gBACT,CAAC;gBAED,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,gBAAgB,CAAC;wBACvB,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;wBACxC,MAAM,EAAE,QAAQ;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|