aws-service-stack 0.18.398 → 0.18.400
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opensearch.parser.aggs.js","sourceRoot":"","sources":["../../../src/utils/opensearch/opensearch.parser.aggs.ts"],"names":[],"mappings":";AAAA,wCAAwC;AACxC,4CAA4C;AAC5C,wCAAwC;;AAaxC,
|
|
1
|
+
{"version":3,"file":"opensearch.parser.aggs.js","sourceRoot":"","sources":["../../../src/utils/opensearch/opensearch.parser.aggs.ts"],"names":[],"mappings":"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","sourcesContent":["// =====================================\n// AGG BUILDER (MULTI ROOT + 1 SUB PER ROOT)\n// =====================================\n\nimport { AggTypeOS } from \"@chinggis/types\";\n\nexport interface AggInstruction {\n type: AggTypeOS;\n field: string;\n sub?: string; // only for agg__xxx__sub\n}\n\n// ----------------------------\n// Parse aggregations\n// ----------------------------\nexport function buildAggregations(params: Record<string, string>): AggInstruction[] {\n const instructions: AggInstruction[] = [];\n\n for (const [key, value] of Object.entries(params)) {\n if (!key.startsWith(\"agg__\")) continue;\n\n const parts = key.split(\"__\"); // [\"agg\", \"terms\", \"sub\"?]\n const type = parts[1] as AggTypeOS;\n\n if (!Object.values(AggTypeOS).includes(type)) continue;\n\n // root = agg__terms=status\n if (parts.length === 2) {\n instructions.push({\n type,\n field: value,\n });\n continue;\n }\n\n // sub = agg__terms__sub=customerId\n if (parts.length === 3 && parts[2] === \"sub\") {\n // attach to last root\n const lastRoot = instructions.find((i) => i.type === type && !i.sub);\n\n if (lastRoot) lastRoot.sub = value;\n continue;\n } else {\n instructions.push({\n type,\n field: value,\n });\n continue;\n }\n }\n\n return buildNativeOSQuery(instructions);\n}\n\n// ----------------------------\n// Build ES agg object\n// ----------------------------\nfunction buildQuery(type: AggTypeOS, field: string) {\n if (type === AggTypeOS.TERMS)\n return {\n [AggTypeOS.TERMS]: { size: 1000, field: field },\n };\n\n if (type === AggTypeOS.TREE) return buildTreeQuery(field);\n return { [type]: { field: field } };\n}\n\n// ----------------------------\n// Build final aggregations\n// ----------------------------\nexport function buildNativeOSQuery(instructions: AggInstruction[]) {\n const aggs: any = {};\n\n for (const inst of instructions) {\n let aggName = inst.type === AggTypeOS.TERMS ? inst.field : `${inst.field}`;\n\n if (inst.type === AggTypeOS.TREE) {\n aggName = inst.field.split(\",\")[0];\n }\n\n aggs[aggName] = buildQuery(inst.type, inst.field);\n\n if (inst.sub && aggs[aggName]) {\n aggs[aggName].aggs = {\n [inst.sub]: buildQuery(inst.type, inst.sub),\n };\n }\n }\n\n return aggs;\n}\n\nfunction buildTreeQuery(tree: string) {\n let include = \".*\\\\/.*\";\n let exclude = \".*\\\\/.*\\\\/.*\";\n const [field, treeValue] = tree.split(\",\");\n\n if (treeValue) {\n let level = treeValue.split(\"/\").length;\n include = treeValue + include;\n\n if (level > 1) {\n include = treeValue + \".*\\\\/.*\";\n exclude = \"\";\n }\n\n return {\n terms: {\n field: `${field}.tree`,\n include: include,\n exclude: exclude,\n size: 300,\n },\n };\n } else {\n return {\n terms: {\n field: `${field}.tree`,\n exclude: exclude,\n size: 300,\n },\n };\n }\n}\n"]}
|
|
@@ -15,7 +15,7 @@ exports.boolQueryMap = {
|
|
|
15
15
|
exists: (field, value) => buildExistsFilter(field, value),
|
|
16
16
|
regex: (field, value) => buildRegexpFilter(field, value),
|
|
17
17
|
prefix: (field, value) => buildPrefixFilter(field, value),
|
|
18
|
-
not_prefix: (field, value) => ({ query:
|
|
18
|
+
not_prefix: (field, value) => ({ query: buildNotPrefixFilter(field, value), negation: true }),
|
|
19
19
|
contains: (field, value) => buildContainsFilter(field, value),
|
|
20
20
|
not_contains: (field, value) => ({ query: buildContainsFilter(field, value), negation: true }),
|
|
21
21
|
wildcard: (field, value) => buildWildcardFilter(field, value),
|
|
@@ -50,6 +50,9 @@ function buildRegexpFilter(field, value) {
|
|
|
50
50
|
function buildPrefixFilter(field, value) {
|
|
51
51
|
return { prefix: { [`${field}.keyword`]: value } };
|
|
52
52
|
}
|
|
53
|
+
function buildNotPrefixFilter(field, value) {
|
|
54
|
+
return { match_phrase: { [`${field}`]: value } };
|
|
55
|
+
}
|
|
53
56
|
// Contains: substring match anywhere in the value (categoryPaths__contains)
|
|
54
57
|
function buildContainsFilter(field, value) {
|
|
55
58
|
return { wildcard: { [`${field}.keyword`]: { value: `*${value}*`, case_insensitive: true } } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opensearch.parser.query.map.js","sourceRoot":"","sources":["../../../src/utils/opensearch/opensearch.parser.query.map.ts"],"names":[],"mappings":";;;AAAA,2CAA+D;AAE/D,mDAAmD;AACtC,QAAA,YAAY,GAGrB;IACF,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;IACnD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChF,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;IACpD,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClF,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;IAC1F,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;IAC1F,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;IACxF,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;IACxF,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;IACzD,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;IACxD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;IACzD,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"opensearch.parser.query.map.js","sourceRoot":"","sources":["../../../src/utils/opensearch/opensearch.parser.query.map.ts"],"names":[],"mappings":"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","sourcesContent":["import { BoolQueryTypeOS, RangeTypeOS } from \"@chinggis/types\";\n\n// ---------------- Bool Query Map ----------------\nexport const boolQueryMap: Record<\n BoolQueryTypeOS,\n (field: string, value: string, existing?: Record<string, any>) => { query: any; negation?: boolean } | any\n> = {\n eq: (field, value) => buildTermFilter(field, value),\n ne: (field, value) => ({ query: buildTermFilter(field, value), negation: true }),\n in: (field, value) => buildTermsFilter(field, value),\n nin: (field, value) => ({ query: buildTermsFilter(field, value), negation: true }),\n gte: (field, value, existing) => buildRangeFilter(field, value, RangeTypeOS.gte, existing),\n lte: (field, value, existing) => buildRangeFilter(field, value, RangeTypeOS.lte, existing),\n gt: (field, value, existing) => buildRangeFilter(field, value, RangeTypeOS.gt, existing),\n lt: (field, value, existing) => buildRangeFilter(field, value, RangeTypeOS.lt, existing),\n exists: (field, value) => buildExistsFilter(field, value),\n regex: (field, value) => buildRegexpFilter(field, value),\n prefix: (field, value) => buildPrefixFilter(field, value),\n not_prefix: (field, value) => ({ query: buildNotPrefixFilter(field, value), negation: true }),\n contains: (field, value) => buildContainsFilter(field, value),\n not_contains: (field, value) => ({ query: buildContainsFilter(field, value), negation: true }),\n wildcard: (field, value) => buildWildcardFilter(field, value),\n not_wildcard: (field, value) => ({ query: buildWildcardFilter(field, value), negation: true }),\n fuzzy: (field, value) => buildFuzzyFilter(field, value),\n};\n\n// ---------------- Operator Functions ----------------\nfunction buildTermFilter(field: string, value: string) {\n return { term: { [field]: value } };\n}\n\nfunction buildTermsFilter(field: string, value: string) {\n return { terms: { [field]: value.split(\",\") } };\n}\n\nfunction buildRangeFilter(field: string, value: string, operator: RangeTypeOS, existing?: Record<string, any>) {\n const val = isNaN(Number(value)) ? value : Number(value);\n return {\n range: {\n [field]: {\n ...(existing?.[field] || {}),\n [operator]: val,\n },\n },\n };\n}\n\nfunction buildExistsFilter(field: string, value: string | boolean) {\n return { query: { exists: { field } }, negation: value === \"false\" || value === false };\n}\n\nfunction buildRegexpFilter(field: string, value: string) {\n return { regexp: { [field]: value } };\n}\n\n// Prefix: startsWith — used for tree path hierarchy (categoryPaths__prefix)\nfunction buildPrefixFilter(field: string, value: string) {\n return { prefix: { [`${field}.keyword`]: value } };\n}\n\nfunction buildNotPrefixFilter(field: string, value: string) {\n return { match_phrase: { [`${field}`]: value } };\n}\n\n// Contains: substring match anywhere in the value (categoryPaths__contains)\nfunction buildContainsFilter(field: string, value: string) {\n return { wildcard: { [`${field}.keyword`]: { value: `*${value}*`, case_insensitive: true } } };\n}\n\n// Wildcard: user-supplied pattern with * and ? (field__wildcard: \"ном*уран?охиол\")\nfunction buildWildcardFilter(field: string, value: string) {\n return { wildcard: { [`${field}.keyword`]: { value, case_insensitive: true } } };\n}\n\n// Fuzzy: approximate/typo-tolerant match (field__fuzzy: \"ураnзохиол\")\nfunction buildFuzzyFilter(field: string, value: string) {\n return { fuzzy: { [field]: { value, fuzziness: \"AUTO\", prefix_length: 1 } } };\n}\n"]}
|