@microsoft/typespec-msgraph 1.2.2 → 1.4.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.
Files changed (108) hide show
  1. package/dist/src/components/auto-expand-annotation.d.ts +8 -0
  2. package/dist/src/components/auto-expand-annotation.d.ts.map +1 -0
  3. package/dist/src/components/auto-expand-annotation.js +5 -0
  4. package/dist/src/components/auto-expand-annotation.js.map +1 -0
  5. package/dist/src/components/property-element.d.ts.map +1 -1
  6. package/dist/src/components/property-element.js +3 -0
  7. package/dist/src/components/property-element.js.map +1 -1
  8. package/dist/src/components/sort-restrictions-annotation.d.ts.map +1 -1
  9. package/dist/src/components/sort-restrictions-annotation.js +3 -1
  10. package/dist/src/components/sort-restrictions-annotation.js.map +1 -1
  11. package/dist/src/decorators/auto-expand-references.d.ts +7 -0
  12. package/dist/src/decorators/auto-expand-references.d.ts.map +1 -0
  13. package/dist/src/decorators/auto-expand-references.js +11 -0
  14. package/dist/src/decorators/auto-expand-references.js.map +1 -0
  15. package/dist/src/decorators/auto-expand.d.ts +7 -0
  16. package/dist/src/decorators/auto-expand.d.ts.map +1 -0
  17. package/dist/src/decorators/auto-expand.js +11 -0
  18. package/dist/src/decorators/auto-expand.js.map +1 -0
  19. package/dist/src/decorators/index.d.ts +2 -0
  20. package/dist/src/decorators/index.d.ts.map +1 -1
  21. package/dist/src/decorators/index.js +2 -0
  22. package/dist/src/decorators/index.js.map +1 -1
  23. package/dist/src/entities/annotations.d.ts.map +1 -1
  24. package/dist/src/entities/annotations.js +3 -0
  25. package/dist/src/entities/annotations.js.map +1 -1
  26. package/dist/src/entities/entity-container.d.ts.map +1 -1
  27. package/dist/src/entities/entity-container.js +10 -1
  28. package/dist/src/entities/entity-container.js.map +1 -1
  29. package/dist/src/entities/model.d.ts +2 -0
  30. package/dist/src/entities/model.d.ts.map +1 -1
  31. package/dist/src/entities/model.js +4 -0
  32. package/dist/src/entities/model.js.map +1 -1
  33. package/dist/src/entities/property.d.ts.map +1 -1
  34. package/dist/src/entities/property.js +2 -1
  35. package/dist/src/entities/property.js.map +1 -1
  36. package/dist/src/lib.d.ts +4 -2
  37. package/dist/src/lib.d.ts.map +1 -1
  38. package/dist/src/lib.js +2 -1
  39. package/dist/src/lib.js.map +1 -1
  40. package/dist/src/linter.d.ts.map +1 -1
  41. package/dist/src/linter.js +42 -11
  42. package/dist/src/linter.js.map +1 -1
  43. package/dist/src/rules/auto-expand.d.ts +3 -0
  44. package/dist/src/rules/auto-expand.d.ts.map +1 -0
  45. package/dist/src/rules/auto-expand.js +100 -0
  46. package/dist/src/rules/auto-expand.js.map +1 -0
  47. package/dist/src/rules/collections.d.ts +3 -0
  48. package/dist/src/rules/collections.d.ts.map +1 -1
  49. package/dist/src/rules/collections.js +53 -8
  50. package/dist/src/rules/collections.js.map +1 -1
  51. package/dist/src/rules/complex.d.ts +3 -0
  52. package/dist/src/rules/complex.d.ts.map +1 -1
  53. package/dist/src/rules/complex.js +28 -4
  54. package/dist/src/rules/complex.js.map +1 -1
  55. package/dist/src/rules/entity.d.ts +6 -0
  56. package/dist/src/rules/entity.d.ts.map +1 -1
  57. package/dist/src/rules/entity.js +54 -1
  58. package/dist/src/rules/entity.js.map +1 -1
  59. package/dist/src/rules/enum.d.ts +3 -0
  60. package/dist/src/rules/enum.d.ts.map +1 -1
  61. package/dist/src/rules/enum.js +44 -2
  62. package/dist/src/rules/enum.js.map +1 -1
  63. package/dist/src/rules/filter.d.ts.map +1 -1
  64. package/dist/src/rules/filter.js +0 -1
  65. package/dist/src/rules/filter.js.map +1 -1
  66. package/dist/src/rules/graph-studio.d.ts +163 -0
  67. package/dist/src/rules/graph-studio.d.ts.map +1 -0
  68. package/dist/src/rules/graph-studio.js +77 -0
  69. package/dist/src/rules/graph-studio.js.map +1 -0
  70. package/dist/src/rules/index.d.ts +2 -0
  71. package/dist/src/rules/index.d.ts.map +1 -1
  72. package/dist/src/rules/index.js +2 -0
  73. package/dist/src/rules/index.js.map +1 -1
  74. package/dist/src/rules/media.d.ts +6 -0
  75. package/dist/src/rules/media.d.ts.map +1 -1
  76. package/dist/src/rules/media.js +61 -6
  77. package/dist/src/rules/media.js.map +1 -1
  78. package/dist/src/rules/naming.d.ts +3 -0
  79. package/dist/src/rules/naming.d.ts.map +1 -1
  80. package/dist/src/rules/naming.js +34 -1
  81. package/dist/src/rules/naming.js.map +1 -1
  82. package/dist/src/rules/order-by.d.ts +1 -0
  83. package/dist/src/rules/order-by.d.ts.map +1 -1
  84. package/dist/src/rules/order-by.js +24 -1
  85. package/dist/src/rules/order-by.js.map +1 -1
  86. package/dist/src/rules/properties.d.ts +21 -0
  87. package/dist/src/rules/properties.d.ts.map +1 -1
  88. package/dist/src/rules/properties.js +205 -2
  89. package/dist/src/rules/properties.js.map +1 -1
  90. package/dist/src/supressions/csdl-suppression-rules.d.ts.map +1 -1
  91. package/dist/src/supressions/csdl-suppression-rules.js +5 -27
  92. package/dist/src/supressions/csdl-suppression-rules.js.map +1 -1
  93. package/dist/src/supressions/suppression-collector.d.ts.map +1 -1
  94. package/dist/src/supressions/suppression-collector.js +27 -11
  95. package/dist/src/supressions/suppression-collector.js.map +1 -1
  96. package/dist/src/testing/index.d.ts +3 -0
  97. package/dist/src/testing/index.d.ts.map +1 -1
  98. package/dist/src/testing/index.js +3 -0
  99. package/dist/src/testing/index.js.map +1 -1
  100. package/dist/src/utils.d.ts +1 -0
  101. package/dist/src/utils.d.ts.map +1 -1
  102. package/dist/src/utils.js +9 -2
  103. package/dist/src/utils.js.map +1 -1
  104. package/dist/src/validate.d.ts.map +1 -1
  105. package/dist/src/validate.js +2 -0
  106. package/dist/src/validate.js.map +1 -1
  107. package/lib/decorators.tsp +20 -0
  108. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA6CpE,eAAO,MAAM,OAAO,EAAE,gBAwEpB,CAAC"}
