@vidispine/vdt-js 23.2.0-pre.2 → 23.3.0-pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +7 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +1 -1
- package/package.json +27 -13
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation of vdt-js
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
|
|
1
7
|
import type { AudioComponentType } from '@vidispine/types';
|
|
2
8
|
import type { BinaryComponentType } from '@vidispine/types';
|
|
3
9
|
import type { ContainerComponentType } from '@vidispine/types';
|
|
@@ -10,7 +16,7 @@ import type { MetadataFieldValueType } from '@vidispine/types';
|
|
|
10
16
|
import type { MetadataGroupValueType } from '@vidispine/types';
|
|
11
17
|
import type { MetadataType } from '@vidispine/types';
|
|
12
18
|
import type { MetadataValueType } from '@vidispine/types';
|
|
13
|
-
import type { RationalType } from '
|
|
19
|
+
import type { RationalType } from '@vidispine/types';
|
|
14
20
|
import type { SearchFacetType } from '@vidispine/types';
|
|
15
21
|
import type { SearchResultEntryTimespanType } from '@vidispine/types';
|
|
16
22
|
import type { ShapeType } from '@vidispine/types';
|
package/dist/index.js
CHANGED
|
@@ -670,7 +670,7 @@ const H = (e) => {
|
|
|
670
670
|
return new h({ denominator: Number(e) });
|
|
671
671
|
}, y = (e) => new h(e), M = (e) => e instanceof h ? e : typeof e == "string" || typeof e == "number" ? H(e) : y(e), Y = (e) => {
|
|
672
672
|
const t = e.toConstant();
|
|
673
|
-
return t === "59.94" && 4 || ["NTSC", "29.97"].includes(t) && 2 ||
|
|
673
|
+
return t === "59.94" && 4 || ["NTSC", "29.97"].includes(t) && 2 || void 0;
|
|
674
674
|
}, be = (e) => Y(e) > 0, re = (e) => {
|
|
675
675
|
const { samples: t, timeBase: r } = e, n = Y(r);
|
|
676
676
|
if (!n)
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(p,I){typeof exports=="object"&&typeof module<"u"?I(exports,require("filesize")):typeof define=="function"&&define.amd?define(["exports","filesize"],I):(p=typeof globalThis<"u"?globalThis:p||self,I(p["@vidispine/vdt-js"]={},p.filesize))})(this,function(p,I){"use strict";const Z=(e,t)=>t?Z(t,e%t):e,P=e=>{const{width:t,height:r}=e||{};if(t===void 0||r===void 0)return;const i=Z(t,r);let n=t/i,o=r/i;return n>21&&(o=1,n=(t/r).toFixed(2)),[n,o].join(":")},g=e=>Object.fromEntries((e==null?void 0:e.map(({key:t,value:r})=>[t,r]))||[]),Ve={ACCESSCONTROL_READ:"_accesscontrol_read",ACCESSCONTROL_WRITE:"_accesscontrol_write",ADMINISTRATOR:"_administrator",AUTO_PROJECTION_READ:"_auto_projection_read",AUTO_PROJECTION_WRITE:"_auto_projection_write",COLLECTION_NOTIFICATION_READ:"_collection_notification_read",COLLECTION_NOTIFICATION_WRITE:"_collection_notification_write",COLLECTION_READ:"_collection_read",COLLECTION_WRITE:"_collection_write",CONFIGURATION_READ:"_configuration_read",DELETION_LOCK_NOTIFICATION_READ:"_deletion_lock_notification_read",DELETION_LOCK_NOTIFICATION_WRITE:"_deletion_lock_notification_write",DELETION_LOCK_READ:"_deletion_lock_read",DELETION_LOCK_WRITE:"_deletion_lock_write",DOCUMENT_NOTIFICATION_READ:"_document_notification_read",DOCUMENT_NOTIFICATION_WRITE:"_document_notification_write",DOCUMENT_READ:"_document_read",DOCUMENT_WRITE:"_document_write",ERROR_READ:"_error_read",ERROR_WRITE:"_error_write",EXPORT:"_export",EXPORT_TEMPLATE_READ:"_export_template_read",EXPORT_TEMPLATE_WRITE:"_export_template_write",EXTERNAL_ID_READ:"_external_id_read",EXTERNAL_ID_WRITE:"_external_id_write",FILE_NOTIFICATION_READ:"_file_notification_read",FILE_NOTIFICATION_WRITE:"_file_notification_write",FILE_READ:"_file_read",FILE_WRITE:"_file_write",GROUP_READ:"_group_read",GROUP_WRITE:"_group_write",IMPORT_WRITE:"_import",ITEM_ID_READ:"_item_id_read",ITEM_ID_WRITE:"_item_id_write",ITEM_NOTIFICATION_READ:"_item_notification_read",ITEM_NOTIFICATION_WRITE:"_item_notification_write",ITEM_WRITE:"_item_write",ITEM_SEARCH:"_item_search",ITEM_SHAPE_READ:"_item_shape_read",ITEM_SHAPE_WRITE:"_item_shape_write",ITEM_TIMELINE_READ:"_item_timeline_read",ITEM_TIMELINE_WRITE:"_item_timeline_write",ITEM_URI:"_item_uri",JOB_NOTIFICATION_READ:"_job_notification_read",JOB_NOTIFICATION_WRITE:"_job_notification_write",JOB_READ:"_job_read",JOB_WRITE:"_job_write",LIBRARY_READ:"_library_read",LIBRARY_WRITE:"_library_write",LOCK_READ:"_lock_read",LOCK_WRITE:"_lock_write",LOG_READ:"_log_read",METADATA_DATASET_READ:"_metadata_dataset_read",METADATA_DATASET_WRITE:"_metadata_dataset_write",METADATA_FIELD_GROUP_READ:"_metadata_field_group_read",METADATA_FIELD_GROUP_WRITE:"_metadata_field_group_write",METADATA_FIELD_READ:"_metadata_field_read",METADATA_FIELD_WRITE:"_metadata_field_write",METADATA_GLOBAL_READ:"_metadata_global_read",METADATA_GLOBAL_WRITE:"_metadata_global_write",METADATA_LOCK_READ:"_metadata_lock_read",METADATA_LOCK_WRITE:"_metadata_lock_write",METADATA_READ:"_metadata_read",METADATA_SCHEMA_READ:"_metadata_schema_read",METADATA_SCHEMA_WRITE:"_metadata_schema_write",METADATA_WRITE:"_metadata_write",OTIF_ANALYZE:"_otif_analyze",OTIF_READ:"_otif_read",OTIF_WRITE:"_otif_write",PLACEHOLDER_NOTIFICATION_READ:"_placeholder_notification_read",PLACEHOLDER_NOTIFICATION_WRITE:"_placeholder_notification_write",PROJECTION_READ:"_projection_read",PROJECTION_WRITE:"_projection_write",QUOTA_NOTIFICATION_READ:"_quota_notification_read",QUOTA_NOTIFICATION_WRITE:"_quota_notification_write",QUOTA_READ:"_quota_read",QUOTA_WRITE:"_quota_write",RELATION_READ:"_relation_read",RELATION_WRITE:"_relation_write",RESOURCE_READ:"_resource_read",RESOURCE_WRITE:"_resource_write",RUN_AS:"_run_as",SEARCH:"_search",SEQUENCE_READ:"_sequence_read",SEQUENCE_WRITE:"_sequence_write",SHAPE_TAG_READ:"_shape_tag_read",SHAPE_TAG_WRITE:"_shape_tag_write",SITE_MANAGER:"_site_manager",SITE_RULE_READ:"_site_rule_read",SITE_RULE_WRITE:"_site_rule_write",STORAGE_GROUP_READ:"_storage_group_read",STORAGE_GROUP_WRITE:"_storage_group_write",STORAGE_NOTIFICATION_READ:"_storage_notification_read",STORAGE_NOTIFICATION_WRITE:"_storage_notification_write",STORAGE_READ:"_storage_read",STORAGE_RULE_READ:"_storage_rule_read",STORAGE_RULE_WRITE:"_storage_rule_write",STORAGE_WRITE:"_storage_write",SUPER_ACCESS_USER:"_super_access_user",TASKDEFINITION_READ:"_taskdefinition_read",TASKDEFINITION_WRITE:"_taskdefinition_write",THUMBNAIL_READ:"_thumbnail_read",THUMBNAIL_WRITE:"_thumbnail_write",TRANSCODER:"_transcoder",TRANSFER_READ:"_transfer_read",TRANSFER_WRITE:"_transfer_write",USER:"_user",VXA:"_vxa",VXA_READ:"_vxa_read"},Ye=["stl_subtitle","stl_tti","stl_gsi","mrk_marker","pho_validation","pho_resource","pho_error","facedetect_rect","facedetect_face","originalTrackFilename","stl_gsiHeader"],ke=["title","user","shapeTag","representativeThumbnail","representativeThumbnailNoAuth","representativeItems","itemId","collectionId","mediaType","mimeType","created","startTimeCode","startSeconds","fieldValidationError","schemaValidationError","originalFilename","originalUri","originalAudioCodec","originalVideoCodec","originalHeight","originalWidth","originalFormat","durationSeconds","durationTimeCode","solr-index","__user","__collection","__collection_size","__ancestor_collection","__ancestor_collection_size","__shape","__shape_size","__shape_last_added","__placeholder_shape_size","__version","__version_count","__storage","__storage_size","__shapetag_{tag}_hash_{hash}","__storage_{tag}","__storage_{tag}_size","__storagegroup","__storagegroup_size","__sequence","__sequence_size","__metadata_last_modified","__external_id","__deletion_lock_id","__deletion_lock_expiry","__child_collection","__child_collection_size","__parent_collection","__parent_collection_size","__items_size","stl_text","stl_justification","stl_xrelative","stl_yrelative","stl_vertical","stl_verticalbase","stl_horizontalbase","stl_sizerelative","stl_color","stl_outline","stl_outlinecolor","stl_outlinesize","stl_font","stl_service","stl_tti","stl_gsi","cct","tcd","tcf","oet","cd","mnc","cpn","dfc","tcp","tcs","tet","tnb","tnd","en","co","tng","rd","mnr","dsc","opt","lc","tpt","tn","slr","tns","rn","pub","dsn","ecd","mrk_zerolength","mrk_text","mrk_color","pho_resource_name","pho_error_level","pho_error_code","pho_error_description","facedetect_rect_width","facedetect_rect_height","facedetect_rect_y","facedetect_rect_x","facedetect_pid","facedetect_rect","trackId","eidr_actor","eidr_alternateId","eidr_countryOfOrigin","eidr_director","eidr_id","eidr_referentType","eidr_releaseDate","eidr_resourceName","eidr_status","eidr_sync","ttml_div","ttml_root","vxa_collection_id","vxaId","vxaLocalPath","tco","cs","ebn","tf","cf","sgn","tci","jc","vp","sn"],U=["uuid","user","timestamp","change","conflict","mode"],ee=["name","id","referenced","data","inheritance"],te=[...U,"value","lang"],re=[...U,...ee,"value","reference","type","track"],ne=[...U,...ee,"cycle","field","group"],G=e=>Object.prototype.toString.call(e)==="[object Object]"&&e.value!==void 0,ie=e=>["string","boolean","number"].includes(typeof e),oe=e=>G(e)&&((e==null?void 0:e.value)===null||G(e.value)||ie(e.value)),He=e=>Object.prototype.toString.call(e)==="[object Object]",se=e=>Object.prototype.toString.call(e)==="[object Date]",ae=e=>e===null?!0:Array.isArray(e)?e.some(ae):ie(e)||oe(e)||se(e),ce=e=>{const t=r=>He(r)&&r.value===void 0&&!!Object.entries(e);return Array.isArray(e)?e.every(ce):t(e)},xe=(e,t)=>e+(t.length>1?"s":""),de=(e,t)=>{const r=e.filter(i=>!t.includes(i));if(r.length)throw Error(`Unsupported ${xe("key",r)} (${r.join(", ")})`)},ue=e=>{if(Array.isArray(e))throw Error("Invalid value inside value object, cannot be array");return[void 0,null].includes(e)?{}:se(e)?{value:e.toISOString()}:{value:e.toString()}},Ke=e=>{if(de(Object.keys(e),te),Object.keys(e).length===0)throw Error("Invalid value object, cannot be empty object");if(typeof(e==null?void 0:e.value)=="string")return e;const t=ue(e==null?void 0:e.value);return{...e,...t!==void 0?t:{}}},$=e=>{if(![void 0,null].includes(e))return Array.isArray(e)?e.flatMap($):G(e)?Ke(e):ue(e)},ze=e=>{de(Object.keys(e),re);const t=$(e==null?void 0:e.value);if(t===void 0){const{value:r,...i}=e;return i}return{...e,value:[...Array.isArray(t)?t:[t]]}},Je=e=>{if(oe(e))return ze(e);const t=$(e);if(t!==void 0)return{value:[...Array.isArray(t)?t:[t]]}},le=e=>{const t=[],r=[];let i={};return Object.entries(e||{}).forEach(([n,o])=>{if(ne.includes(n))i={...i,[n]:o};else if(ae(o))try{r.push({name:n,...Je(o)})}catch(a){throw Error(a.message+(n?` for field "${n}"`:""))}else if(ce(o))(Array.isArray(o)?o:[o]).forEach(a=>{t.push({name:n,...le(a)})});else throw Error(`Unhandled value for "${n}"`)}),{...i,...t.length>0?{group:t}:{},...r.length>0?{field:r}:{}}},Xe=e=>{const{start:t="-INF",end:r="+INF",base:i=void 0,...n}=e,{group:o,field:a}=le(n);return{...o?{group:o}:{},...a?{field:a}:{},start:t.toString(),end:r.toString(),...i?{base:i}:{}}},qe=e=>({timespan:(Array.isArray(e)?e:[e||{}]).map(t=>Xe(t))}),Qe=(e,t)=>{var n,o;const[r]=((n=e==null?void 0:e.start)==null?void 0:n.split("@"))||[],[i]=((o=t==null?void 0:t.start)==null?void 0:o.split("@"))||[];return Number(r)<Number(i)?-1:Number(r)>Number(i)?1:0},F=e=>Array.isArray(e)?e:e&&[e]||[],_e=e=>Array.isArray(e)?e.pop():e,Ze=e=>(e==null?void 0:e.every(t=>typeof t=="string"))||!1,me={includeValueAttributes:!1};function et(e,t){const{includeValueAttributes:r}={...me,...t||{}};if(r===!1)return e==null?void 0:e.value;const{value:i,...n}=e;return{...r===!0&&n||Array.isArray(r)&&Object.fromEntries(Object.entries(n).filter(([a])=>r.includes(a)))||{},value:i}}const fe={...me,joinValue:void 0,arrayOnSingleValue:!0};function tt(e,t){const{joinValue:r,arrayOnSingleValue:i,...n}={...fe,...t||{}},o=e==null?void 0:e.map(a=>et(a,n));return Ze(o)&&r?o==null?void 0:o.join(r):i!==!0&&(o==null?void 0:o.length)<=1?o==null?void 0:o[0]:o}const pe={includeFieldAttributes:!1,...fe},rt=(e,t)=>{const{includeFieldAttributes:r,...i}={...pe,...t||{}},{value:n,...o}=e,a=tt(n,i),s=r===!0&&o||Array.isArray(r)&&Object.fromEntries(Object.entries(o).filter(([c])=>r.includes(c)))||{};return r?{...s,value:a}:a},w={...pe,fieldAsList:!1,arrayOnSingleField:!1,overrideField:void 0},V=(e,t)=>{const r={...w,...t||{}},{fieldAsList:i,arrayOnSingleField:n,overrideField:o}=r,a=o===!0&&i===!1,s={};return e==null||e.forEach(c=>{const{name:l}=c,u=rt(c,r),_=n===!0?F(u):u,f=s[l];f?a?s[l]=u:s[l]=[F(f),F(u)].flat():s[l]=_}),i===!0?Object.values(s).flat():s},Te={...w,includeGroupAttributes:!1,groupAsList:!1,arrayOnSingleGroup:!1,overrideGroup:void 0},nt=(e,t)=>{const r={...Te,...t||{}},{includeGroupAttributes:i}=r,n=Object.fromEntries(Object.entries(r).filter(([_])=>Object.keys(w).includes(_))),{field:o,group:a,...s}=e,c=o&&V(o,n),l=a&&k(a,r);return{...i===!0&&s||Array.isArray(i)&&Object.fromEntries(Object.entries(s).filter(([_])=>i.includes(_)))||{},...n!=null&&n.fieldAsList?c&&{field:c}||{}:c,...r!=null&&r.groupAsList?l&&{group:l}||{}:l}},Y=Te,k=(e,t)=>{const r={...Y,...t||{}},{groupAsList:i,arrayOnSingleGroup:n,overrideGroup:o}=r,a=o===!0&&i===!1,s={};return e==null||e.forEach(c=>{const{name:l}=c,u=nt(c,r),_=n===!0?F(u):u,f=s[l];f?a?s[l]=u:s[l]=[F(f),F(u)].flat():s[l]=_}),i?Object.values(s).flat():s},Ee={...Y,includeTimespanAttributes:!1,flat:!1,arrayOnSingle:!1,arrayOnSingleValue:!0,arrayOnSingleGroup:void 0,arrayOnSingleField:void 0},he=(e,t)=>{const r={...Ee,...t||{}},{includeTimespanAttributes:i,arrayOnSingle:n,flat:o}=r,a=Object.fromEntries(Object.entries(t).map(([d,m])=>{if(Object.keys(Y).includes(d))return["arrayOnSingleGroup","arrayOnSingleField","arrayOnSingleValue"].includes(d)&&(m!==void 0?m:n===!0)?[d,!0]:["overrideGroup","overrideField"].includes(d)&&(m!==void 0?m:o===!0)?[d,!0]:[d,m]}).filter(d=>!!d)),s=Object.fromEntries(Object.entries(t).map(([d,m])=>{if(Object.keys(w).includes(d))return["arrayOnSingleField","arrayOnSingleValue"].includes(d)&&(m!==void 0?m:n===!0)?[d,!0]:["overrideField"].includes(d)&&(m!==void 0?m:o===!0)?[d,!0]:[d,m]}).filter(d=>!!d)),{field:c,group:l,...u}=e||{},_=c&&V(c,s),f=l&&k(l,a);return{...i===!0&&u||Array.isArray(i)&&Object.fromEntries(Object.entries(u).filter(([d])=>i.includes(d)))||{},...s!=null&&s.fieldAsList?{field:_}:_,...a!=null&&a.groupAsList?{group:f}:f}},H={...Ee,timespanAsList:!1,joinTimespan:"_",sortTimespan:!1,flat:!1,flatTimespan:void 0},x=(e,t)=>{const r={...H,...t||{}},{timespanAsList:i,joinTimespan:n,sortTimespan:o,flat:a,flatTimespan:s,...c}=r,l={flat:a,...c};o&&e.sort(Qe);const u=(s!==void 0?s===!0:a===!0)&&i===!1,_={};return e==null||e.forEach(f=>{const{start:T,end:d}=f,m=u?"flat":[T,d].join(n),E=he(f,l),h=_[m];h?u?T==="-INF"&&d==="+INF"?_[m]={..._e(h),...E}:_[m]={...E,..._e(h)}:_[m]=[...F(h),E]:_[m]=E}),i===!0?Object.values(_):u?Object.values(_).pop():_},it={...H,includeMetadataAttributes:!1,flat:!1};function ot(e,t){const r={...it,...t||{}},{includeMetadataAttributes:i,flat:n}=r,{timespan:o=[],...a}=e||{},s=Object.fromEntries(Object.entries(t).map(([u,_])=>{if(Object.keys(H).includes(u))return["onlyGeneric","overrideGroup","overrideField"].includes(u)&&(_!==void 0?_:n===!0)?[u,!0]:[u,_]}).filter(u=>!!u)),c=x(o,s);return{...i===!0&&{...a,...a.revision?{revision:a.revision.split(",")}:{}}||Array.isArray(i)&&Object.fromEntries(Object.entries(a).map(([u,_])=>{if(i.includes(u))return[u,u==="revision"&&typeof _=="string"?_.split(","):_]}).filter(u=>!!u))||{},...s!=null&&s.timespanAsList?{timespan:c}:c}}const st=e=>{const{field:t=[]}=e||{};return g(t)},K={PAL:{denominator:25,numerator:1},NTSC:{denominator:3e4,numerator:1001},NTSC30:{denominator:30,numerator:1},29.97:{denominator:3e4,numerator:1001},59.94:{denominator:6e4,numerator:1001},23.976:{denominator:48e3,numerator:2002},23.98:{denominator:48e3,numerator:2002}},Ae=Object.keys(K),Oe={toText:{constant:!1,fraction:!1},toRate:{fixed:!0,rounded:!1}};class A{constructor(t){this.numerator=1,this.denominator=1;const{numerator:r=1,denominator:i=1}=t||{};this.numerator=Number(r),this.denominator=Number(i)}toConstant(){let t;return Object.entries(K).find(r=>{const[i,n]=r,{numerator:o,denominator:a}=n;return o===this.numerator&&a===this.denominator?(t=i,!0):!1}),t}toText(t){const{constant:r,fraction:i}={...Oe.toText,...t};if(r){const o=this.toConstant();if(o)return o}return i||this.numerator>1?[this.denominator,this.numerator].join(":"):String(this.denominator)}toRate(t){const r=this.denominator/this.numerator;if(Number.isInteger(r))return r;const{rounded:i,fixed:n}={...Oe.toRate,...t||{}};return i?Math.round(r):n===!0||typeof n=="number"?Number(r.toFixed(typeof n=="boolean"?2:n)):r}toObject(){return{denominator:this.denominator,numerator:this.numerator}}toJson(){return console.warn("Deprecated - use toObject instead"),this.toObject()}}const L=e=>{if(e===void 0)return new A;if(typeof e=="number")return new A({denominator:e});if(typeof e=="string"&&e.includes(":")){const[t,r]=e.split(":");return new A({denominator:t,numerator:r})}if(Ae.includes(e))return new A(K[e]);if(!["string","number"].includes(typeof e)||Number.isNaN(Number(e)))throw new Error(`timeBaseText must be a number or ${Ae.join(",")} - is ${JSON.stringify(e)}`);return new A({denominator:Number(e)})},D=e=>new A(e),y=e=>e instanceof A?e:typeof e=="string"||typeof e=="number"?L(e):D(e),z=e=>{const t=e.toConstant();return t==="59.94"&&4||["NTSC","29.97"].includes(t)&&2||!1},Ie=e=>z(e)>0,Se=e=>{const{samples:t,timeBase:r}=e,i=z(r);if(!i)return 0;const n=r.toRate({rounded:!0}),o=60*n,a=60*n-i,s=10*(o-i)+i,c=Math.floor((t+1)/s),l=Math.max(0,(t+1)%s-o),u=Math.floor(l/a),f=l%a>0?i:0;return c*9*i+u*i+f},J={conformTimeBase:{dropFrame:void 0,frameSeparator:void 0},toText:{constant:!1,fraction:!1,includeTimeBaseForSeconds:!1},toDuration:{format:void 0}};class S{constructor(t,r){this.samples=0,this.timeBase=new A;const{samples:i,timeBase:n}=t||{};if(i!==void 0)if(typeof i=="number")this.samples=i;else if(typeof i=="string")i==="-INF"?this.samples=-1/0:i==="+INF"?this.samples=1/0:this.samples=Number(i);else throw new Error(`samples is not number/string/-Inf/+Inf is: ${i}`);n!==void 0&&(n instanceof A?this.timeBase=n:this.timeBase=y(n)),this.dropFrame=(r==null?void 0:r.dropFrame)??Ie(this.timeBase),this.frameSeparator=(r==null?void 0:r.frameSeparator)??(this.dropFrame?";":":")}add(t){if(!(t!=null&&t.timeBase)||(t==null?void 0:t.samples)===void 0)throw Error("Invalid timeCodeType, cannot be added");const{numerator:r,denominator:i}=(t==null?void 0:t.timeBase)||{};let n=t;(r!==this.timeBase.numerator||i!==this.timeBase.denominator)&&(n=t.conformTimeBase(this.timeBase));const{samples:o}=n;return new S({samples:this.samples+o,timeBase:this.timeBase})}subtract(t){if(!(t!=null&&t.timeBase)||(t==null?void 0:t.samples)===void 0)throw Error("Invalid timeCodeType, cannot be subtracted");const{timeBase:{numerator:r,denominator:i}={}}=t;let n=t;(r!==this.timeBase.numerator||i!==this.timeBase.denominator)&&(n=t.conformTimeBase(this.timeBase));const{samples:o}=n;return new S({samples:this.samples-o,timeBase:this.timeBase})}conformTimeBase(t,r){const i=t instanceof A?t:y(t),n=Math.floor(this.samples/(this.timeBase.toRate({fixed:!1})/i.toRate({fixed:!1}))),o={...J.conformTimeBase,...r||{}};return new S({samples:n,timeBase:i},o)}toText(t){let r=`${this.samples}`;const i={...J.toText,...t||{}},n=this.timeBase.toText(i);return(t!=null&&t.includeTimeBaseForSeconds||!["1","1:1"].includes(n))&&(r=[this.samples,n].join("@")),r}toUnits(){if(this.samples===1/0)return{hours:1/0,minutes:1/0,seconds:1/0,frames:1/0};const t=this.samples+(this.dropFrame?Se(this):0);let r=this.timeBase.toRate({rounded:!0});["23.976","23.98"].includes(this.timeBase.toConstant())&&(r=this.timeBase.toRate({fixed:!0}));const i=Math.floor(t/(3600*r)),n=Math.floor(t/(60*r))%60,o=Math.floor(t/r)%60,a=Math.floor(t%r);return{hours:i,minutes:n,seconds:o,frames:a}}toTime(){const t=this.samples+Se(this),{hours:r,minutes:i,seconds:n}=this.toUnits(),o=this.timeBase.toRate({rounded:!0}),a=t%o,s=Math.floor(1e3*a/o),c=a/o;return{hours:r,minutes:i,seconds:n,milliseconds:s,partialSeconds:c}}toSeconds(){const{numerator:t,denominator:r}=this.timeBase;return Math.round(1e3*+(this.samples*t/r))/1e3}toDuration(t){const{format:r}={...J.toDuration,...t||{}},{hours:i,...n}=this.toTime();let{minutes:o,seconds:a,milliseconds:s}=n;if(r&&typeof r!="string")throw Error("format has to be a string");const c=(f,T)=>!r.includes(f)||!T.some(d=>r.includes(d)&&r.lastIndexOf(f)>r.indexOf(d));if(r&&!(c("h",["m","s","S"])&&c("m",["s","S"])&&c("s",["S"])))throw Error("format order is unsupported (has to be h, m, s then S)");if(!r)return`${i>0?`${i}:${`${o}`.padStart(2,"0")}`:o}:${`${a}`.padStart(2,"0")}`;const l=(f,T)=>{let d=f;for(;T[d]===T[d+1];)d+=1;return d-f+1},u=["h","m","s","S"],_=[];return[...r].forEach((f,T,d)=>{switch(f){case"h":{if(d[T-1]==="h")break;const m=l(T,d);_.push(`${i}`.padStart(m,"0")),u.includes(d[T+m])&&_.push(":");break}case"m":{if(d[T-1]==="m")break;const m=l(T,d);r.includes("h")||(o+=i*60),_.push(`${o}`.padStart(m,"0")),u.includes(d[T+m])&&_.push(":");break}case"s":{if(d[T-1]==="s")break;const m=l(T,d);r.includes("m")||(a+=o*60),_.push(`${a}`.padStart(m,"0")),u.includes(d[T+m])&&_.push(".");break}case"S":{if(d[T-1]==="S")break;const m=l(T,d);r.includes("s")||(s+=a*1e3),_.push(`${Math.round(s/10**(3-m))}`.padStart(m,"0"));break}default:_.push(f)}}),_.join("")}toSmpte(){if(this.samples===-1/0)return"00:00:00:00";const{hours:t,minutes:r,seconds:i,frames:n}=this.toUnits(),o=[t.toFixed().padStart(2,"0"),r.toFixed().padStart(2,"0"),i.toFixed().padStart(2,"0")].join(":"),a=Math.max(2,`${this.timeBase.toRate({rounded:!0})-1}`.length);return[o,`${n}`.padStart(a,"0")].join(this.frameSeparator)}toObject(){return{samples:this.samples,timeBase:this.timeBase.toObject()}}toJson(){return console.warn("Deprecated - use toObject instead"),this.toObject()}}const at=(e,t)=>{let r=Math.abs(e),i=Math.abs(t);for(;r&&i&&r!==i;)r>i?[r,i]=[r-i,i]:[r,i]=[r,i-r];return r||i},Re=(e,t)=>{const{timeBase:r,useGCD:i=!1,...n}=t||{},o=`${e}`.replace(/,/g,".");if(Number.isNaN(+o))throw new Error(`seconds must be digits, is ${e}`);let a=1,s;if(Number.isInteger(+o))s=+o*a;else{const[,l]=o.split("."),u=Math.min((l==null?void 0:l.length)??0,16);a*=10**u,s=Math.round(Number(o)*a)}if(r===void 0&&i){const l=at(a,s);s/=l,a/=l}const c=new S({samples:s,timeBase:{denominator:a,numerator:1}},n);return r!==void 0?c.conformTimeBase(y(r),n):c},ct=([e,t,r,i],n,o)=>{const a=o.toRate({rounded:!0}),s=z(o);if(n===0||!s)return 0;const c=t%10!==0,l=c&&r===0,u=e*(3600*a-54*s),_=t*60*a-(t-Math.ceil(t/10))*s,f=r*a-(c&&r>1?s:0);if(l&&i<s)throw new Error(`Frame does not exist for ${o.toConstant()||o.toRate()} drop-frame`);const T=l?i-s:i,d=u+_+f+T;return n-d},X=(e,t,r)=>{const[i,n,o,a]=e,s=t.toRate({rounded:!0}),c=i*3600*s+n*60*s+o*s+a;return c-(r?ct(e,c,t):0)},dt=e=>{const[t]=(e==null?void 0:e.match(/[^0-9:\-_]/))||[];let r=[];if(t){const[n,o]=e.split(t);r=[...n.split(":"),o]}else r=e.split(":");if(r.length!==4)throw new Error('Invalid format, must be "##:##:##:##');if(r.some(n=>Number.isNaN(n)))throw new Error("Invalid format, values must be numbers");const i=t||":";return{smpteValues:r.map(Number),smpteFrameSeparator:i}},ut=["error","add","ignore"],lt={exceedingMode:"error",timeBase:void 0,dropFrame:void 0,frameSeparator:void 0},ge=(e,t)=>{const{exceedingMode:r,timeBase:i,...n}={...lt,...t};if([null,void 0].includes(e))throw new Error("smpte cannot be undefined or null");if(typeof e!="string")throw new Error(`smpte must be a string, is ${JSON.stringify(e)}`);const{smpteValues:o,smpteFrameSeparator:a}=dt(e),s=y(i),c={...n,frameSeparator:(n==null?void 0:n.frameSeparator)||a,...(n==null?void 0:n.dropFrame)===void 0?{dropFrame:i!==void 0?Ie(s):[";",","].includes(a)}:{}},l=s.toRate({rounded:!0}),u=Math.max(0,l-1);if(o.some(f=>f<0))throw new Error("Negative values are not supported");let _;switch(r){case"error":{const[f,T,d,m]=o;if(f>=100||T>=60)throw Error("Minutes has to be less than 60");if(d>=60)throw Error("Seconds has to be less than 60");if(m>u)throw Error(`Frames has to be less or equal to ${u}`);_=X(o,s,c==null?void 0:c.dropFrame);break}case"ignore":{const[f,T,d,m]=o,E=[Math.min(100,f),Math.min(59,T),Math.min(59,d),Math.min(u,m)];_=X(E,s,c==null?void 0:c.dropFrame);break}case"add":{_=X(o,s,c==null?void 0:c.dropFrame);break}default:throw new Error(`Invalid exceedingMode, options are ${JSON.stringify(ut)}`)}return new S({samples:_,timeBase:s},c)},_t={timeBase:void 0,dropFrame:void 0,frameSeparator:void 0},C=(e,t)=>{const{timeBase:r,...i}={..._t,...t};let n;if(e===void 0)n={samples:0};else if(typeof e=="number")n={samples:e};else if(e.includes("@")){const[a,s]=e.split("@");n={samples:Number(a),timeBase:L(s)}}else e==="-INF"?n={samples:-1/0}:e==="+INF"?n={samples:1/0}:n={samples:Number(e)};if(Number.isNaN(n==null?void 0:n.samples)||n.timeBase&&!(n.timeBase instanceof A))throw new Error(`timeCodeText must be a number or sample@timeBase - is ${e}`);const o=new S(n,i);return r?o.conformTimeBase(y(r),i):o},mt={dropFrame:void 0,frameSeparator:void 0},M=(e,t)=>new S(e,{...mt,...t}),ft=e=>!!e.match(/^(\d\d+):(\d\d+):(\d\d+)(:|;|\.|,)(\d\d+)$/),pt=e=>!Number.isNaN(Number(e)),be=(e,t)=>{if(e instanceof S)return e;if(typeof e!="string"&&typeof e!="number")return M(e,t);if(typeof e=="string"&&ft(e))return ge(e,t);if(["string","number"].includes(typeof e)&&pt(e))return Re(e,t);if(typeof e=="string")return C(e,t)};function Ne({hours:e=0,minutes:t=0,seconds:r=0,partialSeconds:i=0}){const n=e.toFixed().padStart(2,"0"),o=t.toFixed().padStart(2,"0"),a=r.toFixed().padStart(2,"0"),s=(i*10).toFixed().padStart(3,"0");return`${n}:${o}:${a}.${s}`}const Tt={subtitleGroup:"stl_subtitle",subtitleField:"stl_text"},Et=(e,t)=>{const{subtitleGroup:r,subtitleField:i}={...Tt,...t||{}},{timespan:n=[]}=e||{};return n.length===0?"":`WEBVTT
|
|
1
|
+
(function(p,I){typeof exports=="object"&&typeof module<"u"?I(exports,require("filesize")):typeof define=="function"&&define.amd?define(["exports","filesize"],I):(p=typeof globalThis<"u"?globalThis:p||self,I(p["@vidispine/vdt-js"]={},p.filesize))})(this,function(p,I){"use strict";const Z=(e,t)=>t?Z(t,e%t):e,P=e=>{const{width:t,height:r}=e||{};if(t===void 0||r===void 0)return;const i=Z(t,r);let n=t/i,o=r/i;return n>21&&(o=1,n=(t/r).toFixed(2)),[n,o].join(":")},g=e=>Object.fromEntries((e==null?void 0:e.map(({key:t,value:r})=>[t,r]))||[]),Ve={ACCESSCONTROL_READ:"_accesscontrol_read",ACCESSCONTROL_WRITE:"_accesscontrol_write",ADMINISTRATOR:"_administrator",AUTO_PROJECTION_READ:"_auto_projection_read",AUTO_PROJECTION_WRITE:"_auto_projection_write",COLLECTION_NOTIFICATION_READ:"_collection_notification_read",COLLECTION_NOTIFICATION_WRITE:"_collection_notification_write",COLLECTION_READ:"_collection_read",COLLECTION_WRITE:"_collection_write",CONFIGURATION_READ:"_configuration_read",DELETION_LOCK_NOTIFICATION_READ:"_deletion_lock_notification_read",DELETION_LOCK_NOTIFICATION_WRITE:"_deletion_lock_notification_write",DELETION_LOCK_READ:"_deletion_lock_read",DELETION_LOCK_WRITE:"_deletion_lock_write",DOCUMENT_NOTIFICATION_READ:"_document_notification_read",DOCUMENT_NOTIFICATION_WRITE:"_document_notification_write",DOCUMENT_READ:"_document_read",DOCUMENT_WRITE:"_document_write",ERROR_READ:"_error_read",ERROR_WRITE:"_error_write",EXPORT:"_export",EXPORT_TEMPLATE_READ:"_export_template_read",EXPORT_TEMPLATE_WRITE:"_export_template_write",EXTERNAL_ID_READ:"_external_id_read",EXTERNAL_ID_WRITE:"_external_id_write",FILE_NOTIFICATION_READ:"_file_notification_read",FILE_NOTIFICATION_WRITE:"_file_notification_write",FILE_READ:"_file_read",FILE_WRITE:"_file_write",GROUP_READ:"_group_read",GROUP_WRITE:"_group_write",IMPORT_WRITE:"_import",ITEM_ID_READ:"_item_id_read",ITEM_ID_WRITE:"_item_id_write",ITEM_NOTIFICATION_READ:"_item_notification_read",ITEM_NOTIFICATION_WRITE:"_item_notification_write",ITEM_WRITE:"_item_write",ITEM_SEARCH:"_item_search",ITEM_SHAPE_READ:"_item_shape_read",ITEM_SHAPE_WRITE:"_item_shape_write",ITEM_TIMELINE_READ:"_item_timeline_read",ITEM_TIMELINE_WRITE:"_item_timeline_write",ITEM_URI:"_item_uri",JOB_NOTIFICATION_READ:"_job_notification_read",JOB_NOTIFICATION_WRITE:"_job_notification_write",JOB_READ:"_job_read",JOB_WRITE:"_job_write",LIBRARY_READ:"_library_read",LIBRARY_WRITE:"_library_write",LOCK_READ:"_lock_read",LOCK_WRITE:"_lock_write",LOG_READ:"_log_read",METADATA_DATASET_READ:"_metadata_dataset_read",METADATA_DATASET_WRITE:"_metadata_dataset_write",METADATA_FIELD_GROUP_READ:"_metadata_field_group_read",METADATA_FIELD_GROUP_WRITE:"_metadata_field_group_write",METADATA_FIELD_READ:"_metadata_field_read",METADATA_FIELD_WRITE:"_metadata_field_write",METADATA_GLOBAL_READ:"_metadata_global_read",METADATA_GLOBAL_WRITE:"_metadata_global_write",METADATA_LOCK_READ:"_metadata_lock_read",METADATA_LOCK_WRITE:"_metadata_lock_write",METADATA_READ:"_metadata_read",METADATA_SCHEMA_READ:"_metadata_schema_read",METADATA_SCHEMA_WRITE:"_metadata_schema_write",METADATA_WRITE:"_metadata_write",OTIF_ANALYZE:"_otif_analyze",OTIF_READ:"_otif_read",OTIF_WRITE:"_otif_write",PLACEHOLDER_NOTIFICATION_READ:"_placeholder_notification_read",PLACEHOLDER_NOTIFICATION_WRITE:"_placeholder_notification_write",PROJECTION_READ:"_projection_read",PROJECTION_WRITE:"_projection_write",QUOTA_NOTIFICATION_READ:"_quota_notification_read",QUOTA_NOTIFICATION_WRITE:"_quota_notification_write",QUOTA_READ:"_quota_read",QUOTA_WRITE:"_quota_write",RELATION_READ:"_relation_read",RELATION_WRITE:"_relation_write",RESOURCE_READ:"_resource_read",RESOURCE_WRITE:"_resource_write",RUN_AS:"_run_as",SEARCH:"_search",SEQUENCE_READ:"_sequence_read",SEQUENCE_WRITE:"_sequence_write",SHAPE_TAG_READ:"_shape_tag_read",SHAPE_TAG_WRITE:"_shape_tag_write",SITE_MANAGER:"_site_manager",SITE_RULE_READ:"_site_rule_read",SITE_RULE_WRITE:"_site_rule_write",STORAGE_GROUP_READ:"_storage_group_read",STORAGE_GROUP_WRITE:"_storage_group_write",STORAGE_NOTIFICATION_READ:"_storage_notification_read",STORAGE_NOTIFICATION_WRITE:"_storage_notification_write",STORAGE_READ:"_storage_read",STORAGE_RULE_READ:"_storage_rule_read",STORAGE_RULE_WRITE:"_storage_rule_write",STORAGE_WRITE:"_storage_write",SUPER_ACCESS_USER:"_super_access_user",TASKDEFINITION_READ:"_taskdefinition_read",TASKDEFINITION_WRITE:"_taskdefinition_write",THUMBNAIL_READ:"_thumbnail_read",THUMBNAIL_WRITE:"_thumbnail_write",TRANSCODER:"_transcoder",TRANSFER_READ:"_transfer_read",TRANSFER_WRITE:"_transfer_write",USER:"_user",VXA:"_vxa",VXA_READ:"_vxa_read"},Ye=["stl_subtitle","stl_tti","stl_gsi","mrk_marker","pho_validation","pho_resource","pho_error","facedetect_rect","facedetect_face","originalTrackFilename","stl_gsiHeader"],ke=["title","user","shapeTag","representativeThumbnail","representativeThumbnailNoAuth","representativeItems","itemId","collectionId","mediaType","mimeType","created","startTimeCode","startSeconds","fieldValidationError","schemaValidationError","originalFilename","originalUri","originalAudioCodec","originalVideoCodec","originalHeight","originalWidth","originalFormat","durationSeconds","durationTimeCode","solr-index","__user","__collection","__collection_size","__ancestor_collection","__ancestor_collection_size","__shape","__shape_size","__shape_last_added","__placeholder_shape_size","__version","__version_count","__storage","__storage_size","__shapetag_{tag}_hash_{hash}","__storage_{tag}","__storage_{tag}_size","__storagegroup","__storagegroup_size","__sequence","__sequence_size","__metadata_last_modified","__external_id","__deletion_lock_id","__deletion_lock_expiry","__child_collection","__child_collection_size","__parent_collection","__parent_collection_size","__items_size","stl_text","stl_justification","stl_xrelative","stl_yrelative","stl_vertical","stl_verticalbase","stl_horizontalbase","stl_sizerelative","stl_color","stl_outline","stl_outlinecolor","stl_outlinesize","stl_font","stl_service","stl_tti","stl_gsi","cct","tcd","tcf","oet","cd","mnc","cpn","dfc","tcp","tcs","tet","tnb","tnd","en","co","tng","rd","mnr","dsc","opt","lc","tpt","tn","slr","tns","rn","pub","dsn","ecd","mrk_zerolength","mrk_text","mrk_color","pho_resource_name","pho_error_level","pho_error_code","pho_error_description","facedetect_rect_width","facedetect_rect_height","facedetect_rect_y","facedetect_rect_x","facedetect_pid","facedetect_rect","trackId","eidr_actor","eidr_alternateId","eidr_countryOfOrigin","eidr_director","eidr_id","eidr_referentType","eidr_releaseDate","eidr_resourceName","eidr_status","eidr_sync","ttml_div","ttml_root","vxa_collection_id","vxaId","vxaLocalPath","tco","cs","ebn","tf","cf","sgn","tci","jc","vp","sn"],U=["uuid","user","timestamp","change","conflict","mode"],ee=["name","id","referenced","data","inheritance"],te=[...U,"value","lang"],re=[...U,...ee,"value","reference","type","track"],ne=[...U,...ee,"cycle","field","group"],G=e=>Object.prototype.toString.call(e)==="[object Object]"&&e.value!==void 0,ie=e=>["string","boolean","number"].includes(typeof e),oe=e=>G(e)&&((e==null?void 0:e.value)===null||G(e.value)||ie(e.value)),He=e=>Object.prototype.toString.call(e)==="[object Object]",se=e=>Object.prototype.toString.call(e)==="[object Date]",ae=e=>e===null?!0:Array.isArray(e)?e.some(ae):ie(e)||oe(e)||se(e),ce=e=>{const t=r=>He(r)&&r.value===void 0&&!!Object.entries(e);return Array.isArray(e)?e.every(ce):t(e)},xe=(e,t)=>e+(t.length>1?"s":""),de=(e,t)=>{const r=e.filter(i=>!t.includes(i));if(r.length)throw Error(`Unsupported ${xe("key",r)} (${r.join(", ")})`)},ue=e=>{if(Array.isArray(e))throw Error("Invalid value inside value object, cannot be array");return[void 0,null].includes(e)?{}:se(e)?{value:e.toISOString()}:{value:e.toString()}},Ke=e=>{if(de(Object.keys(e),te),Object.keys(e).length===0)throw Error("Invalid value object, cannot be empty object");if(typeof(e==null?void 0:e.value)=="string")return e;const t=ue(e==null?void 0:e.value);return{...e,...t!==void 0?t:{}}},$=e=>{if(![void 0,null].includes(e))return Array.isArray(e)?e.flatMap($):G(e)?Ke(e):ue(e)},ze=e=>{de(Object.keys(e),re);const t=$(e==null?void 0:e.value);if(t===void 0){const{value:r,...i}=e;return i}return{...e,value:[...Array.isArray(t)?t:[t]]}},Je=e=>{if(oe(e))return ze(e);const t=$(e);if(t!==void 0)return{value:[...Array.isArray(t)?t:[t]]}},le=e=>{const t=[],r=[];let i={};return Object.entries(e||{}).forEach(([n,o])=>{if(ne.includes(n))i={...i,[n]:o};else if(ae(o))try{r.push({name:n,...Je(o)})}catch(a){throw Error(a.message+(n?` for field "${n}"`:""))}else if(ce(o))(Array.isArray(o)?o:[o]).forEach(a=>{t.push({name:n,...le(a)})});else throw Error(`Unhandled value for "${n}"`)}),{...i,...t.length>0?{group:t}:{},...r.length>0?{field:r}:{}}},Xe=e=>{const{start:t="-INF",end:r="+INF",base:i=void 0,...n}=e,{group:o,field:a}=le(n);return{...o?{group:o}:{},...a?{field:a}:{},start:t.toString(),end:r.toString(),...i?{base:i}:{}}},qe=e=>({timespan:(Array.isArray(e)?e:[e||{}]).map(t=>Xe(t))}),Qe=(e,t)=>{var n,o;const[r]=((n=e==null?void 0:e.start)==null?void 0:n.split("@"))||[],[i]=((o=t==null?void 0:t.start)==null?void 0:o.split("@"))||[];return Number(r)<Number(i)?-1:Number(r)>Number(i)?1:0},F=e=>Array.isArray(e)?e:e&&[e]||[],_e=e=>Array.isArray(e)?e.pop():e,Ze=e=>(e==null?void 0:e.every(t=>typeof t=="string"))||!1,me={includeValueAttributes:!1};function et(e,t){const{includeValueAttributes:r}={...me,...t||{}};if(r===!1)return e==null?void 0:e.value;const{value:i,...n}=e;return{...r===!0&&n||Array.isArray(r)&&Object.fromEntries(Object.entries(n).filter(([a])=>r.includes(a)))||{},value:i}}const fe={...me,joinValue:void 0,arrayOnSingleValue:!0};function tt(e,t){const{joinValue:r,arrayOnSingleValue:i,...n}={...fe,...t||{}},o=e==null?void 0:e.map(a=>et(a,n));return Ze(o)&&r?o==null?void 0:o.join(r):i!==!0&&(o==null?void 0:o.length)<=1?o==null?void 0:o[0]:o}const pe={includeFieldAttributes:!1,...fe},rt=(e,t)=>{const{includeFieldAttributes:r,...i}={...pe,...t||{}},{value:n,...o}=e,a=tt(n,i),s=r===!0&&o||Array.isArray(r)&&Object.fromEntries(Object.entries(o).filter(([c])=>r.includes(c)))||{};return r?{...s,value:a}:a},w={...pe,fieldAsList:!1,arrayOnSingleField:!1,overrideField:void 0},V=(e,t)=>{const r={...w,...t||{}},{fieldAsList:i,arrayOnSingleField:n,overrideField:o}=r,a=o===!0&&i===!1,s={};return e==null||e.forEach(c=>{const{name:l}=c,u=rt(c,r),_=n===!0?F(u):u,f=s[l];f?a?s[l]=u:s[l]=[F(f),F(u)].flat():s[l]=_}),i===!0?Object.values(s).flat():s},Te={...w,includeGroupAttributes:!1,groupAsList:!1,arrayOnSingleGroup:!1,overrideGroup:void 0},nt=(e,t)=>{const r={...Te,...t||{}},{includeGroupAttributes:i}=r,n=Object.fromEntries(Object.entries(r).filter(([_])=>Object.keys(w).includes(_))),{field:o,group:a,...s}=e,c=o&&V(o,n),l=a&&k(a,r);return{...i===!0&&s||Array.isArray(i)&&Object.fromEntries(Object.entries(s).filter(([_])=>i.includes(_)))||{},...n!=null&&n.fieldAsList?c&&{field:c}||{}:c,...r!=null&&r.groupAsList?l&&{group:l}||{}:l}},Y=Te,k=(e,t)=>{const r={...Y,...t||{}},{groupAsList:i,arrayOnSingleGroup:n,overrideGroup:o}=r,a=o===!0&&i===!1,s={};return e==null||e.forEach(c=>{const{name:l}=c,u=nt(c,r),_=n===!0?F(u):u,f=s[l];f?a?s[l]=u:s[l]=[F(f),F(u)].flat():s[l]=_}),i?Object.values(s).flat():s},Ee={...Y,includeTimespanAttributes:!1,flat:!1,arrayOnSingle:!1,arrayOnSingleValue:!0,arrayOnSingleGroup:void 0,arrayOnSingleField:void 0},he=(e,t)=>{const r={...Ee,...t||{}},{includeTimespanAttributes:i,arrayOnSingle:n,flat:o}=r,a=Object.fromEntries(Object.entries(t).map(([d,m])=>{if(Object.keys(Y).includes(d))return["arrayOnSingleGroup","arrayOnSingleField","arrayOnSingleValue"].includes(d)&&(m!==void 0?m:n===!0)?[d,!0]:["overrideGroup","overrideField"].includes(d)&&(m!==void 0?m:o===!0)?[d,!0]:[d,m]}).filter(d=>!!d)),s=Object.fromEntries(Object.entries(t).map(([d,m])=>{if(Object.keys(w).includes(d))return["arrayOnSingleField","arrayOnSingleValue"].includes(d)&&(m!==void 0?m:n===!0)?[d,!0]:["overrideField"].includes(d)&&(m!==void 0?m:o===!0)?[d,!0]:[d,m]}).filter(d=>!!d)),{field:c,group:l,...u}=e||{},_=c&&V(c,s),f=l&&k(l,a);return{...i===!0&&u||Array.isArray(i)&&Object.fromEntries(Object.entries(u).filter(([d])=>i.includes(d)))||{},...s!=null&&s.fieldAsList?{field:_}:_,...a!=null&&a.groupAsList?{group:f}:f}},H={...Ee,timespanAsList:!1,joinTimespan:"_",sortTimespan:!1,flat:!1,flatTimespan:void 0},x=(e,t)=>{const r={...H,...t||{}},{timespanAsList:i,joinTimespan:n,sortTimespan:o,flat:a,flatTimespan:s,...c}=r,l={flat:a,...c};o&&e.sort(Qe);const u=(s!==void 0?s===!0:a===!0)&&i===!1,_={};return e==null||e.forEach(f=>{const{start:T,end:d}=f,m=u?"flat":[T,d].join(n),E=he(f,l),h=_[m];h?u?T==="-INF"&&d==="+INF"?_[m]={..._e(h),...E}:_[m]={...E,..._e(h)}:_[m]=[...F(h),E]:_[m]=E}),i===!0?Object.values(_):u?Object.values(_).pop():_},it={...H,includeMetadataAttributes:!1,flat:!1};function ot(e,t){const r={...it,...t||{}},{includeMetadataAttributes:i,flat:n}=r,{timespan:o=[],...a}=e||{},s=Object.fromEntries(Object.entries(t).map(([u,_])=>{if(Object.keys(H).includes(u))return["onlyGeneric","overrideGroup","overrideField"].includes(u)&&(_!==void 0?_:n===!0)?[u,!0]:[u,_]}).filter(u=>!!u)),c=x(o,s);return{...i===!0&&{...a,...a.revision?{revision:a.revision.split(",")}:{}}||Array.isArray(i)&&Object.fromEntries(Object.entries(a).map(([u,_])=>{if(i.includes(u))return[u,u==="revision"&&typeof _=="string"?_.split(","):_]}).filter(u=>!!u))||{},...s!=null&&s.timespanAsList?{timespan:c}:c}}const st=e=>{const{field:t=[]}=e||{};return g(t)},K={PAL:{denominator:25,numerator:1},NTSC:{denominator:3e4,numerator:1001},NTSC30:{denominator:30,numerator:1},29.97:{denominator:3e4,numerator:1001},59.94:{denominator:6e4,numerator:1001},23.976:{denominator:48e3,numerator:2002},23.98:{denominator:48e3,numerator:2002}},Ae=Object.keys(K),Oe={toText:{constant:!1,fraction:!1},toRate:{fixed:!0,rounded:!1}};class A{constructor(t){this.numerator=1,this.denominator=1;const{numerator:r=1,denominator:i=1}=t||{};this.numerator=Number(r),this.denominator=Number(i)}toConstant(){let t;return Object.entries(K).find(r=>{const[i,n]=r,{numerator:o,denominator:a}=n;return o===this.numerator&&a===this.denominator?(t=i,!0):!1}),t}toText(t){const{constant:r,fraction:i}={...Oe.toText,...t};if(r){const o=this.toConstant();if(o)return o}return i||this.numerator>1?[this.denominator,this.numerator].join(":"):String(this.denominator)}toRate(t){const r=this.denominator/this.numerator;if(Number.isInteger(r))return r;const{rounded:i,fixed:n}={...Oe.toRate,...t||{}};return i?Math.round(r):n===!0||typeof n=="number"?Number(r.toFixed(typeof n=="boolean"?2:n)):r}toObject(){return{denominator:this.denominator,numerator:this.numerator}}toJson(){return console.warn("Deprecated - use toObject instead"),this.toObject()}}const L=e=>{if(e===void 0)return new A;if(typeof e=="number")return new A({denominator:e});if(typeof e=="string"&&e.includes(":")){const[t,r]=e.split(":");return new A({denominator:t,numerator:r})}if(Ae.includes(e))return new A(K[e]);if(!["string","number"].includes(typeof e)||Number.isNaN(Number(e)))throw new Error(`timeBaseText must be a number or ${Ae.join(",")} - is ${JSON.stringify(e)}`);return new A({denominator:Number(e)})},D=e=>new A(e),y=e=>e instanceof A?e:typeof e=="string"||typeof e=="number"?L(e):D(e),z=e=>{const t=e.toConstant();return t==="59.94"&&4||["NTSC","29.97"].includes(t)&&2||void 0},Ie=e=>z(e)>0,Se=e=>{const{samples:t,timeBase:r}=e,i=z(r);if(!i)return 0;const n=r.toRate({rounded:!0}),o=60*n,a=60*n-i,s=10*(o-i)+i,c=Math.floor((t+1)/s),l=Math.max(0,(t+1)%s-o),u=Math.floor(l/a),f=l%a>0?i:0;return c*9*i+u*i+f},J={conformTimeBase:{dropFrame:void 0,frameSeparator:void 0},toText:{constant:!1,fraction:!1,includeTimeBaseForSeconds:!1},toDuration:{format:void 0}};class S{constructor(t,r){this.samples=0,this.timeBase=new A;const{samples:i,timeBase:n}=t||{};if(i!==void 0)if(typeof i=="number")this.samples=i;else if(typeof i=="string")i==="-INF"?this.samples=-1/0:i==="+INF"?this.samples=1/0:this.samples=Number(i);else throw new Error(`samples is not number/string/-Inf/+Inf is: ${i}`);n!==void 0&&(n instanceof A?this.timeBase=n:this.timeBase=y(n)),this.dropFrame=(r==null?void 0:r.dropFrame)??Ie(this.timeBase),this.frameSeparator=(r==null?void 0:r.frameSeparator)??(this.dropFrame?";":":")}add(t){if(!(t!=null&&t.timeBase)||(t==null?void 0:t.samples)===void 0)throw Error("Invalid timeCodeType, cannot be added");const{numerator:r,denominator:i}=(t==null?void 0:t.timeBase)||{};let n=t;(r!==this.timeBase.numerator||i!==this.timeBase.denominator)&&(n=t.conformTimeBase(this.timeBase));const{samples:o}=n;return new S({samples:this.samples+o,timeBase:this.timeBase})}subtract(t){if(!(t!=null&&t.timeBase)||(t==null?void 0:t.samples)===void 0)throw Error("Invalid timeCodeType, cannot be subtracted");const{timeBase:{numerator:r,denominator:i}={}}=t;let n=t;(r!==this.timeBase.numerator||i!==this.timeBase.denominator)&&(n=t.conformTimeBase(this.timeBase));const{samples:o}=n;return new S({samples:this.samples-o,timeBase:this.timeBase})}conformTimeBase(t,r){const i=t instanceof A?t:y(t),n=Math.floor(this.samples/(this.timeBase.toRate({fixed:!1})/i.toRate({fixed:!1}))),o={...J.conformTimeBase,...r||{}};return new S({samples:n,timeBase:i},o)}toText(t){let r=`${this.samples}`;const i={...J.toText,...t||{}},n=this.timeBase.toText(i);return(t!=null&&t.includeTimeBaseForSeconds||!["1","1:1"].includes(n))&&(r=[this.samples,n].join("@")),r}toUnits(){if(this.samples===1/0)return{hours:1/0,minutes:1/0,seconds:1/0,frames:1/0};const t=this.samples+(this.dropFrame?Se(this):0);let r=this.timeBase.toRate({rounded:!0});["23.976","23.98"].includes(this.timeBase.toConstant())&&(r=this.timeBase.toRate({fixed:!0}));const i=Math.floor(t/(3600*r)),n=Math.floor(t/(60*r))%60,o=Math.floor(t/r)%60,a=Math.floor(t%r);return{hours:i,minutes:n,seconds:o,frames:a}}toTime(){const t=this.samples+Se(this),{hours:r,minutes:i,seconds:n}=this.toUnits(),o=this.timeBase.toRate({rounded:!0}),a=t%o,s=Math.floor(1e3*a/o),c=a/o;return{hours:r,minutes:i,seconds:n,milliseconds:s,partialSeconds:c}}toSeconds(){const{numerator:t,denominator:r}=this.timeBase;return Math.round(1e3*+(this.samples*t/r))/1e3}toDuration(t){const{format:r}={...J.toDuration,...t||{}},{hours:i,...n}=this.toTime();let{minutes:o,seconds:a,milliseconds:s}=n;if(r&&typeof r!="string")throw Error("format has to be a string");const c=(f,T)=>!r.includes(f)||!T.some(d=>r.includes(d)&&r.lastIndexOf(f)>r.indexOf(d));if(r&&!(c("h",["m","s","S"])&&c("m",["s","S"])&&c("s",["S"])))throw Error("format order is unsupported (has to be h, m, s then S)");if(!r)return`${i>0?`${i}:${`${o}`.padStart(2,"0")}`:o}:${`${a}`.padStart(2,"0")}`;const l=(f,T)=>{let d=f;for(;T[d]===T[d+1];)d+=1;return d-f+1},u=["h","m","s","S"],_=[];return[...r].forEach((f,T,d)=>{switch(f){case"h":{if(d[T-1]==="h")break;const m=l(T,d);_.push(`${i}`.padStart(m,"0")),u.includes(d[T+m])&&_.push(":");break}case"m":{if(d[T-1]==="m")break;const m=l(T,d);r.includes("h")||(o+=i*60),_.push(`${o}`.padStart(m,"0")),u.includes(d[T+m])&&_.push(":");break}case"s":{if(d[T-1]==="s")break;const m=l(T,d);r.includes("m")||(a+=o*60),_.push(`${a}`.padStart(m,"0")),u.includes(d[T+m])&&_.push(".");break}case"S":{if(d[T-1]==="S")break;const m=l(T,d);r.includes("s")||(s+=a*1e3),_.push(`${Math.round(s/10**(3-m))}`.padStart(m,"0"));break}default:_.push(f)}}),_.join("")}toSmpte(){if(this.samples===-1/0)return"00:00:00:00";const{hours:t,minutes:r,seconds:i,frames:n}=this.toUnits(),o=[t.toFixed().padStart(2,"0"),r.toFixed().padStart(2,"0"),i.toFixed().padStart(2,"0")].join(":"),a=Math.max(2,`${this.timeBase.toRate({rounded:!0})-1}`.length);return[o,`${n}`.padStart(a,"0")].join(this.frameSeparator)}toObject(){return{samples:this.samples,timeBase:this.timeBase.toObject()}}toJson(){return console.warn("Deprecated - use toObject instead"),this.toObject()}}const at=(e,t)=>{let r=Math.abs(e),i=Math.abs(t);for(;r&&i&&r!==i;)r>i?[r,i]=[r-i,i]:[r,i]=[r,i-r];return r||i},Re=(e,t)=>{const{timeBase:r,useGCD:i=!1,...n}=t||{},o=`${e}`.replace(/,/g,".");if(Number.isNaN(+o))throw new Error(`seconds must be digits, is ${e}`);let a=1,s;if(Number.isInteger(+o))s=+o*a;else{const[,l]=o.split("."),u=Math.min((l==null?void 0:l.length)??0,16);a*=10**u,s=Math.round(Number(o)*a)}if(r===void 0&&i){const l=at(a,s);s/=l,a/=l}const c=new S({samples:s,timeBase:{denominator:a,numerator:1}},n);return r!==void 0?c.conformTimeBase(y(r),n):c},ct=([e,t,r,i],n,o)=>{const a=o.toRate({rounded:!0}),s=z(o);if(n===0||!s)return 0;const c=t%10!==0,l=c&&r===0,u=e*(3600*a-54*s),_=t*60*a-(t-Math.ceil(t/10))*s,f=r*a-(c&&r>1?s:0);if(l&&i<s)throw new Error(`Frame does not exist for ${o.toConstant()||o.toRate()} drop-frame`);const T=l?i-s:i,d=u+_+f+T;return n-d},X=(e,t,r)=>{const[i,n,o,a]=e,s=t.toRate({rounded:!0}),c=i*3600*s+n*60*s+o*s+a;return c-(r?ct(e,c,t):0)},dt=e=>{const[t]=(e==null?void 0:e.match(/[^0-9:\-_]/))||[];let r=[];if(t){const[n,o]=e.split(t);r=[...n.split(":"),o]}else r=e.split(":");if(r.length!==4)throw new Error('Invalid format, must be "##:##:##:##');if(r.some(n=>Number.isNaN(n)))throw new Error("Invalid format, values must be numbers");const i=t||":";return{smpteValues:r.map(Number),smpteFrameSeparator:i}},ut=["error","add","ignore"],lt={exceedingMode:"error",timeBase:void 0,dropFrame:void 0,frameSeparator:void 0},ge=(e,t)=>{const{exceedingMode:r,timeBase:i,...n}={...lt,...t};if([null,void 0].includes(e))throw new Error("smpte cannot be undefined or null");if(typeof e!="string")throw new Error(`smpte must be a string, is ${JSON.stringify(e)}`);const{smpteValues:o,smpteFrameSeparator:a}=dt(e),s=y(i),c={...n,frameSeparator:(n==null?void 0:n.frameSeparator)||a,...(n==null?void 0:n.dropFrame)===void 0?{dropFrame:i!==void 0?Ie(s):[";",","].includes(a)}:{}},l=s.toRate({rounded:!0}),u=Math.max(0,l-1);if(o.some(f=>f<0))throw new Error("Negative values are not supported");let _;switch(r){case"error":{const[f,T,d,m]=o;if(f>=100||T>=60)throw Error("Minutes has to be less than 60");if(d>=60)throw Error("Seconds has to be less than 60");if(m>u)throw Error(`Frames has to be less or equal to ${u}`);_=X(o,s,c==null?void 0:c.dropFrame);break}case"ignore":{const[f,T,d,m]=o,E=[Math.min(100,f),Math.min(59,T),Math.min(59,d),Math.min(u,m)];_=X(E,s,c==null?void 0:c.dropFrame);break}case"add":{_=X(o,s,c==null?void 0:c.dropFrame);break}default:throw new Error(`Invalid exceedingMode, options are ${JSON.stringify(ut)}`)}return new S({samples:_,timeBase:s},c)},_t={timeBase:void 0,dropFrame:void 0,frameSeparator:void 0},C=(e,t)=>{const{timeBase:r,...i}={..._t,...t};let n;if(e===void 0)n={samples:0};else if(typeof e=="number")n={samples:e};else if(e.includes("@")){const[a,s]=e.split("@");n={samples:Number(a),timeBase:L(s)}}else e==="-INF"?n={samples:-1/0}:e==="+INF"?n={samples:1/0}:n={samples:Number(e)};if(Number.isNaN(n==null?void 0:n.samples)||n.timeBase&&!(n.timeBase instanceof A))throw new Error(`timeCodeText must be a number or sample@timeBase - is ${e}`);const o=new S(n,i);return r?o.conformTimeBase(y(r),i):o},mt={dropFrame:void 0,frameSeparator:void 0},M=(e,t)=>new S(e,{...mt,...t}),ft=e=>!!e.match(/^(\d\d+):(\d\d+):(\d\d+)(:|;|\.|,)(\d\d+)$/),pt=e=>!Number.isNaN(Number(e)),be=(e,t)=>{if(e instanceof S)return e;if(typeof e!="string"&&typeof e!="number")return M(e,t);if(typeof e=="string"&&ft(e))return ge(e,t);if(["string","number"].includes(typeof e)&&pt(e))return Re(e,t);if(typeof e=="string")return C(e,t)};function Ne({hours:e=0,minutes:t=0,seconds:r=0,partialSeconds:i=0}){const n=e.toFixed().padStart(2,"0"),o=t.toFixed().padStart(2,"0"),a=r.toFixed().padStart(2,"0"),s=(i*10).toFixed().padStart(3,"0");return`${n}:${o}:${a}.${s}`}const Tt={subtitleGroup:"stl_subtitle",subtitleField:"stl_text"},Et=(e,t)=>{const{subtitleGroup:r,subtitleField:i}={...Tt,...t||{}},{timespan:n=[]}=e||{};return n.length===0?"":`WEBVTT
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
${x(n,{includeTimespanAttributes:!0,sortTimespan:!0,timespanAsList:!0,overrideGroup:!0,joinValue:","}).map(s=>{const{start:c,end:l,[r]:{[i]:u}={}}=(Array.isArray(s)?s[0]:s)||{};if(!u)return"";const _=Ne(C(c).toTime()),f=Ne(C(l).toTime());return`${_} --> ${f} line:0%\r${u}\r`}).join(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vidispine/vdt-js",
|
|
3
|
-
"version": "23.
|
|
3
|
+
"version": "23.3.0-pre.1",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -29,39 +29,53 @@
|
|
|
29
29
|
"build": "yarn vite build",
|
|
30
30
|
"build:watch": "yarn vite build --watch --mode development",
|
|
31
31
|
"build:docs": "yarn typedoc --out ../../docs/build/vdt-js",
|
|
32
|
-
"
|
|
32
|
+
"update:docs": "yarn typedoc --logLevel Error && echo \"vdt-js docs updated\"",
|
|
33
|
+
"start:docs": "rimraf build/docs && yarn update:docs && yarn vite serve -c vite.docs.config",
|
|
33
34
|
"type-check": "tsc --noEmit --emitDeclarationOnly false",
|
|
34
35
|
"typedoc-check": "yarn typedoc --emit none --treatWarningsAsErrors --validation.invalidLink true --validation.notExported true --validation.notDocumented true",
|
|
35
|
-
"lint": "yarn type-check && eslint . --max-warnings=0 --ext .js,.jsx,.ts,.tsx,.md,.mdx",
|
|
36
|
+
"lint": "yarn type-check && eslint . --cache --max-warnings=0 --ext .js,.jsx,.ts,.tsx,.md,.mdx",
|
|
36
37
|
"format": "prettier . --check"
|
|
37
38
|
},
|
|
38
39
|
"dependencies": {
|
|
39
|
-
"@vidispine/types": "23.
|
|
40
|
+
"@vidispine/types": "23.3.0-pre.1",
|
|
40
41
|
"filesize": "^10.0.6"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
|
-
"@
|
|
44
|
-
"@vidispine/eslint-config-
|
|
45
|
-
"@vidispine/eslint-config-
|
|
46
|
-
"@vidispine/eslint-config-
|
|
47
|
-
"@vidispine/
|
|
48
|
-
"@vidispine/types": "23.
|
|
44
|
+
"@vidispine/eslint-config-base": "23.3.0-pre.1",
|
|
45
|
+
"@vidispine/eslint-config-mdx": "23.3.0-pre.1",
|
|
46
|
+
"@vidispine/eslint-config-storybook": "23.3.0-pre.1",
|
|
47
|
+
"@vidispine/eslint-config-typescript": "23.3.0-pre.1",
|
|
48
|
+
"@vidispine/tests": "23.3.0-pre.1",
|
|
49
|
+
"@vidispine/types": "23.3.0-pre.1",
|
|
49
50
|
"concurrently": "7.6.0",
|
|
50
51
|
"eslint": "8.34.0",
|
|
51
|
-
"
|
|
52
|
+
"eslint-plugin-testing-library": "5.10.2",
|
|
52
53
|
"prettier": "2.8.4",
|
|
53
54
|
"rimraf": "3.0.2",
|
|
54
55
|
"typedoc": "0.23.25",
|
|
55
56
|
"typedoc-plugin-missing-exports": "1.0.0",
|
|
56
57
|
"typescript": "4.9.5",
|
|
57
|
-
"vite": "4.
|
|
58
|
-
"vite-plugin-dts": "2.
|
|
58
|
+
"vite": "4.3.1",
|
|
59
|
+
"vite-plugin-dts": "2.3.0"
|
|
59
60
|
},
|
|
60
61
|
"eslintConfig": {
|
|
61
62
|
"extends": [
|
|
62
63
|
"@vidispine/eslint-config-base",
|
|
63
64
|
"@vidispine/eslint-config-mdx",
|
|
64
65
|
"@vidispine/eslint-config-storybook"
|
|
66
|
+
],
|
|
67
|
+
"overrides": [
|
|
68
|
+
{
|
|
69
|
+
"files": [
|
|
70
|
+
"*.test.[jt]s"
|
|
71
|
+
],
|
|
72
|
+
"extends": [
|
|
73
|
+
"plugin:testing-library/dom"
|
|
74
|
+
],
|
|
75
|
+
"rules": {
|
|
76
|
+
"testing-library/no-debugging-utils": "warn"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
65
79
|
]
|
|
66
80
|
},
|
|
67
81
|
"prettier": "@vidispine/prettier-config"
|