@esri/hub-common 12.13.1 → 12.14.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/esm/search/_internal/commonHelpers/getTopLevelPredicate.js +45 -0
- package/dist/esm/search/_internal/commonHelpers/getTopLevelPredicate.js.map +1 -0
- package/dist/esm/search/_internal/expandPredicate.js +1 -0
- package/dist/esm/search/_internal/expandPredicate.js.map +1 -1
- package/dist/esm/search/_internal/hubSearchItemsHelpers/getQQueryParam.js +3 -28
- package/dist/esm/search/_internal/hubSearchItemsHelpers/getQQueryParam.js.map +1 -1
- package/dist/esm/search/serializeQueryForPortal.js +6 -0
- package/dist/esm/search/serializeQueryForPortal.js.map +1 -1
- package/dist/node/search/_internal/commonHelpers/getTopLevelPredicate.js +49 -0
- package/dist/node/search/_internal/commonHelpers/getTopLevelPredicate.js.map +1 -0
- package/dist/node/search/_internal/expandPredicate.js +1 -0
- package/dist/node/search/_internal/expandPredicate.js.map +1 -1
- package/dist/node/search/_internal/hubSearchItemsHelpers/getQQueryParam.js +5 -31
- package/dist/node/search/_internal/hubSearchItemsHelpers/getQQueryParam.js.map +1 -1
- package/dist/node/search/serializeQueryForPortal.js +6 -0
- package/dist/node/search/serializeQueryForPortal.js.map +1 -1
- package/dist/types/search/_internal/commonHelpers/getTopLevelPredicate.d.ts +20 -0
- package/dist/types/search/_internal/hubSearchItemsHelpers/getQQueryParam.d.ts +1 -2
- package/package.json +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Searches through a list of filters and finds a specific predicate that should be appended at the top level of a search
|
|
3
|
+
* (i.e., has special requirements for combining with other predicates). Also verifies that the predicate is not combined in any invalid ways.
|
|
4
|
+
*
|
|
5
|
+
* Combination Requirements:
|
|
6
|
+
* - Only ONE filter can have a predicate with the target field
|
|
7
|
+
* - Only ONE predicate with the target field can exist
|
|
8
|
+
* - The predicate can only be ANDed to other predicates
|
|
9
|
+
* - The predicate's field value MUST be a string (not string[] or IMatchOptions)
|
|
10
|
+
*
|
|
11
|
+
* Example: Portal's bbox field cannot be conditionally searched. Any value provided will always be applied as a top-level filter.
|
|
12
|
+
* - Valid: `?bbox=1,2,3,4&filter=type:CSV`
|
|
13
|
+
* - Invalid: `?filter=type:CSV OR (type:PDF AND bbox=1,2,3,4)
|
|
14
|
+
*
|
|
15
|
+
* @param field the field of the desired predicate
|
|
16
|
+
* @param filters filters to be searched / validated
|
|
17
|
+
* @returns the predicate (if present and all requirements are met)
|
|
18
|
+
*/
|
|
19
|
+
export function getTopLevelPredicate(field, filters) {
|
|
20
|
+
let result = null;
|
|
21
|
+
const matchingFilters = filters.filter((f) => {
|
|
22
|
+
return f.predicates.find((p) => !!p[field]);
|
|
23
|
+
});
|
|
24
|
+
if (matchingFilters.length > 1) {
|
|
25
|
+
throw new Error(`Only 1 IFilter can have a '${field}' predicate but ${matchingFilters.length} were detected`);
|
|
26
|
+
}
|
|
27
|
+
if (matchingFilters.length) {
|
|
28
|
+
const matchingFilter = matchingFilters[0];
|
|
29
|
+
const matchingPredicates = matchingFilter.predicates.filter((p) => !!p[field]);
|
|
30
|
+
if (matchingPredicates.length > 1) {
|
|
31
|
+
throw new Error(`Only 1 '${field}' predicate is allowed but ${matchingPredicates.length} were detected`);
|
|
32
|
+
}
|
|
33
|
+
if (matchingFilter.operation !== "AND" &&
|
|
34
|
+
matchingFilter.predicates.length > 1) {
|
|
35
|
+
throw new Error(`'${field}' predicates cannot be OR'd to other predicates`);
|
|
36
|
+
}
|
|
37
|
+
const topLevelPredicate = matchingPredicates[0];
|
|
38
|
+
if (typeof topLevelPredicate[field] !== "string") {
|
|
39
|
+
throw new Error(`'${field}' predicate must have a string value, string[] and IMatchOptions are not allowed.`);
|
|
40
|
+
}
|
|
41
|
+
result = topLevelPredicate;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=getTopLevelPredicate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTopLevelPredicate.js","sourceRoot":"","sources":["../../../../../src/search/_internal/commonHelpers/getTopLevelPredicate.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,OAAkB;IAElB,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,MAAM,eAAe,GAAc,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACtD,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9B,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,mBAAmB,eAAe,CAAC,MAAM,gBAAgB,CAC7F,CAAC;KACH;IAED,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1B,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,kBAAkB,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAClB,CAAC;QAEF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,8BAA8B,kBAAkB,CAAC,MAAM,gBAAgB,CACxF,CAAC;SACH;QAED,IACE,cAAc,CAAC,SAAS,KAAK,KAAK;YAClC,cAAc,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EACpC;YACA,MAAM,IAAI,KAAK,CACb,IAAI,KAAK,iDAAiD,CAC3D,CAAC;SACH;QAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YAChD,MAAM,IAAI,KAAK,CACb,IAAI,KAAK,mFAAmF,CAC7F,CAAC;SACH;QACD,MAAM,GAAG,iBAAiB,CAAC;KAC5B;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expandPredicate.js","sourceRoot":"","sources":["../../../../src/search/_internal/expandPredicate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAqB;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,mBAAmB;QACnB,gBAAgB;QAChB,MAAM;QACN,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"expandPredicate.js","sourceRoot":"","sources":["../../../../src/search/_internal/expandPredicate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAqB;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,mBAAmB;QACnB,gBAAgB;QAChB,MAAM;QACN,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;QAChB,MAAM;KACP,CAAC;IACF,MAAM,qBAAqB,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;IAC3D,oBAAoB;IACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACjD,6BAA6B;QAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxC,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;SAClD;QACD,qBAAqB;QACrB,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3B,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,eAAe,EAAE;gBACzD,OAAO,CAAC,GAAG,EAAE,uBAAuB,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;aAC/D;iBAAM;gBACL,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;aACtC;SACF;QACD,6CAA6C;QAC7C,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC5D,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,35 +1,10 @@
|
|
|
1
|
+
import { getTopLevelPredicate } from "../commonHelpers/getTopLevelPredicate";
|
|
1
2
|
// TODO: the 'q' query param logic is only here because the
|
|
2
3
|
// OGC API currently has a bug where 'q' cannot be included
|
|
3
4
|
// in the 'filter' string. Once that bug is resolved, rip this
|
|
4
|
-
// logic out and let predicates with 'term' to be processed
|
|
5
|
-
// normally
|
|
5
|
+
// logic out and let predicates with 'term' to be processed normally
|
|
6
6
|
export function getQQueryParam(query) {
|
|
7
|
-
const
|
|
8
|
-
return f.predicates.find((p) => !!p.term);
|
|
9
|
-
});
|
|
10
|
-
const qPredicate = getQPredicate(qFilters);
|
|
7
|
+
const qPredicate = getTopLevelPredicate("term", query.filters);
|
|
11
8
|
return qPredicate === null || qPredicate === void 0 ? void 0 : qPredicate.term;
|
|
12
9
|
}
|
|
13
|
-
export function getQPredicate(filters) {
|
|
14
|
-
let result;
|
|
15
|
-
if (filters.length > 1) {
|
|
16
|
-
throw new Error(`IQuery can only have 1 IFilter with a 'term' predicate but ${filters.length} were detected`);
|
|
17
|
-
}
|
|
18
|
-
if (filters.length) {
|
|
19
|
-
const filter = filters[0];
|
|
20
|
-
const qPredicates = filter.predicates.filter((p) => !!p.term);
|
|
21
|
-
if (qPredicates.length > 1) {
|
|
22
|
-
throw new Error(`IQuery can only have 1 'term' predicate but ${qPredicates.length} were detected`);
|
|
23
|
-
}
|
|
24
|
-
if (filter.operation !== "AND" && filter.predicates.length > 1) {
|
|
25
|
-
throw new Error(`'term' predicates cannot be OR'd to other predicates`);
|
|
26
|
-
}
|
|
27
|
-
const qPredicate = qPredicates[0];
|
|
28
|
-
if (typeof qPredicate.term !== "string") {
|
|
29
|
-
throw new Error(`'term' predicate must have a string value, string[] and IMatchOptions are not allowed.`);
|
|
30
|
-
}
|
|
31
|
-
result = qPredicate;
|
|
32
|
-
}
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
10
|
//# sourceMappingURL=getQQueryParam.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getQQueryParam.js","sourceRoot":"","sources":["../../../../../src/search/_internal/hubSearchItemsHelpers/getQQueryParam.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getQQueryParam.js","sourceRoot":"","sources":["../../../../../src/search/_internal/hubSearchItemsHelpers/getQQueryParam.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,2DAA2D;AAC3D,2DAA2D;AAC3D,8DAA8D;AAC9D,oEAAoE;AAEpE,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;AAC1B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getTopLevelPredicate } from "./_internal/commonHelpers/getTopLevelPredicate";
|
|
1
2
|
import { expandPredicate } from "./_internal/expandPredicate";
|
|
2
3
|
/**
|
|
3
4
|
* Serialize IQuery into ISearchOptions for ArcGIS Portal
|
|
@@ -9,6 +10,10 @@ export function serializeQueryForPortal(query) {
|
|
|
9
10
|
// remove any empty entries
|
|
10
11
|
const nonEmptyOptions = filterSearchOptions.filter(removeEmptyEntries);
|
|
11
12
|
const result = mergeSearchOptions(nonEmptyOptions, "AND");
|
|
13
|
+
const bboxPredicate = getTopLevelPredicate("bbox", query.filters);
|
|
14
|
+
if (bboxPredicate) {
|
|
15
|
+
result.params = { bbox: bboxPredicate.bbox };
|
|
16
|
+
}
|
|
12
17
|
return result;
|
|
13
18
|
}
|
|
14
19
|
/**
|
|
@@ -71,6 +76,7 @@ function serializePredicate(predicate) {
|
|
|
71
76
|
"searchUserName",
|
|
72
77
|
"categoriesAsParam",
|
|
73
78
|
"categoryFilter",
|
|
79
|
+
"bbox",
|
|
74
80
|
];
|
|
75
81
|
const specialProps = [
|
|
76
82
|
"filterType",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeQueryForPortal.js","sourceRoot":"","sources":["../../../src/search/serializeQueryForPortal.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/D,2BAA2B;IAC3B,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAE1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,CAAM;IAChC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAyB,EACzB,SAAuB;IAEvB,MAAM,MAAM,GAAmB,OAAO,CAAC,MAAM,CAC3C,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,iBAAiB;QACjB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7C,yCAAyC;YACzC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;gBAC5B,wBAAwB;gBACxB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;aAChD;iBAAM;gBACL,+CAA+C;gBAC/C,IAAI,KAAK,KAAK,EAAE,EAAE;oBAChB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBAClB;aACF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CAAC,EAAE,EAAE,EAAE,CACV,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,MAAe;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE1D,MAAM,sBAAsB,GAAG,UAAU;SACtC,GAAG,CAAC,kBAAkB,CAAC;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAEhD,8BAA8B;IAC9B,MAAM,aAAa,GAAG,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAC5E,oDAAoD;IACpD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,aAAa,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC;KAC1C;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AACD;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,SAAqB;IAC/C,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,MAAM,gBAAgB,GAAG;QACvB,kBAAkB;QAClB,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"serializeQueryForPortal.js","sourceRoot":"","sources":["../../../src/search/serializeQueryForPortal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTopLevelPredicate = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Searches through a list of filters and finds a specific predicate that should be appended at the top level of a search
|
|
6
|
+
* (i.e., has special requirements for combining with other predicates). Also verifies that the predicate is not combined in any invalid ways.
|
|
7
|
+
*
|
|
8
|
+
* Combination Requirements:
|
|
9
|
+
* - Only ONE filter can have a predicate with the target field
|
|
10
|
+
* - Only ONE predicate with the target field can exist
|
|
11
|
+
* - The predicate can only be ANDed to other predicates
|
|
12
|
+
* - The predicate's field value MUST be a string (not string[] or IMatchOptions)
|
|
13
|
+
*
|
|
14
|
+
* Example: Portal's bbox field cannot be conditionally searched. Any value provided will always be applied as a top-level filter.
|
|
15
|
+
* - Valid: `?bbox=1,2,3,4&filter=type:CSV`
|
|
16
|
+
* - Invalid: `?filter=type:CSV OR (type:PDF AND bbox=1,2,3,4)
|
|
17
|
+
*
|
|
18
|
+
* @param field the field of the desired predicate
|
|
19
|
+
* @param filters filters to be searched / validated
|
|
20
|
+
* @returns the predicate (if present and all requirements are met)
|
|
21
|
+
*/
|
|
22
|
+
function getTopLevelPredicate(field, filters) {
|
|
23
|
+
let result = null;
|
|
24
|
+
const matchingFilters = filters.filter((f) => {
|
|
25
|
+
return f.predicates.find((p) => !!p[field]);
|
|
26
|
+
});
|
|
27
|
+
if (matchingFilters.length > 1) {
|
|
28
|
+
throw new Error(`Only 1 IFilter can have a '${field}' predicate but ${matchingFilters.length} were detected`);
|
|
29
|
+
}
|
|
30
|
+
if (matchingFilters.length) {
|
|
31
|
+
const matchingFilter = matchingFilters[0];
|
|
32
|
+
const matchingPredicates = matchingFilter.predicates.filter((p) => !!p[field]);
|
|
33
|
+
if (matchingPredicates.length > 1) {
|
|
34
|
+
throw new Error(`Only 1 '${field}' predicate is allowed but ${matchingPredicates.length} were detected`);
|
|
35
|
+
}
|
|
36
|
+
if (matchingFilter.operation !== "AND" &&
|
|
37
|
+
matchingFilter.predicates.length > 1) {
|
|
38
|
+
throw new Error(`'${field}' predicates cannot be OR'd to other predicates`);
|
|
39
|
+
}
|
|
40
|
+
const topLevelPredicate = matchingPredicates[0];
|
|
41
|
+
if (typeof topLevelPredicate[field] !== "string") {
|
|
42
|
+
throw new Error(`'${field}' predicate must have a string value, string[] and IMatchOptions are not allowed.`);
|
|
43
|
+
}
|
|
44
|
+
result = topLevelPredicate;
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
exports.getTopLevelPredicate = getTopLevelPredicate;
|
|
49
|
+
//# sourceMappingURL=getTopLevelPredicate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTopLevelPredicate.js","sourceRoot":"","sources":["../../../../../src/search/_internal/commonHelpers/getTopLevelPredicate.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,oBAAoB,CAClC,KAAa,EACb,OAAkB;IAElB,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,MAAM,eAAe,GAAc,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACtD,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9B,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,mBAAmB,eAAe,CAAC,MAAM,gBAAgB,CAC7F,CAAC;KACH;IAED,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1B,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,kBAAkB,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAClB,CAAC;QAEF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,8BAA8B,kBAAkB,CAAC,MAAM,gBAAgB,CACxF,CAAC;SACH;QAED,IACE,cAAc,CAAC,SAAS,KAAK,KAAK;YAClC,cAAc,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EACpC;YACA,MAAM,IAAI,KAAK,CACb,IAAI,KAAK,iDAAiD,CAC3D,CAAC;SACH;QAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YAChD,MAAM,IAAI,KAAK,CACb,IAAI,KAAK,mFAAmF,CAC7F,CAAC;SACH;QACD,MAAM,GAAG,iBAAiB,CAAC;KAC5B;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA/CD,oDA+CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expandPredicate.js","sourceRoot":"","sources":["../../../../src/search/_internal/expandPredicate.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAyC;AAEzC,oCAAwE;AAExE;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,SAAqB;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,mBAAmB;QACnB,gBAAgB;QAChB,MAAM;QACN,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"expandPredicate.js","sourceRoot":"","sources":["../../../../src/search/_internal/expandPredicate.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAyC;AAEzC,oCAAwE;AAExE;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,SAAqB;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,mBAAmB;QACnB,gBAAgB;QAChB,MAAM;QACN,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;QAChB,MAAM;KACP,CAAC;IACF,MAAM,qBAAqB,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;IAC3D,oBAAoB;IACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACjD,6BAA6B;QAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxC,iBAAO,CAAC,GAAG,EAAE,2BAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;SAClD;QACD,qBAAqB;QACrB,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3B,MAAM,cAAc,GAAG,kBAAW,CAAC,iBAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,iBAAO,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,eAAe,EAAE;gBACzD,iBAAO,CAAC,GAAG,EAAE,+BAAuB,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;aAC/D;iBAAM;gBACL,iBAAO,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;aACtC;SACF;QACD,6CAA6C;QAC7C,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC5D,iBAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAnCD,0CAmCC"}
|
|
@@ -1,40 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getQQueryParam = void 0;
|
|
4
|
+
const getTopLevelPredicate_1 = require("../commonHelpers/getTopLevelPredicate");
|
|
2
5
|
// TODO: the 'q' query param logic is only here because the
|
|
3
6
|
// OGC API currently has a bug where 'q' cannot be included
|
|
4
7
|
// in the 'filter' string. Once that bug is resolved, rip this
|
|
5
|
-
// logic out and let predicates with 'term' to be processed
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.getQPredicate = exports.getQQueryParam = void 0;
|
|
8
|
-
// normally
|
|
8
|
+
// logic out and let predicates with 'term' to be processed normally
|
|
9
9
|
function getQQueryParam(query) {
|
|
10
|
-
const
|
|
11
|
-
return f.predicates.find((p) => !!p.term);
|
|
12
|
-
});
|
|
13
|
-
const qPredicate = getQPredicate(qFilters);
|
|
10
|
+
const qPredicate = getTopLevelPredicate_1.getTopLevelPredicate("term", query.filters);
|
|
14
11
|
return qPredicate === null || qPredicate === void 0 ? void 0 : qPredicate.term;
|
|
15
12
|
}
|
|
16
13
|
exports.getQQueryParam = getQQueryParam;
|
|
17
|
-
function getQPredicate(filters) {
|
|
18
|
-
let result;
|
|
19
|
-
if (filters.length > 1) {
|
|
20
|
-
throw new Error(`IQuery can only have 1 IFilter with a 'term' predicate but ${filters.length} were detected`);
|
|
21
|
-
}
|
|
22
|
-
if (filters.length) {
|
|
23
|
-
const filter = filters[0];
|
|
24
|
-
const qPredicates = filter.predicates.filter((p) => !!p.term);
|
|
25
|
-
if (qPredicates.length > 1) {
|
|
26
|
-
throw new Error(`IQuery can only have 1 'term' predicate but ${qPredicates.length} were detected`);
|
|
27
|
-
}
|
|
28
|
-
if (filter.operation !== "AND" && filter.predicates.length > 1) {
|
|
29
|
-
throw new Error(`'term' predicates cannot be OR'd to other predicates`);
|
|
30
|
-
}
|
|
31
|
-
const qPredicate = qPredicates[0];
|
|
32
|
-
if (typeof qPredicate.term !== "string") {
|
|
33
|
-
throw new Error(`'term' predicate must have a string value, string[] and IMatchOptions are not allowed.`);
|
|
34
|
-
}
|
|
35
|
-
result = qPredicate;
|
|
36
|
-
}
|
|
37
|
-
return result;
|
|
38
|
-
}
|
|
39
|
-
exports.getQPredicate = getQPredicate;
|
|
40
14
|
//# sourceMappingURL=getQQueryParam.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getQQueryParam.js","sourceRoot":"","sources":["../../../../../src/search/_internal/hubSearchItemsHelpers/getQQueryParam.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"getQQueryParam.js","sourceRoot":"","sources":["../../../../../src/search/_internal/hubSearchItemsHelpers/getQQueryParam.ts"],"names":[],"mappings":";;;AACA,gFAA6E;AAE7E,2DAA2D;AAC3D,2DAA2D;AAC3D,8DAA8D;AAC9D,oEAAoE;AAEpE,SAAgB,cAAc,CAAC,KAAa;IAC1C,MAAM,UAAU,GAAG,2CAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;AAC1B,CAAC;AAHD,wCAGC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.serializeQueryForPortal = void 0;
|
|
4
|
+
const getTopLevelPredicate_1 = require("./_internal/commonHelpers/getTopLevelPredicate");
|
|
4
5
|
const expandPredicate_1 = require("./_internal/expandPredicate");
|
|
5
6
|
/**
|
|
6
7
|
* Serialize IQuery into ISearchOptions for ArcGIS Portal
|
|
@@ -12,6 +13,10 @@ function serializeQueryForPortal(query) {
|
|
|
12
13
|
// remove any empty entries
|
|
13
14
|
const nonEmptyOptions = filterSearchOptions.filter(removeEmptyEntries);
|
|
14
15
|
const result = mergeSearchOptions(nonEmptyOptions, "AND");
|
|
16
|
+
const bboxPredicate = getTopLevelPredicate_1.getTopLevelPredicate("bbox", query.filters);
|
|
17
|
+
if (bboxPredicate) {
|
|
18
|
+
result.params = { bbox: bboxPredicate.bbox };
|
|
19
|
+
}
|
|
15
20
|
return result;
|
|
16
21
|
}
|
|
17
22
|
exports.serializeQueryForPortal = serializeQueryForPortal;
|
|
@@ -75,6 +80,7 @@ function serializePredicate(predicate) {
|
|
|
75
80
|
"searchUserName",
|
|
76
81
|
"categoriesAsParam",
|
|
77
82
|
"categoryFilter",
|
|
83
|
+
"bbox",
|
|
78
84
|
];
|
|
79
85
|
const specialProps = [
|
|
80
86
|
"filterType",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeQueryForPortal.js","sourceRoot":"","sources":["../../../src/search/serializeQueryForPortal.ts"],"names":[],"mappings":";;;AAQA,iEAA8D;AAE9D;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAa;IACnD,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/D,2BAA2B;IAC3B,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAE1D,OAAO,MAAM,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"serializeQueryForPortal.js","sourceRoot":"","sources":["../../../src/search/serializeQueryForPortal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IFilter, IPredicate } from "../../types/IHubCatalog";
|
|
2
|
+
/**
|
|
3
|
+
* Searches through a list of filters and finds a specific predicate that should be appended at the top level of a search
|
|
4
|
+
* (i.e., has special requirements for combining with other predicates). Also verifies that the predicate is not combined in any invalid ways.
|
|
5
|
+
*
|
|
6
|
+
* Combination Requirements:
|
|
7
|
+
* - Only ONE filter can have a predicate with the target field
|
|
8
|
+
* - Only ONE predicate with the target field can exist
|
|
9
|
+
* - The predicate can only be ANDed to other predicates
|
|
10
|
+
* - The predicate's field value MUST be a string (not string[] or IMatchOptions)
|
|
11
|
+
*
|
|
12
|
+
* Example: Portal's bbox field cannot be conditionally searched. Any value provided will always be applied as a top-level filter.
|
|
13
|
+
* - Valid: `?bbox=1,2,3,4&filter=type:CSV`
|
|
14
|
+
* - Invalid: `?filter=type:CSV OR (type:PDF AND bbox=1,2,3,4)
|
|
15
|
+
*
|
|
16
|
+
* @param field the field of the desired predicate
|
|
17
|
+
* @param filters filters to be searched / validated
|
|
18
|
+
* @returns the predicate (if present and all requirements are met)
|
|
19
|
+
*/
|
|
20
|
+
export declare function getTopLevelPredicate(field: string, filters: IFilter[]): IPredicate;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IQuery } from "../../types/IHubCatalog";
|
|
2
2
|
export declare function getQQueryParam(query: IQuery): any;
|
|
3
|
-
export declare function getQPredicate(filters: IFilter[]): import("../../types/IHubCatalog").IPredicate;
|