1
+ {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA6DpE,eAAO,MAAM,OAAO,EAAE,gBAsGpB,CAAC"}
@@ -1,17 +1,18 @@
1
1
  import { defineLinter } from "@typespec/compiler";
2
2
  import { allowedValuesCsdlCompatibility } from "./rules/allowed-values.js";
3
- import { collectionOfComplexTypeShouldUseEntityType, collectionPropertyNameShouldBePlural, collectionPropertyShouldNotBeNullable, } from "./rules/collections.js";
3
+ import { collectionOfComplexTypeShouldUseEntityType, collectionPropertyNameShouldBePlural, collectionPropertyShouldNotBeNullable, numberedPropertiesShouldUseCollection, } from "./rules/collections.js";
4
+ import { avoidIdPropertyOnComplexType } from "./rules/complex.js";
4
5
  import { containedEntityShouldNotHaveEntitySet } from "./rules/contains.js";
5
6
  import { validateCoreElementsHaveDocString } from "./rules/documentation.js";
6
- import { entityAndComplexPropertyNameShouldNotBeName, entityNamesShouldBeSingular, referenceIdPropertyShouldBeNavigationProperty, } from "./rules/entity.js";
7
- import { collectionShouldNotBeEnum, nullableBooleanShouldBeEnum, nullableEnumsShouldAddAdditionalMember, useEvolvableEnumRule, } from "./rules/enum.js";
7
+ import { entityAndComplexPropertyNameShouldNotBeName, entityKeyMustBeString, entityNamesShouldBeSingular, primaryKeyMustNotBeComposite, referenceIdPropertyShouldBeNavigationProperty, } from "./rules/entity.js";
8
+ import { collectionShouldNotBeEnum, graphFlagsValuesMustBeZeroOrPowersOfTwo, nullableBooleanShouldBeEnum, nullableEnumsShouldAddAdditionalMember, useEvolvableEnumRule, } from "./rules/enum.js";
8
9
  import { flatBagEnumShouldBeClosed, flatBagSiblingsShouldBeNullable } from "./rules/flat-bag.js";
9
- import { interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified, mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes, } from "./rules/media.js";
10
+ import { interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified, mediaEntityTypesMustNotContainStreamProperties, mediaEntityTypesMustNotInherit, mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes, } from "./rules/media.js";
10
11
  import { containedNavigationPropertyTypeShouldNotBeExternallyReferenced, operationParametersShouldHaveRequiredBeforeOptional, shouldNotUseUnnecessaryInheritance, } from "./rules/model.js";
11
- import { namesMustBeCamelCase } from "./rules/naming.js";
12
- import { namespaceAliasConventionSuppressed, namespacesMustBeCamelCase } from "./rules/namespace.js";
12
+ import { namesMustBeCamelCase, operationNamesShouldAvoidCrudVerbs } from "./rules/naming.js";
13
+ import { namespaceAliasConventionSuppressed, namespacesMustBeCamelCase, } from "./rules/namespace.js";
13
14
  import { getPutPostAndPatchOperationsShouldHaveSelectDecorator } from "./rules/operation-inside-interface.js";
14
- import { propertyMustNotBeNamedType, propertyNameShouldNotStartWithNavigationSourceName, useCreatedInPropertyNames, useModifiedInPropertyNames, useProperDefaultRecord, } from "./rules/properties.js";
15
+ import { datePropertyNamesMustUseDateSuffix, dateTimePropertyNamesMustUseDateTimeSuffix, propertyMustNotBeNamedType, propertyNameMustNotRepeatDeclaringType, propertyNameMustNotUsePrimitiveTypeAffix, propertyNameMustNotUseProhibitedSuffix, propertyNameShouldNotStartWithNavigationSourceName, timePropertyNamesMustUseTimeSuffix, useCreatedInPropertyNames, useEmailInsteadOfMail, useModifiedInPropertyNames, useProperDefaultRecord, } from "./rules/properties.js";
15
16
  import { dictionaryTypeIsMostlyUsedWithRecordType, useRecordTypeInsteadOfDictionary, } from "./rules/record-t.js";
16
17
  export const $linter = defineLinter({
17
18
  rules: [
@@ -45,7 +46,22 @@ export const $linter = defineLinter({
45
46
  propertyMustNotBeNamedType,
46
47
  namespaceAliasConventionSuppressed,
47
48
  flatBagSiblingsShouldBeNullable,
48
- flatBagEnumShouldBeClosed
49
+ flatBagEnumShouldBeClosed,
50
+ useEmailInsteadOfMail,
51
+ datePropertyNamesMustUseDateSuffix,
52
+ timePropertyNamesMustUseTimeSuffix,
53
+ dateTimePropertyNamesMustUseDateTimeSuffix,
54
+ entityKeyMustBeString,
55
+ primaryKeyMustNotBeComposite,
56
+ avoidIdPropertyOnComplexType,
57
+ propertyNameMustNotRepeatDeclaringType,
58
+ propertyNameMustNotUsePrimitiveTypeAffix,
59
+ propertyNameMustNotUseProhibitedSuffix,
60
+ graphFlagsValuesMustBeZeroOrPowersOfTwo,
61
+ mediaEntityTypesMustNotContainStreamProperties,
62
+ mediaEntityTypesMustNotInherit,
63
+ operationNamesShouldAvoidCrudVerbs,
64
+ numberedPropertiesShouldUseCollection,
49
65
  ],
50
66
  ruleSets: {
51
67
  recommended: {
@@ -71,6 +87,21 @@ export const $linter = defineLinter({
71
87
  [`@microsoft/typespec-msgraph/${propertyMustNotBeNamedType.name}`]: true,
72
88
  [`@microsoft/typespec-msgraph/${namespaceAliasConventionSuppressed.name}`]: true,
73
89
  [`@microsoft/typespec-msgraph/${flatBagEnumShouldBeClosed.name}`]: true,
90
+ [`@microsoft/typespec-msgraph/${useEmailInsteadOfMail.name}`]: true,
91
+ [`@microsoft/typespec-msgraph/${datePropertyNamesMustUseDateSuffix.name}`]: true,
92
+ [`@microsoft/typespec-msgraph/${timePropertyNamesMustUseTimeSuffix.name}`]: true,
93
+ [`@microsoft/typespec-msgraph/${dateTimePropertyNamesMustUseDateTimeSuffix.name}`]: true,
94
+ [`@microsoft/typespec-msgraph/${entityKeyMustBeString.name}`]: true,
95
+ [`@microsoft/typespec-msgraph/${primaryKeyMustNotBeComposite.name}`]: true,
96
+ [`@microsoft/typespec-msgraph/${avoidIdPropertyOnComplexType.name}`]: true,
97
+ [`@microsoft/typespec-msgraph/${propertyNameMustNotRepeatDeclaringType.name}`]: true,
98
+ [`@microsoft/typespec-msgraph/${propertyNameMustNotUsePrimitiveTypeAffix.name}`]: true,
99
+ [`@microsoft/typespec-msgraph/${propertyNameMustNotUseProhibitedSuffix.name}`]: true,
100
+ [`@microsoft/typespec-msgraph/${graphFlagsValuesMustBeZeroOrPowersOfTwo.name}`]: true,
101
+ [`@microsoft/typespec-msgraph/${mediaEntityTypesMustNotContainStreamProperties.name}`]: true,
102
+ [`@microsoft/typespec-msgraph/${mediaEntityTypesMustNotInherit.name}`]: true,
103
+ [`@microsoft/typespec-msgraph/${operationNamesShouldAvoidCrudVerbs.name}`]: true,
104
+ [`@microsoft/typespec-msgraph/${numberedPropertiesShouldUseCollection.name}`]: true,
74
105
  // library recommended rules
75
106
  [`@microsoft/typespec-msgraph/${mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes.name}`]: true,
76
107
  [`@microsoft/typespec-msgraph/${interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified.name}`]: true,
@@ -82,8 +113,8 @@ export const $linter = defineLinter({
82
113
  [`@microsoft/typespec-msgraph/${validateCoreElementsHaveDocString.name}`]: true,
83
114
  [`@microsoft/typespec-msgraph/${operationParametersShouldHaveRequiredBeforeOptional.name}`]: true,
84
115
  [`@microsoft/typespec-msgraph/${allowedValuesCsdlCompatibility.name}`]: true,
85
- }
86
- }
87
- }
116
+ },
117
+ },
118
+ },
88
119
  });
89
120
  //# sourceMappingURL=linter.js.map
@@ -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,3 @@
1
+ import { Program } from "@typespec/compiler";
2
+ export declare function validateAutoExpandOnlyAppliesToNavigationProperties(program: Program): void;
3
+ //# sourceMappingURL=auto-expand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-expand.d.ts","sourceRoot":"","sources":["../../../src/rules/auto-expand.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,OAAO,EAGR,MAAM,oBAAoB,CAAC;AAwG5B,wBAAgB,mDAAmD,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+B1F"}
@@ -0,0 +1,100 @@
1
+ import { navigateTypesInNamespace, walkPropertiesInherited, } from "@typespec/compiler";
2
+ import { isAutoExpand, isAutoExpandReferences, isComplex } from "../index.js";
3
+ import { getDeclaredNamespacesForLinting } from "../entities/namespace.js";
4
+ import { reportDiagnostic } from "../lib.js";
5
+ import { getTypeModel, isNavigationProperty } from "../utils.js";
6
+ function validateNavigationPropertyDecorator(program, property, decorator) {
7
+ if (isNavigationProperty(program, property)) {
8
+ return true;
9
+ }
10
+ reportDiagnostic(program, {
11
+ code: "decorator-invalid-use",
12
+ target: property,
13
+ messageId: "wrongType",
14
+ format: {
15
+ decorator,
16
+ target: "navigation property",
17
+ },
18
+ });
19
+ return false;
20
+ }
21
+ function isAutomaticallyExpanded(program, property) {
22
+ return isAutoExpand(program, property) || isAutoExpandReferences(program, property);
23
+ }
24
+ function isSameOrDerivedModel(current, target) {
25
+ for (let model = current; model; model = model.baseModel) {
26
+ if (model === target) {
27
+ return true;
28
+ }
29
+ }
30
+ return false;
31
+ }
32
+ function getExpansionTarget(program, property) {
33
+ const target = getTypeModel(program, property.type);
34
+ if (!target) {
35
+ return undefined;
36
+ }
37
+ if (isNavigationProperty(program, property)) {
38
+ return isAutomaticallyExpanded(program, property) ? target : undefined;
39
+ }
40
+ return isComplex(program, target) ? target : undefined;
41
+ }
42
+ function hasAutomaticExpansionPath(program, current, target, visited) {
43
+ if (isSameOrDerivedModel(current, target)) {
44
+ return true;
45
+ }
46
+ if (visited.has(current)) {
47
+ return false;
48
+ }
49
+ visited.add(current);
50
+ for (const property of walkPropertiesInherited(current)) {
51
+ const next = getExpansionTarget(program, property);
52
+ if (next && hasAutomaticExpansionPath(program, next, target, visited)) {
53
+ return true;
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ function createsAutomaticExpansionCycle(program, property) {
59
+ const source = property.model;
60
+ const target = getTypeModel(program, property.type);
61
+ return !!source && !!target && hasAutomaticExpansionPath(program, target, source, new Set());
62
+ }
63
+ function reportAutomaticExpansionCycle(program, property, decorator) {
64
+ reportDiagnostic(program, {
65
+ code: "decorator-invalid-use",
66
+ target: property,
67
+ messageId: "autoExpandCycle",
68
+ format: {
69
+ decorator,
70
+ property: property.name,
71
+ },
72
+ });
73
+ }
74
+ export function validateAutoExpandOnlyAppliesToNavigationProperties(program) {
75
+ for (const namespace of getDeclaredNamespacesForLinting(program)) {
76
+ navigateTypesInNamespace(namespace, {
77
+ modelProperty: (property) => {
78
+ const hasAutoExpand = isAutoExpand(program, property);
79
+ const hasAutoExpandReferences = isAutoExpandReferences(program, property);
80
+ if (!hasAutoExpand && !hasAutoExpandReferences) {
81
+ return;
82
+ }
83
+ const autoExpandTargetIsValid = !hasAutoExpand || validateNavigationPropertyDecorator(program, property, "@autoExpand");
84
+ const autoExpandReferencesTargetIsValid = !hasAutoExpandReferences ||
85
+ validateNavigationPropertyDecorator(program, property, "@autoExpandReferences");
86
+ const validTarget = autoExpandTargetIsValid && autoExpandReferencesTargetIsValid;
87
+ if (!validTarget || !createsAutomaticExpansionCycle(program, property)) {
88
+ return;
89
+ }
90
+ if (hasAutoExpand) {
91
+ reportAutomaticExpansionCycle(program, property, "@autoExpand");
92
+ }
93
+ if (hasAutoExpandReferences) {
94
+ reportAutomaticExpansionCycle(program, property, "@autoExpandReferences");
95
+ }
96
+ },
97
+ });
98
+ }
99
+ }
100
+ //# sourceMappingURL=auto-expand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-expand.js","sourceRoot":"","sources":["../../../src/rules/auto-expand.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIjE,SAAS,mCAAmC,CAC1C,OAAgB,EAChB,QAAuB,EACvB,SAA8B;IAE9B,IAAI,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,OAAO,EAAE;QACxB,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE;YACN,SAAS;YACT,MAAM,EAAE,qBAAqB;SAC9B;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB,EAAE,QAAuB;IACxE,OAAO,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAc,EAAE,MAAa;IACzD,KAAK,IAAI,KAAK,GAAsB,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5E,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB,EAAE,QAAuB;IACnE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAED,OAAO,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAgB,EAChB,OAAc,EACd,MAAa,EACb,OAAmB;IAEnB,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAErB,KAAK,MAAM,QAAQ,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,IAAI,IAAI,yBAAyB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,8BAA8B,CAAC,OAAgB,EAAE,QAAuB;IAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,6BAA6B,CACpC,OAAgB,EAChB,QAAuB,EACvB,SAA8B;IAE9B,gBAAgB,CAAC,OAAO,EAAE;QACxB,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE;YACN,SAAS;YACT,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mDAAmD,CAAC,OAAgB;IAClF,KAAK,MAAM,SAAS,IAAI,+BAA+B,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,wBAAwB,CAAC,SAAS,EAAE;YAClC,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC1B,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtD,MAAM,uBAAuB,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAE1E,IAAI,CAAC,aAAa,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBAED,MAAM,uBAAuB,GAC3B,CAAC,aAAa,IAAI,mCAAmC,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC1F,MAAM,iCAAiC,GACrC,CAAC,uBAAuB;oBACxB,mCAAmC,CAAC,OAAO,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;gBAClF,MAAM,WAAW,GAAG,uBAAuB,IAAI,iCAAiC,CAAC;gBAEjF,IAAI,CAAC,WAAW,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACvE,OAAO;gBACT,CAAC;gBAED,IAAI,aAAa,EAAE,CAAC;oBAClB,6BAA6B,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,uBAAuB,EAAE,CAAC;oBAC5B,6BAA6B,CAAC,OAAO,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -7,4 +7,7 @@ export declare const collectionOfComplexTypeShouldUseEntityType: import("@typesp
7
7
  export declare const collectionPropertyNameShouldBePlural: import("@typespec/compiler").LinterRuleDefinition<"collection-property-name-should-be-plural", {
8
8
  readonly default: import("@typespec/compiler").CallableMessage<["property"]>;
9
9
  }, Record<string, never>>;
10
+ export declare const numberedPropertiesShouldUseCollection: import("@typespec/compiler").LinterRuleDefinition<"numbered-properties-should-use-collection", {
11
+ readonly default: import("@typespec/compiler").CallableMessage<["properties", "model"]>;
12
+ }, Record<string, never>>;
10
13
  //# sourceMappingURL=collections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../src/rules/collections.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qCAAqC;;yBA8BhD,CAAC;AAEH,eAAO,MAAM,0CAA0C;;yBAuCrD,CAAC;AAEH,eAAO,MAAM,oCAAoC;;yBA6B/C,CAAC"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../src/rules/collections.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,qCAAqC;;yBA8BhD,CAAC;AAEH,eAAO,MAAM,0CAA0C;;yBAwCrD,CAAC;AAEH,eAAO,MAAM,oCAAoC;;yBA4B/C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;yBA6ChD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { createRule, paramMessage } from "@typespec/compiler";
2
- import { isPlural, isTypeCollection, isTypeNullable } from "../utils.js";
2
+ import { getPropertyTypeName, isExcludedFromGraphStudioRules, isPlural, isTypeCollection, isTypeNullable, } from "../utils.js";
3
3
  import { isComplex } from "../decorators/complex.js";
4
4
  import { getActualType } from "../utils.js";
5
5
  export const collectionPropertyShouldNotBeNullable = createRule({
@@ -25,11 +25,11 @@ export const collectionPropertyShouldNotBeNullable = createRule({
25
25
  messageId: "default",
26
26
  format: {
27
27
  property: property.name,
28
- }
28
+ },
29
29
  });
30
- }
30
+ },
31
31
  };
32
- }
32
+ },
33
33
  });
