Skip to content

Commit

Permalink
Merge 45e8b0e into 75a2d99
Browse files Browse the repository at this point in the history
  • Loading branch information
nmanu1 committed Aug 15, 2022
2 parents 75a2d99 + 45e8b0e commit f34e4a2
Show file tree
Hide file tree
Showing 18 changed files with 392 additions and 95 deletions.
13 changes: 13 additions & 0 deletions docs/search-core.conjunctionstaticfilter.combinator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) &gt; [combinator](./search-core.conjunctionstaticfilter.combinator.md)

## ConjunctionStaticFilter.combinator property

Indicates that filters should be combined with a logical AND.

<b>Signature:</b>

```typescript
combinator: FilterCombinator.AND;
```
13 changes: 13 additions & 0 deletions docs/search-core.conjunctionstaticfilter.filters.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) &gt; [filters](./search-core.conjunctionstaticfilter.filters.md)

## ConjunctionStaticFilter.filters property

The filters to combine together.

<b>Signature:</b>

```typescript
filters: StaticFilter[];
```
13 changes: 13 additions & 0 deletions docs/search-core.conjunctionstaticfilter.kind.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) &gt; [kind](./search-core.conjunctionstaticfilter.kind.md)

## ConjunctionStaticFilter.kind property

The kind of static filter.

<b>Signature:</b>

```typescript
kind: 'conjunction';
```
22 changes: 22 additions & 0 deletions docs/search-core.conjunctionstaticfilter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md)

## ConjunctionStaticFilter interface

A static filter composed by combining other static filters with the logical AND operator.

<b>Signature:</b>

```typescript
export interface ConjunctionStaticFilter
```

## Properties

| Property | Type | Description |
| --- | --- | --- |
| [combinator](./search-core.conjunctionstaticfilter.combinator.md) | [FilterCombinator.AND](./search-core.filtercombinator.md) | Indicates that filters should be combined with a logical AND. |
| [filters](./search-core.conjunctionstaticfilter.filters.md) | [StaticFilter](./search-core.staticfilter.md)<!-- -->\[\] | The filters to combine together. |
| [kind](./search-core.conjunctionstaticfilter.kind.md) | 'conjunction' | The kind of static filter. |

13 changes: 13 additions & 0 deletions docs/search-core.disjunctionstaticfilter.combinator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) &gt; [combinator](./search-core.disjunctionstaticfilter.combinator.md)

## DisjunctionStaticFilter.combinator property

Indicates that filters should be combined with a logical OR.

<b>Signature:</b>

```typescript
combinator: FilterCombinator.OR;
```
13 changes: 13 additions & 0 deletions docs/search-core.disjunctionstaticfilter.filters.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) &gt; [filters](./search-core.disjunctionstaticfilter.filters.md)

## DisjunctionStaticFilter.filters property

The filters to combine together.

<b>Signature:</b>

```typescript
filters: (DisjunctionStaticFilter | FieldValueStaticFilter)[];
```
13 changes: 13 additions & 0 deletions docs/search-core.disjunctionstaticfilter.kind.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) &gt; [kind](./search-core.disjunctionstaticfilter.kind.md)

## DisjunctionStaticFilter.kind property

The kind of static filter.

<b>Signature:</b>

```typescript
kind: 'disjunction';
```
22 changes: 22 additions & 0 deletions docs/search-core.disjunctionstaticfilter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md)

## DisjunctionStaticFilter interface

A static filter composed by combining filters with the logical OR operator. The combined filters can either be field value filters or other disjunction filters.

<b>Signature:</b>

```typescript
export interface DisjunctionStaticFilter
```

## Properties

| Property | Type | Description |
| --- | --- | --- |
| [combinator](./search-core.disjunctionstaticfilter.combinator.md) | [FilterCombinator.OR](./search-core.filtercombinator.md) | Indicates that filters should be combined with a logical OR. |
| [filters](./search-core.disjunctionstaticfilter.filters.md) | ([DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) \| [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md)<!-- -->)\[\] | The filters to combine together. |
| [kind](./search-core.disjunctionstaticfilter.kind.md) | 'disjunction' | The kind of static filter. |

13 changes: 13 additions & 0 deletions docs/search-core.fieldvaluestaticfilter.kind.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md) &gt; [kind](./search-core.fieldvaluestaticfilter.kind.md)

## FieldValueStaticFilter.kind property

The kind of static filter.

<b>Signature:</b>

```typescript
kind: 'fieldValue';
```
21 changes: 21 additions & 0 deletions docs/search-core.fieldvaluestaticfilter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/search-core](./search-core.md) &gt; [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md)

