@esri/hub-common 9.3.0 → 9.4.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 (40) hide show
  1. package/dist/es2017/search/_searchContent.js +62 -0
  2. package/dist/es2017/search/_searchContent.js.map +1 -0
  3. package/dist/es2017/search/content-utils.js +422 -0
  4. package/dist/es2017/search/content-utils.js.map +1 -0
  5. package/dist/es2017/search/index.js +4 -0
  6. package/dist/es2017/search/index.js.map +1 -1
  7. package/dist/es2017/search/types.js +1 -0
  8. package/dist/es2017/search/types.js.map +1 -0
  9. package/dist/es2017/search/utils.js +344 -0
  10. package/dist/es2017/search/utils.js.map +1 -0
  11. package/dist/esm/search/_searchContent.js +70 -0
  12. package/dist/esm/search/_searchContent.js.map +1 -0
  13. package/dist/esm/search/content-utils.js +426 -0
  14. package/dist/esm/search/content-utils.js.map +1 -0
  15. package/dist/esm/search/index.js +4 -0
  16. package/dist/esm/search/index.js.map +1 -1
  17. package/dist/esm/search/types.js +1 -0
  18. package/dist/esm/search/types.js.map +1 -0
  19. package/dist/esm/search/utils.js +341 -0
  20. package/dist/esm/search/utils.js.map +1 -0
  21. package/dist/node/search/_searchContent.js +66 -0
  22. package/dist/node/search/_searchContent.js.map +1 -0
  23. package/dist/node/search/content-utils.js +432 -0
  24. package/dist/node/search/content-utils.js.map +1 -0
  25. package/dist/node/search/index.js +4 -0
  26. package/dist/node/search/index.js.map +1 -1
  27. package/dist/node/search/types.js +3 -0
  28. package/dist/node/search/types.js.map +1 -0
  29. package/dist/node/search/utils.js +357 -0
  30. package/dist/node/search/utils.js.map +1 -0
  31. package/dist/types/search/_searchContent.d.ts +7 -0
  32. package/dist/types/search/content-utils.d.ts +70 -0
  33. package/dist/types/search/index.d.ts +4 -0
  34. package/dist/types/search/types.d.ts +294 -0
  35. package/dist/types/search/utils.d.ts +92 -0
  36. package/dist/umd/common.umd.js +842 -1
  37. package/dist/umd/common.umd.js.map +1 -1
  38. package/dist/umd/common.umd.min.js +1 -1
  39. package/dist/umd/common.umd.min.js.map +1 -1
  40. package/package.json +3 -3