34
34
  export const collectionOfComplexTypeShouldUseEntityType = createRule({
35
35
  name: "collection-of-complex-type-should-use-entity-type",
@@ -63,9 +63,9 @@ export const collectionOfComplexTypeShouldUseEntityType = createRule({
63
63
  property: property.name,
64
64
  },
65
65
  });
66
- }
66
+ },
67
67
  };
68
- }
68
+ },
69
69
  });
70
70
  export const collectionPropertyNameShouldBePlural = createRule({
71
71
  name: "collection-property-name-should-be-plural",
@@ -90,8 +90,53 @@ export const collectionPropertyNameShouldBePlural = createRule({
90
90
  property: property.name,
91
91
  },
92
92
  });
93
- }
93
+ },
94
94
  };
95
- }
95
+ },
96
+ });
97
+ export const numberedPropertiesShouldUseCollection = createRule({
98
+ name: "numbered-properties-should-use-collection",
99
+ severity: "warning",
100
+ description: "Sequentially numbered properties should be modeled as a collection.",
101
+ messages: {
102
+ default: paramMessage `Properties '${"properties"}' on model '${"model"}' should be modeled as a collection.`,
103
+ },
104
+ create(context) {
105
+ return {
106
+ model(model) {
107
+ var _a;
108
+ if (isExcludedFromGraphStudioRules(context.program, model)) {
109
+ return;
110
+ }
111
+ const groups = new Map();
112
+ for (const property of model.properties.values()) {
113
+ const match = /^(.*?)(\d+)$/.exec(property.name);
114
+ if (!match || Number(match[2]) < 1) {
115
+ continue;
116
+ }
117
+ const groupKey = `${match[1]}\0${getPropertyTypeName(context.program, property.type)}`;
118
+ const group = (_a = groups.get(groupKey)) !== null && _a !== void 0 ? _a : [];
119
+ group.push({ index: Number(match[2]), property });
120
+ groups.set(groupKey, group);
121
+ }
122
+ for (const group of groups.values()) {
123
+ group.sort((left, right) => left.index - right.index);
124
+ if (group.length < 2 ||
125
+ group[0].index !== 1 ||
126
+ group.some((entry, index) => index > 0 && entry.index !== group[index - 1].index + 1)) {
127
+ continue;
128
+ }
129
+ const properties = group.map(({ property }) => property);
130
+ context.reportDiagnostic({
131
+ target: properties[0],
132
+ format: {
133
+ properties: properties.map((property) => property.name).join(", "),
134
+ model: model.name,
135
+ },
136
+ });
137
+ }
138
+ },
139
+ };
140
+ },
96
141
  });
