@esri/hub-common 12.18.0 → 12.20.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/core/types/DynamicValues.js +1 -0
- package/dist/esm/core/types/DynamicValues.js.map +1 -0
- package/dist/esm/core/types/index.js +1 -0
- package/dist/esm/core/types/index.js.map +1 -1
- package/dist/esm/search/_internal/combineQueries.js +25 -0
- package/dist/esm/search/_internal/combineQueries.js.map +1 -0
- package/dist/esm/search/_internal/portalSearchItems.js +47 -5
- package/dist/esm/search/_internal/portalSearchItems.js.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/internal/aggregateValues.js +35 -0
- package/dist/esm/utils/internal/aggregateValues.js.map +1 -0
- package/dist/esm/utils/internal/resolveDynamicValue.js +34 -0
- package/dist/esm/utils/internal/resolveDynamicValue.js.map +1 -0
- package/dist/esm/utils/internal/resolveDynamicValues.js +19 -0
- package/dist/esm/utils/internal/resolveDynamicValues.js.map +1 -0
- package/dist/esm/utils/internal/resolveItemQueryValues.js +73 -0
- package/dist/esm/utils/internal/resolveItemQueryValues.js.map +1 -0
- package/dist/esm/utils/internal/resolvePortalValues.js +24 -0
- package/dist/esm/utils/internal/resolvePortalValues.js.map +1 -0
- package/dist/esm/utils/internal/resolveServiceQueryValues.js +38 -0
- package/dist/esm/utils/internal/resolveServiceQueryValues.js.map +1 -0
- package/dist/esm/utils/memoize.js +38 -0
- package/dist/esm/utils/memoize.js.map +1 -0
- package/dist/node/core/types/DynamicValues.js +3 -0
- package/dist/node/core/types/DynamicValues.js.map +1 -0
- package/dist/node/core/types/index.js +1 -0
- package/dist/node/core/types/index.js.map +1 -1
- package/dist/node/search/_internal/combineQueries.js +28 -0
- package/dist/node/search/_internal/combineQueries.js.map +1 -0
- package/dist/node/search/_internal/portalSearchItems.js +50 -7
- package/dist/node/search/_internal/portalSearchItems.js.map +1 -1
- package/dist/node/utils/index.js +1 -0
- package/dist/node/utils/index.js.map +1 -1
- package/dist/node/utils/internal/aggregateValues.js +39 -0
- package/dist/node/utils/internal/aggregateValues.js.map +1 -0
- package/dist/node/utils/internal/resolveDynamicValue.js +38 -0
- package/dist/node/utils/internal/resolveDynamicValue.js.map +1 -0
- package/dist/node/utils/internal/resolveDynamicValues.js +22 -0
- package/dist/node/utils/internal/resolveDynamicValues.js.map +1 -0
- package/dist/node/utils/internal/resolveItemQueryValues.js +77 -0
- package/dist/node/utils/internal/resolveItemQueryValues.js.map +1 -0
- package/dist/node/utils/internal/resolvePortalValues.js +28 -0
- package/dist/node/utils/internal/resolvePortalValues.js.map +1 -0
- package/dist/node/utils/internal/resolveServiceQueryValues.js +41 -0
- package/dist/node/utils/internal/resolveServiceQueryValues.js.map +1 -0
- package/dist/node/utils/memoize.js +41 -0
- package/dist/node/utils/memoize.js.map +1 -0
- package/dist/types/core/types/DynamicValues.d.ts +140 -0
- package/dist/types/core/types/index.d.ts +1 -0
- package/dist/types/search/_internal/combineQueries.d.ts +12 -0
- package/dist/types/search/_internal/portalSearchItems.d.ts +10 -2
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/internal/aggregateValues.d.ts +9 -0
- package/dist/types/utils/internal/resolveDynamicValue.d.ts +10 -0
- package/dist/types/utils/internal/resolveDynamicValues.d.ts +11 -0
- package/dist/types/utils/internal/resolveItemQueryValues.d.ts +12 -0
- package/dist/types/utils/internal/resolvePortalValues.d.ts +11 -0
- package/dist/types/utils/internal/resolveServiceQueryValues.d.ts +10 -0
- package/dist/types/utils/memoize.d.ts +13 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=DynamicValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicValues.js","sourceRoot":"","sources":["../../../../src/core/types/DynamicValues.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
* Naieve implementation to merge two queries into one. This
|
|
4
|
+
* simply combines the filters of the two queries. It does not attempt
|
|
5
|
+
* to disabiguate the filters or predicates. It is up to the caller
|
|
6
|
+
* to ensure that the queries are compatible and don't result in a null set
|
|
7
|
+
* of results.
|
|
8
|
+
* @param queries
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export const combineQueries = (queries) => {
|
|
12
|
+
// check tht all queries are for the same entity type
|
|
13
|
+
const targetEntity = queries[0].targetEntity;
|
|
14
|
+
if (queries.some((q) => q.targetEntity !== targetEntity)) {
|
|
15
|
+
throw new Error("Cannot combine queries for different entity types");
|
|
16
|
+
}
|
|
17
|
+
// combine the filters from all the queries
|
|
18
|
+
const filters = queries.reduce((acc, q) => [...acc, ...q.filters], []);
|
|
19
|
+
const result = {
|
|
20
|
+
targetEntity,
|
|
21
|
+
filters,
|
|
22
|
+
};
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=combineQueries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combineQueries.js","sourceRoot":"","sources":["../../../../src/search/_internal/combineQueries.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAU,EAAE;IAC1D,qDAAqD;IACrD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,EAAE;QACxD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;KACtE;IAED,2CAA2C;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAW;QACrB,YAAY;QACZ,OAAO;KACR,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -10,13 +10,34 @@ import HubError from "../../HubError";
|
|
|
10
10
|
import { enrichContentSearchResult } from "../../content";
|
|
11
11
|
import { cloneObject } from "../../util";
|
|
12
12
|
/**
|
|
13
|
-
* @
|
|
14
|
-
* Portal Search Implementation for Items
|
|
13
|
+
* @internal
|
|
14
|
+
* Portal Search Implementation for Items returning IHubSearchResults
|
|
15
15
|
* @param query
|
|
16
16
|
* @param options
|
|
17
17
|
* @returns
|
|
18
18
|
*/
|
|
19
19
|
export async function portalSearchItems(query, options) {
|
|
20
|
+
const so = processSearchParams(options, query);
|
|
21
|
+
return searchPortalAsHubSearchResult(so);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
* Portal Search for Items using IQuery and IHubSearchOptions
|
|
26
|
+
* @param query
|
|
27
|
+
* @param options
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
export function portalSearchItemsAsItems(query, options) {
|
|
31
|
+
const so = processSearchParams(options, query);
|
|
32
|
+
return searchPortalAsItem(so);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Common preprocessing for search options and the query
|
|
36
|
+
* @param options
|
|
37
|
+
* @param query
|
|
38
|
+
* @returns
|
|
39
|
+
*/
|
|
40
|
+
function processSearchParams(options, query) {
|
|
20
41
|
var _a;
|
|
21
42
|
if (!options.requestOptions) {
|
|
22
43
|
throw new HubError("portalSearchItems", "options.requestOptions is required.");
|
|
@@ -56,7 +77,28 @@ export async function portalSearchItems(query, options) {
|
|
|
56
77
|
so.countFields = options.aggFields.join(",");
|
|
57
78
|
so.countSize = options.aggLimit || 10;
|
|
58
79
|
}
|
|
59
|
-
return
|
|
80
|
+
return so;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Internal portal search, which just returns IItems witn no conversion
|
|
84
|
+
* Due to typescript complexity when adding multiple returns types to a function
|
|
85
|
+
* it is simpler to have two functions that do the almost the same thing.
|
|
86
|
+
* @param searchOptions
|
|
87
|
+
* @returns
|
|
88
|
+
*/
|
|
89
|
+
async function searchPortalAsItem(searchOptions) {
|
|
90
|
+
// Execute portal search
|
|
91
|
+
const resp = await searchItems(searchOptions);
|
|
92
|
+
// convert portal aggregations into hub aggregations
|
|
93
|
+
const aggregations = convertPortalAggregations(resp);
|
|
94
|
+
// Construct the return
|
|
95
|
+
return {
|
|
96
|
+
total: resp.total,
|
|
97
|
+
results: resp.results,
|
|
98
|
+
aggregations,
|
|
99
|
+
hasNext: resp.nextStart > -1,
|
|
100
|
+
next: getNextFunction(searchOptions, resp.nextStart, resp.total, searchPortalAsItem),
|
|
101
|
+
};
|
|
60
102
|
}
|
|
61
103
|
/**
|
|
62
104
|
* Internal portal search, which then converts `IItem`s to `IHubSearchResult`s
|
|
@@ -65,7 +107,7 @@ export async function portalSearchItems(query, options) {
|
|
|
65
107
|
* @param searchOptions
|
|
66
108
|
* @returns
|
|
67
109
|
*/
|
|
68
|
-
async function
|
|
110
|
+
async function searchPortalAsHubSearchResult(searchOptions) {
|
|
69
111
|
// Execute portal search
|
|
70
112
|
const resp = await searchItems(searchOptions);
|
|
71
113
|
// create mappable fn that will handle the includes
|
|
@@ -82,7 +124,7 @@ async function searchPortal(searchOptions) {
|
|
|
82
124
|
results,
|
|
83
125
|
aggregations,
|
|
84
126
|
hasNext: resp.nextStart > -1,
|
|
85
|
-
next: getNextFunction(searchOptions, resp.nextStart, resp.total,
|
|
127
|
+
next: getNextFunction(searchOptions, resp.nextStart, resp.total, searchPortalAsHubSearchResult),
|
|
86
128
|
};
|
|
87
129
|
}
|
|
88
130
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portalSearchItems.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAWrD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,OAA0B
|
|
1
|
+
{"version":3,"file":"portalSearchItems.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchItems.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
* Aggregate a set of values based on the aggregation type
|
|
4
|
+
* @param values
|
|
5
|
+
* @param aggregation
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export function aggregateValues(values, aggregation) {
|
|
9
|
+
switch (aggregation) {
|
|
10
|
+
case "sum":
|
|
11
|
+
return values.reduce((acc, v) => acc + v, 0);
|
|
12
|
+
case "count":
|
|
13
|
+
return values.length;
|
|
14
|
+
case "avg":
|
|
15
|
+
return values.reduce((acc, v) => acc + v, 0) / values.length;
|
|
16
|
+
case "min":
|
|
17
|
+
return values.reduce((acc, v) => Math.min(acc, v), Number.MAX_VALUE);
|
|
18
|
+
case "max":
|
|
19
|
+
return values.reduce((acc, v) => Math.max(acc, v), Number.MIN_VALUE);
|
|
20
|
+
case "countByValue": // count for each value as a hash {value: string, count: number}
|
|
21
|
+
return values.reduce((acc, v) => {
|
|
22
|
+
if (acc[v]) {
|
|
23
|
+
acc[v] += 1;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
acc[v] = 1;
|
|
27
|
+
}
|
|
28
|
+
return acc;
|
|
29
|
+
}, {});
|
|
30
|
+
default:
|
|
31
|
+
// console.error(`Unknown aggregation: ${aggregation}`);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=aggregateValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregateValues.js","sourceRoot":"","sources":["../../../../src/utils/internal/aggregateValues.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAa,EACb,WAA+B;IAE/B,QAAQ,WAAW,EAAE;QACnB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/D,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACvE,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACvE,KAAK,cAAc,EAAE,gEAAgE;YACnF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;oBACV,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACb;qBAAM;oBACL,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;iBACZ;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACT;YACE,wDAAwD;YACxD,OAAO,IAAI,CAAC;KACf;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getProp } from "../../objects/get-prop";
|
|
2
|
+
import { resolveItemQueryValues } from "./resolveItemQueryValues";
|
|
3
|
+
import { resolvePortalValues } from "./resolvePortalValues";
|
|
4
|
+
import { resolveServiceQueryValues } from "./resolveServiceQueryValues";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
* Resolve a single dynamic value. The definition can be of many types (item-query, portal etc), each of which has their own logic for resolving the value.
|
|
8
|
+
* @param valueDef
|
|
9
|
+
* @param context
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export async function resolveDynamicValue(valueDef, context) {
|
|
13
|
+
let result = {};
|
|
14
|
+
switch (valueDef.type) {
|
|
15
|
+
case "static-value":
|
|
16
|
+
const val = getProp(valueDef, "value");
|
|
17
|
+
const outPath = getProp(valueDef, "outPath");
|
|
18
|
+
result[outPath] = val;
|
|
19
|
+
break;
|
|
20
|
+
case "item-query":
|
|
21
|
+
result = await resolveItemQueryValues(valueDef, context);
|
|
22
|
+
break;
|
|
23
|
+
case "portal":
|
|
24
|
+
result = await resolvePortalValues(valueDef, context);
|
|
25
|
+
break;
|
|
26
|
+
case "service-query":
|
|
27
|
+
result = await resolveServiceQueryValues(valueDef, context);
|
|
28
|
+
break;
|
|
29
|
+
default:
|
|
30
|
+
throw new Error(`Cannot resolve value - unexpected source.`);
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=resolveDynamicValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDynamicValue.js","sourceRoot":"","sources":["../../../../src/utils/internal/resolveDynamicValue.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgC,EAChC,OAAuB;IAEvB,IAAI,MAAM,GAAwB,EAAE,CAAC;IACrC,QAAQ,QAAQ,CAAC,IAAI,EAAE;QACrB,KAAK,cAAc;YACjB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;YACtB,MAAM;QACR,KAAK,YAAY;YACf,MAAM,GAAG,MAAM,sBAAsB,CACnC,QAAuC,EACvC,OAAO,CACR,CAAC;YACF,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,MAAM,mBAAmB,CAChC,QAAwC,EACxC,OAAO,CACR,CAAC;YACF,MAAM;QACR,KAAK,eAAe;YAClB,MAAM,GAAG,MAAM,yBAAyB,CACtC,QAA0C,EAC1C,OAAO,CACR,CAAC;YACF,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAChE;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { resolveDynamicValue } from "./resolveDynamicValue";
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
* Resolve a set of dynamic values.
|
|
5
|
+
* The individual definitions can be of many types (item-query, portal etc), each of which has their own logic for resolving the value.
|
|
6
|
+
* @param dynamicValues Array of dynamic value definitions to resolve
|
|
7
|
+
* @param context ArcGIS context of the current user.
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export const resolveDynamicValues = async (dynamicValues, context) => {
|
|
11
|
+
let result = {};
|
|
12
|
+
// iterate over the dynamic values and resolve each one via Promise.all
|
|
13
|
+
// this will allow us to resolve all the values in parallel
|
|
14
|
+
const resolvedValues = await Promise.all(dynamicValues.map((valueDef) => resolveDynamicValue(valueDef, context)));
|
|
15
|
+
// merge the resolved values into a single object
|
|
16
|
+
result = resolvedValues.reduce((acc, val) => (Object.assign(Object.assign({}, acc), val)), {});
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=resolveDynamicValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDynamicValues.js","sourceRoot":"","sources":["../../../../src/utils/internal/resolveDynamicValues.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,aAAuC,EACvC,OAAuB,EACsB,EAAE;IAC/C,IAAI,MAAM,GAAwB,EAAE,CAAC;IAErC,uEAAuE;IACvE,2DAA2D;IAC3D,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CACxE,CAAC;IACF,iDAAiD;IACjD,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,iCAAM,GAAG,GAAK,GAAG,EAAG,EAAE,EAAE,CAAC,CAAC;IAEvE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { setProp } from "../../objects";
|
|
2
|
+
import { getProp } from "../../objects/get-prop";
|
|
3
|
+
import { combineQueries } from "../../search/_internal/combineQueries";
|
|
4
|
+
import { portalSearchItemsAsItems } from "../../search/_internal/portalSearchItems";
|
|
5
|
+
import { aggregateValues } from "./aggregateValues";
|
|
6
|
+
import { memoize } from "../memoize";
|
|
7
|
+
import { resolveDynamicValue } from "./resolveDynamicValue";
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
* Resolve a set of dynamic values based on an item query.
|
|
11
|
+
* This is used to query for a set of items, extract a specific value from each
|
|
12
|
+
* then run an aggregation on the set of values.
|
|
13
|
+
* @param valueDef Item Query Definition that will be resolved by querying for items and extracting a specific value from each
|
|
14
|
+
* @param context ArcGIS context of the current user.
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
export async function resolveItemQueryValues(valueDef, context) {
|
|
18
|
+
const result = {};
|
|
19
|
+
// execute the query
|
|
20
|
+
// TODO: Error if neither query or scope are defined
|
|
21
|
+
// Combine the query and scope into a single query;
|
|
22
|
+
// The query and scope have already been dereferenced
|
|
23
|
+
// but since the typing allows for `Reference` we need
|
|
24
|
+
// to use `as IQuery` to TS to chill out.
|
|
25
|
+
const query = valueDef.query || {
|
|
26
|
+
targetEntity: "item",
|
|
27
|
+
filters: [],
|
|
28
|
+
};
|
|
29
|
+
const scope = valueDef.scope || {
|
|
30
|
+
targetEntity: "item",
|
|
31
|
+
filters: [],
|
|
32
|
+
};
|
|
33
|
+
const combined = combineQueries([query, scope]);
|
|
34
|
+
const opts = {
|
|
35
|
+
requestOptions: context.hubRequestOptions,
|
|
36
|
+
};
|
|
37
|
+
// create/get memoized version of portalSearchItemsAsItems
|
|
38
|
+
const memoizedPortalSearch = memoize(portalSearchItemsAsItems);
|
|
39
|
+
// Execute the query
|
|
40
|
+
const response = await memoizedPortalSearch(combined, opts);
|
|
41
|
+
// TODO: dereference metrics so we can delegate one to another
|
|
42
|
+
// This next section is all promise based so that a dynamic value
|
|
43
|
+
// can itself be a dynamic value definition, which then needs to be
|
|
44
|
+
// resolved.
|
|
45
|
+
const promises = await response.results.reduce(async (valsPromise, r) => {
|
|
46
|
+
const vals = await valsPromise;
|
|
47
|
+
const valueFromItem = getProp(r, valueDef.sourcePath);
|
|
48
|
+
// Handle case where value is not found...
|
|
49
|
+
// e.g. the project exists but the metric is not defined yet
|
|
50
|
+
if (valueFromItem) {
|
|
51
|
+
if (typeof valueFromItem === "string" ||
|
|
52
|
+
typeof valueFromItem === "number") {
|
|
53
|
+
vals.push(Promise.resolve(valueFromItem));
|
|
54
|
+
}
|
|
55
|
+
else if (valueFromItem.type === "static-value") {
|
|
56
|
+
vals.push(Promise.resolve(valueFromItem.value));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// valueFromItem is itself a valueDefinition so we call resolveDynamicValues again
|
|
60
|
+
const vResult = await resolveDynamicValue(valueFromItem, context);
|
|
61
|
+
// vals needs just the value - the number or string but vResult is an object
|
|
62
|
+
// so we need to get it out of the object
|
|
63
|
+
vals.push(getProp(vResult, valueFromItem.outPath));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return vals;
|
|
67
|
+
}, Promise.resolve([]));
|
|
68
|
+
const values = await Promise.all(promises);
|
|
69
|
+
const aggretate = aggregateValues(values, valueDef.aggregation);
|
|
70
|
+
setProp(valueDef.outPath, aggretate, result);
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=resolveItemQueryValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveItemQueryValues.js","sourceRoot":"","sources":["../../../../src/utils/internal/resolveItemQueryValues.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIjD,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAqC,EACrC,OAAuB;IAEvB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,oBAAoB;IACpB,oDAAoD;IACpD,mDAAmD;IACnD,qDAAqD;IACrD,sDAAsD;IACtD,yCAAyC;IACzC,MAAM,KAAK,GAAI,QAAQ,CAAC,KAAgB,IAAI;QAC1C,YAAY,EAAE,MAAM;QACpB,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,MAAM,KAAK,GAAI,QAAQ,CAAC,KAAgB,IAAI;QAC1C,YAAY,EAAE,MAAM;QACpB,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,IAAI,GAAsB;QAC9B,cAAc,EAAE,OAAO,CAAC,iBAAiB;KAC1C,CAAC;IACF,0DAA0D;IAC1D,MAAM,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC/D,oBAAoB;IACpB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE5D,8DAA8D;IAE9D,iEAAiE;IACjE,mEAAmE;IACnE,YAAY;IAEZ,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAC5C,KAAK,EAAE,WAAgB,EAAE,CAAM,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;QAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtD,0CAA0C;QAC1C,4DAA4D;QAC5D,IAAI,aAAa,EAAE;YACjB,IACE,OAAO,aAAa,KAAK,QAAQ;gBACjC,OAAO,aAAa,KAAK,QAAQ,EACjC;gBACA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;aAC3C;iBAAM,IAAI,aAAa,CAAC,IAAI,KAAK,cAAc,EAAE;gBAChD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;aACjD;iBAAM;gBACL,kFAAkF;gBAClF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBAClE,4EAA4E;gBAC5E,yCAAyC;gBACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;aACpD;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EACD,OAAO,CAAC,OAAO,CAAC,EAAW,CAAC,CAC7B,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getSelf } from "@esri/arcgis-rest-portal";
|
|
2
|
+
import { setProp } from "../../objects";
|
|
3
|
+
import { getProp } from "../../objects/get-prop";
|
|
4
|
+
import { memoize } from "../memoize";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
* Resolve a set of dynamic values by extracting properties
|
|
8
|
+
* from the current user's portal/self
|
|
9
|
+
* @param valueDef Portal Query Definition that wil be resolved using properties from the current user's portal/self
|
|
10
|
+
* @param context ArcGIS context of the current user.
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export async function resolvePortalValues(valueDef, context) {
|
|
14
|
+
const result = {};
|
|
15
|
+
const memoizedPortalSelf = memoize(getSelf);
|
|
16
|
+
// TODO: This could use the context.portal values to skip even a single request
|
|
17
|
+
// get the portalSelf via memoized function
|
|
18
|
+
const portal = await memoizedPortalSelf(context.requestOptions.authentication);
|
|
19
|
+
// get the value from the portal and attach into the result
|
|
20
|
+
const value = getProp(portal, valueDef.sourcePath);
|
|
21
|
+
setProp(valueDef.outPath, value, result);
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=resolvePortalValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePortalValues.js","sourceRoot":"","sources":["../../../../src/utils/internal/resolvePortalValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAsC,EACtC,OAAuB;IAEvB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,2CAA2C;IAC3C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,OAAO,CAAC,cAAc,CAAC,cAAc,CACtC,CAAC;IAEF,2DAA2D;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { queryFeatures } from "@esri/arcgis-rest-feature-layer";
|
|
2
|
+
import { setProp } from "../../objects";
|
|
3
|
+
import { getProp } from "../../objects/get-prop";
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
* Resolve a dynamic value that is derived from a service query
|
|
7
|
+
* @param valueDef Service Query Definition that will be resolved by executing an aggregation querying on service and returning that value
|
|
8
|
+
* @param context ArcGIS context of the current user.
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export const resolveServiceQueryValues = async (valueDef, context) => {
|
|
12
|
+
// If no where is provided, default to "1=1"
|
|
13
|
+
valueDef.options.where = valueDef.options.where || "1=1";
|
|
14
|
+
// construct the result object
|
|
15
|
+
const result = {};
|
|
16
|
+
// Construct the stats definition
|
|
17
|
+
const statsDef = {
|
|
18
|
+
onStatisticField: valueDef.options.field,
|
|
19
|
+
statisticType: valueDef.options.statisticType,
|
|
20
|
+
outStatisticFieldName: valueDef.options.field,
|
|
21
|
+
};
|
|
22
|
+
// Execute the query
|
|
23
|
+
const response = await queryFeatures({
|
|
24
|
+
url: valueDef.options.url,
|
|
25
|
+
where: valueDef.options.where,
|
|
26
|
+
f: "json",
|
|
27
|
+
outStatistics: [statsDef],
|
|
28
|
+
authentication: context.requestOptions.authentication,
|
|
29
|
+
});
|
|
30
|
+
// Pull the aggreate value out of the response
|
|
31
|
+
const features = getProp(response, "features") || [];
|
|
32
|
+
const firstEntry = features[0] || {};
|
|
33
|
+
const aggregate = getProp(firstEntry, `attributes.${valueDef.options.field}`) || 0;
|
|
34
|
+
// set that on the result
|
|
35
|
+
setProp(valueDef.outPath, aggregate, result);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=resolveServiceQueryValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveServiceQueryValues.js","sourceRoot":"","sources":["../../../../src/utils/internal/resolveServiceQueryValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAOhE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,QAAwC,EACxC,OAAuB,EACC,EAAE;IAC1B,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACzD,8BAA8B;IAC9B,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,iCAAiC;IACjC,MAAM,QAAQ,GAAyB;QACrC,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK;QACxC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa;QAC7C,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK;KAC9C,CAAC;IACF,oBAAoB;IACpB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;QACnC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAa;QACnC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAe;QACvC,CAAC,EAAE,MAAM;QACT,aAAa,EAAE,CAAC,QAAQ,CAAC;QACzB,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc;KACtD,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,SAAS,GACb,OAAO,CAAC,UAAU,EAAE,cAAc,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;IAEnE,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a cache key from an array of arguments
|
|
3
|
+
* @param args
|
|
4
|
+
* @returns
|
|
5
|
+
*/
|
|
6
|
+
const createCacheKeyFromArgs = (args) => args.reduce((cacheKey, arg) => (cacheKey += `_${typeof arg === "object" ? JSON.stringify(args) : `${arg}`}_`), "");
|
|
7
|
+
const memoizedFnCache = {};
|
|
8
|
+
/**
|
|
9
|
+
* Wrap a function into a memoized version of itself. Multiple calls for the same function
|
|
10
|
+
* will return the same memoized function - thus enabling a shared cache of results.
|
|
11
|
+
* `const memoizedItemSearch = memoize(searchItems);`
|
|
12
|
+
* @param fn
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export const memoize = (fn) => {
|
|
16
|
+
if (!memoizedFnCache[fn.name]) {
|
|
17
|
+
const cache = {};
|
|
18
|
+
const memoizedFn = (...args) => {
|
|
19
|
+
const cacheKey = createCacheKeyFromArgs(args);
|
|
20
|
+
if (cache[cacheKey]) {
|
|
21
|
+
return cache[cacheKey];
|
|
22
|
+
}
|
|
23
|
+
const asyncFn = fn.call(undefined, ...args);
|
|
24
|
+
cache[cacheKey] = asyncFn;
|
|
25
|
+
return asyncFn;
|
|
26
|
+
};
|
|
27
|
+
memoizedFnCache[fn.name] = memoizedFn;
|
|
28
|
+
}
|
|
29
|
+
return memoizedFnCache[fn.name];
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Clear the cache of a memoized function
|
|
33
|
+
* @param fn
|
|
34
|
+
*/
|
|
35
|
+
export const clearMemoizedCache = (fnName) => {
|
|
36
|
+
delete memoizedFnCache[fnName];
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=memoize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../../src/utils/memoize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,CAAC,IAAW,EAAE,EAAE,CAC7C,IAAI,CAAC,MAAM,CACT,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAChB,CAAC,QAAQ,IAAI,IACX,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EACzD,GAAG,CAAC,EACN,EAAE,CACH,CAAC;AAEJ,MAAM,eAAe,GAAwB,EAAE,CAAC;AAChD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,EAA0B,EAC1B,EAAE;IACF,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,KAAK,GAAwB,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAU,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACnB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;aACxB;YAED,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;YAC5C,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QACF,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;KACvC;IACD,OAAO,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE;IACnD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicValues.js","sourceRoot":"","sources":["../../../../src/core/types/DynamicValues.ts"],"names":[],"mappings":""}
|
|
@@ -23,4 +23,5 @@ tslib_1.__exportStar(require("./IItemEnrichments"), exports);
|
|
|
23
23
|
tslib_1.__exportStar(require("./IServerEnrichments"), exports);
|
|
24
24
|
tslib_1.__exportStar(require("./ISystemStatus"), exports);
|
|
25
25
|
tslib_1.__exportStar(require("./types"), exports);
|
|
26
|
+
tslib_1.__exportStar(require("./DynamicValues"), exports);
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/types/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,0DAAgC;AAChC,wDAA8B;AAC9B,mEAAyC;AACzC,2DAAiC;AACjC,gEAAsC;AACtC,2DAAiC;AACjC,sDAA4B;AAC5B,sDAA4B;AAC5B,2DAAiC;AACjC,2DAAiC;AACjC,uDAA6B;AAC7B,yDAA+B;AAC/B,qDAA2B;AAC3B,wDAA8B;AAC9B,qDAA2B;AAC3B,0DAAgC;AAChC,yDAA+B;AAC/B,6DAAmC;AACnC,+DAAqC;AACrC,0DAAgC;AAChC,kDAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/types/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,0DAAgC;AAChC,wDAA8B;AAC9B,mEAAyC;AACzC,2DAAiC;AACjC,gEAAsC;AACtC,2DAAiC;AACjC,sDAA4B;AAC5B,sDAA4B;AAC5B,2DAAiC;AACjC,2DAAiC;AACjC,uDAA6B;AAC7B,yDAA+B;AAC/B,qDAA2B;AAC3B,wDAA8B;AAC9B,qDAA2B;AAC3B,0DAAgC;AAChC,yDAA+B;AAC/B,6DAAmC;AACnC,+DAAqC;AACrC,0DAAgC;AAChC,kDAAwB;AACxB,0DAAgC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.combineQueries = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
* Naieve implementation to merge two queries into one. This
|
|
7
|
+
* simply combines the filters of the two queries. It does not attempt
|
|
8
|
+
* to disabiguate the filters or predicates. It is up to the caller
|
|
9
|
+
* to ensure that the queries are compatible and don't result in a null set
|
|
10
|
+
* of results.
|
|
11
|
+
* @param queries
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
exports.combineQueries = (queries) => {
|
|
15
|
+
// check tht all queries are for the same entity type
|
|
16
|
+
const targetEntity = queries[0].targetEntity;
|
|
17
|
+
if (queries.some((q) => q.targetEntity !== targetEntity)) {
|
|
18
|
+
throw new Error("Cannot combine queries for different entity types");
|
|
19
|
+
}
|
|
20
|
+
// combine the filters from all the queries
|
|
21
|
+
const filters = queries.reduce((acc, q) => [...acc, ...q.filters], []);
|
|
22
|
+
const result = {
|
|
23
|
+
targetEntity,
|
|
24
|
+
filters,
|
|
25
|
+
};
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=combineQueries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combineQueries.js","sourceRoot":"","sources":["../../../../src/search/_internal/combineQueries.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;GASG;AAEU,QAAA,cAAc,GAAG,CAAC,OAAiB,EAAU,EAAE;IAC1D,qDAAqD;IACrD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,EAAE;QACxD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;KACtE;IAED,2CAA2C;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAW;QACrB,YAAY;QACZ,OAAO;KACR,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isWellKnownTypeFilter = exports.applyWellKnownItemPredicates = exports.WellKnownItemPredicates = exports.itemToSearchResult = exports.portalSearchItems = void 0;
|
|
3
|
+
exports.isWellKnownTypeFilter = exports.applyWellKnownItemPredicates = exports.WellKnownItemPredicates = exports.itemToSearchResult = exports.portalSearchItemsAsItems = exports.portalSearchItems = void 0;
|
|
4
4
|
const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
|
|
5
5
|
const serializeQueryForPortal_1 = require("../serializeQueryForPortal");
|
|
6
6
|
const HubPages_1 = require("../../pages/HubPages");
|
|
@@ -13,13 +13,36 @@ const HubError_1 = require("../../HubError");
|
|
|
13
13
|
const content_1 = require("../../content");
|
|
14
14
|
const util_1 = require("../../util");
|
|
15
15
|
/**
|
|
16
|
-
* @
|
|
17
|
-
* Portal Search Implementation for Items
|
|
16
|
+
* @internal
|
|
17
|
+
* Portal Search Implementation for Items returning IHubSearchResults
|
|
18
18
|
* @param query
|
|
19
19
|
* @param options
|
|
20
20
|
* @returns
|
|
21
21
|
*/
|
|
22
22
|
async function portalSearchItems(query, options) {
|
|
23
|
+
const so = processSearchParams(options, query);
|
|
24
|
+
return searchPortalAsHubSearchResult(so);
|
|
25
|
+
}
|
|
26
|
+
exports.portalSearchItems = portalSearchItems;
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
* Portal Search for Items using IQuery and IHubSearchOptions
|
|
30
|
+
* @param query
|
|
31
|
+
* @param options
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
function portalSearchItemsAsItems(query, options) {
|
|
35
|
+
const so = processSearchParams(options, query);
|
|
36
|
+
return searchPortalAsItem(so);
|
|
37
|
+
}
|
|
38
|
+
exports.portalSearchItemsAsItems = portalSearchItemsAsItems;
|
|
39
|
+
/**
|
|
40
|
+
* Common preprocessing for search options and the query
|
|
41
|
+
* @param options
|
|
42
|
+
* @param query
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
function processSearchParams(options, query) {
|
|
23
46
|
var _a;
|
|
24
47
|
if (!options.requestOptions) {
|
|
25
48
|
throw new HubError_1.default("portalSearchItems", "options.requestOptions is required.");
|
|
@@ -59,9 +82,29 @@ async function portalSearchItems(query, options) {
|
|
|
59
82
|
so.countFields = options.aggFields.join(",");
|
|
60
83
|
so.countSize = options.aggLimit || 10;
|
|
61
84
|
}
|
|
62
|
-
return
|
|
85
|
+
return so;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Internal portal search, which just returns IItems witn no conversion
|
|
89
|
+
* Due to typescript complexity when adding multiple returns types to a function
|
|
90
|
+
* it is simpler to have two functions that do the almost the same thing.
|
|
91
|
+
* @param searchOptions
|
|
92
|
+
* @returns
|
|
93
|
+
*/
|
|
94
|
+
async function searchPortalAsItem(searchOptions) {
|
|
95
|
+
// Execute portal search
|
|
96
|
+
const resp = await arcgis_rest_portal_1.searchItems(searchOptions);
|
|
97
|
+
// convert portal aggregations into hub aggregations
|
|
98
|
+
const aggregations = portalSearchUtils_1.convertPortalAggregations(resp);
|
|
99
|
+
// Construct the return
|
|
100
|
+
return {
|
|
101
|
+
total: resp.total,
|
|
102
|
+
results: resp.results,
|
|
103
|
+
aggregations,
|
|
104
|
+
hasNext: resp.nextStart > -1,
|
|
105
|
+
next: utils_1.getNextFunction(searchOptions, resp.nextStart, resp.total, searchPortalAsItem),
|
|
106
|
+
};
|
|
63
107
|
}
|
|
64
|
-
exports.portalSearchItems = portalSearchItems;
|
|
65
108
|
/**
|
|
66
109
|
* Internal portal search, which then converts `IItem`s to `IHubSearchResult`s
|
|
67
110
|
* handling enrichments & includes along the way
|
|
@@ -69,7 +112,7 @@ exports.portalSearchItems = portalSearchItems;
|
|
|
69
112
|
* @param searchOptions
|
|
70
113
|
* @returns
|
|
71
114
|
*/
|
|
72
|
-
async function
|
|
115
|
+
async function searchPortalAsHubSearchResult(searchOptions) {
|
|
73
116
|
// Execute portal search
|
|
74
117
|
const resp = await arcgis_rest_portal_1.searchItems(searchOptions);
|
|
75
118
|
// create mappable fn that will handle the includes
|
|
@@ -86,7 +129,7 @@ async function searchPortal(searchOptions) {
|
|
|
86
129
|
results,
|
|
87
130
|
aggregations,
|
|
88
131
|
hasNext: resp.nextStart > -1,
|
|
89
|
-
next: utils_1.getNextFunction(searchOptions, resp.nextStart, resp.total,
|
|
132
|
+
next: utils_1.getNextFunction(searchOptions, resp.nextStart, resp.total, searchPortalAsHubSearchResult),
|
|
90
133
|
};
|
|
91
134
|
}
|
|
92
135
|
/**
|