@esri/hub-common 13.36.1 → 13.37.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.
Files changed (36) hide show
  1. package/dist/esm/index.js +3 -0
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/search/_internal/expandPredicate.js +33 -18
  4. package/dist/esm/search/_internal/expandPredicate.js.map +1 -1
  5. package/dist/esm/search/_internal/explainFilter.js +34 -0
  6. package/dist/esm/search/_internal/explainFilter.js.map +1 -0
  7. package/dist/esm/search/_internal/explainHelpers.js +193 -0
  8. package/dist/esm/search/_internal/explainHelpers.js.map +1 -0
  9. package/dist/esm/search/_internal/explainPredicate.js +35 -0
  10. package/dist/esm/search/_internal/explainPredicate.js.map +1 -0
  11. package/dist/esm/search/_internal/portalSearchItems.js +20 -9
  12. package/dist/esm/search/_internal/portalSearchItems.js.map +1 -1
  13. package/dist/esm/search/explainQueryResult.js +53 -0
  14. package/dist/esm/search/explainQueryResult.js.map +1 -0
  15. package/dist/node/index.js +3 -0
  16. package/dist/node/index.js.map +1 -1
  17. package/dist/node/search/_internal/expandPredicate.js +34 -19
  18. package/dist/node/search/_internal/expandPredicate.js.map +1 -1
  19. package/dist/node/search/_internal/explainFilter.js +38 -0
  20. package/dist/node/search/_internal/explainFilter.js.map +1 -0
  21. package/dist/node/search/_internal/explainHelpers.js +202 -0
  22. package/dist/node/search/_internal/explainHelpers.js.map +1 -0
  23. package/dist/node/search/_internal/explainPredicate.js +39 -0
  24. package/dist/node/search/_internal/explainPredicate.js.map +1 -0
  25. package/dist/node/search/_internal/portalSearchItems.js +22 -10
  26. package/dist/node/search/_internal/portalSearchItems.js.map +1 -1
  27. package/dist/node/search/explainQueryResult.js +57 -0
  28. package/dist/node/search/explainQueryResult.js.map +1 -0
  29. package/dist/types/index.d.ts +1 -0
  30. package/dist/types/search/_internal/expandPredicate.d.ts +15 -0
  31. package/dist/types/search/_internal/explainFilter.d.ts +11 -0
  32. package/dist/types/search/_internal/explainHelpers.d.ts +38 -0
  33. package/dist/types/search/_internal/explainPredicate.d.ts +12 -0
  34. package/dist/types/search/_internal/portalSearchItems.d.ts +8 -0
  35. package/dist/types/search/explainQueryResult.d.ts +102 -0
  36. package/package.json +1 -1
package/dist/esm/index.js CHANGED
@@ -42,6 +42,9 @@ export * from "./core/updateHubEntity";
42
42
  // but if it's exported there, random tests start failing
43
43
  export * from "./urls/getCardModelUrl";
44
44
  export * from "./core/EntityEditor";
45
+ // Unclear _why_ this needs to be here vs. in search/index.ts
46
+ // but if it's exported there, it's not actually exporeted
47
+ export * from "./search/explainQueryResult";
45
48
  import OperationStack from "./OperationStack";
46
49
  import OperationError from "./OperationError";
47
50
  import HubError from "./HubError";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;gBACgB;AAChB,0BAA0B;AAE1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,0DAA0D;AAC1D,qDAAqD;AACrD,cAAc,wBAAwB,CAAC;AACvC,2DAA2D;AAC3D,yDAAyD;AACzD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;gBACgB;AAChB,0BAA0B;AAE1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,0DAA0D;AAC1D,qDAAqD;AACrD,cAAc,wBAAwB,CAAC;AACvC,2DAA2D;AAC3D,yDAAyD;AACzD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,6DAA6D;AAC7D,0DAA0D;AAC1D,cAAc,6BAA6B,CAAC;AAE5C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC"}