97
142
  //# sourceMappingURL=collections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../src/rules/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../src/rules/collections.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
1
  import { Program } from "@typespec/compiler";
2
2
  export declare function validateComplexTypesAreNotAddressableThroughUniqueUrls(program: Program): void;
3
+ export declare const avoidIdPropertyOnComplexType: import("@typespec/compiler").LinterRuleDefinition<"avoid-id-property-on-complex-type", {
4
+ readonly default: import("@typespec/compiler").CallableMessage<["model"]>;
5
+ }, Record<string, never>>;
3
6
  //# sourceMappingURL=complex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complex.d.ts","sourceRoot":"","sources":["../../../src/rules/complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA4B,MAAM,oBAAoB,CAAC;AAMvE,wBAAgB,sDAAsD,CAAC,OAAO,EAAE,OAAO,QAoBtF"}
1
+ {"version":3,"file":"complex.d.ts","sourceRoot":"","sources":["../../../src/rules/complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAMjG,wBAAgB,sDAAsD,CAAC,OAAO,EAAE,OAAO,QAoBtF;AAED,eAAO,MAAM,4BAA4B;;yBAyBvC,CAAC"}
@@ -1,7 +1,7 @@
1
- import { navigateTypesInNamespace } from "@typespec/compiler";
1
+ import { createRule, navigateTypesInNamespace, paramMessage } from "@typespec/compiler";
2
+ import { isComplex } from "../decorators/complex.js";
2
3
  import { getDeclaredNamespacesForLinting } from "../entities/namespace.js";
3
- import { getInterfaceNavigationSourceType } from "../utils.js";
4
- import { isComplex } from "../index.js";
4
+ import { getInterfaceNavigationSourceType, isExcludedFromGraphStudioRules } from "../utils.js";
5
5
  import { reportDiagnostic } from "../lib.js";
6
6
  export function validateComplexTypesAreNotAddressableThroughUniqueUrls(program) {
7
7
  for (const namespace of getDeclaredNamespacesForLinting(program)) {
@@ -20,8 +20,32 @@ export function validateComplexTypesAreNotAddressableThroughUniqueUrls(program)
20
20
  });
21
21
  }
