@microsoft/typespec-msgraph 1.0.3 → 1.1.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.
- package/dist/src/components/annotations.d.ts.map +1 -1
- package/dist/src/components/annotations.js +2 -0
- package/dist/src/components/annotations.js.map +1 -1
- package/dist/src/components/property-element.js +1 -1
- package/dist/src/components/property-element.js.map +1 -1
- package/dist/src/components/schema-element.js +1 -1
- package/dist/src/components/schema-element.js.map +1 -1
- package/dist/src/components/skip-token-supported-annotation.d.ts +5 -0
- package/dist/src/components/skip-token-supported-annotation.d.ts.map +1 -0
- package/dist/src/components/skip-token-supported-annotation.js +6 -0
- package/dist/src/components/skip-token-supported-annotation.js.map +1 -0
- package/dist/src/decorators/facet.d.ts +10 -0
- package/dist/src/decorators/facet.d.ts.map +1 -0
- package/dist/src/decorators/facet.js +14 -0
- package/dist/src/decorators/facet.js.map +1 -0
- package/dist/src/decorators/flat-bag.d.ts +22 -0
- package/dist/src/decorators/flat-bag.d.ts.map +1 -0
- package/dist/src/decorators/flat-bag.js +71 -0
- package/dist/src/decorators/flat-bag.js.map +1 -0
- package/dist/src/decorators/index.d.ts +5 -0
- package/dist/src/decorators/index.d.ts.map +1 -1
- package/dist/src/decorators/index.js +5 -0
- package/dist/src/decorators/index.js.map +1 -1
- package/dist/src/decorators/namespace-alias.d.ts +58 -0
- package/dist/src/decorators/namespace-alias.d.ts.map +1 -0
- package/dist/src/decorators/namespace-alias.js +82 -0
- package/dist/src/decorators/namespace-alias.js.map +1 -0
- package/dist/src/decorators/skip-token.d.ts +11 -0
- package/dist/src/decorators/skip-token.d.ts.map +1 -0
- package/dist/src/decorators/skip-token.js +15 -0
- package/dist/src/decorators/skip-token.js.map +1 -0
- package/dist/src/decorators/variant.d.ts +12 -0
- package/dist/src/decorators/variant.d.ts.map +1 -0
- package/dist/src/decorators/variant.js +18 -0
- package/dist/src/decorators/variant.js.map +1 -0
- package/dist/src/entities/annotations.d.ts +1 -0
- package/dist/src/entities/annotations.d.ts.map +1 -1
- package/dist/src/entities/annotations.js +2 -1
- package/dist/src/entities/annotations.js.map +1 -1
- package/dist/src/entities/entity-container.d.ts +3 -3
- package/dist/src/entities/entity-container.d.ts.map +1 -1
- package/dist/src/entities/entity-container.js +8 -8
- package/dist/src/entities/entity-container.js.map +1 -1
- package/dist/src/entities/model.d.ts +2 -2
- package/dist/src/entities/model.d.ts.map +1 -1
- package/dist/src/entities/model.js +17 -15
- package/dist/src/entities/model.js.map +1 -1
- package/dist/src/entities/namespace.d.ts +1 -0
- package/dist/src/entities/namespace.d.ts.map +1 -1
- package/dist/src/entities/namespace.js +6 -3
- package/dist/src/entities/namespace.js.map +1 -1
- package/dist/src/lib.d.ts +12 -0
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +6 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/linter.d.ts.map +1 -1
- package/dist/src/linter.js +7 -2
- package/dist/src/linter.js.map +1 -1
- package/dist/src/rules/enum.d.ts.map +1 -1
- package/dist/src/rules/enum.js +8 -0
- package/dist/src/rules/enum.js.map +1 -1
- package/dist/src/rules/facet.d.ts +6 -0
- package/dist/src/rules/facet.d.ts.map +1 -0
- package/dist/src/rules/facet.js +45 -0
- package/dist/src/rules/facet.js.map +1 -0
- package/dist/src/rules/flat-bag.d.ts +51 -0
- package/dist/src/rules/flat-bag.d.ts.map +1 -0
- package/dist/src/rules/flat-bag.js +334 -0
- package/dist/src/rules/flat-bag.js.map +1 -0
- package/dist/src/rules/index.d.ts +3 -0
- package/dist/src/rules/index.d.ts.map +1 -1
- package/dist/src/rules/index.js +3 -0
- package/dist/src/rules/index.js.map +1 -1
- package/dist/src/rules/namespace.d.ts +20 -0
- package/dist/src/rules/namespace.d.ts.map +1 -1
- package/dist/src/rules/namespace.js +43 -1
- package/dist/src/rules/namespace.js.map +1 -1
- package/dist/src/rules/properties.d.ts.map +1 -1
- package/dist/src/rules/properties.js +14 -5
- package/dist/src/rules/properties.js.map +1 -1
- package/dist/src/rules/skip-token.d.ts +6 -0
- package/dist/src/rules/skip-token.d.ts.map +1 -0
- package/dist/src/rules/skip-token.js +37 -0
- package/dist/src/rules/skip-token.js.map +1 -0
- package/dist/src/supressions/csdl-suppression-rules.d.ts.map +1 -1
- package/dist/src/supressions/csdl-suppression-rules.js +1 -0
- package/dist/src/supressions/csdl-suppression-rules.js.map +1 -1
- package/dist/src/utils.d.ts +19 -3
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +108 -10
- package/dist/src/utils.js.map +1 -1
- package/dist/src/validate.d.ts.map +1 -1
- package/dist/src/validate.js +7 -0
- package/dist/src/validate.js.map +1 -1
- package/lib/decorators.tsp +59 -0
- package/package.json +1 -1
package/dist/src/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"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"}
|
package/dist/src/linter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAmCpE,eAAO,MAAM,OAAO,EAAE,gBAwEpB,CAAC"}
|
package/dist/src/linter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineLinter } from "@typespec/compiler";
|
|
2
|
-
import { useEvolvableEnumRule, collectionPropertyShouldNotBeNullable, collectionShouldNotBeEnum, collectionOfComplexTypeShouldUseEntityType, collectionPropertyNameShouldBePlural, mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes, interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified, getPutPostAndPatchOperationsShouldHaveSelectDecorator, useRecordTypeInsteadOfDictionary, dictionaryTypeIsMostlyUsedWithRecordType, containedNavigationPropertyTypeShouldNotBeExternallyReferenced, entityAndComplexPropertyNameShouldNotBeName, entityNamesShouldBeSingular, validateCoreElementsHaveDocString, operationParametersShouldHaveRequiredBeforeOptional, containedEntityShouldNotHaveEntitySet, referenceIdPropertyShouldBeNavigationProperty, useProperDefaultRecord, shouldNotUseUnnecessaryInheritance, namesMustBeCamelCase, namespacesMustBeCamelCase, nullableBooleanShouldBeEnum, nullableEnumsShouldAddAdditionalMember, allowedValuesCsdlCompatibility, useCreatedInPropertyNames, useModifiedInPropertyNames, propertyNameShouldNotStartWithNavigationSourceName, propertyMustNotBeNamedType } from "./rules/index.js";
|
|
2
|
+
import { useEvolvableEnumRule, collectionPropertyShouldNotBeNullable, collectionShouldNotBeEnum, collectionOfComplexTypeShouldUseEntityType, collectionPropertyNameShouldBePlural, mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes, interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified, getPutPostAndPatchOperationsShouldHaveSelectDecorator, useRecordTypeInsteadOfDictionary, dictionaryTypeIsMostlyUsedWithRecordType, containedNavigationPropertyTypeShouldNotBeExternallyReferenced, entityAndComplexPropertyNameShouldNotBeName, entityNamesShouldBeSingular, validateCoreElementsHaveDocString, operationParametersShouldHaveRequiredBeforeOptional, containedEntityShouldNotHaveEntitySet, referenceIdPropertyShouldBeNavigationProperty, useProperDefaultRecord, shouldNotUseUnnecessaryInheritance, namesMustBeCamelCase, namespacesMustBeCamelCase, nullableBooleanShouldBeEnum, nullableEnumsShouldAddAdditionalMember, allowedValuesCsdlCompatibility, useCreatedInPropertyNames, useModifiedInPropertyNames, propertyNameShouldNotStartWithNavigationSourceName, propertyMustNotBeNamedType, namespaceAliasConventionSuppressed, flatBagSiblingsShouldBeNullable, flatBagEnumShouldBeClosed } from "./rules/index.js";
|
|
3
3
|
export const $linter = defineLinter({
|
|
4
4
|
rules: [
|
|
5
5
|
useEvolvableEnumRule,
|
|
@@ -29,7 +29,10 @@ export const $linter = defineLinter({
|
|
|
29
29
|
allowedValuesCsdlCompatibility,
|
|
30
30
|
useCreatedInPropertyNames,
|
|
31
31
|
useModifiedInPropertyNames,
|
|
32
|
-
propertyMustNotBeNamedType
|
|
32
|
+
propertyMustNotBeNamedType,
|
|
33
|
+
namespaceAliasConventionSuppressed,
|
|
34
|
+
flatBagSiblingsShouldBeNullable,
|
|
35
|
+
flatBagEnumShouldBeClosed
|
|
33
36
|
],
|
|
34
37
|
ruleSets: {
|
|
35
38
|
recommended: {
|
|
@@ -53,6 +56,8 @@ export const $linter = defineLinter({
|
|
|
53
56
|
[`@microsoft/typespec-msgraph/${useModifiedInPropertyNames.name}`]: true,
|
|
54
57
|
[`@microsoft/typespec-msgraph/${useProperDefaultRecord.name}`]: true,
|
|
55
58
|
[`@microsoft/typespec-msgraph/${propertyMustNotBeNamedType.name}`]: true,
|
|
59
|
+
[`@microsoft/typespec-msgraph/${namespaceAliasConventionSuppressed.name}`]: true,
|
|
60
|
+
[`@microsoft/typespec-msgraph/${flatBagEnumShouldBeClosed.name}`]: true,
|
|
56
61
|
// library recommended rules
|
|
57
62
|
[`@microsoft/typespec-msgraph/${mediaTypeValuesShouldBeMinimallyFormattedForMIMETypes.name}`]: true,
|
|
58
63
|
[`@microsoft/typespec-msgraph/${interfaceNavigationSourceShouldHaveMediaIf$ValueIsSpecified.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,EAAoB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,qCAAqC,EACrC,yBAAyB,EACzB,0CAA0C,EAC1C,oCAAoC,EACpC,qDAAqD,EACrD,2DAA2D,EAC3D,qDAAqD,EACrD,gCAAgC,EAChC,wCAAwC,EACxC,8DAA8D,EAC9D,2CAA2C,EAC3C,2BAA2B,EAC3B,iCAAiC,EAChC,mDAAmD,EACpD,qCAAqC,EACrC,6CAA6C,EAC7C,sBAAsB,EACtB,kCAAkC,EAClC,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,sCAAsC,EACtC,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,kDAAkD,EAClD,0BAA0B,
|
|
1
|
+
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;;EAmC/B,CAAC;AAEH,wBAAgB,0DAA0D,CAAC,OAAO,EAAE,OAAO,QAwB1F;AAED,eAAO,MAAM,yBAAyB;;EA+BpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;EA6BtC,CAAC;AAEH,eAAO,MAAM,sCAAsC;;EA6BjD,CAAC"}
|
package/dist/src/rules/enum.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createRule, getDoc, navigateTypesInNamespace, paramMessage, } from "@ty
|
|
|
2
2
|
import { getActualType, isExcludedCoreType, isTypeCollection, isTypeNullable, } from "../utils.js";
|
|
3
3
|
import { getDeclaredNamespacesForLinting } from "../entities/namespace.js";
|
|
4
4
|
import { reportDiagnostic } from "../lib.js";
|
|
5
|
+
import { isFlatBagDiscriminatorEnum } from "../decorators/flat-bag.js";
|
|
5
6
|
export const useEvolvableEnumRule = createRule({
|
|
6
7
|
name: "use-evolvable-enum",
|
|
7
8
|
severity: "warning",
|
|
@@ -18,6 +19,13 @@ export const useEvolvableEnumRule = createRule({
|
|
|
18
19
|
if (enumType.members.has("unknownFutureValue")) {
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
22
|
+
// Discriminator enums on @flatBag models are intentionally closed-set; exempt them.
|
|
23
|
+
// $flatBag tags the discriminator enum at decorator-evaluation time so this is a
|
|
24
|
+
// direct lookup — no per-rule traversal of the namespace tree. The
|
|
25
|
+
// flat-bag-enum-should-be-closed rule enforces the opposite polarity instead.
|
|
26
|
+
if (isFlatBagDiscriminatorEnum(context.program, enumType)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
21
29
|
context.reportDiagnostic({
|
|
22
30
|
target: enumType,
|
|
23
31
|
format: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../src/rules/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACV,MAAM,EACN,wBAAwB,EACxB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../src/rules/enum.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Program } from "@typespec/compiler";
|
|
2
|
+
/**
|
|
3
|
+
* @facet applies only to nullable complex-valued properties declared on entities.
|
|
4
|
+
*/
|
|
5
|
+
export declare function validateFacetOnlyAppliesToNullableComplexProperties(program: Program): void;
|
|
6
|
+
//# sourceMappingURL=facet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facet.d.ts","sourceRoot":"","sources":["../../../src/rules/facet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAA4B,MAAM,oBAAoB,CAAC;AAQtF;;GAEG;AACH,wBAAgB,mDAAmD,CAAC,OAAO,EAAE,OAAO,QAsCnF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { navigateTypesInNamespace } from "@typespec/compiler";
|
|
2
|
+
import { getDeclaredNamespacesForLinting } from "../entities/namespace.js";
|
|
3
|
+
import { isComplex } from "../decorators/complex.js";
|
|
4
|
+
import { isEntity } from "../decorators/entity.js";
|
|
5
|
+
import { isFacet } from "../decorators/facet.js";
|
|
6
|
+
import { reportDiagnostic } from "../lib.js";
|
|
7
|
+
import { extractTypesFromUnion, getActualType, isNullType, isTypeNullable } from "../utils.js";
|
|
8
|
+
/**
|
|
9
|
+
* @facet applies only to nullable complex-valued properties declared on entities.
|
|
10
|
+
*/
|
|
11
|
+
export function validateFacetOnlyAppliesToNullableComplexProperties(program) {
|
|
12
|
+
for (const namespace of getDeclaredNamespacesForLinting(program)) {
|
|
13
|
+
navigateTypesInNamespace(namespace, {
|
|
14
|
+
modelProperty: (property) => {
|
|
15
|
+
if (!isFacet(program, property)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const owner = property.model;
|
|
19
|
+
const hasSingleResolvableNonNullType = property.type.kind !== "Union" ||
|
|
20
|
+
extractTypesFromUnion(property.type).filter((t) => !isNullType(t)).length === 1;
|
|
21
|
+
const actualType = hasSingleResolvableNonNullType
|
|
22
|
+
? getActualType(program, property.type, true)
|
|
23
|
+
: undefined;
|
|
24
|
+
const isNullableComplexProperty = !!owner &&
|
|
25
|
+
isEntity(program, owner) &&
|
|
26
|
+
isTypeNullable(program, property.type) &&
|
|
27
|
+
(actualType === null || actualType === void 0 ? void 0 : actualType.kind) === "Model" &&
|
|
28
|
+
isComplex(program, actualType);
|
|
29
|
+
if (isNullableComplexProperty) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
reportDiagnostic(program, {
|
|
33
|
+
code: "decorator-invalid-use",
|
|
34
|
+
target: property,
|
|
35
|
+
messageId: "wrongType",
|
|
36
|
+
format: {
|
|
37
|
+
decorator: "@facet",
|
|
38
|
+
target: "nullable complex-valued property declared on an @entity model",
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=facet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facet.js","sourceRoot":"","sources":["../../../src/rules/facet.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/F;;GAEG;AACH,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,QAAuB,EAAE,EAAE;gBACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC7B,MAAM,8BAA8B,GAClC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;oBAC9B,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;gBAClF,MAAM,UAAU,GAAG,8BAA8B;oBAC/C,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC7C,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,yBAAyB,GAC7B,CAAC,CAAC,KAAK;oBACP,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;oBACxB,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;oBACtC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,MAAK,OAAO;oBAC5B,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAEjC,IAAI,yBAAyB,EAAE,CAAC;oBAC9B,OAAO;gBACT,CAAC;gBAED,gBAAgB,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,uBAAuB;oBAC7B,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,WAAW;oBACtB,MAAM,EAAE;wBACN,SAAS,EAAE,QAAQ;wBACnB,MAAM,EAAE,+DAA+D;qBACxE;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Program } from "@typespec/compiler";
|
|
2
|
+
/**
|
|
3
|
+
* @flatBag("X") on a model must name a property X that actually exists on the model.
|
|
4
|
+
*/
|
|
5
|
+
export declare function validateFlatBagDiscriminatorMustExist(program: Program): void;
|
|
6
|
+
/**
|
|
7
|
+
* The @flatBag discriminator property must be typed as a named enum (optionally nullable).
|
|
8
|
+
* String / number / boolean discriminators defeat the pattern's structural validation,
|
|
9
|
+
* since variant-name resolution depends on having an enum member set to match against.
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateFlatBagDiscriminatorMustBeEnum(program: Program): void;
|
|
12
|
+
/**
|
|
13
|
+
* @variant() with zero arguments is meaningless: absence of @variant already means
|
|
14
|
+
* "meaningful for every variant", and presence with values means "meaningful only for
|
|
15
|
+
* these values". An empty `@variant()` is neither — flag it as a coding error.
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateVariantValuesMustNotBeEmpty(program: Program): void;
|
|
18
|
+
/**
|
|
19
|
+
* @variant only makes sense on a property whose parent model is @flatBag and that is NOT
|
|
20
|
+
* the discriminator itself. @variant scopes a sibling property to specific discriminator
|
|
21
|
+
* values; applying it to the discriminator is meaningless (the discriminator IS the
|
|
22
|
+
* variant signal, not a variant-conditional property).
|
|
23
|
+
*/
|
|
24
|
+
export declare function validateVariantTargetMustBeFlatBagSibling(program: Program): void;
|
|
25
|
+
/**
|
|
26
|
+
* Each value passed to @variant("a", "b") must name an actual member of the discriminator
|
|
27
|
+
* enum on the parent flat-bag model. Catches typos and stale variant names after enum
|
|
28
|
+
* members are renamed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateVariantValuesMustBeEnumMembers(program: Program): void;
|
|
31
|
+
/**
|
|
32
|
+
* Lint rule: sibling properties on a @flatBag model should be nullable so payloads can
|
|
33
|
+
* omit them when their variant is not selected. The discriminator itself, and properties
|
|
34
|
+
* meaningful for every variant (no @variant), are exempt.
|
|
35
|
+
*
|
|
36
|
+
* Phase 3 default: off in the recommended ruleset until we have telemetry on false-positive
|
|
37
|
+
* rate — Phase 1 found many real flat-bags with deliberately non-null primitive siblings
|
|
38
|
+
* (e.g. recurrencePattern.interval).
|
|
39
|
+
*/
|
|
40
|
+
export declare const flatBagSiblingsShouldBeNullable: import("@typespec/compiler").LinterRuleDefinition<"flat-bag-siblings-should-be-nullable", {
|
|
41
|
+
readonly default: import("@typespec/compiler").CallableMessage<["property", "model", "variants"]>;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Lint rule: the discriminator enum on a @flatBag model should be closed-set (no
|
|
45
|
+
* `unknownFutureValue` member). Flat-bag semantics depend on a known fixed variant set;
|
|
46
|
+
* an `unknownFutureValue` makes the variant→property mapping unverifiable for that value.
|
|
47
|
+
*/
|
|
48
|
+
export declare const flatBagEnumShouldBeClosed: import("@typespec/compiler").LinterRuleDefinition<"flat-bag-enum-should-be-closed", {
|
|
49
|
+
readonly default: import("@typespec/compiler").CallableMessage<["enum", "model"]>;
|
|
50
|
+
}>;
|
|
51
|
+
//# sourceMappingURL=flat-bag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flat-bag.d.ts","sourceRoot":"","sources":["../../../src/rules/flat-bag.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,OAAO,EAKR,MAAM,oBAAoB,CAAC;AAuC5B;;GAEG;AACH,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,OAAO,QA6BrE;AAED;;;;GAIG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,QAkCtE;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,OAAO,QAqBnE;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,OAAO,EAAE,OAAO,QAiCzE;AAED;;;;GAIG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,QAgDtE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B;;EA+C1C,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;EAyCpC,CAAC"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { createRule, navigateTypesInNamespace, paramMessage, } from "@typespec/compiler";
|
|
2
|
+
import { getDeclaredNamespacesForLinting } from "../entities/namespace.js";
|
|
3
|
+
import { getFlatBagDiscriminator, isFlatBag } from "../decorators/flat-bag.js";
|
|
4
|
+
import { getVariants, hasVariant } from "../decorators/variant.js";
|
|
5
|
+
import { extractTypesFromUnion, isNullType } from "../utils.js";
|
|
6
|
+
import { reportDiagnostic } from "../lib.js";
|
|
7
|
+
/**
|
|
8
|
+
* Resolve a model property's type to a named enum, unwrapping a single nullable union
|
|
9
|
+
* (`T | null`). Returns undefined when the property type is not an enum or a nullable enum.
|
|
10
|
+
*/
|
|
11
|
+
function resolveEnumType(type) {
|
|
12
|
+
if (type.kind === "Enum") {
|
|
13
|
+
return type;
|
|
14
|
+
}
|
|
15
|
+
if (type.kind === "Union") {
|
|
16
|
+
const nonNull = extractTypesFromUnion(type).filter((t) => !isNullType(t));
|
|
17
|
+
if (nonNull.length === 1 && nonNull[0].kind === "Enum") {
|
|
18
|
+
return nonNull[0];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Best-effort rendering of a property type's name, used only in diagnostic messages.
|
|
25
|
+
*/
|
|
26
|
+
function describeType(type) {
|
|
27
|
+
if (type.kind === "Enum" || type.kind === "Model" || type.kind === "Scalar" || type.kind === "Intrinsic") {
|
|
28
|
+
return type.name;
|
|
29
|
+
}
|
|
30
|
+
if (type.kind === "Union") {
|
|
31
|
+
return extractTypesFromUnion(type)
|
|
32
|
+
.map(describeType)
|
|
33
|
+
.join(" | ");
|
|
34
|
+
}
|
|
35
|
+
return type.kind;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @flatBag("X") on a model must name a property X that actually exists on the model.
|
|
39
|
+
*/
|
|
40
|
+
export function validateFlatBagDiscriminatorMustExist(program) {
|
|
41
|
+
for (const namespace of getDeclaredNamespacesForLinting(program)) {
|
|
42
|
+
navigateTypesInNamespace(namespace, {
|
|
43
|
+
model: (model) => {
|
|
44
|
+
if (!isFlatBag(program, model)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const discriminator = getFlatBagDiscriminator(program, model);
|
|
48
|
+
// Explicit undefined check so an empty-string discriminator (`@flatBag("")`) still
|
|
49
|
+
// flows through to model.properties.has(""), which correctly returns false and
|
|
50
|
+
// produces a proper flatBagDiscriminatorMustExist diagnostic instead of silently
|
|
51
|
+
// bypassing validation.
|
|
52
|
+
if (discriminator === undefined) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (!model.properties.has(discriminator)) {
|
|
56
|
+
reportDiagnostic(program, {
|
|
57
|
+
code: "decorator-invalid-use",
|
|
58
|
+
target: model,
|
|
59
|
+
messageId: "flatBagDiscriminatorMustExist",
|
|
60
|
+
format: {
|
|
61
|
+
model: model.name,
|
|
62
|
+
discriminator,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The @flatBag discriminator property must be typed as a named enum (optionally nullable).
|
|
72
|
+
* String / number / boolean discriminators defeat the pattern's structural validation,
|
|
73
|
+
* since variant-name resolution depends on having an enum member set to match against.
|
|
74
|
+
*/
|
|
75
|
+
export function validateFlatBagDiscriminatorMustBeEnum(program) {
|
|
76
|
+
for (const namespace of getDeclaredNamespacesForLinting(program)) {
|
|
77
|
+
navigateTypesInNamespace(namespace, {
|
|
78
|
+
model: (model) => {
|
|
79
|
+
if (!isFlatBag(program, model)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const discriminator = getFlatBagDiscriminator(program, model);
|
|
83
|
+
// Explicit undefined check so an empty-string discriminator (`@flatBag("")`) still
|
|
84
|
+
// flows through to model.properties.has(""), which correctly returns false and
|
|
85
|
+
// produces a proper flatBagDiscriminatorMustExist diagnostic instead of silently
|
|
86
|
+
// bypassing validation.
|
|
87
|
+
if (discriminator === undefined) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const property = model.properties.get(discriminator);
|
|
91
|
+
if (!property) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (resolveEnumType(property.type) === undefined) {
|
|
95
|
+
reportDiagnostic(program, {
|
|
96
|
+
code: "decorator-invalid-use",
|
|
97
|
+
target: property,
|
|
98
|
+
messageId: "flatBagDiscriminatorMustBeEnum",
|
|
99
|
+
format: {
|
|
100
|
+
model: model.name,
|
|
101
|
+
discriminator,
|
|
102
|
+
actualType: describeType(property.type),
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @variant() with zero arguments is meaningless: absence of @variant already means
|
|
112
|
+
* "meaningful for every variant", and presence with values means "meaningful only for
|
|
113
|
+
* these values". An empty `@variant()` is neither — flag it as a coding error.
|
|
114
|
+
*/
|
|
115
|
+
export function validateVariantValuesMustNotBeEmpty(program) {
|
|
116
|
+
for (const namespace of getDeclaredNamespacesForLinting(program)) {
|
|
117
|
+
navigateTypesInNamespace(namespace, {
|
|
118
|
+
modelProperty: (property) => {
|
|
119
|
+
if (!hasVariant(program, property)) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const variants = getVariants(program, property);
|
|
123
|
+
if (variants && variants.length === 0) {
|
|
124
|
+
reportDiagnostic(program, {
|
|
125
|
+
code: "decorator-invalid-use",
|
|
126
|
+
target: property,
|
|
127
|
+
messageId: "variantValuesMustNotBeEmpty",
|
|
128
|
+
format: {
|
|
129
|
+
property: property.name,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* @variant only makes sense on a property whose parent model is @flatBag and that is NOT
|
|
139
|
+
* the discriminator itself. @variant scopes a sibling property to specific discriminator
|
|
140
|
+
* values; applying it to the discriminator is meaningless (the discriminator IS the
|
|
141
|
+
* variant signal, not a variant-conditional property).
|
|
142
|
+
*/
|
|
143
|
+
export function validateVariantTargetMustBeFlatBagSibling(program) {
|
|
144
|
+
for (const namespace of getDeclaredNamespacesForLinting(program)) {
|
|
145
|
+
navigateTypesInNamespace(namespace, {
|
|
146
|
+
modelProperty: (property) => {
|
|
147
|
+
if (!hasVariant(program, property)) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const model = property.model;
|
|
151
|
+
if (!model || !isFlatBag(program, model)) {
|
|
152
|
+
reportDiagnostic(program, {
|
|
153
|
+
code: "decorator-invalid-use",
|
|
154
|
+
target: property,
|
|
155
|
+
messageId: "variantTargetMustBeFlatBagSibling",
|
|
156
|
+
format: {
|
|
157
|
+
property: property.name,
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (property.name === getFlatBagDiscriminator(program, model)) {
|
|
163
|
+
reportDiagnostic(program, {
|
|
164
|
+
code: "decorator-invalid-use",
|
|
165
|
+
target: property,
|
|
166
|
+
messageId: "variantTargetMustNotBeDiscriminator",
|
|
167
|
+
format: {
|
|
168
|
+
property: property.name,
|
|
169
|
+
model: model.name,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Each value passed to @variant("a", "b") must name an actual member of the discriminator
|
|
179
|
+
* enum on the parent flat-bag model. Catches typos and stale variant names after enum
|
|
180
|
+
* members are renamed.
|
|
181
|
+
*/
|
|
182
|
+
export function validateVariantValuesMustBeEnumMembers(program) {
|
|
183
|
+
for (const namespace of getDeclaredNamespacesForLinting(program)) {
|
|
184
|
+
navigateTypesInNamespace(namespace, {
|
|
185
|
+
modelProperty: (property) => {
|
|
186
|
+
var _a;
|
|
187
|
+
if (!hasVariant(program, property)) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const model = property.model;
|
|
191
|
+
if (!model || !isFlatBag(program, model)) {
|
|
192
|
+
// Reported by validateVariantTargetMustBeFlatBagSibling.
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const discriminator = getFlatBagDiscriminator(program, model);
|
|
196
|
+
// Explicit undefined check so an empty-string discriminator (`@flatBag("")`) still
|
|
197
|
+
// flows through to model.properties.has(""), which correctly returns false and
|
|
198
|
+
// produces a proper flatBagDiscriminatorMustExist diagnostic instead of silently
|
|
199
|
+
// bypassing validation.
|
|
200
|
+
if (discriminator === undefined) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const discriminatorProperty = model.properties.get(discriminator);
|
|
204
|
+
if (!discriminatorProperty) {
|
|
205
|
+
// Reported by validateFlatBagDiscriminatorMustExist; bail silently here.
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const enumType = resolveEnumType(discriminatorProperty.type);
|
|
209
|
+
if (!enumType) {
|
|
210
|
+
// Reported by validateFlatBagDiscriminatorMustBeEnum.
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const variants = (_a = getVariants(program, property)) !== null && _a !== void 0 ? _a : [];
|
|
214
|
+
const unknown = variants.filter((v) => !enumType.members.has(v));
|
|
215
|
+
if (unknown.length > 0) {
|
|
216
|
+
reportDiagnostic(program, {
|
|
217
|
+
code: "decorator-invalid-use",
|
|
218
|
+
target: property,
|
|
219
|
+
messageId: "variantValuesMustBeEnumMembers",
|
|
220
|
+
format: {
|
|
221
|
+
property: property.name,
|
|
222
|
+
model: model.name,
|
|
223
|
+
enum: enumType.name,
|
|
224
|
+
values: unknown.join(", "),
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Lint rule: sibling properties on a @flatBag model should be nullable so payloads can
|
|
234
|
+
* omit them when their variant is not selected. The discriminator itself, and properties
|
|
235
|
+
* meaningful for every variant (no @variant), are exempt.
|
|
236
|
+
*
|
|
237
|
+
* Phase 3 default: off in the recommended ruleset until we have telemetry on false-positive
|
|
238
|
+
* rate — Phase 1 found many real flat-bags with deliberately non-null primitive siblings
|
|
239
|
+
* (e.g. recurrencePattern.interval).
|
|
240
|
+
*/
|
|
241
|
+
export const flatBagSiblingsShouldBeNullable = createRule({
|
|
242
|
+
name: "flat-bag-siblings-should-be-nullable",
|
|
243
|
+
severity: "warning",
|
|
244
|
+
description: "Sibling properties on a @flatBag model should be nullable so variants that do not use them can be omitted.",
|
|
245
|
+
messages: {
|
|
246
|
+
default: paramMessage `Property '${"property"}' on @flatBag model '${"model"}' is meaningful only for variants '${"variants"}' but is not nullable. Make it 'T | null' so payloads for other variants can omit it.`,
|
|
247
|
+
},
|
|
248
|
+
create(context) {
|
|
249
|
+
return {
|
|
250
|
+
modelProperty: (property) => {
|
|
251
|
+
const model = property.model;
|
|
252
|
+
if (!model || !isFlatBag(context.program, model)) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
// Exempt the discriminator itself.
|
|
256
|
+
const discriminator = getFlatBagDiscriminator(context.program, model);
|
|
257
|
+
if (discriminator && property.name === discriminator) {
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
// Only check properties that declared a non-empty @variant set — those are the
|
|
261
|
+
// ones that are explicitly variant-scoped and therefore should be nullable.
|
|
262
|
+
if (!hasVariant(context.program, property)) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const variants = getVariants(context.program, property);
|
|
266
|
+
if (!variants || variants.length === 0) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
if (property.type.kind === "Union") {
|
|
270
|
+
const hasNull = extractTypesFromUnion(property.type).some(isNullType);
|
|
271
|
+
if (hasNull) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Non-union type or union without null variant — not nullable.
|
|
276
|
+
context.reportDiagnostic({
|
|
277
|
+
target: property,
|
|
278
|
+
format: {
|
|
279
|
+
property: property.name,
|
|
280
|
+
model: model.name,
|
|
281
|
+
variants: variants.join(", "),
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
/**
|
|
289
|
+
* Lint rule: the discriminator enum on a @flatBag model should be closed-set (no
|
|
290
|
+
* `unknownFutureValue` member). Flat-bag semantics depend on a known fixed variant set;
|
|
291
|
+
* an `unknownFutureValue` makes the variant→property mapping unverifiable for that value.
|
|
292
|
+
*/
|
|
293
|
+
export const flatBagEnumShouldBeClosed = createRule({
|
|
294
|
+
name: "flat-bag-enum-should-be-closed",
|
|
295
|
+
severity: "warning",
|
|
296
|
+
description: "Discriminator enums on @flatBag models should be closed-set (no unknownFutureValue member).",
|
|
297
|
+
messages: {
|
|
298
|
+
default: paramMessage `Enum '${"enum"}' is the @flatBag discriminator for model '${"model"}' and should be closed-set, but has an 'unknownFutureValue' member. Flat-bag variant→property mappings are unverifiable for that value.`,
|
|
299
|
+
},
|
|
300
|
+
create(context) {
|
|
301
|
+
return {
|
|
302
|
+
model: (model) => {
|
|
303
|
+
if (!isFlatBag(context.program, model)) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const discriminator = getFlatBagDiscriminator(context.program, model);
|
|
307
|
+
// See validateFlatBagDiscriminatorMustExist: use explicit undefined check so
|
|
308
|
+
// empty-string discriminators reach the validation rule rather than silently
|
|
309
|
+
// bailing here.
|
|
310
|
+
if (discriminator === undefined) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
const property = model.properties.get(discriminator);
|
|
314
|
+
if (!property) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
const enumType = resolveEnumType(property.type);
|
|
318
|
+
if (!enumType) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
if (enumType.members.has("unknownFutureValue")) {
|
|
322
|
+
context.reportDiagnostic({
|
|
323
|
+
target: enumType,
|
|
324
|
+
format: {
|
|
325
|
+
enum: enumType.name,
|
|
326
|
+
model: model.name,
|
|
327
|
+
},
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
},
|
|
333
|
+
});
|
|
334
|
+
//# sourceMappingURL=flat-bag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flat-bag.js","sourceRoot":"","sources":["../../../src/rules/flat-bag.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,9 @@ export * from "./entity.js";
|
|
|
15
15
|
export * from "./enum.js";
|
|
16
16
|
export * from "./expand.js";
|
|
17
17
|
export * from "./extends-on-same-type.js";
|
|
18
|
+
export * from "./facet.js";
|
|
18
19
|
export * from "./filter.js";
|
|
20
|
+
export * from "./flat-bag.js";
|
|
19
21
|
export * from "./function.js";
|
|
20
22
|
export * from "./global-operation.js";
|
|
21
23
|
export * from "./graph-deprecated.js";
|
|
@@ -39,5 +41,6 @@ export * from "./return-source.js";
|
|
|
39
41
|
export * from "./search.js";
|
|
40
42
|
export * from "./shared-entity.js";
|
|
41
43
|
export * from "./skip.js";
|
|
44
|
+
export * from "./skip-token.js";
|
|
42
45
|
export * from "./top.js";
|
|
43
46
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC"}
|
package/dist/src/rules/index.js
CHANGED
|
@@ -15,7 +15,9 @@ export * from "./entity.js";
|
|
|
15
15
|
export * from "./enum.js";
|
|
16
16
|
export * from "./expand.js";
|
|
17
17
|
export * from "./extends-on-same-type.js";
|
|
18
|
+
export * from "./facet.js";
|
|
18
19
|
export * from "./filter.js";
|
|
20
|
+
export * from "./flat-bag.js";
|
|
19
21
|
export * from "./function.js";
|
|
20
22
|
export * from "./global-operation.js";
|
|
21
23
|
export * from "./graph-deprecated.js";
|
|
@@ -39,5 +41,6 @@ export * from "./return-source.js";
|
|
|
39
41
|
export * from "./search.js";
|
|
40
42
|
export * from "./shared-entity.js";
|
|
41
43
|
export * from "./skip.js";
|
|
44
|
+
export * from "./skip-token.js";
|
|
42
45
|
export * from "./top.js";
|
|
43
46
|
//# sourceMappingURL=index.js.map
|