@@ -1,6 +1,36 @@
1
1
  import { getProp, setProp } from "../../objects";
2
2
  import { cloneObject } from "../../util";
3
3
  import { relativeDateToDateRange, valueToMatchOptions } from "../utils";
4
+ /**
5
+ * @internal
6
+ * Predicate properties that are treated as dates
7
+ */
8
+ export const PREDICATE_DATE_PROPS = ["created", "modified", "lastlogin"];
9
+ /**
10
+ * @internal
11
+ * Predicate properties that are just copied forward
12
+ */
13
+ export const PREDICATE_COPY_PROPS = [
14
+ "bbox",
15
+ "categoriesAsParam",
16
+ "categoryFilter",
17
+ "filterType",
18
+ "isopendata",
19
+ "isviewonly",
20
+ "memberType",
21
+ "name",
22
+ "searchUserAccess",
23
+ "searchUserName",
24
+ "term",
25
+ ];
26
+ /**
27
+ * @internal
28
+ * Predicate properties that are not treated as match options
29
+ */
30
+ export const PREDICATE_NON_MATCH_OPTIONS_PROPS = [
31
+ ...PREDICATE_DATE_PROPS,
32
+ ...PREDICATE_COPY_PROPS,
33
+ ];
4
34
  /**
5
35
  * @private
6
36
  * Expand a predicate
@@ -9,29 +39,14 @@ import { relativeDateToDateRange, valueToMatchOptions } from "../utils";
9
39
  */
