"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBasePropertyMap = getBasePropertyMap;
const types_1 = require("../types/types");
/**
 * Returns an Array of IPropertyMap objects
 * that define the standard projection of properties from a IModel an entity interface
 * @returns
 */
function getBasePropertyMap() {
    const itemProps = [
        "access",
        "created",
        "culture",
        "description",
        "extent",
        "id",
        "itemControl",
        "modified",
        "owner",
        "tags",
        "categories",
        "type",
        "typeKeywords",
        "thumbnail",
        "url",
        "orgId",
        // NOTE: Read-only props like canRecycle are handled in the PropertyMapper itself
    ];
    const dataProps = [
        "display",
        "geometry",
        "view",
        "associations",
        "catalogs",
        "assistant",
        "layout",
    ];
    const resourceProps = Object.keys(types_1.EntityResourceMap);
    const map = [];
    itemProps.forEach((entry) => {
        map.push({ entityKey: entry, storeKey: `item.${entry}` });
    });
    dataProps.forEach((entry) => {
        map.push({ entityKey: entry, storeKey: `data.${entry}` });
    });
    resourceProps.forEach((entry) => {
        map.push({ entityKey: entry, storeKey: `resources.${entry}` });
    });
    // Deeper mappings
    map.push({
        entityKey: "slug",
        storeKey: "item.properties.slug",
    });
    map.push({
        entityKey: "summary",
        storeKey: "item.snippet",
    });
    map.push({
        entityKey: "schemaVersion",
        storeKey: "item.properties.schemaVersion",
    });
    map.push({
        entityKey: "orgUrlKey",
        storeKey: "item.properties.orgUrlKey",
    });
    map.push({
        entityKey: "name",
        storeKey: "item.title",
    });
    map.push({
        entityKey: "boundary",
        storeKey: "item.properties.boundary",
    });
    map.push({
        entityKey: "location",
        storeKey: "item.properties.location",
    });
    map.push({
        entityKey: "discussionSettings",
        storeKey: "entitySettings.settings.discussions",
    });
    map.push({
        entityKey: "entitySettingsId",
        storeKey: "entitySettings.id",
    });
    return map;
}
//# sourceMappingURL=getBasePropertyMap.js.map