@vidispine/vdt-js 22.4.0-pre.4 → 22.4.0-pre.5

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.es.js CHANGED
@@ -1,7 +1,7 @@
1
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
1
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
2
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
4
3
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
5
  import _typeof from '@babel/runtime/helpers/typeof';
6
6
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
7
7
  import _createClass from '@babel/runtime/helpers/createClass';
@@ -11,9 +11,15 @@ var gcd = function gcd(a, b) {
11
11
  return b ? gcd(b, a % b) : a;
12
12
  };
13
13
 
14
- var parseAspectRatio = function parseAspectRatio(_ref) {
15
- var width = _ref.width,
14
+ var parseAspectRatio = function parseAspectRatio(aspectRatio) {
15
+ var _ref = aspectRatio || {},
16
+ width = _ref.width,
16
17
  height = _ref.height;
18
+
19
+ if (width === undefined || height === undefined) {
20
+ return undefined;
21
+ }
22
+
17
23
  var denominator = gcd(width, height);
18
24
  var widthRatio = width / denominator;
19
25
  var heightRatio = height / denominator;
@@ -26,256 +32,196 @@ var parseAspectRatio = function parseAspectRatio(_ref) {
26
32
  return [widthRatio, heightRatio].join(':');
27
33
  };
28
34
 
29
- function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
+ /**
36
+ *
37
+ * @param keyValuePairTypes
38
+ * @returns
39
+ *
40
+ * @category Other
41
+ */
42
+ var parseKeyValuePairTypes = function parseKeyValuePairTypes(keyValuePairTypes) {
43
+ return Object.fromEntries(keyValuePairTypes.map(function (_ref) {
44
+ var key = _ref.key,
45
+ value = _ref.value;
46
+ return [key, value];
47
+ }));
48
+ };
30
49
 
31
- function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
50
+ /**
51
+ * Object with all name of roles in VidiCore
52
+ *
53
+ * @category Auth
54
+ */
55
+ var ROLE_NAMES = {
56
+ ACCESSCONTROL_READ: '_accesscontrol_read',
57
+ ACCESSCONTROL_WRITE: '_accesscontrol_write',
58
+ ADMINISTRATOR: '_administrator',
59
+ AUTO_PROJECTION_READ: '_auto_projection_read',
60
+ AUTO_PROJECTION_WRITE: '_auto_projection_write',
61
+ COLLECTION_NOTIFICATION_READ: '_collection_notification_read',
62
+ COLLECTION_NOTIFICATION_WRITE: '_collection_notification_write',
63
+ COLLECTION_READ: '_collection_read',
64
+ COLLECTION_WRITE: '_collection_write',
65
+ CONFIGURATION_READ: '_configuration_read',
66
+ DELETION_LOCK_NOTIFICATION_READ: '_deletion_lock_notification_read',
67
+ DELETION_LOCK_NOTIFICATION_WRITE: '_deletion_lock_notification_write',
68
+ DELETION_LOCK_READ: '_deletion_lock_read',
69
+ DELETION_LOCK_WRITE: '_deletion_lock_write',
70
+ DOCUMENT_NOTIFICATION_READ: '_document_notification_read',
71
+ DOCUMENT_NOTIFICATION_WRITE: '_document_notification_write',
72
+ DOCUMENT_READ: '_document_read',
73
+ DOCUMENT_WRITE: '_document_write',
74
+ ERROR_READ: '_error_read',
75
+ ERROR_WRITE: '_error_write',
76
+ EXPORT: '_export',
77
+ EXPORT_TEMPLATE_READ: '_export_template_read',
78
+ EXPORT_TEMPLATE_WRITE: '_export_template_write',
79
+ EXTERNAL_ID_READ: '_external_id_read',
80
+ EXTERNAL_ID_WRITE: '_external_id_write',
81
+ FILE_NOTIFICATION_READ: '_file_notification_read',
82
+ FILE_NOTIFICATION_WRITE: '_file_notification_write',
83
+ FILE_READ: '_file_read',
84
+ FILE_WRITE: '_file_write',
85
+ GROUP_READ: '_group_read',
86
+ GROUP_WRITE: '_group_write',
87
+ IMPORT_WRITE: '_import',
88
+ ITEM_ID_READ: '_item_id_read',
89
+ ITEM_ID_WRITE: '_item_id_write',
90
+ ITEM_NOTIFICATION_READ: '_item_notification_read',
91
+ ITEM_NOTIFICATION_WRITE: '_item_notification_write',
92
+ ITEM_WRITE: '_item_write',
93
+ ITEM_SEARCH: '_item_search',
94
+ ITEM_SHAPE_READ: '_item_shape_read',
95
+ ITEM_SHAPE_WRITE: '_item_shape_write',
96
+ ITEM_TIMELINE_READ: '_item_timeline_read',
97
+ ITEM_TIMELINE_WRITE: '_item_timeline_write',
98
+ ITEM_URI: '_item_uri',
99
+ JOB_NOTIFICATION_READ: '_job_notification_read',
100
+ JOB_NOTIFICATION_WRITE: '_job_notification_write',
101
+ JOB_READ: '_job_read',
102
+ JOB_WRITE: '_job_write',
103
+ LIBRARY_READ: '_library_read',
104
+ LIBRARY_WRITE: '_library_write',
105
+ LOCK_READ: '_lock_read',
106
+ LOCK_WRITE: '_lock_write',
107
+ LOG_READ: '_log_read',
108
+ METADATA_DATASET_READ: '_metadata_dataset_read',
109
+ METADATA_DATASET_WRITE: '_metadata_dataset_write',
110
+ METADATA_FIELD_GROUP_READ: '_metadata_field_group_read',
111
+ METADATA_FIELD_GROUP_WRITE: '_metadata_field_group_write',
112
+ METADATA_FIELD_READ: '_metadata_field_read',
113
+ METADATA_FIELD_WRITE: '_metadata_field_write',
114
+ METADATA_GLOBAL_READ: '_metadata_global_read',
115
+ METADATA_GLOBAL_WRITE: '_metadata_global_write',
116
+ METADATA_LOCK_READ: '_metadata_lock_read',
117
+ METADATA_LOCK_WRITE: '_metadata_lock_write',
118
+ METADATA_READ: '_metadata_read',
119
+ METADATA_SCHEMA_READ: '_metadata_schema_read',
120
+ METADATA_SCHEMA_WRITE: '_metadata_schema_write',
121
+ METADATA_WRITE: '_metadata_write',
122
+ OTIF_ANALYZE: '_otif_analyze',
123
+ OTIF_READ: '_otif_read',
124
+ OTIF_WRITE: '_otif_write',
125
+ PLACEHOLDER_NOTIFICATION_READ: '_placeholder_notification_read',
126
+ PLACEHOLDER_NOTIFICATION_WRITE: '_placeholder_notification_write',
127
+ PROJECTION_READ: '_projection_read',
128
+ PROJECTION_WRITE: '_projection_write',
129
+ QUOTA_NOTIFICATION_READ: '_quota_notification_read',
130
+ QUOTA_NOTIFICATION_WRITE: '_quota_notification_write',
131
+ QUOTA_READ: '_quota_read',
132
+ QUOTA_WRITE: '_quota_write',
133
+ RELATION_READ: '_relation_read',
134
+ RELATION_WRITE: '_relation_write',
135
+ RESOURCE_READ: '_resource_read',
136
+ RESOURCE_WRITE: '_resource_write',
137
+ RUN_AS: '_run_as',
138
+ SEARCH: '_search',
139
+ SEQUENCE_READ: '_sequence_read',
140
+ SEQUENCE_WRITE: '_sequence_write',
141
+ SHAPE_TAG_READ: '_shape_tag_read',
142
+ SHAPE_TAG_WRITE: '_shape_tag_write',
143
+ SITE_MANAGER: '_site_manager',
144
+ SITE_RULE_READ: '_site_rule_read',
145
+ SITE_RULE_WRITE: '_site_rule_write',
146
+ STORAGE_GROUP_READ: '_storage_group_read',
147
+ STORAGE_GROUP_WRITE: '_storage_group_write',
148
+ STORAGE_NOTIFICATION_READ: '_storage_notification_read',
149
+ STORAGE_NOTIFICATION_WRITE: '_storage_notification_write',
150
+ STORAGE_READ: '_storage_read',
151
+ STORAGE_RULE_READ: '_storage_rule_read',
152
+ STORAGE_RULE_WRITE: '_storage_rule_write',
153
+ STORAGE_WRITE: '_storage_write',
154
+ SUPER_ACCESS_USER: '_super_access_user',
155
+ TASKDEFINITION_READ: '_taskdefinition_read',
156
+ TASKDEFINITION_WRITE: '_taskdefinition_write',
157
+ THUMBNAIL_READ: '_thumbnail_read',
158
+ THUMBNAIL_WRITE: '_thumbnail_write',
159
+ TRANSCODER: '_transcoder',
160
+ TRANSFER_READ: '_transfer_read',
161
+ TRANSFER_WRITE: '_transfer_write',
162
+ USER: '_user',
163
+ VXA: '_vxa',
164
+ VXA_READ: '_vxa_read'
165
+ };
166
+
167
+ var SHARED_ATTRIBUTE_KEYS = ['uuid', 'user', 'timestamp', 'change', 'conflict', 'mode'];
168
+ var SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS = ['name', 'id', 'referenced', 'data', 'inheritance'];
169
+ /**
170
+ * Array with all available metadata group attributes
171
+ *
172
+ * @category Metadata
173
+ */
174
+
175
+ var GROUP_ATTRIBUTE_KEYS = [].concat(SHARED_ATTRIBUTE_KEYS, SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS, ['cycle', 'field', 'group']);
176
+ /**
177
+ * Array with all available metadata group attributes
178
+ *
179
+ * @category Metadata
180
+ */
32
181
 
33
- var parseKeyValuePairType = function parseKeyValuePairType() {
34
- var keyValuePairType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
182
+ var FIELD_ATTRIBUTE_KEYS = [].concat(SHARED_ATTRIBUTE_KEYS, SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS, ['value', 'reference', 'type', 'track']);
183
+ /**
184
+ * Array with all available metadata field value attributes
185
+ *
186
+ * @category Metadata
187
+ */
35
188
 
36
- var keyValuePairTypeReducer = function keyValuePairTypeReducer(a, _ref) {
37
- var key = _ref.key,
38
- value = _ref.value;
39
- return _objectSpread$b(_objectSpread$b({}, a), {}, _defineProperty({}, key, value));
40
- };
189
+ var FIELD_VALUE_ATTRIBUTE_KEYS = [].concat(SHARED_ATTRIBUTE_KEYS, ['value', 'lang']);
41
190
 
42
- return keyValuePairType.reduce(keyValuePairTypeReducer, {});
43
- };
44
-
45
- var ACCESSCONTROL_READ = '_accesscontrol_read';
46
- var ACCESSCONTROL_WRITE = '_accesscontrol_write';
47
- var ADMINISTRATOR = '_administrator';
48
- var AUTO_PROJECTION_READ = '_auto_projection_read';
49
- var AUTO_PROJECTION_WRITE = '_auto_projection_write';
50
- var COLLECTION_NOTIFICATION_READ = '_collection_notification_read';
51
- var COLLECTION_NOTIFICATION_WRITE = '_collection_notification_write';
52
- var COLLECTION_READ = '_collection_read';
53
- var COLLECTION_WRITE = '_collection_write';
54
- var DELETION_LOCK_NOTIFICATION_READ = '_deletion_lock_notification_read';
55
- var DELETION_LOCK_NOTIFICATION_WRITE = '_deletion_lock_notification_write';
56
- var DELETION_LOCK_READ = '_deletion_lock_read';
57
- var DELETION_LOCK_WRITE = '_deletion_lock_write';
58
- var DOCUMENT_NOTIFICATION_READ = '_document_notification_read';
59
- var DOCUMENT_NOTIFICATION_WRITE = '_document_notification_write';
60
- var DOCUMENT_READ = '_document_read';
61
- var DOCUMENT_WRITE = '_document_write';
62
- var ERROR_READ = '_error_read';
63
- var ERROR_WRITE = '_error_write';
64
- var EXPORT = '_export';
65
- var EXPORT_TEMPLATE_READ = '_export_template_read';
66
- var EXPORT_TEMPLATE_WRITE = '_export_template_write';
67
- var EXTERNAL_ID_READ = '_external_id_read';
68
- var EXTERNAL_ID_WRITE = '_external_id_write';
69
- var FILE_NOTIFICATION_READ = '_file_notification_read';
70
- var FILE_NOTIFICATION_WRITE = '_file_notification_write';
71
- var FILE_READ = '_file_read';
72
- var FILE_WRITE = '_file_write';
73
- var GROUP_READ = '_group_read';
74
- var GROUP_WRITE = '_group_write';
75
- var IMPORT_WRITE = '_import';
76
- var ITEM_ID_READ = '_item_id_read';
77
- var ITEM_ID_WRITE = '_item_id_write';
78
- var ITEM_NOTIFICATION_READ = '_item_notification_read';
79
- var ITEM_NOTIFICATION_WRITE = '_item_notification_write';
80
- var ITEM_WRITE = '_item_write';
81
- var ITEM_SEARCH = '_item_search';
82
- var ITEM_SHAPE_READ = '_item_shape_read';
83
- var ITEM_SHAPE_WRITE = '_item_shape_write';
84
- var ITEM_TIMELINE_READ = '_item_timeline_read';
85
- var ITEM_TIMELINE_WRITE = '_item_timeline_write';
86
- var ITEM_URI = '_item_uri';
87
- var JOB_NOTIFICATION_READ = '_job_notification_read';
88
- var JOB_NOTIFICATION_WRITE = '_job_notification_write';
89
- var JOB_READ = '_job_read';
90
- var JOB_WRITE = '_job_write';
91
- var LIBRARY_READ = '_library_read';
92
- var LIBRARY_WRITE = '_library_write';
93
- var LOCK_READ = '_lock_read';
94
- var LOCK_WRITE = '_lock_write';
95
- var LOG_READ = '_log_read';
96
- var METADATA_DATASET_READ = '_metadata_dataset_read';
97
- var METADATA_DATASET_WRITE = '_metadata_dataset_write';
98
- var METADATA_FIELD_GROUP_READ = '_metadata_field_group_read';
99
- var METADATA_FIELD_GROUP_WRITE = '_metadata_field_group_write';
100
- var METADATA_FIELD_READ = '_metadata_field_read';
101
- var METADATA_FIELD_WRITE = '_metadata_field_write';
102
- var METADATA_GLOBAL_READ = '_metadata_global_read';
103
- var METADATA_GLOBAL_WRITE = '_metadata_global_write';
104
- var METADATA_LOCK_READ = '_metadata_lock_read';
105
- var METADATA_LOCK_WRITE = '_metadata_lock_write';
106
- var METADATA_READ = '_metadata_read';
107
- var METADATA_SCHEMA_READ = '_metadata_schema_read';
108
- var METADATA_SCHEMA_WRITE = '_metadata_schema_write';
109
- var METADATA_WRITE = '_metadata_write';
110
- var OTIF_ANALYZE = '_otif_analyze';
111
- var OTIF_READ = '_otif_read';
112
- var OTIF_WRITE = '_otif_write';
113
- var PLACEHOLDER_NOTIFICATION_READ = '_placeholder_notification_read';
114
- var PLACEHOLDER_NOTIFICATION_WRITE = '_placeholder_notification_write';
115
- var PROJECTION_READ = '_projection_read';
116
- var PROJECTION_WRITE = '_projection_write';
117
- var QUOTA_NOTIFICATION_READ = '_quota_notification_read';
118
- var QUOTA_NOTIFICATION_WRITE = '_quota_notification_write';
119
- var QUOTA_READ = '_quota_read';
120
- var QUOTA_WRITE = '_quota_write';
121
- var RELATION_READ = '_relation_read';
122
- var RELATION_WRITE = '_relation_write';
123
- var RESOURCE_READ = '_resource_read';
124
- var RESOURCE_WRITE = '_resource_write';
125
- var RUN_AS = '_run_as';
126
- var SEARCH = '_search';
127
- var SEQUENCE_READ = '_sequence_read';
128
- var SEQUENCE_WRITE = '_sequence_write';
129
- var SHAPE_TAG_READ = '_shape_tag_read';
130
- var SHAPE_TAG_WRITE = '_shape_tag_write';
131
- var SITE_MANAGER = '_site_manager';
132
- var SITE_RULE_READ = '_site_rule_read';
133
- var SITE_RULE_WRITE = '_site_rule_write';
134
- var STORAGE_GROUP_READ = '_storage_group_read';
135
- var STORAGE_GROUP_WRITE = '_storage_group_write';
136
- var STORAGE_NOTIFICATION_READ = '_storage_notification_read';
137
- var STORAGE_NOTIFICATION_WRITE = '_storage_notification_write';
138
- var STORAGE_READ = '_storage_read';
139
- var STORAGE_RULE_READ = '_storage_rule_read';
140
- var STORAGE_RULE_WRITE = '_storage_rule_write';
141
- var STORAGE_WRITE = '_storage_write';
142
- var SUPER_ACCESS_USER = '_super_access_user';
143
- var TASKDEFINITION_READ = '_taskdefinition_read';
144
- var TASKDEFINITION_WRITE = '_taskdefinition_write';
145
- var THUMBNAIL_READ = '_thumbnail_read';
146
- var THUMBNAIL_WRITE = '_thumbnail_write';
147
- var TRANSCODER = '_transcoder';
148
- var TRANSFER_READ = '_transfer_read';
149
- var TRANSFER_WRITE = '_transfer_write';
150
- var USER = '_user';
151
- var VXA = '_vxa';
152
- var VXA_READ = '_vxa_read';
153
-
154
- var roles = /*#__PURE__*/Object.freeze({
155
- __proto__: null,
156
- ACCESSCONTROL_READ: ACCESSCONTROL_READ,
157
- ACCESSCONTROL_WRITE: ACCESSCONTROL_WRITE,
158
- ADMINISTRATOR: ADMINISTRATOR,
159
- AUTO_PROJECTION_READ: AUTO_PROJECTION_READ,
160
- AUTO_PROJECTION_WRITE: AUTO_PROJECTION_WRITE,
161
- COLLECTION_NOTIFICATION_READ: COLLECTION_NOTIFICATION_READ,
162
- COLLECTION_NOTIFICATION_WRITE: COLLECTION_NOTIFICATION_WRITE,
163
- COLLECTION_READ: COLLECTION_READ,
164
- COLLECTION_WRITE: COLLECTION_WRITE,
165
- DELETION_LOCK_NOTIFICATION_READ: DELETION_LOCK_NOTIFICATION_READ,
166
- DELETION_LOCK_NOTIFICATION_WRITE: DELETION_LOCK_NOTIFICATION_WRITE,
167
- DELETION_LOCK_READ: DELETION_LOCK_READ,
168
- DELETION_LOCK_WRITE: DELETION_LOCK_WRITE,
169
- DOCUMENT_NOTIFICATION_READ: DOCUMENT_NOTIFICATION_READ,
170
- DOCUMENT_NOTIFICATION_WRITE: DOCUMENT_NOTIFICATION_WRITE,
171
- DOCUMENT_READ: DOCUMENT_READ,
172
- DOCUMENT_WRITE: DOCUMENT_WRITE,
173
- ERROR_READ: ERROR_READ,
174
- ERROR_WRITE: ERROR_WRITE,
175
- EXPORT: EXPORT,
176
- EXPORT_TEMPLATE_READ: EXPORT_TEMPLATE_READ,
177
- EXPORT_TEMPLATE_WRITE: EXPORT_TEMPLATE_WRITE,
178
- EXTERNAL_ID_READ: EXTERNAL_ID_READ,
179
- EXTERNAL_ID_WRITE: EXTERNAL_ID_WRITE,
180
- FILE_NOTIFICATION_READ: FILE_NOTIFICATION_READ,
181
- FILE_NOTIFICATION_WRITE: FILE_NOTIFICATION_WRITE,
182
- FILE_READ: FILE_READ,
183
- FILE_WRITE: FILE_WRITE,
184
- GROUP_READ: GROUP_READ,
185
- GROUP_WRITE: GROUP_WRITE,
186
- IMPORT_WRITE: IMPORT_WRITE,
187
- ITEM_ID_READ: ITEM_ID_READ,
188
- ITEM_ID_WRITE: ITEM_ID_WRITE,
189
- ITEM_NOTIFICATION_READ: ITEM_NOTIFICATION_READ,
190
- ITEM_NOTIFICATION_WRITE: ITEM_NOTIFICATION_WRITE,
191
- ITEM_WRITE: ITEM_WRITE,
192
- ITEM_SEARCH: ITEM_SEARCH,
193
- ITEM_SHAPE_READ: ITEM_SHAPE_READ,
194
- ITEM_SHAPE_WRITE: ITEM_SHAPE_WRITE,
195
- ITEM_TIMELINE_READ: ITEM_TIMELINE_READ,
196
- ITEM_TIMELINE_WRITE: ITEM_TIMELINE_WRITE,
197
- ITEM_URI: ITEM_URI,
198
- JOB_NOTIFICATION_READ: JOB_NOTIFICATION_READ,
199
- JOB_NOTIFICATION_WRITE: JOB_NOTIFICATION_WRITE,
200
- JOB_READ: JOB_READ,
201
- JOB_WRITE: JOB_WRITE,
202
- LIBRARY_READ: LIBRARY_READ,
203
- LIBRARY_WRITE: LIBRARY_WRITE,
204
- LOCK_READ: LOCK_READ,
205
- LOCK_WRITE: LOCK_WRITE,
206
- LOG_READ: LOG_READ,
207
- METADATA_DATASET_READ: METADATA_DATASET_READ,
208
- METADATA_DATASET_WRITE: METADATA_DATASET_WRITE,
209
- METADATA_FIELD_GROUP_READ: METADATA_FIELD_GROUP_READ,
210
- METADATA_FIELD_GROUP_WRITE: METADATA_FIELD_GROUP_WRITE,
211
- METADATA_FIELD_READ: METADATA_FIELD_READ,
212
- METADATA_FIELD_WRITE: METADATA_FIELD_WRITE,
213
- METADATA_GLOBAL_READ: METADATA_GLOBAL_READ,
214
- METADATA_GLOBAL_WRITE: METADATA_GLOBAL_WRITE,
215
- METADATA_LOCK_READ: METADATA_LOCK_READ,
216
- METADATA_LOCK_WRITE: METADATA_LOCK_WRITE,
217
- METADATA_READ: METADATA_READ,
218
- METADATA_SCHEMA_READ: METADATA_SCHEMA_READ,
219
- METADATA_SCHEMA_WRITE: METADATA_SCHEMA_WRITE,
220
- METADATA_WRITE: METADATA_WRITE,
221
- OTIF_ANALYZE: OTIF_ANALYZE,
222
- OTIF_READ: OTIF_READ,
223
- OTIF_WRITE: OTIF_WRITE,
224
- PLACEHOLDER_NOTIFICATION_READ: PLACEHOLDER_NOTIFICATION_READ,
225
- PLACEHOLDER_NOTIFICATION_WRITE: PLACEHOLDER_NOTIFICATION_WRITE,
226
- PROJECTION_READ: PROJECTION_READ,
227
- PROJECTION_WRITE: PROJECTION_WRITE,
228
- QUOTA_NOTIFICATION_READ: QUOTA_NOTIFICATION_READ,
229
- QUOTA_NOTIFICATION_WRITE: QUOTA_NOTIFICATION_WRITE,
230
- QUOTA_READ: QUOTA_READ,
231
- QUOTA_WRITE: QUOTA_WRITE,
232
- RELATION_READ: RELATION_READ,
233
- RELATION_WRITE: RELATION_WRITE,
234
- RESOURCE_READ: RESOURCE_READ,
235
- RESOURCE_WRITE: RESOURCE_WRITE,
236
- RUN_AS: RUN_AS,
237
- SEARCH: SEARCH,
238
- SEQUENCE_READ: SEQUENCE_READ,
239
- SEQUENCE_WRITE: SEQUENCE_WRITE,
240
- SHAPE_TAG_READ: SHAPE_TAG_READ,
241
- SHAPE_TAG_WRITE: SHAPE_TAG_WRITE,
242
- SITE_MANAGER: SITE_MANAGER,
243
- SITE_RULE_READ: SITE_RULE_READ,
244
- SITE_RULE_WRITE: SITE_RULE_WRITE,
245
- STORAGE_GROUP_READ: STORAGE_GROUP_READ,
246
- STORAGE_GROUP_WRITE: STORAGE_GROUP_WRITE,
247
- STORAGE_NOTIFICATION_READ: STORAGE_NOTIFICATION_READ,
248
- STORAGE_NOTIFICATION_WRITE: STORAGE_NOTIFICATION_WRITE,
249
- STORAGE_READ: STORAGE_READ,
250
- STORAGE_RULE_READ: STORAGE_RULE_READ,
251
- STORAGE_RULE_WRITE: STORAGE_RULE_WRITE,
252
- STORAGE_WRITE: STORAGE_WRITE,
253
- SUPER_ACCESS_USER: SUPER_ACCESS_USER,
254
- TASKDEFINITION_READ: TASKDEFINITION_READ,
255
- TASKDEFINITION_WRITE: TASKDEFINITION_WRITE,
256
- THUMBNAIL_READ: THUMBNAIL_READ,
257
- THUMBNAIL_WRITE: THUMBNAIL_WRITE,
258
- TRANSCODER: TRANSCODER,
259
- TRANSFER_READ: TRANSFER_READ,
260
- TRANSFER_WRITE: TRANSFER_WRITE,
261
- USER: USER,
262
- VXA: VXA,
263
- VXA_READ: VXA_READ
264
- });
191
+ /**
192
+ * Array with all available VidiCore system/default field group names
193
+ *
194
+ * @category Metadata
195
+ */
196
+ var SYSTEM_FIELDGROUPS = ['stl_subtitle', 'stl_tti', 'stl_gsi', 'mrk_marker', 'pho_validation', 'pho_resource', 'pho_error', 'facedetect_rect', 'facedetect_face', 'originalTrackFilename', 'stl_gsiHeader'];
197
+ /**
198
+ * Array with all available VidiCore system/default field group names
199
+ *
200
+ * @category Metadata
201
+ */
265
202
 
266
- var _excluded$8 = ["value"],
267
- _excluded2$2 = ["start", "end"];
203
+ var SYSTEM_FIELDS = ['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'];
268
204
 
269
- function ownKeys$a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
205
+ var _excluded$e = ["value"],
206
+ _excluded2$2 = ["start", "end", "base"];
270
207
 
271
- function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$a(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
208
+ function ownKeys$i(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
272
209
 
273
- var COMBINED_PROPERTY_KEYS = ['uuid', 'user', 'timestamp', 'change', 'conflict', 'mode', 'name', 'id', 'referenced', 'data', 'inheritance'];
274
- var GROUP_PROPERTY_KEYS = [].concat(COMBINED_PROPERTY_KEYS, ['cycle']);
275
- var FIELD_PROPERTY_KEYS = [].concat(COMBINED_PROPERTY_KEYS, ['value', 'reference', 'type', 'track']);
276
- var FIELD_VALUE_PROPERTY_KEYS = [].concat(COMBINED_PROPERTY_KEYS, ['value', 'lang']);
210
+ function _objectSpread$i(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$i(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$i(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
211
+
212
+ var isValueObject = function isValueObject(o) {
213
+ return Object.prototype.toString.call(o) === '[object Object]' && o.value !== undefined;
214
+ };
215
+
216
+ var isFieldType = function isFieldType(v) {
217
+ return ['string', 'boolean', 'number'].includes(_typeof(v));
218
+ };
219
+
220
+ var isFieldObject = function isFieldObject(o) {
221
+ return isValueObject(o) && ((o === null || o === void 0 ? void 0 : o.value) === null || isValueObject(o.value) || isFieldType(o.value));
222
+ };
277
223
 
278
- var isObject$1 = function isObject(o) {
224
+ var isObject = function isObject(o) {
279
225
  return Object.prototype.toString.call(o) === '[object Object]';
280
226
  };
281
227
 
@@ -284,16 +230,6 @@ var isDate = function isDate(o) {
284
230
  };
285
231
 
286
232
  var isField = function isField(value) {
287
- var FIELD_TYPES = ['string', 'boolean', 'number'];
288
-
289
- var isFieldType = function isFieldType(v) {
290
- return FIELD_TYPES.includes(_typeof(v));
291
- };
292
-
293
- var isFieldObject = function isFieldObject(v) {
294
- return isObject$1(v) && (v.value === null || isObject$1(v.value) || isFieldType(v.value));
295
- };
296
-
297
233
  if (value === null) {
298
234
  return true;
299
235
  }
@@ -307,7 +243,7 @@ var isField = function isField(value) {
307
243
 
308
244
  var isGroup = function isGroup(value) {
309
245
  var isGroupObject = function isGroupObject(v) {
310
- return isObject$1(v) && v.value === undefined && Object.entries(value);
246
+ return isObject(v) && v.value === undefined && !!Object.entries(value);
311
247
  };
312
248
 
313
249
  if (Array.isArray(value)) {
@@ -331,9 +267,9 @@ var ensureKeysAreValid = function ensureKeysAreValid(keysToCheck, keysToMatch) {
331
267
  }
332
268
  };
333
269
 
334
- var parseValue = function parseValue(value) {
270
+ var parseValue$1 = function parseValue(value) {
335
271
  if (Array.isArray(value)) {
336
- throw Error('Invalid value object, cannot be array');
272
+ throw Error('Invalid value inside value object, cannot be array');
337
273
  }
338
274
 
339
275
  if ([undefined, null].includes(value)) return {};
@@ -341,46 +277,50 @@ var parseValue = function parseValue(value) {
341
277
  value: value.toISOString()
342
278
  };
343
279
  return {
344
- value: value
280
+ value: value.toString()
345
281
  };
346
282
  };
347
283
 
348
284
  var parseValueObject = function parseValueObject(valueObject) {
349
- ensureKeysAreValid(Object.keys(valueObject), FIELD_VALUE_PROPERTY_KEYS);
285
+ ensureKeysAreValid(Object.keys(valueObject), FIELD_VALUE_ATTRIBUTE_KEYS);
350
286
 
351
287
  if (Object.keys(valueObject).length === 0) {
352
288
  throw Error('Invalid value object, cannot be empty object');
353
289
  }
354
290
 
355
- var parsedValue = parseValue(valueObject === null || valueObject === void 0 ? void 0 : valueObject.value);
356
- return _objectSpread$a(_objectSpread$a({}, valueObject), parsedValue !== undefined ? parsedValue : {});
291
+ if (typeof (valueObject === null || valueObject === void 0 ? void 0 : valueObject.value) === 'string') {
292
+ return valueObject;
293
+ }
294
+
295
+ var parsedValue = parseValue$1(valueObject === null || valueObject === void 0 ? void 0 : valueObject.value);
296
+ return _objectSpread$i(_objectSpread$i({}, valueObject), parsedValue !== undefined ? parsedValue : {});
357
297
  };
358
298
 
359
299
  var parseFieldValue = function parseFieldValue(value) {
360
300
  if ([undefined, null].includes(value)) return undefined;
361
- if (Array.isArray(value)) return value.map(parseFieldValue);
362
- if (isObject$1(value)) return parseValueObject(value);
363
- return parseValue(value);
301
+ if (Array.isArray(value)) return value.flatMap(parseFieldValue);
302
+ if (isValueObject(value)) return parseValueObject(value);
303
+ return parseValue$1(value);
364
304
  };
365
305
 
366
306
  var parseFieldObject = function parseFieldObject(fieldObject) {
367
- ensureKeysAreValid(Object.keys(fieldObject), FIELD_PROPERTY_KEYS);
307
+ ensureKeysAreValid(Object.keys(fieldObject), FIELD_ATTRIBUTE_KEYS);
368
308
  var parsedFieldValue = parseFieldValue(fieldObject === null || fieldObject === void 0 ? void 0 : fieldObject.value);
369
309
 
370
310
  if (parsedFieldValue === undefined) {
371
311
  fieldObject.value;
372
- var fieldObjectWithoutValue = _objectWithoutProperties(fieldObject, _excluded$8);
312
+ var fieldObjectWithoutValue = _objectWithoutProperties(fieldObject, _excluded$e);
373
313
 
374
314
  return fieldObjectWithoutValue;
375
315
  }
376
316
 
377
- return _objectSpread$a(_objectSpread$a({}, fieldObject), {}, {
317
+ return _objectSpread$i(_objectSpread$i({}, fieldObject), {}, {
378
318
  value: _toConsumableArray(Array.isArray(parsedFieldValue) ? parsedFieldValue : [parsedFieldValue])
379
319
  });
380
320
  };
381
321
 
382
322
  var parseField$1 = function parseField(field) {
383
- if (isObject$1(field)) {
323
+ if (isFieldObject(field)) {
384
324
  return parseFieldObject(field);
385
325
  }
386
326
 
@@ -404,485 +344,652 @@ var parseGroupsAndFields = function parseGroupsAndFields(groupOrField) {
404
344
  name = _ref2[0],
405
345
  value = _ref2[1];
406
346
 
407
- if (GROUP_PROPERTY_KEYS.includes(name)) {
408
- groupAttributes = _objectSpread$a(_objectSpread$a({}, groupAttributes), {}, _defineProperty({}, name, value));
347
+ if (GROUP_ATTRIBUTE_KEYS.includes(name)) {
348
+ groupAttributes = _objectSpread$i(_objectSpread$i({}, groupAttributes), {}, _defineProperty({}, name, value));
409
349
  } else if (isField(value)) {
410
350
  try {
411
- field.push(_objectSpread$a({
351
+ field.push(_objectSpread$i({
412
352
  name: name
413
353
  }, parseField$1(value)));
414
354
  } catch (error) {
415
355
  throw Error(error.message + (name ? " for field \"".concat(name, "\"") : ''));
416
356
  }
417
357
  } else if (isGroup(value)) {
418
- (Array.isArray(value) ? value : [value]).forEach(function (v) {
419
- group.push(_objectSpread$a({
358
+ (Array.isArray(value) ? value : [value]).forEach(function (childGroup) {
359
+ group.push(_objectSpread$i({
420
360
  name: name
421
- }, parseGroupsAndFields(v)));
361
+ }, parseGroupsAndFields(childGroup)));
422
362
  });
423
363
  } else {
424
364
  throw Error("Unhandled value for \"".concat(name, "\""));
425
365
  }
426
366
  });
427
- return _objectSpread$a(_objectSpread$a(_objectSpread$a({}, groupAttributes), group.length > 0 ? {
367
+ return _objectSpread$i(_objectSpread$i(_objectSpread$i({}, groupAttributes), group.length > 0 ? {
428
368
  group: group
429
369
  } : {}), field.length > 0 ? {
430
370
  field: field
431
371
  } : {});
432
372
  };
433
373
 
434
- var parseTimespan$1 = function parseTimespan() {
435
- var timespan = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
436
-
437
- var _ref3 = timespan || {},
438
- _ref3$start = _ref3.start,
439
- start = _ref3$start === void 0 ? '-INF' : _ref3$start,
440
- _ref3$end = _ref3.end,
441
- end = _ref3$end === void 0 ? '+INF' : _ref3$end,
442
- groupsAndFields = _objectWithoutProperties(_ref3, _excluded2$2);
374
+ var parseTimespan$1 = function parseTimespan(timespan) {
375
+ var _timespan$start = timespan.start,
376
+ start = _timespan$start === void 0 ? '-INF' : _timespan$start,
377
+ _timespan$end = timespan.end,
378
+ end = _timespan$end === void 0 ? '+INF' : _timespan$end,
379
+ _timespan$base = timespan.base,
380
+ base = _timespan$base === void 0 ? undefined : _timespan$base,
381
+ groupsAndFields = _objectWithoutProperties(timespan, _excluded2$2);
443
382
 
444
383
  var _parseGroupsAndFields = parseGroupsAndFields(groupsAndFields),
445
384
  group = _parseGroupsAndFields.group,
446
385
  field = _parseGroupsAndFields.field;
447
386
 
448
- return _objectSpread$a(_objectSpread$a(_objectSpread$a({}, group ? {
387
+ return _objectSpread$i(_objectSpread$i(_objectSpread$i({}, group ? {
449
388
  group: group
450
389
  } : {}), field ? {
451
390
  field: field
452
391
  } : {}), {}, {
453
- start: start,
454
- end: end
455
- });
392
+ start: start.toString(),
393
+ end: end.toString()
394
+ }, base ? {
395
+ base: base
396
+ } : {});
456
397
  };
398
+
457
399
  /**
458
- * Create a VidiCore MetadataType from a simplified object structure
400
+ * Create a VidiCore metadata object from a more dense/simplified structure
401
+ *
402
+ * @param input To create VidiCore metadata object of
403
+ * @returns A VidiCore metadata object
459
404
  *
460
- * @param {object} metadata - object to create MetadataType from
461
- * @returns {object} a MetadataType object
405
+ * @category Metadata
462
406
  */
463
-
464
-
465
- var createMetadataType = function createMetadataType() {
466
- var metadata = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
407
+ var createMetadataType = function createMetadataType(input) {
467
408
  return {
468
- timespan: (Array.isArray(metadata) ? metadata : [metadata]).map(function (t) {
409
+ timespan: (Array.isArray(input) ? input : [input || {}]).map(function (t) {
469
410
  return parseTimespan$1(t);
470
411
  })
471
412
  };
472
413
  };
473
414
 
415
+ /**
416
+ * @private
417
+ *
418
+ * Function to sort timespan lists with
419
+ *
420
+ * TODO:
421
+ * - Take different time bases in account
422
+ * - Also compare end if start is same (lowest end first)
423
+ *
424
+ * @param timespan1 first timespan to compare
425
+ * @param timespan2 second timespan to compare
426
+ * @returns -1 if first is before second, 1 if first is after second, 0 if same start
427
+ */
474
428
  var sortTimespanList = function sortTimespanList(timespan1, timespan2) {
475
- var firstStart = timespan1.start;
476
- var secondStart = timespan2.start;
429
+ var _timespan1$start, _timespan2$start;
477
430
 
478
- var _firstStart$split = firstStart.split('@'),
479
- _firstStart$split2 = _slicedToArray(_firstStart$split, 1),
480
- first = _firstStart$split2[0];
431
+ var _ref = (timespan1 === null || timespan1 === void 0 ? void 0 : (_timespan1$start = timespan1.start) === null || _timespan1$start === void 0 ? void 0 : _timespan1$start.split('@')) || [],
432
+ _ref2 = _slicedToArray(_ref, 1),
433
+ firstStart = _ref2[0];
481
434
 
482
- var _secondStart$split = secondStart.split('@'),
483
- _secondStart$split2 = _slicedToArray(_secondStart$split, 1),
484
- second = _secondStart$split2[0];
435
+ var _ref3 = (timespan2 === null || timespan2 === void 0 ? void 0 : (_timespan2$start = timespan2.start) === null || _timespan2$start === void 0 ? void 0 : _timespan2$start.split('@')) || [],
436
+ _ref4 = _slicedToArray(_ref3, 1),
437
+ secondStart = _ref4[0];
485
438
 
486
- if (Number(first) < Number(second)) {
439
+ if (Number(firstStart) < Number(secondStart)) {
487
440
  return -1;
488
441
  }
489
442
 
490
- if (Number(first) > Number(second)) {
443
+ if (Number(firstStart) > Number(secondStart)) {
491
444
  return 1;
492
445
  }
493
446
 
494
447
  return 0;
495
448
  };
496
449
 
497
- var _excluded$7 = ["value"],
498
- _excluded2$1 = ["field", "group"],
499
- _excluded3 = ["field", "group"];
450
+ /**
451
+ * @private
452
+ *
453
+ * Wrap in array if not already an array, and return empty array if v is undefined
454
+ *
455
+ * @param v value to return as array
456
+ * @returns input value wrapped as array
457
+ */
500
458
 
501
- function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
459
+ var asArray = function asArray(v) {
460
+ return Array.isArray(v) ? v : v && [v] || [];
461
+ };
462
+ /**
463
+ * @private
464
+ *
465
+ * Wrap in array if not already an array, and return empty array if v is undefined
466
+ *
467
+ * @param v value to return as array
468
+ * @returns input value wrapped as array
469
+ */
502
470
 
503
- function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$9(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
471
+ var asSingle = function asSingle(v) {
472
+ return Array.isArray(v) ? v.pop() : v;
473
+ };
474
+ /**
475
+ * @private
476
+ * Check if array is string array (+ type guard)
477
+ *
478
+ * @param arr Array to check if string array
479
+ * @returns true if string array
480
+ */
504
481
 
505
- var parseValueList = function parseValueList() {
506
- var valueList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
507
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
482
+ var isStringArray = function isStringArray(arr) {
483
+ return (arr === null || arr === void 0 ? void 0 : arr.every(function (v) {
484
+ return typeof v === 'string';
485
+ })) || false;
486
+ };
508
487
 
509
- var _ref = options || {},
510
- _ref$arrayOnSingle = _ref.arrayOnSingle,
511
- arrayOnSingle = _ref$arrayOnSingle === void 0 ? true : _ref$arrayOnSingle,
512
- _ref$arrayOnSingleVal = _ref.arrayOnSingleValue,
513
- arrayOnSingleValue = _ref$arrayOnSingleVal === void 0 ? true : _ref$arrayOnSingleVal,
514
- joinValue = _ref.joinValue,
515
- includeAttributes = _ref.includeAttributes,
516
- includeValueAttributes = _ref.includeValueAttributes;
517
-
518
- if (includeAttributes || includeValueAttributes) return valueList;
519
- var valueArray = [];
520
- valueList.forEach(function (thisValue) {
521
- if (thisValue.value) valueArray.push(thisValue.value);
522
- });
523
- if (joinValue) return valueArray.join(joinValue);
488
+ var _excluded$d = ["value"];
524
489
 
525
- if (arrayOnSingle === false || arrayOnSingleValue === false && valueArray.length === 1) {
526
- return valueArray[0];
527
- }
490
+ function ownKeys$h(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
491
+
492
+ function _objectSpread$h(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$h(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$h(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
528
493
 
529
- return valueArray;
494
+ var defaultOptions$a = {
495
+ includeValueAttributes: false
530
496
  };
497
+ /**
498
+ * @internal
499
+ * Parse the value object inside a field value list
500
+ *
501
+ * @param value The Vidicore metadata value type
502
+ * @param options For how to parse the value object
503
+ * @returns The parsed value
504
+ */
505
+
506
+ function parseValue(value, options) {
507
+ var _defaultOptions = _objectSpread$h(_objectSpread$h({}, defaultOptions$a), options || {}),
508
+ includeValueAttributes = _defaultOptions.includeValueAttributes;
531
509
 
532
- var parseField = function parseField() {
533
- var field = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
534
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
510
+ if (includeValueAttributes === false) {
511
+ return value === null || value === void 0 ? void 0 : value.value;
512
+ }
535
513
 
536
- var _ref2 = options || {},
537
- includeAttributes = _ref2.includeAttributes,
538
- includeFieldAttributes = _ref2.includeFieldAttributes;
514
+ var stringValue = value.value,
515
+ attributes = _objectWithoutProperties(value, _excluded$d);
539
516
 
540
- var _field$value = field.value,
541
- value = _field$value === void 0 ? [] : _field$value,
542
- attributes = _objectWithoutProperties(field, _excluded$7);
517
+ var valueAttributes = includeValueAttributes === true && attributes || Array.isArray(includeValueAttributes) && Object.fromEntries(Object.entries(attributes).filter(function (_ref) {
518
+ var _ref2 = _slicedToArray(_ref, 1),
519
+ key = _ref2[0];
543
520
 
544
- var parsedValueList = parseValueList(value, options);
545
- if (includeAttributes || includeFieldAttributes) return _objectSpread$9(_objectSpread$9({}, attributes), {}, {
546
- value: parsedValueList
521
+ return includeValueAttributes.includes(key);
522
+ })) || {};
523
+ return _objectSpread$h(_objectSpread$h({}, valueAttributes), {}, {
524
+ value: stringValue
525
+ });
526
+ }
527
+
528
+ var _excluded$c = ["joinValue", "arrayOnSingleValue"];
529
+
530
+ function ownKeys$g(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
531
+
532
+ function _objectSpread$g(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$g(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$g(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
533
+ var defaultOptions$9 = _objectSpread$g(_objectSpread$g({}, defaultOptions$a), {}, {
534
+ joinValue: undefined,
535
+ arrayOnSingleValue: true
536
+ });
537
+ /**
538
+ * @internal
539
+ *
540
+ * @param valueList
541
+ * @param options
542
+ * @returns
543
+ */
544
+
545
+ function parseValueList(valueList, options) {
546
+ var _defaultOptions = _objectSpread$g(_objectSpread$g({}, defaultOptions$9), options || {}),
547
+ joinValue = _defaultOptions.joinValue,
548
+ arrayOnSingleValue = _defaultOptions.arrayOnSingleValue,
549
+ parseValueOptions = _objectWithoutProperties(_defaultOptions, _excluded$c);
550
+
551
+ var parsedValueList = valueList === null || valueList === void 0 ? void 0 : valueList.map(function (v) {
552
+ return parseValue(v, parseValueOptions);
547
553
  });
554
+ if (isStringArray(parsedValueList) && joinValue) return parsedValueList === null || parsedValueList === void 0 ? void 0 : parsedValueList.join(joinValue);
555
+ if (arrayOnSingleValue !== true && (parsedValueList === null || parsedValueList === void 0 ? void 0 : parsedValueList.length) <= 1) return parsedValueList === null || parsedValueList === void 0 ? void 0 : parsedValueList[0];
548
556
  return parsedValueList;
549
- };
557
+ }
550
558
 
551
- var parseFieldList = function parseFieldList() {
552
- var fieldList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
553
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
559
+ var _excluded$b = ["includeFieldAttributes"],
560
+ _excluded2$1 = ["value"];
554
561
 
555
- var _ref3 = options || {},
556
- joinValue = _ref3.joinValue,
557
- includeAttributes = _ref3.includeAttributes,
558
- includeFieldAttributes = _ref3.includeFieldAttributes,
559
- includeValueAttributes = _ref3.includeValueAttributes,
560
- fieldAsList = _ref3.fieldAsList;
562
+ function ownKeys$f(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
561
563
 
562
- var output = {};
564
+ function _objectSpread$f(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$f(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$f(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
565
+ var defaultOptions$8 = _objectSpread$f({
566
+ includeFieldAttributes: false
567
+ }, defaultOptions$9);
568
+ /**
569
+ * @internal
570
+ *
571
+ * @param field
572
+ * @param options
573
+ * @returns
574
+ */
563
575
 
564
- if (fieldAsList) {
565
- return fieldList.map(function (thisField) {
566
- return parseField(thisField, options);
567
- });
568
- }
576
+ var parseField = function parseField(field, options) {
577
+ var _defaultOptions = _objectSpread$f(_objectSpread$f({}, defaultOptions$8), options || {}),
578
+ includeFieldAttributes = _defaultOptions.includeFieldAttributes,
579
+ parseValueListOptions = _objectWithoutProperties(_defaultOptions, _excluded$b);
569
580
 
570
- fieldList.forEach(function (thisField) {
571
- var key = thisField.name;
572
- var parsedField = parseField(thisField, options);
581
+ var value = field.value,
582
+ attributes = _objectWithoutProperties(field, _excluded2$1);
573
583
 
574
- if (output[key]) {
575
- if (includeAttributes || includeFieldAttributes) {
576
- var currentValue = output[key].value;
577
- var parsedValue = parsedField.value;
584
+ var parsedValueList = parseValueList(value, parseValueListOptions);
585
+ var fieldAttributes = includeFieldAttributes === true && attributes || Array.isArray(includeFieldAttributes) && Object.fromEntries(Object.entries(attributes).filter(function (_ref) {
586
+ var _ref2 = _slicedToArray(_ref, 1),
587
+ key = _ref2[0];
578
588
 
579
- if (joinValue && !includeAttributes && !includeValueAttributes) {
580
- output[key].value = [currentValue, parsedValue].join(joinValue);
581
- } else {
582
- output[key].value = parsedValue.concat(currentValue);
583
- }
584
- } else {
585
- var _currentValue = output[key];
586
- var _parsedValue = parsedField;
589
+ return includeFieldAttributes.includes(key);
590
+ })) || {};
591
+ return includeFieldAttributes ? _objectSpread$f(_objectSpread$f({}, fieldAttributes), {}, {
592
+ value: parsedValueList
593
+ }) : parsedValueList;
594
+ };
587
595
 
588
- if (joinValue) {
589
- output[key] = [_currentValue, _parsedValue].join(joinValue);
590
- } else {
591
- output[key] = _parsedValue.concat(_currentValue);
592
- }
593
- }
594
- } else {
595
- output[key] = parsedField;
596
- }
596
+ function ownKeys$e(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
597
+
598
+ function _objectSpread$e(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$e(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$e(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
599
+ var defaultOptions$7 = _objectSpread$e(_objectSpread$e({}, defaultOptions$8), {}, {
600
+ fieldAsList: false,
601
+ arrayOnSingleField: false,
602
+ overrideField: undefined
603
+ });
604
+
605
+ /**
606
+ * Parse a metadata field list according to selected options
607
+ *
608
+ * @remarks
609
+ * Duplicate fields (same field name in the same field list) are usually not the data model we'd advise using.
610
+ * Since VidiCore supports multiple values in one fields, it's typically advised to store them as such.
611
+ * But, given duplicated fields when parsing it will:
612
+ * - with default options, merge duplicated field values to one field value array
613
+ * - with `fieldAsList` enabled, separate fields in the list/array (as usual, even if not duplicate)
614
+ * - with `includeFieldAttributes` enabled, return an array of field objects
615
+ * - with `overrideField` enabled - Override so it returns the latest "duplicated" field it parses
616
+ *
617
+ * @param fieldList Field list to parse
618
+ * @param [options=defaultOptions] Options for how to parse the field list
619
+ * @returns A parsed field list
620
+ *
621
+ * @category Metadata
622
+ */
623
+ var parseFieldList = function parseFieldList(fieldList, options) {
624
+ var parseFieldListOptions = _objectSpread$e(_objectSpread$e({}, defaultOptions$7), options || {});
625
+
626
+ var fieldAsList = parseFieldListOptions.fieldAsList,
627
+ arrayOnSingleField = parseFieldListOptions.arrayOnSingleField,
628
+ overrideField = parseFieldListOptions.overrideField;
629
+ var shouldOverride = overrideField === true && fieldAsList === false;
630
+ var output = {};
631
+ fieldList === null || fieldList === void 0 ? void 0 : fieldList.forEach(function (field) {
632
+ var name = field.name;
633
+ var parsedField = parseField(field, parseFieldListOptions);
634
+ var parsedFieldOutput = arrayOnSingleField === true ? asArray(parsedField) : parsedField;
635
+ var existingParsedFields = output[name];
636
+ if (!existingParsedFields) output[name] = parsedFieldOutput;else if (shouldOverride) output[name] = parsedField;else output[name] = [asArray(existingParsedFields), asArray(parsedField)].flat();
597
637
  });
598
- return output;
638
+ return fieldAsList === true ? Object.values(output).flat() : output;
599
639
  };
600
640
 
601
- var parseGroup = function parseGroup() {
602
- var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
603
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
641
+ var _excluded$a = ["field", "group"];
604
642
 
605
- var _ref4 = options || {},
606
- includeAttributes = _ref4.includeAttributes,
607
- includeGroupAttributes = _ref4.includeGroupAttributes,
608
- flat = _ref4.flat,
609
- flatGroup = _ref4.flatGroup,
610
- groupAsList = _ref4.groupAsList,
611
- fieldAsList = _ref4.fieldAsList;
643
+ function ownKeys$d(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
612
644
 
613
- var _group$field = group.field,
614
- fieldList = _group$field === void 0 ? [] : _group$field,
615
- _group$group = group.group,
616
- groupList = _group$group === void 0 ? [] : _group$group,
617
- attributes = _objectWithoutProperties(group, _excluded2$1);
645
+ function _objectSpread$d(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$d(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$d(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
618
646
 
619
- var parsedFieldList = parseFieldList(fieldList, options); // eslint-disable-next-line no-use-before-define
647
+ var defaultParseGroupOptions = _objectSpread$d(_objectSpread$d({}, defaultOptions$7), {}, {
648
+ includeGroupAttributes: false,
649
+ groupAsList: false,
650
+ arrayOnSingleGroup: false,
651
+ overrideGroup: undefined
652
+ });
620
653
 
621
- var parsedGroupList = parseGroupList(groupList, options);
622
- var output = {};
654
+ /**
655
+ * @internal
656
+ *
657
+ * (Kept here due to circular dependency otherwise)
658
+ *
659
+ * @param group
660
+ * @param options
661
+ * @returns
662
+ */
663
+ var parseGroup = function parseGroup(group, options) {
664
+ var parseGroupOptions = _objectSpread$d(_objectSpread$d({}, defaultParseGroupOptions), options || {});
623
665
 
624
- if (includeAttributes || includeGroupAttributes) {
625
- Object.assign(output, attributes);
626
- }
666
+ var includeGroupAttributes = parseGroupOptions.includeGroupAttributes;
667
+ var parseFieldListOptions = Object.fromEntries(Object.entries(parseGroupOptions).filter(function (_ref) {
668
+ var _ref2 = _slicedToArray(_ref, 1),
669
+ key = _ref2[0];
627
670
 
628
- if (flat || flatGroup) {
629
- if (groupAsList) {
630
- Object.assign(output, {
631
- group: parsedGroupList
632
- });
633
- } else {
634
- Object.assign(output, parsedGroupList);
635
- }
671
+ return Object.keys(defaultOptions$7).includes(key);
672
+ }));
636
673
 
637
- if (fieldAsList) {
638
- Object.assign(output, {
639
- field: parsedFieldList
640
- });
641
- } else {
642
- Object.assign(output, parsedFieldList);
643
- }
644
- } else {
645
- Object.assign(output, {
646
- field: parsedFieldList
647
- });
648
- Object.assign(output, {
649
- group: parsedGroupList
650
- });
651
- }
674
+ var fieldList = group.field,
675
+ groupList = group.group,
676
+ attributes = _objectWithoutProperties(group, _excluded$a);
652
677
 
653
- return output;
678
+ var parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions); // eslint-disable-next-line @typescript-eslint/no-use-before-define
679
+
680
+ var parsedGroupList = groupList && parseGroupList(groupList, parseGroupOptions);
681
+ var groupAttributes = includeGroupAttributes === true && attributes || Array.isArray(includeGroupAttributes) && Object.fromEntries(Object.entries(attributes).filter(function (_ref3) {
682
+ var _ref4 = _slicedToArray(_ref3, 1),
683
+ key = _ref4[0];
684
+
685
+ return includeGroupAttributes.includes(key);
686
+ })) || {};
687
+ return _objectSpread$d(_objectSpread$d(_objectSpread$d({}, groupAttributes), parseFieldListOptions !== null && parseFieldListOptions !== void 0 && parseFieldListOptions.fieldAsList ? parsedFieldList && {
688
+ field: parsedFieldList
689
+ } || {} : parsedFieldList), parseGroupOptions !== null && parseGroupOptions !== void 0 && parseGroupOptions.groupAsList ? parsedGroupList && {
690
+ group: parsedGroupList
691
+ } || {} : parsedGroupList);
654
692
  };
655
693
 
656
- var parseGroupList = function parseGroupList() {
657
- var groupList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
658
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
694
+ var defaultOptions$6 = defaultParseGroupOptions;
695
+ /**
696
+ * Parse a metadata group list according to selected options
697
+ *
698
+ * @remarks
699
+ * Parsing duplicate groups (with identical name) in the same group list will return:
700
+ * - with default options, an array of group objects
701
+ * - with `groupAsList` enabled, separate group objects in the list/array (as usual, even if not duplicate)
702
+ * - with `overrideGroup` enabled, return the latest duplicated group it parses
703
+ *
704
+ * @param groupList Group list to parse
705
+ * @param options options for how to parse list
706
+ * @returns A parsed group list
707
+ *
708
+ * @category Metadata
709
+ */
659
710
 
660
- var _ref5 = options || {},
661
- groupAsList = _ref5.groupAsList;
711
+ var parseGroupList = function parseGroupList(groupList, options) {
712
+ var parseGroupOptions = _objectSpread$d(_objectSpread$d({}, defaultOptions$6), options || {});
713
+
714
+ var groupAsList = parseGroupOptions.groupAsList,
715
+ arrayOnSingleGroup = parseGroupOptions.arrayOnSingleGroup,
716
+ overrideGroup = parseGroupOptions.overrideGroup;
717
+ var shouldOverride = overrideGroup === true && groupAsList === false;
718
+ var output = {};
719
+ groupList === null || groupList === void 0 ? void 0 : groupList.forEach(function (group) {
720
+ var name = group.name;
721
+ var parsedGroup = parseGroup(group, parseGroupOptions);
722
+ var parsedGroupOutput = arrayOnSingleGroup === true ? asArray(parsedGroup) : parsedGroup;
723
+ var existingParsedGroups = output[name];
724
+ if (!existingParsedGroups) output[name] = parsedGroupOutput;else if (shouldOverride) output[name] = parsedGroup;else output[name] = [asArray(existingParsedGroups), asArray(parsedGroup)].flat();
725
+ });
662
726
 
663
727
  if (groupAsList) {
664
- return groupList.map(function (thisGroup) {
665
- return parseGroup(thisGroup, options);
666
- });
728
+ return Object.values(output).flat();
667
729
  }
668
730
 
669
- var output = {};
670
- groupList.forEach(function (thisGroup) {
671
- var key = thisGroup.name;
672
- var parsedGroup = parseGroup(thisGroup, options);
673
-
674
- if (output[key]) {
675
- var _output$key = output[key],
676
- currentField = _output$key.field,
677
- currentGroup = _output$key.group;
678
- var parsedField = parsedGroup.field,
679
- parsedGroupList = parsedGroup.group;
680
- output[key].field = _objectSpread$9(_objectSpread$9({}, currentField), parsedField);
681
- output[key].group = _objectSpread$9(_objectSpread$9({}, currentGroup), parsedGroupList);
682
- } else {
683
- output[key] = parsedGroup;
684
- }
685
- });
686
731
  return output;
687
732
  };
733
+
734
+ var _excluded$9 = ["field", "group"];
735
+
736
+ function ownKeys$c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
737
+
738
+ function _objectSpread$c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$c(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
739
+ var defaultOptions$5 = _objectSpread$c(_objectSpread$c({}, defaultOptions$6), {}, {
740
+ includeTimespanAttributes: false,
741
+ flat: false,
742
+ arrayOnSingle: false,
743
+ arrayOnSingleValue: true,
744
+ arrayOnSingleGroup: undefined,
745
+ arrayOnSingleField: undefined
746
+ });
688
747
  /**
689
- * Parses timespan according to specified options.
690
- * The attributes can be targeted for each sub-type.
691
- * @param {Object} [timespan={}] - A timespan from VidiCore.
692
- * @param {Object} [options={}] - Options which change how the metadataType is parsed.
693
- * @param {string} [options.joinValue=undefined] - String to join the values, eg ','.
694
- * @param {boolean} [options.includeAttributes=false] - Include attributes on all objects.
695
- * @param {boolean} [options.includeTimespanAttributes=false] - Include attributes on timespans.
696
- * @param {boolean} [options.includeGroupAttributes=false] - Include attributes on groups.
697
- * @param {boolean} [options.includeFieldAttributes=false] - Include attributes on fields.
698
- * @param {boolean} [options.includeValueAttributes=false] - Include attributes on values.
699
- * @param {boolean} [options.flat=false] - Flatten to key/value (Note: keys may be overwritten).
700
- * @param {boolean} [options.flatTimespan=false] - Flatten timespan.
701
- * @param {boolean} [options.flatGroup=false] - Flatten group.
702
- * @param {boolean} [options.groupAsList=false] - Return groups as list.
703
- * @param {boolean} [options.fieldAsList=false] - Return fields as list.
704
- * @param {boolean} [options.arrayOnSingle=true] - Return fields as array even if single field.
705
- * @param {boolean} [options.arrayOnSingleValue=true] - Return fields as array even if single field value.
706
- * @returns {Object} Metadata object parsed according to options.
748
+ *
749
+ * Parses timespan according to specified options
750
+ *
751
+ * @remarks
752
+ * 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)
753
+ *
754
+ * @param timespan - A VidiCore metadata timespan
755
+ * @param options - Options to change how it is parsed
756
+ * @returns Timespan parsed according to options
757
+ *
758
+ * @see {@link parseGroupList} and {@link parseFieldList} for more info
759
+ *
760
+ * @category Metadata
707
761
  */
708
762
 
763
+ var parseTimespan = function parseTimespan(timespan, options) {
764
+ var parseTimespanOptions = _objectSpread$c(_objectSpread$c({}, defaultOptions$5), options || {});
709
765
 
710
- var parseTimespan = function parseTimespan() {
711
- var timespan = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
712
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
766
+ var includeTimespanAttributes = parseTimespanOptions.includeTimespanAttributes,
767
+ arrayOnSingle = parseTimespanOptions.arrayOnSingle,
768
+ flat = parseTimespanOptions.flat;
769
+ var parseGroupListOptions = Object.fromEntries(Object.entries(options).map(function (_ref) {
770
+ var _ref2 = _slicedToArray(_ref, 2),
771
+ key = _ref2[0],
772
+ value = _ref2[1];
713
773
 
714
- var _ref6 = options || {},
715
- includeAttributes = _ref6.includeAttributes,
716
- includeTimespanAttributes = _ref6.includeTimespanAttributes,
717
- flat = _ref6.flat,
718
- flatTimespan = _ref6.flatTimespan,
719
- groupAsList = _ref6.groupAsList,
720
- fieldAsList = _ref6.fieldAsList;
774
+ if (Object.keys(defaultOptions$6).includes(key)) {
775
+ if (['arrayOnSingleGroup', 'arrayOnSingleField', 'arrayOnSingleValue'].includes(key) && (value !== undefined ? value : arrayOnSingle === true)) {
776
+ return [key, true];
777
+ }
721
778
 
722
- var _timespan$field = timespan.field,
723
- fieldList = _timespan$field === void 0 ? [] : _timespan$field,
724
- _timespan$group = timespan.group,
725
- groupList = _timespan$group === void 0 ? [] : _timespan$group,
726
- attributes = _objectWithoutProperties(timespan, _excluded3);
779
+ if (['overrideGroup', 'overrideField'].includes(key) && (value !== undefined ? value : flat === true)) {
780
+ return [key, true];
781
+ }
727
782
 
728
- var field = parseFieldList(fieldList, options);
729
- var group = parseGroupList(groupList, options);
730
- var output = {};
783
+ return [key, value];
784
+ }
731
785
 
732
- if (includeAttributes || includeTimespanAttributes) {
733
- Object.assign(output, attributes);
734
- }
786
+ return undefined;
787
+ }).filter(function (e) {
788
+ return !!e;
789
+ }));
790
+ var parseFieldListOptions = Object.fromEntries(Object.entries(options).map(function (_ref3) {
791
+ var _ref4 = _slicedToArray(_ref3, 2),
792
+ key = _ref4[0],
793
+ value = _ref4[1];
794
+
795
+ if (Object.keys(defaultOptions$7).includes(key)) {
796
+ if (['arrayOnSingleField', 'arrayOnSingleValue'].includes(key) && (value !== undefined ? value : arrayOnSingle === true)) {
797
+ return [key, true];
798
+ }
735
799
 
736
- if (flat || flatTimespan) {
737
- if (groupAsList) {
738
- Object.assign(output, {
739
- group: group
740
- });
741
- } else {
742
- Object.assign(output, group);
743
- }
800
+ if (['overrideField'].includes(key) && (value !== undefined ? value : flat === true)) {
801
+ return [key, true];
802
+ }
744
803
 
745
- if (fieldAsList) {
746
- Object.assign(output, {
747
- field: field
748
- });
749
- } else {
750
- Object.assign(output, field);
804
+ return [key, value];
751
805
  }
752
- } else {
753
- Object.assign(output, {
754
- field: field
755
- });
756
- Object.assign(output, {
757
- group: group
758
- });
759
- }
760
806
 
761
- return output;
807
+ return undefined;
808
+ }).filter(function (e) {
809
+ return !!e;
810
+ }));
811
+
812
+ var _ref5 = timespan || {},
813
+ fieldList = _ref5.field,
814
+ groupList = _ref5.group,
815
+ attributes = _objectWithoutProperties(_ref5, _excluded$9);
816
+
817
+ var parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions); // eslint-disable-next-line @typescript-eslint/no-use-before-define
818
+
819
+ var parsedGroupList = groupList && parseGroupList(groupList, parseGroupListOptions);
820
+ var timespanAttributes = includeTimespanAttributes === true && attributes || Array.isArray(includeTimespanAttributes) && Object.fromEntries(Object.entries(attributes).filter(function (_ref6) {
821
+ var _ref7 = _slicedToArray(_ref6, 1),
822
+ key = _ref7[0];
823
+
824
+ return includeTimespanAttributes.includes(key);
825
+ })) || {};
826
+ return _objectSpread$c(_objectSpread$c(_objectSpread$c({}, timespanAttributes), parseFieldListOptions !== null && parseFieldListOptions !== void 0 && parseFieldListOptions.fieldAsList ? {
827
+ field: parsedFieldList
828
+ } : parsedFieldList), parseGroupListOptions !== null && parseGroupListOptions !== void 0 && parseGroupListOptions.groupAsList ? {
829
+ group: parsedGroupList
830
+ } : parsedGroupList);
762
831
  };
763
832
 
764
- function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
833
+ var _excluded$8 = ["timespanAsList", "joinTimespan", "sortTimespan", "flat", "flatTimespan"];
765
834
 
766
- function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
835
+ function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
836
+
837
+ function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
838
+ var defaultOptions$4 = _objectSpread$b(_objectSpread$b({}, defaultOptions$5), {}, {
839
+ timespanAsList: false,
840
+ joinTimespan: '_',
841
+ sortTimespan: false,
842
+ flat: false,
843
+ flatTimespan: undefined
844
+ });
767
845
  /**
768
846
  * Parses timespanList according to specified options.
769
847
  * The attributes can be targeted for each sub-type.
770
848
  *
771
- * @param {Object[]} timespanList - A timespanList from VidiCore.
772
- * @param {Object} options - Options which change how the metadataType is parsed.
773
- * @param {string} options.joinValue - String to join the values, eg ','.
774
- * @param {boolean} options.includeAttributes - Include attributes on all objects.
775
- * @param {boolean} options.includeMetadataAttributes - Include attributes on root.
776
- * @param {boolean} options.includeTimespanAttributes - Include attributes on timespans.
777
- * @param {boolean} options.includeGroupAttributes - Include attributes on groups.
778
- * @param {boolean} options.includeFieldAttributes - Include attributes on fields.
779
- * @param {boolean} options.includeValueAttributes - Include attributes on values.
780
- * @param {boolean} options.flat - Flatten to key/value (Note: keys may be overwritten).
781
- * @param {boolean} options.flatTimespan - Flatten timespan.
782
- * @param {boolean} options.flatGroup - Flatten group.
783
- * @param {boolean} options.sortTimespan - Sort timespan by start time.
784
- * @param {boolean} options.timespanAsList - Return timespans as list.
785
- * @param {boolean} options.groupAsList - Return groups as list.
786
- * @param {boolean} options.fieldAsList - Return fields as list.
787
- * @param {boolean} [options.arrayOnSingle=true] - Return fields as array even if single field.
788
- * @param {boolean} [options.arrayOnSingleValue=true] - Return fields as array even if single field value.
789
- * @returns {Object} Metadata object parsed according to options.
849
+ * @param timespanList - A Vidicore metadata timespan list
850
+ * @param options - Options which change how the metadataType is parsed.
851
+ * @returns Timespan list parsed according to options
852
+ *
853
+ * @see {@link parseTimespan} for more info
854
+ *
855
+ * @category Metadata
790
856
  */
791
857
 
792
- var parseTimespanList = function parseTimespanList() {
793
- var timespanList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
794
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
858
+ var parseTimespanList = function parseTimespanList(timespanList, options) {
859
+ var parseTimespanListOptions = _objectSpread$b(_objectSpread$b({}, defaultOptions$4), options || {});
795
860
 
796
- var _ref = options || {},
797
- joinTimespan = _ref.joinTimespan,
798
- flat = _ref.flat,
799
- timespanAsList = _ref.timespanAsList;
861
+ var timespanAsList = parseTimespanListOptions.timespanAsList,
862
+ joinTimespan = parseTimespanListOptions.joinTimespan,
863
+ sortTimespan = parseTimespanListOptions.sortTimespan,
864
+ flat = parseTimespanListOptions.flat,
865
+ flatTimespan = parseTimespanListOptions.flatTimespan,
866
+ otherOptions = _objectWithoutProperties(parseTimespanListOptions, _excluded$8);
800
867
 
801
- if (timespanAsList) {
802
- return timespanList.map(function (thisTimespan) {
803
- return parseTimespan(thisTimespan, options);
804
- });
805
- }
868
+ var parseTimespanOptions = _objectSpread$b({
869
+ flat: flat
870
+ }, otherOptions);
806
871
 
872
+ if (sortTimespan) timespanList.sort(sortTimespanList);
873
+ var shouldFlatten = (flatTimespan !== undefined ? flatTimespan === true : flat === true) && timespanAsList === false;
807
874
  var output = {};
808
- timespanList.forEach(function (thisTimespan) {
809
- var start = thisTimespan.start,
810
- end = thisTimespan.end;
811
- var key = [start, end].join(joinTimespan || '_');
812
- var parsedTimespan = parseTimespan(thisTimespan, options);
813
-
814
- if (flat) {
815
- output = _objectSpread$8(_objectSpread$8({}, output), parsedTimespan);
816
- } else if (output[key]) {
817
- var _output$key = output[key],
818
- currentField = _output$key.field,
819
- currentGroup = _output$key.group;
820
- var parsedField = parsedTimespan.field,
821
- parsedGroup = parsedTimespan.group;
822
- output[key].field = _objectSpread$8(_objectSpread$8({}, currentField), parsedField);
823
- output[key].group = _objectSpread$8(_objectSpread$8({}, currentGroup), parsedGroup);
824
- } else {
825
- output[key] = parsedTimespan;
826
- }
875
+ timespanList === null || timespanList === void 0 ? void 0 : timespanList.forEach(function (timespan) {
876
+ var start = timespan.start,
877
+ end = timespan.end;
878
+ var key = shouldFlatten ? 'flat' : [start, end].join(joinTimespan);
879
+ var parsedTimespan = parseTimespan(timespan, parseTimespanOptions);
880
+ var existingParsedTimespans = output[key];
881
+ if (!existingParsedTimespans) output[key] = parsedTimespan;else if (shouldFlatten) {
882
+ if (start === '-INF' && end === '+INF') {
883
+ output[key] = _objectSpread$b(_objectSpread$b({}, asSingle(existingParsedTimespans)), parsedTimespan);
884
+ } else {
885
+ output[key] = _objectSpread$b(_objectSpread$b({}, parsedTimespan), asSingle(existingParsedTimespans));
886
+ }
887
+ } else output[key] = [].concat(_toConsumableArray(asArray(existingParsedTimespans)), [parsedTimespan]);
827
888
  });
889
+
890
+ if (timespanAsList === true) {
891
+ return Object.values(output);
892
+ }
893
+
894
+ if (shouldFlatten) {
895
+ return Object.values(output).pop();
896
+ }
897
+
828
898
  return output;
829
899
  };
830
900
 
831
- var _excluded$6 = ["timespan"];
901
+ var _excluded$7 = ["timespan"];
902
+
903
+ function ownKeys$a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
904
+
905
+ function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$a(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
906
+ var defaultOptions$3 = _objectSpread$a(_objectSpread$a({}, defaultOptions$4), {}, {
907
+ includeMetadataAttributes: false,
908
+ flat: false
909
+ });
832
910
  /**
833
- * Parses MetadataType according to specified options.
834
- * The attributes can be targeted for each sub-type.
835
- * @param {Object} metadataType - A MetadataType from VidiCore.
836
- * @param {Object} options - Options which change how the metadataType is parsed.
837
- * @param {string} options.joinValue - String to join the values, eg ','.
838
- * @param {boolean} options.includeAttributes - Include attributes on all objects.
839
- * @param {boolean} options.includeMetadataAttributes - Include attributes on root.
840
- * @param {boolean} options.includeTimespanAttributes - Include attributes on timespans.
841
- * @param {boolean} options.includeGroupAttributes - Include attributes on groups.
842
- * @param {boolean} options.includeFieldAttributes - Include attributes on fields.
843
- * @param {boolean} options.includeValueAttributes - Include attributes on values.
844
- * @param {boolean} options.flat - Flatten to key/value (Note: keys may be overwritten).
845
- * @param {boolean} options.flatTimespan - Flatten timespan.
846
- * @param {boolean} options.flatGroup - Flatten group.
847
- * @param {boolean} options.sortTimespan - Sort timespan by start time.
848
- * @param {boolean} options.timespanAsList - Return timespans as list.
849
- * @param {boolean} options.groupAsList - Return groups as list.
850
- * @param {boolean} options.fieldAsList - Return fields as list.
851
- * @param {boolean} [options.arrayOnSingle=true] - Return fields as array even if single field.
852
- * @param {boolean} [options.arrayOnSingleValue=true] - Return fields as array even if single field value.
853
- * @returns {Object} Metadata object parsed according to options.
911
+ * Parses MetadataType according to specified options
912
+ *
913
+ * @remarks
914
+ * 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.
915
+ * 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:
916
+ * you can use the option `flat` along with `joinValue` or `arrayOnSingleValue: false`.
917
+ *
918
+ * @param metadataType - A MetadataType from VidiCore
919
+ * @param options - Options which change how the metadataType is parsed
920
+ * @returns Metadata object parsed according to options
921
+ *
922
+ * @see {@link parseTimespanList} for more info
923
+ *
924
+ * @category Metadata
854
925
  */
855
926
 
856
- var parseMetadataType = function parseMetadataType() {
857
- var metadataType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
858
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
927
+ function parseMetadataType(metadataType, options) {
928
+ var parseMetadataTypeOptions = _objectSpread$a(_objectSpread$a({}, defaultOptions$3), options || {});
859
929
 
860
- var _ref = options || {},
861
- includeAttributes = _ref.includeAttributes,
862
- includeMetadataAttributes = _ref.includeMetadataAttributes,
863
- sortTimespan = _ref.sortTimespan;
930
+ var includeMetadataAttributes = parseMetadataTypeOptions.includeMetadataAttributes,
931
+ flat = parseMetadataTypeOptions.flat;
864
932
 
865
- var _ref2 = metadataType || {},
866
- _ref2$timespan = _ref2.timespan,
867
- timespanList = _ref2$timespan === void 0 ? [] : _ref2$timespan,
868
- attributes = _objectWithoutProperties(_ref2, _excluded$6);
933
+ var _ref = metadataType || {},
934
+ _ref$timespan = _ref.timespan,
935
+ timespanList = _ref$timespan === void 0 ? [] : _ref$timespan,
936
+ attributes = _objectWithoutProperties(_ref, _excluded$7);
869
937
 
870
- if (sortTimespan) timespanList.sort(sortTimespanList);
871
- var timespan = parseTimespanList(timespanList, options);
938
+ var parseTimespanListOptions = Object.fromEntries(Object.entries(options).map(function (_ref2) {
939
+ var _ref3 = _slicedToArray(_ref2, 2),
940
+ key = _ref3[0],
941
+ value = _ref3[1];
872
942
 
873
- if (includeAttributes || includeMetadataAttributes) {
874
- Object.assign(timespan, attributes);
875
- }
943
+ if (Object.keys(defaultOptions$4).includes(key)) {
944
+ if (['onlyGeneric', 'overrideGroup', 'overrideField'].includes(key) && (value !== undefined ? value : flat === true)) {
945
+ return [key, true];
946
+ }
876
947
 
877
- return timespan;
878
- };
948
+ return [key, value];
949
+ }
950
+
951
+ return undefined;
952
+ }).filter(function (e) {
953
+ return !!e;
954
+ }));
955
+ var parsedTimespanList = parseTimespanList(timespanList, parseTimespanListOptions);
956
+ var metadataAttributes = includeMetadataAttributes === true && _objectSpread$a(_objectSpread$a({}, attributes), attributes.revision ? {
957
+ revision: attributes.revision.split(',')
958
+ } : {}) || Array.isArray(includeMetadataAttributes) && Object.fromEntries(Object.entries(attributes).map(function (_ref4) {
959
+ var _ref5 = _slicedToArray(_ref4, 2),
960
+ key = _ref5[0],
961
+ value = _ref5[1];
962
+
963
+ if (includeMetadataAttributes.includes(key)) {
964
+ return [key, key === 'revision' && typeof value === 'string' ? value.split(',') : value];
965
+ }
966
+
967
+ return undefined;
968
+ }).filter(function (o) {
969
+ return !!o;
970
+ })) || {};
971
+ return _objectSpread$a(_objectSpread$a({}, metadataAttributes), parseTimespanListOptions !== null && parseTimespanListOptions !== void 0 && parseTimespanListOptions.timespanAsList ? {
972
+ timespan: parsedTimespanList
973
+ } : parsedTimespanList);
974
+ }
975
+
976
+ /**
977
+ * Parse simple (key/value) metadata
978
+ *
979
+ * Not indexed metadata, available on almost all entities (storages, library, user, group, etc...)
980
+ *
981
+ * @param simpleMetadataType A VidiCore simple metadata object
982
+ * @returns A parsed simple metadata object
983
+ *
984
+ * @category Metadata
985
+ */
879
986
 
880
- var parseSimpleMetadataType = function parseSimpleMetadataType() {
881
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
987
+ var parseSimpleMetadataType = function parseSimpleMetadataType(simpleMetadataType) {
988
+ var _ref = simpleMetadataType || {},
882
989
  _ref$field = _ref.field,
883
990
  field = _ref$field === void 0 ? [] : _ref$field;
884
991
 
885
- return parseKeyValuePairType(field);
992
+ return parseKeyValuePairTypes(field);
886
993
  };
887
994
 
888
995
  var MAP_CONSTANT_TO_DEN_NUM = {
@@ -921,20 +1028,26 @@ var TIME_BASE_CONSTANTS = Object.keys(MAP_CONSTANT_TO_DEN_NUM);
921
1028
  * TimeBase class representing the TimeBaseType in VidiCore
922
1029
  *
923
1030
  * For more info, see the [Time bases section in VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-bases)
1031
+ *
1032
+ * @category Time
924
1033
  */
925
-
926
1034
  var TimeBase = /*#__PURE__*/function () {
1035
+ // The numerator for the TimeBase
1036
+ // The denominator for the TimeBase
1037
+
927
1038
  /**
928
1039
  * Constructor for TimeBase
929
1040
  *
930
- * @param {object} [timeCodeType={}] A time base type object
931
- * @param {number} [timeCodeType.numerator=1] The numerator for the TimeBase
932
- * @param {number} [timeCodeType.denominator=1] The denominator for the TimeBase
1041
+ * @param timeBaseType A TimeBaseType object
933
1042
  */
934
- function TimeBase(timeCodeType) {
1043
+ function TimeBase(timeBaseType) {
935
1044
  _classCallCheck(this, TimeBase);
936
1045
 
937
- var _ref = timeCodeType || {},
1046
+ _defineProperty(this, "numerator", 1);
1047
+
1048
+ _defineProperty(this, "denominator", 1);
1049
+
1050
+ var _ref = timeBaseType || {},
938
1051
  _ref$numerator = _ref.numerator,
939
1052
  numerator = _ref$numerator === void 0 ? 1 : _ref$numerator,
940
1053
  _ref$denominator = _ref.denominator,
@@ -945,7 +1058,7 @@ var TimeBase = /*#__PURE__*/function () {
945
1058
  }
946
1059
  /**
947
1060
  * Get TimeBase in a constant representation (e.g. "PAL") if possible, otherwise undefined
948
- * @returns {string} Constant representation of the TimeBase
1061
+ * @returns Constant representation of the TimeBase
949
1062
  */
950
1063
 
951
1064
 
@@ -976,33 +1089,24 @@ var TimeBase = /*#__PURE__*/function () {
976
1089
  /**
977
1090
  * Get TimeBase as a VidiCore TimeBaseType string
978
1091
  *
1092
+ * @remarks
979
1093
  * Default format: denominator(:numerator if > 1)
980
1094
  * `constant` has precedence over `fraction` if both are true (e.g. NTSC > 30000:1001)
981
1095
  *
982
- * @param {object} [options={}] For how to display it as text
983
- * @param {boolean} [options.constant=false] Show time base as constant (e.g. PAL)
984
- * @param {boolean} [options.fraction=false] Show time base as fraction (25:1) even when numerator is 1
985
- * @returns {string} Text representation of the TimeBase
1096
+ * @param options For how to display it as text
1097
+ * @returns Text representation of the TimeBase
986
1098
  */
987
1099
 
988
1100
  }, {
989
1101
  key: "toText",
990
- value: function toText() {
991
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
992
-
993
- var _ref2 = options || {},
994
- _ref2$constant = _ref2.constant,
995
- constant = _ref2$constant === void 0 ? false : _ref2$constant,
996
- _ref2$fraction = _ref2.fraction,
997
- fraction = _ref2$fraction === void 0 ? false : _ref2$fraction;
998
-
999
- if (constant) {
1102
+ value: function toText(options) {
1103
+ if (options !== null && options !== void 0 && options.constant) {
1000
1104
  var _timeBaseText = this.toConstant();
1001
1105
 
1002
1106
  if (_timeBaseText) return _timeBaseText;
1003
1107
  }
1004
1108
 
1005
- if (fraction || this.numerator > 1) {
1109
+ if (options !== null && options !== void 0 && options.fraction || this.numerator > 1) {
1006
1110
  var _timeBaseText2 = [this.denominator, this.numerator].join(':');
1007
1111
 
1008
1112
  return _timeBaseText2;
@@ -1014,7 +1118,7 @@ var TimeBase = /*#__PURE__*/function () {
1014
1118
  /**
1015
1119
  * Output TimeBase as frame rate (by default max 16 decimal places)
1016
1120
  *
1017
- *
1121
+ * @remarks
1018
1122
  * For `options.fixed`:
1019
1123
  * - `true` gives two decimal places
1020
1124
  * - `false` gives max amount of decimal places
@@ -1023,45 +1127,32 @@ var TimeBase = /*#__PURE__*/function () {
1023
1127
  * Default format: rate with two decimals if needed (i.e. decimals are > 0)
1024
1128
  * Option precedence (when all true): `constant` > `rounded` > `fixed`
1025
1129
  *
1026
- * @param {object} [options={}] For how to display it as rate
1027
- * @param {boolean|number} [options.fixed=true] Amount of decimal places (true gives 2 decimal places)
1028
- * @param {boolean} [options.constant=false] Use constant representation (if applicable)
1029
- * @param {boolean} [options.rounded=false] Rounded to nearest integer
1130
+ * @param options For how to display it as rate
1030
1131
  *
1031
- * @returns {number} Rate of the TimeBase
1132
+ * @return Rate of the TimeBase
1133
+ *
1134
+ * @category Time
1032
1135
  */
1033
1136
 
1034
1137
  }, {
1035
1138
  key: "toRate",
1036
- value: function toRate() {
1037
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1038
-
1039
- var _ref3 = options || {},
1040
- _ref3$constant = _ref3.constant,
1041
- constant = _ref3$constant === void 0 ? false : _ref3$constant,
1042
- _ref3$rounded = _ref3.rounded,
1043
- rounded = _ref3$rounded === void 0 ? false : _ref3$rounded,
1044
- _ref3$fixed = _ref3.fixed,
1045
- fixed = _ref3$fixed === void 0 ? true : _ref3$fixed;
1046
-
1047
- if (constant) {
1048
- var _rate = this.toConstant();
1049
-
1050
- if (_rate) return _rate;
1051
- }
1052
-
1139
+ value: function toRate(options) {
1053
1140
  var rate = this.denominator / this.numerator;
1054
1141
 
1055
1142
  if (Number.isInteger(rate)) {
1056
1143
  return rate;
1057
1144
  }
1058
1145
 
1059
- if (rounded) {
1146
+ if (options !== null && options !== void 0 && options.rounded) {
1060
1147
  return Math.round(rate);
1061
1148
  }
1062
1149
 
1150
+ var _ref2 = options || {},
1151
+ _ref2$fixed = _ref2.fixed,
1152
+ fixed = _ref2$fixed === void 0 ? true : _ref2$fixed;
1153
+
1063
1154
  if (fixed === true || typeof fixed === 'number') {
1064
- return Number(rate.toFixed(fixed === true ? 2 : fixed));
1155
+ return Number(rate.toFixed(typeof fixed === 'boolean' ? 2 : fixed));
1065
1156
  }
1066
1157
 
1067
1158
  return rate;
@@ -1069,7 +1160,7 @@ var TimeBase = /*#__PURE__*/function () {
1069
1160
  /**
1070
1161
  * Get TimeBase in a object representation
1071
1162
  *
1072
- * @returns {object} TimeBase as `{denominator, numerator}` object
1163
+ * @returns TimeBase as `{denominator, numerator}` object
1073
1164
  */
1074
1165
 
1075
1166
  }, {
@@ -1081,9 +1172,9 @@ var TimeBase = /*#__PURE__*/function () {
1081
1172
  };
1082
1173
  }
1083
1174
  /**
1084
- * @deprecated Use {@link TimeBase#toObject|toObject} instead
1175
+ * @deprecated Use {@link TimeBase#toObject | toObject} instead
1085
1176
  *
1086
- * @returns {object} TimeBase as `{denominator, numerator}` object
1177
+ * @returns TimeBase as `{denominator, numerator}` object
1087
1178
  */
1088
1179
 
1089
1180
  }, {
@@ -1101,8 +1192,10 @@ var TimeBase = /*#__PURE__*/function () {
1101
1192
  /**
1102
1193
  * Format a string representation of a time base to a TimeBase Instance
1103
1194
  *
1104
- * @param {string} timeBaseText The string to format to a TimeBase instance
1105
- * @returns {TimeBase} A TimeBase Instance
1195
+ * @param timeBaseText The string to format to a TimeBase instance
1196
+ * @returns A TimeBase Instance
1197
+ *
1198
+ * @category Time
1106
1199
  */
1107
1200
 
1108
1201
  var formatTimeBaseText = function formatTimeBaseText(timeBaseText) {
@@ -1144,27 +1237,29 @@ var formatTimeBaseText = function formatTimeBaseText(timeBaseText) {
1144
1237
  /**
1145
1238
  * Create a TimeBase instance of an object
1146
1239
  *
1147
- * @param {object} timeBase A TimeBase object ({ numerator, denominator })
1148
- * @returns {TimeBase} A TimeBase instance
1240
+ * @param timeBase A TimeBase object
1241
+ * @returns A TimeBase instance
1242
+ *
1243
+ * @category Time
1149
1244
  */
1150
-
1151
1245
  var formatTimeBaseType = function formatTimeBaseType(timeBase) {
1152
1246
  return new TimeBase(timeBase);
1153
1247
  };
1154
1248
 
1155
1249
  /**
1156
- * Create a TimeBase Instance from a string or object representation of a time base
1250
+ * Create a TimeBase Instance from a number, string or object representation of a time base
1157
1251
  *
1158
- * @param {string|object} timeBase Expressed as "denominator:numerator" or { numerator, denominator }
1159
- * @returns {TimeBase} A TimeBase instance
1252
+ * @param timeBase Input to create time base from
1253
+ * @returns A TimeBase instance
1254
+ *
1255
+ * @category Time
1160
1256
  */
1161
-
1162
1257
  var createTimeBase = function createTimeBase(timeBase) {
1163
- if (_typeof(timeBase) === 'object') {
1164
- return formatTimeBaseType(timeBase);
1258
+ if (typeof timeBase === 'string' || typeof timeBase === 'number') {
1259
+ return formatTimeBaseText(timeBase);
1165
1260
  }
1166
1261
 
1167
- return formatTimeBaseText(timeBase);
1262
+ return formatTimeBaseType(timeBase);
1168
1263
  };
1169
1264
 
1170
1265
  /**
@@ -1172,14 +1267,12 @@ var createTimeBase = function createTimeBase(timeBase) {
1172
1267
  *
1173
1268
  * Drops 4 frames (0-3) for 59.97 and 2 frames (0-1) for 29.97/NTSC
1174
1269
  *
1175
- * @param {TimeBase} timeBase to check
1176
- * @returns {number} amount of frame drops for specified timeBase
1270
+ * @param timeBase Time base to get amount of frames to drop for
1271
+ * @returns Amount of frame drops for specified time base, false if no frame drops
1177
1272
  */
1178
1273
  var getAmountOfFrameDrops = function getAmountOfFrameDrops(timeBase) {
1179
- var timeBaseConstant = timeBase.toRate({
1180
- constant: true
1181
- });
1182
- return timeBaseConstant === '59.94' && 4 || ['NTSC', '29.97'].includes(timeBaseConstant) && 2 || 0;
1274
+ var timeBaseConstant = timeBase.toConstant();
1275
+ return timeBaseConstant === '59.94' && 4 || ['NTSC', '29.97'].includes(timeBaseConstant) && 2 || false;
1183
1276
  };
1184
1277
 
1185
1278
  /**
@@ -1187,21 +1280,21 @@ var getAmountOfFrameDrops = function getAmountOfFrameDrops(timeBase) {
1187
1280
  *
1188
1281
  * Check if TimeBase drops frames
1189
1282
  *
1190
- * @param {object} timeBase TimeBase Instance to check
1191
- * @returns {boolean} true if time base drops frames, false otherwise
1283
+ * @param timeBase TimeBase Instance to check
1284
+ * @returns true if time base drops frames, false otherwise
1192
1285
  */
1193
1286
 
1194
1287
  var isDropFrameTimeBase = function isDropFrameTimeBase(timeBase) {
1195
1288
  return getAmountOfFrameDrops(timeBase) > 0;
1196
1289
  };
1197
1290
 
1198
- var _excluded$5 = ["hours"];
1291
+ var _excluded$6 = ["hours"];
1199
1292
 
1200
- var getDroppedFramesFromSamples = function getDroppedFramesFromSamples(_ref) {
1201
- var samples = _ref.samples,
1202
- timeBase = _ref.timeBase;
1293
+ var getDroppedFramesFromSamples = function getDroppedFramesFromSamples(timeCode) {
1294
+ var samples = timeCode.samples,
1295
+ timeBase = timeCode.timeBase;
1203
1296
  var amountOfFrameDrops = getAmountOfFrameDrops(timeBase);
1204
- if (amountOfFrameDrops === 0) return 0;
1297
+ if (!amountOfFrameDrops) return 0;
1205
1298
  var roundedFrameRate = timeBase.toRate({
1206
1299
  rounded: true
1207
1300
  });
@@ -1215,53 +1308,67 @@ var getDroppedFramesFromSamples = function getDroppedFramesFromSamples(_ref) {
1215
1308
  var amountOfFrameRemainderChunks = frameRemainder > 0 ? amountOfFrameDrops : 0;
1216
1309
  return amountOfTenMinuteChunks * 9 * amountOfFrameDrops + amountOfOneMinuteReminderChunks * amountOfFrameDrops + amountOfFrameRemainderChunks;
1217
1310
  };
1311
+
1218
1312
  /**
1219
1313
  * TimeCode class representing the TimeCodeType in VidiCore
1220
1314
  *
1221
1315
  * For more info, see the [Time Codes section of VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-codes)
1316
+ *
1317
+ * @category Time
1222
1318
  */
1223
-
1224
-
1225
1319
  var TimeCode = /*#__PURE__*/function () {
1320
+ // Amount of samples for the time code
1321
+ // The time base for the time code
1322
+ // If time code is dropFrame or not (by default checks timeBase)
1323
+ // Separator for frame in smpte output (default ":" for non-drop-frame and ";" for dropFrame)
1324
+
1226
1325
  /**
1227
1326
  * Constructor for TimeCode
1228
1327
  *
1229
- * @param {object} [timeCodeType={}] Object to create TimeCode of
1230
- * @param {number} [timeCodeType.samples=0] Amount of samples for the time code
1231
- * @param {object|string|number} [timeCodeType.timeBase={numerator: 1, denominator: 1}] The time base it should have
1232
- * @param {object} [options={}] Options for the timeCode
1233
- * @param {boolean} options.dropFrame If time code should be dropFrame or not (by default checks timeBase)
1234
- * @param {string} options.frameSeparator Separator to use for frame smpte output (default ":" for non-drop-frame and ";" for dropFrame)
1328
+ * @param timeCodeType Object to create TimeCode of
1329
+ * @param options Options for the timeCode
1235
1330
  */
1236
- function TimeCode() {
1331
+ function TimeCode(timeCodeType, options) {
1237
1332
  var _options$dropFrame, _options$frameSeparat;
1238
1333
 
1239
- var timeCodeType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1240
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1241
-
1242
1334
  _classCallCheck(this, TimeCode);
1243
1335
 
1244
- var _ref2 = timeCodeType || {},
1245
- _ref2$samples = _ref2.samples,
1246
- samples = _ref2$samples === void 0 ? 0 : _ref2$samples,
1247
- _ref2$timeBase = _ref2.timeBase,
1248
- timeBase = _ref2$timeBase === void 0 ? new TimeBase() : _ref2$timeBase;
1249
-
1250
- if (typeof samples === 'number') {
1251
- this.samples = samples;
1252
- } else if (typeof samples === 'string') {
1253
- if (samples === '-INF') {
1254
- this.samples = -Infinity;
1255
- } else if (samples === '+INF') {
1256
- this.samples = Infinity;
1336
+ _defineProperty(this, "samples", 0);
1337
+
1338
+ _defineProperty(this, "timeBase", new TimeBase());
1339
+
1340
+ _defineProperty(this, "dropFrame", void 0);
1341
+
1342
+ _defineProperty(this, "frameSeparator", void 0);
1343
+
1344
+ var _ref = timeCodeType || {},
1345
+ samples = _ref.samples,
1346
+ timeBase = _ref.timeBase;
1347
+
1348
+ if (samples !== undefined) {
1349
+ if (typeof samples === 'number') {
1350
+ this.samples = samples;
1351
+ } else if (typeof samples === 'string') {
1352
+ if (samples === '-INF') {
1353
+ this.samples = -Infinity;
1354
+ } else if (samples === '+INF') {
1355
+ this.samples = Infinity;
1356
+ } else {
1357
+ this.samples = Number(samples);
1358
+ }
1359
+ } else {
1360
+ throw new Error("samples is not number/string/-Inf/+Inf is: ".concat(samples));
1361
+ }
1362
+ }
1363
+
1364
+ if (timeBase !== undefined) {
1365
+ if (timeBase instanceof TimeBase) {
1366
+ this.timeBase = timeBase;
1257
1367
  } else {
1258
- this.samples = Number(samples);
1368
+ this.timeBase = createTimeBase(timeBase);
1259
1369
  }
1260
- } else {
1261
- throw new Error("samples is not number/string/-Inf/+Inf is: ".concat(samples));
1262
1370
  }
1263
1371
 
1264
- this.timeBase = createTimeBase(timeBase);
1265
1372
  this.dropFrame = (_options$dropFrame = options === null || options === void 0 ? void 0 : options.dropFrame) !== null && _options$dropFrame !== void 0 ? _options$dropFrame : isDropFrameTimeBase(this.timeBase);
1266
1373
  this.frameSeparator = (_options$frameSeparat = options === null || options === void 0 ? void 0 : options.frameSeparator) !== null && _options$frameSeparat !== void 0 ? _options$frameSeparat : this.dropFrame ? ';' : ':';
1267
1374
  }
@@ -1274,26 +1381,26 @@ var TimeCode = /*#__PURE__*/function () {
1274
1381
  * "51@50".add("25@25") => "101@50"
1275
1382
  * while "25@25".add("51@50") => "50@25" (not "101@50")
1276
1383
  *
1277
- * @param {TimeCode} timeCodeType A TimeCode instance you want to add with
1384
+ * @param timeCode A TimeCode instance you want to add with
1278
1385
  * @returns A new TimeCode instance with the addition applied
1279
1386
  */
1280
1387
 
1281
1388
 
1282
1389
  _createClass(TimeCode, [{
1283
1390
  key: "add",
1284
- value: function add(timeCodeType) {
1285
- if (!(timeCodeType !== null && timeCodeType !== void 0 && timeCodeType.timeBase) || (timeCodeType === null || timeCodeType === void 0 ? void 0 : timeCodeType.samples) === undefined) {
1391
+ value: function add(timeCode) {
1392
+ if (!(timeCode !== null && timeCode !== void 0 && timeCode.timeBase) || (timeCode === null || timeCode === void 0 ? void 0 : timeCode.samples) === undefined) {
1286
1393
  throw Error('Invalid timeCodeType, cannot be added');
1287
1394
  }
1288
1395
 
1289
- var _timeCodeType$timeBas = timeCodeType.timeBase;
1290
- _timeCodeType$timeBas = _timeCodeType$timeBas === void 0 ? {} : _timeCodeType$timeBas;
1291
- var numerator = _timeCodeType$timeBas.numerator,
1292
- denominator = _timeCodeType$timeBas.denominator;
1293
- var conformedTimeCode = timeCodeType;
1396
+ var _ref2 = (timeCode === null || timeCode === void 0 ? void 0 : timeCode.timeBase) || {},
1397
+ numerator = _ref2.numerator,
1398
+ denominator = _ref2.denominator;
1399
+
1400
+ var conformedTimeCode = timeCode;
1294
1401
 
1295
1402
  if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {
1296
- conformedTimeCode = timeCodeType.conformTimeBase(this.timeBase);
1403
+ conformedTimeCode = timeCode.conformTimeBase(this.timeBase);
1297
1404
  }
1298
1405
 
1299
1406
  var _conformedTimeCode = conformedTimeCode,
@@ -1312,25 +1419,25 @@ var TimeCode = /*#__PURE__*/function () {
1312
1419
  * "101@50".subtract("25@25") => "51@50"
1313
1420
  * while "50@25".subtract("51@50") => "25@25" (not "49@50")
1314
1421
  *
1315
- * @param {TimeCode} timeCodeType A TimeCode instance you want to subtract with
1422
+ * @param timeCode A TimeCode instance you want to subtract with
1316
1423
  * @returns A new TimeCode instance with the subtraction applied
1317
1424
  */
1318
1425
 
1319
1426
  }, {
1320
1427
  key: "subtract",
1321
- value: function subtract(timeCodeType) {
1322
- if (!(timeCodeType !== null && timeCodeType !== void 0 && timeCodeType.timeBase) || (timeCodeType === null || timeCodeType === void 0 ? void 0 : timeCodeType.samples) === undefined) {
1428
+ value: function subtract(timeCode) {
1429
+ if (!(timeCode !== null && timeCode !== void 0 && timeCode.timeBase) || (timeCode === null || timeCode === void 0 ? void 0 : timeCode.samples) === undefined) {
1323
1430
  throw Error('Invalid timeCodeType, cannot be subtracted');
1324
1431
  }
1325
1432
 
1326
- var _timeCodeType$timeBas2 = timeCodeType.timeBase;
1327
- _timeCodeType$timeBas2 = _timeCodeType$timeBas2 === void 0 ? {} : _timeCodeType$timeBas2;
1328
- var numerator = _timeCodeType$timeBas2.numerator,
1329
- denominator = _timeCodeType$timeBas2.denominator;
1330
- var conformedTimeCode = timeCodeType;
1433
+ var _timeCode$timeBase = timeCode.timeBase;
1434
+ _timeCode$timeBase = _timeCode$timeBase === void 0 ? {} : _timeCode$timeBase;
1435
+ var numerator = _timeCode$timeBase.numerator,
1436
+ denominator = _timeCode$timeBase.denominator;
1437
+ var conformedTimeCode = timeCode;
1331
1438
 
1332
1439
  if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {
1333
- conformedTimeCode = timeCodeType.conformTimeBase(this.timeBase);
1440
+ conformedTimeCode = timeCode.conformTimeBase(this.timeBase);
1334
1441
  }
1335
1442
 
1336
1443
  var _conformedTimeCode2 = conformedTimeCode,
@@ -1346,19 +1453,14 @@ var TimeCode = /*#__PURE__*/function () {
1346
1453
  * If it conforms to a less granular time base - it will floor samples (hasn't reached that sample yet)
1347
1454
  * - e.g. "51@50".conformTo("PAL") => "25@PAL" (not "26@PAL")
1348
1455
  *
1349
- * @param {string|object} conformTo The TimeBase it should conform the TimeCode to
1456
+ * @param timeBase The TimeBase it should conform the TimeCode to
1350
1457
  * @returns A new TimeCode instance with the conformTo timeBase applied
1351
1458
  */
1352
1459
 
1353
1460
  }, {
1354
1461
  key: "conformTimeBase",
1355
- value: function conformTimeBase(conformTo) {
1356
- var conformToTimeBase = conformTo;
1357
-
1358
- if (!(conformTo instanceof TimeBase)) {
1359
- conformToTimeBase = createTimeBase(conformTo);
1360
- }
1361
-
1462
+ value: function conformTimeBase(timeBase) {
1463
+ var conformToTimeBase = timeBase instanceof TimeBase ? timeBase : createTimeBase(timeBase);
1362
1464
  var samples = Math.floor(this.samples / (this.timeBase.toRate({
1363
1465
  fixed: false
1364
1466
  }) / conformToTimeBase.toRate({
@@ -1373,20 +1475,19 @@ var TimeCode = /*#__PURE__*/function () {
1373
1475
  /**
1374
1476
  * Get TimeCode as a text representation
1375
1477
  *
1478
+ * @remarks
1376
1479
  * Default format: samples@denominator(:numerator if > 1)
1377
1480
  * `constant` has precedence over `fraction` if both are true
1378
1481
  *
1379
- * @param {object} [options={}] TimeBase toText options
1380
- * @param {boolean} [options.includeTimeBaseForSeconds=false] include time base even if seconds
1381
- * @param {boolean} [options.constant=false] show as constant (e.g. @PAL)
1382
- * @param {boolean} [options.fraction=false] show as fraction (@25:1)
1482
+ * @param options Options for how to format text
1383
1483
  * @returns Text representation of TimeCode
1484
+ *
1485
+ * @category Time
1384
1486
  */
1385
1487
 
1386
1488
  }, {
1387
1489
  key: "toText",
1388
- value: function toText() {
1389
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1490
+ value: function toText(options) {
1390
1491
  var timeCodeText = "".concat(this.samples);
1391
1492
  var timeBaseText = this.timeBase.toText(options);
1392
1493
 
@@ -1399,7 +1500,7 @@ var TimeCode = /*#__PURE__*/function () {
1399
1500
  /**
1400
1501
  * Get TimeCode in a units object representation
1401
1502
  *
1402
- * @returns {object} in the format { hours, minutes, seconds, frames }
1503
+ * @returns Units (time and frames) for the time code
1403
1504
  */
1404
1505
 
1405
1506
  }, {
@@ -1431,7 +1532,7 @@ var TimeCode = /*#__PURE__*/function () {
1431
1532
  * Get TimeCode in a time object representation
1432
1533
  * "milliseconds" is rounded down, if you want another representation use "partialSeconds"
1433
1534
  *
1434
- * @returns {object} in the format { hours, minutes, seconds, milliseconds, partialSeconds }
1535
+ * @returns Time for the time code
1435
1536
  */
1436
1537
 
1437
1538
  }, {
@@ -1461,7 +1562,7 @@ var TimeCode = /*#__PURE__*/function () {
1461
1562
  /**
1462
1563
  * Get TimeCode in a seconds representation
1463
1564
  *
1464
- * @returns {number} the seconds
1565
+ * @returns Total seconds for the time code
1465
1566
  */
1466
1567
 
1467
1568
  }, {
@@ -1487,20 +1588,19 @@ var TimeCode = /*#__PURE__*/function () {
1487
1588
  * - uses colon delimiter (e.g. for format "hhmmss")
1488
1589
  * - shows "m:ss" or "h:mm:ss" if format is undefined
1489
1590
  *
1490
- * @param {object} [options={}]
1491
- * @param {string} options.format specify format of duration string, e.g. hh:mm:ss.S for 01:23:04.5
1492
- * @returns {string} Duration representation of the TimeCode
1591
+ * @param options Options for how to display duration
1592
+ * @returns Duration representation of the TimeCode
1493
1593
  */
1494
1594
 
1495
1595
  }, {
1496
1596
  key: "toDuration",
1497
- value: function toDuration() {
1498
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1499
- var format = options.format;
1597
+ value: function toDuration(options) {
1598
+ var _ref3 = options || {},
1599
+ format = _ref3.format;
1500
1600
 
1501
1601
  var _this$toTime = this.toTime(),
1502
1602
  hours = _this$toTime.hours,
1503
- rest = _objectWithoutProperties(_this$toTime, _excluded$5);
1603
+ rest = _objectWithoutProperties(_this$toTime, _excluded$6);
1504
1604
 
1505
1605
  var minutes = rest.minutes,
1506
1606
  seconds = rest.seconds,
@@ -1564,7 +1664,7 @@ var TimeCode = /*#__PURE__*/function () {
1564
1664
  var _amount = countConsecutiveChars(i, arr);
1565
1665
 
1566
1666
  if (!format.includes('h')) {
1567
- minutes *= hours * 60;
1667
+ minutes += hours * 60;
1568
1668
  }
1569
1669
 
1570
1670
  output.push("".concat(minutes).padStart(_amount, '0'));
@@ -1585,7 +1685,7 @@ var TimeCode = /*#__PURE__*/function () {
1585
1685
  var _amount2 = countConsecutiveChars(i, arr);
1586
1686
 
1587
1687
  if (!format.includes('m')) {
1588
- seconds *= minutes * 60;
1688
+ seconds += minutes * 60;
1589
1689
  }
1590
1690
 
1591
1691
  output.push("".concat(seconds).padStart(_amount2, '0'));
@@ -1606,7 +1706,7 @@ var TimeCode = /*#__PURE__*/function () {
1606
1706
  var _amount3 = countConsecutiveChars(i, arr);
1607
1707
 
1608
1708
  if (!format.includes('s')) {
1609
- milliseconds *= seconds * 1000;
1709
+ milliseconds += seconds * 1000;
1610
1710
  }
1611
1711
 
1612
1712
  output.push("".concat(Math.round(milliseconds / Math.pow(10, 3 - _amount3))).padStart(_amount3, '0'));
@@ -1623,7 +1723,7 @@ var TimeCode = /*#__PURE__*/function () {
1623
1723
  /**
1624
1724
  * Get TimeCode in a smpte representation
1625
1725
  *
1626
- * @returns {string} Smpte representation of the TimeCode
1726
+ * @returns Smpte representation of the TimeCode
1627
1727
  */
1628
1728
 
1629
1729
  }, {
@@ -1643,7 +1743,7 @@ var TimeCode = /*#__PURE__*/function () {
1643
1743
  /**
1644
1744
  * Get TimeCode as a VidiCore TimeCodeType object
1645
1745
  *
1646
- * @returns {object} TimeCode as `{ samples, timeBase }`
1746
+ * @returns TimeCode as `{ samples, timeBase }`
1647
1747
  */
1648
1748
 
1649
1749
  }, {
@@ -1655,9 +1755,9 @@ var TimeCode = /*#__PURE__*/function () {
1655
1755
  };
1656
1756
  }
1657
1757
  /**
1658
- * @deprecated Use {@link TimeCode#toObject|toObject} instead
1758
+ * @deprecated Use {@link TimeCode#toObject | toObject} instead
1659
1759
  *
1660
- * @returns {object} TimeCode as `{ samples, timeBase }`
1760
+ * @returns TimeCode as `{ samples, timeBase }`
1661
1761
  */
1662
1762
 
1663
1763
  }, {
@@ -1679,9 +1779,9 @@ var TimeCode = /*#__PURE__*/function () {
1679
1779
  *
1680
1780
  * Using Euclid's algorithm
1681
1781
  *
1682
- * @param {number} num1 a number
1683
- * @param {number} num2 another number
1684
- * @returns {number} the greatest common divisor as a number
1782
+ * @param num1 a number
1783
+ * @param num2 another number
1784
+ * @returns The greatest common divisor of num1 and num2
1685
1785
  */
1686
1786
  var getGreatestCommonDivisor = function getGreatestCommonDivisor(num1, num2) {
1687
1787
  var a = Math.abs(num1);
@@ -1702,7 +1802,8 @@ var getGreatestCommonDivisor = function getGreatestCommonDivisor(num1, num2) {
1702
1802
  return a || b;
1703
1803
  };
1704
1804
 
1705
- var _excluded$4 = ["timeBase", "useGCD"];
1805
+ var _excluded$5 = ["timeBase", "useGCD"];
1806
+
1706
1807
  /**
1707
1808
  * Format seconds to TimeCode object
1708
1809
  * Input time base is always 1:1 since it expects seconds as input
@@ -1712,20 +1813,18 @@ var _excluded$4 = ["timeBase", "useGCD"];
1712
1813
  * - 10^9 seconds can have 10^6 decimals (microsecond) precision
1713
1814
  * - 10^12 seconds can have 10^3 decimals (millisecond) precision
1714
1815
  *
1715
- * @param {string|number} seconds With or without decimals ("." and "," are both interpreted as decimal)
1716
- * @param {object} [options={}] Options for how to format the seconds to a TimeCode
1717
- * @param {object|string} options.timeBase What TimeBase the resulting TimeCode should have (if unset and useGCD=false, denominator will be 10^<amount-of-decimals>)
1718
- * @param {boolean} [options.useGCD=false] Samples and denominator are divided with GCD (ignored if timeBase is set) (e.g. 1.04 => 104@100 => 26@25)
1719
- * @returns {TimeCode} A TimeCode instance
1816
+ * @param seconds With or without decimals ("." and "," are both interpreted as decimal)
1817
+ * @param options Options for how to format the seconds to a TimeCode
1818
+ * @returns A TimeCode instance
1819
+ *
1820
+ * @category Time
1720
1821
  */
1721
-
1722
- var formatTimeCodeSeconds = function formatTimeCodeSeconds(seconds) {
1723
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1724
-
1725
- var timeBase = options.timeBase,
1726
- _options$useGCD = options.useGCD,
1727
- useGCD = _options$useGCD === void 0 ? false : _options$useGCD,
1728
- timeCodeOptions = _objectWithoutProperties(options, _excluded$4);
1822
+ var formatTimeCodeSeconds = function formatTimeCodeSeconds(seconds, options) {
1823
+ var _ref = options || {},
1824
+ timeBase = _ref.timeBase,
1825
+ _ref$useGCD = _ref.useGCD,
1826
+ useGCD = _ref$useGCD === void 0 ? false : _ref$useGCD,
1827
+ timeCodeOptions = _objectWithoutProperties(_ref, _excluded$5);
1729
1828
 
1730
1829
  var secondsWithDot = "".concat(seconds).replace(/,/g, '.');
1731
1830
 
@@ -1747,10 +1846,10 @@ var formatTimeCodeSeconds = function formatTimeCodeSeconds(seconds) {
1747
1846
 
1748
1847
  var decimalPlaces = Math.min((_ms$length = ms === null || ms === void 0 ? void 0 : ms.length) !== null && _ms$length !== void 0 ? _ms$length : 0, 16);
1749
1848
  denominator *= Math.pow(10, decimalPlaces);
1750
- samples = Math.round(secondsWithDot * denominator);
1849
+ samples = Math.round(Number(secondsWithDot) * denominator);
1751
1850
  }
1752
1851
 
1753
- if (!timeBase && useGCD) {
1852
+ if (timeBase === undefined && useGCD) {
1754
1853
  var gcd = getGreatestCommonDivisor(denominator, samples);
1755
1854
  samples /= gcd;
1756
1855
  denominator /= gcd;
@@ -1763,32 +1862,9 @@ var formatTimeCodeSeconds = function formatTimeCodeSeconds(seconds) {
1763
1862
  numerator: 1
1764
1863
  }
1765
1864
  }, timeCodeOptions);
1766
- return timeBase ? timeCode.conformTimeBase(createTimeBase(timeBase === true ? 1 : timeBase)) : timeCode;
1865
+ return timeBase !== undefined ? timeCode.conformTimeBase(createTimeBase(timeBase === true ? 1 : timeBase)) : timeCode;
1767
1866
  };
1768
1867
 
1769
- var _excluded$3 = ["exceedingMode", "timeBase"];
1770
-
1771
- function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1772
-
1773
- function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$7(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1774
- var MAP_SEPARATOR_TO_OPTIONS = {
1775
- ':': {
1776
- dropFrame: false,
1777
- frameSeparator: ':'
1778
- },
1779
- '.': {
1780
- dropFrame: false,
1781
- frameSeparator: '.'
1782
- },
1783
- ';': {
1784
- dropFrame: true,
1785
- frameSeparator: ';'
1786
- },
1787
- ',': {
1788
- dropFrame: true,
1789
- frameSeparator: ','
1790
- }
1791
- };
1792
1868
  var getDroppedFramesFromSmpte = function getDroppedFramesFromSmpte(_ref, samples, timeBase) {
1793
1869
  var _ref2 = _slicedToArray(_ref, 4),
1794
1870
  hh = _ref2[0],
@@ -1801,7 +1877,7 @@ var getDroppedFramesFromSmpte = function getDroppedFramesFromSmpte(_ref, samples
1801
1877
  });
1802
1878
  var dropFrames = getAmountOfFrameDrops(timeBase);
1803
1879
 
1804
- if (samples === 0 || dropFrames === 0) {
1880
+ if (samples === 0 || !dropFrames) {
1805
1881
  return 0;
1806
1882
  }
1807
1883
 
@@ -1812,9 +1888,7 @@ var getDroppedFramesFromSmpte = function getDroppedFramesFromSmpte(_ref, samples
1812
1888
  var secondFrames = ss * roundedFrameRate - (shouldDropMinute && ss > 1 ? dropFrames : 0);
1813
1889
 
1814
1890
  if (shouldDropSecond && ff < dropFrames) {
1815
- throw new Error("Frame does not exist for ".concat(timeBase.toRate({
1816
- constant: true
1817
- }), " drop-frame"));
1891
+ throw new Error("Frame does not exist for ".concat(timeBase.toConstant() || timeBase.toRate(), " drop-frame"));
1818
1892
  }
1819
1893
 
1820
1894
  var frameFrames = shouldDropSecond ? ff - dropFrames : ff;
@@ -1822,16 +1896,26 @@ var getDroppedFramesFromSmpte = function getDroppedFramesFromSmpte(_ref, samples
1822
1896
  return samples - samplesWithoutDroppedFrames;
1823
1897
  };
1824
1898
 
1899
+ var getSamplesFromSmpte = function getSamplesFromSmpte(smpteValues, timeBase, dropFrame) {
1900
+ var _smpteValues = _slicedToArray(smpteValues, 4),
1901
+ hh = _smpteValues[0],
1902
+ mm = _smpteValues[1],
1903
+ ss = _smpteValues[2],
1904
+ ff = _smpteValues[3];
1905
+
1906
+ var roundedFrameRate = timeBase.toRate({
1907
+ rounded: true
1908
+ });
1909
+ var samples = hh * 3600 * roundedFrameRate + mm * 60 * roundedFrameRate + ss * roundedFrameRate + ff;
1910
+ return samples - (dropFrame ? getDroppedFramesFromSmpte(smpteValues, samples, timeBase) : 0);
1911
+ };
1912
+
1825
1913
  var splitSmpte = function splitSmpte(smpte) {
1826
- var _ref3 = (smpte === null || smpte === void 0 ? void 0 : smpte.match(/[^0-9:\-_]/)) || [],
1827
- _ref4 = _slicedToArray(_ref3, 1),
1828
- nonColonFrameSeparator = _ref4[0];
1914
+ var _ref = (smpte === null || smpte === void 0 ? void 0 : smpte.match(/[^0-9:\-_]/)) || [],
1915
+ _ref2 = _slicedToArray(_ref, 1),
1916
+ nonColonFrameSeparator = _ref2[0];
1829
1917
 
1830
1918
  var smpteValues = [];
1831
- var options = {
1832
- frameSeparator: ':',
1833
- dropFrame: false
1834
- };
1835
1919
 
1836
1920
  if (nonColonFrameSeparator) {
1837
1921
  var _smpte$split = smpte.split(nonColonFrameSeparator),
@@ -1840,13 +1924,10 @@ var splitSmpte = function splitSmpte(smpte) {
1840
1924
  ff = _smpte$split2[1];
1841
1925
 
1842
1926
  smpteValues = [].concat(_toConsumableArray(hhmmss.split(':')), [ff]);
1843
- options = MAP_SEPARATOR_TO_OPTIONS[nonColonFrameSeparator] || {};
1844
1927
  } else {
1845
1928
  smpteValues = smpte.split(':');
1846
1929
  }
1847
1930
 
1848
- smpteValues = smpteValues.map(Number);
1849
-
1850
1931
  if (smpteValues.length !== 4) {
1851
1932
  throw new Error('Invalid format, must be "##:##:##:##');
1852
1933
  }
@@ -1857,25 +1938,20 @@ var splitSmpte = function splitSmpte(smpte) {
1857
1938
  throw new Error('Invalid format, values must be numbers');
1858
1939
  }
1859
1940
 
1860
- return [smpteValues, options];
1941
+ var smpteFrameSeparator = nonColonFrameSeparator || ':';
1942
+ return {
1943
+ smpteValues: smpteValues.map(Number),
1944
+ smpteFrameSeparator: smpteFrameSeparator
1945
+ };
1861
1946
  };
1862
1947
 
1863
- var getSamplesFromSmpte = function getSamplesFromSmpte(smpteValues, timeBase, dropFrame) {
1864
- var _smpteValues = _slicedToArray(smpteValues, 4),
1865
- hh = _smpteValues[0],
1866
- mm = _smpteValues[1],
1867
- ss = _smpteValues[2],
1868
- ff = _smpteValues[3];
1869
-
1870
- var roundedFrameRate = timeBase.toRate({
1871
- rounded: true
1872
- });
1873
- var samples = hh * 3600 * roundedFrameRate + mm * 60 * roundedFrameRate + ss * roundedFrameRate + ff;
1874
- return samples - (dropFrame ? getDroppedFramesFromSmpte(smpteValues, samples, timeBase) : 0);
1875
- }; // Better naming than "useValueExcess" and "useValueTruncate" must exist
1948
+ var _excluded$4 = ["exceedingMode", "timeBase"];
1876
1949
 
1950
+ function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1877
1951
 
1952
+ function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$9(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1878
1953
  var EXCEEDING_OPTIONS = ['error', 'add', 'ignore'];
1954
+
1879
1955
  /**
1880
1956
  * Format smpte text to a TimeCode Instance
1881
1957
  *
@@ -1884,22 +1960,18 @@ var EXCEEDING_OPTIONS = ['error', 'add', 'ignore'];
1884
1960
  * - "truncate" exceeding values will be truncated (e.g. PAL and 00:00:00:25 => 00:00:00:24)
1885
1961
  * - "error" exceeding values will throw error (e.g. PAL and 00:00:00:25 => Error)
1886
1962
  *
1887
- * @param {string} smpte String representation of smpte
1888
- * @param {object} [options={}] What options to use for creating the time code from smpte (all not specified below are passed to the TimeCode constructor)
1889
- * @param {object|string|number} options.timeBase TimeBase of smpte (and consequently TimeBase of output TimeCode)
1890
- * @param {string} [options.exceedingMode=error] How to handle exceeding values (`overflow|truncate|error`)
1891
- * @param {boolean} options.dropFrame If it should parse and create time code using dropFrame
1892
- * @param {string} options.frameSeparator What frame separator the TimeCode should store (defaults to what the smpte has)
1893
- * @returns {TimeCode} A TimeCode instance
1963
+ * @param smpte String representation of smpte
1964
+ * @param options Options for creating the time code from smpte
1965
+ * @returns TimeCode instance created from smpte string
1966
+ *
1967
+ * @category Time
1894
1968
  */
1895
-
1896
- var formatTimeCodeSmpte = function formatTimeCodeSmpte(smpte) {
1897
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1898
-
1899
- var _options$exceedingMod = options.exceedingMode,
1900
- exceedingMode = _options$exceedingMod === void 0 ? 'error' : _options$exceedingMod,
1901
- timeBase = options.timeBase,
1902
- timeCodeOptions = _objectWithoutProperties(options, _excluded$3);
1969
+ var formatTimeCodeSmpte = function formatTimeCodeSmpte(smpte, options) {
1970
+ var _ref = options || {},
1971
+ _ref$exceedingMode = _ref.exceedingMode,
1972
+ exceedingMode = _ref$exceedingMode === void 0 ? 'error' : _ref$exceedingMode,
1973
+ timeBase = _ref.timeBase,
1974
+ timeCodeOptions = _objectWithoutProperties(_ref, _excluded$4);
1903
1975
 
1904
1976
  if ([null, undefined].includes(smpte)) {
1905
1977
  throw new Error("smpte cannot be undefined or null");
@@ -1910,15 +1982,16 @@ var formatTimeCodeSmpte = function formatTimeCodeSmpte(smpte) {
1910
1982
  }
1911
1983
 
1912
1984
  var _splitSmpte = splitSmpte(smpte),
1913
- _splitSmpte2 = _slicedToArray(_splitSmpte, 2),
1914
- smpteValues = _splitSmpte2[0],
1915
- timeCodeOptionsFromSmpte = _splitSmpte2[1];
1985
+ smpteValues = _splitSmpte.smpteValues,
1986
+ smpteFrameSeparator = _splitSmpte.smpteFrameSeparator;
1916
1987
 
1917
1988
  var timeBaseInstance = createTimeBase(timeBase);
1918
1989
 
1919
- var mergedOptions = _objectSpread$7(_objectSpread$7({}, timeCodeOptionsFromSmpte), {}, {
1920
- dropFrame: isDropFrameTimeBase(timeBaseInstance)
1921
- }, timeCodeOptions);
1990
+ var mergedOptions = _objectSpread$9(_objectSpread$9({}, timeCodeOptions), {}, {
1991
+ frameSeparator: (timeCodeOptions === null || timeCodeOptions === void 0 ? void 0 : timeCodeOptions.frameSeparator) || smpteFrameSeparator
1992
+ }, (timeCodeOptions === null || timeCodeOptions === void 0 ? void 0 : timeCodeOptions.dropFrame) === undefined ? {
1993
+ dropFrame: timeBase !== undefined ? isDropFrameTimeBase(timeBaseInstance) : [';', ','].includes(smpteFrameSeparator)
1994
+ } : {});
1922
1995
 
1923
1996
  var roundedFrameRate = timeBaseInstance.toRate({
1924
1997
  rounded: true
@@ -1936,11 +2009,11 @@ var formatTimeCodeSmpte = function formatTimeCodeSmpte(smpte) {
1936
2009
  switch (exceedingMode) {
1937
2010
  case 'error':
1938
2011
  {
1939
- var _smpteValues2 = _slicedToArray(smpteValues, 4),
1940
- hours = _smpteValues2[0],
1941
- minutes = _smpteValues2[1],
1942
- seconds = _smpteValues2[2],
1943
- frames = _smpteValues2[3];
2012
+ var _smpteValues = _slicedToArray(smpteValues, 4),
2013
+ hours = _smpteValues[0],
2014
+ minutes = _smpteValues[1],
2015
+ seconds = _smpteValues[2],
2016
+ frames = _smpteValues[3];
1944
2017
 
1945
2018
  if (hours >= 100) {
1946
2019
  throw Error('Minutes has to be less than 60');
@@ -1964,11 +2037,11 @@ var formatTimeCodeSmpte = function formatTimeCodeSmpte(smpte) {
1964
2037
 
1965
2038
  case 'ignore':
1966
2039
  {
1967
- var _smpteValues3 = _slicedToArray(smpteValues, 4),
1968
- _hours = _smpteValues3[0],
1969
- _minutes = _smpteValues3[1],
1970
- _seconds = _smpteValues3[2],
1971
- _frames = _smpteValues3[3];
2040
+ var _smpteValues2 = _slicedToArray(smpteValues, 4),
2041
+ _hours = _smpteValues2[0],
2042
+ _minutes = _smpteValues2[1],
2043
+ _seconds = _smpteValues2[2],
2044
+ _frames = _smpteValues2[3];
1972
2045
 
1973
2046
  var truncatedSmpteValues = [Math.min(100, _hours), Math.min(59, _minutes), Math.min(59, _seconds), Math.min(maxFrame, _frames)];
1974
2047
  samples = getSamplesFromSmpte(truncatedSmpteValues, timeBaseInstance, mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.dropFrame);
@@ -1993,22 +2066,21 @@ var formatTimeCodeSmpte = function formatTimeCodeSmpte(smpte) {
1993
2066
  }, mergedOptions);
1994
2067
  };
1995
2068
 
1996
- var _excluded$2 = ["timeBase"];
2069
+ var _excluded$3 = ["timeBase"];
2070
+
1997
2071
  /**
1998
2072
  * Format text to a TimeCode instance
1999
2073
  *
2000
- * @param {string} timeCodeText A time code text (e.g. "25@PAL")
2001
- * @param {object} [options={}] Options for how to format
2002
- * @param {object|string} options.timeBase The time base the returned TimeCode should have
2003
- * @returns {TimeCode} A TimeCode instance
2074
+ * @returns A TimeCode instance
2075
+ *
2076
+ * @category Time
2004
2077
  */
2005
-
2006
2078
  var formatTimeCodeText = function formatTimeCodeText(timeCodeText, options) {
2007
2079
  var _timeCodeObject;
2008
2080
 
2009
2081
  var _ref = options || {},
2010
2082
  timeBase = _ref.timeBase,
2011
- timeCodeOptions = _objectWithoutProperties(_ref, _excluded$2);
2083
+ timeCodeOptions = _objectWithoutProperties(_ref, _excluded$3);
2012
2084
 
2013
2085
  var timeCodeObject;
2014
2086
 
@@ -2056,46 +2128,51 @@ var formatTimeCodeText = function formatTimeCodeText(timeCodeText, options) {
2056
2128
  /**
2057
2129
  * Format an object to a TimeCode instance
2058
2130
  *
2059
- * @param {object} timeCode To create TimeCode instance of
2060
- * @param {object} options For the TimeCode constructor
2061
- * @returns {TimeCode} A TimeCode instance
2131
+ * @param timeCode To create TimeCode instance of
2132
+ * @param options For the TimeCode constructor
2133
+ * @returns A TimeCode instance
2134
+ *
2135
+ * @category Time
2062
2136
  */
2063
-
2064
2137
  var formatTimeCodeType = function formatTimeCodeType(timeCode, options) {
2065
2138
  return new TimeCode(timeCode, options);
2066
2139
  };
2067
2140
 
2068
- var isObject = function isObject(o) {
2069
- return Object.prototype.toString.call(o) === '[object Object]';
2070
- };
2071
-
2072
- var isString = function isString(s) {
2073
- return typeof s === 'string';
2074
- };
2075
-
2076
2141
  var hasSmpteFormat = function hasSmpteFormat(s) {
2077
- return isString(s) && !!s.match(/^(\d\d+):(\d\d+):(\d\d+)(:|;|\.|,)(\d\d+)$/);
2142
+ return !!s.match(/^(\d\d+):(\d\d+):(\d\d+)(:|;|\.|,)(\d\d+)$/);
2078
2143
  };
2079
2144
 
2080
2145
  var isNumber = function isNumber(s) {
2081
2146
  return !Number.isNaN(Number(s));
2082
2147
  };
2148
+
2083
2149
  /**
2084
2150
  * Create a TimeCode instance from smpte, seconds/samples, timeCode object or string
2085
2151
  *
2086
- * @param {object|string|number} timeCode Smpte, seconds/samples, timeCode object or string
2087
- * @param {object} [options={}] For the format functions
2088
- * @returns {TimeCode} A TimeCode instance
2152
+ * @param timeCode Smpte, seconds/samples, timeCode object or string
2153
+ * @param options For the format functions
2154
+ * @returns A TimeCode instance
2155
+ *
2156
+ * @category Time
2089
2157
  */
2158
+ var createTimeCode = function createTimeCode(timeCode, options) {
2159
+ // TimeCode
2160
+ if (typeof timeCode !== 'string' && typeof timeCode !== 'number') return formatTimeCodeType(timeCode, options); // SMPTE
2090
2161
 
2162
+ if (typeof timeCode === 'string' && hasSmpteFormat(timeCode)) return formatTimeCodeSmpte(timeCode, options);
2163
+ if (['string', 'number'].includes(_typeof(timeCode)) && isNumber(timeCode)) return formatTimeCodeSeconds(timeCode, options);
2091
2164
 
2092
- var createTimeCode = function createTimeCode(timeCode, options) {
2093
- if (isObject(timeCode)) return formatTimeCodeType(timeCode, options);
2094
- if (hasSmpteFormat(timeCode)) return formatTimeCodeSmpte(timeCode, options);
2095
- if (isNumber(timeCode)) return formatTimeCodeSeconds(timeCode, options);
2096
- return formatTimeCodeText(timeCode, options);
2165
+ if (typeof timeCode === 'string') {
2166
+ return formatTimeCodeText(timeCode, options);
2167
+ }
2168
+
2169
+ return undefined;
2097
2170
  };
2098
2171
 
2172
+ function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2173
+
2174
+ function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2175
+
2099
2176
  function timeToCueTime(_ref) {
2100
2177
  var _ref$hours = _ref.hours,
2101
2178
  hours = _ref$hours === void 0 ? 0 : _ref$hours,
@@ -2111,129 +2188,150 @@ function timeToCueTime(_ref) {
2111
2188
  var partialStr = (partialSeconds * 10).toFixed().padStart(3, '0');
2112
2189
  return "".concat(hourStr, ":").concat(minStr, ":").concat(secondsStr, ".").concat(partialStr);
2113
2190
  }
2191
+
2192
+ var defaultOptions$2 = {
2193
+ subtitleGroup: 'stl_subtitle',
2194
+ subtitleField: 'stl_text'
2195
+ };
2114
2196
  /**
2115
- * Convert subtitle groups to WebVtt subtitle format
2116
- * @param {Object} [input={}]
2117
- * @param {Object} input.metadataType - MetadataType response from API.
2118
- * @param {string} [input.subtitleGroup=stl_subtitle] - Name of group containing subtitle field/text.
2119
- * @param {string} [input.subtitleField=stl_text] - Name of field (text) to use for the subtitles.
2120
- * @returns {string} WebVtt subtitles
2197
+ * Convert metadata subtitle groups to WebVtt subtitles
2198
+ *
2199
+ * @param metadataType - Vidicore metadata object (should include subtitleGroup and subtitleField)
2200
+ * @param options - options for how to map subtitle group
2201
+ * @returns WebVtt subtitles
2202
+ *
2203
+ * @category Metadata
2121
2204
  */
2122
2205
 
2206
+ var metadataTypeToWebVtt = function metadataTypeToWebVtt(metadataType, options) {
2207
+ var _defaultOptions = _objectSpread$8(_objectSpread$8({}, defaultOptions$2), options || {}),
2208
+ subtitleGroup = _defaultOptions.subtitleGroup,
2209
+ subtitleField = _defaultOptions.subtitleField;
2123
2210
 
2124
- var metadataTypeToWebVtt = function metadataTypeToWebVtt(_ref2) {
2125
- var metadataType = _ref2.metadataType,
2126
- _ref2$subtitleGroup = _ref2.subtitleGroup,
2127
- subtitleGroup = _ref2$subtitleGroup === void 0 ? 'stl_subtitle' : _ref2$subtitleGroup,
2128
- _ref2$subtitleField = _ref2.subtitleField,
2129
- subtitleField = _ref2$subtitleField === void 0 ? 'stl_text' : _ref2$subtitleField;
2130
- var parseOptions = {
2131
- includeTimespanAttributes: true,
2132
- flatTimespan: true,
2133
- flatGroup: true,
2134
- joinValue: ','
2135
- };
2136
-
2137
- var _ref3 = metadataType || {},
2138
- _ref3$timespan = _ref3.timespan,
2139
- timespanList = _ref3$timespan === void 0 ? [] : _ref3$timespan;
2211
+ var _ref2 = metadataType || {},
2212
+ _ref2$timespan = _ref2.timespan,
2213
+ timespanList = _ref2$timespan === void 0 ? [] : _ref2$timespan;
2140
2214
 
2141
2215
  if (timespanList.length === 0) return '';
2142
- var sortedTimespans = timespanList.sort(sortTimespanList);
2143
- var parsedTimespans = sortedTimespans.map(function (timespanType) {
2144
- return parseTimespan(timespanType, parseOptions);
2216
+ var parsedTimespans = parseTimespanList(timespanList, {
2217
+ includeTimespanAttributes: true,
2218
+ sortTimespan: true,
2219
+ timespanAsList: true,
2220
+ overrideGroup: true,
2221
+ joinValue: ','
2145
2222
  });
2146
- var vttCues = parsedTimespans.map(function (thisTimespan) {
2147
- var startText = thisTimespan.start,
2148
- endText = thisTimespan.end,
2149
- _thisTimespan$subtitl = thisTimespan[subtitleGroup];
2150
- _thisTimespan$subtitl = _thisTimespan$subtitl === void 0 ? {} : _thisTimespan$subtitl;
2151
- var text = _thisTimespan$subtitl[subtitleField];
2223
+ var vttCues = parsedTimespans.map(function (timespan) {
2224
+ var _ref3 = (Array.isArray(timespan) ? timespan[0] : timespan) || {},
2225
+ startText = _ref3.start,
2226
+ endText = _ref3.end,
2227
+ _ref3$subtitleGroup = _ref3[subtitleGroup];
2228
+
2229
+ _ref3$subtitleGroup = _ref3$subtitleGroup === void 0 ? {} : _ref3$subtitleGroup;
2230
+ var text = _ref3$subtitleGroup[subtitleField];
2152
2231
  if (!text) return '';
2153
- var startTime = formatTimeCodeText(startText).toTime();
2154
- var start = timeToCueTime(startTime);
2155
- var endTime = formatTimeCodeText(endText).toTime();
2156
- var end = timeToCueTime(endTime);
2232
+ var start = timeToCueTime(formatTimeCodeText(startText).toTime());
2233
+ var end = timeToCueTime(formatTimeCodeText(endText).toTime());
2157
2234
  return "".concat(start, " --> ").concat(end, " line:0%\r").concat(text, "\r");
2158
2235
  });
2159
2236
  return "WEBVTT\n\n\n".concat(vttCues.join('\n'));
2160
2237
  };
2161
2238
 
2162
- var SYSTEM_FIELDGROUPS = ['stl_subtitle', 'stl_tti', 'stl_gsi', 'mrk_marker', 'pho_validation', 'pho_resource', 'pho_error', 'facedetect_rect', 'facedetect_face', 'originalTrackFilename', 'stl_gsiHeader'];
2163
- var SYSTEM_FIELDS = ['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'];
2164
-
2239
+ /**
2240
+ * Create a Vidicore facet list
2241
+ *
2242
+ * @param fieldList Input to create facet of
2243
+ * @param options Options for creating the facet
2244
+ * @returns A VidiCore facet list
2245
+ *
2246
+ * @category Search
2247
+ */
2165
2248
  var createFacetType = function createFacetType() {
2166
2249
  var fieldList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2167
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2250
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
2251
+ count: true
2252
+ };
2168
2253
  return fieldList.map(function (field) {
2169
2254
  return {
2170
2255
  field: field,
2171
2256
  name: field,
2172
- count: options.count || true,
2257
+ count: options.count !== undefined ? options === null || options === void 0 ? void 0 : options.count : true,
2173
2258
  exclude: fieldList
2174
2259
  };
2175
2260
  });
2176
2261
  };
2177
2262
 
2178
- function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2263
+ function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2179
2264
 
2180
- function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2265
+ function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$7(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2181
2266
 
2267
+ /** Parsed facet type */
2268
+
2269
+ /**
2270
+ * Parse a VidiCore facet type list
2271
+ *
2272
+ * @param facetType A facet type list to parse
2273
+ * @returns A parsed facet type list
2274
+ *
2275
+ * @category Search
2276
+ */
2182
2277
  var parseFacetType = function parseFacetType() {
2183
2278
  var facetType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2184
2279
  var output = {};
2185
-
2186
- var facetFieldReducer = function facetFieldReducer(a, _ref) {
2187
- var fieldValue = _ref.fieldValue,
2188
- value = _ref.value;
2189
- return _objectSpread$6(_objectSpread$6({}, a), {}, _defineProperty({}, fieldValue, value));
2190
- };
2191
-
2192
- facetType.forEach(function (_ref2) {
2193
- var name = _ref2.name,
2194
- field = _ref2.field,
2195
- count = _ref2.count;
2196
- output[name || field] = count.reduce(facetFieldReducer, {});
2280
+ facetType.forEach(function (_ref) {
2281
+ var name = _ref.name,
2282
+ field = _ref.field,
2283
+ count = _ref.count;
2284
+ output[name || field] = count.reduce(function (acc, _ref2) {
2285
+ var fieldValue = _ref2.fieldValue,
2286
+ value = _ref2.value;
2287
+ return _objectSpread$7(_objectSpread$7({}, acc), {}, _defineProperty({}, fieldValue, value));
2288
+ }, {});
2197
2289
  });
2198
2290
  return output;
2199
2291
  };
2200
2292
 
2201
- function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2293
+ function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2202
2294
 
2203
- function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2295
+ function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2204
2296
 
2297
+ var defaultOptions$1 = {
2298
+ arrayOnSingle: true,
2299
+ joinValue: undefined,
2300
+ timespanAsList: false
2301
+ };
2205
2302
  /**
2206
2303
  * Parses highlight timespan in VidiCore into key/value object.
2207
2304
  * The attributes can be targeted for each sub-type.
2208
- * @param {Object[]} highlightTimespan - A VidiCore timespan object.
2209
- * @param {Object} options - Options which change how the timespans are parsed.
2210
- * @param {boolean} [options.arrayOnSingle=true] - Return an array if there is a single value.
2211
- * @param {boolean} [options.timespanAsList=false] - Return timespans as list.
2212
- * @param {string} options.joinValue - String to join the values, eg ','.
2305
+ * @param timespan - A VidiCore search timespan
2306
+ * @param options - Options which change how the timespans are parsed
2307
+ *
2308
+ * @category Search
2213
2309
  */
2214
- var parseHighlightTimespan = function parseHighlightTimespan() {
2215
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2310
+
2311
+ var parseHighlightTimespan = function parseHighlightTimespan(timespan, options) {
2312
+ var _defaultOptions = _objectSpread$6(_objectSpread$6({}, defaultOptions$1), options || {}),
2313
+ _defaultOptions$array = _defaultOptions.arrayOnSingle,
2314
+ arrayOnSingle = _defaultOptions$array === void 0 ? true : _defaultOptions$array,
2315
+ _defaultOptions$joinV = _defaultOptions.joinValue,
2316
+ joinValue = _defaultOptions$joinV === void 0 ? undefined : _defaultOptions$joinV,
2317
+ _defaultOptions$times = _defaultOptions.timespanAsList,
2318
+ timespanAsList = _defaultOptions$times === void 0 ? false : _defaultOptions$times;
2319
+
2320
+ var _ref = timespan || {},
2216
2321
  _ref$field = _ref.field,
2217
2322
  field = _ref$field === void 0 ? [] : _ref$field,
2218
2323
  start = _ref.start,
2219
2324
  end = _ref.end;
2220
2325
 
2221
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2222
- var _options$arrayOnSingl = options.arrayOnSingle,
2223
- arrayOnSingle = _options$arrayOnSingl === void 0 ? true : _options$arrayOnSingl,
2224
- _options$joinValue = options.joinValue,
2225
- joinValue = _options$joinValue === void 0 ? undefined : _options$joinValue,
2226
- _options$timespanAsLi = options.timespanAsList,
2227
- timespanAsList = _options$timespanAsLi === void 0 ? undefined : _options$timespanAsLi;
2228
2326
  var initialValue = timespanAsList ? {
2229
2327
  start: start,
2230
2328
  end: end
2231
2329
  } : {};
2232
- var fieldList = field.reduce(function (a, _ref2) {
2233
- var name = _ref2.name,
2234
- _ref2$value = _ref2.value,
2235
- valueList = _ref2$value === void 0 ? [] : _ref2$value;
2236
- if (valueList.length === 0) return a;
2330
+ var fieldList = field.reduce(function (acc, curr) {
2331
+ var name = curr.name,
2332
+ _curr$value = curr.value,
2333
+ valueList = _curr$value === void 0 ? [] : _curr$value;
2334
+ if (valueList.length === 0) return acc;
2237
2335
  var fieldValue;
2238
2336
 
2239
2337
  if (arrayOnSingle === false && valueList.length === 1) {
@@ -2242,59 +2340,123 @@ var parseHighlightTimespan = function parseHighlightTimespan() {
2242
2340
  fieldValue = _valueList[0];
2243
2341
  } else if (joinValue) fieldValue = valueList.join(joinValue);else fieldValue = valueList;
2244
2342
 
2245
- return _objectSpread$5(_objectSpread$5({}, a), {}, _defineProperty({}, name, fieldValue));
2343
+ return _objectSpread$6(_objectSpread$6({}, acc), {}, _defineProperty({}, name, fieldValue));
2246
2344
  }, initialValue);
2247
2345
  return fieldList;
2248
2346
  };
2249
2347
 
2250
- function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2348
+ var _excluded$2 = ["timespanAsList", "joinTimespan", "flat", "flatTimespan"];
2251
2349
 
2252
- function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2350
+ function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2351
+
2352
+ function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2353
+ var defaultOptions = _objectSpread$5(_objectSpread$5({}, defaultOptions$1), {}, {
2354
+ timespanAsList: false,
2355
+ joinTimespan: '_',
2356
+ flat: false,
2357
+ flatTimespan: false
2358
+ });
2253
2359
  /**
2254
2360
  * Parses highlight timespans from VidiCore into key/value object.
2255
2361
  * The attributes can be targeted for each sub-type.
2256
- * @param {Object} highlightTimespanList - A list of timespans from VidiCore.
2257
- * @param {Object} options - Options which change how the timespans are parsed.
2258
- * @param {boolean} [options.arrayOnSingle=true] - Return an array if there is a single value.
2259
- * @param {string} options.joinValue - String to join the values, eg ','.
2260
- * @param {boolean} [options.timespanAsList=false] - Return timespans as list.
2261
- * @param {boolean} [options.flat=false] - Flatten to field-name/field-value (Note: field-values may be overwritten).
2262
- * @param {boolean} [options.flatTimespan=false] - Flatten timespan to object with start/end as key.
2263
- * @param {string} [options.joinTimespan=_] - Character to join the start/end timecodes.
2362
+ *
2363
+ * @param highlightTimespanList - A list of timespans from VidiCore.
2364
+ * @param options - Options to change how the timespans are parsed
2365
+ *
2366
+ * @category Search
2264
2367
  */
2265
2368
 
2266
2369
  var parseHighlightTimespanList = function parseHighlightTimespanList() {
2267
2370
  var highlightTimespanList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2268
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2269
- var flat = options.flat,
2270
- timespanAsList = options.timespanAsList,
2271
- _options$joinTimespan = options.joinTimespan,
2272
- joinTimespan = _options$joinTimespan === void 0 ? '_' : _options$joinTimespan,
2273
- flatTimespan = options.flatTimespan;
2371
+ var options = arguments.length > 1 ? arguments[1] : undefined;
2372
+
2373
+ var _defaultOptions = _objectSpread$5(_objectSpread$5({}, defaultOptions), options || {}),
2374
+ timespanAsList = _defaultOptions.timespanAsList,
2375
+ _defaultOptions$joinT = _defaultOptions.joinTimespan,
2376
+ joinTimespan = _defaultOptions$joinT === void 0 ? '_' : _defaultOptions$joinT,
2377
+ flat = _defaultOptions.flat,
2378
+ flatTimespan = _defaultOptions.flatTimespan,
2379
+ parseHighlightTimespanOptions = _objectWithoutProperties(_defaultOptions, _excluded$2);
2380
+
2274
2381
  if (timespanAsList === true) return highlightTimespanList.map(function (timespan) {
2275
- return parseHighlightTimespan(timespan, options);
2382
+ return parseHighlightTimespan(timespan, _objectSpread$5(_objectSpread$5({}, parseHighlightTimespanOptions), {}, {
2383
+ timespanAsList: timespanAsList
2384
+ }));
2276
2385
  });
2277
2386
  if (flat === true || flatTimespan === true) return highlightTimespanList.reduce(function (a, timespan) {
2278
- return _objectSpread$4(_objectSpread$4({}, a), parseHighlightTimespan(timespan, options));
2387
+ return _objectSpread$5(_objectSpread$5({}, a), parseHighlightTimespan(timespan, options));
2279
2388
  }, {});
2280
2389
  return highlightTimespanList.reduce(function (a, timespan) {
2281
- return _objectSpread$4(_objectSpread$4({}, a), {}, _defineProperty({}, [timespan.start, timespan.end].join(joinTimespan), parseHighlightTimespan(timespan, options)));
2390
+ return _objectSpread$5(_objectSpread$5({}, a), {}, _defineProperty({}, [timespan.start, timespan.end].join(joinTimespan), parseHighlightTimespan(timespan, options)));
2282
2391
  }, {});
2283
2392
  };
2284
2393
 
2285
- var _excluded$1 = ["property"];
2394
+ var parseNowDate = function parseNowDate() {
2395
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'NOW';
2286
2396
 
2287
- function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2397
+ if (value.startsWith('NOW')) {
2398
+ if (value === 'NOW') return new Date();
2399
+ var sign = value[3];
2400
+ var number = Number(value.match(/(\d+)/)[0]);
2401
+ var unit = value.match(/(\d.*)/)[0].replace(/\d/g, '');
2402
+ var nowDiff = new Date();
2288
2403
 
2289
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2290
- var parseBaseMediaInfoType = function parseBaseMediaInfoType() {
2291
- var baseMediaInfoType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2404
+ switch (unit) {
2405
+ case 'TODAY':
2406
+ if (sign === '+') nowDiff.setHours(23, 59, 59, 999);
2407
+ if (sign === '-') nowDiff.setHours(0, 0, 0, 0);
2408
+ break;
2409
+
2410
+ case 'HOUR':
2411
+ case 'HOURS':
2412
+ if (sign === '+') nowDiff.setHours(nowDiff.getHours() + number);
2413
+ if (sign === '-') nowDiff.setHours(nowDiff.getHours() - number);
2414
+ break;
2415
+
2416
+ case 'DAY':
2417
+ case 'DAYS':
2418
+ if (sign === '+') nowDiff.setDate(nowDiff.getDate() + number);
2419
+ if (sign === '-') nowDiff.setDate(nowDiff.getDate() - number);
2420
+ break;
2421
+
2422
+ case 'MONTH':
2423
+ case 'MONTHS':
2424
+ if (sign === '+') nowDiff.setMonth(nowDiff.getMonth() + number);
2425
+ if (sign === '-') nowDiff.setMonth(nowDiff.getMonth() - number);
2426
+ break;
2427
+
2428
+ case 'YEAR':
2429
+ case 'YEARS':
2430
+ if (sign === '+') nowDiff.setFullYear(nowDiff.getFullYear() + number);
2431
+ if (sign === '-') nowDiff.setFullYear(nowDiff.getFullYear() - number);
2432
+ break;
2433
+ }
2434
+
2435
+ return nowDiff;
2436
+ }
2437
+
2438
+ return new Date(value);
2439
+ };
2440
+
2441
+ var _excluded$1 = ["property"];
2442
+
2443
+ function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2292
2444
 
2293
- var keyValuePairType = baseMediaInfoType.property,
2294
- props = _objectWithoutProperties(baseMediaInfoType, _excluded$1);
2445
+ function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2446
+ var parseBaseMediaInfoType = function parseBaseMediaInfoType(baseMediaInfoType) {
2447
+ var _ref = baseMediaInfoType || {},
2448
+ _ref$property = _ref.property,
2449
+ keyValuePairTypes = _ref$property === void 0 ? [] : _ref$property,
2450
+ props = _objectWithoutProperties(_ref, _excluded$1);
2295
2451
 
2296
- var parsedKeyValuePairType = parseKeyValuePairType(keyValuePairType);
2297
- return _objectSpread$3(_objectSpread$3({}, parsedKeyValuePairType), props);
2452
+ var parsedKeyValuePairType = parseKeyValuePairTypes(keyValuePairTypes);
2453
+ return _objectSpread$4(_objectSpread$4({}, parsedKeyValuePairType), props);
2454
+ };
2455
+ var parseAudioMediaInfoType = function parseAudioMediaInfoType(mediaInfoType) {
2456
+ return parseBaseMediaInfoType(mediaInfoType);
2457
+ };
2458
+ var parseVideoMediaInfoType = function parseVideoMediaInfoType(mediaInfoType) {
2459
+ return parseBaseMediaInfoType(mediaInfoType);
2298
2460
  };
2299
2461
 
2300
2462
  var sampleRateSymbols = {
@@ -2307,35 +2469,33 @@ var bitRateSymbols = {
2307
2469
  B: 'bps',
2308
2470
  MB: 'mbps'
2309
2471
  };
2472
+
2310
2473
  /**
2311
2474
  * Parses the technical information of a AudioComponentType.
2312
- * @param {Object} audioComponentType - A AudioComponentType from VidiCore.
2313
- * @returns {Object} Parsed component object.
2475
+ * @param audioComponentType - A AudioComponentType from VidiCore.
2476
+ * @returns Parsed component object.
2477
+ *
2478
+ * @category Shape
2314
2479
  */
2315
-
2316
- var parseAudioComponentType = function parseAudioComponentType() {
2317
- var audioComponentType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2318
- var _audioComponentType$t = audioComponentType.timeBase,
2319
- timeBase = _audioComponentType$t === void 0 ? {} : _audioComponentType$t,
2480
+ var parseAudioComponent = function parseAudioComponent(audioComponentType) {
2481
+ var timeBase = audioComponentType.timeBase,
2320
2482
  audioChannels = audioComponentType.channelCount,
2321
2483
  audioCodec = audioComponentType.codec,
2322
- _audioComponentType$m = audioComponentType.mediaInfo,
2323
- mediaInfo = _audioComponentType$m === void 0 ? {} : _audioComponentType$m,
2484
+ mediaInfo = audioComponentType.mediaInfo,
2324
2485
  bitrate = audioComponentType.bitrate,
2325
- _audioComponentType$m2 = audioComponentType.metadata,
2326
- metadata = _audioComponentType$m2 === void 0 ? [] : _audioComponentType$m2;
2327
- var audioMediaInfo = parseBaseMediaInfoType(mediaInfo);
2328
- var audioMetadata = parseKeyValuePairType(metadata);
2486
+ metadata = audioComponentType.metadata;
2487
+ var audioMediaInfo = parseAudioMediaInfoType(mediaInfo);
2329
2488
  var audioFormat = audioMediaInfo.Format,
2330
2489
  audioBitDepth = audioMediaInfo.Resolution,
2331
2490
  audioBitRateMode = audioMediaInfo.Bit_rate_mode;
2332
- var audioSamplerateSamples = timeBase.denominator ? timeBase.denominator / timeBase.numerator : undefined;
2333
- var audioSamplerate = audioSamplerateSamples ? parseFileSize(audioSamplerateSamples, {
2491
+ var audioMetadata = parseKeyValuePairTypes(metadata || []);
2492
+ var audioSamplerateSamples = timeBase !== null && timeBase !== void 0 && timeBase.denominator ? ((timeBase === null || timeBase === void 0 ? void 0 : timeBase.denominator) || 1) / ((timeBase === null || timeBase === void 0 ? void 0 : timeBase.numerator) || 1) : undefined;
2493
+ var audioSamplerate = audioSamplerateSamples !== undefined ? parseFileSize(audioSamplerateSamples, {
2334
2494
  base: 10,
2335
2495
  round: 1,
2336
2496
  symbols: sampleRateSymbols
2337
2497
  }) : undefined;
2338
- var audioBitrate = bitrate ? parseFileSize(bitrate, {
2498
+ var audioBitrate = bitrate !== undefined ? parseFileSize(bitrate, {
2339
2499
  base: 10,
2340
2500
  round: 2,
2341
2501
  symbols: bitRateSymbols
@@ -2354,6 +2514,14 @@ var parseAudioComponentType = function parseAudioComponentType() {
2354
2514
  };
2355
2515
  };
2356
2516
 
2517
+ /**
2518
+ * Parses a VidiCore file object
2519
+ *
2520
+ * @param fileType VidiCore file object
2521
+ * @returns A parsed file object
2522
+ *
2523
+ * @category File
2524
+ */
2357
2525
  var parseFileType = function parseFileType(fileType) {
2358
2526
  var _fileType$uri = fileType.uri,
2359
2527
  uriList = _fileType$uri === void 0 ? [] : _fileType$uri,
@@ -2378,23 +2546,24 @@ var parseFileType = function parseFileType(fileType) {
2378
2546
  };
2379
2547
  };
2380
2548
 
2381
- function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2549
+ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2550
+
2551
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2382
2552
 
2383
- function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2384
2553
  /**
2385
2554
  * Parses the technical information of a BinaryComponentType.
2386
- * @param {Object} binaryComponentType - A BinaryComponentType from VidiCore.
2387
- * @returns {Object} Parsed component object.
2555
+ * @param binaryComponentType - A BinaryComponentType from VidiCore.
2556
+ * @returns Parsed component object.
2557
+ *
2558
+ * @category Shape
2388
2559
  */
2389
-
2390
- var parseBinaryComponentType = function parseBinaryComponentType() {
2560
+ var parseBinaryComponent = function parseBinaryComponent() {
2391
2561
  var binaryComponentType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2392
2562
  var fileList = binaryComponentType.file,
2393
- _binaryComponentType$ = binaryComponentType.mediaInfo,
2394
- mediaInfo = _binaryComponentType$ === void 0 ? {} : _binaryComponentType$,
2395
- _binaryComponentType$2 = binaryComponentType.metadata,
2396
- metadata = _binaryComponentType$2 === void 0 ? [] : _binaryComponentType$2;
2397
- var binaryMetadata = parseKeyValuePairType(metadata);
2563
+ mediaInfo = binaryComponentType.mediaInfo,
2564
+ _binaryComponentType$ = binaryComponentType.metadata,
2565
+ metadata = _binaryComponentType$ === void 0 ? [] : _binaryComponentType$;
2566
+ var binaryMetadata = parseKeyValuePairTypes(metadata);
2398
2567
  var binaryMediaInfo = parseBaseMediaInfoType(mediaInfo);
2399
2568
  var parsedBinaryComponent = {
2400
2569
  binaryMetadata: binaryMetadata,
@@ -2406,33 +2575,36 @@ var parseBinaryComponentType = function parseBinaryComponentType() {
2406
2575
  fileType = _fileList[0];
2407
2576
 
2408
2577
  var parsedFileType = parseFileType(fileType);
2409
- parsedBinaryComponent = _objectSpread$2(_objectSpread$2({}, parsedBinaryComponent), parsedFileType);
2578
+ parsedBinaryComponent = _objectSpread$3(_objectSpread$3({}, parsedBinaryComponent), parsedFileType);
2410
2579
  }
2411
2580
 
2412
2581
  return parsedBinaryComponent;
2413
2582
  };
2414
2583
 
2415
- function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2584
+ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2416
2585
 
2417
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2586
+ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2418
2587
  /**
2419
- * Parses the technical information of a ContainerComponentType.
2420
- * @param {Object} containerComponentType - A ContainerComponentType from VidiCore.
2421
- * @returns {Object} Parsed component object.
2588
+ * Parsed container component
2422
2589
  */
2423
2590
 
2424
- var parseContainerComponentType = function parseContainerComponentType() {
2591
+ /**
2592
+ * Parses the technical information of a ContainerComponentType.
2593
+ * @param containerComponentType - A ContainerComponentType from VidiCore.
2594
+ * @returns Parsed component object.
2595
+ *
2596
+ * @category Shape
2597
+ */
2598
+ var parseContainerComponent = function parseContainerComponent() {
2425
2599
  var containerComponentType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2426
- var _containerComponentTy = containerComponentType.mediaInfo,
2427
- mediaInfo = _containerComponentTy === void 0 ? {} : _containerComponentTy,
2428
- _containerComponentTy2 = containerComponentType.metadata,
2429
- metadata = _containerComponentTy2 === void 0 ? [] : _containerComponentTy2,
2600
+ var mediaInfo = containerComponentType.mediaInfo,
2601
+ metadata = containerComponentType.metadata,
2430
2602
  fileList = containerComponentType.file,
2431
2603
  durationTimeCode = containerComponentType.duration,
2432
2604
  startTimestamp = containerComponentType.startTimestamp,
2433
2605
  startTimecode = containerComponentType.startTimecode,
2434
2606
  timeCodeTimeBase = containerComponentType.timeCodeTimeBase;
2435
- var containerMetadata = parseKeyValuePairType(metadata);
2607
+ var containerMetadata = parseKeyValuePairTypes(metadata || []);
2436
2608
  var containerMediaInfo = parseBaseMediaInfoType(mediaInfo);
2437
2609
  var containerFormat = containerMediaInfo.Format;
2438
2610
  var videoFormat = containerMediaInfo.Video_Format_List,
@@ -2487,7 +2659,7 @@ var parseContainerComponentType = function parseContainerComponentType() {
2487
2659
  fileType = _fileList[0];
2488
2660
 
2489
2661
  var parsedFileType = parseFileType(fileType);
2490
- parsedContainerComponentType = _objectSpread$1(_objectSpread$1({}, parsedContainerComponentType), parsedFileType);
2662
+ parsedContainerComponentType = _objectSpread$2(_objectSpread$2({}, parsedContainerComponentType), parsedFileType);
2491
2663
  }
2492
2664
 
2493
2665
  return parsedContainerComponentType;
@@ -2497,21 +2669,20 @@ var parseContainerComponentType = function parseContainerComponentType() {
2497
2669
  * Parses the technical information of a VideoComponentType.
2498
2670
  * @param {Object} videoComponentType - A VideoComponentType from VidiCore.
2499
2671
  * @returns {Object} Parsed component object.
2672
+ *
2673
+ * @category Shape
2500
2674
  */
2501
-
2502
- var parseVideoComponentType = function parseVideoComponentType() {
2675
+ var parseVideoComponent = function parseVideoComponent() {
2503
2676
  var videoComponentType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2504
2677
  var videoCodec = videoComponentType.codec,
2505
2678
  bitrate = videoComponentType.bitrate,
2506
2679
  fieldOrder = videoComponentType.fieldOrder,
2507
- _videoComponentType$r = videoComponentType.resolution,
2508
- resolution = _videoComponentType$r === void 0 ? {} : _videoComponentType$r,
2509
- _videoComponentType$m = videoComponentType.mediaInfo,
2510
- mediaInfo = _videoComponentType$m === void 0 ? {} : _videoComponentType$m,
2511
- _videoComponentType$m2 = videoComponentType.metadata,
2512
- metadata = _videoComponentType$m2 === void 0 ? [] : _videoComponentType$m2;
2513
- var videoMediaInfo = parseBaseMediaInfoType(mediaInfo);
2514
- var videoMetadata = parseKeyValuePairType(metadata);
2680
+ resolution = videoComponentType.resolution,
2681
+ mediaInfo = videoComponentType.mediaInfo,
2682
+ _videoComponentType$m = videoComponentType.metadata,
2683
+ metadata = _videoComponentType$m === void 0 ? [] : _videoComponentType$m;
2684
+ var videoMediaInfo = parseVideoMediaInfoType(mediaInfo);
2685
+ var videoMetadata = parseKeyValuePairTypes(metadata);
2515
2686
  var videoFormat = videoMediaInfo.Format,
2516
2687
  timeBaseText = videoMediaInfo['Frame rate'],
2517
2688
  colorSpace = videoMediaInfo['Color space'],
@@ -2522,24 +2693,24 @@ var parseVideoComponentType = function parseVideoComponentType() {
2522
2693
  realBaseFrameRate = videoComponentType.realBaseFrameRate;
2523
2694
 
2524
2695
  if (realBaseFrameRate !== undefined) {
2525
- timeBase = {
2696
+ timeBase = formatTimeBaseType({
2526
2697
  numerator: realBaseFrameRate.denominator,
2527
2698
  denominator: realBaseFrameRate.numerator
2528
- };
2699
+ });
2529
2700
  } else if (timeBaseText !== undefined) {
2530
2701
  timeBase = formatTimeBaseText(timeBaseText);
2531
2702
  } else if (averageFrameRate !== undefined) {
2532
- timeBase = {
2703
+ timeBase = formatTimeBaseType({
2533
2704
  numerator: averageFrameRate.denominator,
2534
2705
  denominator: averageFrameRate.numerator
2535
- };
2706
+ });
2536
2707
  }
2537
2708
 
2538
2709
  var samples = videoMediaInfo['Frame count'];
2539
2710
 
2540
2711
  if (samples === undefined) {
2541
2712
  var numberOfPackets = videoComponentType.numberOfPackets;
2542
- if (numberOfPackets !== undefined) samples = numberOfPackets;
2713
+ if (numberOfPackets !== undefined) samples = numberOfPackets.toString();
2543
2714
  }
2544
2715
 
2545
2716
  var timeCode;
@@ -2551,14 +2722,14 @@ var parseVideoComponentType = function parseVideoComponentType() {
2551
2722
  samples: samples,
2552
2723
  timeBase: timeBase
2553
2724
  });
2554
- frameRate = timeCode.timeBase.toRate({
2555
- constant: true
2556
- });
2725
+ frameRate = timeCode.timeBase.toConstant() || timeCode.timeBase.toRate();
2557
2726
  smpte = timeCode.toSmpte();
2558
2727
  }
2559
2728
 
2560
- var height = resolution.height,
2561
- width = resolution.width;
2729
+ var _ref = resolution || {},
2730
+ height = _ref.height,
2731
+ width = _ref.width;
2732
+
2562
2733
  var aspectRatio = parseAspectRatio(resolution);
2563
2734
  var dimension = "".concat(width, "x").concat(height);
2564
2735
  var videoBitrate = bitrate ? parseFileSize(bitrate, {
@@ -2585,22 +2756,24 @@ var parseVideoComponentType = function parseVideoComponentType() {
2585
2756
  };
2586
2757
  };
2587
2758
 
2588
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2759
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2760
+
2761
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2589
2762
 
2590
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2591
2763
  /**
2592
2764
  * Parses the technical information of a ShapeType and its various components.
2593
2765
  *
2594
2766
  * Will only parse the first videoComponent, audioComponent, binaryComponent in the corresponding array.
2595
2767
  * To parse a selected component see:
2596
- * - {@link parseContainerComponentType}
2597
- * - {@link parseVideoComponentType}
2598
- * - {@link parseAudioComponentType}
2599
- * - {@link parseBinaryComponentType}
2600
- * @param {Object} shapeType - A ShapeType from VidiCore.
2601
- * @returns {Object} Parsed shape object.
2768
+ * - {@link parseContainerComponent}
2769
+ * - {@link parseVideoComponent}
2770
+ * - {@link parseAudioComponent}
2771
+ * - {@link parseBinaryComponent}
2772
+ * @param shapeType - A ShapeType from VidiCore.
2773
+ * @returns Parsed shape object.
2774
+ *
2775
+ * @category Shape
2602
2776
  */
2603
-
2604
2777
  var parseShapeType = function parseShapeType() {
2605
2778
  var shapeType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2606
2779
  var parsedShape = {};
@@ -2622,69 +2795,65 @@ var parseShapeType = function parseShapeType() {
2622
2795
  parsedShape.mimeType = _mimeTypeList[0];
2623
2796
 
2624
2797
  if (containerComponent) {
2625
- var parsedContainerComponent = parseContainerComponentType(containerComponent, shapeType);
2626
- parsedShape = _objectSpread(_objectSpread({}, parsedShape), parsedContainerComponent);
2798
+ var parsedContainerComponent = parseContainerComponent(containerComponent);
2799
+ parsedShape = _objectSpread$1(_objectSpread$1({}, parsedShape), parsedContainerComponent);
2627
2800
  }
2628
2801
 
2629
2802
  if (videoComponentList) {
2630
2803
  var _videoComponentList = _slicedToArray(videoComponentList, 1),
2631
2804
  videoComponent = _videoComponentList[0];
2632
2805
 
2633
- var parsedVideoComponent = parseVideoComponentType(videoComponent, shapeType);
2634
- parsedShape = _objectSpread(_objectSpread({}, parsedShape), parsedVideoComponent);
2806
+ var parsedVideoComponent = parseVideoComponent(videoComponent);
2807
+ parsedShape = _objectSpread$1(_objectSpread$1({}, parsedShape), parsedVideoComponent);
2635
2808
  }
2636
2809
 
2637
2810
  if (audioComponentList) {
2638
2811
  var _audioComponentList = _slicedToArray(audioComponentList, 1),
2639
2812
  audioComponent = _audioComponentList[0];
2640
2813
 
2641
- var parsedAudioComponent = parseAudioComponentType(audioComponent, shapeType);
2642
- parsedShape = _objectSpread(_objectSpread({}, parsedShape), parsedAudioComponent);
2814
+ var parsedAudioComponent = parseAudioComponent(audioComponent);
2815
+ parsedShape = _objectSpread$1(_objectSpread$1({}, parsedShape), parsedAudioComponent);
2643
2816
  }
2644
2817
 
2645
2818
  if (binaryComponentList) {
2646
2819
  var _binaryComponentList = _slicedToArray(binaryComponentList, 1),
2647
2820
  binaryComponent = _binaryComponentList[0];
2648
2821
 
2649
- var parsedBinaryComponent = parseBinaryComponentType(binaryComponent, shapeType);
2650
- parsedShape = _objectSpread(_objectSpread({}, parsedShape), parsedBinaryComponent);
2822
+ var parsedBinaryComponent = parseBinaryComponent(binaryComponent);
2823
+ parsedShape = _objectSpread$1(_objectSpread$1({}, parsedShape), parsedBinaryComponent);
2651
2824
  }
2652
2825
 
2653
2826
  return parsedShape;
2654
2827
  };
2655
2828
 
2656
- /* eslint-disable no-console */
2657
- /**
2658
- * @deprecated please use {@link parseAudioComponentType}
2659
- */
2660
-
2661
- var parseAudioComponent = function parseAudioComponent(audioComponent) {
2662
- console.warn('parseAudioComponent is deprecated, please use parseAudioComponentType');
2663
- return parseAudioComponentType(audioComponent);
2664
- };
2665
- /**
2666
- * @deprecated please use {@link parseBinaryComponentType}
2667
- */
2668
-
2669
- var parseBinaryComponent = function parseBinaryComponent(binaryComponent) {
2670
- console.warn('parseBinaryComponent is deprecated, please use parseBinaryComponentType');
2671
- return parseBinaryComponentType(binaryComponent);
2829
+ var DOCUMENT_TYPES = {
2830
+ PDF: 'PDF',
2831
+ TEXT: 'TEXT',
2832
+ MSWORD: 'MSWORD',
2833
+ JSON: 'JSON',
2834
+ XML: 'XML'
2672
2835
  };
2673
- /**
2674
- * @deprecated please use {@link parseContainerComponentType}
2675
- */
2676
2836
 
2677
- var parseContainerComponent = function parseContainerComponent(containerComponent) {
2678
- console.warn('parseContainerComponent is deprecated, please use parseContainerComponentType');
2679
- return parseContainerComponentType(containerComponent);
2680
- };
2681
2837
  /**
2682
- * @deprecated please use {@link parseVideoComponentType}
2838
+ * Return a const for the document type of a shape (looks at mimeType)
2839
+ *
2840
+ * @param shape
2841
+ * @returns The document type for a shape
2842
+ *
2843
+ * @category Shape
2683
2844
  */
2845
+ var getDocumentType = function getDocumentType(shape) {
2846
+ var _ref = shape || {},
2847
+ mimeTypeArrayOrString = _ref.mimeType;
2684
2848
 
2685
- var parseVideoComponent = function parseVideoComponent(videoComponent) {
2686
- console.warn('parseVideoComponent is deprecated, please use parseVideoComponentType');
2687
- return parseVideoComponentType(videoComponent);
2849
+ var mimeType = Array.isArray(mimeTypeArrayOrString) ? mimeTypeArrayOrString[0] : mimeTypeArrayOrString;
2850
+ if (!mimeType) return undefined;
2851
+ if (mimeType.endsWith('/pdf')) return DOCUMENT_TYPES.PDF;
2852
+ if (mimeType.startsWith('text/')) return DOCUMENT_TYPES.TEXT;
2853
+ if (mimeType.endsWith('/msword')) return DOCUMENT_TYPES.MSWORD;
2854
+ if (mimeType.endsWith('/json')) return DOCUMENT_TYPES.JSON;
2855
+ if (mimeType.endsWith('/xml')) return DOCUMENT_TYPES.XML;
2856
+ return undefined;
2688
2857
  };
2689
2858
 
2690
2859
  var IMAGE_MIME_TYPES = ['image/apng', 'image/bmp', 'image/gif', 'image/jpeg', 'image/x-icon', 'image/png', 'image/svg+xml'];
@@ -2712,24 +2881,36 @@ var defaultSortPriority = function defaultSortPriority(_ref, _ref2) {
2712
2881
 
2713
2882
  return firstEl.toLowerCase().localeCompare(secondEl.toLowerCase());
2714
2883
  };
2884
+ /**
2885
+ * Filter a shape type list to get shapes that are playable in a browser
2886
+ *
2887
+ * @param itemType
2888
+ * @param options
2889
+ * @returns
2890
+ *
2891
+ * @category Shape
2892
+ */
2893
+
2894
+
2895
+ var filterShapeSource = function filterShapeSource(itemType, options) {
2896
+ var _ref3 = options || {},
2897
+ _ref3$allowedMimeType = _ref3.allowedMimeTypes,
2898
+ allowedMimeTypes = _ref3$allowedMimeType === void 0 ? DEFAULT_ALLOWED_MIME_TYPES : _ref3$allowedMimeType,
2899
+ _ref3$sortPriority = _ref3.sortPriority,
2900
+ sortPriority = _ref3$sortPriority === void 0 ? defaultSortPriority : _ref3$sortPriority,
2901
+ _ref3$allowedMethods = _ref3.allowedMethods,
2902
+ allowedMethods = _ref3$allowedMethods === void 0 ? DEFAULT_ALLOWED_METHODS : _ref3$allowedMethods,
2903
+ _ref3$sourceKey = _ref3.sourceKey,
2904
+ sourceKey = _ref3$sourceKey === void 0 ? 'src' : _ref3$sourceKey,
2905
+ _ref3$mimeTypeKey = _ref3.mimeTypeKey,
2906
+ mimeTypeKey = _ref3$mimeTypeKey === void 0 ? 'type' : _ref3$mimeTypeKey,
2907
+ _ref3$shapeKey = _ref3.shapeKey,
2908
+ shapeKey = _ref3$shapeKey === void 0 ? 'shape' : _ref3$shapeKey;
2909
+
2910
+ var _ref4 = itemType || {},
2911
+ _ref4$shape = _ref4.shape,
2912
+ shapeList = _ref4$shape === void 0 ? [] : _ref4$shape;
2715
2913
 
2716
- var filterShapeSource = function filterShapeSource() {
2717
- var itemType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2718
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2719
- var _options$allowedMimeT = options.allowedMimeTypes,
2720
- allowedMimeTypes = _options$allowedMimeT === void 0 ? DEFAULT_ALLOWED_MIME_TYPES : _options$allowedMimeT,
2721
- _options$sortPriority = options.sortPriority,
2722
- sortPriority = _options$sortPriority === void 0 ? defaultSortPriority : _options$sortPriority,
2723
- _options$allowedMetho = options.allowedMethods,
2724
- allowedMethods = _options$allowedMetho === void 0 ? DEFAULT_ALLOWED_METHODS : _options$allowedMetho,
2725
- _options$sourceKey = options.sourceKey,
2726
- sourceKey = _options$sourceKey === void 0 ? 'src' : _options$sourceKey,
2727
- _options$mimeTypeKey = options.mimeTypeKey,
2728
- mimeTypeKey = _options$mimeTypeKey === void 0 ? 'type' : _options$mimeTypeKey,
2729
- _options$shapeKey = options.shapeKey,
2730
- shapeKey = _options$shapeKey === void 0 ? 'shape' : _options$shapeKey;
2731
- var _itemType$shape = itemType.shape,
2732
- shapeList = _itemType$shape === void 0 ? [] : _itemType$shape;
2733
2914
  var parsedShapeList = shapeList.reduce(function (acc, shapeType) {
2734
2915
  var type;
2735
2916
  var src;
@@ -2768,39 +2949,65 @@ var filterShapeSource = function filterShapeSource() {
2768
2949
  return parsedShapeList;
2769
2950
  };
2770
2951
 
2771
- var IMAGE = 'IMAGE';
2772
- var AUDIO = 'AUDIO';
2773
- var VIDEO = 'VIDEO';
2774
- var DOCUMENT = 'DOCUMENT';
2775
- var BINARY = 'BINARY';
2776
- var getShapeMediaType = function getShapeMediaType() {
2777
- var shapeType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2778
- var mimeType = shapeType.mimeType,
2779
- videoCodec = shapeType.videoCodec,
2780
- audioCodec = shapeType.audioCodec;
2952
+ var SHAPE_MEDIA_TYPES = {
2953
+ IMAGE: 'IMAGE',
2954
+ AUDIO: 'AUDIO',
2955
+ VIDEO: 'VIDEO',
2956
+ DOCUMENT: 'DOCUMENT',
2957
+ BINARY: 'BINARY'
2958
+ };
2959
+ // TODO: For consistency, replace input with an actual ShapeType not a parsed shape
2960
+ // (parse it internally if needed)
2961
+
2962
+ /**
2963
+ * Returns a const for which media type a shape has
2964
+ *
2965
+ * @param parsedShape
2966
+ * @returns
2967
+ *
2968
+ * @category Shape
2969
+ */
2970
+ var getShapeMediaType = function getShapeMediaType(parsedShape) {
2971
+ var _ref = parsedShape || {},
2972
+ mimeType = _ref.mimeType,
2973
+ videoCodec = _ref.videoCodec,
2974
+ audioCodec = _ref.audioCodec;
2975
+
2781
2976
  if (!mimeType) return undefined;
2782
2977
 
2783
2978
  if (mimeType.startsWith('audio/')) {
2784
- if (audioCodec !== undefined) return AUDIO;
2979
+ if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;
2785
2980
  }
2786
2981
 
2787
2982
  if (mimeType.startsWith('video/')) {
2788
- if (videoCodec !== undefined) return VIDEO;
2789
- if (audioCodec !== undefined) return AUDIO;
2983
+ if (videoCodec !== undefined) return SHAPE_MEDIA_TYPES.VIDEO;
2984
+ if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;
2790
2985
  }
2791
2986
 
2792
- if (mimeType.startsWith('image/')) return IMAGE;
2793
- if (mimeType.endsWith('/pdf')) return DOCUMENT;
2794
- if (mimeType.startsWith('text/')) return DOCUMENT;
2795
- if (mimeType.endsWith('/msword')) return DOCUMENT;
2796
- if (mimeType.endsWith('/json')) return DOCUMENT;
2797
- if (mimeType.endsWith('/xml')) return DOCUMENT;
2798
- if (mimeType.endsWith('/octet-stream')) return BINARY;
2987
+ if (mimeType.startsWith('image/')) return SHAPE_MEDIA_TYPES.IMAGE;
2988
+ if (mimeType.endsWith('/pdf')) return SHAPE_MEDIA_TYPES.DOCUMENT;
2989
+ if (mimeType.startsWith('text/')) return SHAPE_MEDIA_TYPES.DOCUMENT;
2990
+ if (mimeType.endsWith('/msword')) return SHAPE_MEDIA_TYPES.DOCUMENT;
2991
+ if (mimeType.endsWith('/json')) return SHAPE_MEDIA_TYPES.DOCUMENT;
2992
+ if (mimeType.endsWith('/xml')) return SHAPE_MEDIA_TYPES.DOCUMENT;
2993
+ if (mimeType.endsWith('/octet-stream')) return SHAPE_MEDIA_TYPES.BINARY;
2799
2994
  return undefined;
2800
2995
  };
2801
2996
 
2802
- var findNearestThumbnail = function findNearestThumbnail(itemType, timeCodeText) {
2803
- var tcSeconds = formatTimeCodeText(timeCodeText).toSeconds();
2997
+ /**
2998
+ * Find the thumbnail uri in a VidiCore item object that's nearest a timeCode
2999
+ *
3000
+ * @remarks
3001
+ * Time code is included in path of VidiCore thumbnail uris
3002
+ *
3003
+ * @param itemType A VidiCore item object
3004
+ * @param timeCode A timeCode to find nearest thumbnail to
3005
+ * @returns A URI of a thumbnail, `undefined` if item has no thumbnails
3006
+ *
3007
+ * @category Thumbnail
3008
+ */
3009
+ var findNearestThumbnail = function findNearestThumbnail(itemType, timeCode) {
3010
+ var tcSeconds = createTimeCode(timeCode).toSeconds();
2804
3011
 
2805
3012
  var _ref = itemType || {},
2806
3013
  _ref$thumbnails = _ref.thumbnails,
@@ -2818,59 +3025,27 @@ var findNearestThumbnail = function findNearestThumbnail(itemType, timeCodeText)
2818
3025
  return srcList[nearestSrcIndex];
2819
3026
  };
2820
3027
 
2821
- var parseNowDate = function parseNowDate() {
2822
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'NOW';
2823
-
2824
- if (value.startsWith('NOW')) {
2825
- if (value === 'NOW') return new Date();
2826
- var sign = value[3];
2827
- var number = Number(value.match(/(\d+)/)[0]);
2828
- var unit = value.match(/(\d.*)/)[0].replace(/\d/g, '');
2829
- var nowDiff = new Date();
2830
-
2831
- switch (unit) {
2832
- case 'HOUR':
2833
- case 'HOURS':
2834
- if (sign === '+') nowDiff.setHours(nowDiff.getHours() + number);
2835
- if (sign === '-') nowDiff.setHours(nowDiff.getHours() - number);
2836
- break;
2837
-
2838
- case 'DAY':
2839
- case 'DAYS':
2840
- if (sign === '+') nowDiff.setDate(nowDiff.getDate() + number);
2841
- if (sign === '-') nowDiff.setDate(nowDiff.getDate() - number);
2842
- break;
2843
-
2844
- case 'MONTH':
2845
- case 'MONTHS':
2846
- if (sign === '+') nowDiff.setMonth(nowDiff.getMonth() + number);
2847
- if (sign === '-') nowDiff.setMonth(nowDiff.getMonth() - number);
2848
- break;
2849
-
2850
- case 'YEAR':
2851
- case 'YEARS':
2852
- if (sign === '+') nowDiff.setFullYear(nowDiff.getFullYear() + number);
2853
- if (sign === '-') nowDiff.setFullYear(nowDiff.getFullYear() - number);
2854
- break;
2855
- }
2856
-
2857
- return nowDiff;
2858
- }
2859
-
2860
- return new Date(value);
2861
- };
2862
-
2863
3028
  var _excluded = ["Codec"],
2864
3029
  _excluded2 = ["Codec"];
3030
+ /**
3031
+ * TODO
3032
+ */
2865
3033
 
2866
- var parseMediaConvertPreset = function parseMediaConvertPreset(transcodePresetType) {
3034
+ /**
3035
+ * TODO
3036
+ *
3037
+ * @param mediaconvert
3038
+ * @returns
3039
+ *
3040
+ * @category Transcode
3041
+ */
3042
+ var parseMediaConvertPreset = function parseMediaConvertPreset(mediaconvert) {
2867
3043
  var output = {};
2868
- var description = transcodePresetType.description,
2869
- _transcodePresetType$ = transcodePresetType.mediaconvert;
2870
- _transcodePresetType$ = _transcodePresetType$ === void 0 ? {} : _transcodePresetType$;
2871
- var _transcodePresetType$2 = _transcodePresetType$.outputSetting,
2872
- outputSetting = _transcodePresetType$2 === void 0 ? [] : _transcodePresetType$2;
2873
- output.description = description;
3044
+
3045
+ var _ref = mediaconvert || {},
3046
+ _ref$outputSetting = _ref.outputSetting,
3047
+ outputSetting = _ref$outputSetting === void 0 ? [] : _ref$outputSetting;
3048
+
2874
3049
  if (outputSetting.length === 0) return output;
2875
3050
  var mc = JSON.parse(outputSetting[0]);
2876
3051
  var _mc$Settings = mc.Settings;
@@ -2878,7 +3053,6 @@ var parseMediaConvertPreset = function parseMediaConvertPreset(transcodePresetTy
2878
3053
  var ContainerSettings = _mc$Settings.ContainerSettings,
2879
3054
  VideoDescription = _mc$Settings.VideoDescription,
2880
3055
  AudioDescriptions = _mc$Settings.AudioDescriptions;
2881
- output.containerFormat = ContainerSettings.Container;
2882
3056
 
2883
3057
  if (ContainerSettings) {
2884
3058
  output.containerFormat = ContainerSettings.Container;
@@ -2921,9 +3095,7 @@ var parseMediaConvertPreset = function parseMediaConvertPreset(transcodePresetTy
2921
3095
  numerator: numerator
2922
3096
  });
2923
3097
  output.timeBase = timeBase;
2924
- output.frameRate = timeBase.toRate({
2925
- constant: true
2926
- });
3098
+ output.frameRate = timeBase.toConstant() || timeBase.toRate();
2927
3099
  }
2928
3100
  }
2929
3101
 
@@ -2950,14 +3122,34 @@ var parseMediaConvertPreset = function parseMediaConvertPreset(transcodePresetTy
2950
3122
  return output;
2951
3123
  };
2952
3124
 
3125
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3126
+
3127
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3128
+ /**
3129
+ * TODO
3130
+ */
3131
+
3132
+ /**
3133
+ * TODO
3134
+ *
3135
+ * @param transcodePresetType
3136
+ * @returns
3137
+ *
3138
+ * @category Transcode
3139
+ */
2953
3140
  var parseTranscodePreset = function parseTranscodePreset(transcodePresetType) {
2954
3141
  var output = {};
2955
- var description = transcodePresetType.description,
2956
- format = transcodePresetType.format,
2957
- audio = transcodePresetType.audio,
2958
- video = transcodePresetType.video,
2959
- mediaconvert = transcodePresetType.mediaconvert;
2960
- if (mediaconvert) return parseMediaConvertPreset(transcodePresetType);
3142
+
3143
+ var _ref = transcodePresetType || {},
3144
+ description = _ref.description,
3145
+ format = _ref.format,
3146
+ audio = _ref.audio,
3147
+ video = _ref.video,
3148
+ mediaconvert = _ref.mediaconvert;
3149
+
3150
+ if (mediaconvert) return _objectSpread({
3151
+ description: description
3152
+ }, parseMediaConvertPreset(mediaconvert));
2961
3153
  output.description = description;
2962
3154
  output.containerFormat = format;
2963
3155
 
@@ -2968,9 +3160,7 @@ var parseTranscodePreset = function parseTranscodePreset(transcodePresetType) {
2968
3160
  if (video.framerate) {
2969
3161
  var timeBase = formatTimeBaseType(video.framerate);
2970
3162
  output.timeBase = timeBase;
2971
- output.frameRate = timeBase.toRate({
2972
- constant: true
2973
- });
3163
+ output.frameRate = timeBase.toConstant() || timeBase.toRate();
2974
3164
  }
2975
3165
 
2976
3166
  if (video.scaling) {
@@ -3000,22 +3190,5 @@ var parseTranscodePreset = function parseTranscodePreset(transcodePresetType) {
3000
3190
  return output;
3001
3191
  };
3002
3192
 
3003
- var PDF = 'PDF';
3004
- var TEXT = 'TEXT';
3005
- var MSWORD = 'MSWORD';
3006
- var JSON$1 = 'JSON';
3007
- var XML = 'XML';
3008
- var getDocumentType = function getDocumentType() {
3009
- var shape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
3010
- var mimeType = shape.mimeType;
3011
- if (!mimeType) return undefined;
3012
- if (mimeType.endsWith('/pdf')) return PDF;
3013
- if (mimeType.startsWith('text/')) return TEXT;
3014
- if (mimeType.endsWith('/msword')) return MSWORD;
3015
- if (mimeType.endsWith('/json')) return JSON$1;
3016
- if (mimeType.endsWith('/xml')) return XML;
3017
- return undefined;
3018
- };
3019
-
3020
- export { SYSTEM_FIELDGROUPS, SYSTEM_FIELDS, TimeBase, TimeCode, createFacetType, createMetadataType, createTimeBase, createTimeCode, filterShapeSource, findNearestThumbnail, formatTimeBaseText, formatTimeBaseType, formatTimeCodeSeconds, formatTimeCodeSmpte, formatTimeCodeText, formatTimeCodeType, getDocumentType, getShapeMediaType, metadataTypeToWebVtt, parseAudioComponent, parseAudioComponentType, parseBinaryComponent, parseBinaryComponentType, parseContainerComponent, parseContainerComponentType, parseFacetType, parseFileType, parseHighlightTimespan, parseHighlightTimespanList, parseKeyValuePairType, parseMediaConvertPreset, parseMetadataType, parseNowDate, parseShapeType, parseSimpleMetadataType, parseTimespan, parseTimespanList, parseTranscodePreset, parseVideoComponent, parseVideoComponentType, roles };
3193
+ export { FIELD_ATTRIBUTE_KEYS, FIELD_VALUE_ATTRIBUTE_KEYS, GROUP_ATTRIBUTE_KEYS, ROLE_NAMES, SYSTEM_FIELDGROUPS, SYSTEM_FIELDS, TimeBase, TimeCode, createFacetType, createMetadataType, createTimeBase, createTimeCode, filterShapeSource, findNearestThumbnail, formatTimeBaseText, formatTimeBaseType, formatTimeCodeSeconds, formatTimeCodeSmpte, formatTimeCodeText, formatTimeCodeType, getDocumentType, getShapeMediaType, metadataTypeToWebVtt, parseAudioComponent, parseBinaryComponent, parseContainerComponent, parseFacetType, parseFieldList, parseFileType, parseGroupList, parseHighlightTimespan, parseHighlightTimespanList, parseKeyValuePairTypes as parseKeyValuePairType, parseMediaConvertPreset, parseMetadataType, parseNowDate, parseShapeType, parseSimpleMetadataType, parseTimespan, parseTimespanList, parseTranscodePreset, parseVideoComponent };
3021
3194
  //# sourceMappingURL=index.es.js.map