@vidispine/vdt-js 23.1.0 → 23.2.0-pre.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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/_utils/parseAspectRatio.ts","../src/_utils/parseKeyValuePairTypes.ts","../src/auth/consts/ROLE_NAMES.ts","../src/metadata/consts/SYSTEM_FIELDGROUPS.ts","../src/metadata/consts/SYSTEM_FIELDS.ts","../src/metadata/consts/_internal/sharedAttributeKeys.ts","../src/metadata/consts/FIELD_VALUE_ATTRIBUTE_KEYS.ts","../src/metadata/consts/FIELD_ATTRIBUTE_KEYS.ts","../src/metadata/consts/GROUP_ATTRIBUTE_KEYS.ts","../src/metadata/createMetadataType/createMetadataType.ts","../src/metadata/_utils/sortTimespanList.ts","../src/metadata/_utils/index.ts","../src/metadata/_internal/parseValue.ts","../src/metadata/_internal/parseValueList.ts","../src/metadata/_internal/parseField.ts","../src/metadata/parseFieldList/parseFieldList.ts","../src/metadata/parseGroupList/parseGroupList.ts","../src/metadata/parseTimespan/parseTimespan.ts","../src/metadata/parseTimespanList/parseTimespanList.ts","../src/metadata/parseMetadataType/parseMetadataType.ts","../src/metadata/parseSimpleMetadataType/parseSimpleMetadataType.ts","../src/time/_consts/index.ts","../src/time/TimeBase/TimeBase.ts","../src/time/formatTimeBaseText/formatTimeBaseText.ts","../src/time/formatTimeBaseType/formatTimeBaseType.ts","../src/time/createTimeBase/createTimeBase.ts","../src/time/_utils/getAmountOfFrameDrops.ts","../src/time/_utils/isDropFrameTimeBase.ts","../src/time/TimeCode/TimeCode.ts","../src/time/_utils/getGreatestCommonDivisor.ts","../src/time/formatTimeCodeSeconds/formatTimeCodeSeconds.ts","../src/time/formatTimeCodeSmpte/_utils/getSamplesFromSmpte.ts","../src/time/formatTimeCodeSmpte/_utils/splitSmpte.ts","../src/time/formatTimeCodeSmpte/formatTimeCodeSmpte.ts","../src/time/formatTimeCodeText/formatTimeCodeText.ts","../src/time/formatTimeCodeType/formatTimeCodeType.ts","../src/time/createTimeCode/createTimeCode.ts","../src/metadata/metadataTypeToWebVtt/metadataTypeToWebVtt.ts","../src/search/createFacetType/createFacetType.ts","../src/search/parseFacetType/parseFacetType.ts","../src/search/parseHighlightTimespan/parseHighlightTimespan.ts","../src/search/parseHighlightTimespanList/parseHighlightTimespanList.ts","../src/search/parseNowDate/parseNowDate.ts","../src/shape/_utils/parseMediaInfoTypes.ts","../src/shape/parseAudioComponent/parseAudioComponent.ts","../src/file/consts/FILE_STATES.ts","../src/file/parseFileType/parseFileType.ts","../src/shape/parseBinaryComponent/parseBinaryComponent.ts","../src/shape/parseContainerComponent/parseContainerComponent.ts","../src/shape/parseVideoComponent/parseVideoComponent.ts","../src/shape/parseShapeType/parseShapeType.ts","../src/shape/consts/DOCUMENT_TYPES.ts","../src/shape/consts/SHAPE_MEDIA_TYPES.ts","../src/shape/getShapeDocumentType/getShapeDocumentType.ts","../src/shape/filterShapeSource/filterShapeSource.ts","../src/shape/getShapeMediaType/getShapeMediaType.ts","../src/thumbnail/findNearestThumbnail/findNearestThumbnail.ts","../src/transcode/parseMediaConvertPreset/parseMediaConvertPreset.ts","../src/transcode/parseTranscodePreset/parseTranscodePreset.ts"],"sourcesContent":["const gcd = (a: number, b: number): number => (b ? gcd(b, a % b) : a);\n\nexport type AspectRatio = { width: number; height: number };\n\nexport const parseAspectRatio = (aspectRatio: AspectRatio) => {\n const { width, height } = aspectRatio || {};\n if (width === undefined || height === undefined) {\n return undefined;\n }\n const denominator = gcd(width, height);\n let widthRatio: string | number = width / denominator;\n let heightRatio = height / denominator;\n if (widthRatio > 21) {\n heightRatio = 1;\n widthRatio = (width / height).toFixed(2);\n }\n return [widthRatio, heightRatio].join(':');\n};\n","import { KeyValuePairType } from '@vidispine/types';\n\n/**\n *\n * @param keyValuePairTypes\n * @returns\n *\n * @category Other\n */\nexport const parseKeyValuePairTypes = (keyValuePairTypes: KeyValuePairType[]) => {\n return Object.fromEntries(\n keyValuePairTypes.map(({ key, value }) => {\n return [key, value];\n }),\n );\n};\n","/**\n * Const object with VidiCore role names\n *\n * @category Auth\n */\nexport const ROLE_NAMES = {\n ACCESSCONTROL_READ: '_accesscontrol_read',\n ACCESSCONTROL_WRITE: '_accesscontrol_write',\n ADMINISTRATOR: '_administrator',\n AUTO_PROJECTION_READ: '_auto_projection_read',\n AUTO_PROJECTION_WRITE: '_auto_projection_write',\n COLLECTION_NOTIFICATION_READ: '_collection_notification_read',\n COLLECTION_NOTIFICATION_WRITE: '_collection_notification_write',\n COLLECTION_READ: '_collection_read',\n COLLECTION_WRITE: '_collection_write',\n CONFIGURATION_READ: '_configuration_read',\n DELETION_LOCK_NOTIFICATION_READ: '_deletion_lock_notification_read',\n DELETION_LOCK_NOTIFICATION_WRITE: '_deletion_lock_notification_write',\n DELETION_LOCK_READ: '_deletion_lock_read',\n DELETION_LOCK_WRITE: '_deletion_lock_write',\n DOCUMENT_NOTIFICATION_READ: '_document_notification_read',\n DOCUMENT_NOTIFICATION_WRITE: '_document_notification_write',\n DOCUMENT_READ: '_document_read',\n DOCUMENT_WRITE: '_document_write',\n ERROR_READ: '_error_read',\n ERROR_WRITE: '_error_write',\n EXPORT: '_export',\n EXPORT_TEMPLATE_READ: '_export_template_read',\n EXPORT_TEMPLATE_WRITE: '_export_template_write',\n EXTERNAL_ID_READ: '_external_id_read',\n EXTERNAL_ID_WRITE: '_external_id_write',\n FILE_NOTIFICATION_READ: '_file_notification_read',\n FILE_NOTIFICATION_WRITE: '_file_notification_write',\n FILE_READ: '_file_read',\n FILE_WRITE: '_file_write',\n GROUP_READ: '_group_read',\n GROUP_WRITE: '_group_write',\n IMPORT_WRITE: '_import',\n ITEM_ID_READ: '_item_id_read',\n ITEM_ID_WRITE: '_item_id_write',\n ITEM_NOTIFICATION_READ: '_item_notification_read',\n ITEM_NOTIFICATION_WRITE: '_item_notification_write',\n ITEM_WRITE: '_item_write',\n ITEM_SEARCH: '_item_search',\n ITEM_SHAPE_READ: '_item_shape_read',\n ITEM_SHAPE_WRITE: '_item_shape_write',\n ITEM_TIMELINE_READ: '_item_timeline_read',\n ITEM_TIMELINE_WRITE: '_item_timeline_write',\n ITEM_URI: '_item_uri',\n JOB_NOTIFICATION_READ: '_job_notification_read',\n JOB_NOTIFICATION_WRITE: '_job_notification_write',\n JOB_READ: '_job_read',\n JOB_WRITE: '_job_write',\n LIBRARY_READ: '_library_read',\n LIBRARY_WRITE: '_library_write',\n LOCK_READ: '_lock_read',\n LOCK_WRITE: '_lock_write',\n LOG_READ: '_log_read',\n METADATA_DATASET_READ: '_metadata_dataset_read',\n METADATA_DATASET_WRITE: '_metadata_dataset_write',\n METADATA_FIELD_GROUP_READ: '_metadata_field_group_read',\n METADATA_FIELD_GROUP_WRITE: '_metadata_field_group_write',\n METADATA_FIELD_READ: '_metadata_field_read',\n METADATA_FIELD_WRITE: '_metadata_field_write',\n METADATA_GLOBAL_READ: '_metadata_global_read',\n METADATA_GLOBAL_WRITE: '_metadata_global_write',\n METADATA_LOCK_READ: '_metadata_lock_read',\n METADATA_LOCK_WRITE: '_metadata_lock_write',\n METADATA_READ: '_metadata_read',\n METADATA_SCHEMA_READ: '_metadata_schema_read',\n METADATA_SCHEMA_WRITE: '_metadata_schema_write',\n METADATA_WRITE: '_metadata_write',\n OTIF_ANALYZE: '_otif_analyze',\n OTIF_READ: '_otif_read',\n OTIF_WRITE: '_otif_write',\n PLACEHOLDER_NOTIFICATION_READ: '_placeholder_notification_read',\n PLACEHOLDER_NOTIFICATION_WRITE: '_placeholder_notification_write',\n PROJECTION_READ: '_projection_read',\n PROJECTION_WRITE: '_projection_write',\n QUOTA_NOTIFICATION_READ: '_quota_notification_read',\n QUOTA_NOTIFICATION_WRITE: '_quota_notification_write',\n QUOTA_READ: '_quota_read',\n QUOTA_WRITE: '_quota_write',\n RELATION_READ: '_relation_read',\n RELATION_WRITE: '_relation_write',\n RESOURCE_READ: '_resource_read',\n RESOURCE_WRITE: '_resource_write',\n RUN_AS: '_run_as',\n SEARCH: '_search',\n SEQUENCE_READ: '_sequence_read',\n SEQUENCE_WRITE: '_sequence_write',\n SHAPE_TAG_READ: '_shape_tag_read',\n SHAPE_TAG_WRITE: '_shape_tag_write',\n SITE_MANAGER: '_site_manager',\n SITE_RULE_READ: '_site_rule_read',\n SITE_RULE_WRITE: '_site_rule_write',\n STORAGE_GROUP_READ: '_storage_group_read',\n STORAGE_GROUP_WRITE: '_storage_group_write',\n STORAGE_NOTIFICATION_READ: '_storage_notification_read',\n STORAGE_NOTIFICATION_WRITE: '_storage_notification_write',\n STORAGE_READ: '_storage_read',\n STORAGE_RULE_READ: '_storage_rule_read',\n STORAGE_RULE_WRITE: '_storage_rule_write',\n STORAGE_WRITE: '_storage_write',\n SUPER_ACCESS_USER: '_super_access_user',\n TASKDEFINITION_READ: '_taskdefinition_read',\n TASKDEFINITION_WRITE: '_taskdefinition_write',\n THUMBNAIL_READ: '_thumbnail_read',\n THUMBNAIL_WRITE: '_thumbnail_write',\n TRANSCODER: '_transcoder',\n TRANSFER_READ: '_transfer_read',\n TRANSFER_WRITE: '_transfer_write',\n USER: '_user',\n VXA: '_vxa',\n VXA_READ: '_vxa_read',\n} as const;\n\nexport type RoleNameTypes = keyof typeof ROLE_NAMES;\n","/**\n * Array with all available VidiCore system/default field group names\n *\n * @category Metadata\n */\nexport const SYSTEM_FIELDGROUPS = [\n 'stl_subtitle',\n 'stl_tti',\n 'stl_gsi',\n 'mrk_marker',\n 'pho_validation',\n 'pho_resource',\n 'pho_error',\n 'facedetect_rect',\n 'facedetect_face',\n 'originalTrackFilename',\n 'stl_gsiHeader',\n] as const;\n","/**\n * Array with all available VidiCore system/default field names (including transient)\n *\n * @category Metadata\n */\nexport const SYSTEM_FIELDS = [\n 'title',\n 'user',\n 'shapeTag',\n 'representativeThumbnail',\n 'representativeThumbnailNoAuth',\n 'representativeItems',\n 'itemId',\n 'collectionId',\n 'mediaType',\n 'mimeType',\n 'created',\n 'startTimeCode',\n 'startSeconds',\n 'fieldValidationError',\n 'schemaValidationError',\n 'originalFilename',\n 'originalUri',\n 'originalAudioCodec',\n 'originalVideoCodec',\n 'originalHeight',\n 'originalWidth',\n 'originalFormat',\n 'durationSeconds',\n 'durationTimeCode',\n 'solr-index',\n '__user',\n '__collection',\n '__collection_size',\n '__ancestor_collection',\n '__ancestor_collection_size',\n '__shape',\n '__shape_size',\n '__shape_last_added',\n '__placeholder_shape_size',\n '__version',\n '__version_count',\n '__storage',\n '__storage_size',\n '__shapetag_{tag}_hash_{hash}',\n '__storage_{tag}',\n '__storage_{tag}_size',\n '__storagegroup',\n '__storagegroup_size',\n '__sequence',\n '__sequence_size',\n '__metadata_last_modified',\n '__external_id',\n '__deletion_lock_id',\n '__deletion_lock_expiry',\n '__child_collection',\n '__child_collection_size',\n '__parent_collection',\n '__parent_collection_size',\n '__items_size',\n 'stl_text',\n 'stl_justification',\n 'stl_xrelative',\n 'stl_yrelative',\n 'stl_vertical',\n 'stl_verticalbase',\n 'stl_horizontalbase',\n 'stl_sizerelative',\n 'stl_color',\n 'stl_outline',\n 'stl_outlinecolor',\n 'stl_outlinesize',\n 'stl_font',\n 'stl_service',\n 'stl_tti',\n 'stl_gsi',\n 'cct',\n 'tcd',\n 'tcf',\n 'oet',\n 'cd',\n 'mnc',\n 'cpn',\n 'dfc',\n 'tcp',\n 'tcs',\n 'tet',\n 'tnb',\n 'tnd',\n 'en',\n 'co',\n 'tng',\n 'rd',\n 'mnr',\n 'dsc',\n 'opt',\n 'lc',\n 'tpt',\n 'tn',\n 'slr',\n 'tns',\n 'rn',\n 'pub',\n 'dsn',\n 'ecd',\n 'mrk_zerolength',\n 'mrk_text',\n 'mrk_color',\n 'pho_resource_name',\n 'pho_error_level',\n 'pho_error_code',\n 'pho_error_description',\n 'facedetect_rect_width',\n 'facedetect_rect_height',\n 'facedetect_rect_y',\n 'facedetect_rect_x',\n 'facedetect_pid',\n 'facedetect_rect',\n 'trackId',\n 'eidr_actor',\n 'eidr_alternateId',\n 'eidr_countryOfOrigin',\n 'eidr_director',\n 'eidr_id',\n 'eidr_referentType',\n 'eidr_releaseDate',\n 'eidr_resourceName',\n 'eidr_status',\n 'eidr_sync',\n 'ttml_div',\n 'ttml_root',\n 'vxa_collection_id',\n 'vxaId',\n 'vxaLocalPath',\n 'tco',\n 'cs',\n 'ebn',\n 'tf',\n 'cf',\n 'sgn',\n 'tci',\n 'jc',\n 'vp',\n 'sn',\n] as const;\n","import { MetadataValueAttributes } from '@vidispine/types';\n\nexport const SHARED_ATTRIBUTE_KEYS: (keyof MetadataValueAttributes)[] = [\n 'uuid',\n 'user',\n 'timestamp',\n 'change',\n 'conflict',\n 'mode',\n];\n\nexport const SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS = [\n 'name',\n 'id',\n 'referenced',\n 'data',\n 'inheritance',\n] as const;\n","import { MetadataValueType } from '@vidispine/types';\n\nimport { SHARED_ATTRIBUTE_KEYS } from './_internal/sharedAttributeKeys';\n\n/**\n * Array with all available metadata field value attributes\n *\n * @category Metadata\n */\nexport const FIELD_VALUE_ATTRIBUTE_KEYS: (keyof MetadataValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n 'value',\n 'lang',\n];\n","import { MetadataFieldValueType } from '@vidispine/types';\n\nimport {\n SHARED_ATTRIBUTE_KEYS,\n SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n} from './_internal/sharedAttributeKeys';\n\n/**\n * Array with all available metadata field attributes\n *\n * @category Metadata\n */\nexport const FIELD_ATTRIBUTE_KEYS: (keyof MetadataFieldValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n ...SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n 'value',\n 'reference',\n 'type',\n 'track',\n];\n","import { MetadataGroupValueType } from '@vidispine/types';\n\nimport {\n SHARED_ATTRIBUTE_KEYS,\n SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n} from './_internal/sharedAttributeKeys';\n\n/**\n * Array with all available metadata group attributes\n *\n * @category Metadata\n */\nexport const GROUP_ATTRIBUTE_KEYS: (keyof MetadataGroupValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n ...SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n 'cycle',\n 'field',\n 'group',\n];\n","import {\n MetadataType,\n MetadataGroupValueType,\n MetadataFieldValueType,\n MetadataValueType,\n} from '@vidispine/types';\n\nimport { FIELD_ATTRIBUTE_KEYS, FIELD_VALUE_ATTRIBUTE_KEYS, GROUP_ATTRIBUTE_KEYS } from '../consts';\n\nexport type InputValueTypes = string | boolean | number | Date;\n\n/** Possible input values for the field value */\nexport type InputValue = InputValueTypes | InputValueTypes[];\n\n/** Input value object for the field value */\nexport type InputValueObject = { value: string | InputValue } & Omit<MetadataValueType, 'value'>;\n\nexport type InputFieldValue = InputValueObject | InputValue | InputValueObject[] | InputValue[];\n\n/** Input object to create field of */\nexport type InputFieldObject = {\n value: InputFieldValue;\n} & MetadataFieldValueType;\n\n/** Input to create a field of */\nexport type InputField = InputFieldValue | InputFieldObject;\n\n/** Input to create one or multiple groups and/or fields of */\nexport type InputGroupsOrFields = InputGroup | InputGroup[] | InputField | InputField[];\n\n/** Input object to create group of */\nexport type InputGroup = {\n [groupOrFieldName: string]: InputGroupsOrFields;\n} & Partial<MetadataGroupValueType>;\n\n/** Input to create a timespan of */\nexport type InputTimespan = {\n /** Start for timespan */\n start?: string | number;\n /** End for timespan */\n end?: string | number;\n /** Base for timespan (typically undefined) */\n base?: string;\n /** Group or field metadata */\n [groupOrFieldName: string]: InputGroupsOrFields;\n};\n\nconst isValueObject = (o: any): o is InputValueObject =>\n Object.prototype.toString.call(o) === '[object Object]' && o.value !== undefined;\n\nconst isFieldType = (v: any): v is string | boolean | number =>\n ['string', 'boolean', 'number'].includes(typeof v);\n\nconst isFieldObject = (o: any): o is InputFieldObject =>\n isValueObject(o) && (o?.value === null || isValueObject(o.value) || isFieldType(o.value));\n\nconst isObject = (o: any): o is { value?: any } =>\n Object.prototype.toString.call(o) === '[object Object]';\n\nconst isDate = (o: any): o is Date => Object.prototype.toString.call(o) === '[object Date]';\nconst isField = (value: any): value is InputField => {\n if (value === null) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.some(isField);\n }\n return isFieldType(value) || isFieldObject(value) || isDate(value);\n};\n\nconst isGroup = (value: any): value is InputGroup | InputGroup[] => {\n const isGroupObject = (v: any) => isObject(v) && v.value === undefined && !!Object.entries(value);\n if (Array.isArray(value)) {\n return value.every(isGroup);\n }\n return isGroupObject(value);\n};\n\nconst tryPluralize = (str: string, arr: any[]) => str + (arr.length > 1 ? 's' : '');\n\nconst ensureKeysAreValid = (keysToCheck: string[], keysToMatch: string[]) => {\n const unsupportedKeys = keysToCheck.filter((k) => !keysToMatch.includes(k));\n if (unsupportedKeys.length) {\n throw Error(\n `Unsupported ${tryPluralize('key', unsupportedKeys)} (${unsupportedKeys.join(', ')})`,\n );\n }\n};\n\nconst parseValue = (value: InputValue): { value?: MetadataValueType['value'] } => {\n if (Array.isArray(value)) {\n throw Error('Invalid value inside value object, cannot be array');\n }\n if ([undefined, null].includes(value)) return {};\n if (isDate(value)) return { value: value.toISOString() };\n return { value: value.toString() };\n};\n\nconst parseValueObject = (valueObject: InputValueObject): MetadataValueType => {\n ensureKeysAreValid(Object.keys(valueObject), FIELD_VALUE_ATTRIBUTE_KEYS);\n if (Object.keys(valueObject).length === 0) {\n throw Error('Invalid value object, cannot be empty object');\n }\n if (typeof valueObject?.value === 'string') {\n return valueObject as MetadataValueType;\n }\n const parsedValue = parseValue(valueObject?.value);\n return { ...valueObject, ...(parsedValue !== undefined ? parsedValue : {}) } as MetadataValueType;\n};\n\nconst parseFieldValue = (value: InputFieldValue): MetadataValueType | MetadataValueType[] => {\n if ([undefined, null].includes(value)) return undefined;\n if (Array.isArray(value)) return value.flatMap(parseFieldValue);\n if (isValueObject(value)) return parseValueObject(value);\n return parseValue(value);\n};\n\nconst parseFieldObject = (fieldObject: InputFieldObject): MetadataFieldValueType => {\n ensureKeysAreValid(Object.keys(fieldObject), FIELD_ATTRIBUTE_KEYS);\n const parsedFieldValue = parseFieldValue(fieldObject?.value);\n if (parsedFieldValue === undefined) {\n const { value, ...fieldObjectWithoutValue } = fieldObject;\n return fieldObjectWithoutValue;\n }\n return {\n ...fieldObject,\n value: [...(Array.isArray(parsedFieldValue) ? parsedFieldValue : [parsedFieldValue])],\n };\n};\n\nconst parseField = (field: InputField): MetadataFieldValueType => {\n if (isFieldObject(field)) {\n return parseFieldObject(field);\n }\n const parsedFieldValue = parseFieldValue(field);\n if (parsedFieldValue === undefined) {\n return undefined;\n }\n return { value: [...(Array.isArray(parsedFieldValue) ? parsedFieldValue : [parsedFieldValue])] };\n};\n\nconst parseGroupsAndFields = (\n groupOrField: InputGroupsOrFields,\n): {\n group?: MetadataGroupValueType[];\n field?: MetadataFieldValueType[];\n} & MetadataGroupValueType => {\n const group: MetadataGroupValueType[] = [];\n const field: MetadataFieldValueType[] = [];\n let groupAttributes: MetadataGroupValueType = {};\n Object.entries(groupOrField || {}).forEach(([name, value]) => {\n if (GROUP_ATTRIBUTE_KEYS.includes(name as keyof MetadataGroupValueType)) {\n groupAttributes = { ...groupAttributes, [name]: value };\n } else if (isField(value)) {\n try {\n field.push({ name, ...parseField(value) });\n } catch (error) {\n throw Error(error.message + (name ? ` for field \"${name}\"` : ''));\n }\n } else if (isGroup(value)) {\n (Array.isArray(value) ? value : [value]).forEach((childGroup) => {\n group.push({ name, ...parseGroupsAndFields(childGroup) });\n });\n } else {\n throw Error(`Unhandled value for \"${name}\"`);\n }\n });\n return {\n ...groupAttributes,\n ...(group.length > 0 ? { group } : {}),\n ...(field.length > 0 ? { field } : {}),\n };\n};\n\nconst parseTimespan = (timespan: InputTimespan): MetadataType['timespan'][number] => {\n const { start = '-INF', end = '+INF', base = undefined, ...groupsAndFields } = timespan;\n const { group, field } = parseGroupsAndFields(groupsAndFields);\n return {\n ...(group ? { group } : {}),\n ...(field ? { field } : {}),\n start: start.toString(),\n end: end.toString(),\n ...(base ? { base } : {}),\n };\n};\n\nexport type CreateMetadataTypeInput = InputTimespan | InputTimespan[];\n\n/**\n * Create a VidiCore metadata object from a more dense/simplified structure\n *\n * @param input To create VidiCore metadata object of\n * @returns A VidiCore metadata object\n *\n * @category Metadata\n */\nexport const createMetadataType = (input: CreateMetadataTypeInput): MetadataType => {\n return {\n timespan: (Array.isArray(input) ? input : [input || {}]).map((t) => parseTimespan(t)),\n };\n};\n","import { MetadataType } from '@vidispine/types';\n\n/**\n * @private\n *\n * Function to sort timespan lists with\n *\n * TODO:\n * - Take different time bases in account\n * - Also compare end if start is same (lowest end first)\n *\n * @param timespan1 first timespan to compare\n * @param timespan2 second timespan to compare\n * @returns -1 if first is before second, 1 if first is after second, 0 if same start\n */\nexport const sortTimespanList = (\n timespan1: MetadataType['timespan'][number],\n timespan2: MetadataType['timespan'][number],\n) => {\n const [firstStart] = timespan1?.start?.split('@') || [];\n const [secondStart] = timespan2?.start?.split('@') || [];\n if (Number(firstStart) < Number(secondStart)) {\n return -1;\n }\n if (Number(firstStart) > Number(secondStart)) {\n return 1;\n }\n return 0;\n};\n\nexport default sortTimespanList;\n","export * from './findTimespan';\nexport * from './sortTimespanList';\n\n/**\n * @private\n *\n * Wrap in array if not already an array, and return empty array if v is undefined\n *\n * @param v value to return as array\n * @returns input value wrapped as array\n */\nexport const asArray = <T>(v: T | T[]) => (Array.isArray(v) ? v : (v && [v]) || []);\n\n/**\n * @private\n *\n * Wrap in array if not already an array, and return empty array if v is undefined\n *\n * @param v value to return as array\n * @returns input value wrapped as array\n */\nexport const asSingle = <T>(v: T | T[]) => (Array.isArray(v) ? v.pop() : v);\n\n/**\n * @private\n * Check if array is string array (+ type guard)\n *\n * @param arr Array to check if string array\n * @returns true if string array\n */\nexport const isStringArray = (arr: any[]): arr is string[] =>\n arr?.every((v) => typeof v === 'string') || false;\n","import { MetadataValueType } from '@vidispine/types';\n\nexport type ParsedValueAttributes = Partial<Omit<MetadataValueType, 'value'>>;\n\nexport type ParsedValue<TOptions> = TOptions extends { includeValueAttributes?: false }\n ? string\n : { value: string } & ParsedValueAttributes;\n\nexport type ParseValueOptions = {\n /** Include attributes on value (`true` for all) */\n includeValueAttributes?: boolean | (keyof ParsedValueAttributes)[];\n};\n\nexport const defaultOptions = {\n includeValueAttributes: false,\n};\n\n/**\n * @internal\n * Parse the value object inside a field value list\n *\n * @param value The Vidicore metadata value type\n * @param options For how to parse the value object\n * @returns The parsed value\n */\nexport function parseValue<TOptions extends ParseValueOptions = ParseValueOptions>(\n value: MetadataValueType,\n options?: TOptions,\n): ParsedValue<TOptions> {\n const { includeValueAttributes } = {\n ...defaultOptions,\n ...(options || {}),\n };\n if (includeValueAttributes === false) {\n return value?.value as ParsedValue<TOptions>;\n }\n const { value: stringValue, ...attributes } = value;\n const valueAttributes: ParsedValueAttributes =\n (includeValueAttributes === true && attributes) ||\n (Array.isArray(includeValueAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeValueAttributes.includes(key as keyof ParsedValueAttributes),\n ),\n )) ||\n {};\n\n return { ...valueAttributes, value: stringValue } as ParsedValue<TOptions>;\n}\n","import { MetadataValueType } from '@vidispine/types';\n\nimport { isStringArray } from '../_utils';\n\nimport {\n defaultOptions as defaultParseValueOptions,\n ParsedValue,\n parseValue,\n ParseValueOptions,\n} from './parseValue';\n\nexport type ParsedValueList<TOptions> = TOptions extends {\n joinValue?: string;\n includeValueAttributes?: false;\n}\n ? string\n : TOptions extends { arrayOnSingleValue?: true }\n ? ParsedValue<TOptions>[]\n : ParsedValue<TOptions> | ParsedValue<TOptions>[];\n\nexport interface ParseValueListOptions extends ParseValueOptions {\n /** String to join the values, (e.g. `,`) */\n joinValue?: string;\n /** Return values as array even if single value */\n arrayOnSingleValue?: boolean;\n}\n\nexport const defaultOptions = {\n ...defaultParseValueOptions,\n joinValue: undefined as string,\n arrayOnSingleValue: true,\n};\n\n/**\n * @internal\n *\n * @param valueList\n * @param options\n * @returns\n */\nexport function parseValueList<TOptions extends ParseValueListOptions = ParseValueListOptions>(\n valueList: MetadataValueType[],\n options?: TOptions,\n): ParsedValueList<TOptions> {\n const { joinValue, arrayOnSingleValue, ...parseValueOptions } = {\n ...defaultOptions,\n ...(options || {}),\n };\n\n const parsedValueList = valueList?.map((v) => parseValue(v, parseValueOptions));\n\n if (isStringArray(parsedValueList) && joinValue)\n return parsedValueList?.join(joinValue) as ParsedValueList<TOptions>;\n if (arrayOnSingleValue !== true && parsedValueList?.length <= 1)\n return parsedValueList?.[0] as ParsedValueList<TOptions>;\n return parsedValueList as ParsedValueList<TOptions>;\n}\n","import { MetadataFieldValueType } from '@vidispine/types';\n\nimport {\n defaultOptions as defaultParseValueListOptions,\n ParsedValueList,\n parseValueList,\n ParseValueListOptions,\n} from './parseValueList';\n\nexport type ParsedFieldAttributes = Partial<Omit<MetadataFieldValueType, 'value'>>;\n\nexport type ParsedFieldObject<TOptions> = {\n value: ParsedValueList<TOptions>;\n} & ParsedFieldAttributes;\n\nexport type ParsedField<TOptions> = TOptions extends {\n includeFieldAttributes?: false;\n}\n ? ParsedValueList<TOptions>\n : ParsedFieldObject<TOptions>;\n\nexport interface ParseFieldOptions extends ParseValueListOptions {\n /** Include attributes on field (`true` for all) */\n includeFieldAttributes?: boolean | (keyof ParsedFieldAttributes)[];\n}\n\nexport const defaultOptions = {\n includeFieldAttributes: false,\n ...defaultParseValueListOptions,\n};\n\n/**\n * @internal\n *\n * @param field\n * @param options\n * @returns\n */\nexport const parseField = <TOptions extends ParseFieldOptions = ParseFieldOptions>(\n field: MetadataFieldValueType,\n options?: TOptions,\n): ParsedField<TOptions> => {\n const { includeFieldAttributes, ...parseValueListOptions } = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { value, ...attributes } = field;\n const parsedValueList = parseValueList(value, parseValueListOptions);\n\n const fieldAttributes: ParsedFieldAttributes =\n (includeFieldAttributes === true && attributes) ||\n (Array.isArray(includeFieldAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeFieldAttributes.includes(key as keyof ParsedFieldAttributes),\n ),\n )) ||\n {};\n\n return (\n includeFieldAttributes ? { ...fieldAttributes, value: parsedValueList } : parsedValueList\n ) as ParsedField<TOptions>;\n};\n","import { MetadataFieldValueType } from '@vidispine/types';\n\nimport {\n ParsedField,\n ParseFieldOptions,\n defaultOptions as defaultParseFieldOptions,\n parseField,\n} from '../_internal/parseField';\nimport { asArray } from '../_utils';\n\nexport interface ParseFieldListOptions extends ParseFieldOptions {\n /** Return fields as list */\n fieldAsList?: boolean;\n /** Return fields as array even if only one field */\n arrayOnSingleField?: boolean;\n /** Return all fields flattened (Note: keys might be overridden) */\n overrideField?: boolean;\n}\n\nexport const defaultOptions: ParseFieldListOptions = {\n ...defaultParseFieldOptions,\n fieldAsList: false,\n arrayOnSingleField: false,\n overrideField: undefined,\n};\n\nexport type ParsedFieldList<TOptions> = TOptions extends { fieldAsList?: true }\n ? ParsedField<TOptions>[]\n : TOptions extends\n | { arrayOnSingle?: true; arrayOnSingleField?: undefined | true }\n | { arrayOnSingleField?: true }\n ? {\n [name: string]: ParsedField<TOptions>[];\n }\n : TOptions extends { flat?: true; overrideField?: true | undefined } | { overrideField?: true }\n ? {\n [name: string]: ParsedField<TOptions>;\n }\n : {\n [name: string]: ParsedField<TOptions> | ParsedField<TOptions>[];\n };\n\n/**\n * Parse a metadata field list according to selected options\n *\n * @remarks\n * When parsing duplicate fields (same field name in the same field list) it will:\n * - with default options: combine field values to one array within the same field name key\n * - with `joinValue` enabled: join values within each field (returns array with string for each field value)\n * - with `fieldAsList` enabled: separate fields in the list/array (as usual, even if not duplicate)\n * - with `includeFieldAttributes` enabled: return an array of field objects\n * - with `overrideField` enabled: return the latest duplicated field it parses\n *\n * @param fieldList Field list to parse\n * @param [options=defaultOptions] Options for how to parse the field list\n * @returns A parsed field list\n *\n * @category Metadata\n */\nexport const parseFieldList = <TOptions extends ParseFieldListOptions = ParseFieldListOptions>(\n fieldList: MetadataFieldValueType[],\n options?: TOptions,\n): ParsedFieldList<TOptions> => {\n const parseFieldListOptions: ParseFieldListOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n\n const { fieldAsList, arrayOnSingleField, overrideField } = parseFieldListOptions;\n const shouldOverride = overrideField === true && fieldAsList === false;\n\n const output: {\n [name: string]: ParsedField<TOptions> | ParsedField<TOptions>[];\n } = {};\n fieldList?.forEach((field) => {\n const { name } = field;\n const parsedField = parseField<TOptions>(field, parseFieldListOptions as TOptions);\n const parsedFieldOutput = arrayOnSingleField === true ? asArray(parsedField) : parsedField;\n const existingParsedFields = output[name];\n if (!existingParsedFields) output[name] = parsedFieldOutput;\n else if (shouldOverride) output[name] = parsedField;\n else output[name] = [asArray(existingParsedFields), asArray(parsedField)].flat();\n });\n\n return (\n fieldAsList === true ? Object.values(output).flat() : output\n ) as ParsedFieldList<TOptions>;\n};\n","import { MetadataGroupValueType } from '@vidispine/types';\n\nimport { asArray } from '../_utils';\nimport {\n ParsedFieldList,\n defaultOptions as defaultParseFieldListOptions,\n parseFieldList,\n ParseFieldListOptions,\n} from '../parseFieldList/parseFieldList';\n\nexport type ParsedGroupAttributes = Omit<MetadataGroupValueType, 'field' | 'group'>;\n\n/*\n * _groupAsList_:\n * Return child groups as list (in array)\n *\n * __includeGroupAttributes__:\n * Include attributes on group\n * (Set `true` or \"array of attribute keys\" to include specific attributes)\n *\n * __arrayOnSingleGroup__:\n * Return single group in array\n *\n * @defaultValue `{ groupAsList: false, includeGroupAttributes: false, arrayOnSingleGroup: true, overrideGroup: undefined }`\n */\nexport interface ParseGroupOptions extends ParseFieldListOptions {\n /** Include group attributes (`true` for all) */\n includeGroupAttributes?: boolean | (keyof ParsedGroupAttributes)[];\n /** Return groups as list */\n groupAsList?: boolean;\n /** Return groups as array even if only one group */\n arrayOnSingleGroup?: boolean;\n /** Return all groups flattened (Note: keys might be overridden) */\n overrideGroup?: boolean;\n}\n\nconst defaultParseGroupOptions: ParseGroupOptions = {\n ...defaultParseFieldListOptions,\n includeGroupAttributes: false,\n groupAsList: false,\n arrayOnSingleGroup: false,\n overrideGroup: undefined,\n};\n\nexport type ParsedGroup<TOptions> = ((TOptions extends { groupAsList?: true }\n ? { group?: ParsedGroupList<TOptions> }\n : { [name: string]: ParsedGroupList<TOptions> }) &\n (TOptions extends { fieldAsList?: true }\n ? { field?: ParsedFieldList<TOptions> }\n : { [name: string]: ParsedFieldList<TOptions> })) &\n ParsedGroupAttributes;\n\n/**\n * @internal\n *\n * (Kept here due to circular dependency otherwise)\n *\n * @param group\n * @param options\n * @returns\n */\nconst parseGroup = <TOptions extends ParseGroupOptions = ParseGroupOptions>(\n group: MetadataGroupValueType,\n options?: TOptions,\n): ParsedGroup<TOptions> => {\n const parseGroupOptions = {\n ...defaultParseGroupOptions,\n ...(options || {}),\n };\n const { includeGroupAttributes } = parseGroupOptions;\n\n const parseFieldListOptions: ParseFieldListOptions = Object.fromEntries(\n Object.entries(parseGroupOptions).filter(([key]) =>\n Object.keys(defaultParseFieldListOptions).includes(key),\n ),\n );\n\n const { field: fieldList, group: groupList, ...attributes } = group;\n const parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const parsedGroupList = groupList && parseGroupList(groupList, parseGroupOptions);\n\n const groupAttributes: ParsedGroupAttributes =\n (includeGroupAttributes === true && attributes) ||\n (Array.isArray(includeGroupAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeGroupAttributes.includes(key as keyof ParsedGroupAttributes),\n ),\n )) ||\n {};\n\n return {\n ...groupAttributes,\n ...(parseFieldListOptions?.fieldAsList\n ? (parsedFieldList && { field: parsedFieldList }) || {}\n : parsedFieldList),\n ...(parseGroupOptions?.groupAsList\n ? (parsedGroupList && { group: parsedGroupList }) || {}\n : parsedGroupList),\n } as ParsedGroup<TOptions>;\n};\n\nexport type ParseGroupListOptions = ParseGroupOptions;\n\nexport type ParsedGroupList<TOptions> = TOptions extends { groupAsList?: true }\n ? ParsedGroup<TOptions>[]\n : TOptions extends\n | { arrayOnSingle?: true; arrayOnSingleGroup?: true | undefined }\n | { arrayOnSingleGroup?: true }\n ? {\n [groupName: string]: ParsedGroup<TOptions>[];\n }\n : TOptions extends { flat?: true; overrideGroup?: true | undefined } | { overrideGroup?: true }\n ? {\n [groupName: string]: ParsedGroup<TOptions>;\n }\n : {\n [groupName: string]: ParsedGroup<TOptions> | ParsedGroup<TOptions>[];\n };\n\nexport const defaultOptions: ParseGroupListOptions = defaultParseGroupOptions;\n\n/**\n * Parse a metadata group list according to selected options\n *\n * @remarks\n * Parsing duplicate groups (same group name in the same group list) it will:\n * - with default options: combine group objects to one array within the same group name key\n * - with `groupAsList` enabled: return separate group objects in a list/array (as usual, even if not duplicate)\n * - with `overrideGroup` enabled: return the latest duplicated group it parses\n *\n * @param groupList Group list to parse\n * @param options options for how to parse list\n * @returns A parsed group list\n *\n * @category Metadata\n */\nexport const parseGroupList = <TOptions extends ParseGroupListOptions = ParseGroupListOptions>(\n groupList: MetadataGroupValueType[],\n options?: TOptions,\n): ParsedGroupList<TOptions> => {\n const parseGroupOptions: ParseGroupListOptions = { ...defaultOptions, ...(options || {}) };\n\n const { groupAsList, arrayOnSingleGroup, overrideGroup } = parseGroupOptions;\n\n const shouldOverride = overrideGroup === true && groupAsList === false;\n\n const output: {\n [groupName: string]: ParsedGroup<TOptions> | ParsedGroup<TOptions>[];\n } = {};\n groupList?.forEach((group) => {\n const { name } = group;\n const parsedGroup = parseGroup<TOptions>(group, parseGroupOptions as TOptions);\n const parsedGroupOutput =\n arrayOnSingleGroup === true ? asArray<ParsedGroup<TOptions>>(parsedGroup) : parsedGroup;\n const existingParsedGroups = output[name];\n if (!existingParsedGroups) output[name] = parsedGroupOutput;\n else if (shouldOverride) output[name] = parsedGroup;\n else\n output[name] = [\n asArray(existingParsedGroups),\n asArray<ParsedGroup<TOptions>>(parsedGroup),\n ].flat();\n });\n\n if (groupAsList) {\n return Object.values(output).flat() as ParsedGroupList<TOptions>;\n }\n\n return output as ParsedGroupList<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport {\n ParsedFieldList,\n parseFieldList,\n ParseFieldListOptions,\n defaultOptions as defaultParseFieldListOptions,\n} from '../parseFieldList/parseFieldList';\nimport {\n ParsedGroupList,\n parseGroupList,\n ParseGroupListOptions,\n defaultOptions as defaultParseGroupListOptions,\n} from '../parseGroupList/parseGroupList';\n\nexport type ParsedTimespanAttributes = Omit<MetadataType['timespan'][number], 'field' | 'group'>;\n\nexport interface ParseTimespanOptions extends ParseGroupListOptions {\n /** Include attributes on timespan (`true` for all) */\n includeTimespanAttributes?: boolean | (keyof ParsedTimespanAttributes)[];\n /** Return groups, fields, and values as array */\n arrayOnSingle?: boolean;\n /** Flatten timespan, groups and fields (Note: keys might be overridden) */\n flat?: boolean;\n}\n\nexport type ParsedTimespan<TOptions> = ((TOptions extends { groupAsList?: true }\n ? { group?: ParsedGroupList<TOptions> }\n : { [name: string]: ParsedGroupList<TOptions> }) &\n (TOptions extends { fieldAsList?: true }\n ? { field?: ParsedFieldList<TOptions> }\n : { [name: string]: ParsedFieldList<TOptions> })) &\n ParsedTimespanAttributes;\n\nexport const defaultOptions: ParseTimespanOptions = {\n ...defaultParseGroupListOptions,\n includeTimespanAttributes: false,\n flat: false,\n arrayOnSingle: false,\n arrayOnSingleValue: true,\n arrayOnSingleGroup: undefined,\n arrayOnSingleField: undefined,\n};\n\n/**\n *\n * Parses timespan according to specified options\n *\n * @remarks\n * To ensure a flat (no array) representation when using `flat: true`, the parser will also set `overrideGroup` and `overrideField` to true (unless those are explicitly set false)\n *\n * @param timespan - A VidiCore metadata timespan\n * @param options - Options to change how it is parsed\n * @returns Timespan parsed according to options\n *\n * @see {@link parseGroupList} and {@link parseFieldList} for more info\n *\n * @category Metadata\n */\nexport const parseTimespan = <TOptions extends ParseTimespanOptions = ParseTimespanOptions>(\n timespan: MetadataType['timespan'][number],\n options?: TOptions,\n): ParsedTimespan<TOptions> => {\n const parseTimespanOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { includeTimespanAttributes, arrayOnSingle, flat } = parseTimespanOptions;\n const parseGroupListOptions: ParseGroupListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseGroupListOptions).includes(key)) {\n if (\n ['arrayOnSingleGroup', 'arrayOnSingleField', 'arrayOnSingleValue'].includes(key) &&\n (value !== undefined ? value : arrayOnSingle === true)\n ) {\n return [key, true];\n }\n if (\n ['overrideGroup', 'overrideField'].includes(key) &&\n (value !== undefined ? value : flat === true)\n ) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n const parseFieldListOptions: ParseFieldListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseFieldListOptions).includes(key)) {\n if (\n ['arrayOnSingleField', 'arrayOnSingleValue'].includes(key) &&\n (value !== undefined ? value : arrayOnSingle === true)\n ) {\n return [key, true];\n }\n if (['overrideField'].includes(key) && (value !== undefined ? value : flat === true)) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n\n const { field: fieldList, group: groupList, ...attributes } = timespan || {};\n const parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const parsedGroupList = groupList && parseGroupList(groupList, parseGroupListOptions);\n\n const timespanAttributes: ParsedTimespanAttributes =\n (includeTimespanAttributes === true && attributes) ||\n (Array.isArray(includeTimespanAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeTimespanAttributes.includes(key as keyof ParsedTimespanAttributes),\n ),\n )) ||\n {};\n\n return {\n ...timespanAttributes,\n ...(parseFieldListOptions?.fieldAsList ? { field: parsedFieldList } : parsedFieldList),\n ...(parseGroupListOptions?.groupAsList ? { group: parsedGroupList } : parsedGroupList),\n } as ParsedTimespan<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { asArray, asSingle, sortTimespanList } from '../_utils';\nimport { parseTimespan } from '../parseTimespan';\nimport {\n ParsedTimespan,\n ParseTimespanOptions,\n defaultOptions as defaultParseTimespanOptions,\n} from '../parseTimespan/parseTimespan';\n\nexport type ParsedTimespanList<TOptions> = TOptions extends { timespanAsList?: true }\n ? ParsedTimespan<TOptions>[]\n : TOptions extends { flat?: true; onlyGeneric?: true | undefined } | { onlyGeneric?: true }\n ? ParsedTimespan<TOptions>\n : {\n [timespanKey: string]: ParsedTimespan<TOptions>[];\n };\n\nexport interface ParseTimespanListOptions extends ParseTimespanOptions {\n /** Return timespans as list */\n timespanAsList?: boolean;\n /** String to join timespans with (defaults to '_') */\n joinTimespan?: string;\n /** Sort timespanList by ascending start then end time */\n sortTimespan?: boolean;\n /** Return a flat representation - only one timespan with groups/fields named the same as single - of the timespan list (Note: timespans/fields/groups can be overridden) */\n flat?: boolean;\n /** Flatten timespans to one object with generic timespan having highest priority (Note: fields/groups might be overridden) */\n flatTimespan?: boolean;\n}\n\nexport const defaultOptions: ParseTimespanListOptions = {\n ...defaultParseTimespanOptions,\n timespanAsList: false,\n joinTimespan: '_',\n sortTimespan: false,\n flat: false,\n flatTimespan: undefined,\n};\n/**\n * Parses timespanList according to specified options.\n * The attributes can be targeted for each sub-type.\n *\n * @param timespanList - A Vidicore metadata timespan list\n * @param options - Options which change how the metadataType is parsed.\n * @returns Timespan list parsed according to options\n *\n * @see {@link parseTimespan} for more info\n *\n * @category Metadata\n */\nexport const parseTimespanList = <\n TOptions extends ParseTimespanListOptions = ParseTimespanListOptions,\n>(\n timespanList: MetadataType['timespan'],\n options?: TOptions,\n): ParsedTimespanList<TOptions> => {\n const parseTimespanListOptions: ParseTimespanListOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { timespanAsList, joinTimespan, sortTimespan, flat, flatTimespan, ...otherOptions } =\n parseTimespanListOptions;\n\n const parseTimespanOptions = { flat, ...otherOptions };\n\n if (sortTimespan) timespanList.sort(sortTimespanList);\n\n const shouldFlatten =\n (flatTimespan !== undefined ? flatTimespan === true : flat === true) &&\n timespanAsList === false;\n\n const output: {\n [name: string]: ParsedTimespan<TOptions> | ParsedTimespan<TOptions>[];\n } = {};\n timespanList?.forEach((timespan) => {\n const { start, end } = timespan;\n const key = shouldFlatten ? 'flat' : [start, end].join(joinTimespan);\n const parsedTimespan = parseTimespan<TOptions>(timespan, parseTimespanOptions as TOptions);\n const existingParsedTimespans = output[key];\n if (!existingParsedTimespans) output[key] = parsedTimespan;\n else if (shouldFlatten) {\n if (start === '-INF' && end === '+INF') {\n output[key] = { ...asSingle(existingParsedTimespans), ...parsedTimespan };\n } else {\n output[key] = { ...parsedTimespan, ...asSingle(existingParsedTimespans) };\n }\n } else output[key] = [...asArray(existingParsedTimespans), parsedTimespan];\n });\n\n if (timespanAsList === true) {\n return Object.values(output) as ParsedTimespanList<TOptions>;\n }\n\n if (shouldFlatten) {\n return Object.values(output).pop() as ParsedTimespanList<TOptions>;\n }\n\n return output as ParsedTimespanList<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { parseTimespanList } from '../parseTimespanList';\nimport {\n ParsedTimespanList,\n ParseTimespanListOptions,\n defaultOptions as defaultParseTimespanListOptions,\n} from '../parseTimespanList/parseTimespanList';\n\nexport type ParsedMetadataAttributes = Partial<\n Omit<MetadataType, 'timespan' | 'revision'> & {\n revision?: string[];\n }\n>;\n\nexport type ParsedMetadataType<TOptions> = (TOptions extends { timespanAsList?: true }\n ? {\n timespan: ParsedTimespanList<TOptions>;\n }\n : TOptions extends { flat?: true }\n ? ParsedTimespanList<TOptions>\n : {\n [timespanKey: string]: ParsedTimespanList<TOptions>;\n }) &\n (TOptions extends { includeMetadataAttributes?: true | string[] }\n ? ParsedMetadataAttributes\n : {});\n\nexport interface ParseMetadataTypeOptions extends ParseTimespanListOptions {\n /** Include metadata attributes (`true` for all) */\n includeMetadataAttributes?: boolean | (keyof ParsedMetadataAttributes)[];\n /** Flatten timespans, groups and fields (Note: keys might be overridden) */\n flat?: boolean;\n}\n\nexport const defaultOptions: ParseMetadataTypeOptions = {\n ...defaultParseTimespanListOptions,\n includeMetadataAttributes: false,\n flat: false,\n};\n\n/**\n * Parses MetadataType according to specified options\n *\n * @remarks\n * Be aware that you need to take into account that the returned groups and fields can be an array if it has multiple values or groups/fields with same name.\n * If you are certain your metadata type won't return multiple groups/fields/values with same name or don't mind that they _might_ be overridden:\n * you can use the option `flat` along with `joinValue` or `arrayOnSingleValue: false`.\n *\n * @param metadataType - A MetadataType from VidiCore\n * @param options - Options which change how the metadataType is parsed\n * @returns Metadata object parsed according to options\n *\n * @see {@link parseTimespanList} for more info\n *\n * @category Metadata\n */\nfunction parseMetadataType<TOptions extends ParseMetadataTypeOptions = ParseMetadataTypeOptions>(\n metadataType: MetadataType,\n options?: TOptions,\n): ParsedMetadataType<TOptions> {\n const parseMetadataTypeOptions: ParseMetadataTypeOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { includeMetadataAttributes, flat } = parseMetadataTypeOptions;\n const { timespan: timespanList = [], ...attributes } = metadataType || {};\n\n const parseTimespanListOptions: ParseTimespanListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseTimespanListOptions).includes(key)) {\n if (\n ['onlyGeneric', 'overrideGroup', 'overrideField'].includes(key) &&\n (value !== undefined ? value : flat === true)\n ) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n\n const parsedTimespanList = parseTimespanList<TOptions>(\n timespanList,\n parseTimespanListOptions as TOptions,\n );\n\n const metadataAttributes: ParsedMetadataAttributes =\n (includeMetadataAttributes === true && {\n ...attributes,\n ...(attributes.revision ? { revision: attributes.revision.split(',') } : {}),\n }) ||\n (Array.isArray(includeMetadataAttributes) &&\n Object.fromEntries(\n Object.entries(attributes)\n .map(([key, value]) => {\n if (includeMetadataAttributes.includes(key as keyof ParsedMetadataAttributes)) {\n return [\n key,\n key === 'revision' && typeof value === 'string' ? value.split(',') : value,\n ];\n }\n return undefined;\n })\n .filter((o) => !!o),\n )) ||\n {};\n\n return {\n ...metadataAttributes,\n ...(parseTimespanListOptions?.timespanAsList\n ? { timespan: parsedTimespanList }\n : parsedTimespanList),\n } as ParsedMetadataType<TOptions>;\n}\n\nexport { parseMetadataType };\n","import { SimpleMetadataType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\n\n/**\n * Parse simple (key/value) metadata\n *\n * Not indexed metadata, available on almost all entities (storages, library, user, group, etc...)\n *\n * @param simpleMetadataType A VidiCore simple metadata object\n * @returns A parsed simple metadata object\n *\n * @category Metadata\n */\nexport const parseSimpleMetadataType = (\n simpleMetadataType: SimpleMetadataType,\n): {\n [key: string]: string;\n} => {\n const { field = [] } = simpleMetadataType || {};\n return parseKeyValuePairTypes(field);\n};\n","export type ConstantTimeBaseKey =\n | 'PAL'\n | 'NTSC'\n | 'NTSC30'\n | '29.97'\n | '59.94'\n | '23.976'\n | '23.98';\n\nexport const MAP_CONSTANT_TO_DEN_NUM: {\n [name in ConstantTimeBaseKey]: { denominator: number; numerator: number };\n} = {\n PAL: { denominator: 25, numerator: 1 },\n NTSC: { denominator: 30000, numerator: 1001 },\n NTSC30: { denominator: 30, numerator: 1 },\n 29.97: { denominator: 30000, numerator: 1001 },\n 59.94: { denominator: 60000, numerator: 1001 },\n 23.976: { denominator: 48000, numerator: 2002 },\n 23.98: { denominator: 48000, numerator: 2002 },\n};\n\nexport const TIME_BASE_CONSTANTS = Object.keys(MAP_CONSTANT_TO_DEN_NUM) as ConstantTimeBaseKey[];\n","import { TimeBaseType } from '@vidispine/types';\n\nimport { MAP_CONSTANT_TO_DEN_NUM } from '../_consts';\n\nexport type TimeBaseInput = {\n /** The numerator for the TimeBase */\n numerator?: number | string;\n /** The denominator for the TimeBase */\n denominator?: number | string;\n};\n\nexport const defaultOptions = {\n toText: {\n constant: false,\n fraction: false,\n },\n toRate: {\n fixed: true,\n rounded: false,\n },\n};\n\n/**\n * TimeBase class representing the TimeBaseType in VidiCore\n *\n * For more info, see the [Time bases section in VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-bases)\n *\n * @category Time\n */\nexport class TimeBase {\n /** The numerator for the TimeBase */\n numerator: number = 1;\n\n /** The denominator for the TimeBase */\n denominator: number = 1;\n\n /**\n * Constructor for TimeBase\n *\n * @param timeBaseType A TimeBaseType object\n */\n constructor(timeBaseType?: TimeBaseInput) {\n const { numerator = 1, denominator = 1 } = timeBaseType || {};\n this.numerator = Number(numerator);\n this.denominator = Number(denominator);\n }\n\n /**\n * Get TimeBase in a constant representation (e.g. \"PAL\") if possible, otherwise undefined\n * @returns Constant representation of the TimeBase\n */\n toConstant(): string {\n let constant: string;\n // If multiple equal den/num, it selects first in MAP_CONSTANT_TO_DEN_NUM\n Object.entries(MAP_CONSTANT_TO_DEN_NUM).find((timeBaseConstant) => {\n const [thisTimeBaseText, thisTimeBaseType] = timeBaseConstant;\n const { numerator, denominator } = thisTimeBaseType;\n if (numerator === this.numerator && denominator === this.denominator) {\n constant = thisTimeBaseText;\n return true;\n }\n return false;\n });\n return constant;\n }\n\n /**\n * Get TimeBase as a VidiCore TimeBaseType string\n *\n * @remarks\n * Default format: denominator(:numerator if > 1)\n *\n * `constant` has precedence over `fraction` if both are true (e.g. NTSC > 30000:1001)\n *\n * @param options For how to display it as text\n * @returns Text representation of the TimeBase\n */\n toText(options?: {\n /** Show time base as constant (e.g. PAL) */\n constant?: boolean;\n /** Show time base as fraction (25:1) even when numerator is 1 */\n fraction?: boolean;\n }): string {\n const { constant, fraction } = { ...defaultOptions.toText, ...options };\n if (constant) {\n const timeBaseText = this.toConstant();\n if (timeBaseText) return timeBaseText;\n }\n if (fraction || this.numerator > 1) {\n const timeBaseText = [this.denominator, this.numerator].join(':');\n return timeBaseText;\n }\n const timeBaseText = String(this.denominator);\n return timeBaseText;\n }\n\n /**\n * Output TimeBase as frame rate (by default max 16 decimal places)\n *\n * @remarks\n * Default format: rate with two decimals if needed (i.e. decimals are > 0)\n *\n * `rounded` has precedence over `fixed`\n *\n * @param options On how to return the rate\n *\n * @return Rate of the TimeBase\n */\n toRate(options?: {\n /** Rounded to nearest integer */\n rounded?: boolean;\n /** Amount of decimal places\n * - `true` two decimal places\n * - `false` max amount of decimal places\n * - `number` that amount of decimal places\n */\n fixed?: boolean | number;\n }) {\n const rate = this.denominator / this.numerator;\n if (Number.isInteger(rate)) {\n return rate;\n }\n const { rounded, fixed } = { ...defaultOptions.toRate, ...(options || {}) };\n if (rounded) {\n return Math.round(rate);\n }\n if (fixed === true || typeof fixed === 'number') {\n return Number(rate.toFixed(typeof fixed === 'boolean' ? 2 : fixed));\n }\n\n return rate;\n }\n\n /**\n * Get TimeBase in a object representation\n *\n * @returns TimeBase as `{denominator, numerator}` object\n */\n toObject(): TimeBaseType {\n return {\n denominator: this.denominator,\n numerator: this.numerator,\n };\n }\n\n /**\n * @deprecated Use {@link TimeBase#toObject | toObject} instead\n *\n * @returns TimeBase as `{denominator, numerator}` object\n */\n toJson(): TimeBaseType {\n // eslint-disable-next-line no-console\n console.warn('Deprecated - use toObject instead');\n return this.toObject();\n }\n}\n","import { ConstantTimeBaseKey, MAP_CONSTANT_TO_DEN_NUM, TIME_BASE_CONSTANTS } from '../_consts';\nimport { TimeBase } from '../TimeBase';\n\n/**\n * Format a string representation of a time base to a TimeBase Instance\n *\n * @param timeBaseText The string to format to a TimeBase instance\n * @returns A TimeBase Instance\n *\n * @category Time\n */\nexport const formatTimeBaseText = (timeBaseText?: string | number) => {\n if (timeBaseText === undefined) {\n return new TimeBase();\n }\n if (typeof timeBaseText === 'number') {\n return new TimeBase({ denominator: timeBaseText });\n }\n if (typeof timeBaseText === 'string' && timeBaseText.includes(':')) {\n const [denominator, numerator] = timeBaseText.split(':');\n return new TimeBase({ denominator, numerator });\n }\n if (TIME_BASE_CONSTANTS.includes(timeBaseText as ConstantTimeBaseKey)) {\n return new TimeBase(MAP_CONSTANT_TO_DEN_NUM[timeBaseText as ConstantTimeBaseKey]);\n }\n if (!['string', 'number'].includes(typeof timeBaseText) || Number.isNaN(Number(timeBaseText))) {\n throw new Error(\n `timeBaseText must be a number or ${TIME_BASE_CONSTANTS.join(',')} - is ${JSON.stringify(\n timeBaseText,\n )}`,\n );\n }\n return new TimeBase({ denominator: Number(timeBaseText) });\n};\n","import { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\n/**\n * Create a TimeBase instance of an object\n *\n * @param timeBase A TimeBase object\n * @returns A TimeBase instance\n *\n * @category Time\n */\nexport const formatTimeBaseType = (timeBase: TimeBaseInput) => new TimeBase(timeBase);\n","import { formatTimeBaseText } from '../formatTimeBaseText';\nimport { formatTimeBaseType } from '../formatTimeBaseType';\nimport { TimeBase, TimeBaseInput } from '../TimeBase/TimeBase';\n\n/**\n * Create a TimeBase Instance from a number, string or object representation of a time base\n *\n * @param timeBase Input to create time base from\n * @returns A TimeBase instance\n *\n * @category Time\n */\nexport const createTimeBase = (timeBase: TimeBaseInput | string | number) => {\n if (timeBase instanceof TimeBase) {\n return timeBase;\n }\n if (typeof timeBase === 'string' || typeof timeBase === 'number') {\n return formatTimeBaseText(timeBase);\n }\n return formatTimeBaseType(timeBase);\n};\n","import { TimeBase } from '../TimeBase';\n\n/**\n * @private\n *\n * Drops 4 frames (0-3) for 59.97 and 2 frames (0-1) for 29.97/NTSC\n *\n * @param timeBase Time base to get amount of frames to drop for\n * @returns Amount of frame drops for specified time base, false if no frame drops\n */\nexport const getAmountOfFrameDrops = (timeBase: TimeBase): number | false => {\n const timeBaseConstant = timeBase.toConstant();\n return (\n (timeBaseConstant === '59.94' && 4) ||\n (['NTSC', '29.97'].includes(timeBaseConstant) && 2) ||\n false\n );\n};\n","import { TimeBase } from '../TimeBase';\n\nimport { getAmountOfFrameDrops } from './getAmountOfFrameDrops';\n\n/**\n * @private\n *\n * Check if TimeBase drops frames\n *\n * @param timeBase TimeBase Instance to check\n * @returns true if time base drops frames, false otherwise\n */\nexport const isDropFrameTimeBase = (timeBase: TimeBase) => getAmountOfFrameDrops(timeBase) > 0;\n","import { getAmountOfFrameDrops } from '../_utils/getAmountOfFrameDrops';\nimport { isDropFrameTimeBase } from '../_utils/isDropFrameTimeBase';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\nconst getDroppedFramesFromSamples = (timeCode: TimeCode) => {\n const { samples, timeBase } = timeCode;\n const amountOfFrameDrops = getAmountOfFrameDrops(timeBase);\n if (!amountOfFrameDrops) return 0;\n\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const oneMinuteNotDroppedFrames = 60 * roundedFrameRate;\n const amountOfFramesToDropPerMinute = 60 * roundedFrameRate - amountOfFrameDrops;\n const tenMinuteFrames =\n 10 * (oneMinuteNotDroppedFrames - amountOfFrameDrops) + amountOfFrameDrops;\n const amountOfTenMinuteChunks = Math.floor((samples + 1) / tenMinuteFrames);\n const minuteRemainder = Math.max(\n 0,\n ((samples + 1) % tenMinuteFrames) - oneMinuteNotDroppedFrames,\n );\n const amountOfOneMinuteReminderChunks = Math.floor(\n minuteRemainder / amountOfFramesToDropPerMinute,\n );\n const frameRemainder = minuteRemainder % amountOfFramesToDropPerMinute;\n const amountOfFrameRemainderChunks = frameRemainder > 0 ? amountOfFrameDrops : 0;\n\n return (\n amountOfTenMinuteChunks * 9 * amountOfFrameDrops +\n amountOfOneMinuteReminderChunks * amountOfFrameDrops +\n amountOfFrameRemainderChunks\n );\n};\n\nexport type TimeCodeInput = {\n /** Amount of samples for the time code */\n samples?: number | string;\n /** The time base for the time code */\n timeBase?: string | TimeBaseInput | TimeBase;\n};\n\nexport type TimeCodeInputOptions = {\n /** If time code is dropFrame or not (by default checks timeBase) */\n dropFrame?: boolean;\n /** Separator for frame in smpte output (default \":\" for non-drop-frame and \";\" for dropFrame) */\n frameSeparator?: string;\n};\n\nexport const defaultOptions: {\n conformTimeBase: TimeCodeInputOptions;\n toText: {\n constant: boolean;\n fraction: boolean;\n includeTimeBaseForSeconds: boolean;\n };\n toDuration: {\n format: string;\n };\n} = {\n conformTimeBase: {\n dropFrame: undefined,\n frameSeparator: undefined,\n },\n toText: {\n constant: false,\n fraction: false,\n includeTimeBaseForSeconds: false,\n },\n toDuration: {\n format: undefined,\n },\n};\n\n/**\n * TimeCode class representing the TimeCodeType in VidiCore\n *\n * For more info, see the [Time Codes section of VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-codes)\n *\n * @category Time\n */\nexport class TimeCode {\n /** Amount of samples for the time code */\n samples: number = 0;\n\n /** The time base for the time code */\n timeBase: TimeBase = new TimeBase();\n\n /** If time code is dropFrame or not (by default checks timeBase) */\n dropFrame?: boolean;\n\n /** Separator for frame in smpte output (default \":\" for non-drop-frame and \";\" for dropFrame) */\n frameSeparator?: string;\n\n /**\n * Constructor for TimeCode\n *\n * @param timeCodeType Object to create TimeCode of\n * @param options Options for the timeCode\n */\n constructor(timeCodeType: TimeCodeInput, options?: TimeCodeInputOptions) {\n const { samples, timeBase } = timeCodeType || {};\n\n if (samples !== undefined) {\n if (typeof samples === 'number') {\n this.samples = samples;\n } else if (typeof samples === 'string') {\n if (samples === '-INF') {\n this.samples = -Infinity;\n } else if (samples === '+INF') {\n this.samples = Infinity;\n } else {\n this.samples = Number(samples);\n }\n } else {\n throw new Error(`samples is not number/string/-Inf/+Inf is: ${samples}`);\n }\n }\n if (timeBase !== undefined) {\n if (timeBase instanceof TimeBase) {\n this.timeBase = timeBase;\n } else {\n this.timeBase = createTimeBase(timeBase);\n }\n }\n this.dropFrame = options?.dropFrame ?? isDropFrameTimeBase(this.timeBase);\n this.frameSeparator = options?.frameSeparator ?? (this.dropFrame ? ';' : ':');\n }\n\n /**\n * Return this TimeCode added with the supplied timeCodeType\n * - If time bases differ, it will retain the time base of this TimeCode instance\n * - If supplied time code has a more granular time base, it will round down exceeding samples (hasn't reached that sample yet)\n *\n * @remarks\n * If you don't want to \"lose\" frames in the manner described above, make sure time code you're operating on has higher time base granularity\n *\n * To exemplify:\n * - \"51@50\".add(\"25@25\") => \"101@50\"\n * - while \"25@25\".add(\"51@50\") => \"50@25\"\n *\n * @param timeCode A TimeCode instance you want to add with\n * @returns A new TimeCode instance with the addition applied\n */\n add(timeCode: TimeCode) {\n if (!timeCode?.timeBase || timeCode?.samples === undefined) {\n throw Error('Invalid timeCodeType, cannot be added');\n }\n const { numerator, denominator } = timeCode?.timeBase || {};\n\n let conformedTimeCode = timeCode;\n if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {\n conformedTimeCode = timeCode.conformTimeBase(this.timeBase);\n }\n const { samples } = conformedTimeCode;\n return new TimeCode({ samples: this.samples + samples, timeBase: this.timeBase });\n }\n\n /**\n * Return this TimeCode subtracted with the supplied timeCodeType\n * - If time bases differ, it will retain the time base of the instance time code\n * - If supplied time code has a more granular time base, it will round down exceeding samples (hasn't reached that sample yet)\n *\n * @remarks\n * If you don't want to \"lose\" frames in the manner described above, make sure time code you're operating on has higher time base granularity\n\n * To exemplify:\n * - \"101@50\".subtract(\"25@25\") => \"51@50\"\n * - while \"50@25\".subtract(\"51@50\") => \"25@25\"\n *\n * @param timeCode A TimeCode instance you want to subtract with\n * @returns A new TimeCode instance with the subtraction applied\n */\n subtract(timeCode: TimeCode) {\n if (!timeCode?.timeBase || timeCode?.samples === undefined) {\n throw Error('Invalid timeCodeType, cannot be subtracted');\n }\n const { timeBase: { numerator, denominator } = {} } = timeCode;\n let conformedTimeCode = timeCode;\n if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {\n conformedTimeCode = timeCode.conformTimeBase(this.timeBase);\n }\n const { samples } = conformedTimeCode;\n return new TimeCode({ samples: this.samples - samples, timeBase: this.timeBase });\n }\n\n /**\n * Creates a new TimeCode instance with specified timeBase and samples adjusted to that.\n *\n * @remarks\n * If it conforms to a less granular time base - it will floor samples (hasn't reached that sample yet)\n * - e.g. \"51@50\".conformTo(\"PAL\") => \"25@PAL\" (not \"26@PAL\")\n *\n * @param timeBase The TimeBase it should conform the TimeCode to\n * @param options Explicitly set TimeCode options, by default these are derived from `timeBase`\n * @returns A new TimeCode instance with the conformTo timeBase applied\n */\n conformTimeBase(timeBase: TimeCodeInput['timeBase'], options?: TimeCodeInputOptions) {\n const conformToTimeBase = timeBase instanceof TimeBase ? timeBase : createTimeBase(timeBase);\n const samples = Math.floor(\n this.samples /\n (this.timeBase.toRate({ fixed: false }) / conformToTimeBase.toRate({ fixed: false })),\n );\n\n const mergedOptions = { ...defaultOptions.conformTimeBase, ...(options || {}) };\n\n return new TimeCode(\n {\n samples,\n timeBase: conformToTimeBase,\n },\n mergedOptions,\n );\n }\n\n /**\n * Get TimeCode as a text representation\n *\n * @remarks\n * Default format: `samples@denominator[:numerator (if > 1)])`\n *\n * `constant` has precedence over `fraction` if both are true\n *\n * @param options Options for how to format text\n * @returns Text representation of TimeCode\n */\n toText(options?: {\n /** Include time base even if seconds (i.e. append @1 or @1:1) */\n includeTimeBaseForSeconds?: boolean;\n /** show as constant (e.g. @PAL) */\n constant?: boolean;\n /** show as fraction (e.g. @25:1) */\n fraction?: boolean;\n }) {\n let timeCodeText = `${this.samples}`;\n const mergedOptions = { ...defaultOptions.toText, ...(options || {}) };\n const timeBaseText = this.timeBase.toText(mergedOptions);\n if (options?.includeTimeBaseForSeconds || !['1', '1:1'].includes(timeBaseText)) {\n timeCodeText = [this.samples, timeBaseText].join('@');\n }\n return timeCodeText;\n }\n\n /**\n * Get TimeCode in a units object representation\n *\n * @returns Units (time and frames) for the time code\n */\n toUnits(): {\n hours: number;\n minutes: number;\n seconds: number;\n frames: number;\n } {\n const totalSamples = this.samples + (this.dropFrame ? getDroppedFramesFromSamples(this) : 0);\n let roundedFrameRate = this.timeBase.toRate({ rounded: true });\n\n // Calculated without drop-frame but with 2 decimal places\n if (['23.976', '23.98'].includes(this.timeBase.toConstant())) {\n roundedFrameRate = this.timeBase.toRate({ fixed: true });\n }\n\n const hours = Math.floor(totalSamples / (3600 * roundedFrameRate));\n const minutes = Math.floor(totalSamples / (60 * roundedFrameRate)) % 60;\n const seconds = Math.floor(totalSamples / roundedFrameRate) % 60;\n const frames = Math.floor(totalSamples % roundedFrameRate);\n return {\n hours,\n minutes,\n seconds,\n frames,\n };\n }\n\n /**\n * Get TimeCode in a time object representation\n *\n * Note: \"milliseconds\" is rounded down - use \"partialSeconds\" for another representation\n *\n * @returns Time for the time code\n */\n toTime(): {\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n partialSeconds: number;\n } {\n const totalSamples = this.samples + getDroppedFramesFromSamples(this);\n const { hours, minutes, seconds } = this.toUnits();\n const roundedFrameRate = this.timeBase.toRate({ rounded: true }) as number;\n const framesPrecise = totalSamples % roundedFrameRate;\n const milliseconds = Math.floor((1000 * framesPrecise) / roundedFrameRate);\n const partialSeconds = framesPrecise / roundedFrameRate;\n return {\n hours,\n minutes,\n seconds,\n milliseconds,\n partialSeconds,\n };\n }\n\n /**\n * Get TimeCode in a seconds representation\n *\n * @returns Total seconds for the time code\n */\n toSeconds() {\n const { numerator, denominator } = this.timeBase;\n return Math.round(1000 * +((this.samples * numerator) / denominator)) / 1000;\n }\n\n /**\n * Get TimeCode in a duration representation\n *\n * The time unit keys for the format string are:\n * - `h` for hour\n * - `m` for minute\n * - `s` for seconds\n * - `S` for milliseconds\n * - Any other char will be kept in the duration output string\n *\n * Note: Add several consecutive chars for zero padding.\n *\n * By default it:\n * - uses colon delimiter (e.g. for format \"hhmmss\")\n * - shows \"m:ss\" or \"h:mm:ss\" if format is undefined\n *\n * @param options Options for how to display duration\n * @returns Duration representation of the TimeCode\n */\n toDuration(options?: {\n /** Specify format of duration string, (e.g. `hh:mm:ss.S` for \"01:23:04.5\") */\n format?: string;\n }) {\n const { format } = { ...defaultOptions.toDuration, ...(options || {}) };\n const { hours, ...rest } = this.toTime();\n let { minutes, seconds, milliseconds } = rest;\n if (!!format && typeof format !== 'string') {\n throw Error('format has to be a string');\n }\n\n const isBefore = (unit: string, units: string[]) =>\n !format.includes(unit) ||\n !units.some((u) => format.includes(u) && format.lastIndexOf(unit) > format.indexOf(u));\n if (\n !!format &&\n !(isBefore('h', ['m', 's', 'S']) && isBefore('m', ['s', 'S']) && isBefore('s', ['S']))\n ) {\n throw Error('format order is unsupported (has to be h, m, s then S)');\n }\n\n if (!format) {\n return `${\n hours > 0 ? `${hours}:${`${minutes}`.padStart(2, '0')}` : minutes\n }:${`${seconds}`.padStart(2, '0')}`;\n }\n\n const countConsecutiveChars = (i: number, arr: string[]) => {\n let j = i;\n while (arr[j] === arr[j + 1]) {\n j += 1;\n }\n return j - i + 1;\n };\n\n const timeUnitKeys = ['h', 'm', 's', 'S'];\n\n const output: string[] = [];\n [...format].forEach((c, i, arr) => {\n switch (c) {\n case 'h': {\n if (arr[i - 1] === 'h') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n output.push(`${hours}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push(':');\n }\n break;\n }\n case 'm': {\n if (arr[i - 1] === 'm') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('h')) {\n minutes += hours * 60;\n }\n output.push(`${minutes}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push(':');\n }\n break;\n }\n case 's': {\n if (arr[i - 1] === 's') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('m')) {\n seconds += minutes * 60;\n }\n output.push(`${seconds}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push('.');\n }\n break;\n }\n case 'S': {\n if (arr[i - 1] === 'S') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('s')) {\n milliseconds += seconds * 1000;\n }\n output.push(`${Math.round(milliseconds / 10 ** (3 - amount))}`.padStart(amount, '0'));\n break;\n }\n default:\n output.push(c);\n }\n });\n return output.join('');\n }\n\n /**\n * Get TimeCode in a smpte representation\n *\n * @returns Smpte representation of the TimeCode\n */\n toSmpte() {\n if (this.samples === -Infinity) return '00:00:00:00';\n const { hours, minutes, seconds, frames } = this.toUnits();\n const hhmmss = [\n hours.toFixed().padStart(2, '0'),\n minutes.toFixed().padStart(2, '0'),\n seconds.toFixed().padStart(2, '0'),\n ].join(':');\n\n const framePadLength = Math.max(2, `${this.timeBase.toRate({ rounded: true }) - 1}`.length);\n return [hhmmss, `${frames}`.padStart(framePadLength, '0')].join(this.frameSeparator);\n }\n\n /**\n * Get TimeCode as a VidiCore TimeCodeType object\n *\n * @returns TimeCode as `{ samples, timeBase }`\n */\n toObject() {\n return {\n samples: this.samples,\n timeBase: this.timeBase.toObject(),\n };\n }\n\n /**\n * @deprecated Use {@link TimeCode#toObject | toObject} instead\n *\n * @returns TimeCode as `{ samples, timeBase }`\n */\n toJson() {\n // eslint-disable-next-line no-console\n console.warn('Deprecated - use toObject instead');\n return this.toObject();\n }\n}\n","/* eslint-disable no-self-assign */\n\n/**\n * @private\n *\n * Using Euclid's algorithm\n *\n * @param num1 a number\n * @param num2 another number\n * @returns The greatest common divisor of num1 and num2\n */\nexport const getGreatestCommonDivisor = (num1: number, num2: number) => {\n let a = Math.abs(num1);\n let b = Math.abs(num2);\n while (a && b && a !== b) {\n if (a > b) {\n [a, b] = [a - b, b];\n } else {\n [a, b] = [a, b - a];\n }\n }\n return a || b;\n};\n","import { getGreatestCommonDivisor } from '../_utils/getGreatestCommonDivisor';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nexport interface FormatTimeCodeSecondsOptions extends TimeCodeInputOptions {\n /**\n * The TimeBase the output TimeCode should have\n *\n * Note: if unset and useGCD=false, denominator will be 10^(amount-of-decimals)\n */\n timeBase?: number | string | TimeBaseInput;\n /**\n * Samples and denominator are divided with GCD\n *\n * e.g. `1.04 => 104@100 => 26@25` (if no explicit `timeBase` is set)\n */\n useGCD?: boolean;\n}\n\nexport const defaultOptions: FormatTimeCodeSecondsOptions = {\n useGCD: false,\n timeBase: undefined,\n dropFrame: undefined,\n frameSeparator: undefined,\n};\n\n/**\n * Format seconds to TimeCode object\n *\n * @remarks\n * Input time base is always considered as 1:1 since it expects seconds as input\n *\n * Note: Max 15 digits accuracy (double precision float64), e.g.\n * - 10^6 seconds can have 10^9 decimals (nanosecond) precision\n * - 10^9 seconds can have 10^6 decimals (microsecond) precision\n * - 10^12 seconds can have 10^3 decimals (millisecond) precision\n *\n * @param seconds With or without decimals (\".\" and \",\" are both interpreted as decimal)\n * @param options Options for how to format the seconds to a TimeCode\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeSeconds = (\n seconds: string | number,\n options?: FormatTimeCodeSecondsOptions,\n) => {\n const { timeBase, useGCD = false, ...timeCodeOptions } = options || {};\n const secondsWithDot = `${seconds}`.replace(/,/g, '.');\n if (Number.isNaN(+secondsWithDot)) {\n throw new Error(`seconds must be digits, is ${seconds}`);\n }\n let denominator = 1;\n let samples;\n if (Number.isInteger(+secondsWithDot)) {\n samples = +secondsWithDot * denominator;\n } else {\n const [, ms] = secondsWithDot.split('.');\n const decimalPlaces = Math.min(ms?.length ?? 0, 16);\n denominator *= 10 ** decimalPlaces;\n samples = Math.round(Number(secondsWithDot) * denominator);\n }\n if (timeBase === undefined && useGCD) {\n const gcd = getGreatestCommonDivisor(denominator, samples);\n samples /= gcd;\n denominator /= gcd;\n }\n const timeCode = new TimeCode(\n { samples, timeBase: { denominator, numerator: 1 } },\n timeCodeOptions,\n );\n return timeBase !== undefined\n ? timeCode.conformTimeBase(createTimeBase(timeBase), timeCodeOptions)\n : timeCode;\n};\n","import { getAmountOfFrameDrops } from '../../_utils/getAmountOfFrameDrops';\nimport { TimeBase } from '../../TimeBase';\n\nconst getDroppedFramesFromSmpte = (\n [hh, mm, ss, ff]: [number, number, number, number],\n samples: number,\n timeBase: TimeBase,\n) => {\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const dropFrames = getAmountOfFrameDrops(timeBase);\n if (samples === 0 || !dropFrames) {\n return 0;\n }\n\n const shouldDropMinute = mm % 10 !== 0;\n const shouldDropSecond = shouldDropMinute && ss === 0;\n const hourFrames = hh * (3600 * roundedFrameRate - 54 * dropFrames);\n const minuteFrames = mm * 60 * roundedFrameRate - (mm - Math.ceil(mm / 10)) * dropFrames;\n const secondFrames = ss * roundedFrameRate - (shouldDropMinute && ss > 1 ? dropFrames : 0);\n\n if (shouldDropSecond && ff < dropFrames) {\n throw new Error(\n `Frame does not exist for ${timeBase.toConstant() || timeBase.toRate()} drop-frame`,\n );\n }\n\n const frameFrames = shouldDropSecond ? ff - dropFrames : ff;\n\n const samplesWithoutDroppedFrames = hourFrames + minuteFrames + secondFrames + frameFrames;\n\n return samples - samplesWithoutDroppedFrames;\n};\n\nexport const getSamplesFromSmpte = (\n smpteValues: [number, number, number, number],\n timeBase: TimeBase,\n dropFrame: boolean,\n) => {\n const [hh, mm, ss, ff] = smpteValues;\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const samples =\n hh * 3600 * roundedFrameRate + mm * 60 * roundedFrameRate + ss * roundedFrameRate + ff;\n return samples - (dropFrame ? getDroppedFramesFromSmpte(smpteValues, samples, timeBase) : 0);\n};\n","export const splitSmpte = (smpte: string) => {\n const [nonColonFrameSeparator] = smpte?.match(/[^0-9:\\-_]/) || [];\n\n let smpteValues: string[] = [];\n if (nonColonFrameSeparator) {\n const [hhmmss, ff] = smpte.split(nonColonFrameSeparator);\n smpteValues = [...hhmmss.split(':'), ff];\n } else {\n smpteValues = smpte.split(':');\n }\n if (smpteValues.length !== 4) {\n throw new Error('Invalid format, must be \"##:##:##:##');\n }\n if (smpteValues.some((n) => Number.isNaN(n))) {\n throw new Error('Invalid format, values must be numbers');\n }\n const smpteFrameSeparator = nonColonFrameSeparator || ':';\n return {\n smpteValues: smpteValues.map(Number) as [number, number, number, number],\n smpteFrameSeparator,\n };\n};\n","import { isDropFrameTimeBase } from '../_utils/isDropFrameTimeBase';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nimport { getSamplesFromSmpte } from './_utils/getSamplesFromSmpte';\nimport { splitSmpte } from './_utils/splitSmpte';\n\nconst EXCEEDING_OPTIONS = ['error', 'add', 'ignore'];\n\nexport interface FormatTimeCodeSmpteOptions extends TimeCodeInputOptions {\n /** TimeBase of smpte (and consequently TimeBase of output TimeCode) */\n timeBase?: number | string | TimeBaseInput;\n /** How to handle exceeding values (default `error`) */\n exceedingMode?: 'add' | 'ignore' | 'error';\n}\n\nexport const defaultOptions: FormatTimeCodeSmpteOptions = {\n exceedingMode: 'error',\n timeBase: undefined,\n dropFrame: undefined,\n frameSeparator: undefined,\n};\n\n/**\n * Format smpte text to a TimeCode Instance\n *\n * Options for `exceedingMode`:\n * - `add` will be overflow to higher unit (e.g. PAL and 00:00:00:25 => 00:00:01:00)\n * - `ignore` will be truncated (e.g. PAL and 00:00:00:25 => 00:00:00:24)\n * - `error` will throw error (e.g. PAL and 00:00:00:25 => Error)\n *\n * @param smpte String representation of smpte\n * @param options Options for creating the time code from smpte\n * @returns TimeCode instance created from smpte string\n *\n * @category Time\n */\nexport const formatTimeCodeSmpte = (smpte: string, options?: FormatTimeCodeSmpteOptions) => {\n const { exceedingMode, timeBase, ...timeCodeOptions } = { ...defaultOptions, ...options } || {};\n if ([null, undefined].includes(smpte)) {\n throw new Error(`smpte cannot be undefined or null`);\n }\n if (typeof smpte !== 'string') {\n throw new Error(`smpte must be a string, is ${JSON.stringify(smpte)}`);\n }\n\n const { smpteValues, smpteFrameSeparator } = splitSmpte(smpte);\n const timeBaseInstance = createTimeBase(timeBase);\n\n const mergedOptions = {\n ...timeCodeOptions,\n frameSeparator: timeCodeOptions?.frameSeparator || smpteFrameSeparator,\n ...(timeCodeOptions?.dropFrame === undefined\n ? {\n dropFrame:\n timeBase !== undefined\n ? isDropFrameTimeBase(timeBaseInstance)\n : [';', ','].includes(smpteFrameSeparator),\n }\n : {}),\n };\n\n const roundedFrameRate = timeBaseInstance.toRate({ rounded: true });\n const maxFrame = Math.max(0, roundedFrameRate - 1);\n\n if (smpteValues.some((v) => v < 0)) {\n throw new Error('Negative values are not supported');\n }\n\n let samples;\n switch (exceedingMode) {\n case 'error': {\n const [hours, minutes, seconds, frames] = smpteValues;\n if (hours >= 100) {\n throw Error('Minutes has to be less than 60');\n }\n if (minutes >= 60) {\n throw Error('Minutes has to be less than 60');\n }\n if (seconds >= 60) {\n throw Error('Seconds has to be less than 60');\n }\n if (frames > maxFrame) {\n throw Error(`Frames has to be less or equal to ${maxFrame}`);\n }\n samples = getSamplesFromSmpte(smpteValues, timeBaseInstance, mergedOptions?.dropFrame);\n break;\n }\n case 'ignore': {\n const [hours, minutes, seconds, frames] = smpteValues;\n const truncatedSmpteValues: [number, number, number, number] = [\n Math.min(100, hours),\n Math.min(59, minutes),\n Math.min(59, seconds),\n Math.min(maxFrame, frames),\n ];\n samples = getSamplesFromSmpte(\n truncatedSmpteValues,\n timeBaseInstance,\n mergedOptions?.dropFrame,\n );\n break;\n }\n case 'add': {\n samples = getSamplesFromSmpte(smpteValues, timeBaseInstance, mergedOptions?.dropFrame);\n break;\n }\n default: {\n throw new Error(`Invalid exceedingMode, options are ${JSON.stringify(EXCEEDING_OPTIONS)}`);\n }\n }\n\n return new TimeCode({ samples, timeBase: timeBaseInstance }, mergedOptions);\n};\n","import { createTimeBase } from '../createTimeBase';\nimport { formatTimeBaseText } from '../formatTimeBaseText';\nimport { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nexport interface FormatTimeCodeTextOptions extends TimeCodeInputOptions {\n /** The time base the returned TimeCode should have */\n timeBase?: number | string | TimeBaseInput;\n}\n\nexport const defaultOptions: FormatTimeCodeTextOptions = {\n timeBase: undefined,\n dropFrame: undefined,\n frameSeparator: undefined,\n};\n\n/**\n * Format text to a TimeCode instance\n *\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeText = (\n /* A time code text (e.g. \"25@PAL\")\n *\n * Defaults to \"seconds\" (i.e. \"<seconds>@1:1\") if supplied as number or string without time base\n */\n timeCodeText?: number | string,\n // Options for how to format\n options?: FormatTimeCodeTextOptions,\n): TimeCode => {\n const { timeBase, ...timeCodeOptions } = { ...defaultOptions, ...options } || {};\n let timeCodeObject: TimeCodeInput;\n\n if (timeCodeText === undefined) {\n timeCodeObject = { samples: 0 };\n } else if (typeof timeCodeText === 'number') {\n timeCodeObject = { samples: timeCodeText };\n } else if (timeCodeText.includes('@')) {\n const [samplesString, timeBaseText] = timeCodeText.split('@');\n const samples = Number(samplesString);\n timeCodeObject = { samples, timeBase: formatTimeBaseText(timeBaseText) };\n } else if (timeCodeText === '-INF') {\n timeCodeObject = { samples: -Infinity };\n } else if (timeCodeText === '+INF') {\n timeCodeObject = { samples: Infinity };\n } else {\n timeCodeObject = { samples: Number(timeCodeText) };\n }\n\n if (\n Number.isNaN(timeCodeObject?.samples) ||\n (timeCodeObject.timeBase && !(timeCodeObject.timeBase instanceof TimeBase))\n ) {\n throw new Error(`timeCodeText must be a number or sample@timeBase - is ${timeCodeText}`);\n }\n const timeCode = new TimeCode(timeCodeObject, timeCodeOptions);\n\n return timeBase ? timeCode.conformTimeBase(createTimeBase(timeBase), timeCodeOptions) : timeCode;\n};\n","import { TimeCode } from '../TimeCode';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nexport const defaultOptions: TimeCodeInputOptions = {\n dropFrame: undefined,\n frameSeparator: undefined,\n};\n\n/**\n * Format an object to a TimeCode instance\n *\n * @param timeCode To create TimeCode instance of\n * @param options For the TimeCode constructor\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeType = (timeCode: TimeCodeInput, options?: TimeCodeInputOptions) =>\n new TimeCode(timeCode, { ...defaultOptions, ...options });\n","import { formatTimeCodeSeconds } from '../formatTimeCodeSeconds';\nimport { FormatTimeCodeSecondsOptions } from '../formatTimeCodeSeconds/formatTimeCodeSeconds';\nimport { formatTimeCodeSmpte } from '../formatTimeCodeSmpte';\nimport { FormatTimeCodeSmpteOptions } from '../formatTimeCodeSmpte/formatTimeCodeSmpte';\nimport { formatTimeCodeText } from '../formatTimeCodeText';\nimport { FormatTimeCodeTextOptions } from '../formatTimeCodeText/formatTimeCodeText';\nimport { formatTimeCodeType } from '../formatTimeCodeType';\nimport { TimeCode, TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nconst hasSmpteFormat = (s: string) => !!s.match(/^(\\d\\d+):(\\d\\d+):(\\d\\d+)(:|;|\\.|,)(\\d\\d+)$/);\nconst isNumber = (s: string | number) => !Number.isNaN(Number(s));\n\nexport type CreateTimeCodeOptions =\n | TimeCodeInputOptions\n | FormatTimeCodeSmpteOptions\n | FormatTimeCodeSecondsOptions\n | FormatTimeCodeTextOptions;\n\n/**\n * Create a TimeCode instance from smpte, seconds/samples, timeCode object or string\n *\n * @param timeCode Smpte, seconds/samples, timeCode object or string\n * @param options For the format functions\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const createTimeCode = (\n timeCode: TimeCodeInput | string | number,\n options?: CreateTimeCodeOptions,\n) => {\n if (timeCode instanceof TimeCode) {\n return timeCode;\n }\n if (typeof timeCode !== 'string' && typeof timeCode !== 'number')\n // TimeCode object\n return formatTimeCodeType(timeCode, options);\n // SMPTE\n if (typeof timeCode === 'string' && hasSmpteFormat(timeCode))\n return formatTimeCodeSmpte(timeCode, options as FormatTimeCodeSmpteOptions);\n if (['string', 'number'].includes(typeof timeCode) && isNumber(timeCode))\n return formatTimeCodeSeconds(timeCode, options as FormatTimeCodeSecondsOptions);\n if (typeof timeCode === 'string') {\n return formatTimeCodeText(timeCode, options as FormatTimeCodeTextOptions);\n }\n return undefined;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { formatTimeCodeText } from '../../time';\nimport { parseTimespanList } from '../parseTimespanList';\n\nfunction timeToCueTime({ hours = 0, minutes = 0, seconds = 0, partialSeconds = 0 }) {\n const hourStr = hours.toFixed().padStart(2, '0');\n const minStr = minutes.toFixed().padStart(2, '0');\n const secondsStr = seconds.toFixed().padStart(2, '0');\n const partialStr = (partialSeconds * 10).toFixed().padStart(3, '0');\n return `${hourStr}:${minStr}:${secondsStr}.${partialStr}`;\n}\n\nexport type MetadataTypeToWebVttOptions = {\n /** Name of group containing subtitle field/text */\n subtitleGroup?: string;\n /** Name of field (text) to use for the subtitles */\n subtitleField?: string;\n};\n\nexport const defaultOptions: MetadataTypeToWebVttOptions = {\n subtitleGroup: 'stl_subtitle',\n subtitleField: 'stl_text',\n};\n\n/**\n * Convert metadata subtitle groups to WebVtt subtitles\n *\n * @param metadataType - Vidicore metadata object (should include subtitleGroup and subtitleField)\n * @param options - options for how to map subtitle group\n * @returns WebVtt subtitles\n *\n * @category Metadata\n */\nexport const metadataTypeToWebVtt = (\n metadataType: MetadataType,\n options?: MetadataTypeToWebVttOptions,\n) => {\n const { subtitleGroup, subtitleField } = { ...defaultOptions, ...(options || {}) };\n const { timespan: timespanList = [] } = metadataType || {};\n if (timespanList.length === 0) return '';\n const parsedTimespans = parseTimespanList(timespanList, {\n includeTimespanAttributes: true,\n sortTimespan: true,\n timespanAsList: true,\n overrideGroup: true,\n joinValue: ',',\n });\n const vttCues = parsedTimespans.map((timespan) => {\n const {\n start: startText,\n end: endText,\n [subtitleGroup]: { [subtitleField]: text } = {},\n } = (Array.isArray(timespan) ? timespan[0] : timespan) || {};\n if (!text) return '';\n const start = timeToCueTime(formatTimeCodeText(startText).toTime());\n const end = timeToCueTime(formatTimeCodeText(endText).toTime());\n return `${start} --> ${end} line:0%\\r${text}\\r`;\n });\n\n return `WEBVTT\\n\\n\\n${vttCues.join('\\n')}`;\n};\n","export type CreateFacetTypeFieldList = string[];\nexport type CreateFacetTypeOptions = {\n count: boolean;\n};\n\n/**\n * Create a Vidicore facet list\n *\n * @param fieldList Input to create facet of\n * @param options Options for creating the facet\n * @returns A VidiCore facet list\n *\n * @category Search\n */\nexport const createFacetType = (\n fieldList: CreateFacetTypeFieldList = [],\n options: Partial<CreateFacetTypeOptions> = { count: true },\n) =>\n fieldList.map((field) => ({\n field,\n name: field,\n count: options.count !== undefined ? options?.count : true,\n exclude: fieldList,\n }));\n","import { FacetType } from '@vidispine/types';\n\nexport type ParsedFacetTypeCount = { [fieldValue: string]: number };\n/** Parsed facet type */\nexport type ParsedFacetType = {\n // A key value object\n [fieldName: string]: ParsedFacetTypeCount;\n};\n\n/**\n * Parse a VidiCore facet type list\n *\n * @param facetType A facet type list to parse\n * @returns A parsed facet type list\n *\n * @category Search\n */\nexport const parseFacetType = (facetType: FacetType[] = []): ParsedFacetType => {\n const output: ParsedFacetType = {};\n facetType.forEach(({ name, field, count }) => {\n output[name || field] = count.reduce(\n (acc, { fieldValue, value }) => ({ ...acc, [fieldValue]: value }),\n {},\n );\n });\n return output;\n};\n","import { SearchResultEntryTimespanType } from '@vidispine/types';\n\nexport type ParseHighlightTimespanOptions = {\n /** Return an array if there is a single value */\n arrayOnSingle?: boolean;\n /** Return timespans as list */\n timespanAsList?: boolean;\n /** String to join the values (e.g. `,`) */\n joinValue?: string;\n};\n\nexport type ParsedHighlightTimespan = {\n start?: string;\n end?: string;\n [key: string]: string | string[];\n};\n\nexport const defaultOptions: ParseHighlightTimespanOptions = {\n arrayOnSingle: true,\n joinValue: undefined as string,\n timespanAsList: false,\n};\n\n/**\n * Parses highlight timespan in VidiCore into key/value object.\n * The attributes can be targeted for each sub-type.\n * @param timespan - A VidiCore search timespan\n * @param options - Options which change how the timespans are parsed\n *\n * @category Search\n */\nexport const parseHighlightTimespan = (\n timespan: SearchResultEntryTimespanType,\n options: ParseHighlightTimespanOptions,\n): ParsedHighlightTimespan => {\n const {\n arrayOnSingle = true,\n joinValue = undefined,\n timespanAsList = false,\n } = { ...defaultOptions, ...(options || {}) };\n const { field = [], start, end } = timespan || {};\n const initialValue = timespanAsList ? { start, end } : {};\n const fieldList = field.reduce((acc, curr) => {\n const { name, value: valueList = [] } = curr;\n if (valueList.length === 0) return acc;\n let fieldValue;\n if (arrayOnSingle === false && valueList.length === 1) [fieldValue] = valueList;\n else if (joinValue) fieldValue = valueList.join(joinValue);\n else fieldValue = valueList;\n return { ...acc, [name]: fieldValue };\n }, initialValue);\n return fieldList;\n};\n","import { SearchResultEntryTimespanType } from '@vidispine/types';\n\nimport { parseHighlightTimespan } from '../parseHighlightTimespan';\nimport {\n ParsedHighlightTimespan,\n ParseHighlightTimespanOptions,\n defaultOptions as defaultParseHighlightTimespanOptions,\n} from '../parseHighlightTimespan/parseHighlightTimespan';\n\nexport interface ParseHighlightTimespanListOptions extends ParseHighlightTimespanOptions {\n /** Return parsed timespan as list (in an array) */\n timespanAsList?: boolean;\n /** Character to join the start/end time codes with */\n joinTimespan?: string;\n /** Flatten to field-name/field-value (Note: field-values may be overwritten) */\n flat?: boolean;\n /** Flatten timespan to object with start/end as key */\n flatTimespan?: boolean;\n}\n\nexport const defaultOptions: ParseHighlightTimespanListOptions = {\n ...defaultParseHighlightTimespanOptions,\n timespanAsList: false,\n joinTimespan: '_',\n flat: false,\n flatTimespan: false,\n};\n\n/**\n * Parses highlight timespans from VidiCore into key/value object.\n * The attributes can be targeted for each sub-type.\n *\n * @param highlightTimespanList - A list of timespans from VidiCore.\n * @param options - Options to change how the timespans are parsed\n *\n * @category Search\n */\nexport const parseHighlightTimespanList = (\n highlightTimespanList: SearchResultEntryTimespanType[] = [],\n options?: ParseHighlightTimespanListOptions,\n): ParsedHighlightTimespan | ParsedHighlightTimespan[] => {\n const {\n timespanAsList,\n joinTimespan = '_',\n flat,\n flatTimespan,\n ...parseHighlightTimespanOptions\n } = { ...defaultOptions, ...(options || {}) };\n if (timespanAsList === true)\n return highlightTimespanList.map((timespan) =>\n parseHighlightTimespan(timespan, { ...parseHighlightTimespanOptions, timespanAsList }),\n );\n if (flat === true || flatTimespan === true)\n return highlightTimespanList.reduce(\n (a, timespan) => ({ ...a, ...parseHighlightTimespan(timespan, options) }),\n {} as ParsedHighlightTimespan,\n );\n return highlightTimespanList.reduce(\n (a, timespan) => ({\n ...a,\n [[timespan.start, timespan.end].join(joinTimespan)]: parseHighlightTimespan(\n timespan,\n options,\n ),\n }),\n {},\n );\n};\n","/**\n * Parse Vidicore \"NOW\" constants to a date object\n *\n * Format: `NOW[+/-][number][HOUR/DAY/MONTH/YEAR(s)]` (e.g. \"NOW-2HOURS\")\n *\n * @remarks\n * Returns an approximate date since it's created client side\n *\n * @param value A \"NOW\" constant\n * @returns A date from the NOW constant\n *\n * @category Search\n */\nexport const parseNowDate = (value = 'NOW') => {\n if (value.startsWith('NOW')) {\n if (value === 'NOW') return new Date();\n const sign = value[3];\n const number = Number(value.match(/(\\d+)/)[0]);\n const unit = value.match(/(\\d.*)/)[0].replace(/\\d/g, '');\n const nowDiff = new Date();\n switch (unit) {\n case 'HOUR':\n case 'HOURS':\n if (sign === '+') nowDiff.setHours(nowDiff.getHours() + number);\n if (sign === '-') nowDiff.setHours(nowDiff.getHours() - number);\n break;\n case 'DAY':\n case 'DAYS':\n if (sign === '+') nowDiff.setDate(nowDiff.getDate() + number);\n if (sign === '-') nowDiff.setDate(nowDiff.getDate() - number);\n break;\n case 'MONTH':\n case 'MONTHS':\n if (sign === '+') nowDiff.setMonth(nowDiff.getMonth() + number);\n if (sign === '-') nowDiff.setMonth(nowDiff.getMonth() - number);\n break;\n case 'YEAR':\n case 'YEARS':\n if (sign === '+') nowDiff.setFullYear(nowDiff.getFullYear() + number);\n if (sign === '-') nowDiff.setFullYear(nowDiff.getFullYear() - number);\n break;\n default:\n break;\n }\n return nowDiff;\n }\n return new Date(value);\n};\n\nexport default parseNowDate;\n","import { AudioMediaInfoType, BaseMediaInfoType, VideoMediaInfoType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\n\nexport type ParsedBaseMediaInfoType = { Bit_rate_mode?: string; Source?: string } & {\n [key: string]: string;\n};\n\nexport type ParsedAudioMediaInfoType = ParsedBaseMediaInfoType;\n\nexport type ParsedBinaryMediaInfoType = ParsedBaseMediaInfoType;\n\nexport type ParsedVideoMediaInfoType = ParsedBaseMediaInfoType & {\n Format_Settings_GOP?: string;\n intra_dc_precision?: string;\n};\n\nexport const parseBaseMediaInfoType = <\n T extends BaseMediaInfoType,\n TReturn extends ParsedBaseMediaInfoType,\n>(\n baseMediaInfoType: T,\n): TReturn => {\n const { property: keyValuePairTypes = [], ...props } = baseMediaInfoType || ({} as T);\n const parsedKeyValuePairType = parseKeyValuePairTypes(keyValuePairTypes);\n return { ...parsedKeyValuePairType, ...props } as unknown as TReturn;\n};\n\nexport const parseAudioMediaInfoType = (\n mediaInfoType: AudioMediaInfoType,\n): ParsedAudioMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n\nexport const parseVideoMediaInfoType = (\n mediaInfoType: VideoMediaInfoType,\n): ParsedVideoMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n\nexport const parseBinaryMediaInfoType = (\n mediaInfoType: BaseMediaInfoType,\n): ParsedBinaryMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n","import { AudioComponentType } from '@vidispine/types';\nimport { filesize } from 'filesize';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseAudioMediaInfoType, ParsedAudioMediaInfoType } from '../_utils';\n\nconst sampleRateSymbols = { kB: 'kHz', B: 'Hz', mB: 'mHz' };\nconst bitRateSymbols = { kB: 'kbps', B: 'bps', MB: 'mbps' };\n\nexport type ParsedAudioComponentType = {\n audioFormat?: string;\n audioCodec?: string;\n audioSamplerate?: string;\n audioSamplerateSamples?: number;\n audioBitDepth?: string;\n audioBitrate?: string;\n audioBitrateKbps?: number;\n audioBitRateMode?: string;\n audioChannels?: number;\n audioMetadata?: {\n [key: string]: string;\n };\n audioMediaInfo?: ParsedAudioMediaInfoType;\n};\n\n/**\n * Parses the technical information of a AudioComponentType.\n * @param audioComponentType - A AudioComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseAudioComponent = (\n audioComponentType: AudioComponentType,\n): ParsedAudioComponentType => {\n const {\n timeBase,\n channelCount: audioChannels,\n codec: audioCodec,\n mediaInfo,\n bitrate,\n metadata,\n } = audioComponentType;\n const audioMediaInfo = parseAudioMediaInfoType(mediaInfo);\n const {\n Format: audioFormat,\n Resolution: audioBitDepth,\n Bit_rate_mode: audioBitRateMode,\n } = audioMediaInfo;\n const audioMetadata = parseKeyValuePairTypes(metadata || []);\n const audioSamplerateSamples = timeBase?.denominator\n ? (timeBase?.denominator || 1) / (timeBase?.numerator || 1)\n : undefined;\n const audioSamplerate =\n audioSamplerateSamples !== undefined\n ? (filesize(audioSamplerateSamples, {\n base: 10,\n round: 1,\n symbols: sampleRateSymbols,\n }) as string)\n : undefined;\n\n let audioBitrate;\n let audioBitrateKbps;\n if (bitrate !== undefined) {\n audioBitrate = filesize(bitrate, { round: 2, symbols: bitRateSymbols }) as string;\n audioBitrateKbps = Number(\n (filesize(bitrate, { exponent: 1, symbols: bitRateSymbols }) as string).split(' kbps')?.[0],\n );\n }\n return {\n audioFormat,\n audioCodec,\n audioSamplerate,\n audioSamplerateSamples,\n audioBitDepth,\n audioBitrate,\n audioBitrateKbps,\n audioBitRateMode,\n audioChannels,\n audioMediaInfo,\n audioMetadata,\n };\n};\n","/**\n * Const object with all file states in VidiCore\n * (see https://apidoc.vidispine.com/latest/storage/storage.html#file-states for more info)\n *\n * @category File\n */\nexport const FILE_STATES = {\n /** Just created, not used. */\n NONE: 'NONE',\n /** Discovered or created, not yet marked as finished. */\n OPEN: 'OPEN',\n /** File does no longer grow. */\n CLOSED: 'CLOSED',\n /** The current state is not known. */\n UNKNOWN: 'UNKNOWN',\n /** File is missing from the file system/storage. */\n MISSING: 'MISSING',\n /** File has been missing for a longer period. Candidate for restoration from archive. */\n LOST: 'LOST',\n /** File will appear on file system/storage, transfer subsystem or transcoder will create it. */\n TO_APPEAR: 'TO_APPEAR',\n /** The file is no longer in use, and will be deleted at the next clean-up sweep. */\n TO_BE_DELETED: 'TO_BE_DELETED',\n /** File is in use by transfer subsystem or transcoder. */\n BEING_READ: 'BEING_READ',\n /** File is archived. */\n ARCHIVED: 'ARCHIVED',\n /** File will be synchronized by multi-site agent. */\n AWAITING_SYNC: 'AWAITING_SYNC',\n} as const;\n\nexport type FileStateTypes = keyof typeof FILE_STATES;\n","import { FileType } from '@vidispine/types';\nimport { filesize } from 'filesize';\n\nexport type ParsedFileType = {\n uri?: string;\n hash?: string;\n fileSize?: string;\n fileSizeBytes?: number;\n path?: string;\n fileName?: string;\n fileId?: string;\n};\n\n/**\n * Parses a VidiCore file object\n *\n * @remarks\n * File sizes are parsed with JEDEC standard (base 2)\n *\n * @param fileType VidiCore file object\n * @returns A parsed file object\n *\n * @category File\n */\nexport const parseFileType = (fileType: FileType): ParsedFileType => {\n const { uri: uriList = [], size: fileSizeBytes, hash, path, id: fileId } = fileType;\n const [uri] = uriList;\n const fileSize =\n fileSizeBytes !== undefined\n ? (filesize(fileSizeBytes, { base: 2, standard: 'jedec' }) as string)\n : '';\n const fileName = path ? path.split('/').pop() : undefined;\n return {\n uri,\n hash,\n fileSize,\n fileSizeBytes,\n path,\n fileName,\n fileId,\n };\n};\n","import { BinaryComponentType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseFileType } from '../../file';\nimport { parseBaseMediaInfoType, ParsedBinaryMediaInfoType } from '../_utils';\n\nexport type ParsedBinaryComponentType = {\n binaryMetadata?: {\n [key: string]: string;\n };\n binaryMediaInfo?: ParsedBinaryMediaInfoType;\n};\n\n/**\n * Parses the technical information of a BinaryComponentType.\n * @param binaryComponentType - A BinaryComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseBinaryComponent = (\n binaryComponentType: BinaryComponentType = {},\n): ParsedBinaryComponentType => {\n const { file: fileList, mediaInfo, metadata = [] } = binaryComponentType;\n const binaryMetadata = parseKeyValuePairTypes(metadata);\n const binaryMediaInfo = parseBaseMediaInfoType(mediaInfo);\n\n let parsedBinaryComponent = { binaryMetadata, binaryMediaInfo };\n if (fileList) {\n const [fileType] = fileList;\n const parsedFileType = parseFileType(fileType);\n parsedBinaryComponent = {\n ...parsedBinaryComponent,\n ...parsedFileType,\n };\n }\n return parsedBinaryComponent;\n};\n","import { ContainerComponentType, TimeCodeType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseFileType } from '../../file';\nimport { ParsedFileType } from '../../file/parseFileType';\nimport { formatTimeCodeType } from '../../time';\nimport { parseBaseMediaInfoType, ParsedBaseMediaInfoType } from '../_utils';\n\n/**\n * Parsed container component\n */\nexport type ParsedContainerComponentType = {\n containerFormat?: string;\n videoFormat?: string;\n audioFormat?: string;\n textFormat?: string;\n originalFilename?: string;\n durationTimeCode?: TimeCodeType;\n duration?: string;\n startTimestamp?: TimeCodeType;\n startTimecode?: TimeCodeType;\n containerMetadata?: {\n [key: string]: string;\n };\n containerMediaInfo?: ParsedBaseMediaInfoType;\n} & ParsedFileType;\n\n/**\n * Parses the technical information of a ContainerComponentType.\n * @param containerComponentType - A ContainerComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseContainerComponent = (containerComponentType: ContainerComponentType = {}) => {\n const {\n mediaInfo,\n metadata,\n file: fileList,\n duration: durationTimeCode,\n startTimestamp,\n startTimecode,\n timeCodeTimeBase,\n } = containerComponentType;\n const containerMetadata = parseKeyValuePairTypes(metadata || []);\n const containerMediaInfo = parseBaseMediaInfoType(mediaInfo);\n let { Format: containerFormat } = containerMediaInfo;\n const {\n Video_Format_List: videoFormat,\n Audio_Format_List: audioFormat,\n Text_Format_List: textFormat,\n } = containerMediaInfo;\n if (containerFormat === undefined) {\n const { format } = containerComponentType;\n containerFormat = format;\n if (format && format.includes(',')) {\n const formatList = format.split(',');\n [containerFormat] = formatList;\n }\n }\n let parsedContainerComponentType: ParsedContainerComponentType = {\n containerFormat,\n videoFormat,\n audioFormat,\n textFormat,\n containerMetadata,\n containerMediaInfo,\n };\n if (containerMetadata.componentOriginalFilename) {\n parsedContainerComponentType.originalFilename = containerMetadata.componentOriginalFilename;\n }\n if (durationTimeCode !== undefined && durationTimeCode.samples !== 0) {\n const timeCode = formatTimeCodeType(durationTimeCode);\n parsedContainerComponentType.durationTimeCode = timeCode.toObject();\n parsedContainerComponentType.duration = timeCode.toDuration();\n }\n if (startTimestamp) {\n parsedContainerComponentType.startTimestamp = formatTimeCodeType(startTimestamp).toObject();\n }\n if (startTimecode !== undefined && timeCodeTimeBase) {\n parsedContainerComponentType.startTimecode = formatTimeCodeType({\n samples: startTimecode,\n timeBase: timeCodeTimeBase,\n });\n }\n if (fileList) {\n const [fileType] = fileList;\n const parsedFileType = parseFileType(fileType);\n parsedContainerComponentType = {\n ...parsedContainerComponentType,\n ...parsedFileType,\n };\n }\n return parsedContainerComponentType;\n};\n","import { VideoComponentType } from '@vidispine/types';\nimport { filesize } from 'filesize';\n\nimport { parseKeyValuePairTypes, parseAspectRatio } from '../../_utils';\nimport {\n formatTimeBaseText,\n formatTimeBaseType,\n formatTimeCodeType,\n TimeBase,\n TimeCode,\n} from '../../time';\nimport { ParsedVideoMediaInfoType, parseVideoMediaInfoType } from '../_utils';\n\nconst bitRateSymbols = { kB: 'kbps', B: 'bps', MB: 'mbps' };\n\nexport type ParsedVideoComponentType = {\n videoFormat?: string;\n dimension?: string;\n frameRate?: string | number;\n height?: number;\n width?: number;\n timeBase?: TimeBase;\n timeCode?: TimeCode;\n videoCodec?: string;\n smpte?: string;\n videoBitrate?: string;\n videoBitrateMbps?: number;\n fieldOrder?: string;\n colorSpace?: string;\n chromaSubsampling?: string;\n aspectRatio?: string;\n colorPrimaries?: string;\n videoMetadata?: {\n [key: string]: string;\n };\n videoMediaInfo?: ParsedVideoMediaInfoType;\n};\n\n/**\n * Parses the technical information of a VideoComponentType.\n * @param {Object} videoComponentType - A VideoComponentType from VidiCore.\n * @returns {Object} Parsed component object.\n *\n * @category Shape\n */\nexport const parseVideoComponent = (\n videoComponentType: VideoComponentType = {},\n): ParsedVideoComponentType => {\n const {\n codec: videoCodec,\n bitrate,\n fieldOrder,\n resolution,\n mediaInfo,\n metadata = [],\n } = videoComponentType;\n const videoMediaInfo = parseVideoMediaInfoType(mediaInfo);\n const videoMetadata = parseKeyValuePairTypes(metadata);\n const {\n Format: videoFormat,\n 'Frame rate': timeBaseText,\n 'Color space': colorSpace,\n 'Color primaries': colorPrimaries,\n Colorimetry: chromaSubsampling,\n } = videoMediaInfo;\n let timeBase;\n const { averageFrameRate, realBaseFrameRate } = videoComponentType;\n if (realBaseFrameRate !== undefined) {\n timeBase = formatTimeBaseType({\n numerator: realBaseFrameRate.denominator,\n denominator: realBaseFrameRate.numerator,\n });\n } else if (timeBaseText !== undefined) {\n timeBase = formatTimeBaseText(timeBaseText);\n } else if (averageFrameRate !== undefined) {\n timeBase = formatTimeBaseType({\n numerator: averageFrameRate.denominator,\n denominator: averageFrameRate.numerator,\n });\n }\n let { 'Frame count': samples } = videoMediaInfo;\n if (samples === undefined) {\n const { numberOfPackets } = videoComponentType;\n if (numberOfPackets !== undefined) samples = numberOfPackets.toString();\n }\n let timeCode: TimeCode;\n let frameRate: string | number;\n let smpte: string;\n if (samples && timeBase) {\n timeCode = formatTimeCodeType({ samples, timeBase });\n frameRate = timeCode.timeBase.toConstant() || timeCode.timeBase.toRate();\n smpte = timeCode.toSmpte();\n }\n const { height, width } = resolution || {};\n const aspectRatio = parseAspectRatio(resolution);\n const dimension = `${width}x${height}`;\n\n let videoBitrate;\n let videoBitrateMbps;\n if (bitrate !== undefined) {\n videoBitrate = filesize(bitrate, { round: 2, symbols: bitRateSymbols }) as string;\n videoBitrateMbps = Number(\n (filesize(bitrate, { exponent: 2, symbols: bitRateSymbols }) as string).split(' mbps')?.[0],\n );\n }\n return {\n videoFormat,\n dimension,\n frameRate,\n height,\n width,\n timeBase,\n timeCode,\n videoCodec,\n smpte,\n videoBitrate,\n videoBitrateMbps,\n fieldOrder,\n colorSpace,\n chromaSubsampling,\n aspectRatio,\n colorPrimaries,\n videoMetadata,\n videoMediaInfo,\n };\n};\n","// eslint-disable-next-line import/no-cycle\nimport { ShapeType } from '@vidispine/types';\n\nimport { parseAudioComponent } from '../parseAudioComponent';\nimport { ParsedAudioComponentType } from '../parseAudioComponent/parseAudioComponent';\nimport { parseBinaryComponent } from '../parseBinaryComponent';\nimport { ParsedBinaryComponentType } from '../parseBinaryComponent/parseBinaryComponent';\nimport { parseContainerComponent } from '../parseContainerComponent';\nimport { ParsedContainerComponentType } from '../parseContainerComponent/parseContainerComponent';\nimport { parseVideoComponent } from '../parseVideoComponent';\nimport { ParsedVideoComponentType } from '../parseVideoComponent/parseVideoComponent';\n\nexport type ParsedShapeType = {\n uri?: string;\n tag?: string;\n mimeType?: string;\n} & ParsedContainerComponentType &\n ParsedBinaryComponentType &\n ParsedAudioComponentType &\n ParsedVideoComponentType;\n\n/**\n * Parses the technical information of a ShapeType and its various components.\n *\n * Will only parse the first videoComponent, audioComponent, binaryComponent in the corresponding array.\n * To parse a selected component see:\n * - {@link parseContainerComponent}\n * - {@link parseVideoComponent}\n * - {@link parseAudioComponent}\n * - {@link parseBinaryComponent}\n * @param shapeType - A ShapeType from VidiCore.\n * @returns Parsed shape object.\n *\n * @category Shape\n */\nexport const parseShapeType = (shapeType: ShapeType = {}): ParsedShapeType => {\n let parsedShape: ParsedShapeType = {};\n const {\n containerComponent,\n videoComponent: videoComponentList,\n audioComponent: audioComponentList,\n binaryComponent: binaryComponentList,\n mimeType: mimeTypeList = [],\n tag: tagList = [],\n } = shapeType;\n [parsedShape.tag] = tagList;\n [parsedShape.mimeType] = mimeTypeList;\n if (containerComponent) {\n const parsedContainerComponent = parseContainerComponent(containerComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedContainerComponent,\n };\n }\n if (videoComponentList) {\n const [videoComponent] = videoComponentList;\n const parsedVideoComponent = parseVideoComponent(videoComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedVideoComponent,\n };\n }\n if (audioComponentList) {\n const [audioComponent] = audioComponentList;\n const parsedAudioComponent = parseAudioComponent(audioComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedAudioComponent,\n };\n }\n if (binaryComponentList) {\n const [binaryComponent] = binaryComponentList;\n const parsedBinaryComponent = parseBinaryComponent(binaryComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedBinaryComponent,\n };\n }\n return parsedShape;\n};\n","/**\n * Const object with document types\n *\n * @category Shape\n */\nexport const DOCUMENT_TYPES = {\n PDF: 'PDF',\n TEXT: 'TEXT',\n MSWORD: 'MSWORD',\n JSON: 'JSON',\n XML: 'XML',\n} as const;\n","/**\n * Const object with media types\n *\n * @category Shape\n */\nexport const SHAPE_MEDIA_TYPES = {\n IMAGE: 'IMAGE',\n AUDIO: 'AUDIO',\n VIDEO: 'VIDEO',\n DOCUMENT: 'DOCUMENT',\n BINARY: 'BINARY',\n} as const;\n","// eslint-disable-next-line import/no-cycle\nimport { ShapeType } from '@vidispine/types';\n\nimport { DOCUMENT_TYPES } from '../consts';\n\nexport type DocumentType = keyof typeof DOCUMENT_TYPES;\n\n/**\n * Return a const for the document type of a shape (looks at mimeType)\n *\n * @param shape A VidiCore shape\n * @returns The document type for a shape\n *\n * @category Shape\n */\nexport const getShapeDocumentType = (shape: ShapeType = {}): DocumentType => {\n // shapeType.mimeType is always a string array,\n // but accepts passing in { mimeType: string } for backwards compatibility\n const { mimeType: mimeTypeArrayOrString } = shape;\n\n const mimeType = Array.isArray(mimeTypeArrayOrString)\n ? mimeTypeArrayOrString[0]\n : mimeTypeArrayOrString;\n\n if (!mimeType) return undefined;\n if (mimeType.endsWith('/pdf')) return DOCUMENT_TYPES.PDF;\n if (mimeType.startsWith('text/')) return DOCUMENT_TYPES.TEXT;\n if (mimeType.endsWith('/msword')) return DOCUMENT_TYPES.MSWORD;\n if (mimeType.endsWith('/json')) return DOCUMENT_TYPES.JSON;\n if (mimeType.endsWith('/xml')) return DOCUMENT_TYPES.XML;\n\n return undefined;\n};\n\nexport default getShapeDocumentType;\n","import { ItemType, ShapeType } from '@vidispine/types';\n\nimport { parseShapeType, ParsedShapeType } from '../parseShapeType';\n\nconst IMAGE_MIME_TYPES = [\n 'image/apng',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/x-icon',\n 'image/png',\n 'image/svg+xml',\n];\n\nconst VIDEO_MIME_TYPES = ['video/mp4'];\n\nconst AUDIO_MIME_TYPES = [\n 'audio/mp4',\n 'audio/mpeg',\n 'audio/x-aac',\n 'audio/aac',\n 'audio/x-wav',\n 'audio/wav',\n 'audio/accp',\n 'audio/ogg',\n 'audio/webm',\n 'audio/x-flac',\n];\n\nconst DEFAULT_ALLOWED_MIME_TYPES = [...VIDEO_MIME_TYPES, ...IMAGE_MIME_TYPES, ...AUDIO_MIME_TYPES];\n\nconst DEFAULT_ALLOWED_METHODS = ['http', 'https'];\n\nconst MP4_MIMETYPE = 'video/mp4';\nconst QUICKTIME_MIMETYPE = 'video/quicktime';\nconst M4V_MIMETYPE = 'video/x-m4v';\nconst MP4_CONTAINER = 'MPEG-4';\nconst MOV_CONTAINER = 'mov';\nconst H264_CODEC = 'h264';\n\n// Sort by tags in the order of previewShapeOrder, secondary alphabetical.\n// using reverse() so the first has highest index\nconst PREVIEW_SHAPE_ORDER = [\n '__mp4',\n '__mp3_160k',\n '__png',\n '__jpeg',\n '__gif',\n 'original',\n].reverse();\n\nexport type FilteredShapeListObject = {\n src: string;\n type: string;\n shape: ShapeType;\n parsedShape: ParsedShapeType;\n [key: string]: string | ParsedShapeType | ShapeType;\n};\n\nexport type FilterShapeSourceOption = {\n sortPriority?: Function;\n allowedMimeTypes?: string[];\n allowedMethods?: string[];\n sourceKey?: string;\n mimeTypeKey?: string;\n shapeKey?: string;\n parsedShapeKey?: string;\n};\n\nconst defaultSortPriority = (\n { parsedShape: { tag: firstEl } }: FilteredShapeListObject,\n { parsedShape: { tag: secondEl } }: FilteredShapeListObject,\n) => {\n if (PREVIEW_SHAPE_ORDER.includes(firstEl) || PREVIEW_SHAPE_ORDER.includes(secondEl)) {\n return PREVIEW_SHAPE_ORDER.indexOf(secondEl) - PREVIEW_SHAPE_ORDER.indexOf(firstEl);\n }\n return firstEl.toLowerCase().localeCompare(secondEl.toLowerCase());\n};\n\n/**\n * Filter a shape type list to get shapes that are playable in a browser\n *\n * @param itemType\n * @param options\n * @returns\n *\n * @category Shape\n */\nexport const filterShapeSource = (\n itemType: ItemType,\n options?: FilterShapeSourceOption,\n): FilteredShapeListObject[] => {\n const {\n allowedMimeTypes = DEFAULT_ALLOWED_MIME_TYPES,\n allowedMethods = DEFAULT_ALLOWED_METHODS,\n sortPriority = defaultSortPriority,\n sourceKey = 'src',\n mimeTypeKey = 'type',\n shapeKey = 'shape',\n parsedShapeKey = 'parsedShape',\n } = options || {};\n const { shape: shapeList = [] } = itemType || {};\n const filteredShapeList: FilteredShapeListObject[] = shapeList.reduce((acc, shapeType) => {\n let type: string;\n let src: string;\n const parsedShape = parseShapeType(shapeType);\n const { uri, mimeType, containerFormat, videoCodec } = parsedShape;\n if (mimeType) {\n type = mimeType;\n if (\n (mimeType === QUICKTIME_MIMETYPE || mimeType === M4V_MIMETYPE) &&\n (containerFormat === MP4_CONTAINER || containerFormat === MOV_CONTAINER) &&\n videoCodec === H264_CODEC\n )\n type = MP4_MIMETYPE;\n }\n if (uri) {\n if (allowedMethods) {\n const [thisMethod] = uri.split('://');\n if (allowedMethods.includes(thisMethod)) src = uri;\n } else {\n src = uri;\n }\n }\n if (src && allowedMimeTypes.includes(type)) {\n acc.push({\n [sourceKey]: src,\n [mimeTypeKey]: type,\n [shapeKey]: shapeType,\n [parsedShapeKey]: parsedShape,\n });\n }\n return acc;\n }, []);\n if (typeof sortPriority === 'function') filteredShapeList.sort(defaultSortPriority);\n return filteredShapeList;\n};\n\nexport default filterShapeSource;\n","import { ShapeType } from '@vidispine/types';\n\nimport { SHAPE_MEDIA_TYPES } from '../consts/SHAPE_MEDIA_TYPES';\nimport { parseShapeType } from '../parseShapeType';\n\nexport type ShapeMediaType = keyof typeof SHAPE_MEDIA_TYPES;\n\n/**\n * Returns a const for which media type a shape has\n *\n * @param shape\n * @returns\n *\n * @category Shape\n */\nexport const getShapeMediaType = (shape: ShapeType): ShapeMediaType => {\n const parsedShape = parseShapeType(shape);\n const { mimeType, videoCodec, audioCodec } = parsedShape;\n if (!mimeType) return undefined;\n if (mimeType.startsWith('audio/')) {\n if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;\n }\n if (mimeType.startsWith('video/')) {\n if (videoCodec !== undefined) return SHAPE_MEDIA_TYPES.VIDEO;\n if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;\n }\n if (mimeType.startsWith('image/')) return SHAPE_MEDIA_TYPES.IMAGE;\n if (mimeType.endsWith('/pdf')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.startsWith('text/')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/msword')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/json')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/xml')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/octet-stream')) return SHAPE_MEDIA_TYPES.BINARY;\n return undefined;\n};\n","import { ItemType } from '@vidispine/types';\n\nimport { createTimeCode, formatTimeCodeText } from '../../time';\nimport { TimeCode, TimeCodeInput } from '../../time/TimeCode/TimeCode';\n\n/**\n * Find the thumbnail uri in a VidiCore item object that's nearest a timeCode\n *\n * @remarks\n * Time code is included in path of VidiCore thumbnail uris\n *\n * @param itemType A VidiCore item object\n * @param timeCode A timeCode to find nearest thumbnail to\n * @returns A URI of a thumbnail, `undefined` if item has no thumbnails\n *\n * @category Thumbnail\n */\nexport const findNearestThumbnail = (itemType: ItemType, timeCode: TimeCode | TimeCodeInput) => {\n const tcSeconds = createTimeCode(timeCode).toSeconds();\n const { thumbnails = {} } = itemType || {};\n const { uri: srcList = [] } = thumbnails;\n const srcTcSeconds = srcList.map((url: string) => {\n const tc = new URL(url).pathname.split('/').pop();\n return formatTimeCodeText(tc).toSeconds();\n });\n\n const nearestSrcIndex = srcTcSeconds.reduce(\n (nearestIndex: number, curr, currIndex) =>\n Math.abs(curr - tcSeconds) < Math.abs(srcTcSeconds[nearestIndex] - tcSeconds)\n ? currIndex\n : nearestIndex,\n 0,\n );\n return srcList[nearestSrcIndex];\n};\n","import { TranscodePresetType } from '@vidispine/types';\n\nimport { parseAspectRatio } from '../../_utils';\nimport { formatTimeBaseType, TimeBase } from '../../time';\n\n/**\n * TODO\n */\nexport type ParsedMediaConvertTranscodePreset = {\n description?: string;\n containerFormat?: any;\n videoFormat?: string;\n height?: number;\n width?: number;\n dimension?: string;\n aspectRatio?: string;\n fieldOrder?: string;\n videoBitrate?: number;\n timeBase?: TimeBase;\n frameRate?: string | number;\n audioFormat?: string;\n audioSamplerate?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n};\n\n/**\n * TODO\n *\n * @param mediaconvert\n * @returns\n *\n * @category Transcode\n */\nexport const parseMediaConvertPreset = (\n mediaconvert: TranscodePresetType['mediaconvert'],\n): ParsedMediaConvertTranscodePreset => {\n const output: ParsedMediaConvertTranscodePreset = {};\n const { outputSetting = [] } = mediaconvert || {};\n if (outputSetting.length === 0) return output;\n const mc: {\n Settings: {\n ContainerSettings: any;\n VideoDescription: any;\n AudioDescriptions: any;\n };\n } = JSON.parse(outputSetting[0]);\n const { Settings: { ContainerSettings, VideoDescription, AudioDescriptions } = {} } = mc;\n if (ContainerSettings) {\n output.containerFormat = ContainerSettings.Container;\n }\n if (VideoDescription) {\n const { CodecSettings = {} } = VideoDescription;\n const { Codec, ...otherSettings } = CodecSettings;\n output.videoFormat = Codec;\n const { Height: height, Width: width } = VideoDescription;\n output.height = height;\n output.width = width;\n if (height && width) {\n output.dimension = `${width}x${height}`;\n output.aspectRatio = parseAspectRatio({ height, width });\n }\n const [codecSpecs]: any[] = Object.values(otherSettings);\n if (codecSpecs) {\n output.fieldOrder = codecSpecs.InterlaceMode;\n if (output.fieldOrder && output.fieldOrder.includes('TOP')) output.fieldOrder = 'interlaced';\n output.videoBitrate = codecSpecs.Bitrate;\n const numerator = codecSpecs.FramerateDenominator; // other way round to vs ¯\\_(ツ)_/¯\n const denominator = codecSpecs.FramerateNumerator;\n const timeBase = formatTimeBaseType({ denominator, numerator });\n output.timeBase = timeBase;\n output.frameRate = timeBase.toConstant() || timeBase.toRate();\n }\n }\n if (AudioDescriptions && AudioDescriptions.length > 0) {\n const { CodecSettings = {} } = AudioDescriptions[0];\n const { Codec, ...otherSettings } = CodecSettings;\n output.audioFormat = Codec;\n const [codecSpecs]: any[] = Object.values(otherSettings);\n if (codecSpecs) {\n output.audioSamplerate = codecSpecs.SampleRate;\n output.audioBitrate = codecSpecs.Bitrate;\n output.audioBitRateMode = codecSpecs.RateControlMode;\n }\n }\n return output;\n};\n","import { TranscodePresetType } from '@vidispine/types';\n\nimport { parseAspectRatio } from '../../_utils';\nimport { formatTimeBaseType, TimeBase } from '../../time';\nimport { parseMediaConvertPreset } from '../parseMediaConvertPreset';\n\nexport type ParsedTranscodePreset = {\n description?: string;\n containerFormat?: any;\n videoFormat?: string;\n height?: number;\n width?: number;\n dimension?: string;\n aspectRatio?: string;\n fieldOrder?: string;\n videoBitrate?: number;\n timeBase?: TimeBase;\n frameRate?: string | number;\n audioFormat?: string;\n audioSamplerate?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n audioChannels?: number;\n};\n\n/**\n * Parse a VidiCore transcode preset\n *\n * @param transcodePresetType a VidiCore transcode preset\n * @returns A parsed transcode preset\n *\n * @category Transcode\n */\nexport const parseTranscodePreset = (\n transcodePresetType: TranscodePresetType,\n): ParsedTranscodePreset => {\n const output: ParsedTranscodePreset = {};\n const { description, format, audio, video, mediaconvert } = transcodePresetType || {};\n if (mediaconvert) return { description, ...parseMediaConvertPreset(mediaconvert) };\n output.description = description;\n output.containerFormat = format;\n if (video) {\n output.videoFormat = video.codec;\n output.videoBitrate = video.bitrate;\n if (video.framerate) {\n const timeBase = formatTimeBaseType(video.framerate);\n output.timeBase = timeBase;\n output.frameRate = timeBase.toConstant() || timeBase.toRate();\n }\n if (video.scaling) {\n const { height, width } = video.scaling;\n output.height = height;\n output.width = width;\n if (height && width) {\n output.dimension = `${width}x${height}`;\n output.aspectRatio = parseAspectRatio({ height, width });\n }\n }\n }\n if (audio) {\n const { codec: audioFormat, channel } = audio;\n output.audioFormat = audioFormat;\n if (channel) output.audioChannels = channel.length;\n }\n return output;\n};\n"],"names":["gcd","a","b","parseAspectRatio","aspectRatio","_ref","width","height","undefined","denominator","widthRatio","heightRatio","toFixed","join","parseKeyValuePairTypes","keyValuePairTypes","Object","fromEntries","map","key","value","ROLE_NAMES","ACCESSCONTROL_READ","ACCESSCONTROL_WRITE","ADMINISTRATOR","AUTO_PROJECTION_READ","AUTO_PROJECTION_WRITE","COLLECTION_NOTIFICATION_READ","COLLECTION_NOTIFICATION_WRITE","COLLECTION_READ","COLLECTION_WRITE","CONFIGURATION_READ","DELETION_LOCK_NOTIFICATION_READ","DELETION_LOCK_NOTIFICATION_WRITE","DELETION_LOCK_READ","DELETION_LOCK_WRITE","DOCUMENT_NOTIFICATION_READ","DOCUMENT_NOTIFICATION_WRITE","DOCUMENT_READ","DOCUMENT_WRITE","ERROR_READ","ERROR_WRITE","EXPORT","EXPORT_TEMPLATE_READ","EXPORT_TEMPLATE_WRITE","EXTERNAL_ID_READ","EXTERNAL_ID_WRITE","FILE_NOTIFICATION_READ","FILE_NOTIFICATION_WRITE","FILE_READ","FILE_WRITE","GROUP_READ","GROUP_WRITE","IMPORT_WRITE","ITEM_ID_READ","ITEM_ID_WRITE","ITEM_NOTIFICATION_READ","ITEM_NOTIFICATION_WRITE","ITEM_WRITE","ITEM_SEARCH","ITEM_SHAPE_READ","ITEM_SHAPE_WRITE","ITEM_TIMELINE_READ","ITEM_TIMELINE_WRITE","ITEM_URI","JOB_NOTIFICATION_READ","JOB_NOTIFICATION_WRITE","JOB_READ","JOB_WRITE","LIBRARY_READ","LIBRARY_WRITE","LOCK_READ","LOCK_WRITE","LOG_READ","METADATA_DATASET_READ","METADATA_DATASET_WRITE","METADATA_FIELD_GROUP_READ","METADATA_FIELD_GROUP_WRITE","METADATA_FIELD_READ","METADATA_FIELD_WRITE","METADATA_GLOBAL_READ","METADATA_GLOBAL_WRITE","METADATA_LOCK_READ","METADATA_LOCK_WRITE","METADATA_READ","METADATA_SCHEMA_READ","METADATA_SCHEMA_WRITE","METADATA_WRITE","OTIF_ANALYZE","OTIF_READ","OTIF_WRITE","PLACEHOLDER_NOTIFICATION_READ","PLACEHOLDER_NOTIFICATION_WRITE","PROJECTION_READ","PROJECTION_WRITE","QUOTA_NOTIFICATION_READ","QUOTA_NOTIFICATION_WRITE","QUOTA_READ","QUOTA_WRITE","RELATION_READ","RELATION_WRITE","RESOURCE_READ","RESOURCE_WRITE","RUN_AS","SEARCH","SEQUENCE_READ","SEQUENCE_WRITE","SHAPE_TAG_READ","SHAPE_TAG_WRITE","SITE_MANAGER","SITE_RULE_READ","SITE_RULE_WRITE","STORAGE_GROUP_READ","STORAGE_GROUP_WRITE","STORAGE_NOTIFICATION_READ","STORAGE_NOTIFICATION_WRITE","STORAGE_READ","STORAGE_RULE_READ","STORAGE_RULE_WRITE","STORAGE_WRITE","SUPER_ACCESS_USER","TASKDEFINITION_READ","TASKDEFINITION_WRITE","THUMBNAIL_READ","THUMBNAIL_WRITE","TRANSCODER","TRANSFER_READ","TRANSFER_WRITE","USER","VXA","VXA_READ","SYSTEM_FIELDGROUPS","SYSTEM_FIELDS","SHARED_ATTRIBUTE_KEYS","SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS","FIELD_VALUE_ATTRIBUTE_KEYS","concat","_toConsumableArray","FIELD_ATTRIBUTE_KEYS","GROUP_ATTRIBUTE_KEYS","_excluded","_excluded2","ownKeys","_objectSpread","isValueObject","o","prototype","toString","call","isFieldType","v","includes","_typeof","isFieldObject","isObject","isDate","isField","Array","isArray","some","isGroup","isGroupObject","entries","every","tryPluralize","str","arr","length","ensureKeysAreValid","keysToCheck","keysToMatch","unsupportedKeys","filter","k","Error","parseValue","toISOString","parseValueObject","valueObject","keys","parsedValue","parseFieldValue","flatMap","parseFieldObject","fieldObject","parsedFieldValue","fieldObjectWithoutValue","_objectWithoutProperties","parseField","field","parseGroupsAndFields","groupOrField","group","groupAttributes","forEach","_ref2","_slicedToArray","name","_defineProperty","push","error","message","childGroup","parseTimespan","timespan","_timespan$start","start","_timespan$end","end","_timespan$base","base","groupsAndFields","_parseGroupsAndFields","createMetadataType","input","t","sortTimespanList","timespan1","timespan2","_timespan1$start","_timespan2$start","split","firstStart","_ref3","_ref4","secondStart","Number","asArray","asSingle","pop","isStringArray","defaultOptions","includeValueAttributes","options","_defaultOptions","stringValue","attributes","valueAttributes","defaultParseValueOptions","joinValue","arrayOnSingleValue","parseValueList","valueList","parseValueOptions","parsedValueList","includeFieldAttributes","defaultParseValueListOptions","parseValueListOptions","fieldAttributes","defaultParseFieldOptions","fieldAsList","arrayOnSingleField","overrideField","parseFieldList","fieldList","parseFieldListOptions","shouldOverride","output","parsedField","parsedFieldOutput","existingParsedFields","flat","values","defaultParseGroupOptions","defaultParseFieldListOptions","includeGroupAttributes","groupAsList","arrayOnSingleGroup","overrideGroup","parseGroup","parseGroupOptions","groupList","parsedFieldList","parsedGroupList","parseGroupList","parsedGroup","parsedGroupOutput","existingParsedGroups","defaultParseGroupListOptions","includeTimespanAttributes","arrayOnSingle","parseTimespanOptions","parseGroupListOptions","e","_ref5","timespanAttributes","_ref6","_ref7","defaultParseTimespanOptions","timespanAsList","joinTimespan","sortTimespan","flatTimespan","parseTimespanList","timespanList","parseTimespanListOptions","otherOptions","sort","shouldFlatten","parsedTimespan","existingParsedTimespans","defaultParseTimespanListOptions","includeMetadataAttributes","parseMetadataType","metadataType","parseMetadataTypeOptions","_ref$timespan","parsedTimespanList","metadataAttributes","revision","parseSimpleMetadataType","simpleMetadataType","_ref$field","MAP_CONSTANT_TO_DEN_NUM","PAL","numerator","NTSC","NTSC30","TIME_BASE_CONSTANTS","toText","constant","fraction","toRate","fixed","rounded","TimeBase","timeBaseType","_classCallCheck","_ref$numerator","_ref$denominator","_createClass","toConstant","_this","find","timeBaseConstant","_timeBaseConstant","thisTimeBaseText","thisTimeBaseType","_defaultOptions$toTex","timeBaseText","String","rate","isInteger","_defaultOptions$toRat","Math","round","toObject","toJson","console","warn","formatTimeBaseText","_timeBaseText$split","_timeBaseText$split2","isNaN","JSON","stringify","formatTimeBaseType","timeBase","createTimeBase","getAmountOfFrameDrops","isDropFrameTimeBase","getDroppedFramesFromSamples","timeCode","samples","amountOfFrameDrops","roundedFrameRate","oneMinuteNotDroppedFrames","amountOfFramesToDropPerMinute","tenMinuteFrames","amountOfTenMinuteChunks","floor","minuteRemainder","max","amountOfOneMinuteReminderChunks","frameRemainder","amountOfFrameRemainderChunks","conformTimeBase","dropFrame","frameSeparator","includeTimeBaseForSeconds","toDuration","format","TimeCode","timeCodeType","_options$dropFrame","_options$frameSeparat","Infinity","add","conformedTimeCode","_conformedTimeCode","subtract","_timeCode$timeBase","_conformedTimeCode2","conformToTimeBase","mergedOptions","timeCodeText","toUnits","totalSamples","hours","minutes","seconds","frames","toTime","_this$toUnits","framesPrecise","milliseconds","partialSeconds","toSeconds","_this$timeBase","_defaultOptions$toDur","_this$toTime","rest","isBefore","unit","units","u","lastIndexOf","indexOf","padStart","countConsecutiveChars","i","j","timeUnitKeys","c","amount","pow","toSmpte","_this$toUnits2","hhmmss","framePadLength","getGreatestCommonDivisor","num1","num2","abs","formatTimeCodeSeconds","_ref$useGCD","useGCD","timeCodeOptions","secondsWithDot","replace","_ms$length","_secondsWithDot$split","_secondsWithDot$split2","ms","decimalPlaces","min","getDroppedFramesFromSmpte","hh","mm","ss","ff","dropFrames","shouldDropMinute","shouldDropSecond","hourFrames","minuteFrames","ceil","secondFrames","frameFrames","samplesWithoutDroppedFrames","getSamplesFromSmpte","smpteValues","_smpteValues","splitSmpte","smpte","match","nonColonFrameSeparator","_smpte$split","_smpte$split2","n","smpteFrameSeparator","EXCEEDING_OPTIONS","exceedingMode","formatTimeCodeSmpte","_splitSmpte","timeBaseInstance","maxFrame","_smpteValues2","truncatedSmpteValues","formatTimeCodeText","_timeCodeObject","timeCodeObject","_timeCodeText$split","_timeCodeText$split2","samplesString","formatTimeCodeType","hasSmpteFormat","s","isNumber","createTimeCode","timeToCueTime","_ref$hours","_ref$minutes","_ref$seconds","_ref$partialSeconds","hourStr","minStr","secondsStr","partialStr","subtitleGroup","subtitleField","metadataTypeToWebVtt","_ref2$timespan","parsedTimespans","vttCues","startText","endText","_ref3$subtitleGroup","text","createFacetType","arguments","count","exclude","parseFacetType","facetType","reduce","acc","fieldValue","parseHighlightTimespan","_defaultOptions$array","_defaultOptions$joinV","_defaultOptions$times","initialValue","curr","_curr$value","_valueList","defaultParseHighlightTimespanOptions","parseHighlightTimespanList","highlightTimespanList","_defaultOptions$joinT","parseHighlightTimespanOptions","parseNowDate","startsWith","Date","sign","number","nowDiff","setHours","getHours","setDate","getDate","setMonth","getMonth","setFullYear","getFullYear","parseBaseMediaInfoType","baseMediaInfoType","_ref$property","property","props","parsedKeyValuePairType","parseAudioMediaInfoType","mediaInfoType","parseVideoMediaInfoType","sampleRateSymbols","kB","B","mB","bitRateSymbols","MB","parseAudioComponent","audioComponentType","audioChannels","channelCount","audioCodec","codec","mediaInfo","bitrate","metadata","audioMediaInfo","audioFormat","Format","audioBitDepth","Resolution","audioBitRateMode","Bit_rate_mode","audioMetadata","audioSamplerateSamples","audioSamplerate","filesize","symbols","audioBitrate","audioBitrateKbps","_split","exponent","FILE_STATES","NONE","OPEN","CLOSED","UNKNOWN","MISSING","LOST","TO_APPEAR","TO_BE_DELETED","BEING_READ","ARCHIVED","AWAITING_SYNC","parseFileType","fileType","_fileType$uri","uri","uriList","fileSizeBytes","size","hash","path","fileId","id","_uriList","fileSize","standard","fileName","parseBinaryComponent","binaryComponentType","fileList","file","_binaryComponentType$","binaryMetadata","binaryMediaInfo","parsedBinaryComponent","_fileList","parsedFileType","parseContainerComponent","containerComponentType","durationTimeCode","duration","startTimestamp","startTimecode","timeCodeTimeBase","containerMetadata","containerMediaInfo","containerFormat","videoFormat","Video_Format_List","Audio_Format_List","textFormat","Text_Format_List","formatList","_formatList","parsedContainerComponentType","componentOriginalFilename","originalFilename","parseVideoComponent","videoComponentType","videoCodec","fieldOrder","resolution","_videoComponentType$m","videoMediaInfo","videoMetadata","colorSpace","colorPrimaries","chromaSubsampling","Colorimetry","averageFrameRate","realBaseFrameRate","numberOfPackets","frameRate","dimension","videoBitrate","videoBitrateMbps","parseShapeType","shapeType","parsedShape","containerComponent","videoComponentList","videoComponent","audioComponentList","audioComponent","binaryComponentList","binaryComponent","_shapeType$mimeType","mimeType","mimeTypeList","_shapeType$tag","tag","tagList","_tagList","_mimeTypeList","parsedContainerComponent","_videoComponentList","parsedVideoComponent","_audioComponentList","parsedAudioComponent","_binaryComponentList","DOCUMENT_TYPES","PDF","TEXT","MSWORD","XML","SHAPE_MEDIA_TYPES","IMAGE","AUDIO","VIDEO","DOCUMENT","BINARY","getShapeDocumentType","shape","mimeTypeArrayOrString","endsWith","IMAGE_MIME_TYPES","VIDEO_MIME_TYPES","AUDIO_MIME_TYPES","DEFAULT_ALLOWED_MIME_TYPES","DEFAULT_ALLOWED_METHODS","MP4_MIMETYPE","QUICKTIME_MIMETYPE","M4V_MIMETYPE","MP4_CONTAINER","MOV_CONTAINER","H264_CODEC","PREVIEW_SHAPE_ORDER","reverse","defaultSortPriority","firstEl","secondEl","toLowerCase","localeCompare","filterShapeSource","itemType","_ref3$allowedMimeType","allowedMimeTypes","_ref3$allowedMethods","allowedMethods","_ref3$sortPriority","sortPriority","_ref3$sourceKey","sourceKey","_ref3$mimeTypeKey","mimeTypeKey","_ref3$shapeKey","shapeKey","_ref3$parsedShapeKey","parsedShapeKey","_ref4$shape","shapeList","filteredShapeList","type","src","_uri$split","_uri$split2","thisMethod","_acc$push","getShapeMediaType","findNearestThumbnail","tcSeconds","_ref$thumbnails","thumbnails","_thumbnails$uri","srcList","srcTcSeconds","url","tc","URL","pathname","nearestSrcIndex","nearestIndex","currIndex","parseMediaConvertPreset","mediaconvert","_ref$outputSetting","outputSetting","mc","parse","_mc$Settings","Settings","ContainerSettings","VideoDescription","AudioDescriptions","Container","_VideoDescription$Cod","CodecSettings","Codec","otherSettings","Height","Width","_Object$values","_Object$values2","codecSpecs","InterlaceMode","Bitrate","FramerateDenominator","FramerateNumerator","_AudioDescriptions$0$","_Object$values3","_Object$values4","SampleRate","RateControlMode","parseTranscodePreset","transcodePresetType","description","audio","video","framerate","scaling","_video$scaling","channel"],"mappings":"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"}