22
22
  }
23
- }
23
+ },
24
24
  });
25
25
  }
26
26
  }
27
+ export const avoidIdPropertyOnComplexType = createRule({
28
+ name: "avoid-id-property-on-complex-type",
29
+ severity: "warning",
30
+ description: "Complex types should not define an id property.",
31
+ messages: {
32
+ default: paramMessage `Complex type '${"model"}' should not define an 'id' property.`,
33
+ },
34
+ create(context) {
35
+ return {
36
+ modelProperty(property) {
37
+ if (isExcludedFromGraphStudioRules(context.program, property) ||
38
+ !property.model ||
39
+ !isComplex(context.program, property.model) ||
40
+ property.name.toLowerCase() !== "id") {
41
+ return;
42
+ }
43
+ context.reportDiagnostic({
44
+ target: property,
45
+ format: { model: property.model.name },
46
+ });
47
+ },
48
+ };
49
+ },
50
+ });
27
51
  //# sourceMappingURL=complex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"complex.js","sourceRoot":"","sources":["../../../src/rules/complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,UAAU,sDAAsD,CAAC,OAAgB;IACrF,KAAI,MAAM,SAAS,IAAI,+BAA+B,CAAC,OAAO,CAAC,EAAC,CAAC;QAC/D,wBAAwB,CAAC,SAAS,EAAE;YAClC,SAAS,EAAE,CAAC,YAAY,EAAE,EAAE;gBAC1B,MAAM,oBAAoB,GAAG,gCAAgC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBACrF,IAAG,oBAAoB,EAAC,CAAC;oBACvB,IAAG,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAAC,CAAC;wBAC3C,gBAAgB,CAAC,OAAO,EAAE;4BACxB,IAAI,EAAE,uBAAuB;4BAC7B,MAAM,EAAE,YAAY;4BACpB,SAAS,EAAE,gDAAgD;4BAC3D,MAAM,EAAE;gCACN,WAAW,EAAE,oBAAoB,CAAC,IAAI;6BACvC;yBACF,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"complex.js","sourceRoot":"","sources":["../../../src/rules/complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,YAAY,EAAW,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,UAAU,sDAAsD,CAAC,OAAgB;IACrF,KAAK,MAAM,SAAS,IAAI,+BAA+B,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,wBAAwB,CAAC,SAAS,EAAE;YAClC,SAAS,EAAE,CAAC,YAAY,EAAE,EAAE;gBAC1B,MAAM,oBAAoB,GAAG,gCAAgC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBACrF,IAAI,oBAAoB,EAAE,CAAC;oBACzB,IAAI,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAAE,CAAC;wBAC7C,gBAAgB,CAAC,OAAO,EAAE;4BACxB,IAAI,EAAE,uBAAuB;4BAC7B,MAAM,EAAE,YAAY;4BACpB,SAAS,EAAE,gDAAgD;4BAC3D,MAAM,EAAE;gCACN,WAAW,EAAE,oBAAoB,CAAC,IAAI;6BACvC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC;IACrD,IAAI,EAAE,mCAAmC;IACzC,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,iDAAiD;IAC9D,QAAQ,EAAE;QACR,OAAO,EAAE,YAAY,CAAA,iBAAiB,OAAO,uCAAuC;KACrF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,aAAa,CAAC,QAAQ;gBACpB,IACE,8BAA8B,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACzD,CAAC,QAAQ,CAAC,KAAK;oBACf,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EACpC,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,gBAAgB,CAAC;oBACvB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;iBACvC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -13,4 +13,10 @@ export declare const referenceIdPropertyShouldBeNavigationProperty: import("@typ
