box-ui-elements 23.4.0-beta.14 → 23.4.0-beta.15
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/es/api/Metadata.js +0 -1
- package/es/api/Metadata.js.flow +1 -1
- package/es/api/Metadata.js.map +1 -1
- package/package.json +1 -1
- package/src/api/Metadata.js +1 -1
package/es/api/Metadata.js
CHANGED
|
@@ -12,7 +12,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
12
12
|
* @author Box
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { TreeQueryInput } from '@box/combobox-with-api';
|
|
16
15
|
import cloneDeep from 'lodash/cloneDeep';
|
|
17
16
|
import lodashFilter from 'lodash/filter';
|
|
18
17
|
import flatMap from 'lodash/flatMap';
|
package/es/api/Metadata.js.flow
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author Box
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { TreeQueryInput } from '@box/combobox-with-api';
|
|
7
|
+
import type { TreeQueryInput } from '@box/combobox-with-api';
|
|
8
8
|
import cloneDeep from 'lodash/cloneDeep';
|
|
9
9
|
import lodashFilter from 'lodash/filter';
|
|
10
10
|
import flatMap from 'lodash/flatMap';
|
package/es/api/Metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Metadata.js","names":["TreeQueryInput","cloneDeep","lodashFilter","flatMap","getProp","isEmpty","keyBy","lodashMap","partition","uniq","uniqueId","getBadItemError","getBadPermissionsError","isUserCorrectableError","getTypedFileId","handleOnAbort","formatMetadataFieldValue","File","HEADER_CONTENT_TYPE","METADATA_SCOPE_ENTERPRISE","METADATA_SCOPE_GLOBAL","METADATA_TEMPLATE_FETCH_LIMIT","METADATA_TEMPLATE_PROPERTIES","METADATA_TEMPLATE_CLASSIFICATION","METADATA_TEMPLATE_SKILLS","METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL","FIELD_METADATA_SKILLS","CACHE_PREFIX_METADATA","ERROR_CODE_UPDATE_SKILLS","ERROR_CODE_UPDATE_METADATA","ERROR_CODE_CREATE_METADATA","ERROR_CODE_DELETE_METADATA","ERROR_CODE_FETCH_METADATA","ERROR_CODE_FETCH_METADATA_TEMPLATES","ERROR_CODE_FETCH_SKILLS","ERROR_CODE_FETCH_METADATA_OPTIONS","ERROR_CODE_FETCH_METADATA_SUGGESTIONS","ERROR_CODE_EMPTY_METADATA_SUGGESTIONS","TYPE_FILE","ERROR_CODE_FETCH_METADATA_TAXONOMY_NODE","ERROR_CODE_FETCH_METADATA_TAXONOMY","Metadata","getMetadataCacheKey","id","getSkillsCacheKey","getClassificationCacheKey","getMetadataUrl","scope","template","baseUrl","getUrl","getMetadataTemplateUrl","getBaseApiUrl","getMetadataTemplateUrlForInstance","getMetadataTemplateSchemaUrl","templateKey","getMetadataTemplateUrlForScope","getCustomPropertiesTemplate","hidden","fields","createEditor","instance","canEdit","data","Object","keys","forEach","key","startsWith","$id","$canEdit","getTaxonomyLevelsForTemplatesUrl","taxonomyPath","getTaxonomyPath","namespace","taxonomyKey","getTaxonomyLevelsForTemplates","metadataTemplates","templates","taxonomyFields","field","type","levels","taxonomy_key","taxonomyPaths","map","filter","Boolean","fetchPromises","result","xhr","get","url","path","error","Error","fetchResults","Promise","all","taxonomyInfo","fieldsToUpdate","restFields","updatedFields","_objectSpread","_ref","displayName","display_name","rest","_objectWithoutProperties","_excluded","concat","getTemplates","instanceId","errorCode","params","limit","e","status","templatesWithTaxonomies","getSchemaByTemplateKey","getInstances","isMetadataRedesign","instances","getUserAddableTemplates","customPropertiesTemplate","enterpriseTemplates","hasMetadataFeature","isExternallyOwned","userAddableTemplates","extractClassification","classification","find","$template","splice","indexOf","cache","getCache","set","getTemplateForInstance","$scope","t","crossEnterpriseTemplate","getEditors","globalTemplates","editors","push","createTemplateInstance","isInstanceFromTemplate","templateFields","value","$type","getTemplateInstances","templateInstances","getMetadata","file","successCallback","errorCallback","options","permissions","is_externally_owned","errorHandler","forceFetch","unset","has","successHandler","refreshCache","resolve","filteredInstances","can_upload","metadata","isDestroyed","getSkills","skills","cards","updateSkills","operations","put","headers","merge","getCacheKey","updateMetadata","cachedMetadata","editor","findIndex","updateMetadataRedesign","templateInstance","createMetadata","isProperties","post","createMetadataRedesign","fieldsValues","reduce","acc","obj","parseFloat","length","undefined","Array","isArray","option","deleteMetadata","delete","getMetadataSuggestionsUrl","getMetadataSuggestions","confidence","suggestionsResponse","item","template_key","getMetadataOptionsUrl","fieldKey","getMetadataOptions","level","marker","searchInput","query_text","onlySelectableOptions","ancestorId","ancestor_id","optionsLevel","signal","only_selectable_options","onabort","metadataOptions","getMetadataTaxonomyUrl","getMetadataTaxonomy","metadataTaxonomy","getMetadataTaxonomyNodeUrl","nodeID","includeAncestors","includeAncestorsParam","getMetadataTaxonomyNode","metadataTaxonomyNode"],"sources":["../../src/api/Metadata.js"],"sourcesContent":["/**\n * @flow\n * @file Helper for the Box metadata related API\n * @author Box\n */\n\nimport { TreeQueryInput } from '@box/combobox-with-api';\nimport cloneDeep from 'lodash/cloneDeep';\nimport lodashFilter from 'lodash/filter';\nimport flatMap from 'lodash/flatMap';\nimport getProp from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport keyBy from 'lodash/keyBy';\nimport lodashMap from 'lodash/map';\nimport partition from 'lodash/partition';\nimport uniq from 'lodash/uniq';\nimport uniqueId from 'lodash/uniqueId';\nimport { getBadItemError, getBadPermissionsError, isUserCorrectableError } from '../utils/error';\nimport { getTypedFileId } from '../utils/file';\nimport { handleOnAbort, formatMetadataFieldValue } from './utils';\nimport File from './File';\nimport {\n HEADER_CONTENT_TYPE,\n METADATA_SCOPE_ENTERPRISE,\n METADATA_SCOPE_GLOBAL,\n METADATA_TEMPLATE_FETCH_LIMIT,\n METADATA_TEMPLATE_PROPERTIES,\n METADATA_TEMPLATE_CLASSIFICATION,\n METADATA_TEMPLATE_SKILLS,\n METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL,\n FIELD_METADATA_SKILLS,\n CACHE_PREFIX_METADATA,\n ERROR_CODE_UPDATE_SKILLS,\n ERROR_CODE_UPDATE_METADATA,\n ERROR_CODE_CREATE_METADATA,\n ERROR_CODE_DELETE_METADATA,\n ERROR_CODE_FETCH_METADATA,\n ERROR_CODE_FETCH_METADATA_TEMPLATES,\n ERROR_CODE_FETCH_SKILLS,\n ERROR_CODE_FETCH_METADATA_OPTIONS,\n ERROR_CODE_FETCH_METADATA_SUGGESTIONS,\n ERROR_CODE_EMPTY_METADATA_SUGGESTIONS,\n TYPE_FILE,\n ERROR_CODE_FETCH_METADATA_TAXONOMY_NODE,\n ERROR_CODE_FETCH_METADATA_TAXONOMY,\n} from '../constants';\n\nimport type { RequestOptions, ElementsErrorCallback, JSONPatchOperations } from '../common/types/api';\nimport type {\n MetadataTemplateSchemaResponse,\n MetadataTemplate,\n MetadataInstanceV2,\n MetadataEditor,\n MetadataFields,\n MetadataSuggestion,\n MetadataTemplateInstance,\n MetadataTemplateInstanceField,\n} from '../common/types/metadata';\nimport type { BoxItem } from '../common/types/core';\nimport type APICache from '../utils/Cache';\n\nclass Metadata extends File {\n /**\n * Creates a key for the metadata cache\n *\n * @param {string} id - Folder id\n * @return {string} key\n */\n getMetadataCacheKey(id: string): string {\n return `${CACHE_PREFIX_METADATA}${id}`;\n }\n\n /**\n * Creates a key for the skills cache\n *\n * @param {string} id - Folder id\n * @return {string} key\n */\n getSkillsCacheKey(id: string): string {\n return `${this.getMetadataCacheKey(id)}_skills`;\n }\n\n /**\n * Creates a key for the classification cache\n *\n * @param {string} id - Folder id\n * @return {string} key\n */\n getClassificationCacheKey(id: string): string {\n return `${this.getMetadataCacheKey(id)}_classification`;\n }\n\n /**\n * API URL for metadata\n *\n * @param {string} id - a Box file id\n * @param {string} field - metadata field\n * @return {string} base url for files\n */\n getMetadataUrl(id: string, scope?: string, template?: string): string {\n const baseUrl = `${this.getUrl(id)}/metadata`;\n if (scope && template) {\n return `${baseUrl}/${scope}/${template}`;\n }\n return baseUrl;\n }\n\n /**\n * API URL for metadata templates for a scope\n *\n * @param {string} scope - metadata scope\n * @return {string} base url for files\n */\n getMetadataTemplateUrl(): string {\n return `${this.getBaseApiUrl()}/metadata_templates`;\n }\n\n /**\n * API URL for metadata template for an instance\n *\n * @param {string} id - metadata instance id\n * @return {string} base url for files\n */\n getMetadataTemplateUrlForInstance(id: string): string {\n return `${this.getMetadataTemplateUrl()}?metadata_instance_id=${id}`;\n }\n\n /**\n * API URL for getting metadata template schema by template key\n *\n * @param {string} templateKey - metadata template key\n * @return {string} API url for getting template schema by template key\n */\n getMetadataTemplateSchemaUrl(templateKey: string): string {\n return `${this.getMetadataTemplateUrl()}/enterprise/${templateKey}/schema`;\n }\n\n /**\n * API URL for metadata templates\n *\n * @param {string} scope - metadata scope or id\n * @return {string} base url for files\n */\n getMetadataTemplateUrlForScope(scope: string): string {\n return `${this.getMetadataTemplateUrl()}/${scope}`;\n }\n\n /**\n * Returns the custom properties template\n *\n * @return {Object} template for custom properties\n */\n getCustomPropertiesTemplate(): MetadataTemplate {\n return {\n id: uniqueId('metadata_template_'),\n scope: METADATA_SCOPE_GLOBAL,\n templateKey: METADATA_TEMPLATE_PROPERTIES,\n hidden: false,\n fields: [],\n };\n }\n\n /**\n * Utility to create editors from metadata instances\n * and metadata templates.\n *\n * @param {Object} instance - metadata instance\n * @param {Object} template - metadata template\n * @param {boolean} canEdit - is instance editable\n * @return {Object} metadata editor\n */\n createEditor(instance: MetadataInstanceV2, template: MetadataTemplate, canEdit: boolean): MetadataEditor {\n const data: MetadataFields = {};\n Object.keys(instance).forEach(key => {\n if (!key.startsWith('$')) {\n // $FlowFixMe\n data[key] = instance[key];\n }\n });\n\n return {\n template,\n instance: {\n id: instance.$id,\n canEdit: instance.$canEdit && canEdit,\n data,\n },\n };\n }\n\n /**\n * API URL for taxonomies levels for templates\n *\n * @param {string} taxonomyPath - taxonomy path\n * @return {string} base url for files\n */\n getTaxonomyLevelsForTemplatesUrl(taxonomyPath: string): string {\n return `${this.getBaseApiUrl()}/${taxonomyPath}`;\n }\n\n /**\n * Returns taxonomy path for API calls and level mapping\n *\n * @param {string} namespace\n * @param {string} taxonomyKey\n * @returns {string}\n */\n getTaxonomyPath(namespace?: string, taxonomyKey?: string): string | null {\n if (!namespace || !taxonomyKey) {\n return null;\n }\n return `metadata_taxonomies/${namespace}/${taxonomyKey}`;\n }\n\n /**\n *\n * @param {Array<MetadataTemplate>} metadataTemplates\n * @param {string} id\n * @returns {Array<MetadataTemplate>}\n */\n async getTaxonomyLevelsForTemplates(\n metadataTemplates: Array<MetadataTemplate>,\n id: string,\n ): Promise<Array<MetadataTemplate>> {\n const templates = cloneDeep(metadataTemplates);\n\n const taxonomyFields = flatMap(templates, template =>\n lodashFilter(\n template.fields,\n field => field.type === 'taxonomy' && !field.levels && (field.taxonomyKey || field.taxonomy_key),\n ),\n );\n\n if (isEmpty(taxonomyFields)) {\n return templates;\n }\n\n const taxonomyPaths = uniq(\n taxonomyFields\n .map(field => this.getTaxonomyPath(field.namespace, field.taxonomyKey || field.taxonomy_key))\n .filter(Boolean),\n );\n\n const fetchPromises = taxonomyPaths.map(async taxonomyPath => {\n try {\n const result = await this.xhr.get({\n url: this.getTaxonomyLevelsForTemplatesUrl(taxonomyPath),\n id: getTypedFileId(id),\n });\n return {\n path: taxonomyPath,\n levels: result.data.levels || [],\n };\n } catch (error) {\n throw new Error(`Failed to fetch taxonomy for path: ${taxonomyPath}`);\n }\n });\n\n const fetchResults = await Promise.all(fetchPromises);\n\n const taxonomyInfo = keyBy(fetchResults, 'path');\n\n return lodashMap(templates, template => {\n if (!template.fields) return template;\n\n const [fieldsToUpdate, restFields] = partition(\n template.fields,\n field => field.type === 'taxonomy' && !field.levels,\n );\n\n if (isEmpty(fieldsToUpdate)) return template;\n\n const updatedFields = lodashMap(fieldsToUpdate, field => {\n const taxonomyPath = this.getTaxonomyPath(field.namespace, field.taxonomyKey || field.taxonomy_key);\n const levels = taxonomyInfo[taxonomyPath]?.levels || [];\n\n const taxonomyKey = field.taxonomyKey || field.taxonomy_key;\n\n delete field.taxonomy_key;\n\n return {\n ...field,\n levels: lodashMap(levels, ({ displayName, display_name, ...rest }) => ({\n ...rest,\n displayName: displayName || display_name,\n })),\n taxonomyKey,\n };\n });\n\n return {\n ...template,\n fields: restFields.concat(updatedFields),\n };\n });\n }\n\n /**\n * Gets metadata templates for enterprise\n *\n * @param {string} id - file id\n * @param {string} scope - metadata scope\n * @param {string|void} [instanceId] - metadata instance id\n * @return {Object} array of metadata templates\n */\n async getTemplates(id: string, scope: string, instanceId?: string): Promise<Array<MetadataTemplate>> {\n this.errorCode = ERROR_CODE_FETCH_METADATA_TEMPLATES;\n let templates = {};\n const url = instanceId\n ? this.getMetadataTemplateUrlForInstance(instanceId)\n : this.getMetadataTemplateUrlForScope(scope);\n\n try {\n templates = await this.xhr.get({\n url,\n id: getTypedFileId(id),\n params: {\n limit: METADATA_TEMPLATE_FETCH_LIMIT, // internal hard limit is 500\n },\n });\n } catch (e) {\n const { status } = e;\n if (isUserCorrectableError(status)) {\n throw e;\n }\n }\n\n templates = getProp(templates, 'data.entries', []);\n const templatesWithTaxonomies = await this.getTaxonomyLevelsForTemplates(templates, id);\n\n return templatesWithTaxonomies;\n }\n\n /**\n * Gets metadata template schema by template key\n *\n * @param {string} templateKey - template key\n * @return {Promise} Promise object of metadata template\n */\n getSchemaByTemplateKey(templateKey: string): Promise<MetadataTemplateSchemaResponse> {\n const url = this.getMetadataTemplateSchemaUrl(templateKey);\n return this.xhr.get({ url });\n }\n\n /**\n * Gets metadata instances for a Box file\n *\n * @param {string} id - file id\n * @param {boolean} isMetadataRedesign - feature flag\n * @return {Object} array of metadata instances\n */\n async getInstances(id: string, isMetadataRedesign: boolean = false): Promise<Array<MetadataInstanceV2>> {\n this.errorCode = ERROR_CODE_FETCH_METADATA;\n const baseUrl = this.getMetadataUrl(id);\n const url = isMetadataRedesign ? `${baseUrl}?view=hydrated` : baseUrl;\n let instances = {};\n try {\n instances = await this.xhr.get({\n url,\n id: getTypedFileId(id),\n });\n } catch (e) {\n const { status } = e;\n if (isUserCorrectableError(status)) {\n throw e;\n }\n }\n return getProp(instances, 'data.entries', []);\n }\n\n /**\n * Returns a list of templates that can be added by the user.\n * For collabed files, only custom properties is allowed.\n *\n * @return {Object} template for custom properties\n */\n getUserAddableTemplates(\n customPropertiesTemplate: MetadataTemplate,\n enterpriseTemplates: Array<MetadataTemplate>,\n hasMetadataFeature: boolean,\n isExternallyOwned?: boolean,\n ): Array<MetadataTemplate> {\n let userAddableTemplates: Array<MetadataTemplate> = [];\n if (hasMetadataFeature) {\n userAddableTemplates = isExternallyOwned\n ? [customPropertiesTemplate]\n : [customPropertiesTemplate].concat(enterpriseTemplates);\n }\n // Only templates that are not hidden and not classification\n return userAddableTemplates.filter(\n template => !template.hidden && template.templateKey !== METADATA_TEMPLATE_CLASSIFICATION,\n );\n }\n\n /**\n * Extracts classification for different representation in the UI.\n *\n * @param {string} id - Box file id\n * @param {Array} instances - metadata instances\n * @return {Array} metadata instances without classification\n */\n extractClassification(id: string, instances: Array<MetadataInstanceV2>): Array<MetadataInstanceV2> {\n const classification = instances.find(instance => instance.$template === METADATA_TEMPLATE_CLASSIFICATION);\n if (classification) {\n instances.splice(instances.indexOf(classification), 1);\n const cache: APICache = this.getCache();\n const key = this.getClassificationCacheKey(id);\n cache.set(key, classification);\n }\n return instances;\n }\n\n /**\n * Finds template for a given metadata instance.\n *\n * @param {string} id - Box file id\n * @param {Object} instance - metadata instance\n * @param {Array} templates - metadata templates\n * @return {Object|undefined} template for metadata instance\n */\n async getTemplateForInstance(\n id: string,\n instance: MetadataInstanceV2,\n templates: Array<MetadataTemplate>,\n ): Promise<?MetadataTemplate> {\n const instanceId = instance.$id;\n const templateKey = instance.$template;\n const scope = instance.$scope;\n let template = templates.find(t => t.templateKey === templateKey && t.scope === scope);\n\n // Enterprise scopes are always enterprise_XXXXX\n if (!template && scope.startsWith(METADATA_SCOPE_ENTERPRISE)) {\n // If the template does not exist, it can be a template from another\n // enterprise because the user is viewing a collaborated file.\n const crossEnterpriseTemplate = await this.getTemplates(id, scope, instanceId);\n // The API always returns an array of at most one item\n template = crossEnterpriseTemplate[0]; // eslint-disable-line\n }\n\n return template;\n }\n\n /**\n * Creates and returns metadata editors.\n *\n * @param {string} id - Box file id\n * @param {Array} instances - metadata instances\n * @param {Object} customPropertiesTemplate - custom properties template\n * @param {Array} enterpriseTemplates - enterprise templates\n * @param {Array} globalTemplates - global templates\n * @param {boolean} canEdit - metadata editability\n * @return {Array} metadata editors\n */\n async getEditors(\n id: string,\n instances: Array<MetadataInstanceV2>,\n customPropertiesTemplate: MetadataTemplate,\n enterpriseTemplates: Array<MetadataTemplate>,\n globalTemplates: Array<MetadataTemplate>,\n canEdit: boolean,\n ): Promise<Array<MetadataEditor>> {\n // All usable templates for metadata instances\n const templates: Array<MetadataTemplate> = [customPropertiesTemplate].concat(\n enterpriseTemplates,\n globalTemplates,\n );\n\n // Create editors from each instance\n const editors: Array<MetadataEditor> = [];\n await Promise.all(\n instances.map(async instance => {\n const template: ?MetadataTemplate = await this.getTemplateForInstance(id, instance, templates);\n if (template) {\n editors.push(this.createEditor(instance, template, canEdit));\n }\n }),\n );\n return editors;\n }\n\n /**\n * Utility to concat instance and template into one entity.\n *\n * @param {Object} instance - metadata instance\n * @param {Object} template - metadata template\n * @param {boolean} canEdit - can user edit item\n * @return {Object} metadata template instance\n */\n createTemplateInstance(\n instance: MetadataInstanceV2,\n template: MetadataTemplate,\n canEdit: boolean,\n ): MetadataTemplateInstance {\n const fields: MetadataTemplateInstanceField[] = [];\n\n // templateKey is unique identifier for the template,\n // but its value is set to 'properties' if instance was created using Custom Metadata option instead of template\n const isInstanceFromTemplate = template.templateKey !== METADATA_TEMPLATE_PROPERTIES;\n if (isInstanceFromTemplate) {\n // Get Metadata Fields for Instances created from predefined template\n const templateFields = template.fields || [];\n templateFields.forEach(field => {\n const value = formatMetadataFieldValue(field, instance[field.key]);\n\n fields.push({\n ...field,\n value,\n });\n });\n } else {\n // Get Metadata Fields for Custom Instances\n Object.keys(instance).forEach(key => {\n if (!key.startsWith('$')) {\n fields.push({\n key,\n type: 'string',\n value: instance[key],\n });\n }\n });\n }\n\n return {\n canEdit: instance.$canEdit && canEdit,\n displayName: template.displayName,\n hidden: template.hidden,\n id: template.id,\n fields,\n scope: template.scope,\n templateKey: template.templateKey,\n type: instance.$type,\n };\n }\n\n /**\n * Creates and returns metadata entities.\n *\n * @param {string} id - Box file id\n * @param {Array} instances - metadata instances\n * @param {Object} customPropertiesTemplate - custom properties template\n * @param {Array} enterpriseTemplates - enterprise templates\n * @param {Array} globalTemplates - global templates\n * @param {boolean} canEdit\n * @return {Array} metadata editors\n */\n async getTemplateInstances(\n id: string,\n instances: Array<MetadataInstanceV2>,\n customPropertiesTemplate: MetadataTemplate,\n enterpriseTemplates: Array<MetadataTemplate>,\n globalTemplates: Array<MetadataTemplate>,\n canEdit: boolean,\n ): Promise<Array<MetadataTemplateInstance>> {\n // Get all usable templates for metadata instances\n const templates: Array<MetadataTemplate> = [customPropertiesTemplate].concat(\n enterpriseTemplates,\n globalTemplates,\n );\n\n // Create Metadata Template Instance from each instance\n const templateInstances: Array<MetadataTemplateInstance> = [];\n\n await Promise.all(\n instances.map(async instance => {\n const template: ?MetadataTemplate = await this.getTemplateForInstance(id, instance, templates);\n if (template) {\n templateInstances.push(this.createTemplateInstance(instance, template, canEdit));\n }\n }),\n );\n\n return templateInstances;\n }\n\n /**\n * API for getting metadata editors\n *\n * @param {Object} file\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @param {boolean} hasMetadataFeature - metadata feature check\n * @param {Object} options - fetch options\n * @param {boolean} isMetadataRedesign - is Metadata Sidebar redesigned\n * @return {Promise}\n */\n async getMetadata(\n file: BoxItem,\n successCallback: ({\n editors: Array<MetadataEditor>,\n templateInstances: Array<MetadataTemplateInstance>,\n templates: Array<MetadataTemplate>,\n }) => void,\n errorCallback: ElementsErrorCallback,\n hasMetadataFeature: boolean,\n options: RequestOptions = {},\n isMetadataRedesign: boolean = false,\n ): Promise<void> {\n const { id, permissions, is_externally_owned }: BoxItem = file;\n this.errorCode = ERROR_CODE_FETCH_METADATA;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n // Check for valid file object.\n // Need to eventually check for upload permission.\n if (!id || !permissions) {\n this.errorHandler(getBadItemError());\n return;\n }\n\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n\n // Clear the cache if needed\n if (options.forceFetch) {\n cache.unset(key);\n }\n\n // Return the cached value if it exists\n if (cache.has(key)) {\n this.successHandler(cache.get(key));\n if (!options.refreshCache) {\n return;\n }\n }\n\n try {\n const customPropertiesTemplate: MetadataTemplate = this.getCustomPropertiesTemplate();\n const [instances, globalTemplates, enterpriseTemplates] = await Promise.all([\n this.getInstances(id, isMetadataRedesign),\n this.getTemplates(id, METADATA_SCOPE_GLOBAL),\n hasMetadataFeature ? this.getTemplates(id, METADATA_SCOPE_ENTERPRISE) : Promise.resolve([]),\n ]);\n\n // Filter out classification\n const filteredInstances = this.extractClassification(id, instances);\n\n const templateInstances = isMetadataRedesign\n ? await this.getTemplateInstances(\n id,\n filteredInstances,\n customPropertiesTemplate,\n enterpriseTemplates,\n globalTemplates,\n !!permissions.can_upload,\n )\n : [];\n const editors = !isMetadataRedesign\n ? await this.getEditors(\n id,\n filteredInstances,\n customPropertiesTemplate,\n enterpriseTemplates,\n globalTemplates,\n !!permissions.can_upload,\n )\n : [];\n\n const metadata = {\n editors,\n templateInstances,\n templates: this.getUserAddableTemplates(\n customPropertiesTemplate,\n enterpriseTemplates,\n hasMetadataFeature,\n is_externally_owned,\n ),\n };\n\n cache.set(key, metadata);\n\n if (!this.isDestroyed()) {\n this.successHandler(metadata);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * Gets skills for file\n *\n * @param {string} id - file id\n * @return {Object} array of metadata instances\n */\n async getSkills(\n file: BoxItem,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n forceFetch: boolean = false,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_FETCH_SKILLS;\n const { id }: BoxItem = file;\n if (!id) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const cache: APICache = this.getCache();\n const key = this.getSkillsCacheKey(id);\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n // Clear the cache if needed\n if (forceFetch) {\n cache.unset(key);\n }\n\n // Return the Cache value if it exists\n if (cache.has(key)) {\n this.successHandler(cache.get(key));\n return;\n }\n\n // The file object may already have skills in it\n let skills = {\n data: getProp(file, FIELD_METADATA_SKILLS),\n };\n\n try {\n if (!skills.data) {\n skills = await this.xhr.get({\n url: this.getMetadataUrl(id, METADATA_SCOPE_GLOBAL, METADATA_TEMPLATE_SKILLS),\n id: getTypedFileId(id),\n });\n }\n\n if (!this.isDestroyed()) {\n const cards = skills.data.cards || [];\n cache.set(key, cards);\n this.successHandler(cards);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for patching skills on a file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {string} field - Metadata field to patch\n * @param {Array} operations - Array of JSON patch operations\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async updateSkills(\n file: BoxItem,\n operations: JSONPatchOperations,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_UPDATE_SKILLS;\n const { id, permissions } = file;\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n if (!permissions.can_upload) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n const metadata = await this.xhr.put({\n url: this.getMetadataUrl(id, METADATA_SCOPE_GLOBAL, METADATA_TEMPLATE_SKILLS),\n headers: {\n [HEADER_CONTENT_TYPE]: 'application/json-patch+json',\n },\n id: getTypedFileId(id),\n data: operations,\n });\n if (!this.isDestroyed()) {\n const cards = metadata.data.cards || [];\n this.merge(this.getCacheKey(id), FIELD_METADATA_SKILLS, metadata.data);\n this.getCache().set(this.getSkillsCacheKey(id), cards);\n this.successHandler(cards);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for patching metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} template - Metadata template\n * @param {Array} operations - Array of JSON patch operations\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async updateMetadata(\n file: BoxItem,\n template: MetadataTemplate,\n operations: JSONPatchOperations,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_UPDATE_METADATA;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n const { id, permissions } = file;\n if (!id || !permissions) {\n this.errorHandler(getBadItemError());\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n\n if (!canEdit) {\n this.errorHandler(getBadPermissionsError());\n return;\n }\n\n try {\n const metadata = await this.xhr.put({\n url: this.getMetadataUrl(id, template.scope, template.templateKey),\n headers: {\n [HEADER_CONTENT_TYPE]: 'application/json-patch+json',\n },\n id: getTypedFileId(id),\n data: operations,\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n const editor = this.createEditor(metadata.data, template, canEdit);\n if (cachedMetadata && cachedMetadata.editors) {\n cachedMetadata.editors.splice(\n cachedMetadata.editors.findIndex(({ instance }) => instance.id === editor.instance.id),\n 1,\n editor,\n );\n }\n this.successHandler(editor);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for patching metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} templateInstance - Metadata template instance\n * @param {Array} operations - Array of JSON patch operations\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async updateMetadataRedesign(\n file: BoxItem,\n templateInstance: MetadataTemplateInstance,\n operations: JSONPatchOperations,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_UPDATE_METADATA;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n const { id, permissions } = file;\n if (!id || !permissions) {\n this.errorHandler(getBadItemError());\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n\n if (!canEdit) {\n this.errorHandler(getBadPermissionsError());\n return;\n }\n\n try {\n await this.xhr.put({\n url: this.getMetadataUrl(id, templateInstance.scope, templateInstance.templateKey),\n headers: {\n [HEADER_CONTENT_TYPE]: 'application/json-patch+json',\n },\n id: getTypedFileId(id),\n data: operations,\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n if (cachedMetadata && cachedMetadata.templateInstances) {\n cachedMetadata.templateInstances.splice(\n cachedMetadata.templateInstances.findIndex(\n instance =>\n instance.scope === templateInstance.scope &&\n instance.templateKey === templateInstance.templateKey,\n ),\n 1,\n templateInstance,\n );\n }\n this.successHandler();\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for creating metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} template - Metadata template\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async createMetadata(\n file: BoxItem,\n template: MetadataTemplate,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_CREATE_METADATA;\n if (!file || !template) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const { id, permissions, is_externally_owned }: BoxItem = file;\n\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n const isProperties =\n template.templateKey === METADATA_TEMPLATE_PROPERTIES && template.scope === METADATA_SCOPE_GLOBAL;\n\n if (!canEdit || (is_externally_owned && !isProperties)) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n const metadata = await this.xhr.post({\n url: this.getMetadataUrl(id, template.scope, template.templateKey),\n id: getTypedFileId(id),\n data: {},\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n const editor = this.createEditor(metadata.data, template, canEdit);\n cachedMetadata.editors.push(editor);\n this.successHandler(editor);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for creating metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} template - Metadata Redesign template\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async createMetadataRedesign(\n file: BoxItem,\n template: MetadataTemplateInstance,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_CREATE_METADATA;\n if (!file || !template) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const { id, permissions, is_externally_owned }: BoxItem = file;\n\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n const isProperties =\n template.templateKey === METADATA_TEMPLATE_PROPERTIES && template.scope === METADATA_SCOPE_GLOBAL;\n\n if (!canEdit || (is_externally_owned && !isProperties)) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n const fieldsValues = template.fields.reduce((acc, obj) => {\n let { value } = obj;\n\n // API does not accept string for float type\n if (obj.type === 'float' && value) {\n value = parseFloat(obj.value);\n }\n\n // API does not accept empty string for enum type\n if (obj.type === 'enum' && value && value.length === 0) {\n value = undefined;\n }\n\n // API expects values as an array of strings\n if (obj.type === 'taxonomy' && value && Array.isArray(value)) {\n value = value.map(option => option.value);\n }\n\n acc[obj.key] = value;\n\n return acc;\n }, {});\n\n const metadata = await this.xhr.post({\n url: this.getMetadataUrl(id, template.scope, template.templateKey),\n id: getTypedFileId(id),\n data: fieldsValues,\n });\n\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n\n const templateInstance = { ...template, type: metadata.data.$type };\n cachedMetadata.templateInstances.push(templateInstance);\n this.successHandler(templateInstance);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for deleting metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {string} template - Metadata template key\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @param isMetadataRedesign\n * @return {Promise}\n */\n async deleteMetadata(\n file: BoxItem,\n template: MetadataTemplate,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n isMetadataRedesign: boolean = false,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_DELETE_METADATA;\n if (!file || !template) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const { scope, templateKey }: MetadataTemplate = template;\n const { id, permissions }: BoxItem = file;\n\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n if (!permissions.can_upload) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n await this.xhr.delete({\n url: this.getMetadataUrl(id, scope, templateKey),\n id: getTypedFileId(id),\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const metadata = cache.get(key);\n if (isMetadataRedesign) {\n metadata.templateInstances.splice(\n metadata.templateInstances.findIndex(\n instance => instance.scope === scope && instance.templateKey === templateKey,\n ),\n 1,\n );\n } else {\n metadata.editors.splice(\n metadata.editors.findIndex(\n editor => editor.template.scope === scope && editor.template.templateKey === templateKey,\n ),\n 1,\n );\n }\n this.successHandler();\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API URL for metadata suggestions\n *\n * @return {string} url for metadata suggestions\n */\n getMetadataSuggestionsUrl(): string {\n return `${this.getBaseApiUrl()}/metadata_instances/suggestions`;\n }\n\n /**\n * Gets suggestions for possible metadata key-value pairs for the given item\n *\n * @param {string} id - Id of the item to pull metadata from\n * @param {string} type - Type of item. Only \"file” is supported.\n * @param {string} scope - The metadata template scope\n * @param {string} templateKey - The metadata template key to apply\n * @param {string} confidence - The confidence level the suggestion must surpass. Only “experimental” is supported.\n * @return {Array<MetadataSuggestion>} array of metadata templates\n */\n async getMetadataSuggestions(\n id: string,\n type: typeof TYPE_FILE,\n scope: string,\n templateKey: string,\n confidence: typeof METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL = METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL,\n ): Promise<Array<MetadataSuggestion>> {\n this.errorCode = ERROR_CODE_FETCH_METADATA_SUGGESTIONS;\n\n if (!id || type !== TYPE_FILE) {\n throw getBadItemError();\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!templateKey) {\n throw new Error('Missing templateKey');\n }\n\n if (confidence !== METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL) {\n throw new Error(`Invalid confidence level: \"${confidence}\"`);\n }\n\n let suggestionsResponse = {};\n try {\n suggestionsResponse = await this.xhr.get({\n url: this.getMetadataSuggestionsUrl(),\n id: getTypedFileId(id),\n params: {\n item: `${type}_${id}`,\n scope,\n template_key: templateKey,\n confidence,\n },\n });\n } catch (e) {\n const { status } = e;\n if (isUserCorrectableError(status)) {\n throw e;\n }\n }\n\n if (!isEmpty(suggestionsResponse) && getProp(suggestionsResponse, 'data.suggestions').length === 0) {\n this.errorCode = ERROR_CODE_EMPTY_METADATA_SUGGESTIONS;\n throw new Error('No suggestions found.');\n }\n\n return getProp(suggestionsResponse, 'data.suggestions', []);\n }\n\n /**\n * Build URL for metadata options associated to a taxonomy field.\n *\n * @param scope\n * @param templateKey\n * @param fieldKey\n * @returns {`${string}/metadata_templates/${string}/${string}/fields/${string}/options`}\n */\n getMetadataOptionsUrl(scope: string, templateKey: string, fieldKey: string): string {\n return `${this.getBaseApiUrl()}/metadata_templates/${scope}/${templateKey}/fields/${fieldKey}/options`;\n }\n\n /**\n * Gets options associated with a taxonomy field.\n *\n * @param id\n * @param scope\n * @param templateKey\n * @param fieldKey\n * @param level\n * @param options\n * @returns {Promise<MetadataOptions>}\n */\n async getMetadataOptions(\n id: string,\n scope: string,\n templateKey: string,\n fieldKey: string,\n level: number,\n options: TreeQueryInput,\n ) {\n this.errorCode = ERROR_CODE_FETCH_METADATA_OPTIONS;\n\n if (!id) {\n throw getBadItemError();\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!templateKey) {\n throw new Error('Missing templateKey');\n }\n\n if (!fieldKey) {\n throw new Error('Missing fieldKey');\n }\n\n // 0 is a valid level value\n if (!level && level !== 0) {\n throw new Error('Missing level');\n }\n\n const {\n marker,\n searchInput: query_text,\n onlySelectableOptions,\n ancestorId: ancestor_id,\n level: optionsLevel,\n signal,\n } = options;\n\n const params: {} = {\n ...(marker ? { marker } : {}),\n ...(query_text ? { query_text } : {}),\n ...(optionsLevel ? { level: optionsLevel } : {}),\n ...(ancestor_id ? { ancestor_id } : {}),\n ...(onlySelectableOptions !== undefined ? { only_selectable_options: !!onlySelectableOptions } : {}),\n limit: 100,\n };\n\n const url = this.getMetadataOptionsUrl(scope, templateKey, fieldKey);\n\n if (signal) {\n signal.onabort = () => handleOnAbort(this.xhr);\n }\n\n const metadataOptions = await this.xhr.get({\n url,\n id: getTypedFileId(id),\n params,\n });\n\n return getProp(metadataOptions, 'data', {});\n }\n\n /**\n * Build URL for metadata taxonomy.\n *\n * @param {string} scope\n * @param {string} taxonomyKey\n * @returns {`${string}/metadata_taxonomies/${string}/${string}`}\n */\n getMetadataTaxonomyUrl(scope: string, taxonomyKey: string): string {\n return `${this.getBaseApiUrl()}/metadata_taxonomies/${scope}/${taxonomyKey}`;\n }\n\n /**\n * Gets taxonomy associated with a taxonomy key.\n *\n * @param {number} id\n * @param {string} scope\n * @param {string} taxonomyKey\n * @param {string} nodeID\n * @returns {Promise<MetadataTaxonomy>}\n */\n async getMetadataTaxonomy(id: string, scope: string, taxonomyKey: string) {\n this.errorCode = ERROR_CODE_FETCH_METADATA_TAXONOMY;\n\n if (!id) {\n throw getBadItemError();\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!taxonomyKey) {\n throw new Error('Missing taxonomyKey');\n }\n\n const url = this.getMetadataTaxonomyUrl(scope, taxonomyKey);\n\n const metadataTaxonomy = await this.xhr.get({ url, id: getTypedFileId(id) });\n\n return getProp(metadataTaxonomy, 'data', {});\n }\n\n /**\n * Build URL for metadata taxonomies associated to a taxonomy node ID.\n *\n * @param {string} scope\n * @param {string} taxonomyKey\n * @param {string} nodeID\n * @param {boolean} includeAncestors\n * @returns {`${string}/metadata_taxonomies/${string}/${string}/nodes/${string}`}\n */\n getMetadataTaxonomyNodeUrl(\n scope: string,\n taxonomyKey: string,\n nodeID: string,\n includeAncestors?: boolean = false,\n ): string {\n const includeAncestorsParam = includeAncestors ? '?include-ancestors=true' : '';\n\n return `${this.getBaseApiUrl()}/metadata_taxonomies/${scope}/${taxonomyKey}/nodes/${nodeID}${includeAncestorsParam}`;\n }\n\n /**\n * Gets info associated with a taxonomy node.\n *\n * @param {number} id\n * @param {string} scope\n * @param {string} taxonomyKey\n * @param {string} nodeID\n * @param {boolean} includeAncestors\n * @returns {Promise<MetadataTaxonomyNode>}\n */\n async getMetadataTaxonomyNode(\n id: string,\n scope: string,\n taxonomyKey: string,\n nodeID: string,\n includeAncestors?: boolean,\n ) {\n this.errorCode = ERROR_CODE_FETCH_METADATA_TAXONOMY_NODE;\n\n if (!id) {\n throw getBadItemError();\n }\n\n if (!nodeID) {\n throw new Error('Missing nodeID');\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!taxonomyKey) {\n throw new Error('Missing taxonomyKey');\n }\n\n const url = this.getMetadataTaxonomyNodeUrl(scope, taxonomyKey, nodeID, includeAncestors);\n\n const metadataTaxonomyNode = await this.xhr.get({ url, id: getTypedFileId(id) });\n\n return getProp(metadataTaxonomyNode, 'data', {});\n }\n}\n\nexport default Metadata;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Metadata.js","names":["cloneDeep","lodashFilter","flatMap","getProp","isEmpty","keyBy","lodashMap","partition","uniq","uniqueId","getBadItemError","getBadPermissionsError","isUserCorrectableError","getTypedFileId","handleOnAbort","formatMetadataFieldValue","File","HEADER_CONTENT_TYPE","METADATA_SCOPE_ENTERPRISE","METADATA_SCOPE_GLOBAL","METADATA_TEMPLATE_FETCH_LIMIT","METADATA_TEMPLATE_PROPERTIES","METADATA_TEMPLATE_CLASSIFICATION","METADATA_TEMPLATE_SKILLS","METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL","FIELD_METADATA_SKILLS","CACHE_PREFIX_METADATA","ERROR_CODE_UPDATE_SKILLS","ERROR_CODE_UPDATE_METADATA","ERROR_CODE_CREATE_METADATA","ERROR_CODE_DELETE_METADATA","ERROR_CODE_FETCH_METADATA","ERROR_CODE_FETCH_METADATA_TEMPLATES","ERROR_CODE_FETCH_SKILLS","ERROR_CODE_FETCH_METADATA_OPTIONS","ERROR_CODE_FETCH_METADATA_SUGGESTIONS","ERROR_CODE_EMPTY_METADATA_SUGGESTIONS","TYPE_FILE","ERROR_CODE_FETCH_METADATA_TAXONOMY_NODE","ERROR_CODE_FETCH_METADATA_TAXONOMY","Metadata","getMetadataCacheKey","id","getSkillsCacheKey","getClassificationCacheKey","getMetadataUrl","scope","template","baseUrl","getUrl","getMetadataTemplateUrl","getBaseApiUrl","getMetadataTemplateUrlForInstance","getMetadataTemplateSchemaUrl","templateKey","getMetadataTemplateUrlForScope","getCustomPropertiesTemplate","hidden","fields","createEditor","instance","canEdit","data","Object","keys","forEach","key","startsWith","$id","$canEdit","getTaxonomyLevelsForTemplatesUrl","taxonomyPath","getTaxonomyPath","namespace","taxonomyKey","getTaxonomyLevelsForTemplates","metadataTemplates","templates","taxonomyFields","field","type","levels","taxonomy_key","taxonomyPaths","map","filter","Boolean","fetchPromises","result","xhr","get","url","path","error","Error","fetchResults","Promise","all","taxonomyInfo","fieldsToUpdate","restFields","updatedFields","_objectSpread","_ref","displayName","display_name","rest","_objectWithoutProperties","_excluded","concat","getTemplates","instanceId","errorCode","params","limit","e","status","templatesWithTaxonomies","getSchemaByTemplateKey","getInstances","isMetadataRedesign","instances","getUserAddableTemplates","customPropertiesTemplate","enterpriseTemplates","hasMetadataFeature","isExternallyOwned","userAddableTemplates","extractClassification","classification","find","$template","splice","indexOf","cache","getCache","set","getTemplateForInstance","$scope","t","crossEnterpriseTemplate","getEditors","globalTemplates","editors","push","createTemplateInstance","isInstanceFromTemplate","templateFields","value","$type","getTemplateInstances","templateInstances","getMetadata","file","successCallback","errorCallback","options","permissions","is_externally_owned","errorHandler","forceFetch","unset","has","successHandler","refreshCache","resolve","filteredInstances","can_upload","metadata","isDestroyed","getSkills","skills","cards","updateSkills","operations","put","headers","merge","getCacheKey","updateMetadata","cachedMetadata","editor","findIndex","updateMetadataRedesign","templateInstance","createMetadata","isProperties","post","createMetadataRedesign","fieldsValues","reduce","acc","obj","parseFloat","length","undefined","Array","isArray","option","deleteMetadata","delete","getMetadataSuggestionsUrl","getMetadataSuggestions","confidence","suggestionsResponse","item","template_key","getMetadataOptionsUrl","fieldKey","getMetadataOptions","level","marker","searchInput","query_text","onlySelectableOptions","ancestorId","ancestor_id","optionsLevel","signal","only_selectable_options","onabort","metadataOptions","getMetadataTaxonomyUrl","getMetadataTaxonomy","metadataTaxonomy","getMetadataTaxonomyNodeUrl","nodeID","includeAncestors","includeAncestorsParam","getMetadataTaxonomyNode","metadataTaxonomyNode"],"sources":["../../src/api/Metadata.js"],"sourcesContent":["/**\n * @flow\n * @file Helper for the Box metadata related API\n * @author Box\n */\n\nimport type { TreeQueryInput } from '@box/combobox-with-api';\nimport cloneDeep from 'lodash/cloneDeep';\nimport lodashFilter from 'lodash/filter';\nimport flatMap from 'lodash/flatMap';\nimport getProp from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport keyBy from 'lodash/keyBy';\nimport lodashMap from 'lodash/map';\nimport partition from 'lodash/partition';\nimport uniq from 'lodash/uniq';\nimport uniqueId from 'lodash/uniqueId';\nimport { getBadItemError, getBadPermissionsError, isUserCorrectableError } from '../utils/error';\nimport { getTypedFileId } from '../utils/file';\nimport { handleOnAbort, formatMetadataFieldValue } from './utils';\nimport File from './File';\nimport {\n HEADER_CONTENT_TYPE,\n METADATA_SCOPE_ENTERPRISE,\n METADATA_SCOPE_GLOBAL,\n METADATA_TEMPLATE_FETCH_LIMIT,\n METADATA_TEMPLATE_PROPERTIES,\n METADATA_TEMPLATE_CLASSIFICATION,\n METADATA_TEMPLATE_SKILLS,\n METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL,\n FIELD_METADATA_SKILLS,\n CACHE_PREFIX_METADATA,\n ERROR_CODE_UPDATE_SKILLS,\n ERROR_CODE_UPDATE_METADATA,\n ERROR_CODE_CREATE_METADATA,\n ERROR_CODE_DELETE_METADATA,\n ERROR_CODE_FETCH_METADATA,\n ERROR_CODE_FETCH_METADATA_TEMPLATES,\n ERROR_CODE_FETCH_SKILLS,\n ERROR_CODE_FETCH_METADATA_OPTIONS,\n ERROR_CODE_FETCH_METADATA_SUGGESTIONS,\n ERROR_CODE_EMPTY_METADATA_SUGGESTIONS,\n TYPE_FILE,\n ERROR_CODE_FETCH_METADATA_TAXONOMY_NODE,\n ERROR_CODE_FETCH_METADATA_TAXONOMY,\n} from '../constants';\n\nimport type { RequestOptions, ElementsErrorCallback, JSONPatchOperations } from '../common/types/api';\nimport type {\n MetadataTemplateSchemaResponse,\n MetadataTemplate,\n MetadataInstanceV2,\n MetadataEditor,\n MetadataFields,\n MetadataSuggestion,\n MetadataTemplateInstance,\n MetadataTemplateInstanceField,\n} from '../common/types/metadata';\nimport type { BoxItem } from '../common/types/core';\nimport type APICache from '../utils/Cache';\n\nclass Metadata extends File {\n /**\n * Creates a key for the metadata cache\n *\n * @param {string} id - Folder id\n * @return {string} key\n */\n getMetadataCacheKey(id: string): string {\n return `${CACHE_PREFIX_METADATA}${id}`;\n }\n\n /**\n * Creates a key for the skills cache\n *\n * @param {string} id - Folder id\n * @return {string} key\n */\n getSkillsCacheKey(id: string): string {\n return `${this.getMetadataCacheKey(id)}_skills`;\n }\n\n /**\n * Creates a key for the classification cache\n *\n * @param {string} id - Folder id\n * @return {string} key\n */\n getClassificationCacheKey(id: string): string {\n return `${this.getMetadataCacheKey(id)}_classification`;\n }\n\n /**\n * API URL for metadata\n *\n * @param {string} id - a Box file id\n * @param {string} field - metadata field\n * @return {string} base url for files\n */\n getMetadataUrl(id: string, scope?: string, template?: string): string {\n const baseUrl = `${this.getUrl(id)}/metadata`;\n if (scope && template) {\n return `${baseUrl}/${scope}/${template}`;\n }\n return baseUrl;\n }\n\n /**\n * API URL for metadata templates for a scope\n *\n * @param {string} scope - metadata scope\n * @return {string} base url for files\n */\n getMetadataTemplateUrl(): string {\n return `${this.getBaseApiUrl()}/metadata_templates`;\n }\n\n /**\n * API URL for metadata template for an instance\n *\n * @param {string} id - metadata instance id\n * @return {string} base url for files\n */\n getMetadataTemplateUrlForInstance(id: string): string {\n return `${this.getMetadataTemplateUrl()}?metadata_instance_id=${id}`;\n }\n\n /**\n * API URL for getting metadata template schema by template key\n *\n * @param {string} templateKey - metadata template key\n * @return {string} API url for getting template schema by template key\n */\n getMetadataTemplateSchemaUrl(templateKey: string): string {\n return `${this.getMetadataTemplateUrl()}/enterprise/${templateKey}/schema`;\n }\n\n /**\n * API URL for metadata templates\n *\n * @param {string} scope - metadata scope or id\n * @return {string} base url for files\n */\n getMetadataTemplateUrlForScope(scope: string): string {\n return `${this.getMetadataTemplateUrl()}/${scope}`;\n }\n\n /**\n * Returns the custom properties template\n *\n * @return {Object} template for custom properties\n */\n getCustomPropertiesTemplate(): MetadataTemplate {\n return {\n id: uniqueId('metadata_template_'),\n scope: METADATA_SCOPE_GLOBAL,\n templateKey: METADATA_TEMPLATE_PROPERTIES,\n hidden: false,\n fields: [],\n };\n }\n\n /**\n * Utility to create editors from metadata instances\n * and metadata templates.\n *\n * @param {Object} instance - metadata instance\n * @param {Object} template - metadata template\n * @param {boolean} canEdit - is instance editable\n * @return {Object} metadata editor\n */\n createEditor(instance: MetadataInstanceV2, template: MetadataTemplate, canEdit: boolean): MetadataEditor {\n const data: MetadataFields = {};\n Object.keys(instance).forEach(key => {\n if (!key.startsWith('$')) {\n // $FlowFixMe\n data[key] = instance[key];\n }\n });\n\n return {\n template,\n instance: {\n id: instance.$id,\n canEdit: instance.$canEdit && canEdit,\n data,\n },\n };\n }\n\n /**\n * API URL for taxonomies levels for templates\n *\n * @param {string} taxonomyPath - taxonomy path\n * @return {string} base url for files\n */\n getTaxonomyLevelsForTemplatesUrl(taxonomyPath: string): string {\n return `${this.getBaseApiUrl()}/${taxonomyPath}`;\n }\n\n /**\n * Returns taxonomy path for API calls and level mapping\n *\n * @param {string} namespace\n * @param {string} taxonomyKey\n * @returns {string}\n */\n getTaxonomyPath(namespace?: string, taxonomyKey?: string): string | null {\n if (!namespace || !taxonomyKey) {\n return null;\n }\n return `metadata_taxonomies/${namespace}/${taxonomyKey}`;\n }\n\n /**\n *\n * @param {Array<MetadataTemplate>} metadataTemplates\n * @param {string} id\n * @returns {Array<MetadataTemplate>}\n */\n async getTaxonomyLevelsForTemplates(\n metadataTemplates: Array<MetadataTemplate>,\n id: string,\n ): Promise<Array<MetadataTemplate>> {\n const templates = cloneDeep(metadataTemplates);\n\n const taxonomyFields = flatMap(templates, template =>\n lodashFilter(\n template.fields,\n field => field.type === 'taxonomy' && !field.levels && (field.taxonomyKey || field.taxonomy_key),\n ),\n );\n\n if (isEmpty(taxonomyFields)) {\n return templates;\n }\n\n const taxonomyPaths = uniq(\n taxonomyFields\n .map(field => this.getTaxonomyPath(field.namespace, field.taxonomyKey || field.taxonomy_key))\n .filter(Boolean),\n );\n\n const fetchPromises = taxonomyPaths.map(async taxonomyPath => {\n try {\n const result = await this.xhr.get({\n url: this.getTaxonomyLevelsForTemplatesUrl(taxonomyPath),\n id: getTypedFileId(id),\n });\n return {\n path: taxonomyPath,\n levels: result.data.levels || [],\n };\n } catch (error) {\n throw new Error(`Failed to fetch taxonomy for path: ${taxonomyPath}`);\n }\n });\n\n const fetchResults = await Promise.all(fetchPromises);\n\n const taxonomyInfo = keyBy(fetchResults, 'path');\n\n return lodashMap(templates, template => {\n if (!template.fields) return template;\n\n const [fieldsToUpdate, restFields] = partition(\n template.fields,\n field => field.type === 'taxonomy' && !field.levels,\n );\n\n if (isEmpty(fieldsToUpdate)) return template;\n\n const updatedFields = lodashMap(fieldsToUpdate, field => {\n const taxonomyPath = this.getTaxonomyPath(field.namespace, field.taxonomyKey || field.taxonomy_key);\n const levels = taxonomyInfo[taxonomyPath]?.levels || [];\n\n const taxonomyKey = field.taxonomyKey || field.taxonomy_key;\n\n delete field.taxonomy_key;\n\n return {\n ...field,\n levels: lodashMap(levels, ({ displayName, display_name, ...rest }) => ({\n ...rest,\n displayName: displayName || display_name,\n })),\n taxonomyKey,\n };\n });\n\n return {\n ...template,\n fields: restFields.concat(updatedFields),\n };\n });\n }\n\n /**\n * Gets metadata templates for enterprise\n *\n * @param {string} id - file id\n * @param {string} scope - metadata scope\n * @param {string|void} [instanceId] - metadata instance id\n * @return {Object} array of metadata templates\n */\n async getTemplates(id: string, scope: string, instanceId?: string): Promise<Array<MetadataTemplate>> {\n this.errorCode = ERROR_CODE_FETCH_METADATA_TEMPLATES;\n let templates = {};\n const url = instanceId\n ? this.getMetadataTemplateUrlForInstance(instanceId)\n : this.getMetadataTemplateUrlForScope(scope);\n\n try {\n templates = await this.xhr.get({\n url,\n id: getTypedFileId(id),\n params: {\n limit: METADATA_TEMPLATE_FETCH_LIMIT, // internal hard limit is 500\n },\n });\n } catch (e) {\n const { status } = e;\n if (isUserCorrectableError(status)) {\n throw e;\n }\n }\n\n templates = getProp(templates, 'data.entries', []);\n const templatesWithTaxonomies = await this.getTaxonomyLevelsForTemplates(templates, id);\n\n return templatesWithTaxonomies;\n }\n\n /**\n * Gets metadata template schema by template key\n *\n * @param {string} templateKey - template key\n * @return {Promise} Promise object of metadata template\n */\n getSchemaByTemplateKey(templateKey: string): Promise<MetadataTemplateSchemaResponse> {\n const url = this.getMetadataTemplateSchemaUrl(templateKey);\n return this.xhr.get({ url });\n }\n\n /**\n * Gets metadata instances for a Box file\n *\n * @param {string} id - file id\n * @param {boolean} isMetadataRedesign - feature flag\n * @return {Object} array of metadata instances\n */\n async getInstances(id: string, isMetadataRedesign: boolean = false): Promise<Array<MetadataInstanceV2>> {\n this.errorCode = ERROR_CODE_FETCH_METADATA;\n const baseUrl = this.getMetadataUrl(id);\n const url = isMetadataRedesign ? `${baseUrl}?view=hydrated` : baseUrl;\n let instances = {};\n try {\n instances = await this.xhr.get({\n url,\n id: getTypedFileId(id),\n });\n } catch (e) {\n const { status } = e;\n if (isUserCorrectableError(status)) {\n throw e;\n }\n }\n return getProp(instances, 'data.entries', []);\n }\n\n /**\n * Returns a list of templates that can be added by the user.\n * For collabed files, only custom properties is allowed.\n *\n * @return {Object} template for custom properties\n */\n getUserAddableTemplates(\n customPropertiesTemplate: MetadataTemplate,\n enterpriseTemplates: Array<MetadataTemplate>,\n hasMetadataFeature: boolean,\n isExternallyOwned?: boolean,\n ): Array<MetadataTemplate> {\n let userAddableTemplates: Array<MetadataTemplate> = [];\n if (hasMetadataFeature) {\n userAddableTemplates = isExternallyOwned\n ? [customPropertiesTemplate]\n : [customPropertiesTemplate].concat(enterpriseTemplates);\n }\n // Only templates that are not hidden and not classification\n return userAddableTemplates.filter(\n template => !template.hidden && template.templateKey !== METADATA_TEMPLATE_CLASSIFICATION,\n );\n }\n\n /**\n * Extracts classification for different representation in the UI.\n *\n * @param {string} id - Box file id\n * @param {Array} instances - metadata instances\n * @return {Array} metadata instances without classification\n */\n extractClassification(id: string, instances: Array<MetadataInstanceV2>): Array<MetadataInstanceV2> {\n const classification = instances.find(instance => instance.$template === METADATA_TEMPLATE_CLASSIFICATION);\n if (classification) {\n instances.splice(instances.indexOf(classification), 1);\n const cache: APICache = this.getCache();\n const key = this.getClassificationCacheKey(id);\n cache.set(key, classification);\n }\n return instances;\n }\n\n /**\n * Finds template for a given metadata instance.\n *\n * @param {string} id - Box file id\n * @param {Object} instance - metadata instance\n * @param {Array} templates - metadata templates\n * @return {Object|undefined} template for metadata instance\n */\n async getTemplateForInstance(\n id: string,\n instance: MetadataInstanceV2,\n templates: Array<MetadataTemplate>,\n ): Promise<?MetadataTemplate> {\n const instanceId = instance.$id;\n const templateKey = instance.$template;\n const scope = instance.$scope;\n let template = templates.find(t => t.templateKey === templateKey && t.scope === scope);\n\n // Enterprise scopes are always enterprise_XXXXX\n if (!template && scope.startsWith(METADATA_SCOPE_ENTERPRISE)) {\n // If the template does not exist, it can be a template from another\n // enterprise because the user is viewing a collaborated file.\n const crossEnterpriseTemplate = await this.getTemplates(id, scope, instanceId);\n // The API always returns an array of at most one item\n template = crossEnterpriseTemplate[0]; // eslint-disable-line\n }\n\n return template;\n }\n\n /**\n * Creates and returns metadata editors.\n *\n * @param {string} id - Box file id\n * @param {Array} instances - metadata instances\n * @param {Object} customPropertiesTemplate - custom properties template\n * @param {Array} enterpriseTemplates - enterprise templates\n * @param {Array} globalTemplates - global templates\n * @param {boolean} canEdit - metadata editability\n * @return {Array} metadata editors\n */\n async getEditors(\n id: string,\n instances: Array<MetadataInstanceV2>,\n customPropertiesTemplate: MetadataTemplate,\n enterpriseTemplates: Array<MetadataTemplate>,\n globalTemplates: Array<MetadataTemplate>,\n canEdit: boolean,\n ): Promise<Array<MetadataEditor>> {\n // All usable templates for metadata instances\n const templates: Array<MetadataTemplate> = [customPropertiesTemplate].concat(\n enterpriseTemplates,\n globalTemplates,\n );\n\n // Create editors from each instance\n const editors: Array<MetadataEditor> = [];\n await Promise.all(\n instances.map(async instance => {\n const template: ?MetadataTemplate = await this.getTemplateForInstance(id, instance, templates);\n if (template) {\n editors.push(this.createEditor(instance, template, canEdit));\n }\n }),\n );\n return editors;\n }\n\n /**\n * Utility to concat instance and template into one entity.\n *\n * @param {Object} instance - metadata instance\n * @param {Object} template - metadata template\n * @param {boolean} canEdit - can user edit item\n * @return {Object} metadata template instance\n */\n createTemplateInstance(\n instance: MetadataInstanceV2,\n template: MetadataTemplate,\n canEdit: boolean,\n ): MetadataTemplateInstance {\n const fields: MetadataTemplateInstanceField[] = [];\n\n // templateKey is unique identifier for the template,\n // but its value is set to 'properties' if instance was created using Custom Metadata option instead of template\n const isInstanceFromTemplate = template.templateKey !== METADATA_TEMPLATE_PROPERTIES;\n if (isInstanceFromTemplate) {\n // Get Metadata Fields for Instances created from predefined template\n const templateFields = template.fields || [];\n templateFields.forEach(field => {\n const value = formatMetadataFieldValue(field, instance[field.key]);\n\n fields.push({\n ...field,\n value,\n });\n });\n } else {\n // Get Metadata Fields for Custom Instances\n Object.keys(instance).forEach(key => {\n if (!key.startsWith('$')) {\n fields.push({\n key,\n type: 'string',\n value: instance[key],\n });\n }\n });\n }\n\n return {\n canEdit: instance.$canEdit && canEdit,\n displayName: template.displayName,\n hidden: template.hidden,\n id: template.id,\n fields,\n scope: template.scope,\n templateKey: template.templateKey,\n type: instance.$type,\n };\n }\n\n /**\n * Creates and returns metadata entities.\n *\n * @param {string} id - Box file id\n * @param {Array} instances - metadata instances\n * @param {Object} customPropertiesTemplate - custom properties template\n * @param {Array} enterpriseTemplates - enterprise templates\n * @param {Array} globalTemplates - global templates\n * @param {boolean} canEdit\n * @return {Array} metadata editors\n */\n async getTemplateInstances(\n id: string,\n instances: Array<MetadataInstanceV2>,\n customPropertiesTemplate: MetadataTemplate,\n enterpriseTemplates: Array<MetadataTemplate>,\n globalTemplates: Array<MetadataTemplate>,\n canEdit: boolean,\n ): Promise<Array<MetadataTemplateInstance>> {\n // Get all usable templates for metadata instances\n const templates: Array<MetadataTemplate> = [customPropertiesTemplate].concat(\n enterpriseTemplates,\n globalTemplates,\n );\n\n // Create Metadata Template Instance from each instance\n const templateInstances: Array<MetadataTemplateInstance> = [];\n\n await Promise.all(\n instances.map(async instance => {\n const template: ?MetadataTemplate = await this.getTemplateForInstance(id, instance, templates);\n if (template) {\n templateInstances.push(this.createTemplateInstance(instance, template, canEdit));\n }\n }),\n );\n\n return templateInstances;\n }\n\n /**\n * API for getting metadata editors\n *\n * @param {Object} file\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @param {boolean} hasMetadataFeature - metadata feature check\n * @param {Object} options - fetch options\n * @param {boolean} isMetadataRedesign - is Metadata Sidebar redesigned\n * @return {Promise}\n */\n async getMetadata(\n file: BoxItem,\n successCallback: ({\n editors: Array<MetadataEditor>,\n templateInstances: Array<MetadataTemplateInstance>,\n templates: Array<MetadataTemplate>,\n }) => void,\n errorCallback: ElementsErrorCallback,\n hasMetadataFeature: boolean,\n options: RequestOptions = {},\n isMetadataRedesign: boolean = false,\n ): Promise<void> {\n const { id, permissions, is_externally_owned }: BoxItem = file;\n this.errorCode = ERROR_CODE_FETCH_METADATA;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n // Check for valid file object.\n // Need to eventually check for upload permission.\n if (!id || !permissions) {\n this.errorHandler(getBadItemError());\n return;\n }\n\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n\n // Clear the cache if needed\n if (options.forceFetch) {\n cache.unset(key);\n }\n\n // Return the cached value if it exists\n if (cache.has(key)) {\n this.successHandler(cache.get(key));\n if (!options.refreshCache) {\n return;\n }\n }\n\n try {\n const customPropertiesTemplate: MetadataTemplate = this.getCustomPropertiesTemplate();\n const [instances, globalTemplates, enterpriseTemplates] = await Promise.all([\n this.getInstances(id, isMetadataRedesign),\n this.getTemplates(id, METADATA_SCOPE_GLOBAL),\n hasMetadataFeature ? this.getTemplates(id, METADATA_SCOPE_ENTERPRISE) : Promise.resolve([]),\n ]);\n\n // Filter out classification\n const filteredInstances = this.extractClassification(id, instances);\n\n const templateInstances = isMetadataRedesign\n ? await this.getTemplateInstances(\n id,\n filteredInstances,\n customPropertiesTemplate,\n enterpriseTemplates,\n globalTemplates,\n !!permissions.can_upload,\n )\n : [];\n const editors = !isMetadataRedesign\n ? await this.getEditors(\n id,\n filteredInstances,\n customPropertiesTemplate,\n enterpriseTemplates,\n globalTemplates,\n !!permissions.can_upload,\n )\n : [];\n\n const metadata = {\n editors,\n templateInstances,\n templates: this.getUserAddableTemplates(\n customPropertiesTemplate,\n enterpriseTemplates,\n hasMetadataFeature,\n is_externally_owned,\n ),\n };\n\n cache.set(key, metadata);\n\n if (!this.isDestroyed()) {\n this.successHandler(metadata);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * Gets skills for file\n *\n * @param {string} id - file id\n * @return {Object} array of metadata instances\n */\n async getSkills(\n file: BoxItem,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n forceFetch: boolean = false,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_FETCH_SKILLS;\n const { id }: BoxItem = file;\n if (!id) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const cache: APICache = this.getCache();\n const key = this.getSkillsCacheKey(id);\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n // Clear the cache if needed\n if (forceFetch) {\n cache.unset(key);\n }\n\n // Return the Cache value if it exists\n if (cache.has(key)) {\n this.successHandler(cache.get(key));\n return;\n }\n\n // The file object may already have skills in it\n let skills = {\n data: getProp(file, FIELD_METADATA_SKILLS),\n };\n\n try {\n if (!skills.data) {\n skills = await this.xhr.get({\n url: this.getMetadataUrl(id, METADATA_SCOPE_GLOBAL, METADATA_TEMPLATE_SKILLS),\n id: getTypedFileId(id),\n });\n }\n\n if (!this.isDestroyed()) {\n const cards = skills.data.cards || [];\n cache.set(key, cards);\n this.successHandler(cards);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for patching skills on a file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {string} field - Metadata field to patch\n * @param {Array} operations - Array of JSON patch operations\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async updateSkills(\n file: BoxItem,\n operations: JSONPatchOperations,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_UPDATE_SKILLS;\n const { id, permissions } = file;\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n if (!permissions.can_upload) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n const metadata = await this.xhr.put({\n url: this.getMetadataUrl(id, METADATA_SCOPE_GLOBAL, METADATA_TEMPLATE_SKILLS),\n headers: {\n [HEADER_CONTENT_TYPE]: 'application/json-patch+json',\n },\n id: getTypedFileId(id),\n data: operations,\n });\n if (!this.isDestroyed()) {\n const cards = metadata.data.cards || [];\n this.merge(this.getCacheKey(id), FIELD_METADATA_SKILLS, metadata.data);\n this.getCache().set(this.getSkillsCacheKey(id), cards);\n this.successHandler(cards);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for patching metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} template - Metadata template\n * @param {Array} operations - Array of JSON patch operations\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async updateMetadata(\n file: BoxItem,\n template: MetadataTemplate,\n operations: JSONPatchOperations,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_UPDATE_METADATA;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n const { id, permissions } = file;\n if (!id || !permissions) {\n this.errorHandler(getBadItemError());\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n\n if (!canEdit) {\n this.errorHandler(getBadPermissionsError());\n return;\n }\n\n try {\n const metadata = await this.xhr.put({\n url: this.getMetadataUrl(id, template.scope, template.templateKey),\n headers: {\n [HEADER_CONTENT_TYPE]: 'application/json-patch+json',\n },\n id: getTypedFileId(id),\n data: operations,\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n const editor = this.createEditor(metadata.data, template, canEdit);\n if (cachedMetadata && cachedMetadata.editors) {\n cachedMetadata.editors.splice(\n cachedMetadata.editors.findIndex(({ instance }) => instance.id === editor.instance.id),\n 1,\n editor,\n );\n }\n this.successHandler(editor);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for patching metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} templateInstance - Metadata template instance\n * @param {Array} operations - Array of JSON patch operations\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async updateMetadataRedesign(\n file: BoxItem,\n templateInstance: MetadataTemplateInstance,\n operations: JSONPatchOperations,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_UPDATE_METADATA;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n const { id, permissions } = file;\n if (!id || !permissions) {\n this.errorHandler(getBadItemError());\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n\n if (!canEdit) {\n this.errorHandler(getBadPermissionsError());\n return;\n }\n\n try {\n await this.xhr.put({\n url: this.getMetadataUrl(id, templateInstance.scope, templateInstance.templateKey),\n headers: {\n [HEADER_CONTENT_TYPE]: 'application/json-patch+json',\n },\n id: getTypedFileId(id),\n data: operations,\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n if (cachedMetadata && cachedMetadata.templateInstances) {\n cachedMetadata.templateInstances.splice(\n cachedMetadata.templateInstances.findIndex(\n instance =>\n instance.scope === templateInstance.scope &&\n instance.templateKey === templateInstance.templateKey,\n ),\n 1,\n templateInstance,\n );\n }\n this.successHandler();\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for creating metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} template - Metadata template\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async createMetadata(\n file: BoxItem,\n template: MetadataTemplate,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_CREATE_METADATA;\n if (!file || !template) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const { id, permissions, is_externally_owned }: BoxItem = file;\n\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n const isProperties =\n template.templateKey === METADATA_TEMPLATE_PROPERTIES && template.scope === METADATA_SCOPE_GLOBAL;\n\n if (!canEdit || (is_externally_owned && !isProperties)) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n const metadata = await this.xhr.post({\n url: this.getMetadataUrl(id, template.scope, template.templateKey),\n id: getTypedFileId(id),\n data: {},\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n const editor = this.createEditor(metadata.data, template, canEdit);\n cachedMetadata.editors.push(editor);\n this.successHandler(editor);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for creating metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {Object} template - Metadata Redesign template\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @return {Promise}\n */\n async createMetadataRedesign(\n file: BoxItem,\n template: MetadataTemplateInstance,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_CREATE_METADATA;\n if (!file || !template) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const { id, permissions, is_externally_owned }: BoxItem = file;\n\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const canEdit = !!permissions.can_upload;\n const isProperties =\n template.templateKey === METADATA_TEMPLATE_PROPERTIES && template.scope === METADATA_SCOPE_GLOBAL;\n\n if (!canEdit || (is_externally_owned && !isProperties)) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n const fieldsValues = template.fields.reduce((acc, obj) => {\n let { value } = obj;\n\n // API does not accept string for float type\n if (obj.type === 'float' && value) {\n value = parseFloat(obj.value);\n }\n\n // API does not accept empty string for enum type\n if (obj.type === 'enum' && value && value.length === 0) {\n value = undefined;\n }\n\n // API expects values as an array of strings\n if (obj.type === 'taxonomy' && value && Array.isArray(value)) {\n value = value.map(option => option.value);\n }\n\n acc[obj.key] = value;\n\n return acc;\n }, {});\n\n const metadata = await this.xhr.post({\n url: this.getMetadataUrl(id, template.scope, template.templateKey),\n id: getTypedFileId(id),\n data: fieldsValues,\n });\n\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const cachedMetadata = cache.get(key);\n\n const templateInstance = { ...template, type: metadata.data.$type };\n cachedMetadata.templateInstances.push(templateInstance);\n this.successHandler(templateInstance);\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API for deleting metadata on file\n *\n * @param {BoxItem} file - File object for which we are changing the description\n * @param {string} template - Metadata template key\n * @param {Function} successCallback - Success callback\n * @param {Function} errorCallback - Error callback\n * @param isMetadataRedesign\n * @return {Promise}\n */\n async deleteMetadata(\n file: BoxItem,\n template: MetadataTemplate,\n successCallback: Function,\n errorCallback: ElementsErrorCallback,\n isMetadataRedesign: boolean = false,\n ): Promise<void> {\n this.errorCode = ERROR_CODE_DELETE_METADATA;\n if (!file || !template) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n const { scope, templateKey }: MetadataTemplate = template;\n const { id, permissions }: BoxItem = file;\n\n if (!id || !permissions) {\n errorCallback(getBadItemError(), this.errorCode);\n return;\n }\n\n if (!permissions.can_upload) {\n errorCallback(getBadPermissionsError(), this.errorCode);\n return;\n }\n\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n\n try {\n await this.xhr.delete({\n url: this.getMetadataUrl(id, scope, templateKey),\n id: getTypedFileId(id),\n });\n if (!this.isDestroyed()) {\n const cache: APICache = this.getCache();\n const key = this.getMetadataCacheKey(id);\n const metadata = cache.get(key);\n if (isMetadataRedesign) {\n metadata.templateInstances.splice(\n metadata.templateInstances.findIndex(\n instance => instance.scope === scope && instance.templateKey === templateKey,\n ),\n 1,\n );\n } else {\n metadata.editors.splice(\n metadata.editors.findIndex(\n editor => editor.template.scope === scope && editor.template.templateKey === templateKey,\n ),\n 1,\n );\n }\n this.successHandler();\n }\n } catch (e) {\n this.errorHandler(e);\n }\n }\n\n /**\n * API URL for metadata suggestions\n *\n * @return {string} url for metadata suggestions\n */\n getMetadataSuggestionsUrl(): string {\n return `${this.getBaseApiUrl()}/metadata_instances/suggestions`;\n }\n\n /**\n * Gets suggestions for possible metadata key-value pairs for the given item\n *\n * @param {string} id - Id of the item to pull metadata from\n * @param {string} type - Type of item. Only \"file” is supported.\n * @param {string} scope - The metadata template scope\n * @param {string} templateKey - The metadata template key to apply\n * @param {string} confidence - The confidence level the suggestion must surpass. Only “experimental” is supported.\n * @return {Array<MetadataSuggestion>} array of metadata templates\n */\n async getMetadataSuggestions(\n id: string,\n type: typeof TYPE_FILE,\n scope: string,\n templateKey: string,\n confidence: typeof METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL = METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL,\n ): Promise<Array<MetadataSuggestion>> {\n this.errorCode = ERROR_CODE_FETCH_METADATA_SUGGESTIONS;\n\n if (!id || type !== TYPE_FILE) {\n throw getBadItemError();\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!templateKey) {\n throw new Error('Missing templateKey');\n }\n\n if (confidence !== METADATA_SUGGESTIONS_CONFIDENCE_EXPERIMENTAL) {\n throw new Error(`Invalid confidence level: \"${confidence}\"`);\n }\n\n let suggestionsResponse = {};\n try {\n suggestionsResponse = await this.xhr.get({\n url: this.getMetadataSuggestionsUrl(),\n id: getTypedFileId(id),\n params: {\n item: `${type}_${id}`,\n scope,\n template_key: templateKey,\n confidence,\n },\n });\n } catch (e) {\n const { status } = e;\n if (isUserCorrectableError(status)) {\n throw e;\n }\n }\n\n if (!isEmpty(suggestionsResponse) && getProp(suggestionsResponse, 'data.suggestions').length === 0) {\n this.errorCode = ERROR_CODE_EMPTY_METADATA_SUGGESTIONS;\n throw new Error('No suggestions found.');\n }\n\n return getProp(suggestionsResponse, 'data.suggestions', []);\n }\n\n /**\n * Build URL for metadata options associated to a taxonomy field.\n *\n * @param scope\n * @param templateKey\n * @param fieldKey\n * @returns {`${string}/metadata_templates/${string}/${string}/fields/${string}/options`}\n */\n getMetadataOptionsUrl(scope: string, templateKey: string, fieldKey: string): string {\n return `${this.getBaseApiUrl()}/metadata_templates/${scope}/${templateKey}/fields/${fieldKey}/options`;\n }\n\n /**\n * Gets options associated with a taxonomy field.\n *\n * @param id\n * @param scope\n * @param templateKey\n * @param fieldKey\n * @param level\n * @param options\n * @returns {Promise<MetadataOptions>}\n */\n async getMetadataOptions(\n id: string,\n scope: string,\n templateKey: string,\n fieldKey: string,\n level: number,\n options: TreeQueryInput,\n ) {\n this.errorCode = ERROR_CODE_FETCH_METADATA_OPTIONS;\n\n if (!id) {\n throw getBadItemError();\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!templateKey) {\n throw new Error('Missing templateKey');\n }\n\n if (!fieldKey) {\n throw new Error('Missing fieldKey');\n }\n\n // 0 is a valid level value\n if (!level && level !== 0) {\n throw new Error('Missing level');\n }\n\n const {\n marker,\n searchInput: query_text,\n onlySelectableOptions,\n ancestorId: ancestor_id,\n level: optionsLevel,\n signal,\n } = options;\n\n const params: {} = {\n ...(marker ? { marker } : {}),\n ...(query_text ? { query_text } : {}),\n ...(optionsLevel ? { level: optionsLevel } : {}),\n ...(ancestor_id ? { ancestor_id } : {}),\n ...(onlySelectableOptions !== undefined ? { only_selectable_options: !!onlySelectableOptions } : {}),\n limit: 100,\n };\n\n const url = this.getMetadataOptionsUrl(scope, templateKey, fieldKey);\n\n if (signal) {\n signal.onabort = () => handleOnAbort(this.xhr);\n }\n\n const metadataOptions = await this.xhr.get({\n url,\n id: getTypedFileId(id),\n params,\n });\n\n return getProp(metadataOptions, 'data', {});\n }\n\n /**\n * Build URL for metadata taxonomy.\n *\n * @param {string} scope\n * @param {string} taxonomyKey\n * @returns {`${string}/metadata_taxonomies/${string}/${string}`}\n */\n getMetadataTaxonomyUrl(scope: string, taxonomyKey: string): string {\n return `${this.getBaseApiUrl()}/metadata_taxonomies/${scope}/${taxonomyKey}`;\n }\n\n /**\n * Gets taxonomy associated with a taxonomy key.\n *\n * @param {number} id\n * @param {string} scope\n * @param {string} taxonomyKey\n * @param {string} nodeID\n * @returns {Promise<MetadataTaxonomy>}\n */\n async getMetadataTaxonomy(id: string, scope: string, taxonomyKey: string) {\n this.errorCode = ERROR_CODE_FETCH_METADATA_TAXONOMY;\n\n if (!id) {\n throw getBadItemError();\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!taxonomyKey) {\n throw new Error('Missing taxonomyKey');\n }\n\n const url = this.getMetadataTaxonomyUrl(scope, taxonomyKey);\n\n const metadataTaxonomy = await this.xhr.get({ url, id: getTypedFileId(id) });\n\n return getProp(metadataTaxonomy, 'data', {});\n }\n\n /**\n * Build URL for metadata taxonomies associated to a taxonomy node ID.\n *\n * @param {string} scope\n * @param {string} taxonomyKey\n * @param {string} nodeID\n * @param {boolean} includeAncestors\n * @returns {`${string}/metadata_taxonomies/${string}/${string}/nodes/${string}`}\n */\n getMetadataTaxonomyNodeUrl(\n scope: string,\n taxonomyKey: string,\n nodeID: string,\n includeAncestors?: boolean = false,\n ): string {\n const includeAncestorsParam = includeAncestors ? '?include-ancestors=true' : '';\n\n return `${this.getBaseApiUrl()}/metadata_taxonomies/${scope}/${taxonomyKey}/nodes/${nodeID}${includeAncestorsParam}`;\n }\n\n /**\n * Gets info associated with a taxonomy node.\n *\n * @param {number} id\n * @param {string} scope\n * @param {string} taxonomyKey\n * @param {string} nodeID\n * @param {boolean} includeAncestors\n * @returns {Promise<MetadataTaxonomyNode>}\n */\n async getMetadataTaxonomyNode(\n id: string,\n scope: string,\n taxonomyKey: string,\n nodeID: string,\n includeAncestors?: boolean,\n ) {\n this.errorCode = ERROR_CODE_FETCH_METADATA_TAXONOMY_NODE;\n\n if (!id) {\n throw getBadItemError();\n }\n\n if (!nodeID) {\n throw new Error('Missing nodeID');\n }\n\n if (!scope) {\n throw new Error('Missing scope');\n }\n\n if (!taxonomyKey) {\n throw new Error('Missing taxonomyKey');\n }\n\n const url = this.getMetadataTaxonomyNodeUrl(scope, taxonomyKey, nodeID, includeAncestors);\n\n const metadataTaxonomyNode = await this.xhr.get({ url, id: getTypedFileId(id) });\n\n return getProp(metadataTaxonomyNode, 'data', {});\n }\n}\n\nexport default Metadata;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/api/Metadata.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author Box
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { TreeQueryInput } from '@box/combobox-with-api';
|
|
7
|
+
import type { TreeQueryInput } from '@box/combobox-with-api';
|
|
8
8
|
import cloneDeep from 'lodash/cloneDeep';
|
|
9
9
|
import lodashFilter from 'lodash/filter';
|
|
10
10
|
import flatMap from 'lodash/flatMap';
|