@esri/hub-common 9.48.0 → 10.0.0-next.2
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/es2017/core/traits/WithCatalog.js +1 -0
- package/dist/es2017/core/traits/WithCatalog.js.map +1 -0
- package/dist/es2017/index.js +1 -0
- package/dist/es2017/index.js.map +1 -1
- package/dist/es2017/projects/HubProjects.js.map +1 -1
- package/dist/es2017/search/Catalog.js +346 -0
- package/dist/es2017/search/Catalog.js.map +1 -0
- package/dist/es2017/search/Collection.js +38 -19
- package/dist/es2017/search/Collection.js.map +1 -1
- package/dist/es2017/search/_internal/{ipredicate-utils.js → expandPredicate.js} +1 -1
- package/dist/es2017/search/_internal/expandPredicate.js.map +1 -0
- package/dist/es2017/search/_internal/hubSearchItems.js +3 -137
- package/dist/es2017/search/_internal/hubSearchItems.js.map +1 -1
- package/dist/es2017/search/_internal/index.js +0 -1
- package/dist/es2017/search/_internal/index.js.map +1 -1
- package/dist/es2017/search/_internal/portalSearchGroups.js +1 -2
- package/dist/es2017/search/_internal/portalSearchGroups.js.map +1 -1
- package/dist/es2017/search/_internal/portalSearchItems.js +5 -30
- package/dist/es2017/search/_internal/portalSearchItems.js.map +1 -1
- package/dist/es2017/search/_internal/portalSearchUsers.js +1 -2
- package/dist/es2017/search/_internal/portalSearchUsers.js.map +1 -1
- package/dist/es2017/search/fetchCatalog.js +46 -0
- package/dist/es2017/search/fetchCatalog.js.map +1 -0
- package/dist/es2017/search/hubSearch.js +1 -1
- package/dist/es2017/search/hubSearch.js.map +1 -1
- package/dist/es2017/search/index.js +3 -9
- package/dist/es2017/search/index.js.map +1 -1
- package/dist/es2017/search/serializeQueryForPortal.js +1 -1
- package/dist/es2017/search/serializeQueryForPortal.js.map +1 -1
- package/dist/es2017/search/types/index.js +0 -5
- package/dist/es2017/search/types/index.js.map +1 -1
- package/dist/es2017/search/upgradeCatalogSchema.js +66 -0
- package/dist/es2017/search/upgradeCatalogSchema.js.map +1 -0
- package/dist/es2017/search/utils.js +1 -207
- package/dist/es2017/search/utils.js.map +1 -1
- package/dist/es2017/types/IMessage.js +1 -0
- package/dist/es2017/types/IMessage.js.map +1 -0
- package/dist/es2017/types/index.js +2 -0
- package/dist/es2017/types/index.js.map +1 -0
- package/dist/es2017/types.js.map +1 -1
- package/dist/esm/core/traits/WithCatalog.js +1 -0
- package/dist/esm/core/traits/WithCatalog.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/projects/HubProjects.js.map +1 -1
- package/dist/esm/search/Catalog.js +404 -0
- package/dist/esm/search/Catalog.js.map +1 -0
- package/dist/esm/search/Collection.js +40 -24
- package/dist/esm/search/Collection.js.map +1 -1
- package/dist/esm/search/_internal/{ipredicate-utils.js → expandPredicate.js} +1 -1
- package/dist/esm/search/_internal/expandPredicate.js.map +1 -0
- package/dist/esm/search/_internal/hubSearchItems.js +4 -146
- package/dist/esm/search/_internal/hubSearchItems.js.map +1 -1
- package/dist/esm/search/_internal/index.js +0 -1
- package/dist/esm/search/_internal/index.js.map +1 -1
- package/dist/esm/search/_internal/portalSearchGroups.js +1 -2
- package/dist/esm/search/_internal/portalSearchGroups.js.map +1 -1
- package/dist/esm/search/_internal/portalSearchItems.js +6 -30
- package/dist/esm/search/_internal/portalSearchItems.js.map +1 -1
- package/dist/esm/search/_internal/portalSearchUsers.js +1 -2
- package/dist/esm/search/_internal/portalSearchUsers.js.map +1 -1
- package/dist/esm/search/fetchCatalog.js +59 -0
- package/dist/esm/search/fetchCatalog.js.map +1 -0
- package/dist/esm/search/hubSearch.js +1 -1
- package/dist/esm/search/hubSearch.js.map +1 -1
- package/dist/esm/search/index.js +3 -9
- package/dist/esm/search/index.js.map +1 -1
- package/dist/esm/search/serializeQueryForPortal.js +1 -1
- package/dist/esm/search/serializeQueryForPortal.js.map +1 -1
- package/dist/esm/search/types/index.js +0 -5
- package/dist/esm/search/types/index.js.map +1 -1
- package/dist/esm/search/upgradeCatalogSchema.js +66 -0
- package/dist/esm/search/upgradeCatalogSchema.js.map +1 -0
- package/dist/esm/search/utils.js +1 -204
- package/dist/esm/search/utils.js.map +1 -1
- package/dist/esm/types/IMessage.js +1 -0
- package/dist/esm/types/IMessage.js.map +1 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types.js.map +1 -1
- package/dist/node/{search/types/ICollection.js → core/traits/WithCatalog.js} +1 -1
- package/dist/node/core/traits/WithCatalog.js.map +1 -0
- package/dist/node/index.js +1 -0
- package/dist/node/index.js.map +1 -1
- package/dist/node/projects/HubProjects.js.map +1 -1
- package/dist/node/search/Catalog.js +350 -0
- package/dist/node/search/Catalog.js.map +1 -0
- package/dist/node/search/Collection.js +37 -18
- package/dist/node/search/Collection.js.map +1 -1
- package/dist/node/search/_internal/{ipredicate-utils.js → expandPredicate.js} +1 -1
- package/dist/node/search/_internal/expandPredicate.js.map +1 -0
- package/dist/node/search/_internal/hubSearchItems.js +4 -139
- package/dist/node/search/_internal/hubSearchItems.js.map +1 -1
- package/dist/node/search/_internal/index.js +0 -1
- package/dist/node/search/_internal/index.js.map +1 -1
- package/dist/node/search/_internal/portalSearchGroups.js +2 -3
- package/dist/node/search/_internal/portalSearchGroups.js.map +1 -1
- package/dist/node/search/_internal/portalSearchItems.js +6 -31
- package/dist/node/search/_internal/portalSearchItems.js.map +1 -1
- package/dist/node/search/_internal/portalSearchUsers.js +2 -3
- package/dist/node/search/_internal/portalSearchUsers.js.map +1 -1
- package/dist/node/search/fetchCatalog.js +50 -0
- package/dist/node/search/fetchCatalog.js.map +1 -0
- package/dist/node/search/hubSearch.js +1 -1
- package/dist/node/search/hubSearch.js.map +1 -1
- package/dist/node/search/index.js +3 -9
- package/dist/node/search/index.js.map +1 -1
- package/dist/node/search/serializeQueryForPortal.js +2 -2
- package/dist/node/search/serializeQueryForPortal.js.map +1 -1
- package/dist/node/search/types/index.js +0 -5
- package/dist/node/search/types/index.js.map +1 -1
- package/dist/node/search/upgradeCatalogSchema.js +71 -0
- package/dist/node/search/upgradeCatalogSchema.js.map +1 -0
- package/dist/node/search/utils.js +1 -213
- package/dist/node/search/utils.js.map +1 -1
- package/dist/node/{search/types/ICatalog.js → types/IMessage.js} +1 -1
- package/dist/node/types/IMessage.js.map +1 -0
- package/dist/node/types/index.js +5 -0
- package/dist/node/types/index.js.map +1 -0
- package/dist/node/types.js.map +1 -1
- package/dist/types/core/traits/WithCatalog.d.ts +7 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/search/Catalog.d.ts +143 -0
- package/dist/types/search/Collection.d.ts +23 -2
- package/dist/types/search/_internal/{ipredicate-utils.d.ts → expandPredicate.d.ts} +0 -0
- package/dist/types/search/_internal/hubSearchItems.d.ts +3 -4
- package/dist/types/search/_internal/index.d.ts +0 -1
- package/dist/types/search/_internal/portalSearchItems.d.ts +15 -15
- package/dist/types/search/fetchCatalog.d.ts +10 -0
- package/dist/types/search/index.d.ts +3 -9
- package/dist/types/search/types/IHubSearchOptions.d.ts +5 -1
- package/dist/types/search/types/IHubSearchResponse.d.ts +3 -3
- package/dist/types/search/types/index.d.ts +0 -5
- package/dist/types/search/types/types.d.ts +0 -206
- package/dist/types/search/upgradeCatalogSchema.d.ts +12 -0
- package/dist/types/search/utils.d.ts +2 -58
- package/dist/types/types/IMessage.d.ts +32 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types.d.ts +0 -2
- package/dist/umd/common.umd.js +1374 -2450
- package/dist/umd/common.umd.js.map +1 -1
- package/package.json +1 -1
- package/dist/es2017/search/_internal/ipredicate-utils.js.map +0 -1
- package/dist/es2017/search/_internal/state.js +0 -155
- package/dist/es2017/search/_internal/state.js.map +0 -1
- package/dist/es2017/search/_searchContent.js +0 -116
- package/dist/es2017/search/_searchContent.js.map +0 -1
- package/dist/es2017/search/_searchGroups.js +0 -88
- package/dist/es2017/search/_searchGroups.js.map +0 -1
- package/dist/es2017/search/_searchUsers.js +0 -89
- package/dist/es2017/search/_searchUsers.js.map +0 -1
- package/dist/es2017/search/collectionState.js +0 -60
- package/dist/es2017/search/collectionState.js.map +0 -1
- package/dist/es2017/search/content-utils.js +0 -455
- package/dist/es2017/search/content-utils.js.map +0 -1
- package/dist/es2017/search/convertCatalog.js +0 -33
- package/dist/es2017/search/convertCatalog.js.map +0 -1
- package/dist/es2017/search/filter-utils.js +0 -31
- package/dist/es2017/search/filter-utils.js.map +0 -1
- package/dist/es2017/search/group-utils.js +0 -142
- package/dist/es2017/search/group-utils.js.map +0 -1
- package/dist/es2017/search/types/ICatalog.js +0 -1
- package/dist/es2017/search/types/ICatalog.js.map +0 -1
- package/dist/es2017/search/types/ICollection.js +0 -1
- package/dist/es2017/search/types/ICollection.js.map +0 -1
- package/dist/es2017/search/types/IFacet.js +0 -1
- package/dist/es2017/search/types/IFacet.js.map +0 -1
- package/dist/es2017/search/types/IFacetOption.js +0 -1
- package/dist/es2017/search/types/IFacetOption.js.map +0 -1
- package/dist/es2017/search/types/IHubApiSearchRequest.js +0 -1
- package/dist/es2017/search/types/IHubApiSearchRequest.js.map +0 -1
- package/dist/es2017/search/user-utils.js +0 -139
- package/dist/es2017/search/user-utils.js.map +0 -1
- package/dist/esm/search/_internal/ipredicate-utils.js.map +0 -1
- package/dist/esm/search/_internal/state.js +0 -155
- package/dist/esm/search/_internal/state.js.map +0 -1
- package/dist/esm/search/_searchContent.js +0 -118
- package/dist/esm/search/_searchContent.js.map +0 -1
- package/dist/esm/search/_searchGroups.js +0 -91
- package/dist/esm/search/_searchGroups.js.map +0 -1
- package/dist/esm/search/_searchUsers.js +0 -92
- package/dist/esm/search/_searchUsers.js.map +0 -1
- package/dist/esm/search/collectionState.js +0 -61
- package/dist/esm/search/collectionState.js.map +0 -1
- package/dist/esm/search/content-utils.js +0 -462
- package/dist/esm/search/content-utils.js.map +0 -1
- package/dist/esm/search/convertCatalog.js +0 -33
- package/dist/esm/search/convertCatalog.js.map +0 -1
- package/dist/esm/search/filter-utils.js +0 -31
- package/dist/esm/search/filter-utils.js.map +0 -1
- package/dist/esm/search/group-utils.js +0 -146
- package/dist/esm/search/group-utils.js.map +0 -1
- package/dist/esm/search/types/ICatalog.js +0 -1
- package/dist/esm/search/types/ICatalog.js.map +0 -1
- package/dist/esm/search/types/ICollection.js +0 -1
- package/dist/esm/search/types/ICollection.js.map +0 -1
- package/dist/esm/search/types/IFacet.js +0 -1
- package/dist/esm/search/types/IFacet.js.map +0 -1
- package/dist/esm/search/types/IFacetOption.js +0 -1
- package/dist/esm/search/types/IFacetOption.js.map +0 -1
- package/dist/esm/search/types/IHubApiSearchRequest.js +0 -1
- package/dist/esm/search/types/IHubApiSearchRequest.js.map +0 -1
- package/dist/esm/search/user-utils.js +0 -143
- package/dist/esm/search/user-utils.js.map +0 -1
- package/dist/node/search/_internal/ipredicate-utils.js.map +0 -1
- package/dist/node/search/_internal/state.js +0 -166
- package/dist/node/search/_internal/state.js.map +0 -1
- package/dist/node/search/_searchContent.js +0 -120
- package/dist/node/search/_searchContent.js.map +0 -1
- package/dist/node/search/_searchGroups.js +0 -92
- package/dist/node/search/_searchGroups.js.map +0 -1
- package/dist/node/search/_searchUsers.js +0 -93
- package/dist/node/search/_searchUsers.js.map +0 -1
- package/dist/node/search/collectionState.js +0 -65
- package/dist/node/search/collectionState.js.map +0 -1
- package/dist/node/search/content-utils.js +0 -466
- package/dist/node/search/content-utils.js.map +0 -1
- package/dist/node/search/convertCatalog.js +0 -37
- package/dist/node/search/convertCatalog.js.map +0 -1
- package/dist/node/search/filter-utils.js +0 -36
- package/dist/node/search/filter-utils.js.map +0 -1
- package/dist/node/search/group-utils.js +0 -148
- package/dist/node/search/group-utils.js.map +0 -1
- package/dist/node/search/types/ICatalog.js.map +0 -1
- package/dist/node/search/types/ICollection.js.map +0 -1
- package/dist/node/search/types/IFacet.js +0 -3
- package/dist/node/search/types/IFacet.js.map +0 -1
- package/dist/node/search/types/IFacetOption.js +0 -3
- package/dist/node/search/types/IFacetOption.js.map +0 -1
- package/dist/node/search/types/IHubApiSearchRequest.js +0 -3
- package/dist/node/search/types/IHubApiSearchRequest.js.map +0 -1
- package/dist/node/search/user-utils.js +0 -145
- package/dist/node/search/user-utils.js.map +0 -1
- package/dist/types/search/_internal/state.d.ts +0 -70
- package/dist/types/search/_searchContent.d.ts +0 -9
- package/dist/types/search/_searchGroups.d.ts +0 -17
- package/dist/types/search/_searchUsers.d.ts +0 -31
- package/dist/types/search/collectionState.d.ts +0 -19
- package/dist/types/search/content-utils.d.ts +0 -83
- package/dist/types/search/convertCatalog.d.ts +0 -6
- package/dist/types/search/filter-utils.d.ts +0 -13
- package/dist/types/search/group-utils.d.ts +0 -36
- package/dist/types/search/types/ICatalog.d.ts +0 -87
- package/dist/types/search/types/ICollection.d.ts +0 -28
- package/dist/types/search/types/IFacet.d.ts +0 -62
- package/dist/types/search/types/IFacetOption.d.ts +0 -30
- package/dist/types/search/types/IHubApiSearchRequest.d.ts +0 -16
- package/dist/types/search/user-utils.d.ts +0 -35
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Catalog = void 0;
|
|
4
|
+
const ArcGISContextManager_1 = require("../ArcGISContextManager");
|
|
5
|
+
const HubError_1 = require("../HubError");
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const Collection_1 = require("./Collection");
|
|
9
|
+
const fetchCatalog_1 = require("./fetchCatalog");
|
|
10
|
+
const hubSearch_1 = require("./hubSearch");
|
|
11
|
+
const upgradeCatalogSchema_1 = require("./upgradeCatalogSchema");
|
|
12
|
+
/**
|
|
13
|
+
* Catalog Class
|
|
14
|
+
*
|
|
15
|
+
* Abstracts working with Catalogs and fetching collections with
|
|
16
|
+
* the correct scope applied.
|
|
17
|
+
*
|
|
18
|
+
* For more information, check out the [Catalog & Collection Guide](/hub.js/guides/concepts/catalog-collection/)
|
|
19
|
+
*/
|
|
20
|
+
class Catalog {
|
|
21
|
+
// internal - use static factory methods
|
|
22
|
+
constructor(catalog, context) {
|
|
23
|
+
this._catalog = catalog;
|
|
24
|
+
this._context = context;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a Collection instance from a Catalog json object, a site url or itemId
|
|
28
|
+
* '''js
|
|
29
|
+
* const catalog = await Catalog.create('https://site-org.hub.arcgis.com', context);
|
|
30
|
+
* '''
|
|
31
|
+
*
|
|
32
|
+
* @param identifier
|
|
33
|
+
* @param context
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
static async init(identifier, context) {
|
|
37
|
+
// if context is not passed, create a default that point to AGO prod
|
|
38
|
+
if (!context) {
|
|
39
|
+
const mgr = await ArcGISContextManager_1.ArcGISContextManager.create();
|
|
40
|
+
context = mgr.context;
|
|
41
|
+
}
|
|
42
|
+
// fetch the catalog
|
|
43
|
+
const fetched = await fetchCatalog_1.fetchCatalog(identifier, context.hubRequestOptions);
|
|
44
|
+
// return an instance
|
|
45
|
+
return new Catalog(fetched, context);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a Catalog instance from a Catalog Json object
|
|
49
|
+
* @param json
|
|
50
|
+
* @param context
|
|
51
|
+
* @returns
|
|
52
|
+
*/
|
|
53
|
+
static fromJson(json, context) {
|
|
54
|
+
// ensure it's in the latest structure
|
|
55
|
+
const catalog = upgradeCatalogSchema_1.upgradeCatalogSchema(json);
|
|
56
|
+
return new Catalog(catalog, context);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Return the JSON object backing the instance
|
|
60
|
+
* @returns
|
|
61
|
+
*/
|
|
62
|
+
toJson() {
|
|
63
|
+
return util_1.cloneObject(this._catalog);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Return the schema version
|
|
67
|
+
*/
|
|
68
|
+
get schemaVersion() {
|
|
69
|
+
return this._catalog.schemaVersion;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Title getter
|
|
73
|
+
*/
|
|
74
|
+
get title() {
|
|
75
|
+
return this._catalog.title;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Title setter
|
|
79
|
+
*/
|
|
80
|
+
set title(v) {
|
|
81
|
+
this._catalog.title = v;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Return the existing scopes hash
|
|
85
|
+
*/
|
|
86
|
+
get scopes() {
|
|
87
|
+
return this._catalog.scopes;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Return an array of the entity types available in this Catalog
|
|
91
|
+
*/
|
|
92
|
+
get availableScopes() {
|
|
93
|
+
return Object.keys(this.scopes);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get the scope's query for a particular entity type
|
|
97
|
+
* @param type
|
|
98
|
+
* @returns
|
|
99
|
+
*/
|
|
100
|
+
getScope(type) {
|
|
101
|
+
return this._catalog.scopes[type];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Set the scope for a specific entity type
|
|
105
|
+
* @param type
|
|
106
|
+
* @param query
|
|
107
|
+
*/
|
|
108
|
+
setScope(type, query) {
|
|
109
|
+
this._catalog.scopes[type] = query;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the collections array. Returns simple objects not Collection instances
|
|
113
|
+
*/
|
|
114
|
+
get collections() {
|
|
115
|
+
return this._catalog.collections || [];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get the names of the collections
|
|
119
|
+
*/
|
|
120
|
+
get collectionNames() {
|
|
121
|
+
return utils_1.mapBy("key", this.collections);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get a Collection instance by name
|
|
125
|
+
* @param name
|
|
126
|
+
* @returns
|
|
127
|
+
*/
|
|
128
|
+
getCollection(name) {
|
|
129
|
+
const json = this.collections.find((entry) => entry.key === name);
|
|
130
|
+
if (json) {
|
|
131
|
+
// clone it then merge in the associated scope filter
|
|
132
|
+
const clone = util_1.cloneObject(json);
|
|
133
|
+
const catalogScope = this.getScope(clone.scope.targetEntity);
|
|
134
|
+
if (catalogScope === null || catalogScope === void 0 ? void 0 : catalogScope.filters) {
|
|
135
|
+
clone.scope.filters = [...clone.scope.filters, ...catalogScope.filters];
|
|
136
|
+
}
|
|
137
|
+
return Collection_1.Collection.fromJson(clone, this._context);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
throw new HubError_1.default("getCollection", `Collection "${name}" is not present in the Catalog`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Search for Items
|
|
145
|
+
* Will throw if the Catalog does not have a scope defined for items
|
|
146
|
+
* @param query
|
|
147
|
+
* @param options
|
|
148
|
+
* @returns
|
|
149
|
+
*/
|
|
150
|
+
searchItems(query, options = {}) {
|
|
151
|
+
if (!this.getScope("item")) {
|
|
152
|
+
const result = this.getEmptyResult();
|
|
153
|
+
result.messages = [
|
|
154
|
+
{
|
|
155
|
+
code: "missingScope",
|
|
156
|
+
message: "Catalog does not have a scope for items",
|
|
157
|
+
data: {
|
|
158
|
+
scope: "item",
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
];
|
|
162
|
+
return Promise.resolve(result);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// ensure it's an item search
|
|
166
|
+
options.targetEntity = "item";
|
|
167
|
+
return this.search(query, options);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Search for Groups
|
|
172
|
+
* Will throw if the Catalog does not have a scope defined for groups
|
|
173
|
+
* @param query
|
|
174
|
+
* @param options
|
|
175
|
+
* @returns
|
|
176
|
+
*/
|
|
177
|
+
searchGroups(query, options = {}) {
|
|
178
|
+
if (!this.getScope("group")) {
|
|
179
|
+
const result = this.getEmptyResult();
|
|
180
|
+
result.messages = [
|
|
181
|
+
{
|
|
182
|
+
code: "missingScope",
|
|
183
|
+
message: "Catalog does not have a scope for groups",
|
|
184
|
+
data: {
|
|
185
|
+
scope: "group",
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
];
|
|
189
|
+
return Promise.resolve(result);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
// ensure it's an group search
|
|
193
|
+
options.targetEntity = "group";
|
|
194
|
+
return this.search(query, options);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Search for Users
|
|
199
|
+
* Will throw if the Catalog does not have a scope defined for users
|
|
200
|
+
* @param query
|
|
201
|
+
* @param options
|
|
202
|
+
* @returns
|
|
203
|
+
*/
|
|
204
|
+
searchUsers(query, options = {}) {
|
|
205
|
+
if (!this.getScope("user")) {
|
|
206
|
+
const result = this.getEmptyResult();
|
|
207
|
+
result.messages = [
|
|
208
|
+
{
|
|
209
|
+
code: "missingScope",
|
|
210
|
+
message: "Catalog does not have a scope for user",
|
|
211
|
+
data: {
|
|
212
|
+
scope: "user",
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
];
|
|
216
|
+
return Promise.resolve(result);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// ensure it's an group search
|
|
220
|
+
options.targetEntity = "user";
|
|
221
|
+
return this.search(query, options);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Execute a search against all the collections in the Catalog
|
|
226
|
+
* @param query
|
|
227
|
+
* @param options
|
|
228
|
+
* @returns
|
|
229
|
+
*/
|
|
230
|
+
async searchCollections(query, options = {}) {
|
|
231
|
+
// build a query
|
|
232
|
+
const qry = {
|
|
233
|
+
targetEntity: "item",
|
|
234
|
+
filters: [
|
|
235
|
+
{
|
|
236
|
+
predicates: [
|
|
237
|
+
{
|
|
238
|
+
term: query,
|
|
239
|
+
},
|
|
240
|
+
],
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
};
|
|
244
|
+
// iterate the colllections, issue searchs for each one
|
|
245
|
+
const promiseKeys = [];
|
|
246
|
+
const promises = this.collectionNames.map((name) => {
|
|
247
|
+
const col = this.getCollection(name);
|
|
248
|
+
promiseKeys.push(name);
|
|
249
|
+
qry.targetEntity = col.targetEntity;
|
|
250
|
+
return col.search(qry, options);
|
|
251
|
+
});
|
|
252
|
+
const responses = await Promise.all(promises);
|
|
253
|
+
// merge the responses into the hash
|
|
254
|
+
const hash = {};
|
|
255
|
+
for (let i = 0; i < promiseKeys.length; i++) {
|
|
256
|
+
hash[promiseKeys[i]] = responses[i];
|
|
257
|
+
}
|
|
258
|
+
return hash;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Execute a search against all the scopes in the Catalog
|
|
262
|
+
* @param query
|
|
263
|
+
* @param options
|
|
264
|
+
* @returns
|
|
265
|
+
*/
|
|
266
|
+
async searchScopes(query, options = {}) {
|
|
267
|
+
const qry = {
|
|
268
|
+
targetEntity: "item",
|
|
269
|
+
filters: [
|
|
270
|
+
{
|
|
271
|
+
predicates: [
|
|
272
|
+
{
|
|
273
|
+
term: query,
|
|
274
|
+
},
|
|
275
|
+
],
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
};
|
|
279
|
+
// iterate the scopes, issue searchs for each one
|
|
280
|
+
const promiseKeys = [];
|
|
281
|
+
const promises = this.availableScopes.map((name) => {
|
|
282
|
+
promiseKeys.push(name);
|
|
283
|
+
// make clones
|
|
284
|
+
const qryClone = util_1.cloneObject(qry);
|
|
285
|
+
const optsClone = util_1.cloneObject(options);
|
|
286
|
+
// set the target entity
|
|
287
|
+
qryClone.targetEntity = name;
|
|
288
|
+
optsClone.targetEntity = name;
|
|
289
|
+
// return the search promise
|
|
290
|
+
return this.search(qryClone, optsClone);
|
|
291
|
+
});
|
|
292
|
+
// wait for all the searches to complete
|
|
293
|
+
const responses = await Promise.all(promises);
|
|
294
|
+
// merge the responses into the hash
|
|
295
|
+
const hash = {};
|
|
296
|
+
for (let i = 0; i < promiseKeys.length; i++) {
|
|
297
|
+
hash[promiseKeys[i]] = responses[i];
|
|
298
|
+
}
|
|
299
|
+
return hash;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Execute a search against the Catalog as a whole
|
|
303
|
+
* @param query
|
|
304
|
+
* @param targetEntity
|
|
305
|
+
* @returns
|
|
306
|
+
*/
|
|
307
|
+
search(query, options) {
|
|
308
|
+
const targetEntity = options.targetEntity;
|
|
309
|
+
let qry;
|
|
310
|
+
if (typeof query === "string") {
|
|
311
|
+
qry = {
|
|
312
|
+
targetEntity,
|
|
313
|
+
filters: [
|
|
314
|
+
{
|
|
315
|
+
predicates: [
|
|
316
|
+
{
|
|
317
|
+
term: query,
|
|
318
|
+
},
|
|
319
|
+
],
|
|
320
|
+
},
|
|
321
|
+
],
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
qry = util_1.cloneObject(query);
|
|
326
|
+
}
|
|
327
|
+
// Now merge in catalog scope level filters
|
|
328
|
+
qry.filters = [...qry.filters, ...this.getScope(targetEntity).filters];
|
|
329
|
+
const opts = util_1.cloneObject(options);
|
|
330
|
+
// An Catalog instance always uses the context so we remove/replace any passed in auth
|
|
331
|
+
delete opts.authentication;
|
|
332
|
+
opts.requestOptions = this._context.hubRequestOptions;
|
|
333
|
+
return hubSearch_1.hubSearch(qry, opts);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Construct an empty result. Returned when a search is performed against an entity type that
|
|
337
|
+
* does not have a scope defined.
|
|
338
|
+
* @returns
|
|
339
|
+
*/
|
|
340
|
+
getEmptyResult() {
|
|
341
|
+
return {
|
|
342
|
+
results: [],
|
|
343
|
+
total: 0,
|
|
344
|
+
hasNext: false,
|
|
345
|
+
next: null,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
exports.Catalog = Catalog;
|
|
350
|
+
//# sourceMappingURL=Catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../../src/search/Catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,22 +2,34 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Collection = void 0;
|
|
4
4
|
const __1 = require("..");
|
|
5
|
+
const hubSearch_1 = require("./hubSearch");
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
+
* Collection Class
|
|
8
|
+
*
|
|
9
|
+
* Abstracts searching a Collection
|
|
10
|
+
*
|
|
11
|
+
* For more information, check out the [Catalog & Collection Guide](/hub.js/guides/concepts/catalog-collection/)
|
|
7
12
|
*/
|
|
8
|
-
/* istanbul ignore next */
|
|
9
13
|
class Collection {
|
|
10
14
|
constructor(collection, context) {
|
|
11
15
|
this._collection = collection;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
this._context = context;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create an instance of a Collection from a JSON object
|
|
20
|
+
* @param collection
|
|
21
|
+
* @param context
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
static fromJson(collection, context) {
|
|
25
|
+
return new Collection(collection, context);
|
|
15
26
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Return the JSON object backing the instance
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
toJson() {
|
|
32
|
+
return __1.cloneObject(this._collection);
|
|
21
33
|
}
|
|
22
34
|
// Getters
|
|
23
35
|
get label() {
|
|
@@ -27,7 +39,7 @@ class Collection {
|
|
|
27
39
|
return this._collection.key;
|
|
28
40
|
}
|
|
29
41
|
get include() {
|
|
30
|
-
return this._collection.include;
|
|
42
|
+
return this._collection.include || [];
|
|
31
43
|
}
|
|
32
44
|
get scope() {
|
|
33
45
|
return this._collection.scope;
|
|
@@ -41,13 +53,18 @@ class Collection {
|
|
|
41
53
|
get targetEntity() {
|
|
42
54
|
return this._collection.targetEntity;
|
|
43
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Search the collection using a string or IQuery
|
|
58
|
+
* @param query
|
|
59
|
+
* @param options
|
|
60
|
+
* @returns
|
|
61
|
+
*/
|
|
44
62
|
async search(query, options = {}) {
|
|
45
|
-
var _a;
|
|
46
63
|
let qry;
|
|
47
64
|
if (typeof query === "string") {
|
|
48
65
|
// construct a query from that...
|
|
49
66
|
qry = {
|
|
50
|
-
targetEntity:
|
|
67
|
+
targetEntity: this._collection.targetEntity,
|
|
51
68
|
filters: [
|
|
52
69
|
{
|
|
53
70
|
predicates: [
|
|
@@ -62,16 +79,18 @@ class Collection {
|
|
|
62
79
|
else {
|
|
63
80
|
qry = query;
|
|
64
81
|
}
|
|
82
|
+
// TODO: What should happen when a Query is passed in that has a targetEntity that doesn't match the collection's targetEntity?
|
|
65
83
|
// merge the passed in query w/ the scope
|
|
66
84
|
qry.filters = [...qry.filters, ...this.scope.filters];
|
|
67
|
-
|
|
85
|
+
const opts = __1.cloneObject(options);
|
|
86
|
+
opts.requestOptions = this._context.hubRequestOptions;
|
|
68
87
|
// inject default sort info if not specified
|
|
69
|
-
|
|
70
|
-
|
|
88
|
+
opts.sortField = options.sortField || this.sortField;
|
|
89
|
+
opts.sortOrder = options.sortOrder || this.sortDirection;
|
|
71
90
|
// inject default includes if not specified
|
|
72
|
-
|
|
91
|
+
opts.include = options.include || this.include;
|
|
73
92
|
// execute the search and return results
|
|
74
|
-
return
|
|
93
|
+
return hubSearch_1.hubSearch(qry, opts);
|
|
75
94
|
}
|
|
76
95
|
}
|
|
77
96
|
exports.Collection = Collection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../../src/search/Collection.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../../src/search/Collection.ts"],"names":[],"mappings":";;;AAAA,0BAAiD;AASjD,2CAAwC;AACxC;;;;;;GAMG;AACH,MAAa,UAAU;IAGrB,YAAoB,UAA0B,EAAE,OAAuB;QACrE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,QAAQ,CACpB,UAA0B,EAC1B,OAAuB;QAEvB,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,eAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,UAAU;IAEV,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAChC,CAAC;IACD,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC9B,CAAC;IACD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAChC,CAAC;IACD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,OAAO,CAAC;IAC/C,CAAC;IACD,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,KAAK,CAAC;IACjD,CAAC;IACD,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CACjB,KAAsB,EACtB,UAA6B,EAAE;QAE/B,IAAI,GAAW,CAAC;QAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,iCAAiC;YACjC,GAAG,GAAG;gBACJ,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY;gBAC3C,OAAO,EAAE;oBACP;wBACE,UAAU,EAAE;4BACV;gCACE,IAAI,EAAE,KAAK;6BACZ;yBACF;qBACF;iBACF;aACF,CAAC;SACH;aAAM;YACL,GAAG,GAAG,KAAK,CAAC;SACb;QAED,+HAA+H;QAE/H,yCAAyC;QACzC,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,eAAW,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACtD,4CAA4C;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC;QACzD,2CAA2C;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAE/C,wCAAwC;QACxC,OAAO,qBAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF;AAjGD,gCAiGC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expandPredicate.js","sourceRoot":"","sources":["../../../../src/search/_internal/expandPredicate.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAyC;AAEzC,oCAAwE;AAExE;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,SAAqB;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,MAAM;QACN,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;KACjB,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;AAhCD,0CAgCC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const objects_1 = require("../../objects");
|
|
3
|
+
exports.hubContentToSearchResult = exports.jsonApiToHubContent = exports.hubSearchItems = void 0;
|
|
5
4
|
const util_1 = require("../../util");
|
|
6
|
-
const utils_1 = require("../utils");
|
|
7
5
|
// ## ## ####### ######## ########
|
|
8
6
|
// ### ## ## ## ## ##
|
|
9
7
|
// #### ## ## ## ## ##
|
|
@@ -16,104 +14,13 @@ const utils_1 = require("../utils");
|
|
|
16
14
|
/**
|
|
17
15
|
* @private
|
|
18
16
|
* Execute item search against the Hub API
|
|
19
|
-
* @param
|
|
17
|
+
* @param query
|
|
20
18
|
* @param options
|
|
21
19
|
* @returns
|
|
22
20
|
*/
|
|
23
21
|
/* istanbul ignore next */
|
|
24
|
-
async function hubSearchItems(
|
|
25
|
-
|
|
26
|
-
// TODO: better mapping from api to apiUrl
|
|
27
|
-
const api = utils_1.expandApi(options.api || "hub");
|
|
28
|
-
const apiUrl = `${api.url}/api/items/beta/search`;
|
|
29
|
-
// Purge filterType from the filters array
|
|
30
|
-
const cleanFilters = [];
|
|
31
|
-
filters.forEach((block) => {
|
|
32
|
-
const b = {
|
|
33
|
-
operation: block.operation,
|
|
34
|
-
filters: block.filters.map((f) => {
|
|
35
|
-
const c = util_1.cloneObject(f);
|
|
36
|
-
delete c.filterType;
|
|
37
|
-
return c;
|
|
38
|
-
}),
|
|
39
|
-
};
|
|
40
|
-
cleanFilters.push(b);
|
|
41
|
-
});
|
|
42
|
-
const searchRequest = {
|
|
43
|
-
q: cleanFilters,
|
|
44
|
-
options: {
|
|
45
|
-
num: options.num || 10,
|
|
46
|
-
start: options.start || 1,
|
|
47
|
-
sortField: options.sortField,
|
|
48
|
-
sortOrder: options.sortOrder,
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
// Add optional props via setProp b/c typescript really does not like
|
|
52
|
-
// adding properties after defining an object
|
|
53
|
-
if ((_a = options.aggFields) === null || _a === void 0 ? void 0 : _a.length) {
|
|
54
|
-
const aggs = [
|
|
55
|
-
{
|
|
56
|
-
mode: "terms",
|
|
57
|
-
fields: options.aggFields,
|
|
58
|
-
num: options.aggLimit || 10,
|
|
59
|
-
},
|
|
60
|
-
];
|
|
61
|
-
objects_1.setProp("aggregations", aggs, searchRequest.options);
|
|
62
|
-
}
|
|
63
|
-
if (options.authentication) {
|
|
64
|
-
const session = {
|
|
65
|
-
token: options.authentication.token,
|
|
66
|
-
portal: options.authentication.portal,
|
|
67
|
-
};
|
|
68
|
-
objects_1.setProp("session", session, searchRequest.options);
|
|
69
|
-
}
|
|
70
|
-
const opts = {
|
|
71
|
-
method: "POST",
|
|
72
|
-
mode: "cors",
|
|
73
|
-
cache: "no-cache",
|
|
74
|
-
headers: {
|
|
75
|
-
"Content-Type": "application/json",
|
|
76
|
-
},
|
|
77
|
-
body: JSON.stringify(searchRequest),
|
|
78
|
-
};
|
|
79
|
-
try {
|
|
80
|
-
const raw = await fetch(apiUrl, opts);
|
|
81
|
-
const json = await raw.json();
|
|
82
|
-
let token;
|
|
83
|
-
if (options.authentication) {
|
|
84
|
-
const us = options.authentication;
|
|
85
|
-
token = us.token;
|
|
86
|
-
}
|
|
87
|
-
const tokenizeThubmnailUrl = (entry) => {
|
|
88
|
-
if (token && entry.attributes.access !== "public") {
|
|
89
|
-
entry.attributes.thumbnailUrl = `${entry.attributes.thumbnailUrl}?token=${token}`;
|
|
90
|
-
}
|
|
91
|
-
return entry;
|
|
92
|
-
};
|
|
93
|
-
json.data = json.data.map(tokenizeThubmnailUrl);
|
|
94
|
-
// convert items to IHubSerchResult
|
|
95
|
-
const conversion = (entry) => {
|
|
96
|
-
return hubContentToSearchResult(jsonApiToHubContent(entry));
|
|
97
|
-
};
|
|
98
|
-
const results = await Promise.all(json.data.map(conversion));
|
|
99
|
-
const facets = convertHubResponseToFacets(json);
|
|
100
|
-
// now transform into a IHubSearchResponse
|
|
101
|
-
const response = {
|
|
102
|
-
total: json.meta.total,
|
|
103
|
-
results,
|
|
104
|
-
facets,
|
|
105
|
-
hasNext: json.meta.hasNext,
|
|
106
|
-
next: () => {
|
|
107
|
-
// tslint:disable-next-line
|
|
108
|
-
Promise.resolve(null);
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
return Promise.resolve(response);
|
|
112
|
-
}
|
|
113
|
-
catch (ex) {
|
|
114
|
-
// TODO: Turn into a formal error
|
|
115
|
-
throw ex;
|
|
116
|
-
}
|
|
22
|
+
async function hubSearchItems(query, options) {
|
|
23
|
+
throw new Error("Not implemented");
|
|
117
24
|
}
|
|
118
25
|
exports.hubSearchItems = hubSearchItems;
|
|
119
26
|
/**
|
|
@@ -154,46 +61,4 @@ function hubContentToSearchResult(content) {
|
|
|
154
61
|
return Promise.resolve(result);
|
|
155
62
|
}
|
|
156
63
|
exports.hubContentToSearchResult = hubContentToSearchResult;
|
|
157
|
-
/* istanbul ignore next */
|
|
158
|
-
function convertHubResponseToFacets(response, operation = "OR") {
|
|
159
|
-
var _a;
|
|
160
|
-
const result = [];
|
|
161
|
-
if ((_a = response.meta) === null || _a === void 0 ? void 0 : _a.aggregations) {
|
|
162
|
-
const meta = response.meta;
|
|
163
|
-
meta.aggregations.forEach((entry) => {
|
|
164
|
-
// Dyanmic facets typically "AND" so we are refining
|
|
165
|
-
const facet = {
|
|
166
|
-
label: entry.field,
|
|
167
|
-
key: entry.field,
|
|
168
|
-
aggField: entry.field,
|
|
169
|
-
display: "multi-select",
|
|
170
|
-
operation,
|
|
171
|
-
};
|
|
172
|
-
const options = [];
|
|
173
|
-
entry.values.forEach((fv) => {
|
|
174
|
-
const filter = {
|
|
175
|
-
filterType: "item",
|
|
176
|
-
};
|
|
177
|
-
// construct the filter based on the operation
|
|
178
|
-
const matchKey = operation === "OR" ? "any" : "all";
|
|
179
|
-
const filterMatchOption = {};
|
|
180
|
-
filterMatchOption[matchKey] = [fv.value];
|
|
181
|
-
filter[entry.field] = filterMatchOption;
|
|
182
|
-
// construct the FacetOption
|
|
183
|
-
const fo = {
|
|
184
|
-
label: `${fv.value} (${fv.count})`,
|
|
185
|
-
key: fv.value,
|
|
186
|
-
count: fv.count,
|
|
187
|
-
selected: false,
|
|
188
|
-
filters: [filter],
|
|
189
|
-
};
|
|
190
|
-
options.push(fo);
|
|
191
|
-
});
|
|
192
|
-
facet.options = options;
|
|
193
|
-
result.push(facet);
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
return result;
|
|
197
|
-
}
|
|
198
|
-
exports.convertHubResponseToFacets = convertHubResponseToFacets;
|
|
199
64
|
//# sourceMappingURL=hubSearchItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubSearchItems.js","sourceRoot":"","sources":["../../../../src/search/_internal/hubSearchItems.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"hubSearchItems.js","sourceRoot":"","sources":["../../../../src/search/_internal/hubSearchItems.ts"],"names":[],"mappings":";;;AAEA,qCAAyC;AAQzC,uCAAuC;AACvC,iCAAiC;AACjC,iCAAiC;AACjC,qCAAqC;AACrC,iCAAiC;AACjC,iCAAiC;AACjC,uCAAuC;AACvC,EAAE;AACF,0EAA0E;AAE1E;;;;;;GAMG;AACH,0BAA0B;AACnB,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,OAA0B;IAE1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AALD,wCAKC;AAED;;;;;GAKG;AACH,0BAA0B;AAC1B,SAAgB,mBAAmB,CAAC,IAAyB;IAC3D,MAAM,OAAO,GAAG,kBAAW,CAAC,IAAI,CAAC,UAAU,CAA2B,CAAC;IACvE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAJD,kDAIC;AAED,0BAA0B;AAC1B,SAAgB,wBAAwB,CACtC,OAAoB;IAEpB,MAAM,MAAM,GAAqB;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW;QAC/C,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE;YACJ,UAAU,EAAE,iBAAiB;YAC7B,QAAQ,EAAE,iBAAiB;SAC5B;KACF,CAAC;IAEF,uFAAuF;IAEvF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AA1BD,4DA0BC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./searchEntities"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./state"), exports);
|
|
6
5
|
tslib_1.__exportStar(require("./portalSearchItems"), exports);
|
|
7
6
|
tslib_1.__exportStar(require("./hubSearchItems"), exports);
|
|
8
7
|
tslib_1.__exportStar(require("./portalSearchGroups"), exports);
|