13
13
  export declare const entityNamesShouldBeSingular: import("@typespec/compiler").LinterRuleDefinition<"entity-names-should-be-singular", {
14
14
  readonly default: import("@typespec/compiler").CallableMessage<["entityName"]>;
15
15
  }, Record<string, never>>;
16
+ export declare const entityKeyMustBeString: import("@typespec/compiler").LinterRuleDefinition<"entity-key-must-be-string", {
17
+ readonly default: import("@typespec/compiler").CallableMessage<["property", "entity"]>;
18
+ }, Record<string, never>>;
19
+ export declare const primaryKeyMustNotBeComposite: import("@typespec/compiler").LinterRuleDefinition<"primary-key-must-not-be-composite", {
20
+ readonly default: import("@typespec/compiler").CallableMessage<["entity"]>;
21
+ }, Record<string, never>>;
16
22
  //# sourceMappingURL=entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/rules/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAWR,MAAM,oBAAoB,CAAC;AAqB5B,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,QAkEzD;AAED,wBAAgB,mDAAmD,CAAC,OAAO,EAAE,OAAO,QA2CnF;AAGD,wBAAgB,8CAA8C,CAAC,OAAO,EAAE,OAAO,QAiC9E;AAED,wBAAgB,4DAA4D,CAAC,OAAO,EAAE,OAAO,QA6B5F;AAED,wBAAgB,4CAA4C,CAAC,OAAO,EAAE,OAAO,QAkB5E;AAED,eAAO,MAAM,2CAA2C;;yBA2BtD,CAAC;AAEH,eAAO,MAAM,6CAA6C;;yBA6CxD,CAAC;AAEH,eAAO,MAAM,2BAA2B;;yBA2BtC,CAAC"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/rules/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAWR,MAAM,oBAAoB,CAAC;AAuB5B,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,QAkEzD;AAED,wBAAgB,mDAAmD,CAAC,OAAO,EAAE,OAAO,QA2CnF;AAGD,wBAAgB,8CAA8C,CAAC,OAAO,EAAE,OAAO,QAiC9E;AAED,wBAAgB,4DAA4D,CAAC,OAAO,EAAE,OAAO,QA6B5F;AAED,wBAAgB,4CAA4C,CAAC,OAAO,EAAE,OAAO,QAkB5E;AAED,eAAO,MAAM,2CAA2C;;yBA2BtD,CAAC;AAEH,eAAO,MAAM,6CAA6C;;yBA6CxD,CAAC;AAEH,eAAO,MAAM,2BAA2B;;yBA2BtC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;yBA4BhC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;yBA6BvC,CAAC"}