## FieldValueStaticFilter interface

A [FieldValueFilter](./search-core.fieldvaluefilter.md) with the kind of filter specified to discriminate between static filter types.

<b>Signature:</b>

```typescript
export interface FieldValueStaticFilter extends FieldValueFilter
```
<b>Extends:</b> [FieldValueFilter](./search-core.fieldvaluefilter.md)
## Properties
| Property | Type | Description |
| --- | --- | --- |
| [kind](./search-core.fieldvaluestaticfilter.kind.md) | 'fieldValue' | The kind of static filter. |
3 changes: 3 additions & 0 deletions docs/search-core.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@
| [BaseAnswersConfig](./search-core.baseanswersconfig.md) | |
| [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md)<!-- -->. |
| [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. |
| [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) | A static filter composed by combining other static filters with the logical AND operator. |
| [DirectAnswer](./search-core.directanswer.md) | A direct answer to a search. |
| [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) | A static filter composed by combining filters with the logical OR operator. The combined filters can either be field value filters or other disjunction filters. |
| [DisplayableFacet](./search-core.displayablefacet.md) | A [Facet](./search-core.facet.md) which contains extra fields meant to be displayed to the end user. |
| [DisplayableFacetOption](./search-core.displayablefacetoption.md) | A [FacetOption](./search-core.facetoption.md) with extra data meant to be displayed to the end user. |
| [Endpoints](./search-core.endpoints.md) | Overrides for the URLs which are used when making requests to the Search API. |
Expand All @@ -63,6 +65,7 @@
| [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | A direct answer which was found within a document. |
| [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. |
| [FieldValueFilter](./search-core.fieldvaluefilter.md) | Represents a filter which compares values to a single field. |
| [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md) | A [FieldValueFilter](./search-core.fieldvaluefilter.md) with the kind of filter specified to discriminate between static filter types. |
| [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. |
| [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. |
| [HighlightedValue](./search-core.highlightedvalue.md) | A field value and its substring matches as emphasized by the Search API. |
Expand Down
11 changes: 2 additions & 9 deletions docs/search-core.staticfilter.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,7 @@ Represents a static filter that will be used to refine results.
<b>Signature:</b>

```typescript
export declare type StaticFilter = {
kind: 'fieldValue';
value: FieldValueFilter;
} | {
kind: 'combination';
combinator: FilterCombinator;
children: StaticFilter[];
};
export declare type StaticFilter = FieldValueStaticFilter | DisjunctionStaticFilter | ConjunctionStaticFilter;
```
<b>References:</b> [FieldValueFilter](./search-core.fieldvaluefilter.md)<!-- -->, [FilterCombinator](./search-core.filtercombinator.md)<!-- -->, [StaticFilter](./search-core.staticfilter.md)
<b>References:</b> [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md)<!-- -->, [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md)<!-- -->, [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md)

28 changes: 20 additions & 8 deletions etc/search-core.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,13 @@ export interface ClientSDKHeaderValues {
ANSWERS_CORE?: never;
}

// @public
export interface ConjunctionStaticFilter {
combinator: FilterCombinator.AND;
filters: StaticFilter[];
kind: 'conjunction';
}

// @public
export type Context = any;

Expand All @@ -129,6 +136,13 @@ export enum Direction {
Descending = "DESC"
}

// @public
export interface DisjunctionStaticFilter {
combinator: FilterCombinator.OR;
filters: (DisjunctionStaticFilter | FieldValueStaticFilter)[];
kind: 'disjunction';
}

// @public
export interface DisplayableFacet extends Facet {
displayName: string;
Expand Down Expand Up @@ -219,6 +233,11 @@ export interface FieldValueFilter {
value: string | number | boolean | NearFilterValue | NumberRangeValue;
}

// @public
export interface FieldValueStaticFilter extends FieldValueFilter {
kind: 'fieldValue';
}

// @public
export enum FilterCombinator {
AND = "$and",
Expand Down Expand Up @@ -504,14 +523,7 @@ export enum SpellCheckType {
}

// @public
export type StaticFilter = {
kind: 'fieldValue';
value: FieldValueFilter;
} | {
kind: 'combination';
combinator: FilterCombinator;
children: StaticFilter[];
};
export type StaticFilter = FieldValueStaticFilter | DisjunctionStaticFilter | ConjunctionStaticFilter;

// @public
export interface UniversalAutocompleteRequest extends SearchRequest {
Expand Down
8 changes: 7 additions & 1 deletion src/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,13 @@ export { QuestionSubmissionRequest } from './questionsubmission/QuestionSubmissi
export { QuestionSubmissionResponse } from './questionsubmission/QuestionSubmissionResponse';

// Search service request models
export { StaticFilter, FilterCombinator } from './searchservice/request/StaticFilter';
export {
StaticFilter,
FieldValueStaticFilter,
ConjunctionStaticFilter,
DisjunctionStaticFilter,
FilterCombinator
} from './searchservice/request/StaticFilter';
export { Context } from './searchservice/request/Context';
export { UniversalLimit } from './searchservice/request/UniversalLimit';
export { LatLong } from './searchservice/request/LatLong';
Expand Down
46 changes: 43 additions & 3 deletions src/models/searchservice/request/StaticFilter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,49 @@ import { FieldValueFilter } from './FieldValueFilter';
*
* @public
*/
export type StaticFilter =
{ kind: 'fieldValue', value: FieldValueFilter } |
{ kind: 'combination', combinator: FilterCombinator, children: StaticFilter[] };
export type StaticFilter = FieldValueStaticFilter | DisjunctionStaticFilter | ConjunctionStaticFilter;

/**
* A {@link FieldValueFilter} with the kind of filter specified
* to discriminate between static filter types.
*
* @public
*/
export interface FieldValueStaticFilter extends FieldValueFilter {
/** The kind of static filter. */
kind: 'fieldValue'
}

/**
* A static filter composed by combining filters with the logical OR
* operator. The combined filters can either be field value filters or
* other disjunction filters.
*
* @public
*/
export interface DisjunctionStaticFilter {
/** {@inheritDoc FieldValueStaticFilter.kind} */
kind: 'disjunction',
/** {@inheritDoc FilterCombinator.OR} */
combinator: FilterCombinator.OR,
/** The filters to combine together. */
filters: (DisjunctionStaticFilter | FieldValueStaticFilter)[]
}

/**
* A static filter composed by combining other static filters with the
* logical AND operator.
*
* @public
*/
export interface ConjunctionStaticFilter {
/** {@inheritDoc FieldValueStaticFilter.kind} */
kind: 'conjunction',
/** {@inheritDoc FilterCombinator.AND} */
combinator: FilterCombinator.AND,
/** {@inheritDoc DisjunctionStaticFilter.filters} */
filters: StaticFilter[]
}

/**
* Indicates how child filters in a {@link StaticFilter} should be combined.
Expand Down
25 changes: 12 additions & 13 deletions src/serializers/serializeStaticFilters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,33 @@ import { FieldValueFilter } from '../models/searchservice/request/FieldValueFilt
import { ApiStaticFilters, ApiFilter } from '../models/searchservice/request/ApiStaticFilters';

export function serializeStaticFilters(filter: StaticFilter): string | undefined {
if (filter.kind === 'combination') {
const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.children);
if (filter.kind !== 'fieldValue') {
const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.filters);
return shapedFilter && JSON.stringify(shapedFilter);
}

return JSON.stringify(shapeFieldValueFilterForApi(filter.value));
return JSON.stringify(shapeFieldValueFilterForApi(filter));
}

function shapeCombinedFilterForApi(
combinator: FilterCombinator,
filters: StaticFilter[]
): ApiStaticFilters | undefined {
if (filters.length === 0) {
return undefined;
}

const shapedFilters: ApiStaticFilters[] = [];
for (const filter of filters) {
if (filter.kind === 'combination') {
const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.children);
if (filter.kind !== 'fieldValue') {
const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.filters);
shapedFilter && shapedFilters.push(shapedFilter);
} else {
shapedFilters.push(shapeFieldValueFilterForApi(filter.value));
shapedFilters.push(shapeFieldValueFilterForApi(filter));
}
}
return shapedFilters.length === 1
? shapedFilters[0]
: { [combinator]: shapedFilters };

return shapedFilters.length === 0
? undefined
: shapedFilters.length === 1
? shapedFilters[0]
: { [combinator]: shapedFilters };
}

export function shapeFieldValueFilterForApi(filter: FieldValueFilter): ApiStaticFilters {
Expand Down
8 changes: 3 additions & 5 deletions tests/infra/SearchServiceImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,11 +276,9 @@ describe('SearchService', () => {
}],
staticFilter: {
kind: 'fieldValue',
value: {
fieldId: 'city',
matcher: Matcher.NotEquals,
value: 'Arlington'
}
fieldId: 'city',
matcher: Matcher.NotEquals,
value: 'Arlington'
},
verticalKey: 'verticalKey'
};
Expand Down
Loading

0 comments on commit f34e4a2

Please sign in to comment.