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