@azure-tools/typespec-azure-core 0.45.0-dev.6 → 0.45.0-dev.7
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/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/require-versioned.d.ts +4 -0
- package/dist/src/rules/require-versioned.d.ts.map +1 -0
- package/dist/src/rules/require-versioned.js +41 -0
- package/dist/src/rules/require-versioned.js.map +1 -0
- package/dist/src/rules/utils.d.ts +5 -1
- package/dist/src/rules/utils.d.ts.map +1 -1
- package/dist/src/rules/utils.js +15 -0
- package/dist/src/rules/utils.js.map +1 -1
- package/lib/traits.tsp +63 -72
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,6 +65,7 @@ Available ruleSets:
|
|
|
65
65
|
| `@azure-tools/typespec-azure-core/use-standard-names` | Use recommended names for operations. |
|
|
66
66
|
| `@azure-tools/typespec-azure-core/use-standard-operations` | Operations should be defined using a signature from the Azure.Core namespace. |
|
|
67
67
|
| [`@azure-tools/typespec-azure-core/no-string-discriminator`](https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-string-discriminator) | Azure services discriminated models should define the discriminated property as an extensible union. |
|
|
68
|
+
| [`@azure-tools/typespec-azure-core/require-versioned`](https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/require-versioned) | Azure services should use the versioning library. |
|
|
68
69
|
| `@azure-tools/typespec-azure-core/friendly-name` | Ensures that @friendlyName is used as intended. |
|
|
69
70
|
| [`@azure-tools/typespec-azure-core/no-private-usage`](https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-private-usage) | Verify that elements inside Private namespace are not referenced. |
|
|
70
71
|
|
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":"AA+EA,eAAO,MAAM,OAAO,+CASlB,CAAC"}
|
package/dist/src/linter.js
CHANGED
|
@@ -30,6 +30,7 @@ import { recordTypeRule } from "./rules/record-types.js";
|
|
|
30
30
|
import { bodyArrayRule } from "./rules/request-body-array.js";
|
|
31
31
|
import { requireDocumentation } from "./rules/require-docs.js";
|
|
32
32
|
import { requireKeyVisibility } from "./rules/require-key-visibility.js";
|
|
33
|
+
import { requireVersionedRule } from "./rules/require-versioned.js";
|
|
33
34
|
import { responseSchemaMultiStatusCodeRule } from "./rules/response-schema-multi-status-code.js";
|
|
34
35
|
import { rpcOperationRequestBodyRule } from "./rules/rpc-operation-request-body.js";
|
|
35
36
|
import { spreadDiscriminatedModelRule } from "./rules/spread-discriminated-model.js";
|
|
@@ -70,6 +71,7 @@ const rules = [
|
|
|
70
71
|
useStandardNames,
|
|
71
72
|
useStandardOperations,
|
|
72
73
|
noStringDiscriminatorRule,
|
|
74
|
+
requireVersionedRule,
|
|
73
75
|
friendlyNameRule,
|
|
74
76
|
noPrivateUsage,
|
|
75
77
|
];
|
package/dist/src/linter.js.map
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"require-versioned.d.ts","sourceRoot":"","sources":["../../../src/rules/require-versioned.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,oBAAoB;;EAwB/B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createRule, getSourceLocation, listServices, paramMessage, } from "@typespec/compiler";
|
|
2
|
+
import { getVersion } from "@typespec/versioning";
|
|
3
|
+
import { findLineStartAndIndent } from "./utils.js";
|
|
4
|
+
export const requireVersionedRule = createRule({
|
|
5
|
+
name: "require-versioned",
|
|
6
|
+
description: "Azure services should use the versioning library.",
|
|
7
|
+
severity: "warning",
|
|
8
|
+
url: "https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/require-versioned",
|
|
9
|
+
messages: {
|
|
10
|
+
default: paramMessage `Azure services should use the versioning library to define versions for their services. Add the '@versioned' decorator to the service namespace.`,
|
|
11
|
+
},
|
|
12
|
+
create(context) {
|
|
13
|
+
return {
|
|
14
|
+
root: (program) => {
|
|
15
|
+
const services = listServices(program);
|
|
16
|
+
for (const service of services) {
|
|
17
|
+
if (getVersion(program, service.type) === undefined) {
|
|
18
|
+
context.reportDiagnostic({
|
|
19
|
+
format: { serviceName: service.type },
|
|
20
|
+
target: service.type,
|
|
21
|
+
codefixes: [createAddVersionedCodeFix(service.type)],
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
function createAddVersionedCodeFix(namespace) {
|
|
30
|
+
return {
|
|
31
|
+
id: "add-versioned",
|
|
32
|
+
label: "Add @versioned",
|
|
33
|
+
fix(context) {
|
|
34
|
+
const location = getSourceLocation(namespace);
|
|
35
|
+
const { lineStart, indent } = findLineStartAndIndent(location);
|
|
36
|
+
const updatedLocation = { ...location, pos: lineStart };
|
|
37
|
+
return context.prependText(updatedLocation, `${indent}@versioned(Versions /* create an enum called Versions with your service version */)\n`);
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=require-versioned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-versioned.js","sourceRoot":"","sources":["../../../src/rules/require-versioned.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,iBAAiB,EACjB,YAAY,EAEZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;IAC7C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE,SAAS;IACnB,GAAG,EAAE,0FAA0F;IAC/F,QAAQ,EAAE;QACR,OAAO,EAAE,YAAY,CAAA,kJAAkJ;KACxK;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBAChB,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;wBACpD,OAAO,CAAC,gBAAgB,CAAC;4BACvB,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE;4BACrC,MAAM,EAAE,OAAO,CAAC,IAAI;4BACpB,SAAS,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;yBACrD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,yBAAyB,CAAC,SAAoB;IACrD,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,gBAAgB;QACvB,GAAG,CAAC,OAAuB;YACzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YACxD,OAAO,OAAO,CAAC,WAAW,CACxB,eAAe,EACf,GAAG,MAAM,uFAAuF,CACjG,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Enum, EnumMember, Interface, Model, ModelProperty, Namespace, Operation, Program, Scalar, Union, UnionVariant } from "@typespec/compiler";
|
|
1
|
+
import { Enum, EnumMember, Interface, Model, ModelProperty, Namespace, Operation, Program, Scalar, SourceLocation, Union, UnionVariant } from "@typespec/compiler";
|
|
2
2
|
type DeclarableType = Namespace | Model | ModelProperty | Enum | EnumMember | Union | UnionVariant | Scalar | Operation | Interface;
|
|
3
3
|
/**
|
|
4
4
|
* Returns the full namespace name for the given type, if available.
|
|
@@ -51,5 +51,9 @@ export declare function isPascalCaseNoAcronyms(name: string): boolean;
|
|
|
51
51
|
* @returns true if the name is in camelCase
|
|
52
52
|
*/
|
|
53
53
|
export declare function isCamelCaseNoAcronyms(name: string): boolean;
|
|
54
|
+
export declare function findLineStartAndIndent(location: SourceLocation): {
|
|
55
|
+
lineStart: number;
|
|
56
|
+
indent: string;
|
|
57
|
+
};
|
|
54
58
|
export {};
|
|
55
59
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,UAAU,EAEV,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EACP,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,UAAU,EAEV,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EACP,MAAM,EACN,cAAc,EAEd,KAAK,EACL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAE5B,KAAK,cAAc,GACf,SAAS,GACT,KAAK,GACL,aAAa,GACb,IAAI,GACJ,UAAU,GACV,KAAK,GACL,YAAY,GACZ,MAAM,GACN,SAAS,GACT,SAAS,CAAC;AAEd;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAW3F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAclF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAIxF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,WAE1C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,KAAK,kBAEtD;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,uBAM9D;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,WAE9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAaA"}
|
package/dist/src/rules/utils.js
CHANGED
|
@@ -103,4 +103,19 @@ export function isCamelCaseNoAcronyms(name) {
|
|
|
103
103
|
return true;
|
|
104
104
|
return /^[^a-zA-Z0-9]?[a-z][a-z0-9]*([A-Z][a-z0-9]+)*[A-Z]?$/.test(name);
|
|
105
105
|
}
|
|
106
|
+
export function findLineStartAndIndent(location) {
|
|
107
|
+
const text = location.file.text;
|
|
108
|
+
let pos = location.pos;
|
|
109
|
+
let indent = 0;
|
|
110
|
+
while (pos > 0 && text[pos - 1] !== "\n") {
|
|
111
|
+
if ([" ", "\t", "\n"].includes(text[pos - 1])) {
|
|
112
|
+
indent++;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
indent = 0;
|
|
116
|
+
}
|
|
117
|
+
pos--;
|
|
118
|
+
}
|
|
119
|
+
return { lineStart: pos, indent: location.file.text.slice(pos, pos + indent) };
|
|
120
|
+
}
|
|
106
121
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,oBAAoB,EAEpB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/traits.tsp
CHANGED
|
@@ -247,7 +247,7 @@ extern dec traitLocation(target: ModelProperty, contexts: EnumMember);
|
|
|
247
247
|
*/
|
|
248
248
|
extern dec traitAdded(target: Model | ModelProperty, addedVersion: EnumMember | null);
|
|
249
249
|
|
|
250
|
-
namespace
|
|
250
|
+
namespace Private {
|
|
251
251
|
@added(Azure.Core.Versions.v1_0_Preview_2)
|
|
252
252
|
@Private.addTraitProperties(Traits, Location, Contexts)
|
|
253
253
|
model TraitProperties<
|
|
@@ -264,76 +264,67 @@ namespace Azure.Core.Traits.Private {
|
|
|
264
264
|
@doc("The diagnostic to be raised when the trait is not present.")
|
|
265
265
|
diagnostic: string;
|
|
266
266
|
}
|
|
267
|
-
}
|
|
268
267
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
*
|
|
332
|
-
* @param target The model type where this check will be established.
|
|
333
|
-
* @param paramModel The actual model type to check for header properties.
|
|
334
|
-
*/
|
|
335
|
-
extern dec ensureAllHeaderParams(target: Model, paramModel: Model);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
268
|
+
/**
|
|
269
|
+
* `@traitSource` stores the `traitName` of its original trait on the envelope property.
|
|
270
|
+
*
|
|
271
|
+
* @param target The trait envelope property where `traitName` will be stored.
|
|
272
|
+
* @param traitName The name of the original trait to which this property belongs.
|
|
273
|
+
*/
|
|
274
|
+
extern dec traitSource(target: ModelProperty, traitName: valueof string);
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Copies trait properties from `traitModel` into `target` which conform to the
|
|
278
|
+
* specified location and contexts.
|
|
279
|
+
* @param traitModel The trait model type to be applied.
|
|
280
|
+
* @param traitLocation The trait location to use for selecting trait properties.
|
|
281
|
+
* @param traitContexts The trait contexts to use for selecting trait properties.
|
|
282
|
+
*/
|
|
283
|
+
extern dec addTraitProperties(
|
|
284
|
+
target: Model,
|
|
285
|
+
traitModel: Model,
|
|
286
|
+
traitLocation: EnumMember,
|
|
287
|
+
traitContexts: EnumMember | Union | unknown
|
|
288
|
+
);
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* `@applyTraitOverride` copies the `traitModel` into `target` and renames its envelope
|
|
292
|
+
* property to enable the trait to override another trait sharing the same name.
|
|
293
|
+
*
|
|
294
|
+
* @param target The model into which the trait will be copied.
|
|
295
|
+
* @param traitModel The trait model type to be overridden.
|
|
296
|
+
*/
|
|
297
|
+
extern dec applyTraitOverride(target: Model, traitModel: Model);
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* `@ensureTraitsPresent` checks the envelope properties of `traitModel` to ensure all
|
|
301
|
+
* of the `expectedTraits` are present as envelope properties.
|
|
302
|
+
*
|
|
303
|
+
* @param target The interface or operation where the `traitModel` should be checked.
|
|
304
|
+
* @param traitModel The trait model type to check.
|
|
305
|
+
* @param expectedTraits The array of `ExpectedTrait` models which describe each expected trait.
|
|
306
|
+
*/
|
|
307
|
+
extern dec ensureTraitsPresent(
|
|
308
|
+
target: Interface | TypeSpec.Reflection.Operation,
|
|
309
|
+
traitModel: Model,
|
|
310
|
+
expectedTraits: ExpectedTrait[]
|
|
311
|
+
);
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* `@ensureAllQueryParams` checks the properties of `paramModel` to ensure they all are marked
|
|
315
|
+
* with the `@query` decorator.
|
|
316
|
+
*
|
|
317
|
+
* @param target The model type where this check will be established.
|
|
318
|
+
* @param paramModel The actual model type to check for query parameters.
|
|
319
|
+
*/
|
|
320
|
+
extern dec ensureAllQueryParams(target: Model, paramModel: Model);
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* `@ensureAllHeaderParams` checks the properties of `paramModel` to ensure they all are marked
|
|
324
|
+
* with the `@header` decorator.
|
|
325
|
+
*
|
|
326
|
+
* @param target The model type where this check will be established.
|
|
327
|
+
* @param paramModel The actual model type to check for header properties.
|
|
328
|
+
*/
|
|
329
|
+
extern dec ensureAllHeaderParams(target: Model, paramModel: Model);
|
|
339
330
|
}
|
package/package.json
CHANGED