UNPKG

@contract-case/case-entities-internal

Version:

Shared types for ContractCase modules

119 lines 6.12 kB
import { CoreHttpStatusCodeMatcher, CoreUrlEncodedStringMatcher, CoreHttpBasicAuthValueMatcher, CoreHttpRequestMatcher, CoreHttpResponseMatcher } from '@contract-case/case-core-plugin-http-dsl'; import { AnyCaseMatcherOrData, LookupableMatcher } from '@contract-case/case-plugin-dsl-types'; import { NUMBER_MATCHER_TYPE, STRING_MATCHER_TYPE, BOOLEAN_MATCHER_TYPE, CASCADING_CONTEXT_MATCHER_TYPE, NULL_MATCHER_TYPE, SHAPED_ARRAY_MATCHER_TYPE, SHAPED_OBJECT_MATCHER_TYPE, ARRAY_LENGTH_MATCHER_TYPE, COMBINE_MATCHERS_TYPE, ARRAY_EACH_ENTRY_MATCHES_TYPE, OBJECT_VALUES_MATCH_TYPE, OBJECT_KEYS_MATCH_TYPE, ARRAY_CONTAINS_TYPE, INTEGER_MATCH_TYPE, STRING_CONTAINS_TYPE, STRING_PREFIX_TYPE, STRING_SUFFIX_TYPE, CONTEXT_VARIABLE_TYPE, BASE64_ENCODED_TYPE, JSON_STRINGIFIED_TYPE, AnyCaseNodeType, ARRAY_LENGTH_PARAMETER_INFINITE } from './constants.types'; export interface MatchContextByType { '_case:context:matchBy': 'type'; } export interface MatchContextByExact { '_case:context:matchBy': 'exact'; } interface CaseMatcherWithExample { '_case:matcher:type': AnyCaseNodeType; '_case:matcher:example': unknown; } export interface CoreNumberMatcher extends CaseMatcherWithExample { '_case:matcher:type': typeof NUMBER_MATCHER_TYPE; '_case:matcher:example': number; '_case:matcher:resolvesTo': 'number'; } export interface CoreStringMatcher extends CaseMatcherWithExample { '_case:matcher:type': typeof STRING_MATCHER_TYPE; '_case:matcher:example': string; '_case:matcher:resolvesTo': 'string'; } export interface CoreBooleanMatcher extends CaseMatcherWithExample { '_case:matcher:type': typeof BOOLEAN_MATCHER_TYPE; '_case:matcher:example': boolean; '_case:matcher:resolvesTo': 'boolean'; } export interface CoreCascadingMatcher { '_case:matcher:type': typeof CASCADING_CONTEXT_MATCHER_TYPE; '_case:matcher:child': AnyCaseMatcherOrData; } export interface CoreNullMatcher extends CaseMatcherWithExample { '_case:matcher:type': typeof NULL_MATCHER_TYPE; '_case:matcher:example': null; '_case:matcher:resolvesTo': 'null'; } export interface CoreShapedArrayMatcher { '_case:matcher:type': typeof SHAPED_ARRAY_MATCHER_TYPE; '_case:matcher:children': Array<AnyCaseMatcherOrData>; } export interface CoreShapedObjectMatcher { '_case:matcher:type': typeof SHAPED_OBJECT_MATCHER_TYPE; '_case:matcher:children': Record<string, AnyCaseMatcherOrData>; } export interface CoreArrayLengthMatcher { '_case:matcher:type': typeof ARRAY_LENGTH_MATCHER_TYPE; '_case:matcher:minLength': number; '_case:matcher:maxLength': number | typeof ARRAY_LENGTH_PARAMETER_INFINITE; } export interface CoreAndCombinationMatcher { '_case:matcher:type': typeof COMBINE_MATCHERS_TYPE; '_case:matcher:children': Array<AnyCaseMatcherOrData>; } export interface CoreArrayEachEntryMatches { '_case:matcher:type': typeof ARRAY_EACH_ENTRY_MATCHES_TYPE; '_case:matcher:matcher': AnyCaseMatcherOrData; '_case:matcher:example'?: AnyCaseMatcherOrData[]; } export interface CoreObjectValuesMatch { '_case:matcher:type': typeof OBJECT_VALUES_MATCH_TYPE; '_case:matcher:matcher': AnyCaseMatcherOrData; '_case:matcher:example'?: Record<string, AnyCaseMatcherOrData>; } export interface CoreObjectKeysMatcher { '_case:matcher:type': typeof OBJECT_KEYS_MATCH_TYPE; '_case:matcher:matcher': AnyCaseMatcherOrData; '_case:matcher:exampleKey'?: string; } export interface CoreArrayContainsMatcher { '_case:matcher:type': typeof ARRAY_CONTAINS_TYPE; '_case:matcher:matchers': AnyCaseMatcherOrData[]; } export interface CoreIntegerMatcher { '_case:matcher:type': typeof INTEGER_MATCH_TYPE; '_case:matcher:example': number; '_case:matcher:resolvesTo': 'number'; } export interface CoreStringContainsMatcher { '_case:matcher:type': typeof STRING_CONTAINS_TYPE; '_case:matcher:contains': string | AnyCaseMatcher; '_case:matcher:resolvesTo': 'string'; '_case:matcher:example'?: string; } export interface CoreStringPrefixMatcher { '_case:matcher:type': typeof STRING_PREFIX_TYPE; '_case:matcher:prefix': string; '_case:matcher:suffix': AnyCaseMatcherOrData; '_case:matcher:resolvesTo': 'string'; } export interface CoreStringSuffixMatcher { '_case:matcher:type': typeof STRING_SUFFIX_TYPE; '_case:matcher:prefix': string | AnyCaseMatcher; '_case:matcher:suffix': string; '_case:matcher:resolvesTo': 'string'; } export interface CoreContextVariableMatcher { '_case:matcher:type': typeof CONTEXT_VARIABLE_TYPE; '_case:matcher:variableName': string; } export interface CoreBase64EncodedMatcher { '_case:matcher:type': typeof BASE64_ENCODED_TYPE; '_case:matcher:child': AnyCaseMatcherOrData; '_case:matcher:resolvesTo': 'string'; } export interface CoreJsonStringifiedMatcher { '_case:matcher:type': typeof JSON_STRINGIFIED_TYPE; '_case:matcher:child': AnyCaseMatcherOrData; '_case:matcher:resolvesTo': 'string'; } export type NumberMatcher = CoreNumberMatcher & MatchContextByType; export type StringMatcher = CoreStringMatcher & MatchContextByType; export type BooleanMatcher = CoreBooleanMatcher & MatchContextByType; export type NullMatcher = CoreNullMatcher & MatchContextByType; /** Leaf matchers are any type where === would match in an exact context */ export type AnyLeafMatcher = CoreNumberMatcher | CoreStringMatcher | CoreNullMatcher | CoreBooleanMatcher | CoreIntegerMatcher | CoreStringContainsMatcher; export type AnyCaseMatcher = AnyLeafMatcher | CoreCascadingMatcher | CoreShapedArrayMatcher | CoreShapedObjectMatcher | LookupableMatcher | CoreArrayLengthMatcher | CoreAndCombinationMatcher | CoreArrayEachEntryMatches | CoreObjectValuesMatch | CoreHttpStatusCodeMatcher | CoreUrlEncodedStringMatcher | CoreHttpBasicAuthValueMatcher | CoreHttpRequestMatcher | CoreHttpResponseMatcher | CoreObjectKeysMatcher | CoreArrayContainsMatcher | CoreStringSuffixMatcher | CoreStringPrefixMatcher | CoreContextVariableMatcher | CoreBase64EncodedMatcher | CoreJsonStringifiedMatcher; export {}; //# sourceMappingURL=definitions.types.d.ts.map