@@ -5,7 +5,7 @@ import { isPartial } from "../decorators/graph-partial.js";
5
5
  import { isOwnerless } from "../decorators/ownerless.js";
6
6
  import { isSharedEntity } from "../decorators/shared-entity.js";
7
7
  import { reportDiagnostic } from "../lib.js";
8
- import { isTypeNullable, isExcludedLibraryType, isSameNamespace, extractTypesFromUnion, getInterfaceNavigationSourceType, isNavigationProperty, isTypeDefinedInExternalLibrary, isTypeDefinedInLocalProject, isParentSharedEntity, isSingular, } from "../utils.js";
8
+ import { isTypeNullable, isExcludedLibraryType, isSameNamespace, extractTypesFromUnion, getInterfaceNavigationSourceType, isNavigationProperty, isTypeDefinedInExternalLibrary, isTypeDefinedInLocalProject, isParentSharedEntity, isSingular, getPropertyTypeName, isExcludedFromGraphStudioRules, } from "../utils.js";
9
9
  import { getDeclaredNamespacesForLinting } from "../entities/namespace.js";
10
10
  export function validateEntityMustHaveKey(program) {
11
11
  for (const namespace of getDeclaredNamespacesForLinting(program)) {
@@ -264,6 +264,59 @@ export const entityNamesShouldBeSingular = createRule({
264
264
  };
265
265
  },
266
266
  });
