testcafe 3.7.4 → 3.7.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.
@@ -1084,443 +1084,443 @@ window['%hammerhead%'].utils.removeInjectedScript();
1084
1084
  return ClientBrowserConsoleMessages;
1085
1085
  }(BrowserConsoleMessages));
1086
1086
 
1087
- function createCommonjsModule(fn, module) {
1088
- return module = { exports: {} }, fn(module, module.exports), module.exports;
1089
- }
1090
-
1091
- var replicator = createCommonjsModule(function (module) {
1092
- // Const
1093
- var TRANSFORMED_TYPE_KEY = '@t';
1094
- var CIRCULAR_REF_KEY = '@r';
1095
- var KEY_REQUIRE_ESCAPING_RE = /^#*@(t|r)$/;
1096
- var GLOBAL = (function getGlobal() {
1097
- // NOTE: see http://www.ecma-international.org/ecma-262/6.0/index.html#sec-performeval step 10
1098
- var savedEval = eval;
1099
- return savedEval('this');
1100
- })();
1101
- var TYPED_ARRAY_CTORS = {
1102
- 'Int8Array': typeof Int8Array === 'function' ? Int8Array : void 0,
1103
- 'Uint8Array': typeof Uint8Array === 'function' ? Uint8Array : void 0,
1104
- 'Uint8ClampedArray': typeof Uint8ClampedArray === 'function' ? Uint8ClampedArray : void 0,
1105
- 'Int16Array': typeof Int16Array === 'function' ? Int16Array : void 0,
1106
- 'Uint16Array': typeof Uint16Array === 'function' ? Uint16Array : void 0,
1107
- 'Int32Array': typeof Int32Array === 'function' ? Int32Array : void 0,
1108
- 'Uint32Array': typeof Uint32Array === 'function' ? Uint32Array : void 0,
1109
- 'Float32Array': typeof Float32Array === 'function' ? Float32Array : void 0,
1110
- 'Float64Array': typeof Float64Array === 'function' ? Float64Array : void 0
1111
- };
1112
- var ARRAY_BUFFER_SUPPORTED = typeof ArrayBuffer === 'function';
1113
- var MAP_SUPPORTED = typeof Map === 'function';
1114
- var SET_SUPPORTED = typeof Set === 'function';
1115
- var BUFFER_FROM_SUPPORTED = typeof Buffer === 'function';
1116
- var TYPED_ARRAY_SUPPORTED = function (typeName) {
1117
- return !!TYPED_ARRAY_CTORS[typeName];
1118
- };
1119
- // Saved proto functions
1120
- var arrSlice = Array.prototype.slice;
1121
- // Default serializer
1122
- var JSONSerializer = {
1123
- serialize: function (val) {
1124
- return JSON.stringify(val);
1125
- },
1126
- deserialize: function (val) {
1127
- return JSON.parse(val);
1128
- }
1129
- };
1130
- // EncodingTransformer
1131
- var EncodingTransformer = function (val, transforms) {
1132
- this.references = val;
1133
- this.transforms = transforms;
1134
- this.circularCandidates = [];
1135
- this.circularCandidatesDescrs = [];
1136
- this.circularRefCount = 0;
1137
- };
1138
- EncodingTransformer._createRefMark = function (idx) {
1139
- var obj = Object.create(null);
1140
- obj[CIRCULAR_REF_KEY] = idx;
1141
- return obj;
1142
- };
1143
- EncodingTransformer.prototype._createCircularCandidate = function (val, parent, key) {
1144
- this.circularCandidates.push(val);
1145
- this.circularCandidatesDescrs.push({ parent: parent, key: key, refIdx: -1 });
1146
- };
1147
- EncodingTransformer.prototype._applyTransform = function (val, parent, key, transform) {
1148
- var result = Object.create(null);
1149
- var serializableVal = transform.toSerializable(val);
1150
- if (typeof serializableVal === 'object')
1151
- this._createCircularCandidate(val, parent, key);
1152
- result[TRANSFORMED_TYPE_KEY] = transform.type;
1153
- result.data = this._handleValue(serializableVal, parent, key);
1154
- return result;
1155
- };
1156
- EncodingTransformer.prototype._handleArray = function (arr) {
1157
- var result = [];
1158
- for (var i = 0; i < arr.length; i++)
1159
- result[i] = this._handleValue(arr[i], result, i);
1160
- return result;
1161
- };
1162
- EncodingTransformer.prototype._handlePlainObject = function (obj) {
1163
- var replicator = this;
1164
- var result = Object.create(null);
1165
- var ownPropertyNames = Object.getOwnPropertyNames(obj);
1166
- ownPropertyNames.forEach(function (key) {
1167
- var resultKey = KEY_REQUIRE_ESCAPING_RE.test(key) ? '#' + key : key;
1168
- result[resultKey] = replicator._handleValue(obj[key], result, resultKey);
1169
- });
1170
- return result;
1171
- };
1172
- EncodingTransformer.prototype._handleObject = function (obj, parent, key) {
1173
- this._createCircularCandidate(obj, parent, key);
1174
- return Array.isArray(obj) ? this._handleArray(obj) : this._handlePlainObject(obj);
1175
- };
1176
- EncodingTransformer.prototype._ensureCircularReference = function (obj) {
1177
- var circularCandidateIdx = this.circularCandidates.indexOf(obj);
1178
- if (circularCandidateIdx > -1) {
1179
- var descr = this.circularCandidatesDescrs[circularCandidateIdx];
1180
- if (descr.refIdx === -1)
1181
- descr.refIdx = descr.parent ? ++this.circularRefCount : 0;
1182
- return EncodingTransformer._createRefMark(descr.refIdx);
1183
- }
1184
- return null;
1185
- };
1186
- EncodingTransformer.prototype._handleValue = function (val, parent, key) {
1187
- var type = typeof val;
1188
- var isObject = type === 'object' && val !== null;
1189
- if (isObject) {
1190
- var refMark = this._ensureCircularReference(val);
1191
- if (refMark)
1192
- return refMark;
1193
- }
1194
- for (var i = 0; i < this.transforms.length; i++) {
1195
- var transform = this.transforms[i];
1196
- if (transform.shouldTransform(type, val))
1197
- return this._applyTransform(val, parent, key, transform);
1198
- }
1199
- if (isObject)
1200
- return this._handleObject(val, parent, key);
1201
- return val;
1202
- };
1203
- EncodingTransformer.prototype.transform = function () {
1204
- var references = [this._handleValue(this.references, null, null)];
1205
- for (var i = 0; i < this.circularCandidatesDescrs.length; i++) {
1206
- var descr = this.circularCandidatesDescrs[i];
1207
- if (descr.refIdx > 0) {
1208
- references[descr.refIdx] = descr.parent[descr.key];
1209
- descr.parent[descr.key] = EncodingTransformer._createRefMark(descr.refIdx);
1210
- }
1087
+ /* eslint-disable no-var */
1088
+ // Const
1089
+ var TRANSFORMED_TYPE_KEY = '@t';
1090
+ var CIRCULAR_REF_KEY = '@r';
1091
+ var KEY_REQUIRE_ESCAPING_RE = /^#*@(t|r)$/;
1092
+ var TYPED_ARRAY_CTORS = {
1093
+ 'Int8Array': typeof Int8Array === 'function' ? Int8Array : void 0,
1094
+ 'Uint8Array': typeof Uint8Array === 'function' ? Uint8Array : void 0,
1095
+ 'Uint8ClampedArray': typeof Uint8ClampedArray === 'function' ? Uint8ClampedArray : void 0,
1096
+ 'Int16Array': typeof Int16Array === 'function' ? Int16Array : void 0,
1097
+ 'Uint16Array': typeof Uint16Array === 'function' ? Uint16Array : void 0,
1098
+ 'Int32Array': typeof Int32Array === 'function' ? Int32Array : void 0,
1099
+ 'Uint32Array': typeof Uint32Array === 'function' ? Uint32Array : void 0,
1100
+ 'Float32Array': typeof Float32Array === 'function' ? Float32Array : void 0,
1101
+ 'Float64Array': typeof Float64Array === 'function' ? Float64Array : void 0,
1102
+ };
1103
+ var SAFE_ERROR_CTORS = {
1104
+ 'Error': Error,
1105
+ 'EvalError': EvalError,
1106
+ 'RangeError': RangeError,
1107
+ 'ReferenceError': ReferenceError,
1108
+ 'SyntaxError': SyntaxError,
1109
+ 'TypeError': TypeError,
1110
+ 'URIError': URIError,
1111
+ };
1112
+ var ARRAY_BUFFER_SUPPORTED = typeof ArrayBuffer === 'function';
1113
+ var MAP_SUPPORTED = typeof Map === 'function';
1114
+ var SET_SUPPORTED = typeof Set === 'function';
1115
+ var BUFFER_FROM_SUPPORTED = typeof Buffer === 'function';
1116
+ var TYPED_ARRAY_SUPPORTED = function (typeName) {
1117
+ return !!TYPED_ARRAY_CTORS[typeName];
1118
+ };
1119
+ // Saved proto functions
1120
+ var arrSlice = Array.prototype.slice;
1121
+ // Default serializer
1122
+ var JSONSerializer = {
1123
+ serialize: function (val) {
1124
+ return JSON.stringify(val);
1125
+ },
1126
+ deserialize: function (val) {
1127
+ return JSON.parse(val);
1128
+ },
1129
+ };
1130
+ // EncodingTransformer
1131
+ var EncodingTransformer = function (val, transforms) {
1132
+ this.references = val;
1133
+ this.transforms = transforms;
1134
+ this.circularCandidates = [];
1135
+ this.circularCandidatesDescrs = [];
1136
+ this.circularRefCount = 0;
1137
+ };
1138
+ EncodingTransformer._createRefMark = function (idx) {
1139
+ var obj = Object.create(null);
1140
+ obj[CIRCULAR_REF_KEY] = idx;
1141
+ return obj;
1142
+ };
1143
+ EncodingTransformer.prototype._createCircularCandidate = function (val, parent, key) {
1144
+ this.circularCandidates.push(val);
1145
+ this.circularCandidatesDescrs.push({ parent: parent, key: key, refIdx: -1 });
1146
+ };
1147
+ EncodingTransformer.prototype._applyTransform = function (val, parent, key, transform) {
1148
+ var result = Object.create(null);
1149
+ var serializableVal = transform.toSerializable(val);
1150
+ if (typeof serializableVal === 'object')
1151
+ this._createCircularCandidate(val, parent, key);
1152
+ result[TRANSFORMED_TYPE_KEY] = transform.type;
1153
+ result.data = this._handleValue(serializableVal, parent, key);
1154
+ return result;
1155
+ };
1156
+ EncodingTransformer.prototype._handleArray = function (arr) {
1157
+ var result = [];
1158
+ for (var i = 0; i < arr.length; i++)
1159
+ result[i] = this._handleValue(arr[i], result, i);
1160
+ return result;
1161
+ };
1162
+ EncodingTransformer.prototype._handlePlainObject = function (obj) {
1163
+ var replicator = this;
1164
+ var result = Object.create(null);
1165
+ var ownPropertyNames = Object.getOwnPropertyNames(obj);
1166
+ ownPropertyNames.forEach(function (key) {
1167
+ var resultKey = KEY_REQUIRE_ESCAPING_RE.test(key) ? '#' + key : key;
1168
+ result[resultKey] = replicator._handleValue(obj[key], result, resultKey);
1169
+ });
1170
+ return result;
1171
+ };
1172
+ EncodingTransformer.prototype._handleObject = function (obj, parent, key) {
1173
+ this._createCircularCandidate(obj, parent, key);
1174
+ return Array.isArray(obj) ? this._handleArray(obj) : this._handlePlainObject(obj);
1175
+ };
1176
+ EncodingTransformer.prototype._ensureCircularReference = function (obj) {
1177
+ var circularCandidateIdx = this.circularCandidates.indexOf(obj);
1178
+ if (circularCandidateIdx > -1) {
1179
+ var descr = this.circularCandidatesDescrs[circularCandidateIdx];
1180
+ if (descr.refIdx === -1)
1181
+ descr.refIdx = descr.parent ? ++this.circularRefCount : 0;
1182
+ return EncodingTransformer._createRefMark(descr.refIdx);
1183
+ }
1184
+ return null;
1185
+ };
1186
+ EncodingTransformer.prototype._handleValue = function (val, parent, key) {
1187
+ var type = typeof val;
1188
+ var isObject = type === 'object' && val !== null;
1189
+ if (isObject) {
1190
+ var refMark = this._ensureCircularReference(val);
1191
+ if (refMark)
1192
+ return refMark;
1193
+ }
1194
+ for (var i = 0; i < this.transforms.length; i++) {
1195
+ var transform = this.transforms[i];
1196
+ if (transform.shouldTransform(type, val))
1197
+ return this._applyTransform(val, parent, key, transform);
1198
+ }
1199
+ if (isObject)
1200
+ return this._handleObject(val, parent, key);
1201
+ return val;
1202
+ };
1203
+ EncodingTransformer.prototype.transform = function () {
1204
+ var references = [this._handleValue(this.references, null, null)];
1205
+ for (var i = 0; i < this.circularCandidatesDescrs.length; i++) {
1206
+ var descr = this.circularCandidatesDescrs[i];
1207
+ if (descr.refIdx > 0) {
1208
+ references[descr.refIdx] = descr.parent[descr.key];
1209
+ descr.parent[descr.key] = EncodingTransformer._createRefMark(descr.refIdx);
1211
1210
  }
1212
- return references;
1213
- };
1214
- // DecodingTransform
1215
- var DecodingTransformer = function (references, transformsMap) {
1216
- this.references = references;
1217
- this.transformMap = transformsMap;
1218
- this.activeTransformsStack = [];
1219
- this.visitedRefs = Object.create(null);
1220
- };
1221
- DecodingTransformer.prototype._handlePlainObject = function (obj) {
1222
- var replicator = this;
1223
- var unescaped = Object.create(null);
1224
- var ownPropertyNames = Object.getOwnPropertyNames(obj);
1225
- ownPropertyNames.forEach(function (key) {
1226
- replicator._handleValue(obj[key], obj, key);
1227
- if (KEY_REQUIRE_ESCAPING_RE.test(key)) {
1228
- // NOTE: use intermediate object to avoid unescaped and escaped keys interference
1229
- // E.g. unescaped "##@t" will be "#@t" which can overwrite escaped "#@t".
1230
- unescaped[key.substring(1)] = obj[key];
1231
- delete obj[key];
1232
- }
1233
- });
1234
- for (var unsecapedKey in unescaped)
1235
- obj[unsecapedKey] = unescaped[unsecapedKey];
1236
- };
1237
- DecodingTransformer.prototype._handleTransformedObject = function (obj, parent, key) {
1238
- var transformType = obj[TRANSFORMED_TYPE_KEY];
1239
- var transform = this.transformMap[transformType];
1240
- if (!transform)
1241
- throw new Error('Can\'t find transform for "' + transformType + '" type.');
1242
- this.activeTransformsStack.push(obj);
1243
- this._handleValue(obj.data, obj, 'data');
1244
- this.activeTransformsStack.pop();
1245
- parent[key] = transform.fromSerializable(obj.data);
1246
- };
1247
- DecodingTransformer.prototype._handleCircularSelfRefDuringTransform = function (refIdx, parent, key) {
1248
- // NOTE: we've hit a hard case: object reference itself during transformation.
1249
- // We can't dereference it since we don't have resulting object yet. And we'll
1250
- // not be able to restore reference lately because we will need to traverse
1251
- // transformed object again and reference might be unreachable or new object contain
1252
- // new circular references. As a workaround we create getter, so once transformation
1253
- // complete, dereferenced property will point to correct transformed object.
1254
- var references = this.references;
1255
- var val = void 0;
1256
- Object.defineProperty(parent, key, {
1257
- configurable: true,
1258
- enumerable: true,
1259
- get: function () {
1260
- if (val === void 0)
1261
- val = references[refIdx];
1262
- return val;
1263
- },
1264
- set: function (value) {
1265
- val = value;
1266
- return val;
1267
- }
1268
- });
1269
- };
1270
- DecodingTransformer.prototype._handleCircularRef = function (refIdx, parent, key) {
1271
- if (this.activeTransformsStack.indexOf(this.references[refIdx]) > -1)
1272
- this._handleCircularSelfRefDuringTransform(refIdx, parent, key);
1273
- else {
1274
- if (!this.visitedRefs[refIdx]) {
1275
- this.visitedRefs[refIdx] = true;
1276
- this._handleValue(this.references[refIdx], this.references, refIdx);
1277
- }
1278
- parent[key] = this.references[refIdx];
1211
+ }
1212
+ return references;
1213
+ };
1214
+ // DecodingTransformer
1215
+ var DecodingTransformer = function (references, transformsMap) {
1216
+ this.references = references;
1217
+ this.transformMap = transformsMap;
1218
+ this.activeTransformsStack = [];
1219
+ this.visitedRefs = Object.create(null);
1220
+ };
1221
+ DecodingTransformer.prototype._handlePlainObject = function (obj) {
1222
+ var replicator = this;
1223
+ var unescaped = Object.create(null);
1224
+ var ownPropertyNames = Object.getOwnPropertyNames(obj);
1225
+ ownPropertyNames.forEach(function (key) {
1226
+ replicator._handleValue(obj[key], obj, key);
1227
+ if (KEY_REQUIRE_ESCAPING_RE.test(key)) {
1228
+ // NOTE: use intermediate object to avoid unescaped and escaped keys interference
1229
+ // E.g. unescaped "##@t" will be "#@t" which can overwrite escaped "#@t".
1230
+ unescaped[key.substring(1)] = obj[key];
1231
+ delete obj[key];
1279
1232
  }
1280
- };
1281
- DecodingTransformer.prototype._handleValue = function (val, parent, key) {
1282
- if (typeof val !== 'object' || val === null)
1283
- return;
1284
- var refIdx = val[CIRCULAR_REF_KEY];
1285
- if (refIdx !== void 0)
1286
- this._handleCircularRef(refIdx, parent, key);
1287
- else if (val[TRANSFORMED_TYPE_KEY])
1288
- this._handleTransformedObject(val, parent, key);
1289
- else if (Array.isArray(val)) {
1290
- for (var i = 0; i < val.length; i++)
1291
- this._handleValue(val[i], val, i);
1233
+ });
1234
+ for (var unescapedKey in unescaped)
1235
+ obj[unescapedKey] = unescaped[unescapedKey];
1236
+ };
1237
+ DecodingTransformer.prototype._handleTransformedObject = function (obj, parent, key) {
1238
+ var transformType = obj[TRANSFORMED_TYPE_KEY];
1239
+ var transform = this.transformMap[transformType];
1240
+ if (!transform)
1241
+ throw new Error('Can\'t find transform for "' + transformType + '" type.');
1242
+ this.activeTransformsStack.push(obj);
1243
+ this._handleValue(obj.data, obj, 'data');
1244
+ this.activeTransformsStack.pop();
1245
+ parent[key] = transform.fromSerializable(obj.data);
1246
+ };
1247
+ DecodingTransformer.prototype._handleCircularSelfRefDuringTransform = function (refIdx, parent, key) {
1248
+ // NOTE: we've hit a hard case: object reference itself during transformation.
1249
+ // We can't dereference it since we don't have resulting object yet. And we'll
1250
+ // not be able to restore reference lately because we will need to traverse
1251
+ // transformed object again and reference might be unreachable or new object contain
1252
+ // new circular references. As a workaround we create getter, so once transformation
1253
+ // complete, dereferenced property will point to correct transformed object.
1254
+ var references = this.references;
1255
+ var val = void 0;
1256
+ Object.defineProperty(parent, key, {
1257
+ configurable: true,
1258
+ enumerable: true,
1259
+ get: function () {
1260
+ if (val === void 0)
1261
+ val = references[refIdx];
1262
+ return val;
1263
+ },
1264
+ set: function (value) {
1265
+ val = value;
1266
+ // eslint-disable-next-line no-setter-return
1267
+ return val;
1268
+ },
1269
+ });
1270
+ };
1271
+ DecodingTransformer.prototype._handleCircularRef = function (refIdx, parent, key) {
1272
+ if (this.activeTransformsStack.indexOf(this.references[refIdx]) > -1)
1273
+ this._handleCircularSelfRefDuringTransform(refIdx, parent, key);
1274
+ else {
1275
+ if (!this.visitedRefs[refIdx]) {
1276
+ this.visitedRefs[refIdx] = true;
1277
+ this._handleValue(this.references[refIdx], this.references, refIdx);
1292
1278
  }
1293
- else
1294
- this._handlePlainObject(val);
1295
- };
1296
- DecodingTransformer.prototype.transform = function () {
1297
- this.visitedRefs[0] = true;
1298
- this._handleValue(this.references[0], this.references, 0);
1299
- return this.references[0];
1300
- };
1301
- // Transforms
1302
- var builtInTransforms = [
1303
- {
1304
- type: '[[NaN]]',
1305
- shouldTransform: function (type, val) {
1306
- return type === 'number' && isNaN(val);
1307
- },
1308
- toSerializable: function () {
1309
- return '';
1310
- },
1311
- fromSerializable: function () {
1312
- return NaN;
1313
- }
1279
+ parent[key] = this.references[refIdx];
1280
+ }
1281
+ };
1282
+ DecodingTransformer.prototype._handleValue = function (val, parent, key) {
1283
+ if (typeof val !== 'object' || val === null)
1284
+ return;
1285
+ var refIdx = val[CIRCULAR_REF_KEY];
1286
+ if (refIdx !== void 0)
1287
+ this._handleCircularRef(refIdx, parent, key);
1288
+ else if (val[TRANSFORMED_TYPE_KEY])
1289
+ this._handleTransformedObject(val, parent, key);
1290
+ else if (Array.isArray(val)) {
1291
+ for (var i = 0; i < val.length; i++)
1292
+ this._handleValue(val[i], val, i);
1293
+ }
1294
+ else
1295
+ this._handlePlainObject(val);
1296
+ };
1297
+ DecodingTransformer.prototype.transform = function () {
1298
+ this.visitedRefs[0] = true;
1299
+ this._handleValue(this.references[0], this.references, 0);
1300
+ return this.references[0];
1301
+ };
1302
+ // Transforms
1303
+ var builtInTransforms = [
1304
+ {
1305
+ type: '[[NaN]]',
1306
+ shouldTransform: function (type, val) {
1307
+ return type === 'number' && isNaN(val);
1314
1308
  },
1315
- {
1316
- type: '[[undefined]]',
1317
- shouldTransform: function (type) {
1318
- return type === 'undefined';
1319
- },
1320
- toSerializable: function () {
1321
- return '';
1322
- },
1323
- fromSerializable: function () {
1324
- return void 0;
1325
- }
1309
+ toSerializable: function () {
1310
+ return '';
1326
1311
  },
1327
- {
1328
- type: '[[Date]]',
1329
- shouldTransform: function (type, val) {
1330
- return val instanceof Date;
1331
- },
1332
- toSerializable: function (date) {
1333
- return date.getTime();
1334
- },
1335
- fromSerializable: function (val) {
1336
- var date = new Date();
1337
- date.setTime(val);
1338
- return date;
1339
- }
1312
+ fromSerializable: function () {
1313
+ return NaN;
1340
1314
  },
1341
- {
1342
- type: '[[RegExp]]',
1343
- shouldTransform: function (type, val) {
1344
- return val instanceof RegExp;
1345
- },
1346
- toSerializable: function (re) {
1347
- var result = {
1348
- src: re.source,
1349
- flags: ''
1350
- };
1351
- if (re.global)
1352
- result.flags += 'g';
1353
- if (re.ignoreCase)
1354
- result.flags += 'i';
1355
- if (re.multiline)
1356
- result.flags += 'm';
1357
- return result;
1358
- },
1359
- fromSerializable: function (val) {
1360
- return new RegExp(val.src, val.flags);
1361
- }
1315
+ },
1316
+ {
1317
+ type: '[[undefined]]',
1318
+ shouldTransform: function (type) {
1319
+ return type === 'undefined';
1362
1320
  },
1363
- {
1364
- type: '[[Error]]',
1365
- shouldTransform: function (type, val) {
1366
- return val instanceof Error;
1367
- },
1368
- toSerializable: function (err) {
1369
- return {
1370
- name: err.name,
1371
- message: err.message,
1372
- stack: err.stack
1373
- };
1374
- },
1375
- fromSerializable: function (val) {
1376
- var Ctor = GLOBAL[val.name] || Error;
1377
- var err = new Ctor(val.message);
1378
- err.stack = val.stack;
1379
- return err;
1380
- }
1321
+ toSerializable: function () {
1322
+ return '';
1381
1323
  },
1382
- {
1383
- type: '[[ArrayBuffer]]',
1384
- shouldTransform: function (type, val) {
1385
- return ARRAY_BUFFER_SUPPORTED && val instanceof ArrayBuffer;
1386
- },
1387
- toSerializable: function (buffer) {
1324
+ fromSerializable: function () {
1325
+ return void 0;
1326
+ },
1327
+ },
1328
+ {
1329
+ type: '[[Date]]',
1330
+ shouldTransform: function (type, val) {
1331
+ return val instanceof Date;
1332
+ },
1333
+ toSerializable: function (date) {
1334
+ return date.getTime();
1335
+ },
1336
+ fromSerializable: function (val) {
1337
+ var date = new Date();
1338
+ date.setTime(val);
1339
+ return date;
1340
+ },
1341
+ },
1342
+ {
1343
+ type: '[[RegExp]]',
1344
+ shouldTransform: function (type, val) {
1345
+ return val instanceof RegExp;
1346
+ },
1347
+ toSerializable: function (re) {
1348
+ var result = {
1349
+ src: re.source,
1350
+ flags: '',
1351
+ };
1352
+ if (re.global)
1353
+ result.flags += 'g';
1354
+ if (re.ignoreCase)
1355
+ result.flags += 'i';
1356
+ if (re.multiline)
1357
+ result.flags += 'm';
1358
+ return result;
1359
+ },
1360
+ fromSerializable: function (val) {
1361
+ return new RegExp(val.src, val.flags);
1362
+ },
1363
+ },
1364
+ {
1365
+ type: '[[Error]]',
1366
+ shouldTransform: function (type, val) {
1367
+ return val instanceof Error;
1368
+ },
1369
+ toSerializable: function (err) {
1370
+ return {
1371
+ name: err.name,
1372
+ message: err.message,
1373
+ stack: err.stack,
1374
+ };
1375
+ },
1376
+ fromSerializable: function (val) {
1377
+ var Ctor = SAFE_ERROR_CTORS[val.name] || Error;
1378
+ var err = new Ctor(val.message);
1379
+ err.stack = val.stack;
1380
+ return err;
1381
+ },
1382
+ },
1383
+ {
1384
+ type: '[[ArrayBuffer]]',
1385
+ shouldTransform: function (type, val) {
1386
+ return ARRAY_BUFFER_SUPPORTED && val instanceof ArrayBuffer;
1387
+ },
1388
+ toSerializable: function (buffer) {
1389
+ var view = new Int8Array(buffer);
1390
+ return arrSlice.call(view);
1391
+ },
1392
+ fromSerializable: function (val) {
1393
+ if (ARRAY_BUFFER_SUPPORTED) {
1394
+ var buffer = new ArrayBuffer(val.length);
1388
1395
  var view = new Int8Array(buffer);
1389
- return arrSlice.call(view);
1390
- },
1391
- fromSerializable: function (val) {
1392
- if (ARRAY_BUFFER_SUPPORTED) {
1393
- var buffer = new ArrayBuffer(val.length);
1394
- var view = new Int8Array(buffer);
1395
- view.set(val);
1396
- return buffer;
1397
- }
1398
- return val;
1396
+ view.set(val);
1397
+ return buffer;
1399
1398
  }
1399
+ return val;
1400
1400
  },
1401
- {
1402
- type: '[[Buffer]]',
1403
- shouldTransform: function (type, val) {
1404
- return BUFFER_FROM_SUPPORTED && val instanceof Buffer;
1405
- },
1406
- toSerializable: function (buffer) {
1407
- return arrSlice.call(buffer);
1408
- },
1409
- fromSerializable: function (val) {
1410
- if (BUFFER_FROM_SUPPORTED)
1411
- return Buffer.from(val);
1412
- return val;
1413
- }
1401
+ },
1402
+ {
1403
+ type: '[[Buffer]]',
1404
+ shouldTransform: function (type, val) {
1405
+ return BUFFER_FROM_SUPPORTED && val instanceof Buffer;
1414
1406
  },
1415
- {
1416
- type: '[[TypedArray]]',
1417
- shouldTransform: function (type, val) {
1418
- return Object.keys(TYPED_ARRAY_CTORS).some(function (ctorName) {
1419
- return TYPED_ARRAY_SUPPORTED(ctorName) && val instanceof TYPED_ARRAY_CTORS[ctorName];
1420
- });
1421
- },
1422
- toSerializable: function (arr) {
1423
- return {
1424
- ctorName: arr.constructor.name,
1425
- arr: arrSlice.call(arr)
1426
- };
1427
- },
1428
- fromSerializable: function (val) {
1429
- return TYPED_ARRAY_SUPPORTED(val.ctorName) ? new TYPED_ARRAY_CTORS[val.ctorName](val.arr) : val.arr;
1430
- }
1407
+ toSerializable: function (buffer) {
1408
+ return arrSlice.call(buffer);
1431
1409
  },
1432
- {
1433
- type: '[[Map]]',
1434
- shouldTransform: function (type, val) {
1435
- return MAP_SUPPORTED && val instanceof Map;
1436
- },
1437
- toSerializable: function (map) {
1438
- var flattenedKVArr = [];
1439
- map.forEach(function (val, key) {
1440
- flattenedKVArr.push(key);
1441
- flattenedKVArr.push(val);
1442
- });
1443
- return flattenedKVArr;
1444
- },
1445
- fromSerializable: function (val) {
1446
- if (MAP_SUPPORTED) {
1447
- // NOTE: new Map(iterable) is not supported by all browsers
1448
- var map = new Map();
1449
- for (var i = 0; i < val.length; i += 2)
1450
- map.set(val[i], val[i + 1]);
1451
- return map;
1452
- }
1453
- var kvArr = [];
1454
- for (var j = 0; j < val.length; j += 2)
1455
- kvArr.push([val[i], val[i + 1]]);
1456
- return kvArr;
1410
+ fromSerializable: function (val) {
1411
+ if (BUFFER_FROM_SUPPORTED)
1412
+ return Buffer.from(val);
1413
+ return val;
1414
+ },
1415
+ },
1416
+ {
1417
+ type: '[[TypedArray]]',
1418
+ shouldTransform: function (type, val) {
1419
+ return Object.keys(TYPED_ARRAY_CTORS).some(function (ctorName) {
1420
+ return TYPED_ARRAY_SUPPORTED(ctorName) && val instanceof TYPED_ARRAY_CTORS[ctorName];
1421
+ });
1422
+ },
1423
+ toSerializable: function (arr) {
1424
+ return {
1425
+ ctorName: arr.constructor.name,
1426
+ arr: arrSlice.call(arr),
1427
+ };
1428
+ },
1429
+ fromSerializable: function (val) {
1430
+ return TYPED_ARRAY_SUPPORTED(val.ctorName) ? new TYPED_ARRAY_CTORS[val.ctorName](val.arr) : val.arr;
1431
+ },
1432
+ },
1433
+ {
1434
+ type: '[[Map]]',
1435
+ shouldTransform: function (type, val) {
1436
+ return MAP_SUPPORTED && val instanceof Map;
1437
+ },
1438
+ toSerializable: function (map) {
1439
+ var flattenedKVArr = [];
1440
+ map.forEach(function (val, key) {
1441
+ flattenedKVArr.push(key);
1442
+ flattenedKVArr.push(val);
1443
+ });
1444
+ return flattenedKVArr;
1445
+ },
1446
+ fromSerializable: function (val) {
1447
+ if (MAP_SUPPORTED) {
1448
+ // NOTE: new Map(iterable) is not supported by all browsers
1449
+ var map = new Map();
1450
+ for (var i = 0; i < val.length; i += 2)
1451
+ map.set(val[i], val[i + 1]);
1452
+ return map;
1457
1453
  }
1454
+ var kvArr = [];
1455
+ for (var j = 0; j < val.length; j += 2)
1456
+ kvArr.push([val[j], val[j + 1]]);
1457
+ return kvArr;
1458
1458
  },
1459
- {
1460
- type: '[[Set]]',
1461
- shouldTransform: function (type, val) {
1462
- return SET_SUPPORTED && val instanceof Set;
1463
- },
1464
- toSerializable: function (set) {
1465
- var arr = [];
1466
- set.forEach(function (val) {
1467
- arr.push(val);
1468
- });
1469
- return arr;
1470
- },
1471
- fromSerializable: function (val) {
1472
- if (SET_SUPPORTED) {
1473
- // NOTE: new Set(iterable) is not supported by all browsers
1474
- var set = new Set();
1475
- for (var i = 0; i < val.length; i++)
1476
- set.add(val[i]);
1477
- return set;
1478
- }
1479
- return val;
1459
+ },
1460
+ {
1461
+ type: '[[Set]]',
1462
+ shouldTransform: function (type, val) {
1463
+ return SET_SUPPORTED && val instanceof Set;
1464
+ },
1465
+ toSerializable: function (set) {
1466
+ var arr = [];
1467
+ set.forEach(function (val) {
1468
+ arr.push(val);
1469
+ });
1470
+ return arr;
1471
+ },
1472
+ fromSerializable: function (val) {
1473
+ if (SET_SUPPORTED) {
1474
+ // NOTE: new Set(iterable) is not supported by all browsers
1475
+ var set = new Set();
1476
+ for (var i = 0; i < val.length; i++)
1477
+ set.add(val[i]);
1478
+ return set;
1480
1479
  }
1481
- }
1482
- ];
1483
- // Replicator
1484
- var Replicator = module.exports = function (serializer) {
1485
- this.transforms = [];
1486
- this.transformsMap = Object.create(null);
1487
- this.serializer = serializer || JSONSerializer;
1488
- this.addTransforms(builtInTransforms);
1489
- };
1490
- // Manage transforms
1491
- Replicator.prototype.addTransforms = function (transforms) {
1492
- transforms = Array.isArray(transforms) ? transforms : [transforms];
1493
- for (var i = 0; i < transforms.length; i++) {
1494
- var transform = transforms[i];
1495
- if (this.transformsMap[transform.type])
1496
- throw new Error('Transform with type "' + transform.type + '" was already added.');
1497
- this.transforms.push(transform);
1498
- this.transformsMap[transform.type] = transform;
1499
- }
1500
- return this;
1501
- };
1502
- Replicator.prototype.removeTransforms = function (transforms) {
1503
- transforms = Array.isArray(transforms) ? transforms : [transforms];
1504
- for (var i = 0; i < transforms.length; i++) {
1505
- var transform = transforms[i];
1506
- var idx = this.transforms.indexOf(transform);
1507
- if (idx > -1)
1508
- this.transforms.splice(idx, 1);
1509
- delete this.transformsMap[transform.type];
1510
- }
1511
- return this;
1512
- };
1513
- Replicator.prototype.encode = function (val) {
1514
- var transformer = new EncodingTransformer(val, this.transforms);
1515
- var references = transformer.transform();
1516
- return this.serializer.serialize(references);
1517
- };
1518
- Replicator.prototype.decode = function (val) {
1519
- var references = this.serializer.deserialize(val);
1520
- var transformer = new DecodingTransformer(references, this.transformsMap);
1521
- return transformer.transform();
1522
- };
1523
- });
1480
+ return val;
1481
+ },
1482
+ },
1483
+ ];
1484
+ // Replicator
1485
+ var Replicator = function (serializer) {
1486
+ this.transforms = [];
1487
+ this.transformsMap = Object.create(null);
1488
+ this.serializer = serializer || JSONSerializer;
1489
+ this.addTransforms(builtInTransforms);
1490
+ };
1491
+ // Manage transforms
1492
+ Replicator.prototype.addTransforms = function (transforms) {
1493
+ transforms = Array.isArray(transforms) ? transforms : [transforms];
1494
+ for (var i = 0; i < transforms.length; i++) {
1495
+ var transform = transforms[i];
1496
+ if (this.transformsMap[transform.type])
1497
+ throw new Error('Transform with type "' + transform.type + '" was already added.');
1498
+ this.transforms.push(transform);
1499
+ this.transformsMap[transform.type] = transform;
1500
+ }
1501
+ return this;
1502
+ };
1503
+ Replicator.prototype.removeTransforms = function (transforms) {
1504
+ transforms = Array.isArray(transforms) ? transforms : [transforms];
1505
+ for (var i = 0; i < transforms.length; i++) {
1506
+ var transform = transforms[i];
1507
+ var idx = this.transforms.indexOf(transform);
1508
+ if (idx > -1)
1509
+ this.transforms.splice(idx, 1);
1510
+ delete this.transformsMap[transform.type];
1511
+ }
1512
+ return this;
1513
+ };
1514
+ Replicator.prototype.encode = function (val) {
1515
+ var transformer = new EncodingTransformer(val, this.transforms);
1516
+ var references = transformer.transform();
1517
+ return this.serializer.serialize(references);
1518
+ };
1519
+ Replicator.prototype.decode = function (val) {
1520
+ var references = this.serializer.deserialize(val);
1521
+ var transformer = new DecodingTransformer(references, this.transformsMap);
1522
+ return transformer.transform();
1523
+ };
1524
1524
 
1525
1525
  var identity = function (val) { return val; };
1526
1526
  function createReplicator(transforms) {
@@ -1528,11 +1528,11 @@ window['%hammerhead%'].utils.removeInjectedScript();
1528
1528
  // to JSON with a command or command result.
1529
1529
  // Therefore there is no need to do additional job here,
1530
1530
  // so we use identity functions for serialization.
1531
- var replicator$1 = new replicator({
1531
+ var replicator = new Replicator({
1532
1532
  serialize: identity,
1533
1533
  deserialize: identity,
1534
1534
  });
1535
- return replicator$1.addTransforms(transforms);
1535
+ return replicator.addTransforms(transforms);
1536
1536
  }
1537
1537
 
1538
1538
  // @ts-ignore
@@ -1689,8 +1689,10 @@ window['%hammerhead%'].utils.removeInjectedScript();
1689
1689
  throw new DomNodeClientFunctionResultError(this._instantiationCallsiteName);
1690
1690
  return false;
1691
1691
  };
1692
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1692
1693
  ClientFunctionNodeTransform.prototype.toSerializable = function () {
1693
1694
  };
1695
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1694
1696
  ClientFunctionNodeTransform.prototype.fromSerializable = function () {
1695
1697
  };
1696
1698
  return ClientFunctionNodeTransform;
@@ -2626,6 +2628,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
2626
2628
  this._extend(snapshot, node);
2627
2629
  return snapshot;
2628
2630
  };
2631
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
2629
2632
  SelectorNodeTransform.prototype.fromSerializable = function () {
2630
2633
  };
2631
2634
  return SelectorNodeTransform;
@@ -4316,6 +4319,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
4316
4319
  SelectorElementActionTransform.prototype.toSerializable = function (node) {
4317
4320
  return new ElementActionSnapshot(node);
4318
4321
  };
4322
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
4319
4323
  SelectorElementActionTransform.prototype.fromSerializable = function () {
4320
4324
  };
4321
4325
  return SelectorElementActionTransform;
@@ -4376,7 +4380,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
4376
4380
  }
4377
4381
  this._requests.clear();
4378
4382
  this._offListening();
4379
- this._waitResolve(); // eslint-disable-line @typescript-eslint/no-non-null-assertion
4383
+ this._waitResolve();
4380
4384
  };
4381
4385
  RequestBarrier.prototype.wait = function (isPageLoad) {
4382
4386
  var _this = this;
@@ -4446,7 +4450,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
4446
4450
  }
4447
4451
  this._scripts.clear();
4448
4452
  this._offListening();
4449
- this._waitResolve(); // eslint-disable-line @typescript-eslint/no-non-null-assertion
4453
+ this._waitResolve();
4450
4454
  this._waitResolve = null;
4451
4455
  };
4452
4456
  ScriptExecutionBarrier.prototype.wait = function () {