@webiny/api-headless-cms-utils-os 6.6.0-alpha.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/LICENSE +21 -0
- package/README.md +11 -0
- package/configurations.d.ts +19 -0
- package/configurations.js +31 -0
- package/configurations.js.map +1 -0
- package/exports/api/cms/opensearch.d.ts +17 -0
- package/exports/api/cms/opensearch.js +17 -0
- package/features/CmsEntryOpenSearchBodyBuilder/CmsEntryOpenSearchBodyBuilder.d.ts +30 -0
- package/features/CmsEntryOpenSearchBodyBuilder/CmsEntryOpenSearchBodyBuilder.js +144 -0
- package/features/CmsEntryOpenSearchBodyBuilder/CmsEntryOpenSearchBodyBuilder.js.map +1 -0
- package/features/CmsEntryOpenSearchBodyBuilder/abstractions.d.ts +18 -0
- package/features/CmsEntryOpenSearchBodyBuilder/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchBodyBuilder/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchBodyBuilder/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchBodyBuilder/feature.js +11 -0
- package/features/CmsEntryOpenSearchBodyBuilder/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchBodyBuilder/index.d.ts +2 -0
- package/features/CmsEntryOpenSearchBodyBuilder/index.js +2 -0
- package/features/CmsEntryOpenSearchBodyBuilder/sort.d.ts +17 -0
- package/features/CmsEntryOpenSearchBodyBuilder/sort.js +76 -0
- package/features/CmsEntryOpenSearchBodyBuilder/sort.js.map +1 -0
- package/features/CmsEntryOpenSearchBodyModifier/abstractions.d.ts +16 -0
- package/features/CmsEntryOpenSearchBodyModifier/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchBodyModifier/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchBodyModifier/index.d.ts +1 -0
- package/features/CmsEntryOpenSearchBodyModifier/index.js +1 -0
- package/features/CmsEntryOpenSearchExecFiltering/CmsEntryOpenSearchExecFiltering.d.ts +17 -0
- package/features/CmsEntryOpenSearchExecFiltering/CmsEntryOpenSearchExecFiltering.js +119 -0
- package/features/CmsEntryOpenSearchExecFiltering/CmsEntryOpenSearchExecFiltering.js.map +1 -0
- package/features/CmsEntryOpenSearchExecFiltering/abstractions.d.ts +17 -0
- package/features/CmsEntryOpenSearchExecFiltering/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchExecFiltering/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchExecFiltering/applyFiltering.d.ts +11 -0
- package/features/CmsEntryOpenSearchExecFiltering/applyFiltering.js +31 -0
- package/features/CmsEntryOpenSearchExecFiltering/applyFiltering.js.map +1 -0
- package/features/CmsEntryOpenSearchExecFiltering/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchExecFiltering/feature.js +11 -0
- package/features/CmsEntryOpenSearchExecFiltering/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchExecFiltering/index.d.ts +2 -0
- package/features/CmsEntryOpenSearchExecFiltering/index.js +2 -0
- package/features/CmsEntryOpenSearchExecFiltering/populated.d.ts +2 -0
- package/features/CmsEntryOpenSearchExecFiltering/populated.js +12 -0
- package/features/CmsEntryOpenSearchExecFiltering/populated.js.map +1 -0
- package/features/CmsEntryOpenSearchExecFiltering/values.d.ts +2 -0
- package/features/CmsEntryOpenSearchExecFiltering/values.js +15 -0
- package/features/CmsEntryOpenSearchExecFiltering/values.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/CmsEntryOpenSearchFieldIndexRegistry.d.ts +14 -0
- package/features/CmsEntryOpenSearchFieldIndex/CmsEntryOpenSearchFieldIndexRegistry.js +42 -0
- package/features/CmsEntryOpenSearchFieldIndex/CmsEntryOpenSearchFieldIndexRegistry.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndex.d.ts +32 -0
- package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndex.js +5 -0
- package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndexRegistry.d.ts +11 -0
- package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndexRegistry.js +5 -0
- package/features/CmsEntryOpenSearchFieldIndex/abstractions/CmsEntryOpenSearchFieldIndexRegistry.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/constants.d.ts +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/constants.js +4 -0
- package/features/CmsEntryOpenSearchFieldIndex/constants.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchFieldIndex/feature.js +29 -0
- package/features/CmsEntryOpenSearchFieldIndex/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/DateTimeFieldIndex.d.ts +11 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/DateTimeFieldIndex.js +60 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/DateTimeFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/DefaultFieldIndex.d.ts +13 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/DefaultFieldIndex.js +33 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/DefaultFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/JsonFieldIndex.d.ts +10 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/JsonFieldIndex.js +21 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/JsonFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/LongTextFieldIndex.d.ts +10 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/LongTextFieldIndex.js +22 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/LongTextFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/NumberFieldIndex.d.ts +11 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/NumberFieldIndex.js +32 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/NumberFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/ObjectFieldIndex.d.ts +12 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/ObjectFieldIndex.js +107 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/ObjectFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/RichTextFieldIndex.d.ts +10 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/RichTextFieldIndex.js +21 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/RichTextFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/TextCompressedFieldIndex.d.ts +15 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/TextCompressedFieldIndex.js +40 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/TextCompressedFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/TextEncryptedFieldIndex.d.ts +15 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/TextEncryptedFieldIndex.js +40 -0
- package/features/CmsEntryOpenSearchFieldIndex/fields/TextEncryptedFieldIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldIndex/index.d.ts +3 -0
- package/features/CmsEntryOpenSearchFieldIndex/index.js +3 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/CmsEntryOpenSearchFieldPathFactory.d.ts +11 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/CmsEntryOpenSearchFieldPathFactory.js +40 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/CmsEntryOpenSearchFieldPathFactory.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/abstractions.d.ts +21 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/feature.js +11 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/index.d.ts +2 -0
- package/features/CmsEntryOpenSearchFieldPathFactory/index.js +2 -0
- package/features/CmsEntryOpenSearchFilter/CmsEntryOpenSearchFilterRegistry.d.ts +11 -0
- package/features/CmsEntryOpenSearchFilter/CmsEntryOpenSearchFilterRegistry.js +36 -0
- package/features/CmsEntryOpenSearchFilter/CmsEntryOpenSearchFilterRegistry.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilter.d.ts +37 -0
- package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilter.js +5 -0
- package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilter.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilterRegistry.d.ts +9 -0
- package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilterRegistry.js +5 -0
- package/features/CmsEntryOpenSearchFilter/abstractions/CmsEntryOpenSearchFilterRegistry.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/constants.d.ts +1 -0
- package/features/CmsEntryOpenSearchFilter/constants.js +4 -0
- package/features/CmsEntryOpenSearchFilter/constants.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchFilter/feature.js +17 -0
- package/features/CmsEntryOpenSearchFilter/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/fields/DefaultFilter.d.ts +9 -0
- package/features/CmsEntryOpenSearchFilter/fields/DefaultFilter.js +26 -0
- package/features/CmsEntryOpenSearchFilter/fields/DefaultFilter.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/fields/ObjectFilter.d.ts +9 -0
- package/features/CmsEntryOpenSearchFilter/fields/ObjectFilter.js +43 -0
- package/features/CmsEntryOpenSearchFilter/fields/ObjectFilter.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/fields/RefFilter.d.ts +9 -0
- package/features/CmsEntryOpenSearchFilter/fields/RefFilter.js +36 -0
- package/features/CmsEntryOpenSearchFilter/fields/RefFilter.js.map +1 -0
- package/features/CmsEntryOpenSearchFilter/index.d.ts +3 -0
- package/features/CmsEntryOpenSearchFilter/index.js +3 -0
- package/features/CmsEntryOpenSearchFullTextSearch/abstractions.d.ts +20 -0
- package/features/CmsEntryOpenSearchFullTextSearch/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchFullTextSearch/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchFullTextSearch/index.d.ts +1 -0
- package/features/CmsEntryOpenSearchFullTextSearch/index.js +1 -0
- package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.d.ts +11 -0
- package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js +17 -0
- package/features/CmsEntryOpenSearchIndex/BaseOpenSearchIndex.js.map +1 -0
- package/features/CmsEntryOpenSearchIndex/abstractions.d.ts +14 -0
- package/features/CmsEntryOpenSearchIndex/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchIndex/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchIndex/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchIndex/feature.js +11 -0
- package/features/CmsEntryOpenSearchIndex/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchIndex/index.d.ts +3 -0
- package/features/CmsEntryOpenSearchIndex/index.js +3 -0
- package/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.d.ts +13 -0
- package/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.js +77 -0
- package/features/CmsEntryOpenSearchIndexCreate/CmsEntryOpenSearchIndexCreate.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexCreate/ModelAfterCreateFromHandler.d.ts +11 -0
- package/features/CmsEntryOpenSearchIndexCreate/ModelAfterCreateFromHandler.js +22 -0
- package/features/CmsEntryOpenSearchIndexCreate/ModelAfterCreateFromHandler.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexCreate/ModelAfterCreateHandler.d.ts +11 -0
- package/features/CmsEntryOpenSearchIndexCreate/ModelAfterCreateHandler.js +22 -0
- package/features/CmsEntryOpenSearchIndexCreate/ModelAfterCreateHandler.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexCreate/abstractions.d.ts +12 -0
- package/features/CmsEntryOpenSearchIndexCreate/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchIndexCreate/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexCreate/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchIndexCreate/feature.js +11 -0
- package/features/CmsEntryOpenSearchIndexCreate/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexCreate/index.d.ts +2 -0
- package/features/CmsEntryOpenSearchIndexCreate/index.js +2 -0
- package/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.d.ts +11 -0
- package/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.js +39 -0
- package/features/CmsEntryOpenSearchIndexDelete/CmsEntryOpenSearchIndexDelete.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexDelete/ModelAfterDeleteHandler.d.ts +11 -0
- package/features/CmsEntryOpenSearchIndexDelete/ModelAfterDeleteHandler.js +22 -0
- package/features/CmsEntryOpenSearchIndexDelete/ModelAfterDeleteHandler.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexDelete/abstractions.d.ts +12 -0
- package/features/CmsEntryOpenSearchIndexDelete/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchIndexDelete/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexDelete/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchIndexDelete/feature.js +11 -0
- package/features/CmsEntryOpenSearchIndexDelete/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchIndexDelete/index.d.ts +2 -0
- package/features/CmsEntryOpenSearchIndexDelete/index.js +2 -0
- package/features/CmsEntryOpenSearchOperatorList/CmsEntryOpenSearchOperatorList.d.ts +12 -0
- package/features/CmsEntryOpenSearchOperatorList/CmsEntryOpenSearchOperatorList.js +22 -0
- package/features/CmsEntryOpenSearchOperatorList/CmsEntryOpenSearchOperatorList.js.map +1 -0
- package/features/CmsEntryOpenSearchOperatorList/abstractions.d.ts +8 -0
- package/features/CmsEntryOpenSearchOperatorList/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchOperatorList/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchOperatorList/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchOperatorList/feature.js +11 -0
- package/features/CmsEntryOpenSearchOperatorList/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchOperatorList/index.d.ts +2 -0
- package/features/CmsEntryOpenSearchOperatorList/index.js +2 -0
- package/features/CmsEntryOpenSearchQueryModifier/abstractions.d.ts +16 -0
- package/features/CmsEntryOpenSearchQueryModifier/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchQueryModifier/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchQueryModifier/index.d.ts +1 -0
- package/features/CmsEntryOpenSearchQueryModifier/index.js +1 -0
- package/features/CmsEntryOpenSearchSortModifier/abstractions.d.ts +15 -0
- package/features/CmsEntryOpenSearchSortModifier/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchSortModifier/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchSortModifier/index.d.ts +1 -0
- package/features/CmsEntryOpenSearchSortModifier/index.js +1 -0
- package/features/CmsEntryOpenSearchUtilsFeature.d.ts +4 -0
- package/features/CmsEntryOpenSearchUtilsFeature.js +37 -0
- package/features/CmsEntryOpenSearchUtilsFeature.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/CmsEntryOpenSearchValueSearchRegistry.d.ts +12 -0
- package/features/CmsEntryOpenSearchValueSearch/CmsEntryOpenSearchValueSearchRegistry.js +31 -0
- package/features/CmsEntryOpenSearchValueSearch/CmsEntryOpenSearchValueSearchRegistry.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearch.d.ts +22 -0
- package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearch.js +5 -0
- package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearch.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearchRegistry.d.ts +10 -0
- package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearchRegistry.js +5 -0
- package/features/CmsEntryOpenSearchValueSearch/abstractions/CmsEntryOpenSearchValueSearchRegistry.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchValueSearch/feature.js +17 -0
- package/features/CmsEntryOpenSearchValueSearch/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/RefSearch.d.ts +10 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/RefSearch.js +21 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/RefSearch.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/SearchableJsonSearch.d.ts +10 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/SearchableJsonSearch.js +44 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/SearchableJsonSearch.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/TimeSearch.d.ts +10 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/TimeSearch.js +22 -0
- package/features/CmsEntryOpenSearchValueSearch/fields/TimeSearch.js.map +1 -0
- package/features/CmsEntryOpenSearchValueSearch/index.d.ts +3 -0
- package/features/CmsEntryOpenSearchValueSearch/index.js +3 -0
- package/features/CmsEntryOpenSearchValueTransformer/CmsEntryOpenSearchValueTransformer.d.ts +11 -0
- package/features/CmsEntryOpenSearchValueTransformer/CmsEntryOpenSearchValueTransformer.js +25 -0
- package/features/CmsEntryOpenSearchValueTransformer/CmsEntryOpenSearchValueTransformer.js.map +1 -0
- package/features/CmsEntryOpenSearchValueTransformer/abstractions.d.ts +13 -0
- package/features/CmsEntryOpenSearchValueTransformer/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchValueTransformer/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchValueTransformer/feature.d.ts +4 -0
- package/features/CmsEntryOpenSearchValueTransformer/feature.js +11 -0
- package/features/CmsEntryOpenSearchValueTransformer/feature.js.map +1 -0
- package/features/CmsEntryOpenSearchValueTransformer/index.d.ts +2 -0
- package/features/CmsEntryOpenSearchValueTransformer/index.js +2 -0
- package/features/CmsEntryOpenSearchValuesModifier/abstractions.d.ts +23 -0
- package/features/CmsEntryOpenSearchValuesModifier/abstractions.js +5 -0
- package/features/CmsEntryOpenSearchValuesModifier/abstractions.js.map +1 -0
- package/features/CmsEntryOpenSearchValuesModifier/index.d.ts +1 -0
- package/features/CmsEntryOpenSearchValuesModifier/index.js +1 -0
- package/helpers/entryIndexHelpers.d.ts +20 -0
- package/helpers/entryIndexHelpers.js +80 -0
- package/helpers/entryIndexHelpers.js.map +1 -0
- package/helpers/fieldIdentifier.d.ts +6 -0
- package/helpers/fieldIdentifier.js +23 -0
- package/helpers/fieldIdentifier.js.map +1 -0
- package/helpers/index.d.ts +2 -0
- package/helpers/index.js +2 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.d.ts +18 -0
- package/operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.js +9 -0
- package/operations/entry/elasticsearch/assignMinimumShouldMatchToQuery.js.map +1 -0
- package/operations/entry/elasticsearch/fields/createSystemField.d.ts +4 -0
- package/operations/entry/elasticsearch/fields/createSystemField.js +9 -0
- package/operations/entry/elasticsearch/fields/createSystemField.js.map +1 -0
- package/operations/entry/elasticsearch/fields/live.d.ts +2 -0
- package/operations/entry/elasticsearch/fields/live.js +50 -0
- package/operations/entry/elasticsearch/fields/live.js.map +1 -0
- package/operations/entry/elasticsearch/fields/location.d.ts +2 -0
- package/operations/entry/elasticsearch/fields/location.js +50 -0
- package/operations/entry/elasticsearch/fields/location.js.map +1 -0
- package/operations/entry/elasticsearch/fields/state.d.ts +2 -0
- package/operations/entry/elasticsearch/fields/state.js +104 -0
- package/operations/entry/elasticsearch/fields/state.js.map +1 -0
- package/operations/entry/elasticsearch/fields.d.ts +12 -0
- package/operations/entry/elasticsearch/fields.js +207 -0
- package/operations/entry/elasticsearch/fields.js.map +1 -0
- package/operations/entry/elasticsearch/fullTextSearch.d.ts +13 -0
- package/operations/entry/elasticsearch/fullTextSearch.js +51 -0
- package/operations/entry/elasticsearch/fullTextSearch.js.map +1 -0
- package/operations/entry/elasticsearch/fullTextSearchFields.d.ts +8 -0
- package/operations/entry/elasticsearch/fullTextSearchFields.js +10 -0
- package/operations/entry/elasticsearch/fullTextSearchFields.js.map +1 -0
- package/operations/entry/elasticsearch/initialQuery.d.ts +17 -0
- package/operations/entry/elasticsearch/initialQuery.js +45 -0
- package/operations/entry/elasticsearch/initialQuery.js.map +1 -0
- package/operations/entry/elasticsearch/keyword.d.ts +2 -0
- package/operations/entry/elasticsearch/keyword.js +17 -0
- package/operations/entry/elasticsearch/keyword.js.map +1 -0
- package/operations/entry/elasticsearch/shouldIgnoreEsResponseError.d.ts +2 -0
- package/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js +8 -0
- package/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -0
- package/operations/entry/elasticsearch/types.d.ts +31 -0
- package/operations/entry/elasticsearch/types.js +0 -0
- package/operations/entry/recordType.d.ts +3 -0
- package/operations/entry/recordType.js +6 -0
- package/operations/entry/recordType.js.map +1 -0
- package/operations/entry/transformations/transformEntryToIndex.d.ts +10 -0
- package/operations/entry/transformations/transformEntryToIndex.js +20 -0
- package/operations/entry/transformations/transformEntryToIndex.js.map +1 -0
- package/package.json +33 -0
- package/types.d.ts +5 -0
- package/types.js +0 -0
- package/values/NoValueContainer.d.ts +5 -0
- package/values/NoValueContainer.js +11 -0
- package/values/NoValueContainer.js.map +1 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import error from "@webiny/error";
|
|
2
|
+
import { createLatestRecordType, createPublishedRecordType } from "../recordType.js";
|
|
3
|
+
import { isSharedOpenSearchIndex } from "@webiny/api-opensearch";
|
|
4
|
+
const createBaseQuery = ()=>({
|
|
5
|
+
must: [],
|
|
6
|
+
must_not: [],
|
|
7
|
+
should: [],
|
|
8
|
+
filter: []
|
|
9
|
+
});
|
|
10
|
+
const createInitialQuery = (params)=>{
|
|
11
|
+
const { model, where } = params;
|
|
12
|
+
const query = createBaseQuery();
|
|
13
|
+
const sharedIndex = isSharedOpenSearchIndex();
|
|
14
|
+
if (sharedIndex) {
|
|
15
|
+
query.filter.push({
|
|
16
|
+
term: {
|
|
17
|
+
"tenant.keyword": model.tenant
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
query.filter.push({
|
|
21
|
+
term: {
|
|
22
|
+
"modelId.keyword": model.modelId
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (true === where.published) query.filter.push({
|
|
27
|
+
term: {
|
|
28
|
+
"__type.keyword": createPublishedRecordType()
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
else if (true === where.latest) query.filter.push({
|
|
32
|
+
term: {
|
|
33
|
+
"__type.keyword": createLatestRecordType()
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
else throw new error('Cannot call Elasticsearch query when not setting "published" or "latest".', "OPENSEARCH_UNSUPPORTED_QUERY", {
|
|
37
|
+
where
|
|
38
|
+
});
|
|
39
|
+
delete where.published;
|
|
40
|
+
delete where.latest;
|
|
41
|
+
return query;
|
|
42
|
+
};
|
|
43
|
+
export { createBaseQuery, createInitialQuery };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=initialQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/elasticsearch/initialQuery.js","sources":["../../../../src/operations/entry/elasticsearch/initialQuery.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { OpenSearchBoolQueryConfig } from \"@webiny/api-opensearch/types.js\";\nimport type { CmsEntryListWhere, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { createLatestRecordType, createPublishedRecordType } from \"../recordType.js\";\nimport { isSharedOpenSearchIndex as isSharedElasticsearchIndex } from \"@webiny/api-opensearch\";\n\nexport const createBaseQuery = (): OpenSearchBoolQueryConfig => {\n return {\n must: [],\n must_not: [],\n should: [],\n filter: []\n };\n};\n\ninterface Params {\n model: CmsModel;\n where: CmsEntryListWhere;\n}\n/**\n * Latest and published are specific in Elasticsearch to that extend that they are tagged in the __type property.\n * We allow either published or either latest.\n * Latest is used in the manage API and published in the read API.\n *\n *\n * We add the query.filter terms because we do not need scored search here and it is a bit faster.\n */\nexport const createInitialQuery = (params: Params): OpenSearchBoolQueryConfig => {\n const { model, where } = params;\n\n const query = createBaseQuery();\n\n /**\n * When ES index is shared between tenants, we need to filter records by tenant ID\n *\n * TODO determine if we want to search across tenants in shared index?\n */\n const sharedIndex = isSharedElasticsearchIndex();\n if (sharedIndex) {\n /**\n * Tenant for the filtering is taken from the model.\n *\n * TODO determine if we want to send it in the \"where\" parameter?\n */\n query.filter.push({\n term: {\n \"tenant.keyword\": model.tenant\n }\n });\n /**\n * Also, we must search only in selected model.\n */\n query.filter.push({\n term: {\n \"modelId.keyword\": model.modelId\n }\n });\n }\n\n /**\n * We must transform published and latest where args into something that is understandable by our Elasticsearch\n */\n if (where.published === true) {\n query.filter.push({\n term: {\n \"__type.keyword\": createPublishedRecordType()\n }\n });\n } else if (where.latest === true) {\n query.filter.push({\n term: {\n \"__type.keyword\": createLatestRecordType()\n }\n });\n }\n //\n /**\n * We do not allow filtering without the published or latest parameter.\n * Also, we do not want to set the default one, as there is a large possibility for user error when filtering.\n */\n else {\n throw new WebinyError(\n `Cannot call Elasticsearch query when not setting \"published\" or \"latest\".`,\n \"OPENSEARCH_UNSUPPORTED_QUERY\",\n {\n where\n }\n );\n }\n /**\n * We need to remove fields that actually do not exist on the record - it will break otherwise.\n * This will modify the original object, which is what we want.\n */\n delete where.published;\n delete where.latest;\n\n return query;\n};\n"],"names":["createBaseQuery","createInitialQuery","params","model","where","query","sharedIndex","isSharedElasticsearchIndex","createPublishedRecordType","createLatestRecordType","WebinyError"],"mappings":";;;AAMO,MAAMA,kBAAkB,IACpB;QACH,MAAM,EAAE;QACR,UAAU,EAAE;QACZ,QAAQ,EAAE;QACV,QAAQ,EAAE;IACd;AAeG,MAAMC,qBAAqB,CAACC;IAC/B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGF;IAEzB,MAAMG,QAAQL;IAOd,MAAMM,cAAcC;IACpB,IAAID,aAAa;QAMbD,MAAM,MAAM,CAAC,IAAI,CAAC;YACd,MAAM;gBACF,kBAAkBF,MAAM,MAAM;YAClC;QACJ;QAIAE,MAAM,MAAM,CAAC,IAAI,CAAC;YACd,MAAM;gBACF,mBAAmBF,MAAM,OAAO;YACpC;QACJ;IACJ;IAKA,IAAIC,AAAoB,SAApBA,MAAM,SAAS,EACfC,MAAM,MAAM,CAAC,IAAI,CAAC;QACd,MAAM;YACF,kBAAkBG;QACtB;IACJ;SACG,IAAIJ,AAAiB,SAAjBA,MAAM,MAAM,EACnBC,MAAM,MAAM,CAAC,IAAI,CAAC;QACd,MAAM;YACF,kBAAkBI;QACtB;IACJ;SAQA,MAAM,IAAIC,MACN,6EACA,gCACA;QACIN;IACJ;IAOR,OAAOA,MAAM,SAAS;IACtB,OAAOA,MAAM,MAAM;IAEnB,OAAOC;AACX"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getBaseFieldType } from "@webiny/api-headless-cms/utils/getBaseFieldType.js";
|
|
2
|
+
const noKeywordFields = [
|
|
3
|
+
"date",
|
|
4
|
+
"datetime",
|
|
5
|
+
"number",
|
|
6
|
+
"boolean"
|
|
7
|
+
];
|
|
8
|
+
const hasKeyword = (field)=>{
|
|
9
|
+
const fieldType = getBaseFieldType(field);
|
|
10
|
+
if (noKeywordFields.includes(fieldType)) return false;
|
|
11
|
+
if (field.unmappedType) return false;
|
|
12
|
+
if (false === field.keyword) return false;
|
|
13
|
+
return true;
|
|
14
|
+
};
|
|
15
|
+
export { hasKeyword };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=keyword.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/elasticsearch/keyword.js","sources":["../../../../src/operations/entry/elasticsearch/keyword.ts"],"sourcesContent":["import type { ModelField } from \"./types.js\";\nimport { getBaseFieldType } from \"@webiny/api-headless-cms/utils/getBaseFieldType.js\";\n\nconst noKeywordFields: string[] = [\"date\", \"datetime\", \"number\", \"boolean\"];\nexport const hasKeyword = (field: ModelField): boolean => {\n const fieldType = getBaseFieldType(field);\n /**\n * We defined some field types that MUST have no keyword added to the field path\n */\n if (noKeywordFields.includes(fieldType)) {\n return false;\n }\n /**\n * If field has unmapped type defined, do not add keyword.\n */\n //\n else if (field.unmappedType) {\n return false;\n }\n /**\n * And if specifically defined that field has no keyword, do not add it.\n */\n //\n else if (field.keyword === false) {\n return false;\n }\n /**\n * All other fields have keyword added.\n */\n return true;\n};\n"],"names":["noKeywordFields","hasKeyword","field","fieldType","getBaseFieldType"],"mappings":";AAGA,MAAMA,kBAA4B;IAAC;IAAQ;IAAY;IAAU;CAAU;AACpE,MAAMC,aAAa,CAACC;IACvB,MAAMC,YAAYC,iBAAiBF;IAInC,IAAIF,gBAAgB,QAAQ,CAACG,YACzB,OAAO;IAMN,IAAID,MAAM,YAAY,EACvB,OAAO;IAMN,IAAIA,AAAkB,UAAlBA,MAAM,OAAO,EAClB,OAAO;IAKX,OAAO;AACX"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const IGNORED_ES_SEARCH_EXCEPTIONS = [
|
|
2
|
+
"index_not_found_exception",
|
|
3
|
+
"search_phase_execution_exception"
|
|
4
|
+
];
|
|
5
|
+
const shouldIgnoreEsResponseError = (error)=>IGNORED_ES_SEARCH_EXCEPTIONS.some((ignoredMessage)=>error.message.includes(ignoredMessage));
|
|
6
|
+
export { shouldIgnoreEsResponseError };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=shouldIgnoreEsResponseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/elasticsearch/shouldIgnoreEsResponseError.js","sources":["../../../../src/operations/entry/elasticsearch/shouldIgnoreEsResponseError.ts"],"sourcesContent":["import type WebinyError from \"@webiny/error\";\n\nconst IGNORED_ES_SEARCH_EXCEPTIONS = [\n \"index_not_found_exception\",\n \"search_phase_execution_exception\"\n];\n\nexport const shouldIgnoreEsResponseError = (error: WebinyError) => {\n return IGNORED_ES_SEARCH_EXCEPTIONS.some(ignoredMessage =>\n error.message.includes(ignoredMessage)\n );\n};\n"],"names":["IGNORED_ES_SEARCH_EXCEPTIONS","shouldIgnoreEsResponseError","error","ignoredMessage"],"mappings":"AAEA,MAAMA,+BAA+B;IACjC;IACA;CACH;AAEM,MAAMC,8BAA8B,CAACC,QACjCF,6BAA6B,IAAI,CAACG,CAAAA,iBACrCD,MAAM,OAAO,CAAC,QAAQ,CAACC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { OpenSearchQueryBuilderOperator } from "@webiny/api-opensearch/exports/api/opensearch.js";
|
|
2
|
+
import type { CmsModelField } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* ./fields
|
|
5
|
+
*/
|
|
6
|
+
type ModelFieldPath = string | ((value: string) => string);
|
|
7
|
+
export type FieldType = "text" | "date" | "datetime" | "time" | "number" | "boolean" | string;
|
|
8
|
+
export interface ModelFieldParent {
|
|
9
|
+
fieldId: string;
|
|
10
|
+
storageId: string;
|
|
11
|
+
type: FieldType;
|
|
12
|
+
}
|
|
13
|
+
export interface ModelField {
|
|
14
|
+
unmappedType?: string;
|
|
15
|
+
keyword?: boolean;
|
|
16
|
+
searchable: boolean;
|
|
17
|
+
sortable: boolean;
|
|
18
|
+
type: FieldType;
|
|
19
|
+
systemField?: boolean;
|
|
20
|
+
field: CmsModelField;
|
|
21
|
+
path?: ModelFieldPath;
|
|
22
|
+
fullTextSearch?: boolean;
|
|
23
|
+
parents: ModelFieldParent[];
|
|
24
|
+
}
|
|
25
|
+
export interface ModelFields {
|
|
26
|
+
[fieldId: string]: ModelField;
|
|
27
|
+
}
|
|
28
|
+
export interface OpenSearchQueryBuilderOperators {
|
|
29
|
+
[key: string]: OpenSearchQueryBuilderOperator.Interface;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const createRecordType = ()=>"cms.entry";
|
|
2
|
+
const createLatestRecordType = ()=>`${createRecordType()}.l`;
|
|
3
|
+
const createPublishedRecordType = ()=>`${createRecordType()}.p`;
|
|
4
|
+
export { createLatestRecordType, createPublishedRecordType, createRecordType };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=recordType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/recordType.js","sources":["../../../src/operations/entry/recordType.ts"],"sourcesContent":["export const createRecordType = (): string => {\n return \"cms.entry\";\n};\nexport const createLatestRecordType = (): string => {\n return `${createRecordType()}.l`;\n};\nexport const createPublishedRecordType = (): string => {\n return `${createRecordType()}.p`;\n};\n"],"names":["createRecordType","createLatestRecordType","createPublishedRecordType"],"mappings":"AAAO,MAAMA,mBAAmB,IACrB;AAEJ,MAAMC,yBAAyB,IAC3B,GAAGD,mBAAmB,EAAE,CAAC;AAE7B,MAAME,4BAA4B,IAC9B,GAAGF,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CmsEntry, CmsEntryValues, CmsStorageEntry, StorageOperationsCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { CmsEntryOpenSearchFieldIndexRegistry } from "../../../features/CmsEntryOpenSearchFieldIndex/index.js";
|
|
3
|
+
interface TransformEntryToIndexParams<T extends CmsEntryValues = CmsEntryValues> {
|
|
4
|
+
model: StorageOperationsCmsModel<T>;
|
|
5
|
+
entry: CmsEntry<T>;
|
|
6
|
+
storageEntry: CmsStorageEntry<T>;
|
|
7
|
+
fieldIndexRegistry: CmsEntryOpenSearchFieldIndexRegistry.Interface;
|
|
8
|
+
}
|
|
9
|
+
export declare const transformEntryToIndex: <T extends CmsEntryValues = CmsEntryValues>(params: TransformEntryToIndexParams<T>) => import("../../../types").CmsIndexEntry<T>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { prepareEntryToIndex } from "../../../helpers/index.js";
|
|
2
|
+
const transformEntryToIndex = (params)=>{
|
|
3
|
+
const { model, entry, storageEntry, fieldIndexRegistry } = params;
|
|
4
|
+
const result = prepareEntryToIndex({
|
|
5
|
+
model,
|
|
6
|
+
entry: structuredClone(entry),
|
|
7
|
+
storageEntry: structuredClone(storageEntry),
|
|
8
|
+
fieldIndexRegistry
|
|
9
|
+
});
|
|
10
|
+
delete result["PK"];
|
|
11
|
+
delete result["SK"];
|
|
12
|
+
delete result["GSI1_PK"];
|
|
13
|
+
delete result["GSI1_SK"];
|
|
14
|
+
delete result["published"];
|
|
15
|
+
delete result["latest"];
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
export { transformEntryToIndex };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=transformEntryToIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/transformations/transformEntryToIndex.js","sources":["../../../../src/operations/entry/transformations/transformEntryToIndex.ts"],"sourcesContent":["import type {\n CmsEntry,\n CmsEntryValues,\n CmsStorageEntry,\n StorageOperationsCmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { prepareEntryToIndex } from \"~/helpers/index.js\";\nimport type { CmsEntryOpenSearchFieldIndexRegistry } from \"~/features/CmsEntryOpenSearchFieldIndex/index.js\";\n\ninterface TransformEntryToIndexParams<T extends CmsEntryValues = CmsEntryValues> {\n model: StorageOperationsCmsModel<T>;\n entry: CmsEntry<T>;\n storageEntry: CmsStorageEntry<T>;\n fieldIndexRegistry: CmsEntryOpenSearchFieldIndexRegistry.Interface;\n}\n\nexport const transformEntryToIndex = <T extends CmsEntryValues = CmsEntryValues>(\n params: TransformEntryToIndexParams<T>\n) => {\n const { model, entry, storageEntry, fieldIndexRegistry } = params;\n const result = prepareEntryToIndex<T>({\n model,\n entry: structuredClone(entry),\n storageEntry: structuredClone(storageEntry),\n fieldIndexRegistry\n });\n\n delete result[\"PK\"];\n delete result[\"SK\"];\n delete result[\"GSI1_PK\"];\n delete result[\"GSI1_SK\"];\n delete result[\"published\"];\n delete result[\"latest\"];\n\n return result;\n};\n"],"names":["transformEntryToIndex","params","model","entry","storageEntry","fieldIndexRegistry","result","prepareEntryToIndex","structuredClone"],"mappings":";AAgBO,MAAMA,wBAAwB,CACjCC;IAEA,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,YAAY,EAAEC,kBAAkB,EAAE,GAAGJ;IAC3D,MAAMK,SAASC,oBAAuB;QAClCL;QACA,OAAOM,gBAAgBL;QACvB,cAAcK,gBAAgBJ;QAC9BC;IACJ;IAEA,OAAOC,MAAM,CAAC,KAAK;IACnB,OAAOA,MAAM,CAAC,KAAK;IACnB,OAAOA,MAAM,CAAC,UAAU;IACxB,OAAOA,MAAM,CAAC,UAAU;IACxB,OAAOA,MAAM,CAAC,YAAY;IAC1B,OAAOA,MAAM,CAAC,SAAS;IAEvB,OAAOA;AACX"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@webiny/api-headless-cms-utils-os",
|
|
3
|
+
"version": "6.6.0-alpha.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js",
|
|
7
|
+
"./*": "./*"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/webiny/webiny-js.git",
|
|
12
|
+
"directory": "packages/api-headless-cms-utils-os"
|
|
13
|
+
},
|
|
14
|
+
"description": "Shared OpenSearch query infrastructure for Headless CMS storage packages.",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"author": "Webiny Ltd.",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@webiny/api-headless-cms": "6.6.0-alpha.0",
|
|
19
|
+
"@webiny/api-opensearch": "6.6.0-alpha.0",
|
|
20
|
+
"@webiny/error": "6.6.0-alpha.0",
|
|
21
|
+
"@webiny/feature": "6.6.0-alpha.0"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@webiny/build-tools": "6.6.0-alpha.0",
|
|
25
|
+
"typescript": "7.0.2"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"webiny": {
|
|
31
|
+
"publishFrom": "dist"
|
|
32
|
+
}
|
|
33
|
+
}
|
package/types.d.ts
ADDED
package/types.js
ADDED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values/NoValueContainer.js","sources":["../../src/values/NoValueContainer.ts"],"sourcesContent":["export class NoValueContainer {\n private constructor() {\n //\n }\n\n public static create(): NoValueContainer {\n return new NoValueContainer();\n }\n\n public static is(value: unknown): boolean {\n return value instanceof NoValueContainer;\n }\n}\n"],"names":["NoValueContainer","value"],"mappings":"AAAO,MAAMA;IAKT,OAAc,SAA2B;QACrC,OAAO,IAAIA;IACf;IAEA,OAAc,GAAGC,KAAc,EAAW;QACtC,OAAOA,iBAAiBD;IAC5B;AACJ"}
|