10
40
  export function expandPredicate(predicate) {
11
41
  const result = {};
12
- const dateProps = ["created", "modified", "lastlogin"];
13
- const copyProps = [
14
- "bbox",
15
- "categoriesAsParam",
16
- "categoryFilter",
17
- "filterType",
18
- "isopendata",
19
- "isviewonly",
20
- "memberType",
21
- "name",
22
- "searchUserAccess",
23
- "searchUserName",
24
- "term",
25
- ];
26
- const nonMatchOptionsFields = [...dateProps, ...copyProps];
27
42
  // Do the conversion
28
43
  Object.entries(predicate).forEach(([key, value]) => {
29
44
  // Handle MatchOptions fields
30
- if (!nonMatchOptionsFields.includes(key)) {
45
+ if (!PREDICATE_NON_MATCH_OPTIONS_PROPS.includes(key)) {
31
46
  setProp(key, valueToMatchOptions(value), result);
32
47
  }
33
48
  // Handle Date fields
34
- if (dateProps.includes(key)) {
49
+ if (PREDICATE_DATE_PROPS.includes(key)) {
35
50
  const dateFieldValue = cloneObject(getProp(predicate, key));
36
51
  if (getProp(predicate, `${key}.type`) === "relative-date") {
37
52
  setProp(key, relativeDateToDateRange(dateFieldValue), result);
@@ -41,7 +56,7 @@ export function expandPredicate(predicate) {
41
56
  }
42
57
  }
43
58
  // Handle fields that are just copied forward
44
- if (copyProps.includes(key) && predicate.hasOwnProperty(key)) {
59
+ if (PREDICATE_COPY_PROPS.includes(key) && predicate.hasOwnProperty(key)) {
45
60
  setProp(key, value, result);
46
61
  }
47
62
  });
@@ -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,MAAM;QACN,mBAAmB;QACnB,gBAAgB;QAChB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,MAAM;QACN,kBAAkB;QAClB,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
+ {"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;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,mBAAmB;IACnB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,kBAAkB;IAClB,gBAAgB;IAChB,MAAM;CACP,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,GAAG,oBAAoB;IACvB,GAAG,oBAAoB;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAqB;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,oBAAoB;IACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACjD,6BAA6B;QAC7B,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACpD,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;SAClD;QACD,qBAAqB;QACrB,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtC,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,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACvE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { cloneObject } from "../../util";
2
+ import { explainPredicate } from "./explainPredicate";
3
+ /**
4
+ * Generate an explanation if a specific result passes the filter's criteria
5
+ * @param filter
6
+ * @param result
7
+ * @param requestOptions
8
+ * @returns
9
+ */
10
+ export async function explainFilter(filter, result, requestOptions) {
11
+ // setup return value
12
+ const explanation = {
13
+ filter: cloneObject(filter),
14
+ matched: false,
15
+ reasons: [],
16
+ };
17
+ // for each predicate, explain the match and return the explanation
18
+ for (const predicate of filter.predicates) {
19
+ const r = await explainPredicate(predicate, result, requestOptions);
20
+ explanation.reasons.push(r);
21
+ }
22
+ // depending on the operation, we combine the predicate results differently
23
+ if (filter.operation === "OR") {
24
+ // if any of the predicates match, then the filter matches
25
+ explanation.matched = explanation.reasons.some((r) => r.matched);
26
+ }
27
+ else {
28
+ // filter.operation defaults to AND
29
+ explanation.matched = explanation.reasons.every((r) => r.matched);
30
+ }
31
+ // return
32
+ return explanation;
33
+ }
34
+ //# sourceMappingURL=explainFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainFilter.js","sourceRoot":"","sources":["../../../../src/search/_internal/explainFilter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAe,EACf,MAAqB,EACrB,cAA+B;IAE/B,qBAAqB;IACrB,MAAM,WAAW,GAAuB;QACtC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;QAC3B,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,mEAAmE;IACnE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;QACzC,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACpE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7B;IACD,2EAA2E;IAC3E,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE;QAC7B,0DAA0D;QAC1D,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;KAClE;SAAM;QACL,mCAAmC;QACnC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;KACnE;IAED,SAAS;IACT,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,193 @@
1
+ import { cloneObject } from "../../util";
2
+ import { getItemGroups } from "@esri/arcgis-rest-portal";
3
+ import { getWithDefault } from "../../objects/get-with-default";
4
+ import { getProp } from "../../objects/get-prop";
5
+ export async function explainDatePredicate(predicate, result, requestOptions) {
6
+ // get the value from the predicate
7
+ throw new Error("Not implemented");
8
+ }
9
+ export async function explainPropPredicate(predicate, result, requestOptions) {
10
+ // get the value from the predicate
11
+ throw new Error("Not implemented");
12
+ }
13
+ /**
14
+ * @internal
15
+ * Create explanation for an IMatchOptions predicate
16
+ * @param predicate
17
+ * @param result
18
+ * @param requestOptions
19
+ * @returns
20
+ */
21
+ export async function explainMatchOptionPredicate(predicate, result, requestOptions) {
22
+ // get the key from the predicate
23
+ const attribute = Object.keys(predicate)[0];
24
+ const matchOptions = predicate[attribute];
25
+ const explanation = {
26
+ predicate: cloneObject(predicate),
27
+ matched: true,
28
+ reasons: [],
29
+ };
30
+ // Construct meta hash that will allow us to carry additional info about the match
31
+ const meta = {};
32
+ // TODO Implement when needed
33
+ // if (attribute === "orgid") {
34
+ // // fetch org into and attach the id + name into the meta hash
35
+ // }
36
+ if (attribute === "group") {
37
+ // fetch items groups and attach as `group` prop
38
+ const response = await getItemGroups(result.id, requestOptions);
39
+ // ----------------------------------------
40
+ // TODO: We've got a bunch of useful group info in the response, but only use the ids for the explanation
41
+ // However, to provide the user a useful explanation, we should include the group titles, and maybe even the group owners
42
+ // ----------------------------------------
43
+ // map out the id and titles into meta.groups
44
+ meta.groups = [
45
+ ...getWithDefault(response, "admin", []),
46
+ ...getWithDefault(response, "member", []),
47
+ ...getWithDefault(response, "other", []),
48
+ ].map((g) => ({ id: g.id, title: g.title }));
49
+ // and the id's into the match options attribute `group`
50
+ result.group = meta.groups.map((g) => g.id);
51
+ }
52
+ // get the value of the key, from the result
53
+ const resultValue = getProp(result, attribute);
54
+ if (resultValue) {
55
+ // check the any, all, not, exact props if defined
56
+ const fns = {
57
+ any: checkAny,
58
+ all: checkAll,
59
+ not: checkNot,
60
+ };
61
+ // for each prop, if defined, call the appropriate check function
62
+ Object.keys(fns).forEach((prop) => {
63
+ const conditionToCheck = getProp(matchOptions, prop);
64
+ if (conditionToCheck) {
65
+ const fn = getProp(fns, prop);
66
+ const r = fn(attribute, conditionToCheck, resultValue);
67
+ r.meta = meta;
68
+ explanation.reasons.push(r);
69
+ }
70
+ });
71
+ // decide if all the predicates matched
72
+ explanation.matched = explanation.reasons.every((r) => r.matched);
73
+ }
74
+ else {
75
+ explanation.matched = false;
76
+ explanation.reasons.push({
77
+ attribute,
78
+ matched: false,
79
+ message: `Property ${attribute} not present on search result, cannot provide explanation`,
80
+ });
81
+ }
82
+ return Promise.resolve(explanation);
83
+ }
84
+ /**
85
+ * Returns information about the match between a result value and the .any property of an IMatchOptions predicate
86
+ * @param attribute
87
+ * @param option
88
+ * @param resultValue
89
+ * @returns
90
+ */
91
+ export function checkAny(attribute, option, resultValue) {
92
+ const result = {
93
+ attribute,
94
+ values: arrayify(resultValue).join(","),
95
+ condition: "IN",
96
+ matched: false,
97
+ requirement: arrayify(option).join(","),
98
+ message: "No match",
99
+ };
100
+ const { options, matches } = getMatches(arrayify(option), arrayify(resultValue));
101
+ result.matched = matches.length > 0;
102
+ if (result.matched) {
103
+ result.message = `Value(s) ${result.values} contained at least one of value from [${result.requirement}]`;
104
+ }
105
+ else {
106
+ result.message = `Value(s) ${result.values} did not contain any of value from [${result.requirement}]`;
107
+ }
108
+ return result;
109
+ }
110
+ /**
111
+ * * Returns information about the match between a result value and the .all property of an IMatchOptions predicate
112
+ * @param attribute
113
+ * @param option
114
+ * @param resultValue
115
+ * @returns
116
+ */
117
+ export function checkAll(attribute, option, resultValue) {
118
+ const result = {
119
+ attribute,
120
+ values: arrayify(resultValue).join(","),
121
+ condition: "ALL",
122
+ requirement: arrayify(option).join(","),
123
+ matched: false,
124
+ message: "No match",
125
+ };
126
+ const { options, matches } = getMatches(arrayify(option), arrayify(resultValue));
127
+ result.matched = matches.length === options.length;
128
+ if (result.matched) {
129
+ result.message = `Value(s) ${result.values} contained all values from [${result.requirement}]`;
130
+ }
131
+ else {
132
+ result.message = `Value(s) ${result.values} did not contain all values from [${result.requirement}]`;
133
+ }
134
+ return result;
135
+ }
136
+ /**
137
+ * * Returns information about the match between a result value and the .not property of an IMatchOptions predicate
138
+ * @param attribute
139
+ * @param option
140
+ * @param resultValue
141
+ * @returns
142
+ */
143
+ export function checkNot(attribute, option, resultValue) {
144
+ const result = {
145
+ attribute,
146
+ values: arrayify(resultValue).join(","),
147
+ condition: "NOT_IN",
148
+ requirement: arrayify(option).join(","),
149
+ matched: false,
150
+ message: "No match",
151
+ };
152
+ const { options, values, matches } = getMatches(arrayify(option), arrayify(resultValue));
153
+ result.matched = matches.length === 0;
154
+ if (result.matched) {
155
+ result.message = `Value(s) ${result.values} is not contained in [${result.requirement}]`;
156
+ }
157
+ else {
158
+ result.message = `Value(s) ${result.values} is contained in [${result.requirement}]`;
159
+ }
160
+ return result;
161
+ }
162
+ /**
163
+ * Ensure a value that could be `string | string[]` is a `string[]`
164
+ * @param value
165
+ * @returns
166
+ */
167
+ function arrayify(value) {
168
+ if (!Array.isArray(value)) {
169
+ return [value];
170
+ }
171
+ return value;
172
+ }
173
+ /**
174
+ * Return matching values from two arrays
175
+ * @param options
176
+ * @param resultValues
177
+ * @returns
178
+ */
179
+ function getMatches(options, resultValues) {
180
+ const result = {
181
+ options,
182
+ values: resultValues,
183
+ matches: [],
184
+ };
185
+ result.matches = options.reduce((acc, o) => {
186
+ if (resultValues.includes(o)) {
187
+ acc.push(o);
188
+ }
189
+ return acc;
190
+ }, []);
191
+ return result;
192
+ }
193
+ //# sourceMappingURL=explainHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainHelpers.js","sourceRoot":"","sources":["../../../../src/search/_internal/explainHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { PREDICATE_DATE_PROPS, PREDICATE_NON_MATCH_OPTIONS_PROPS, } from "./expandPredicate";
2
+ import { explainMatchOptionPredicate, explainDatePredicate, explainPropPredicate, } from "./explainHelpers";
3
+ /**
4
+ * Geneate an explanation if a specific result passes the predicate's criteria
5
+ * This will delegate to more specific functions based on the predicate's key
6
+ * @param predicate
7
+ * @param result
8
+ * @param requestOptions
9
+ * @returns
10
+ */
11
+ export async function explainPredicate(predicate, result, requestOptions) {
12
+ // const predicateResult: IPredicateExplanation = {
13
+ // predicate: cloneObject(predicate),
14
+ // included: false,
15
+ // reasons: [],
16
+ // };
17
+ // get the key from the predicate
18
+ const key = Object.keys(predicate)[0];
19
+ // default to match options...
20
+ let fn = explainMatchOptionPredicate;
21
+ // However, some keys are treated differently
22
+ if (PREDICATE_NON_MATCH_OPTIONS_PROPS.includes(key)) {
23
+ if (PREDICATE_DATE_PROPS.includes(key)) {
24
+ // handle as date
25
+ fn = explainDatePredicate;
26
+ }
27
+ else {
28
+ // handle as prop we just copy forward
29
+ fn = explainPropPredicate;
30
+ }
31
+ }
32
+ // return the result
33
+ return fn(predicate, result, requestOptions);
34
+ }
35
+ //# sourceMappingURL=explainPredicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainPredicate.js","sourceRoot":"","sources":["../../../../src/search/_internal/explainPredicate.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;GAOG;AAEH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAwC,EACxC,MAAqB,EACrB,cAA+B;IAE/B,mDAAmD;IACnD,uCAAuC;IACvC,qBAAqB;IACrB,iBAAiB;IACjB,KAAK;IAEL,iCAAiC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,8BAA8B;IAC9B,IAAI,EAAE,GAAG,2BAA2B,CAAC;IAErC,6CAA6C;IAC7C,IAAI,iCAAiC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACnD,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtC,iBAAiB;YACjB,EAAE,GAAG,oBAAoB,CAAC;SAC3B;aAAM;YACL,sCAAsC;YACtC,EAAE,GAAG,oBAAoB,CAAC;SAC3B;KACF;IACD,oBAAoB;IACpB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC"}
@@ -34,16 +34,13 @@ export function portalSearchItemsAsItems(query, options) {
34
34
  return searchPortalAsItem(so);
35
35
  }
36
36
  /**
37
- * Common preprocessing for search options and the query
38
- * @param options
39
- * @param query
40
- * @returns
37
+ * @internal
38
+ * Expand an IQuery by applying well-known filters and predicates,
39
+ * and then expanding all the predicates into IMatchOption objects.
40
+ * @param query `IQuery` to expand
41
+ * @returns IQuery
41
42
  */
42
- function processSearchParams(options, query) {
43
- var _a;
44
- if (!options.requestOptions) {
45
- throw new HubError("portalSearchItems", "options.requestOptions is required.");
46
- }
43
+ export function expandQuery(query) {
47
44
  let updatedQuery = applyWellKnownCollectionFilters(query);
48
45
  // Expand well-known filterGroups
49
46
  // TODO: Should we remove this with the whole idea of collections?
@@ -53,6 +50,20 @@ function processSearchParams(options, query) {
53
50
  filter.predicates = filter.predicates.map(expandPredicate);
54
51
  return filter;
55
52
  });
53
+ return updatedQuery;
54
+ }
55
+ /**
56
+ * Common preprocessing for search options and the query
57
+ * @param options
58
+ * @param query
59
+ * @returns
60
+ */
61
+ function processSearchParams(options, query) {
62
+ var _a;
63
+ if (!options.requestOptions) {
64
+ throw new HubError("portalSearchItems", "options.requestOptions is required.");
65
+ }
66
+ const updatedQuery = expandQuery(query);
56
67
  // Serialize the all the groups for portal
57
68
  const so = serializeQueryForPortal(updatedQuery);
58
69
  // Array of properties we want to copy from IHubSearchOptions to the ISearchOptions
@@ -1 +1 @@
1
- {"version":3,"file":"portalSearchItems.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchItems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portalSearchItems.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchItems.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { expandQuery } from "./_internal/portalSearchItems";
2
+ import { cloneObject } from "../util";
3
+ import { explainFilter } from "./_internal/explainFilter";
4
+ /**
5
+ * Explain why a specific result was included in a Query.
6
+ *
7
+ * NOTE: This only works for entityType: "item" queries and does not
8
+ * cover all possible permutations.
9
+ * @param queryResult
10
+ * @param query
11
+ * @param requestOptions
12
+ * @returns
13
+ */
14
+ export async function explainQueryResult(queryResult, query, requestOptions) {
15
+ // Throw if the query is not for items
16
+ if (query.targetEntity !== "item") {
17
+ throw new Error(`explainQueryResult: Only queries with targetEntity: "item" are supported`);
18
+ }
19
+ // Expand the query so we have a standardized structure to work with
20
+ const expandedQuery = expandQuery(query);
21
+ // iterate the filters on the query and get explanations for each
22
+ const filterExplanations = [];
23
+ for (const filter of expandedQuery.filters) {
24
+ const fe = await explainFilter(filter, queryResult, requestOptions);
25
+ filterExplanations.push(fe);
26
+ }
27
+ // Collect up the reasons
28
+ const included = filterExplanations.reduce((acc, explanation) => {
29
+ if (!explanation.matched) {
30
+ acc = false;
31
+ }
32
+ return acc;
33
+ }, true);
34
+ // Collect up all the reasons into a single array
35
+ const summary = [];
36
+ filterExplanations.forEach((fe) => {
37
+ fe.reasons.forEach((predicateExplanation) => {
38
+ predicateExplanation.reasons.forEach((reason) => {
39
+ summary.push(reason);
40
+ });
41
+ });
42
+ });
43
+ // construct the result
44
+ const result = {
45
+ result: cloneObject(queryResult),
46
+ query: cloneObject(query),
47
+ matched: included,
48
+ reasons: filterExplanations,
49
+ summary,
50
+ };
51
+ return result;
52
+ }
53
+ //# sourceMappingURL=explainQueryResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainQueryResult.js","sourceRoot":"","sources":["../../../src/search/explainQueryResult.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAkG1D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAA0B,EAC1B,KAAa,EACb,cAA+B;IAE/B,sCAAsC;IACtC,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,EAAE;QACjC,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;KACH;IAED,oEAAoE;IACpE,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEzC,iEAAiE;IACjE,MAAM,kBAAkB,GAAyB,EAAE,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;QAC1C,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QACpE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7B;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC9D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,GAAG,GAAG,KAAK,CAAC;SACb;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,iDAAiD;IACjD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QAChC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,EAAE;YAC1C,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,MAAM,GAAsB;QAChC,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;QAChC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;QACzB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,kBAAkB;QAC3B,OAAO;KACR,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -46,6 +46,9 @@ tslib_1.__exportStar(require("./core/updateHubEntity"), exports);
46
46
  // but if it's exported there, random tests start failing
47
47
  tslib_1.__exportStar(require("./urls/getCardModelUrl"), exports);
48
48
  tslib_1.__exportStar(require("./core/EntityEditor"), exports);
49
+ // Unclear _why_ this needs to be here vs. in search/index.ts
50
+ // but if it's exported there, it's not actually exporeted
51
+ tslib_1.__exportStar(require("./search/explainQueryResult"), exports);
49
52
  const OperationStack_1 = require("./OperationStack");
50
53
  exports.OperationStack = OperationStack_1.default;
51
54
  const OperationError_1 = require("./OperationError");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;AAChB,0BAA0B;;;;AAE1B,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,yDAA+B;AAC/B,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,wDAA8B;AAC9B,wDAA8B;AAC9B,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,gDAAsB;AACtB,kDAAwB;AACxB,wDAA8B;AAC9B,qDAA2B;AAC3B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,uDAA6B;AAC7B,oDAA0B;AAC1B,0DAA0D;AAC1D,qDAAqD;AACrD,iEAAuC;AACvC,2DAA2D;AAC3D,yDAAyD;AACzD,iEAAuC;AACvC,8DAAoC;AAEpC,qDAA8C;AAKrC,yBALF,wBAAc,CAKE;AAJvB,qDAA8C;AAIrB,yBAJlB,wBAAc,CAIkB;AAHvC,yCAAkC;AAGO,mBAHlC,kBAAQ,CAGkC;AACjD,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;AAChB,0BAA0B;;;;AAE1B,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,yDAA+B;AAC/B,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,wDAA8B;AAC9B,wDAA8B;AAC9B,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,gDAAsB;AACtB,kDAAwB;AACxB,wDAA8B;AAC9B,qDAA2B;AAC3B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,uDAA6B;AAC7B,oDAA0B;AAC1B,0DAA0D;AAC1D,qDAAqD;AACrD,iEAAuC;AACvC,2DAA2D;AAC3D,yDAAyD;AACzD,iEAAuC;AACvC,8DAAoC;AACpC,6DAA6D;AAC7D,0DAA0D;AAC1D,sEAA4C;AAE5C,qDAA8C;AAKrC,yBALF,wBAAc,CAKE;AAJvB,qDAA8C;AAIrB,yBAJlB,wBAAc,CAIkB;AAHvC,yCAAkC;AAGO,mBAHlC,kBAAQ,CAGkC;AACjD,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA"}
@@ -1,9 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.expandPredicate = void 0;
3
+ exports.expandPredicate = exports.PREDICATE_NON_MATCH_OPTIONS_PROPS = exports.PREDICATE_COPY_PROPS = exports.PREDICATE_DATE_PROPS = void 0;
4
4
  const objects_1 = require("../../objects");
5
5
  const util_1 = require("../../util");
6
6
  const utils_1 = require("../utils");
7
+ /**
8
+ * @internal
9
+ * Predicate properties that are treated as dates
10
+ */
11
+ exports.PREDICATE_DATE_PROPS = ["created", "modified", "lastlogin"];
12
+ /**
13
+ * @internal
14
+ * Predicate properties that are just copied forward
15
+ */
16
+ exports.PREDICATE_COPY_PROPS = [
17
+ "bbox",
18
+ "categoriesAsParam",
19
+ "categoryFilter",
20
+ "filterType",
21
+ "isopendata",
22
+ "isviewonly",
23
+ "memberType",
24
+ "name",
25
+ "searchUserAccess",
26
+ "searchUserName",
27
+ "term",
28
+ ];
29
+ /**
30
+ * @internal
31
+ * Predicate properties that are not treated as match options
32
+ */
33
+ exports.PREDICATE_NON_MATCH_OPTIONS_PROPS = [
34
+ ...exports.PREDICATE_DATE_PROPS,
35
+ ...exports.PREDICATE_COPY_PROPS,
36
+ ];
7
37
  /**
8
38
  * @private
9
39
  * Expand a predicate
@@ -12,29 +42,14 @@ const utils_1 = require("../utils");
12
42
  */
13
43
  function expandPredicate(predicate) {
14
44
  const result = {};
15
- const dateProps = ["created", "modified", "lastlogin"];
16
- const copyProps = [
17
- "bbox",
18
- "categoriesAsParam",
19
- "categoryFilter",
20
- "filterType",
21
- "isopendata",
22
- "isviewonly",
23
- "memberType",
24
- "name",
25
- "searchUserAccess",
26
- "searchUserName",
27
- "term",
28
- ];
29
- const nonMatchOptionsFields = [...dateProps, ...copyProps];
30
45
  // Do the conversion
31
46
  Object.entries(predicate).forEach(([key, value]) => {
32
47
  // Handle MatchOptions fields
33
- if (!nonMatchOptionsFields.includes(key)) {
48
+ if (!exports.PREDICATE_NON_MATCH_OPTIONS_PROPS.includes(key)) {
34
49
  objects_1.setProp(key, utils_1.valueToMatchOptions(value), result);
35
50
  }
36
51
  // Handle Date fields
37
- if (dateProps.includes(key)) {
52
+ if (exports.PREDICATE_DATE_PROPS.includes(key)) {
38
53
  const dateFieldValue = util_1.cloneObject(objects_1.getProp(predicate, key));
39
54
  if (objects_1.getProp(predicate, `${key}.type`) === "relative-date") {
40
55
  objects_1.setProp(key, utils_1.relativeDateToDateRange(dateFieldValue), result);
@@ -44,7 +59,7 @@ function expandPredicate(predicate) {
44
59
  }
45
60
  }
46
61
  // Handle fields that are just copied forward
47
- if (copyProps.includes(key) && predicate.hasOwnProperty(key)) {
62
+ if (exports.PREDICATE_COPY_PROPS.includes(key) && predicate.hasOwnProperty(key)) {
48
63
  objects_1.setProp(key, value, result);
49
64
  }
50
65
  });
@@ -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,MAAM;QACN,mBAAmB;QACnB,gBAAgB;QAChB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,MAAM;QACN,kBAAkB;QAClB,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;AAtCD,0CAsCC"}
1
+ {"version":3,"file":"expandPredicate.js","sourceRoot":"","sources":["../../../../src/search/_internal/expandPredicate.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAyC;AAEzC,oCAAwE;AAExE;;;GAGG;AACU,QAAA,oBAAoB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAEzE;;;GAGG;AACU,QAAA,oBAAoB,GAAG;IAClC,MAAM;IACN,mBAAmB;IACnB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,kBAAkB;IAClB,gBAAgB;IAChB,MAAM;CACP,CAAC;AAEF;;;GAGG;AACU,QAAA,iCAAiC,GAAG;IAC/C,GAAG,4BAAoB;IACvB,GAAG,4BAAoB;CACxB,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,SAAqB;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,oBAAoB;IACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACjD,6BAA6B;QAC7B,IAAI,CAAC,yCAAiC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACpD,iBAAO,CAAC,GAAG,EAAE,2BAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;SAClD;QACD,qBAAqB;QACrB,IAAI,4BAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtC,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,4BAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACvE,iBAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,0CAwBC"}