@@ -0,0 +1,62 @@
1
+ import { expandContentFilter, serializeContentFilterForPortal, convertPortalResponseToFacets, } from "./content-utils";
2
+ import { searchItems } from "@esri/arcgis-rest-portal";
3
+ import { expandApis, mergeSearchResults } from "./utils";
4
+ import { itemToContent } from "..";
5
+ /**
6
+ * Search for content via the Portal or Hub API
7
+ * @param filter
8
+ * @param options
9
+ */
10
+ export async function _searchContent(filter, options) {
11
+ // expand filter so we can serialize to either api
12
+ const expanded = expandContentFilter(filter);
13
+ // APIs
14
+ if (!options.apis) {
15
+ // default to AGO PROD
16
+ options.apis = ["arcgis"];
17
+ }
18
+ const apis = expandApis(options.apis);
19
+ // map over the apis, depending on the type we issue the queries
20
+ const searchPromises = apis.map((api) => {
21
+ var _a;
22
+ // Portal Search
23
+ if (api.type === "arcgis") {
24
+ // serialize for portal
25
+ const so = serializeContentFilterForPortal(expanded);
26
+ // pass auth forward
27
+ if (options.authentication) {
28
+ so.authentication = options.authentication;
29
+ }
30
+ // Aggregations
31
+ if ((_a = options.aggregations) === null || _a === void 0 ? void 0 : _a.length) {
32
+ so.countFields = options.aggregations.join(",");
33
+ so.countSize = 200;
34
+ }
35
+ if (options.num) {
36
+ so.num = options.num;
37
+ }
38
+ return searchPortal(so);
39
+ }
40
+ else {
41
+ // Hub API Search
42
+ // TODO: Implement hub api content search
43
+ return Promise.resolve({
44
+ content: [],
45
+ facets: [],
46
+ });
47
+ }
48
+ });
49
+ // wait for results
50
+ const results = await Promise.all(searchPromises);
51
+ // merge and return
52
+ return mergeSearchResults(results);
53
+ }
54
+ function searchPortal(searchOptions) {
55
+ return searchItems(searchOptions).then((resp) => {
56
+ const content = resp.results.map(itemToContent);
57
+ // convert aggregations into facets
58
+ const facets = convertPortalResponseToFacets(resp);
59
+ return { content, facets };
60
+ });
61
+ }
62
+ //# sourceMappingURL=_searchContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_searchContent.js","sourceRoot":"","sources":["../../../src/search/_searchContent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAkB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAyB,EACzB,OAA0B;IAE1B,kDAAkD;IAClD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO;IACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACjB,sBAAsB;QACtB,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC3B;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,gEAAgE;IAChE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;;QACtC,gBAAgB;QAChB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzB,uBAAuB;YACvB,MAAM,EAAE,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;YACrD,oBAAoB;YACpB,IAAI,OAAO,CAAC,cAAc,EAAE;gBAC1B,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;aAC5C;YACD,eAAe;YACf,UAAI,OAAO,CAAC,YAAY,0CAAE,MAAM,EAAE;gBAChC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChD,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;aACpB;YACD,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACtB;YACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;SACzB;aAAM;YACL,iBAAiB;YACjB,yCAAyC;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,OAAO,EAAE,EAAmB;gBAC5B,MAAM,EAAE,EAAc;aACvB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,mBAAmB;IACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClD,mBAAmB;IACnB,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,YAAY,CACnB,aAA6B;IAE7B,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChD,mCAAmC;QACnC,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,422 @@
1
+ import { cloneObject } from "..";
2
+ import { mergeDateRange, mergeMatchOptions, mergeSearchOptions, relativeDateToDateRange, serializeDateRange, serializeMatchOptions, valueToMatchOptions, } from "./utils";
3
+ // TODO: Implement $dataset
4
+ const ContentFilterExpansions = {
5
+ $apps: [
6
+ {
7
+ type: {
8
+ any: [
9
+ "Code Sample",
10
+ "Web Mapping Application",
11
+ "Mobile Application",
12
+ "Application",
13
+ "Desktop Application Template",
14
+ "Desktop Application",
15
+ "Operation View",
16
+ "Dashboard",
17
+ "Operations Dashboard Extension",
18
+ "Workforce Project",
19
+ "Insights Workbook",
20
+ "Insights Page",
21
+ "Insights Model",
22
+ "Hub Page",
23
+ "Hub Initiative",
24
+ "Hub Site Application",
25
+ "StoryMap",
26
+ "Web Experience",
27
+ "Web Experience Template",
28
+ "Form",
29
+ ],
30
+ not: [
31
+ "Code Attachment",
32
+ "Featured Items",
33
+ "Symbol Set",
34
+ "Color Set",
35
+ "Windows Viewer Add In",
36
+ "Windows Viewer Configuration",
37
+ "Map Area",
38
+ "Indoors Map Configuration",
39
+ ],
40
+ },
41
+ typekeywords: {
42
+ not: ["MapAreaPackage", "SMX"],
43
+ },
44
+ },
45
+ ],
46
+ $storymap: [
47
+ {
48
+ type: "StoryMap",
49
+ },
50
+ {
51
+ type: "Web Mapping Application",
52
+ typekeywords: ["Story Map"],
53
+ },
54
+ ],
55
+ $dashboard: [
56
+ {
57
+ type: "Dashboard",
58
+ typekeywords: {
59
+ any: ["Dashboard"],
60
+ not: ["ArcGIS Operation View", "Add In", "Extension"],
61
+ },
62
+ },
63
+ ],
64
+ $dataset: [],
65
+ $experience: [
66
+ {
67
+ type: {
68
+ any: ["Web Experience"],
69
+ not: ["Web Experience Template"],
70
+ },
71
+ },
72
+ ],
73
+ $site: [
74
+ {
75
+ type: ["Hub Site Application", "Site Application"],
76
+ },
77
+ {
78
+ type: ["Web Mapping Application"],
79
+ typekeywords: ["hubSite"],
80
+ },
81
+ ],
82
+ $initiative: [
83
+ {
84
+ type: {
85
+ any: "Hub Initiative",
86
+ not: "Hub Initiative Template",
87
+ },
88
+ },
89
+ ],
90
+ $document: [
91
+ {
92
+ typekeywords: {
93
+ any: "Document",
94
+ not: ["MapAreaPackage", "SMX"],
95
+ },
96
+ type: {
97
+ any: [
98
+ "Image",
99
+ "Layout",
100
+ "Desktop Style",
101
+ "Project Template",
102
+ "Report Template",
103
+ "Pro Report",
104
+ "Statistical Data Collection",
105
+ "360 VR Experience",
106
+ "netCDF",
107
+ "PDF",
108
+ "CSV",
109
+ "Administrative Report",
110
+ "Raster function template",
111
+ ],
112
+ not: [
113
+ "Image Service",
114
+ "Explorer Document",
115
+ "Explorer Map",
116
+ "Globe Document",
117
+ "Scene Document",
118
+ "Code Attachment",
119
+ "Featured Items",
120
+ "Symbol Set",
121
+ "ColorSet",
122
+ "Windows Viewer Add In",
123
+ "Windows Viewer Configuration",
124
+ "Map Area",
125
+ "Indoors Map Configuration",
126
+ ],
127
+ },
128
+ },
129
+ ],
130
+ };
131
+ /**
132
+ * @private
133
+ * Convert portal search response to items
134
+ * @param response
135
+ * @returns
136
+ */
137
+ export function convertPortalResponseToFacets(response) {
138
+ var _a;
139
+ const result = [];
140
+ if ((_a = response.aggregations) === null || _a === void 0 ? void 0 : _a.counts) {
141
+ response.aggregations.counts.forEach((entry) => {
142
+ const facet = {
143
+ label: entry.fieldName,
144
+ attribute: entry.fieldName,
145
+ type: "multi-select",
146
+ };
147
+ const options = [];
148
+ entry.fieldValues.forEach((fv) => {
149
+ const filter = {
150
+ filterType: "content",
151
+ };
152
+ filter[entry.fieldName] = fv.value;
153
+ const fo = {
154
+ label: fv.value,
155
+ value: fv.value,
156
+ count: fv.count,
157
+ selected: false,
158
+ filter,
159
+ };
160
+ options.push(fo);
161
+ });
162
+ facet.options = options;
163
+ result.push(facet);
164
+ });
165
+ }
166
+ return result;
167
+ }
168
+ /**
169
+ * @private
170
+ * Merge `Filter<"content">` objects
171
+ * @param filters
172
+ * @returns
173
+ */
174
+ export function mergeContentFilter(filters) {
175
+ // expand all the filters so all prop types are consistent
176
+ const expanded = filters.map(expandContentFilter);
177
+ // now we can merge based on fields
178
+ const dateFields = ["created", "modified"];
179
+ const specialFields = ["filterType", "subFilters", ...dateFields];
180
+ const result = expanded.reduce((acc, entry) => {
181
+ // process fields
182
+ Object.entries(entry).forEach(([key, value]) => {
183
+ // MatchOption fields
184
+ if (!specialFields.includes(key)) {
185
+ if (acc[key]) {
186
+ acc[key] = mergeMatchOptions(acc[key], value);
187
+ }
188
+ else {
189
+ acc[key] = cloneObject(value);
190
+ }
191
+ }
192
+ // Dates
193
+ if (dateFields.includes(key)) {
194
+ if (acc[key]) {
195
+ acc[key] = mergeDateRange(acc[key], value);
196
+ }
197
+ else {
198
+ acc[key] = cloneObject(value);
199
+ }
200
+ }
201
+ // SubFilters
202
+ if (key === "subFilters" && Array.isArray(value)) {
203
+ if (acc.subFilters) {
204
+ acc.subFilters = mergeSubFilters(acc.subFilters, value);
205
+ }
206
+ else {
207
+ acc.subFilters = cloneObject(value);
208
+ }
209
+ }
210
+ });
211
+ return acc;
212
+ }, {});
213
+ result.filterType = "content";
214
+ return result;
215
+ }
216
+ function mergeSubFilters(sf1, sf2) {
217
+ // Simplistic implementation: we just merge the arrays
218
+ // in the future we may try to de-dupe things as a safeguard
219
+ return [...sf1, ...sf2];
220
+ }
221
+ /**
222
+ * Prior to serialization into the query syntax for the backing APIs, we first expand [Filters](../Filter)
223
+ *
224
+ * Filter's can express their intent in a very terse form, but to ensure consistent
225
+ * into their more verbose form.
226
+ *
227
+ * i.e. `title: "Water"` expands into `title: { any: ["Water"]}`
228
+ *
229
+ * - "well known" type values are expanded
230
+ * - i.e. `type: "$storymap"` expands into two `subFilter` entries
231
+ * - Fields defined as `string | string[] | MatchOptions` will be converted to a `MatchOptions`
232
+ * - RelativeDate fields are converted to DateRange<number>
233
+ *
234
+ * @param filter
235
+ * @returns
236
+ */
237
+ export function expandContentFilter(filter) {
238
+ // Expand filter.type first
239
+ const expandedTypeFilter = expandTypeField(filter);
240
+ // Expand subfilters
241
+ // Guard - JS Clients could send in anything...
242
+ if (Array.isArray(filter.subFilters)) {
243
+ // Convert any strings into the coresponding ContentFilterDefinition
244
+ expandedTypeFilter.subFilters = expandedTypeFilter.subFilters.reduce((acc, entry) => {
245
+ if (typeof entry === "string") {
246
+ // if the entry is not a key of ContentFilterExpansions
247
+ // we just skip over it
248
+ if (ContentFilterExpansions[entry]) {
249
+ acc = acc.concat(ContentFilterExpansions[entry]);
250
+ }
251
+ }
252
+ else {
253
+ acc.push(entry); // should be a ContentFilterDefinition
254
+ }
255
+ return acc;
256
+ }, []);
257
+ }
258
+ // Convert all props into MatchOptions/DateRanges
259
+ return convertContentDefinitionToFilter(expandedTypeFilter);
260
+ }
261
+ /**
262
+ * @private
263
+ * Expand from a well-known "type" into it's longer form
264
+ *
265
+ * i.e. `type: "$storymap"` expands into two subFilters entries
266
+ *
267
+ * @param filter
268
+ * @returns
269
+ */
270
+ export function expandTypeField(filter) {
271
+ const clone = cloneObject(filter);
272
+ // ensure subFilters is defined as an array
273
+ clone.subFilters = clone.subFilters || [];
274
+ if (clone.type) {
275
+ // if .type is an Array...
276
+ if (Array.isArray(clone.type)) {
277
+ // remove any well-known-keys and move their expansions into subfilters
278
+ clone.type = clone.type.reduce((acc, entry) => {
279
+ if (isWellKnownType(entry)) {
280
+ // working with dynamic objects in typescript requires some assertions
281
+ const key = entry;
282
+ clone.subFilters = clone.subFilters.concat(lookupTypeFilters(key));
283
+ }
284
+ else {
285
+ acc.push(entry);
286
+ }
287
+ return acc;
288
+ }, []);
289
+ }
290
+ else if (isWellKnownType(clone.type)) {
291
+ const key = clone.type;
292
+ clone.subFilters = clone.subFilters.concat(lookupTypeFilters(key));
293
+ delete clone.type;
294
+ }
295
+ else {
296
+ // Future?: implement "expansions" inside MatchOptions
297
+ // For now, we only attempt expansions for filter.type
298
+ // if it's a string, or for strings inside an array
299
+ // Unclear if it's of value to allow short-cuts inside MatchOptions
300
+ }
301
+ }
302
+ return clone;
303
+ }
304
+ /**
305
+ * Is the argument a well-known type "key"
306
+ *
307
+ * Accepts `string`, `string[]` or `IMatchOptions`
308
+ * but only string values can possibly be properties
309
+ * on `ContentFilterExpansions`
310
+ * @param key
311
+ * @returns
312
+ */
313
+ function isWellKnownType(key) {
314
+ let result = false;
315
+ if (typeof key === "string") {
316
+ result = key in ContentFilterExpansions;
317
+ }
318
+ return result;
319
+ }
320
+ function lookupTypeFilters(key) {
321
+ return ContentFilterExpansions[key];
322
+ }
323
+ /**
324
+ * @private
325
+ * Convert a `ContentFilterDefinition` to a `ContentFilter`
326
+ *
327
+ * ContentFilter is a narrower version of ContentFilterDefinition, without
328
+ * the union types. Using a ContentFilter makes working with the structure
329
+ * in typescript much easier.
330
+ *
331
+ * @param filter
332
+ * @returns
333
+ */
334
+ export function convertContentDefinitionToFilter(filter) {
335
+ const result = {};
336
+ if (filter.term) {
337
+ result.term = filter.term;
338
+ }
339
+ const dateProps = ["created", "modified"];
340
+ // Some properties should not get converted to MatchOptions
341
+ const specialProps = ["filterType", "subFilters", "term", ...dateProps];
342
+ // Do the conversion
343
+ Object.entries(filter).forEach(([key, value]) => {
344
+ if (!specialProps.includes(key)) {
345
+ result[key] = valueToMatchOptions(value);
346
+ }
347
+ });
348
+ // Special Cases
349
+ // subFilters; Array of ContentFilterDefinitions
350
+ if (filter.subFilters && Array.isArray(filter.subFilters)) {
351
+ // downcast - would be nice to skip this or use some other constuct
352
+ const sf = filter.subFilters;
353
+ result.subFilters = sf.map(convertContentDefinitionToFilter);
354
+ }
355
+ // Dates; Ensure they are all DateRange<number>
356
+ dateProps.forEach((fld) => {
357
+ if (filter[fld]) {
358
+ if (filter[fld].type === "relative-date") {
359
+ result[fld] = relativeDateToDateRange(filter[fld]);
360
+ }
361
+ else {
362
+ result[fld] = cloneObject(filter[fld]);
363
+ }
364
+ }
365
+ });
366
+ return result;
367
+ }
368
+ /**
369
+ * @private
370
+ * Serialize a `ContentFilter` into an `ISearchOptions` for use with `searchItems`
371
+ * @param filter
372
+ * @returns
373
+ */
374
+ export function serializeContentFilterForPortal(filter) {
375
+ let searchOptions = convertContentFilterToSearchOptions(filter);
376
+ if (filter.subFilters) {
377
+ const subFilterOptions = filter.subFilters.reduce((acc, entry) => {
378
+ // Next guard is present b/c this can be used from javascript
379
+ // but our tests are written in typescript which prevents us
380
+ // from hitting the else
381
+ /* istanbul ignore else */
382
+ if (typeof entry === "object") {
383
+ acc = mergeSearchOptions(acc, convertContentFilterToSearchOptions(entry), "OR");
384
+ }
385
+ return acc;
386
+ }, { q: "", filter: "" });
387
+ // merge with searchOptions using AND
388
+ searchOptions = mergeSearchOptions(searchOptions, subFilterOptions, "AND");
389
+ }
390
+ // term is always last, and pre-pended on searchOptions.q
391
+ if (filter.term) {
392
+ searchOptions.q = `${filter.term} ${searchOptions.q}`.trim();
393
+ }
394
+ return searchOptions;
395
+ }
396
+ /**
397
+ * @private
398
+ * Convert a ContentFilter to a SearchOptions
399
+ *
400
+ * @param filter
401
+ * @returns
402
+ */
403
+ export function convertContentFilterToSearchOptions(filter) {
404
+ let result = {
405
+ q: "",
406
+ filter: "",
407
+ };
408
+ const dateProps = ["created", "modified"];
409
+ const specialProps = ["filterType", "subFilters", "term", ...dateProps];
410
+ Object.entries(filter).forEach(([key, value]) => {
411
+ // MatchOptions may go into either q or filter
412
+ if (!specialProps.includes(key)) {
413
+ result = mergeSearchOptions(result, serializeMatchOptions(key, value), "AND");
414
+ }
415
+ // Dates only go into q
416
+ if (dateProps.includes(key)) {
417
+ result = mergeSearchOptions(result, serializeDateRange(key, value), "AND");
418
+ }
419
+ });
420
+ return result;
421
+ }
422
+ //# sourceMappingURL=content-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-utils.js","sourceRoot":"","sources":["../../../src/search/content-utils.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
1
  export * from "./hub-api-search";
2
+ export * from "./content-utils";
3
+ export * from "./utils";
4
+ export * from "./types";
5
+ export * from "./_searchContent";
2
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/search/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/search/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/search/types.ts"],"names":[],"mappings":""}