@esri/hub-common 20.5.1 → 20.5.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/esm/access/compareAccess.js +15 -0
- package/dist/esm/access/compareAccess.js.map +1 -0
- package/dist/esm/channels/_internal/channelEditorTypes.js +9 -0
- package/dist/esm/channels/_internal/channelEditorTypes.js.map +1 -0
- package/dist/esm/content/HubContent.js +1 -1
- package/dist/esm/content/HubContent.js.map +1 -1
- package/dist/esm/content/_internal/ContentUiSchemaSettings.js +4 -2
- package/dist/esm/content/_internal/ContentUiSchemaSettings.js.map +1 -1
- package/dist/esm/content/_internal/contentEditorTypes.js +7 -0
- package/dist/esm/content/_internal/contentEditorTypes.js.map +1 -0
- package/dist/esm/content/_internal/shouldFetchData.js +29 -0
- package/dist/esm/content/_internal/shouldFetchData.js.map +1 -0
- package/dist/esm/content/_internal/shouldShowDownloadsConfiguration.js +6 -1
- package/dist/esm/content/_internal/shouldShowDownloadsConfiguration.js.map +1 -1
- package/dist/esm/content/edit.js +11 -7
- package/dist/esm/content/edit.js.map +1 -1
- package/dist/esm/content/isSiteType.js +12 -0
- package/dist/esm/content/isSiteType.js.map +1 -0
- package/dist/esm/core/_internal/getTemplate.js +212 -0
- package/dist/esm/core/_internal/getTemplate.js.map +1 -0
- package/dist/esm/core/schemas/internal/embed/EmbedSchema.js +8 -0
- package/dist/esm/core/schemas/internal/embed/EmbedSchema.js.map +1 -0
- package/dist/esm/core/schemas/internal/embed/EmbedUiSchema.js +15 -0
- package/dist/esm/core/schemas/internal/embed/EmbedUiSchema.js.map +1 -0
- package/dist/esm/core/schemas/internal/getLayoutSetupUiSchemaElement.js +31 -0
- package/dist/esm/core/schemas/internal/getLayoutSetupUiSchemaElement.js.map +1 -0
- package/dist/esm/core/types/IServiceQueryOptions.js +1 -0
- package/dist/esm/core/types/IServiceQueryOptions.js.map +1 -0
- package/dist/esm/core/types/ServiceAggregation.js +1 -0
- package/dist/esm/core/types/ServiceAggregation.js.map +1 -0
- package/dist/esm/discussions/_internal/discussionEditorTypes.js +7 -0
- package/dist/esm/discussions/_internal/discussionEditorTypes.js.map +1 -0
- package/dist/esm/events/_internal/eventEditorTypes.js +6 -0
- package/dist/esm/events/_internal/eventEditorTypes.js.map +1 -0
- package/dist/esm/groups/_internal/groupEditorTypes.js +13 -0
- package/dist/esm/groups/_internal/groupEditorTypes.js.map +1 -0
- package/dist/esm/groups/enrichGroupSearchResult.js +61 -0
- package/dist/esm/groups/enrichGroupSearchResult.js.map +1 -0
- package/dist/esm/initiative-templates/_internal/initiativeTemplateEditorTypes.js +4 -0
- package/dist/esm/initiative-templates/_internal/initiativeTemplateEditorTypes.js.map +1 -0
- package/dist/esm/initiatives/_internal/initiativeEditorTypes.js +9 -0
- package/dist/esm/initiatives/_internal/initiativeEditorTypes.js.map +1 -0
- package/dist/esm/models/createModel.js +28 -0
- package/dist/esm/models/createModel.js.map +1 -0
- package/dist/esm/models/fetchModelFromItem.js +18 -0
- package/dist/esm/models/fetchModelFromItem.js.map +1 -0
- package/dist/esm/models/fetchModelResource.js +34 -0
- package/dist/esm/models/fetchModelResource.js.map +1 -0
- package/dist/esm/models/getModel.js +19 -0
- package/dist/esm/models/getModel.js.map +1 -0
- package/dist/esm/models/getModelBySlug.js +40 -0
- package/dist/esm/models/getModelBySlug.js.map +1 -0
- package/dist/esm/models/updateModel.js +55 -0
- package/dist/esm/models/updateModel.js.map +1 -0
- package/dist/esm/models/upsertModelResource.js +37 -0
- package/dist/esm/models/upsertModelResource.js.map +1 -0
- package/dist/esm/pages/_internal/pageEditorTypes.js +2 -0
- package/dist/esm/pages/_internal/pageEditorTypes.js.map +1 -0
- package/dist/esm/permissions/_internal/checkPlatformVersion.js +43 -0
- package/dist/esm/permissions/_internal/checkPlatformVersion.js.map +1 -0
- package/dist/esm/permissions/_internal/checkReleaseGating.js +61 -0
- package/dist/esm/permissions/_internal/checkReleaseGating.js.map +1 -0
- package/dist/esm/projects/_internal/projectEditorTypes.js +8 -0
- package/dist/esm/projects/_internal/projectEditorTypes.js.map +1 -0
- package/dist/esm/search/_internal/applyWellKnownItemPredicates.js +104 -0
- package/dist/esm/search/_internal/applyWellKnownItemPredicates.js.map +1 -0
- package/dist/esm/search/_internal/bboxStringToGeoJSONPolygon.js +28 -0
- package/dist/esm/search/_internal/bboxStringToGeoJSONPolygon.js.map +1 -0
- package/dist/esm/search/_internal/constants.js +145 -0
- package/dist/esm/search/_internal/constants.js.map +1 -0
- package/dist/esm/search/_internal/expandPredicates.js +17 -0
- package/dist/esm/search/_internal/expandPredicates.js.map +1 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/postToSearchResult.js +28 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/postToSearchResult.js.map +1 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostFilters.js +87 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostFilters.js.map +1 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostOptions.js +48 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostOptions.js.map +1 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/processRelations.js +25 -0
- package/dist/esm/search/_internal/hubDiscussionsHelpers/processRelations.js.map +1 -0
- package/dist/esm/search/_internal/hubSearchPosts.js +83 -0
- package/dist/esm/search/_internal/hubSearchPosts.js.map +1 -0
- package/dist/esm/search/_internal/isFamilyExpansionType.js +20 -0
- package/dist/esm/search/_internal/isFamilyExpansionType.js.map +1 -0
- package/dist/esm/search/_internal/isWellKnownTypeFilter.js +18 -0
- package/dist/esm/search/_internal/isWellKnownTypeFilter.js.map +1 -0
- package/dist/esm/search/_internal/types.js +1 -0
- package/dist/esm/search/_internal/types.js.map +1 -0
- package/dist/esm/search/getCOrgOrEOrgId.js +17 -0
- package/dist/esm/search/getCOrgOrEOrgId.js.map +1 -0
- package/dist/esm/search/relativeDateToDateRange.js +44 -0
- package/dist/esm/search/relativeDateToDateRange.js.map +1 -0
- package/dist/esm/search/types/ICatalogSearchResponse.js +1 -0
- package/dist/esm/search/types/ICatalogSearchResponse.js.map +1 -0
- package/dist/esm/search/types/IHubSearchResponseHash.js +1 -0
- package/dist/esm/search/types/IHubSearchResponseHash.js.map +1 -0
- package/dist/esm/search/types/ISearchAssociatedContentOptions.js +1 -0
- package/dist/esm/search/types/ISearchAssociatedContentOptions.js.map +1 -0
- package/dist/esm/search/valueToMatchOptions.js +26 -0
- package/dist/esm/search/valueToMatchOptions.js.map +1 -0
- package/dist/esm/sites/_internal/removeCatalogFromUpgradedSite.js +20 -0
- package/dist/esm/sites/_internal/removeCatalogFromUpgradedSite.js.map +1 -0
- package/dist/esm/sites/_internal/removeCatalogV1FromUpgradedSite.js +20 -0
- package/dist/esm/sites/_internal/removeCatalogV1FromUpgradedSite.js.map +1 -0
- package/dist/esm/sites/_internal/siteEditorTypes.js +9 -0
- package/dist/esm/sites/_internal/siteEditorTypes.js.map +1 -0
- package/dist/esm/templates/_internal/templateEditorTypes.js +2 -0
- package/dist/esm/templates/_internal/templateEditorTypes.js.map +1 -0
- package/dist/esm/urls/feature-service-urls.js +22 -0
- package/dist/esm/urls/feature-service-urls.js.map +1 -0
- package/dist/esm/users/_internal/userEditorTypes.js +2 -0
- package/dist/esm/users/_internal/userEditorTypes.js.map +1 -0
- package/dist/node/access/compareAccess.js +19 -0
- package/dist/node/access/compareAccess.js.map +1 -0
- package/dist/node/channels/_internal/channelEditorTypes.js +12 -0
- package/dist/node/channels/_internal/channelEditorTypes.js.map +1 -0
- package/dist/node/content/HubContent.js +1 -1
- package/dist/node/content/HubContent.js.map +1 -1
- package/dist/node/content/_internal/ContentUiSchemaSettings.js +4 -2
- package/dist/node/content/_internal/ContentUiSchemaSettings.js.map +1 -1
- package/dist/node/content/_internal/contentEditorTypes.js +10 -0
- package/dist/node/content/_internal/contentEditorTypes.js.map +1 -0
- package/dist/node/content/_internal/shouldFetchData.js +32 -0
- package/dist/node/content/_internal/shouldFetchData.js.map +1 -0
- package/dist/node/content/_internal/shouldShowDownloadsConfiguration.js +6 -1
- package/dist/node/content/_internal/shouldShowDownloadsConfiguration.js.map +1 -1
- package/dist/node/content/edit.js +11 -7
- package/dist/node/content/edit.js.map +1 -1
- package/dist/node/content/isSiteType.js +16 -0
- package/dist/node/content/isSiteType.js.map +1 -0
- package/dist/node/core/_internal/getTemplate.js +216 -0
- package/dist/node/core/_internal/getTemplate.js.map +1 -0
- package/dist/node/core/schemas/internal/embed/EmbedSchema.js +11 -0
- package/dist/node/core/schemas/internal/embed/EmbedSchema.js.map +1 -0
- package/dist/node/core/schemas/internal/embed/EmbedUiSchema.js +18 -0
- package/dist/node/core/schemas/internal/embed/EmbedUiSchema.js.map +1 -0
- package/dist/node/core/schemas/internal/getLayoutSetupUiSchemaElement.js +35 -0
- package/dist/node/core/schemas/internal/getLayoutSetupUiSchemaElement.js.map +1 -0
- package/dist/node/core/types/IServiceQueryOptions.js +3 -0
- package/dist/node/core/types/IServiceQueryOptions.js.map +1 -0
- package/dist/node/core/types/ServiceAggregation.js +3 -0
- package/dist/node/core/types/ServiceAggregation.js.map +1 -0
- package/dist/node/discussions/_internal/discussionEditorTypes.js +10 -0
- package/dist/node/discussions/_internal/discussionEditorTypes.js.map +1 -0
- package/dist/node/events/_internal/eventEditorTypes.js +9 -0
- package/dist/node/events/_internal/eventEditorTypes.js.map +1 -0
- package/dist/node/groups/_internal/groupEditorTypes.js +16 -0
- package/dist/node/groups/_internal/groupEditorTypes.js.map +1 -0
- package/dist/node/groups/enrichGroupSearchResult.js +65 -0
- package/dist/node/groups/enrichGroupSearchResult.js.map +1 -0
- package/dist/node/initiative-templates/_internal/initiativeTemplateEditorTypes.js +7 -0
- package/dist/node/initiative-templates/_internal/initiativeTemplateEditorTypes.js.map +1 -0
- package/dist/node/initiatives/_internal/initiativeEditorTypes.js +12 -0
- package/dist/node/initiatives/_internal/initiativeEditorTypes.js.map +1 -0
- package/dist/node/models/createModel.js +32 -0
- package/dist/node/models/createModel.js.map +1 -0
- package/dist/node/models/fetchModelFromItem.js +22 -0
- package/dist/node/models/fetchModelFromItem.js.map +1 -0
- package/dist/node/models/fetchModelResource.js +38 -0
- package/dist/node/models/fetchModelResource.js.map +1 -0
- package/dist/node/models/getModel.js +23 -0
- package/dist/node/models/getModel.js.map +1 -0
- package/dist/node/models/getModelBySlug.js +44 -0
- package/dist/node/models/getModelBySlug.js.map +1 -0
- package/dist/node/models/updateModel.js +59 -0
- package/dist/node/models/updateModel.js.map +1 -0
- package/dist/node/models/upsertModelResource.js +41 -0
- package/dist/node/models/upsertModelResource.js.map +1 -0
- package/dist/node/pages/_internal/pageEditorTypes.js +5 -0
- package/dist/node/pages/_internal/pageEditorTypes.js.map +1 -0
- package/dist/node/permissions/_internal/checkPlatformVersion.js +47 -0
- package/dist/node/permissions/_internal/checkPlatformVersion.js.map +1 -0
- package/dist/node/permissions/_internal/checkReleaseGating.js +65 -0
- package/dist/node/permissions/_internal/checkReleaseGating.js.map +1 -0
- package/dist/node/projects/_internal/projectEditorTypes.js +11 -0
- package/dist/node/projects/_internal/projectEditorTypes.js.map +1 -0
- package/dist/node/search/_internal/applyWellKnownItemPredicates.js +108 -0
- package/dist/node/search/_internal/applyWellKnownItemPredicates.js.map +1 -0
- package/dist/node/search/_internal/bboxStringToGeoJSONPolygon.js +32 -0
- package/dist/node/search/_internal/bboxStringToGeoJSONPolygon.js.map +1 -0
- package/dist/node/search/_internal/constants.js +148 -0
- package/dist/node/search/_internal/constants.js.map +1 -0
- package/dist/node/search/_internal/expandPredicates.js +21 -0
- package/dist/node/search/_internal/expandPredicates.js.map +1 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/postToSearchResult.js +32 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/postToSearchResult.js.map +1 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/processPostFilters.js +91 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/processPostFilters.js.map +1 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/processPostOptions.js +52 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/processPostOptions.js.map +1 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/processRelations.js +29 -0
- package/dist/node/search/_internal/hubDiscussionsHelpers/processRelations.js.map +1 -0
- package/dist/node/search/_internal/hubSearchPosts.js +87 -0
- package/dist/node/search/_internal/hubSearchPosts.js.map +1 -0
- package/dist/node/search/_internal/isFamilyExpansionType.js +24 -0
- package/dist/node/search/_internal/isFamilyExpansionType.js.map +1 -0
- package/dist/node/search/_internal/isWellKnownTypeFilter.js +22 -0
- package/dist/node/search/_internal/isWellKnownTypeFilter.js.map +1 -0
- package/dist/node/search/_internal/types.js +3 -0
- package/dist/node/search/_internal/types.js.map +1 -0
- package/dist/node/search/getCOrgOrEOrgId.js +21 -0
- package/dist/node/search/getCOrgOrEOrgId.js.map +1 -0
- package/dist/node/search/relativeDateToDateRange.js +48 -0
- package/dist/node/search/relativeDateToDateRange.js.map +1 -0
- package/dist/node/search/types/ICatalogSearchResponse.js +3 -0
- package/dist/node/search/types/ICatalogSearchResponse.js.map +1 -0
- package/dist/node/search/types/IHubSearchResponseHash.js +3 -0
- package/dist/node/search/types/IHubSearchResponseHash.js.map +1 -0
- package/dist/node/search/types/ISearchAssociatedContentOptions.js +3 -0
- package/dist/node/search/types/ISearchAssociatedContentOptions.js.map +1 -0
- package/dist/node/search/valueToMatchOptions.js +30 -0
- package/dist/node/search/valueToMatchOptions.js.map +1 -0
- package/dist/node/sites/_internal/removeCatalogFromUpgradedSite.js +24 -0
- package/dist/node/sites/_internal/removeCatalogFromUpgradedSite.js.map +1 -0
- package/dist/node/sites/_internal/removeCatalogV1FromUpgradedSite.js +24 -0
- package/dist/node/sites/_internal/removeCatalogV1FromUpgradedSite.js.map +1 -0
- package/dist/node/sites/_internal/siteEditorTypes.js +12 -0
- package/dist/node/sites/_internal/siteEditorTypes.js.map +1 -0
- package/dist/node/templates/_internal/templateEditorTypes.js +5 -0
- package/dist/node/templates/_internal/templateEditorTypes.js.map +1 -0
- package/dist/node/urls/feature-service-urls.js +25 -0
- package/dist/node/urls/feature-service-urls.js.map +1 -0
- package/dist/node/users/_internal/userEditorTypes.js +5 -0
- package/dist/node/users/_internal/userEditorTypes.js.map +1 -0
- package/dist/types/access/compareAccess.d.ts +11 -0
- package/dist/types/channels/_internal/channelEditorTypes.d.ts +10 -0
- package/dist/types/content/_internal/contentEditorTypes.d.ts +2 -0
- package/dist/types/content/_internal/shouldFetchData.d.ts +7 -0
- package/dist/types/content/_internal/shouldShowDownloadsConfiguration.d.ts +3 -1
- package/dist/types/content/isSiteType.d.ts +7 -0
- package/dist/types/core/_internal/getTemplate.d.ts +9 -0
- package/dist/types/core/schemas/internal/embed/EmbedSchema.d.ts +2 -0
- package/dist/types/core/schemas/internal/embed/EmbedUiSchema.d.ts +4 -0
- package/dist/types/core/schemas/internal/getLayoutSetupUiSchemaElement.d.ts +10 -0
- package/dist/types/core/types/IServiceQueryOptions.d.ts +22 -0
- package/dist/types/core/types/ServiceAggregation.d.ts +4 -0
- package/dist/types/discussions/_internal/discussionEditorTypes.d.ts +2 -0
- package/dist/types/events/_internal/eventEditorTypes.d.ts +2 -0
- package/dist/types/groups/_internal/groupEditorTypes.d.ts +2 -0
- package/dist/types/groups/enrichGroupSearchResult.d.ts +11 -0
- package/dist/types/initiative-templates/_internal/initiativeTemplateEditorTypes.d.ts +2 -0
- package/dist/types/initiatives/_internal/initiativeEditorTypes.d.ts +2 -0
- package/dist/types/models/createModel.d.ts +10 -0
- package/dist/types/models/fetchModelFromItem.d.ts +10 -0
- package/dist/types/models/fetchModelResource.d.ts +17 -0
- package/dist/types/models/getModel.d.ts +8 -0
- package/dist/types/models/getModelBySlug.d.ts +16 -0
- package/dist/types/models/updateModel.d.ts +12 -0
- package/dist/types/models/upsertModelResource.d.ts +20 -0
- package/dist/types/pages/_internal/pageEditorTypes.d.ts +2 -0
- package/dist/types/permissions/_internal/checkPlatformVersion.d.ts +14 -0
- package/dist/types/permissions/_internal/checkReleaseGating.d.ts +13 -0
- package/dist/types/projects/_internal/projectEditorTypes.d.ts +2 -0
- package/dist/types/search/_internal/applyWellKnownItemPredicates.d.ts +19 -0
- package/dist/types/search/_internal/bboxStringToGeoJSONPolygon.d.ts +8 -0
- package/dist/types/search/_internal/constants.d.ts +2 -0
- package/dist/types/search/_internal/expandPredicates.d.ts +8 -0
- package/dist/types/search/_internal/hubDiscussionsHelpers/postToSearchResult.d.ts +8 -0
- package/dist/types/search/_internal/hubDiscussionsHelpers/processPostFilters.d.ts +8 -0
- package/dist/types/search/_internal/hubDiscussionsHelpers/processPostOptions.d.ts +8 -0
- package/dist/types/search/_internal/hubDiscussionsHelpers/processRelations.d.ts +7 -0
- package/dist/types/search/_internal/hubSearchPosts.d.ts +59 -0
- package/dist/types/search/_internal/isFamilyExpansionType.d.ts +9 -0
- package/dist/types/search/_internal/isWellKnownTypeFilter.d.ts +11 -0
- package/dist/types/search/_internal/types.d.ts +15 -0
- package/dist/types/search/getCOrgOrEOrgId.d.ts +8 -0
- package/dist/types/search/relativeDateToDateRange.d.ts +8 -0
- package/dist/types/search/types/ICatalogSearchResponse.d.ts +9 -0
- package/dist/types/search/types/IHubSearchResponseHash.d.ts +7 -0
- package/dist/types/search/types/ISearchAssociatedContentOptions.d.ts +32 -0
- package/dist/types/search/valueToMatchOptions.d.ts +8 -0
- package/dist/types/sites/_internal/removeCatalogFromUpgradedSite.d.ts +13 -0
- package/dist/types/sites/_internal/removeCatalogV1FromUpgradedSite.d.ts +13 -0
- package/dist/types/sites/_internal/siteEditorTypes.d.ts +2 -0
- package/dist/types/templates/_internal/templateEditorTypes.d.ts +2 -0
- package/dist/types/urls/feature-service-urls.d.ts +13 -0
- package/dist/types/users/_internal/userEditorTypes.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { fetchGroupEnrichments } from "./_internal/enrichments";
|
|
2
|
+
import { parseInclude } from "../search/_internal/parseInclude";
|
|
3
|
+
import { unique } from "../util";
|
|
4
|
+
import { computeLinks } from "./_internal/computeLinks";
|
|
5
|
+
import { mapBy } from "../utils/map-by";
|
|
6
|
+
import { getProp } from "../objects/get-prop";
|
|
7
|
+
/**
|
|
8
|
+
* Enrich a generic search result
|
|
9
|
+
* @param group
|
|
10
|
+
* @param includes
|
|
11
|
+
* @param requestOptions
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export async function enrichGroupSearchResult(group, include, requestOptions) {
|
|
15
|
+
// Create the basic structure
|
|
16
|
+
const result = {
|
|
17
|
+
access: group.access,
|
|
18
|
+
id: group.id,
|
|
19
|
+
type: "Group",
|
|
20
|
+
name: group.title,
|
|
21
|
+
owner: group.owner,
|
|
22
|
+
summary: group.snippet || group.description,
|
|
23
|
+
createdDate: new Date(group.created),
|
|
24
|
+
createdDateSource: "group.created",
|
|
25
|
+
updatedDate: new Date(group.modified),
|
|
26
|
+
updatedDateSource: "group.modified",
|
|
27
|
+
family: "team",
|
|
28
|
+
links: {
|
|
29
|
+
self: "not-implemented",
|
|
30
|
+
siteRelative: "not-implemented",
|
|
31
|
+
thumbnail: "not-implemented",
|
|
32
|
+
},
|
|
33
|
+
rawResult: group,
|
|
34
|
+
};
|
|
35
|
+
// Informal Enrichments - basically adding type-specific props
|
|
36
|
+
// derived directly from the entity
|
|
37
|
+
result.isSharedUpdate = (group.capabilities || []).includes("updateitemcontrol");
|
|
38
|
+
result.membershipAccess = group.membershipAccess;
|
|
39
|
+
result.isOpenData = !!group.isOpenData;
|
|
40
|
+
// default includes
|
|
41
|
+
const DEFAULTS = [];
|
|
42
|
+
// merge includes
|
|
43
|
+
include = [...DEFAULTS, ...include].filter(unique);
|
|
44
|
+
// Parse the includes into a valid set of enrichments
|
|
45
|
+
const specs = include.map(parseInclude);
|
|
46
|
+
// Extract out the low-level enrichments needed
|
|
47
|
+
const enrichments = mapBy("enrichment", specs).filter(unique);
|
|
48
|
+
// fetch the enrichments
|
|
49
|
+
let enriched = {};
|
|
50
|
+
if (enrichments.length) {
|
|
51
|
+
enriched = await fetchGroupEnrichments(group, enrichments, requestOptions);
|
|
52
|
+
}
|
|
53
|
+
// map the enriched props onto the result
|
|
54
|
+
specs.forEach((spec) => {
|
|
55
|
+
result[spec.prop] = getProp(enriched, spec.path);
|
|
56
|
+
});
|
|
57
|
+
// Handle links
|
|
58
|
+
result.links = computeLinks(group, requestOptions);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=enrichGroupSearchResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrichGroupSearchResult.js","sourceRoot":"","sources":["../../../src/groups/enrichGroupSearchResult.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAa,EACb,OAAiB,EACjB,cAAkC;IAElC,6BAA6B;IAC7B,MAAM,MAAM,GAAqB;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,KAAK;QACjB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW;QAC3C,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,iBAAiB,EAAE,eAAe;QAClC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,iBAAiB,EAAE,gBAAgB;QACnC,MAAM,EAAE,MAAM;QACd,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE,iBAAiB;YAC/B,SAAS,EAAE,iBAAiB;SAC7B;QACD,SAAS,EAAE,KAAK;KACjB,CAAC;IAEF,8DAA8D;IAC9D,mCAAmC;IACnC,MAAM,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,QAAQ,CACzD,mBAAmB,CACpB,CAAC;IACF,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACjD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAEvC,mBAAmB;IACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,iBAAiB;IACjB,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,qDAAqD;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,+CAA+C;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9D,wBAAwB;IACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,WAAW,CAAC,MAAM,EAAE;QACtB,QAAQ,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;KAC5E;IAED,yCAAyC;IACzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAEnD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiativeTemplateEditorTypes.js","sourceRoot":"","sources":["../../../../src/initiative-templates/_internal/initiativeTemplateEditorTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,6BAA6B;CACrB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const InitiativeEditorTypes = [
|
|
2
|
+
"hub:initiative:edit",
|
|
3
|
+
"hub:initiative:create",
|
|
4
|
+
"hub:initiative:create2",
|
|
5
|
+
"hub:initiative:metrics",
|
|
6
|
+
"hub:initiative:associations",
|
|
7
|
+
"hub:initiative:settings",
|
|
8
|
+
];
|
|
9
|
+
//# sourceMappingURL=initiativeEditorTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiativeEditorTypes.js","sourceRoot":"","sources":["../../../../src/initiatives/_internal/initiativeEditorTypes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,qBAAqB;IACrB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,6BAA6B;IAC7B,yBAAyB;CACjB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createItem } from "../rest/portal/wrappers";
|
|
2
|
+
import { bboxToString } from "../extent";
|
|
3
|
+
import { cloneObject } from "../util";
|
|
4
|
+
import { getModel } from "./getModel";
|
|
5
|
+
/**
|
|
6
|
+
* Create an item to back and IModel.
|
|
7
|
+
*
|
|
8
|
+
* @param {IModel}
|
|
9
|
+
* @param {IRequestOptions} requestOptions
|
|
10
|
+
* @returns {Promise<IModel>}
|
|
11
|
+
*/
|
|
12
|
+
export async function createModel(model, requestOptions) {
|
|
13
|
+
// const clone = cloneObject(model) as IModel;
|
|
14
|
+
const item = cloneObject(model.item);
|
|
15
|
+
item.data = cloneObject(model.data);
|
|
16
|
+
// Update extent from bbox to string
|
|
17
|
+
// TODO: remove below logic once rest.js is fixed.
|
|
18
|
+
if (item.extent && typeof item.extent !== "string") {
|
|
19
|
+
// THIS IS A HACK TO WORK AROUND REST.JS BUG
|
|
20
|
+
// and normally should never be done.
|
|
21
|
+
item.extent = bboxToString(item.extent);
|
|
22
|
+
}
|
|
23
|
+
// Create the item
|
|
24
|
+
const createResponse = await createItem(Object.assign({ item }, requestOptions));
|
|
25
|
+
// Re-fetch the model and return that so it has all the latest prop values
|
|
26
|
+
return getModel(createResponse.id, requestOptions);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=createModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createModel.js","sourceRoot":"","sources":["../../../src/models/createModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,cAAmC;IAEnC,8CAA8C;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,oCAAoC;IACpC,kDAAkD;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;QAClD,4CAA4C;QAC5C,qCAAqC;QACrC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAA0B,CAAC;KAClE;IAED,kBAAkB;IAClB,MAAM,cAAc,GAAG,MAAM,UAAU,iBACrC,IAAI,IACD,cAAc,EACjB,CAAC;IAEH,0EAA0E;IAC1E,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getItemData } from "@esri/arcgis-rest-portal";
|
|
2
|
+
import { shouldFetchData } from "../content/_internal/shouldFetchData";
|
|
3
|
+
/**
|
|
4
|
+
* Given an Item, fetch the data json and return an IModel
|
|
5
|
+
* @param item
|
|
6
|
+
* @param requestOptions
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export async function fetchModelFromItem(item, requestOptions) {
|
|
10
|
+
const data = shouldFetchData(item)
|
|
11
|
+
? (await getItemData(item.id, requestOptions).catch(() => null))
|
|
12
|
+
: null;
|
|
13
|
+
return {
|
|
14
|
+
item,
|
|
15
|
+
data,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=fetchModelFromItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchModelFromItem.js","sourceRoot":"","sources":["../../../src/models/fetchModelFromItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAW,EACX,cAA+B;IAE/B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAChC,CAAC,CAAE,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,KAAK,CAChD,GAAS,EAAE,CAAC,IAAI,CACjB,CAA6B;QAChC,CAAC,CAAC,IAAI,CAAC;IACT,OAAO;QACL,IAAI;QACJ,IAAI;KACK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getItemResource, } from "@esri/arcgis-rest-portal";
|
|
2
|
+
import { failSafe } from "../utils/fail-safe";
|
|
3
|
+
/**
|
|
4
|
+
* Given an item, and a list of resource name/prop pairs,
|
|
5
|
+
* fetch the resources and return as an object for the IModel
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @param {IItem} item
|
|
9
|
+
* @param {{
|
|
10
|
+
* [key: string]: string
|
|
11
|
+
* }} resourceNamePairs
|
|
12
|
+
* @param {IRequestOptions} requestOptions
|
|
13
|
+
* @return {*} {Promise<Record<string, any>>}
|
|
14
|
+
*/
|
|
15
|
+
// we should actually resolve this lint error
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
17
|
+
export async function fetchModelResources(item, resourceNamePairs, requestOptions) {
|
|
18
|
+
// Iterate through the resource name/prop pairs and fetch the resources
|
|
19
|
+
return Object.entries(resourceNamePairs).reduce(async (acc, [key, value]) => {
|
|
20
|
+
// failsafe to prevent errors returns falsy if error
|
|
21
|
+
const failSafeGetResource = failSafe(getItemResource, null);
|
|
22
|
+
// get the resource
|
|
23
|
+
const resp = await failSafeGetResource(item.id, Object.assign({ fileName: value,
|
|
24
|
+
// Must be "arrayBuffer" | "blob" | "formData" | "json" | "text";
|
|
25
|
+
readAs: value.split(".").pop() }, requestOptions));
|
|
26
|
+
// if the failsafe succeeds
|
|
27
|
+
if (resp) {
|
|
28
|
+
// Update the acc with the prop and resource
|
|
29
|
+
acc[key] = resp;
|
|
30
|
+
}
|
|
31
|
+
return acc;
|
|
32
|
+
}, {});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=fetchModelResource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchModelResource.js","sourceRoot":"","sources":["../../../src/models/fetchModelResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAEhB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,6CAA6C;AAC7C,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAW,EACX,iBAEC,EACD,cAA+B;IAE/B,uEAAuE;IACvE,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAC7C,KAAK,EAAE,GAAwB,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC/C,oDAAoD;QACpD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC5D,mBAAmB;QACnB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,EAAE,kBAC5C,QAAQ,EAAE,KAAK;YACf,iEAAiE;YACjE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAyB,IAClD,cAAc,EACjB,CAAC;QACH,2BAA2B;QAC3B,IAAI,IAAI,EAAE;YACR,4CAA4C;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SACjB;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getItem, getItemData } from "@esri/arcgis-rest-portal";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the full item/data model for an item id
|
|
4
|
+
* @param {string} id
|
|
5
|
+
* @param {Object} requestOptions
|
|
6
|
+
*/
|
|
7
|
+
export function getModel(id, requestOptions) {
|
|
8
|
+
return Promise.all([
|
|
9
|
+
getItem(id, requestOptions),
|
|
10
|
+
getItemData(id, requestOptions),
|
|
11
|
+
]).then((result) => {
|
|
12
|
+
// shape this into a model
|
|
13
|
+
return {
|
|
14
|
+
item: result[0],
|
|
15
|
+
data: result[1],
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=getModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getModel.js","sourceRoot":"","sources":["../../../src/models/getModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAS,MAAM,0BAA0B,CAAC;AAIvE;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAU,EACV,cAA+B;IAE/B,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC;QAC3B,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC;KAChC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAoB,EAAE,EAAE;QAC/B,0BAA0B;QAC1B,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getItemData } from "@esri/arcgis-rest-portal";
|
|
2
|
+
import { getItemBySlug } from "../items/slugs";
|
|
3
|
+
/**
|
|
4
|
+
* Get a model by it's slug
|
|
5
|
+
*
|
|
6
|
+
* This uses the [Filter](https://developers.arcgis.com/rest/users-groups-and-items/search-reference.htm) option of the
|
|
7
|
+
* to search for an item that has a typekeyword of `slug|{slug-value}`
|
|
8
|
+
*
|
|
9
|
+
* This is useful for applications that want to use human-readable urls instead
|
|
10
|
+
* of using item ids.
|
|
11
|
+
*
|
|
12
|
+
* @param slug
|
|
13
|
+
* @param requestOptions
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export function getModelBySlug(slug, requestOptions) {
|
|
17
|
+
return getItemBySlug(slug, requestOptions)
|
|
18
|
+
.then((item) => {
|
|
19
|
+
const prms = [Promise.resolve(item)];
|
|
20
|
+
if (item) {
|
|
21
|
+
prms.push(getItemData(item.id, requestOptions));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
prms.push(Promise.resolve(null));
|
|
25
|
+
}
|
|
26
|
+
return Promise.all(prms);
|
|
27
|
+
})
|
|
28
|
+
.then((result) => {
|
|
29
|
+
if (result[0]) {
|
|
30
|
+
return {
|
|
31
|
+
item: result[0],
|
|
32
|
+
data: result[1],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=getModelBySlug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getModelBySlug.js","sourceRoot":"","sources":["../../../src/models/getModelBySlug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,cAA+B;IAE/B,OAAO,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC;SACvC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;SACjD;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SAClC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,MAAa,EAAE,EAAE;QACtB,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACb,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;aAChB,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { getItem } from "@esri/arcgis-rest-portal";
|
|
2
|
+
import { bboxToString } from "../extent";
|
|
3
|
+
import { cloneObject } from "../util";
|
|
4
|
+
import { getModel } from "./getModel";
|
|
5
|
+
import { updateItem } from "../rest/portal/wrappers";
|
|
6
|
+
/**
|
|
7
|
+
* Update an IModel. Generic function that will be used across all
|
|
8
|
+
* type-specific update functions
|
|
9
|
+
*
|
|
10
|
+
* @export
|
|
11
|
+
* @param {IModel} "model" object (i.e. `{item:{...}, data:{...}}`)
|
|
12
|
+
* @param {IRequestOptions} requestOptions
|
|
13
|
+
* @returns {Promise<IModel>}
|
|
14
|
+
*/
|
|
15
|
+
export function updateModel(model, requestOptions) {
|
|
16
|
+
// const clone = cloneObject(model);
|
|
17
|
+
const item = cloneObject(model.item);
|
|
18
|
+
item.data = cloneObject(model.data);
|
|
19
|
+
// Update extent from bbox to string
|
|
20
|
+
// TODO: remove below logic once rest.js is fixed.
|
|
21
|
+
if (item.extent && typeof item.extent !== "string") {
|
|
22
|
+
// THIS IS A HACK TO WORK AROUND REST.JS BUG
|
|
23
|
+
// and normally should never be done.
|
|
24
|
+
item.extent = bboxToString(item.extent);
|
|
25
|
+
}
|
|
26
|
+
// If we have a field we are trying to clear (by making it an empty string like description / snippet)
|
|
27
|
+
// We need to send clearEmptyFields: true to the updateItem call
|
|
28
|
+
if (shouldClearEmptyFields(item)) {
|
|
29
|
+
requestOptions.params = Object.assign(Object.assign({}, requestOptions.params), { clearEmptyFields: true });
|
|
30
|
+
}
|
|
31
|
+
const opts = Object.assign({ item }, requestOptions);
|
|
32
|
+
return updateItem(opts).then(() => {
|
|
33
|
+
// To ensure we have the exact modified timestamp, we need to
|
|
34
|
+
// get the item again
|
|
35
|
+
// Also, we can't just call getModel because we need to be able
|
|
36
|
+
// to properly handle other types like PDFs that don't have JSON data
|
|
37
|
+
return item.data
|
|
38
|
+
? getModel(item.id, requestOptions)
|
|
39
|
+
: getItem(item.id, requestOptions).then((i) => ({ item: i }));
|
|
40
|
+
// // update the modified prop
|
|
41
|
+
// // this won't be exact, but it will be very close
|
|
42
|
+
// clone.item.modified = new Date().getTime();
|
|
43
|
+
// return clone;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Given an Item, determine if there are any fields to be cleared
|
|
48
|
+
*
|
|
49
|
+
* @param {IItem} item
|
|
50
|
+
* @return {*} boolean
|
|
51
|
+
*/
|
|
52
|
+
function shouldClearEmptyFields(item) {
|
|
53
|
+
return ["description", "snippet", "tags", "categories", "licenseInfo"].some((field) => { var _a; return item[field] === "" || ((_a = item[field]) === null || _a === void 0 ? void 0 : _a.length) === 0; });
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=updateModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateModel.js","sourceRoot":"","sources":["../../../src/models/updateModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA6B,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,cAAmC;IAEnC,oCAAoC;IACpC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,oCAAoC;IACpC,kDAAkD;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;QAClD,4CAA4C;QAC5C,qCAAqC;QACrC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAA0B,CAAC;KAClE;IAED,sGAAsG;IACtG,gEAAgE;IAChE,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAChC,cAAc,CAAC,MAAM,mCAChB,cAAc,CAAC,MAAM,KACxB,gBAAgB,EAAE,IAAI,GACvB,CAAC;KACH;IAED,MAAM,IAAI,mBACR,IAAI,IACD,cAAc,CAClB,CAAC;IAEF,OAAO,UAAU,CAAC,IAA0B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACtD,6DAA6D;QAC7D,qBAAqB;QACrB,+DAA+D;QAC/D,qEAAqE;QACrE,OAAO,IAAI,CAAC,IAAI;YACd,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,8BAA8B;QAC9B,oDAAoD;QACpD,8CAA8C;QAC9C,gBAAgB;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,IAAW;IACzC,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,IAAI,CACzE,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,OAAA,IAAI,CAAC,KAAK,CAAC,0CAAE,MAAM,MAAK,CAAC,CAAA,EAAA,CAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { upsertResource } from "../resources/upsertResource";
|
|
2
|
+
/**
|
|
3
|
+
* Takes an IModel and an array of resources and upserts them to the
|
|
4
|
+
* backing item. Then searches for the resources that were upserted
|
|
5
|
+
* and attaches them to the model, which is returned.
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @param {IModel} model
|
|
9
|
+
* @param {Array<{
|
|
10
|
+
* resource: Record<string, any>;
|
|
11
|
+
* filename: string;
|
|
12
|
+
* }>} resources
|
|
13
|
+
* @param {IUserRequestOptions} requestOptions
|
|
14
|
+
* @return {*} {Promise<IModel>}
|
|
15
|
+
*/
|
|
16
|
+
export async function upsertModelResources(model, resources, requestOptions) {
|
|
17
|
+
// Set up promises array
|
|
18
|
+
const upsertPromises = [];
|
|
19
|
+
const expectedResourceNames = [];
|
|
20
|
+
// loop through resources and create them
|
|
21
|
+
resources.forEach((value) => {
|
|
22
|
+
upsertPromises.push(upsertResource(model.item.id, model.item.owner, value.resource, value.filename, requestOptions));
|
|
23
|
+
expectedResourceNames.push(value.filename);
|
|
24
|
+
});
|
|
25
|
+
// Promise.all to wait for all resources to be created
|
|
26
|
+
return Promise.all(upsertPromises).then(() => {
|
|
27
|
+
// Create a new object with the resources
|
|
28
|
+
const updatedResources = resources.reduce((acc, resource) => {
|
|
29
|
+
// Get the property name from the resource name
|
|
30
|
+
const prop = resource.filename.split(".").shift();
|
|
31
|
+
acc[prop] = resource.resource;
|
|
32
|
+
return acc;
|
|
33
|
+
}, {});
|
|
34
|
+
return Object.assign({ resources: updatedResources }, model);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=upsertModelResource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsertModelResource.js","sourceRoot":"","sources":["../../../src/models/upsertModelResource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAa,EACb,SAGE,EACF,cAAmC;IAEnC,wBAAwB;IACxB,MAAM,cAAc,GAAwB,EAAE,CAAC;IAC/C,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAC3C,yCAAyC;IACzC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;QAC/B,cAAc,CAAC,IAAI,CACjB,cAAc,CACZ,KAAK,CAAC,IAAI,CAAC,EAAE,EACb,KAAK,CAAC,IAAI,CAAC,KAAK,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,cAAc,CACf,CACF,CAAC;QACF,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,sDAAsD;IACtD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3C,yCAAyC;QACzC,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,QAAQ,EAAE,EAAE;YAC/D,+CAA+C;YAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,uBACE,SAAS,EAAE,gBAAgB,IACxB,KAAK,EACR;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageEditorTypes.js","sourceRoot":"","sources":["../../../../src/pages/_internal/pageEditorTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAU,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getPolicyResponseCode } from "./getPolicyResponseCode";
|
|
2
|
+
/**
|
|
3
|
+
* Gate access based on the platform version (portal.currentVersion).
|
|
4
|
+
* If the currentVersion is less than the policy.platformVersion, access is denied.
|
|
5
|
+
* This is used to limit access to features that need to roll out with a
|
|
6
|
+
* specific ArcGISOnline version. This should not be used with Enterprise.
|
|
7
|
+
* @param policy
|
|
8
|
+
* @param context
|
|
9
|
+
* @param _entity
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export function checkPlatformVersion(policy, context, _entity) {
|
|
13
|
+
const checks = [];
|
|
14
|
+
// only apply if a platformVersion is specified in the policy
|
|
15
|
+
if (policy.platformVersion) {
|
|
16
|
+
// parse the currentVersion as a float (e.g. "2024.1" -> 2024.1)
|
|
17
|
+
// and compare to the policy.platformVersion
|
|
18
|
+
// which is also a float (e.g. 2024.1)
|
|
19
|
+
// if currentVersion < platformVersion, deny access
|
|
20
|
+
// e.g. currentVersion 2024.0 < platformVersion 2024.1 -> deny
|
|
21
|
+
// e.g. currentVersion 2024.1 >= platformVersion 2024.1 -> allow
|
|
22
|
+
// e.g. currentVersion 2024.2 >= platformVersion 2024.1 -> allow
|
|
23
|
+
const currentVersion = parseFloat(context.portal.currentVersion);
|
|
24
|
+
if (currentVersion < policy.platformVersion) {
|
|
25
|
+
checks.push({
|
|
26
|
+
response: "platform-version-not-met",
|
|
27
|
+
value: context.portal.currentVersion,
|
|
28
|
+
code: getPolicyResponseCode("platform-version-not-met"),
|
|
29
|
+
name: "Platform Version Check",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
checks.push({
|
|
34
|
+
response: "granted",
|
|
35
|
+
value: context.portal.currentVersion,
|
|
36
|
+
code: getPolicyResponseCode("granted"),
|
|
37
|
+
name: "Platform Version Check",
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return checks;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=checkPlatformVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkPlatformVersion.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkPlatformVersion.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAyB,EACzB,OAAuB,EACvB,OAA6B;IAE7B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,6DAA6D;IAC7D,IAAI,MAAM,CAAC,eAAe,EAAE;QAC1B,gEAAgE;QAChE,4CAA4C;QAC5C,sCAAsC;QACtC,mDAAmD;QACnD,8DAA8D;QAC9D,gEAAgE;QAChE,gEAAgE;QAChE,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,0BAA0B;gBACpC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAwB;gBAC9C,IAAI,EAAE,qBAAqB,CAAC,0BAA0B,CAAC;gBACvD,IAAI,EAAE,wBAAwB;aAC/B,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAwB;gBAC9C,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC;gBACtC,IAAI,EAAE,wBAAwB;aAC/B,CAAC,CAAC;SACJ;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { getPolicyResponseCode } from "./getPolicyResponseCode";
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
* Verify that the policy.releaseAfter and policy.retireAfter requirements are met.
|
|
5
|
+
* These checks only apply in the "production" environment.
|
|
6
|
+
* @param policy
|
|
7
|
+
* @param context
|
|
8
|
+
* @param entity
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export function checkReleaseGating(policy, context, _entity) {
|
|
12
|
+
const checks = [];
|
|
13
|
+
// if neither value is specified, we return an empty array
|
|
14
|
+
if (!policy.releaseAfter && !policy.retireAfter) {
|
|
15
|
+
return checks;
|
|
16
|
+
}
|
|
17
|
+
// We only apply release gating in the production environment
|
|
18
|
+
if (context.environment === "production") {
|
|
19
|
+
const now = new Date();
|
|
20
|
+
if (policy.releaseAfter) {
|
|
21
|
+
const releaseDate = new Date(policy.releaseAfter);
|
|
22
|
+
let result = "release-date-not-reached";
|
|
23
|
+
if (now > releaseDate) {
|
|
24
|
+
result = "granted";
|
|
25
|
+
}
|
|
26
|
+
const check = {
|
|
27
|
+
name: `feature released`,
|
|
28
|
+
value: policy.releaseAfter,
|
|
29
|
+
code: getPolicyResponseCode(result),
|
|
30
|
+
response: result,
|
|
31
|
+
};
|
|
32
|
+
checks.push(check);
|
|
33
|
+
}
|
|
34
|
+
if (policy.retireAfter) {
|
|
35
|
+
const retireDate = new Date(policy.retireAfter);
|
|
36
|
+
let result = "retire-date-not-reached";
|
|
37
|
+
if (now > retireDate) {
|
|
38
|
+
result = "granted";
|
|
39
|
+
}
|
|
40
|
+
const check = {
|
|
41
|
+
name: `feature retired`,
|
|
42
|
+
value: policy.retireAfter,
|
|
43
|
+
code: getPolicyResponseCode(result),
|
|
44
|
+
response: result,
|
|
45
|
+
};
|
|
46
|
+
checks.push(check);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// if not in production, we always grant access
|
|
51
|
+
const check = {
|
|
52
|
+
name: `release gating only applies to production`,
|
|
53
|
+
value: policy.releaseAfter,
|
|
54
|
+
code: getPolicyResponseCode("granted"),
|
|
55
|
+
response: "granted",
|
|
56
|
+
};
|
|
57
|
+
checks.push(check);
|
|
58
|
+
}
|
|
59
|
+
return checks;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=checkReleaseGating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkReleaseGating.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkReleaseGating.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAyB,EACzB,OAAuB,EACvB,OAA6B;IAE7B,MAAM,MAAM,GAAG,EAAoB,CAAC;IAEpC,0DAA0D;IAC1D,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QAC/C,OAAO,MAAM,CAAC;KACf;IACD,6DAA6D;IAC7D,IAAI,OAAO,CAAC,WAAW,KAAK,YAAY,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,MAAM,GAAmB,0BAA0B,CAAC;YACxD,IAAI,GAAG,GAAG,WAAW,EAAE;gBACrB,MAAM,GAAG,SAAS,CAAC;aACpB;YACD,MAAM,KAAK,GAAiB;gBAC1B,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,MAAM,CAAC,YAAY;gBAC1B,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,MAAM;aACjB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;QAED,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,MAAM,GAAmB,yBAAyB,CAAC;YACvD,IAAI,GAAG,GAAG,UAAU,EAAE;gBACpB,MAAM,GAAG,SAAS,CAAC;aACpB;YACD,MAAM,KAAK,GAAiB;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,MAAM,CAAC,WAAW;gBACzB,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,MAAM;aACjB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;KACF;SAAM;QACL,+CAA+C;QAC/C,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,2CAA2C;YACjD,KAAK,EAAE,MAAM,CAAC,YAAY;YAC1B,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC;YACtC,QAAQ,EAAE,SAAS;SACpB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectEditorTypes.js","sourceRoot":"","sources":["../../../../src/projects/_internal/projectEditorTypes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,qBAAqB;IACrB,sBAAsB;CACd,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { cloneObject } from "../../util";
|
|
2
|
+
import { getFamilyTypes } from "../../content/get-family";
|
|
3
|
+
import { WellKnownItemPredicates } from "./constants";
|
|
4
|
+
import { isWellKnownTypeFilter } from "./isWellKnownTypeFilter";
|
|
5
|
+
import { isFamilyExpansionType } from "./isFamilyExpansionType";
|
|
6
|
+
/**
|
|
7
|
+
* Return the predicates for a well-known type
|
|
8
|
+
* @param key
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
function lookupTypePredicates(key) {
|
|
12
|
+
return WellKnownItemPredicates[key];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @private
|
|
16
|
+
* Convert a Filter Group to expand well-known type filters
|
|
17
|
+
*
|
|
18
|
+
* The purpose of this function is to allow for the use of short-hand
|
|
19
|
+
* names for commonly used, complex queries.
|
|
20
|
+
*
|
|
21
|
+
* It works by looking for filters using the .type property, the value
|
|
22
|
+
* of which is a key in the WellKnownItemFilters hash. If found in the
|
|
23
|
+
* hash, the filters array of the active filterGroup is replaced with the
|
|
24
|
+
* filters specified in the hash.
|
|
25
|
+
*
|
|
26
|
+
* NOTE: Any other properties specified in a filter will be removed
|
|
27
|
+
*
|
|
28
|
+
* Only exported to enable extensive testing
|
|
29
|
+
* @param query
|
|
30
|
+
*/
|
|
31
|
+
export function applyWellKnownItemPredicates(query) {
|
|
32
|
+
const queryClone = cloneObject(query);
|
|
33
|
+
// iterate the filters
|
|
34
|
+
queryClone.filters = queryClone.filters.map((filter) => {
|
|
35
|
+
// replace predicates with well-known types
|
|
36
|
+
let replacedPredicates = false;
|
|
37
|
+
filter.predicates = filter.predicates.reduce((acc, predicate) => {
|
|
38
|
+
// if the predicate has a well-known type
|
|
39
|
+
// we replace it with the set of predicates defined
|
|
40
|
+
// for the well-known type
|
|
41
|
+
if (isWellKnownTypeFilter(predicate.type)) {
|
|
42
|
+
const replacements = lookupTypePredicates(predicate.type);
|
|
43
|
+
acc = [...acc, ...replacements];
|
|
44
|
+
replacedPredicates = true;
|
|
45
|
+
}
|
|
46
|
+
else if (
|
|
47
|
+
/**
|
|
48
|
+
* NOTE: as of Nov. 26 2024, we have elected to start using the family types
|
|
49
|
+
* for a type replacement rather than the entire replacement itself. This updates
|
|
50
|
+
* a well-known predicate to only have type values, rather than types, typekeywords, etc etc.
|
|
51
|
+
* We also use the family types to replace the type values. Almost all of our current type
|
|
52
|
+
* replacements include typekeywords only to also retrieve old items -- i.e. having -- we need to be aware
|
|
53
|
+
* that by using family types, we are not including these old items in results in these cases.
|
|
54
|
+
*
|
|
55
|
+
* This clause is primarily used by custom-build catalogs using the new catalog editor.
|
|
56
|
+
*
|
|
57
|
+
* We specifically do not say that we have replaced filters here either as we want to leave the
|
|
58
|
+
* operator as is.
|
|
59
|
+
*/
|
|
60
|
+
predicate.type &&
|
|
61
|
+
typeof predicate.type !== "string" &&
|
|
62
|
+
!Array.isArray(predicate.type)) {
|
|
63
|
+
// we have an IMatchOptions object, so we have to iterate over the all/any/not
|
|
64
|
+
Object.keys(predicate.type).forEach((key) => {
|
|
65
|
+
const types = predicate.type[key];
|
|
66
|
+
// try to reduce the array if it is an array
|
|
67
|
+
if (Array.isArray(types)) {
|
|
68
|
+
// for each type, try to replace it with the family types if it is an expansion
|
|
69
|
+
predicate.type[key] = types.reduce((typesAcc, type) => {
|
|
70
|
+
if (isFamilyExpansionType(type)) {
|
|
71
|
+
// we need the type keyword without the dollar sign
|
|
72
|
+
const family = type.slice(1);
|
|
73
|
+
// get the family types from the given expansion
|
|
74
|
+
const familyTypes = getFamilyTypes(family);
|
|
75
|
+
typesAcc = [...typesAcc, ...familyTypes];
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
typesAcc.push(type);
|
|
79
|
+
}
|
|
80
|
+
return typesAcc;
|
|
81
|
+
}, []);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// keep the updated predicate
|
|
85
|
+
acc.push(predicate);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// this predicate does not have a well-known type
|
|
89
|
+
// so we just keep it
|
|
90
|
+
acc.push(predicate);
|
|
91
|
+
}
|
|
92
|
+
return acc;
|
|
93
|
+
}, []);
|
|
94
|
+
if (replacedPredicates) {
|
|
95
|
+
// Any filter who's predicates were replaced with
|
|
96
|
+
// well-known predicates, needs to use "OR" to ensure
|
|
97
|
+
// correct query logic
|
|
98
|
+
filter.operation = "OR";
|
|
99
|
+
}
|
|
100
|
+
return filter;
|
|
101
|
+
});
|
|
102
|
+
return queryClone;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=applyWellKnownItemPredicates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyWellKnownItemPredicates.js","sourceRoot":"","sources":["../../../../src/search/_internal/applyWellKnownItemPredicates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,GAAyC;IAEzC,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACtC,sBAAsB;IACtB,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACrD,2CAA2C;QAC3C,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAC1C,CAAC,GAAiB,EAAE,SAAS,EAAE,EAAE;YAC/B,yCAAyC;YACzC,mDAAmD;YACnD,0BAA0B;YAC1B,IAAI,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACzC,MAAM,YAAY,GAAG,oBAAoB,CACvC,SAAS,CAAC,IAA4C,CACvD,CAAC;gBACF,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC;gBAChC,kBAAkB,GAAG,IAAI,CAAC;aAC3B;iBAAM;YACL;;;;;;;;;;;;eAYG;YACH,SAAS,CAAC,IAAI;gBACd,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;gBAClC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAC9B;gBACA,8EAA8E;gBAC9E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAElC,4CAA4C;oBAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB,+EAA+E;wBAC/E,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAChC,CAAC,QAAkB,EAAE,IAAY,EAAE,EAAE;4BACnC,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE;gCAC/B,mDAAmD;gCACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCAC7B,gDAAgD;gCAChD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAmB,CAAC,CAAC;gCACxD,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,CAAC,CAAC;6BAC1C;iCAAM;gCACL,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;6BACrB;4BACD,OAAO,QAAQ,CAAC;wBAClB,CAAC,EACD,EAAE,CACH,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;gBAEH,6BAA6B;gBAC7B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrB;iBAAM;gBACL,iDAAiD;gBACjD,qBAAqB;gBACrB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrB;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;QACF,IAAI,kBAAkB,EAAE;YACtB,iDAAiD;YACjD,qDAAqD;YACrD,sBAAsB;YACtB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Given a bounding box string, e.g. "126.2274169922485, -42.559149812106845, -25.647583007805757, 83.1100826092665",
|
|
3
|
+
* convert it into a geojson Polygon object
|
|
4
|
+
* @param bbox The bounding box string
|
|
5
|
+
* @returns a geojson Polygon object derived from the given bounding box string
|
|
6
|
+
*/
|
|
7
|
+
export function bboxStringToGeoJSONPolygon(bbox) {
|
|
8
|
+
const [lon1, lat1, lon2, lat2] = bbox
|
|
9
|
+
.split(",")
|
|
10
|
+
.map((vertex) => parseFloat(vertex.trim()));
|
|
11
|
+
const minLon = Math.min(lon1, lon2);
|
|
12
|
+
const minLat = Math.min(lat1, lat2);
|
|
13
|
+
const maxLon = Math.max(lon1, lon2);
|
|
14
|
+
const maxLat = Math.max(lat1, lat2);
|
|
15
|
+
return {
|
|
16
|
+
type: "Polygon",
|
|
17
|
+
coordinates: [
|
|
18
|
+
[
|
|
19
|
+
[minLon, minLat],
|
|
20
|
+
[maxLon, minLat],
|
|
21
|
+
[maxLon, maxLat],
|
|
22
|
+
[minLon, maxLat],
|
|
23
|
+
[minLon, minLat],
|
|
24
|
+
],
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=bboxStringToGeoJSONPolygon.js.map
|