@esri/hub-common 9.45.5 → 9.45.6

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.
Files changed (41) hide show
  1. package/dist/es2017/search/_internal/portalSearchGroups.js +1 -1
  2. package/dist/es2017/search/_internal/portalSearchGroups.js.map +1 -1
  3. package/dist/es2017/search/_internal/portalSearchItems.js +1 -1
  4. package/dist/es2017/search/_internal/portalSearchItems.js.map +1 -1
  5. package/dist/es2017/search/_internal/portalSearchUsers.js +1 -1
  6. package/dist/es2017/search/_internal/portalSearchUsers.js.map +1 -1
  7. package/dist/es2017/search/index.js +1 -1
  8. package/dist/es2017/search/index.js.map +1 -1
  9. package/dist/es2017/search/{ifilter-utils.js → serializeQueryForPortal.js} +37 -13
  10. package/dist/es2017/search/serializeQueryForPortal.js.map +1 -0
  11. package/dist/esm/search/_internal/portalSearchGroups.js +1 -1
  12. package/dist/esm/search/_internal/portalSearchGroups.js.map +1 -1
  13. package/dist/esm/search/_internal/portalSearchItems.js +1 -1
  14. package/dist/esm/search/_internal/portalSearchItems.js.map +1 -1
  15. package/dist/esm/search/_internal/portalSearchUsers.js +1 -1
  16. package/dist/esm/search/_internal/portalSearchUsers.js.map +1 -1
  17. package/dist/esm/search/index.js +1 -1
  18. package/dist/esm/search/index.js.map +1 -1
  19. package/dist/esm/search/{ifilter-utils.js → serializeQueryForPortal.js} +37 -13
  20. package/dist/esm/search/serializeQueryForPortal.js.map +1 -0
  21. package/dist/node/search/_internal/portalSearchGroups.js +2 -2
  22. package/dist/node/search/_internal/portalSearchGroups.js.map +1 -1
  23. package/dist/node/search/_internal/portalSearchItems.js +2 -2
  24. package/dist/node/search/_internal/portalSearchItems.js.map +1 -1
  25. package/dist/node/search/_internal/portalSearchUsers.js +2 -2
  26. package/dist/node/search/_internal/portalSearchUsers.js.map +1 -1
  27. package/dist/node/search/index.js +1 -1
  28. package/dist/node/search/index.js.map +1 -1
  29. package/dist/node/search/{ifilter-utils.js → serializeQueryForPortal.js} +37 -13
  30. package/dist/node/search/serializeQueryForPortal.js.map +1 -0
  31. package/dist/types/search/index.d.ts +1 -1
  32. package/dist/types/search/{ifilter-utils.d.ts → serializeQueryForPortal.d.ts} +5 -0
  33. package/dist/types/search/types/IHubAggregation.d.ts +9 -0
  34. package/dist/types/search/types/IHubSearchOptions.d.ts +18 -8
  35. package/dist/types/search/types/IHubSearchResponse.d.ts +18 -0
  36. package/dist/umd/common.umd.js +37 -13
  37. package/dist/umd/common.umd.js.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/es2017/search/ifilter-utils.js.map +0 -1
  40. package/dist/esm/search/ifilter-utils.js.map +0 -1
  41. package/dist/node/search/ifilter-utils.js.map +0 -1
@@ -2,24 +2,41 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serializeQueryForPortal = void 0;
4
4
  const ipredicate_utils_1 = require("./_internal/ipredicate-utils");
5
+ /**
6
+ * Serialize IQuery into ISearchOptions for ArcGIS Portal
7
+ * @param query
8
+ * @returns
9
+ */
5
10
  function serializeQueryForPortal(query) {
6
11
  const filterSearchOptions = query.filters.map(serializeFilter);
7
- const result = mergeSearchOptions(filterSearchOptions, "AND");
12
+ // remove any empty entries
13
+ const nonEmptyOptions = filterSearchOptions.filter(removeEmptyEntries);
14
+ const result = mergeSearchOptions(nonEmptyOptions, "AND");
8
15
  return result;
9
16
  }