267
+ export const entityKeyMustBeString = createRule({
268
+ name: "entity-key-must-be-string",
269
+ severity: "warning",
270
+ description: "Entity primary keys should be strings.",
271
+ messages: {
272
+ default: paramMessage `Primary key '${"property"}' on entity '${"entity"}' should be a string.`,
273
+ },
274
+ create(context) {
275
+ return {
276
+ modelProperty(property) {
277
+ if (isExcludedFromGraphStudioRules(context.program, property) ||
278
+ !property.model ||
279
+ !isEntity(context.program, property.model) ||
280
+ !isKey(context.program, property)) {
281
+ return;
282
+ }
283
+ if (getPropertyTypeName(context.program, property.type) === "Edm.String") {
284
+ return;
285
+ }
286
+ context.reportDiagnostic({
287
+ target: property,
288
+ format: { property: property.name, entity: property.model.name },
289
+ });
290
+ },
291
+ };
292
+ },
293
+ });
294
+ export const primaryKeyMustNotBeComposite = createRule({
295
+ name: "primary-key-must-not-be-composite",
296
+ severity: "warning",
297
+ description: "Entity primary keys should contain exactly one property.",
298
+ messages: {
299
+ default: paramMessage `Entity '${"entity"}' has a composite primary key. Use a single string key property.`,
300
+ },
301
+ create(context) {
302
+ return {
303
+ model(model) {
304
+ if (isExcludedFromGraphStudioRules(context.program, model) ||
305
+ !isEntity(context.program, model)) {
306
+ return;
307
+ }
308
+ const keys = [...walkPropertiesInherited(model)].filter((property) => isKey(context.program, property));
309
+ if (keys.length <= 1) {
310
+ return;
311
+ }
312
+ context.reportDiagnostic({
313
+ target: model,
314
+ format: { entity: model.name },
315
+ });
316
+ },
317
+ };
318
+ },
319
+ });
267
320
  function trySplitAtSuffix(value, suffix) {
268
321
  if (value.length <= suffix.length || !value.toLowerCase().endsWith(suffix.toLowerCase())) {
269
322
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/rules/entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/rules/entity.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,7 @@ export declare const nullableBooleanShouldBeEnum: import("@typespec/compiler").L
12
12
  export declare const nullableEnumsShouldAddAdditionalMember: import("@typespec/compiler").LinterRuleDefinition<"nullable-enum-should-add-additional-member", {
13
13
  readonly default: import("@typespec/compiler").CallableMessage<["property"]>;
14
14
  }, Record<string, never>>;
15
+ export declare const graphFlagsValuesMustBeZeroOrPowersOfTwo: import("@typespec/compiler").LinterRuleDefinition<"graph-flags-values-must-be-zero-or-powers-of-two", {
16
+ readonly default: import("@typespec/compiler").CallableMessage<["member", "enum"]>;
17
+ }, Record<string, never>>;
15
18
  //# sourceMappingURL=enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/rules/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAMR,MAAM,oBAAoB,CAAC;AAY5B,eAAO,MAAM,oBAAoB;;yBAmC/B,CAAC;AAEH,wBAAgB,0DAA0D,CAAC,OAAO,EAAE,OAAO,QAwB1F;AAED,eAAO,MAAM,yBAAyB;;yBA+BpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;yBA6BtC,CAAC;AAEH,eAAO,MAAM,sCAAsC;;yBAoCjD,CAAC"}
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/rules/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAMR,MAAM,oBAAoB,CAAC;AAiB5B,eAAO,MAAM,oBAAoB;;yBAmC/B,CAAC;AAEH,wBAAgB,0DAA0D,CAAC,OAAO,EAAE,OAAO,QAwB1F;AAED,eAAO,MAAM,yBAAyB;;yBA+BpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;yBA6BtC,CAAC;AAEH,eAAO,MAAM,sCAAsC;;yBA8BjD,CAAC;AAEH,eAAO,MAAM,uCAAuC;;yBAiClD,CAAC"}