10
17
  exports.serializeQueryForPortal = serializeQueryForPortal;
18
+ /**
19
+ * Predicate to remove things from array
20
+ * @param e
21
+ * @returns
22
+ */
23
+ function removeEmptyEntries(e) {
24
+ return !(typeof e === "undefined" || e === null || e === "");
25
+ }
11
26
  function mergeSearchOptions(options, operation) {
12
27
  const result = options.reduce((acc, entry) => {
13
28
  // walk the props
14
29
  Object.entries(entry).forEach(([key, value]) => {
15
- // if prop exists
16
- if (acc[key]) {
30
+ // if prop exists and is not empty string
31
+ if (acc[key] && value !== "") {
17
32
  // combine via operation
18
33
  acc[key] = `${acc[key]} ${operation} ${value}`;
19
34
  }
20
35
  else {
21
- // just copy the value
22
- acc[key] = value;
36
+ // just copy the value if it's not empty string
37
+ if (value !== "") {
38
+ acc[key] = value;
39
+ }
23
40
  }
24
41
  });
25
42
  return acc;
@@ -34,7 +51,9 @@ function mergeSearchOptions(options, operation) {
34
51
  function serializeFilter(filter) {
35
52
  const operation = filter.operation || "AND";
36
53
  const predicates = filter.predicates.map(ipredicate_utils_1.expandPredicate);
37
- const predicateSearchOptions = predicates.map(serializePredicate);
54
+ const predicateSearchOptions = predicates
55
+ .map(serializePredicate)
56
+ .filter((e) => e !== undefined && e !== null);
38
57
  // combine these searchOptions
39
58
  const searchOptions = mergeSearchOptions(predicateSearchOptions, operation);
40
59
  // wrap in parens if we have more than one predicate
@@ -104,7 +123,7 @@ function serializePredicate(predicate) {
104
123
  // not attempt to ensure the properties are used in the correct combinations
105
124
  if (portalAllowList.includes(key)) {
106
125
  const so = { q: "" };
107
- if (!specialProps.includes(key)) {
126
+ if (!specialProps.includes(key) && key !== "term") {
108
127
  qCount++;
109
128
  so.q = serializeMatchOptions(key, value);
110
129
  }
@@ -126,13 +145,18 @@ function serializePredicate(predicate) {
126
145
  return so;
127
146
  }
128
147
  })
129
- .filter((e) => e !== undefined);
148
+ .filter(removeEmptyEntries);
130
149
  // merge up all the searchOptions
131
- const searchOptions = mergeSearchOptions(opts, "AND");
132
- if (qCount > 1) {
133
- searchOptions.q = `(${searchOptions.q})`;
150
+ if (opts.length) {
151
+ const searchOptions = mergeSearchOptions(opts, "AND");
152
+ if (qCount > 1) {
153
+ searchOptions.q = `(${searchOptions.q})`;
154
+ }
155
+ return searchOptions;
156
+ }
157
+ else {
158
+ return null;
134
159
  }
135
- return searchOptions;
136
160
  }
137
161
  /**
138
162
  * Serialize MatchOptions into portal syntax
@@ -187,4 +211,4 @@ function serializeStringOrArray(join, key, value) {
187
211
  }
188
212
  return q;
189
213
  }
190
- //# sourceMappingURL=ifilter-utils.js.map
214
+ //# sourceMappingURL=serializeQueryForPortal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeQueryForPortal.js","sourceRoot":"","sources":["../../../src/search/serializeQueryForPortal.ts"],"names":[],"mappings":";;;AAQA,mEAA+D;AAE/D;;;;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;AAPD,0DAOC;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,kCAAe,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,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG;QACnB,YAAY;QACZ,MAAM;QACN,GAAG,SAAS;QACZ,GAAG,SAAS;QACZ,GAAG,gBAAgB;KACpB,CAAC;IACF,MAAM,eAAe,GAAG;QACtB,QAAQ;QACR,YAAY;QACZ,SAAS;QACT,aAAa;QACb,UAAU;QACV,OAAO;QACP,aAAa;QACb,WAAW;QACX,UAAU;QACV,OAAO;QACP,IAAI;QACJ,kBAAkB;QAClB,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,UAAU;QACV,YAAY;QACZ,UAAU;QACV,MAAM;QACN,OAAO;QACP,QAAQ;QACR,OAAO;QACP,UAAU;QACV,MAAM;QACN,kBAAkB;QAClB,gBAAgB;QAChB,SAAS;QACT,MAAM;QACN,MAAM;QACN,OAAO;QACP,MAAM;QACN,cAAc;QACd,iBAAiB;QACjB,UAAU;KACX,CAAC;IACF,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,8DAA8D;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpB,+DAA+D;QAC/D,oEAAoE;QACpE,4EAA4E;QAC5E,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACjC,MAAM,EAAE,GAAmB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,MAAM,EAAE;gBACjD,MAAM,EAAE,CAAC;gBACT,EAAE,CAAC,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC1C;YACD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,MAAM,EAAE,CAAC;gBACT,EAAE,CAAC,CAAC,GAAG,kBAAkB,CACvB,GAAG,EACH,KAAsC,CACvC,CAAC;aACH;YACD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,MAAM,EAAE,CAAC;gBACT,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aAC1B;YACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAClC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACjB;YACD,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,MAAM,EAAE,CAAC;gBACT,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;aACd;YACD,OAAO,EAAE,CAAC;SACX;IACH,CAAC,CAAC;SACD,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE9B,iCAAiC;IACjC,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,aAAa,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC;SAC1C;QACD,OAAO,aAAa,CAAC;KACtB;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,GAAW,EAAE,KAAoB;IAC9D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,CAAC,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;KAC5D;IACD,IAAI,KAAK,CAAC,GAAG,EAAE;QACb,MAAM;YACJ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,GAAG,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;KACtD;IACD,IAAI,KAAK,CAAC,GAAG,EAAE;QACb,qCAAqC;QACrC,MAAM;YACJ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;KAC3D;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,GAAW,EAAE,KAAyB;IAChE,OAAO,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAC7B,IAAkB,EAClB,GAAW,EACX,KAAwB;IAExB,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,CAAC,GAAG,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;SACd;KACF;SAAM;QACL,CAAC,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC;KACzB;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -10,5 +10,5 @@ export * from "./types";
10
10
  export * from "./collectionState";
11
11
  export * from "./convertCatalog";
12
12
  export * from "./filter-utils";
13
- export * from "./ifilter-utils";
13
+ export * from "./serializeQueryForPortal";
14
14
  export * from "./hubSearch";
@@ -1,3 +1,8 @@
1
1
  import { ISearchOptions } from "@esri/arcgis-rest-portal";
2
2
  import { IQuery } from "./types";
3
+ /**
4
+ * Serialize IQuery into ISearchOptions for ArcGIS Portal
5
+ * @param query
6
+ * @returns
7
+ */
3
8
  export declare function serializeQueryForPortal(query: IQuery): ISearchOptions;
@@ -2,8 +2,17 @@
2
2
  * Structure for Search Aggregations in ArcGIS Hub
3
3
  */
4
4
  export interface IHubAggregation {
5
+ /**
6
+ * What type of aggregation is returned
7
+ */
5
8
  mode: string;
9
+ /**
10
+ * Field the aggregation was creatd for
11
+ */
6
12
  field: string;
13
+ /**
14
+ * Array of the field values and counts
15
+ */
7
16
  values: Array<{
8
17
  value: any;
9
18
  count: number;
@@ -16,11 +16,11 @@ export interface IHubSearchOptions {
16
16
  */
17
17
  aggLimit?: number;
18
18
  /**
19
- * Deprecate in favor of context
19
+ * Specify API to call. Defaults to ArcGIS Online Portal API
20
20
  */
21
21
  api?: NamedApis | IApiDefinition;
22
22
  /**
23
- * TODO: Deprecate in requestOptions
23
+ * DEPRECATE in favor of requestOptions
24
24
  */
25
25
  authentication?: UserSession;
26
26
  /**
@@ -30,15 +30,16 @@ export interface IHubSearchOptions {
30
30
  * hubSearch
31
31
  */
32
32
  requestOptions?: IHubRequestOptions;
33
+ /**
34
+ * Bounding box for the search (NOT IMPLEMENTED)
35
+ */
33
36
  bbox?: string;
34
37
  /**
35
- * Objects or fields to include
36
- * e.g. `server.layers AS serverLayers`
38
+ * Objects or fields to include e.g. `server.layers AS serverLayers`
37
39
  */
38
40
  include?: string[];
39
41
  /**
40
- * Enrichments
41
- * Deprecated in favor of `include`
42
+ * DEPRECATED: Use `include` instead
42
43
  */
43
44
  enrichments?: Enrichments[];
44
45
  /**
@@ -46,7 +47,7 @@ export interface IHubSearchOptions {
46
47
  */
47
48
  num?: number;
48
49
  /**
49
- * What page of results to return
50
+ * LEGACY. Use `start` and `num` instead
50
51
  */
51
52
  page?: string;
52
53
  /**
@@ -58,10 +59,19 @@ export interface IHubSearchOptions {
58
59
  */
59
60
  sortOrder?: "desc" | "asc";
60
61
  /**
61
- * TODO: Determine if this is used or can be removed
62
+ * The result number of the first entry in the result set response. The start parameter, along with the num parameter, can be used to paginate the search results.
62
63
  */
63
64
  start?: number;
65
+ /**
66
+ * DEPRECATED
67
+ */
64
68
  aggregations?: string[];
69
+ /**
70
+ * DEPRECATED
71
+ */
65
72
  site?: IModel;
73
+ /**
74
+ * DEPRECATED
75
+ */
66
76
  fields?: string;
67
77
  }
@@ -10,10 +10,28 @@ import { IHubAggregation } from "./IHubAggregation";
10
10
  * next - invokable function for obtaining next page of results
11
11
  */
12
12
  export interface IHubSearchResponse<T> {
13
+ /**
14
+ * Total number of matches for the query
15
+ */
13
16
  total: number;
17
+ /**
18
+ * Array if results
19
+ */
14
20
  results: T[];
21
+ /**
22
+ * Can more results be fetched?
23
+ */
15
24
  hasNext: boolean;
25
+ /**
26
+ * Function that fetches the next page of results
27
+ */
16
28
  next: (params?: any) => Promise<IHubSearchResponse<T>>;
29
+ /**
30
+ * Array of requested aggregations
31
+ */
17
32
  aggregations?: IHubAggregation[];
33
+ /**
34
+ * DEPRECATED - hub.js no longer computes facets; consumers need to construct them from aggregations
35
+ */
18
36
  facets?: IFacet[];
19
37
  }
@@ -1,5 +1,5 @@
1
1
  /* @preserve
2
- * @esri/hub-common - v9.45.4 - Fri Jul 01 2022 18:05:06 GMT+0000 (Coordinated Universal Time)
2
+ * @esri/hub-common - v9.45.5 - Thu Jul 07 2022 20:50:46 GMT+0000 (Coordinated Universal Time)
3
3
  * Copyright (c) 2022 Environmental Systems Research Institute, Inc.
4
4
  * Apache-2.0
5
5
  */
@@ -15042,24 +15042,41 @@
15042
15042
  return result;
15043
15043
  }
15044
15044
 
15045
+ /**
15046
+ * Serialize IQuery into ISearchOptions for ArcGIS Portal
15047
+ * @param query
15048
+ * @returns
15049
+ */
15045
15050
  function serializeQueryForPortal(query) {
15046
15051
  var filterSearchOptions = query.filters.map(serializeFilter);
15047
- var result = mergeSearchOptions(filterSearchOptions, "AND");
15052
+ // remove any empty entries
15053
+ var nonEmptyOptions = filterSearchOptions.filter(removeEmptyEntries);
15054
+ var result = mergeSearchOptions(nonEmptyOptions, "AND");
15048
15055
  return result;
15049
15056
  }
15057
+ /**
15058
+ * Predicate to remove things from array
15059
+ * @param e
15060
+ * @returns
15061
+ */
15062
+ function removeEmptyEntries(e) {
15063
+ return !(typeof e === "undefined" || e === null || e === "");
15064
+ }
15050
15065
  function mergeSearchOptions(options, operation) {
15051
15066
  var result = options.reduce(function (acc, entry) {
15052
15067
  // walk the props
15053
15068
  Object.entries(entry).forEach(function (_a) {
15054
15069
  var key = _a[0], value = _a[1];
15055
- // if prop exists
15056
- if (acc[key]) {
15070
+ // if prop exists and is not empty string
15071
+ if (acc[key] && value !== "") {
15057
15072
  // combine via operation
15058
15073
  acc[key] = acc[key] + " " + operation + " " + value;
15059
15074
  }
15060
15075
  else {
15061
- // just copy the value
15062
- acc[key] = value;
15076
+ // just copy the value if it's not empty string
15077
+ if (value !== "") {
15078
+ acc[key] = value;
15079
+ }
15063
15080
  }
15064
15081
  });
15065
15082
  return acc;
@@ -15074,7 +15091,9 @@
15074
15091
  function serializeFilter(filter) {
15075
15092
  var operation = filter.operation || "AND";
15076
15093
  var predicates = filter.predicates.map(expandPredicate);
15077
- var predicateSearchOptions = predicates.map(serializePredicate);
15094
+ var predicateSearchOptions = predicates
15095
+ .map(serializePredicate)
15096
+ .filter(function (e) { return e !== undefined && e !== null; });
15078
15097
  // combine these searchOptions
15079
15098
  var searchOptions = mergeSearchOptions(predicateSearchOptions, operation);
15080
15099
  // wrap in parens if we have more than one predicate
@@ -15142,7 +15161,7 @@
15142
15161
  // not attempt to ensure the properties are used in the correct combinations
15143
15162
  if (portalAllowList.includes(key)) {
15144
15163
  var so = { q: "" };
15145
- if (!specialProps.includes(key)) {
15164
+ if (!specialProps.includes(key) && key !== "term") {
15146
15165
  qCount++;
15147
15166
  so.q = serializeMatchOptions(key, value);
15148
15167
  }
@@ -15164,13 +15183,18 @@
15164
15183
  return so;
15165
15184
  }
15166
15185
  })
15167
- .filter(function (e) { return e !== undefined; });
15186
+ .filter(removeEmptyEntries);
15168
15187
  // merge up all the searchOptions
15169
- var searchOptions = mergeSearchOptions(opts, "AND");
15170
- if (qCount > 1) {
15171
- searchOptions.q = "(" + searchOptions.q + ")";
15188
+ if (opts.length) {
15189
+ var searchOptions = mergeSearchOptions(opts, "AND");
15190
+ if (qCount > 1) {
15191
+ searchOptions.q = "(" + searchOptions.q + ")";
15192
+ }
15193
+ return searchOptions;
15194
+ }
15195
+ else {
15196
+ return null;
15172
15197
  }
15173
- return searchOptions;
15174
15198
  }
15175
15199
  /**
15176
15200
  * Serialize MatchOptions into portal syntax