@webex/test-helper-file 2.59.2 → 2.59.3-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +6 -6
- package/README.md +31 -31
- package/babel.config.js +3 -3
- package/dist/file.js.map +1 -1
- package/dist/file.shim.js +31 -31
- package/dist/file.shim.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +14 -13
- package/process +1 -1
- package/src/file.js +66 -66
- package/src/file.shim.js +155 -155
- package/src/index.js +11 -11
package/.eslintrc.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const config = {
|
|
2
|
-
root: true,
|
|
3
|
-
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
module.exports = config;
|
|
1
|
+
const config = {
|
|
2
|
+
root: true,
|
|
3
|
+
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
module.exports = config;
|
package/README.md
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
# @webex/test-helper-file
|
|
2
|
-
|
|
3
|
-
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
-
|
|
5
|
-
>
|
|
6
|
-
|
|
7
|
-
- [Install](#install)
|
|
8
|
-
- [Usage](#usage)
|
|
9
|
-
- [Contribute](#contribute)
|
|
10
|
-
- [Maintainers](#maintainers)
|
|
11
|
-
- [License](#license)
|
|
12
|
-
|
|
13
|
-
## Install
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npm install --save @webex/test-helper-file
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Usage
|
|
20
|
-
|
|
21
|
-
## Maintainers
|
|
22
|
-
|
|
23
|
-
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
24
|
-
|
|
25
|
-
## Contribute
|
|
26
|
-
|
|
27
|
-
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
28
|
-
|
|
29
|
-
## License
|
|
30
|
-
|
|
31
|
-
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
|
1
|
+
# @webex/test-helper-file
|
|
2
|
+
|
|
3
|
+
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
+
|
|
5
|
+
>
|
|
6
|
+
|
|
7
|
+
- [Install](#install)
|
|
8
|
+
- [Usage](#usage)
|
|
9
|
+
- [Contribute](#contribute)
|
|
10
|
+
- [Maintainers](#maintainers)
|
|
11
|
+
- [License](#license)
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install --save @webex/test-helper-file
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
## Maintainers
|
|
22
|
+
|
|
23
|
+
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
24
|
+
|
|
25
|
+
## Contribute
|
|
26
|
+
|
|
27
|
+
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
28
|
+
|
|
29
|
+
## License
|
|
30
|
+
|
|
31
|
+
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
package/babel.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
-
|
|
3
|
-
module.exports = babelConfigLegacy;
|
|
1
|
+
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
+
|
|
3
|
+
module.exports = babelConfigLegacy;
|
package/dist/file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fs","require","_path","_fileType","_common","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","fetchWithoutMagic","filename","_promise","resolve","reject","filepath","join","__dirname","readFile","err","data","name","exports","fetch","then","all","fromFile","_ref","_ref2","_slicedToArray2","type","mime","Error","isBufferLike","file","isBuffer","isBlobLike","isMatchingFile","left","right","equals"],"sources":["file.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {readFile} from 'fs';\nimport {join} from 'path';\n\nimport {fromFile} from 'file-type';\nimport {isBuffer} from '@webex/common';\n\nexport const fetchWithoutMagic = (filename) =>\n new Promise((resolve, reject) => {\n const filepath = join(__dirname, '../../../@webex/test-helper-server/static', filename);\n\n readFile(filepath, (err, data) => {\n if (err) {\n reject(err);\n\n return;\n }\n resolve({...data, name: filename});\n });\n });\n\nexport const fetch = (filename) =>\n fetchWithoutMagic(filename)\n .then((data) => Promise.all([fromFile(data), data]))\n // .then(([{mime: type}, data]) => {\n // console.error(data, type);\n\n // return {...data, type};\n // });\n .then(([{mime: type}, data]) =>\n type ? {...data, type} : Promise.reject(new Error('Invalid Media Type'))\n );\n\nexport const isBufferLike = (file) => isBuffer(file);\n\nexport const isBlobLike = (file) => isBuffer(file);\n\nexport const isMatchingFile = (left, right) => {\n if (!isBufferLike(left)) {\n throw new Error('`left` must be a `Buffer`');\n }\n\n if (!isBufferLike(right)) {\n throw new Error('`right` must be a `Buffer`');\n }\n\n // Node 10 doesn't have Buffer#equals()\n if (left.equals) {\n return Promise.resolve(left.equals(right));\n }\n\n if (left.length !== right.length) {\n return Promise.resolve(false);\n }\n\n for (let i = 0; i < left.length; i += 1) {\n if (left[i] !== right[i]) {\n return Promise.resolve(false);\n }\n }\n\n return Promise.resolve(true);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_fs","require","_path","_fileType","_common","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","fetchWithoutMagic","filename","_promise","resolve","reject","filepath","join","__dirname","readFile","err","data","name","exports","fetch","then","all","fromFile","_ref","_ref2","_slicedToArray2","type","mime","Error","isBufferLike","file","isBuffer","isBlobLike","isMatchingFile","left","right","equals"],"sources":["file.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport {readFile} from 'fs';\r\nimport {join} from 'path';\r\n\r\nimport {fromFile} from 'file-type';\r\nimport {isBuffer} from '@webex/common';\r\n\r\nexport const fetchWithoutMagic = (filename) =>\r\n new Promise((resolve, reject) => {\r\n const filepath = join(__dirname, '../../../@webex/test-helper-server/static', filename);\r\n\r\n readFile(filepath, (err, data) => {\r\n if (err) {\r\n reject(err);\r\n\r\n return;\r\n }\r\n resolve({...data, name: filename});\r\n });\r\n });\r\n\r\nexport const fetch = (filename) =>\r\n fetchWithoutMagic(filename)\r\n .then((data) => Promise.all([fromFile(data), data]))\r\n // .then(([{mime: type}, data]) => {\r\n // console.error(data, type);\r\n\r\n // return {...data, type};\r\n // });\r\n .then(([{mime: type}, data]) =>\r\n type ? {...data, type} : Promise.reject(new Error('Invalid Media Type'))\r\n );\r\n\r\nexport const isBufferLike = (file) => isBuffer(file);\r\n\r\nexport const isBlobLike = (file) => isBuffer(file);\r\n\r\nexport const isMatchingFile = (left, right) => {\r\n if (!isBufferLike(left)) {\r\n throw new Error('`left` must be a `Buffer`');\r\n }\r\n\r\n if (!isBufferLike(right)) {\r\n throw new Error('`right` must be a `Buffer`');\r\n }\r\n\r\n // Node 10 doesn't have Buffer#equals()\r\n if (left.equals) {\r\n return Promise.resolve(left.equals(right));\r\n }\r\n\r\n if (left.length !== right.length) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n for (let i = 0; i < left.length; i += 1) {\r\n if (left[i] !== right[i]) {\r\n return Promise.resolve(false);\r\n }\r\n }\r\n\r\n return Promise.resolve(true);\r\n};\r\n"],"mappings":"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"}
|
package/dist/file.shim.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
4
4
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
5
|
-
/*!
|
|
6
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
5
|
+
/*!
|
|
6
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
/* eslint-env browser */
|
|
@@ -11,10 +11,10 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/pr
|
|
|
11
11
|
var makeLocalUrl = require('@webex/test-helper-make-local-url');
|
|
12
12
|
var xhr = require('xhr');
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* @param {Blob} blob
|
|
16
|
-
* @private
|
|
17
|
-
* @returns {Promise}
|
|
14
|
+
/**
|
|
15
|
+
* @param {Blob} blob
|
|
16
|
+
* @private
|
|
17
|
+
* @returns {Promise}
|
|
18
18
|
*/
|
|
19
19
|
function convertBlobToArrayBuffer(blob) {
|
|
20
20
|
if (!(blob instanceof Blob)) {
|
|
@@ -30,10 +30,10 @@ function convertBlobToArrayBuffer(blob) {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
/**
|
|
34
|
-
* @param {Uint8Array} array
|
|
35
|
-
* @private
|
|
36
|
-
* @returns {ArrayBuffer}
|
|
33
|
+
/**
|
|
34
|
+
* @param {Uint8Array} array
|
|
35
|
+
* @private
|
|
36
|
+
* @returns {ArrayBuffer}
|
|
37
37
|
*/
|
|
38
38
|
function convertUint8ArrayToArrayBuffer(array) {
|
|
39
39
|
if (!(array instanceof Uint8Array)) {
|
|
@@ -42,26 +42,26 @@ function convertUint8ArrayToArrayBuffer(array) {
|
|
|
42
42
|
return array.buffer;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
/**
|
|
46
|
-
* @param {mixed} file
|
|
47
|
-
* @returns {Boolean}
|
|
45
|
+
/**
|
|
46
|
+
* @param {mixed} file
|
|
47
|
+
* @returns {Boolean}
|
|
48
48
|
*/
|
|
49
49
|
function isBlobLike(file) {
|
|
50
50
|
return file instanceof Blob && 'size' in file && 'type' in file;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
/**
|
|
54
|
-
* @param {mixed} file
|
|
55
|
-
* @returns {Boolean}
|
|
53
|
+
/**
|
|
54
|
+
* @param {mixed} file
|
|
55
|
+
* @returns {Boolean}
|
|
56
56
|
*/
|
|
57
57
|
function isBufferLike(file) {
|
|
58
58
|
return file instanceof ArrayBuffer;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
/**
|
|
62
|
-
* @param {mixed} file
|
|
63
|
-
* @private
|
|
64
|
-
* @returns {Promise}
|
|
61
|
+
/**
|
|
62
|
+
* @param {mixed} file
|
|
63
|
+
* @private
|
|
64
|
+
* @returns {Promise}
|
|
65
65
|
*/
|
|
66
66
|
function ensureArrayBuffer(file) {
|
|
67
67
|
if (isBufferLike(file)) {
|
|
@@ -76,10 +76,10 @@ function ensureArrayBuffer(file) {
|
|
|
76
76
|
throw new Error('Could not determine type of `file`');
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
* Fetches a file
|
|
81
|
-
* @param {string} filename
|
|
82
|
-
* @returns {Promise<File>}
|
|
79
|
+
/**
|
|
80
|
+
* Fetches a file
|
|
81
|
+
* @param {string} filename
|
|
82
|
+
* @returns {Promise<File>}
|
|
83
83
|
*/
|
|
84
84
|
function fetch(filename) {
|
|
85
85
|
return new _promise.default(function (resolve, reject) {
|
|
@@ -97,18 +97,18 @@ function fetch(filename) {
|
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
var FileShim = {
|
|
100
|
-
/**
|
|
101
|
-
* @param {string} filename
|
|
102
|
-
* @returns {Promise}
|
|
100
|
+
/**
|
|
101
|
+
* @param {string} filename
|
|
102
|
+
* @returns {Promise}
|
|
103
103
|
*/
|
|
104
104
|
fetch: fetch,
|
|
105
105
|
fetchWithoutMagic: fetch,
|
|
106
106
|
isBufferLike: isBufferLike,
|
|
107
107
|
isBlobLike: isBlobLike,
|
|
108
|
-
/**
|
|
109
|
-
* @param {ArrayBuffer|Blob|Uint8Array} left
|
|
110
|
-
* @param {ArrayBuffer|Blob|Uint8Array} right
|
|
111
|
-
* @returns {Boolean}
|
|
108
|
+
/**
|
|
109
|
+
* @param {ArrayBuffer|Blob|Uint8Array} left
|
|
110
|
+
* @param {ArrayBuffer|Blob|Uint8Array} right
|
|
111
|
+
* @returns {Boolean}
|
|
112
112
|
*/
|
|
113
113
|
isMatchingFile: function isMatchingFile(left, right) {
|
|
114
114
|
return _promise.default.all([ensureArrayBuffer(left), ensureArrayBuffer(right)]).then(function (buffers) {
|
package/dist/file.shim.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["makeLocalUrl","require","xhr","convertBlobToArrayBuffer","blob","Blob","Error","_promise","default","resolve","reject","reader","FileReader","onerror","onload","result","readAsArrayBuffer","convertUint8ArrayToArrayBuffer","array","Uint8Array","buffer","isBlobLike","file","isBufferLike","ArrayBuffer","ensureArrayBuffer","fetch","filename","uri","concat","responseType","err","res","body","name","FileShim","fetchWithoutMagic","isMatchingFile","left","right","all","then","buffers","innerLeft","innerRight","byteLength","l","r","i","length","module","exports"],"sources":["file.shim.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\nconst makeLocalUrl = require('@webex/test-helper-make-local-url');\nconst xhr = require('xhr');\n\n/**\n * @param {Blob} blob\n * @private\n * @returns {Promise}\n */\nfunction convertBlobToArrayBuffer(blob) {\n if (!(blob instanceof Blob)) {\n throw new Error('`blob` must be a `Blob`');\n }\n\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onerror = reject;\n reader.onload = function onload() {\n resolve(reader.result);\n };\n\n reader.readAsArrayBuffer(blob);\n });\n}\n\n/**\n * @param {Uint8Array} array\n * @private\n * @returns {ArrayBuffer}\n */\nfunction convertUint8ArrayToArrayBuffer(array) {\n if (!(array instanceof Uint8Array)) {\n throw new Error('`array` must be a `Uint8Array`');\n }\n\n return array.buffer;\n}\n\n/**\n * @param {mixed} file\n * @returns {Boolean}\n */\nfunction isBlobLike(file) {\n return file instanceof Blob && 'size' in file && 'type' in file;\n}\n\n/**\n * @param {mixed} file\n * @returns {Boolean}\n */\nfunction isBufferLike(file) {\n return file instanceof ArrayBuffer;\n}\n\n/**\n * @param {mixed} file\n * @private\n * @returns {Promise}\n */\nfunction ensureArrayBuffer(file) {\n if (isBufferLike(file)) {\n return file;\n }\n\n if (isBlobLike(file)) {\n return convertBlobToArrayBuffer(file);\n }\n\n if (file instanceof Uint8Array) {\n return convertUint8ArrayToArrayBuffer(file);\n }\n\n throw new Error('Could not determine type of `file`');\n}\n\n/**\n * Fetches a file\n * @param {string} filename\n * @returns {Promise<File>}\n */\nfunction fetch(filename) {\n return new Promise((resolve, reject) => {\n xhr(\n {\n uri: makeLocalUrl(`/${filename}`),\n responseType: 'blob',\n },\n (err, res, body) => {\n if (err) {\n reject(err);\n } else {\n body.name = body.name || filename;\n resolve(body);\n }\n }\n );\n });\n}\n\nconst FileShim = {\n /**\n * @param {string} filename\n * @returns {Promise}\n */\n fetch,\n\n fetchWithoutMagic: fetch,\n\n isBufferLike,\n\n isBlobLike,\n\n /**\n * @param {ArrayBuffer|Blob|Uint8Array} left\n * @param {ArrayBuffer|Blob|Uint8Array} right\n * @returns {Boolean}\n */\n isMatchingFile: function isMatchingFile(left, right) {\n return Promise.all([ensureArrayBuffer(left), ensureArrayBuffer(right)]).then((buffers) => {\n const innerLeft = buffers[0];\n const innerRight = buffers[1];\n\n if (!FileShim.isBufferLike(innerLeft)) {\n throw new Error('`innerLeft` must be a `Buffer`');\n }\n\n if (!FileShim.isBufferLike(innerRight)) {\n throw new Error('`innerRight` must be a `Buffer`');\n }\n\n if (innerLeft.byteLength !== innerRight.byteLength) {\n return false;\n }\n\n const l = new Uint8Array(innerLeft);\n const r = new Uint8Array(innerRight);\n\n for (let i = 0; i < l.length; i += 1) {\n if (l[i] !== r[i]) {\n return false;\n }\n }\n\n return true;\n });\n },\n};\n\nmodule.exports = FileShim;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["makeLocalUrl","require","xhr","convertBlobToArrayBuffer","blob","Blob","Error","_promise","default","resolve","reject","reader","FileReader","onerror","onload","result","readAsArrayBuffer","convertUint8ArrayToArrayBuffer","array","Uint8Array","buffer","isBlobLike","file","isBufferLike","ArrayBuffer","ensureArrayBuffer","fetch","filename","uri","concat","responseType","err","res","body","name","FileShim","fetchWithoutMagic","isMatchingFile","left","right","all","then","buffers","innerLeft","innerRight","byteLength","l","r","i","length","module","exports"],"sources":["file.shim.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\n/* eslint-env browser */\r\n\r\nconst makeLocalUrl = require('@webex/test-helper-make-local-url');\r\nconst xhr = require('xhr');\r\n\r\n/**\r\n * @param {Blob} blob\r\n * @private\r\n * @returns {Promise}\r\n */\r\nfunction convertBlobToArrayBuffer(blob) {\r\n if (!(blob instanceof Blob)) {\r\n throw new Error('`blob` must be a `Blob`');\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.onerror = reject;\r\n reader.onload = function onload() {\r\n resolve(reader.result);\r\n };\r\n\r\n reader.readAsArrayBuffer(blob);\r\n });\r\n}\r\n\r\n/**\r\n * @param {Uint8Array} array\r\n * @private\r\n * @returns {ArrayBuffer}\r\n */\r\nfunction convertUint8ArrayToArrayBuffer(array) {\r\n if (!(array instanceof Uint8Array)) {\r\n throw new Error('`array` must be a `Uint8Array`');\r\n }\r\n\r\n return array.buffer;\r\n}\r\n\r\n/**\r\n * @param {mixed} file\r\n * @returns {Boolean}\r\n */\r\nfunction isBlobLike(file) {\r\n return file instanceof Blob && 'size' in file && 'type' in file;\r\n}\r\n\r\n/**\r\n * @param {mixed} file\r\n * @returns {Boolean}\r\n */\r\nfunction isBufferLike(file) {\r\n return file instanceof ArrayBuffer;\r\n}\r\n\r\n/**\r\n * @param {mixed} file\r\n * @private\r\n * @returns {Promise}\r\n */\r\nfunction ensureArrayBuffer(file) {\r\n if (isBufferLike(file)) {\r\n return file;\r\n }\r\n\r\n if (isBlobLike(file)) {\r\n return convertBlobToArrayBuffer(file);\r\n }\r\n\r\n if (file instanceof Uint8Array) {\r\n return convertUint8ArrayToArrayBuffer(file);\r\n }\r\n\r\n throw new Error('Could not determine type of `file`');\r\n}\r\n\r\n/**\r\n * Fetches a file\r\n * @param {string} filename\r\n * @returns {Promise<File>}\r\n */\r\nfunction fetch(filename) {\r\n return new Promise((resolve, reject) => {\r\n xhr(\r\n {\r\n uri: makeLocalUrl(`/${filename}`),\r\n responseType: 'blob',\r\n },\r\n (err, res, body) => {\r\n if (err) {\r\n reject(err);\r\n } else {\r\n body.name = body.name || filename;\r\n resolve(body);\r\n }\r\n }\r\n );\r\n });\r\n}\r\n\r\nconst FileShim = {\r\n /**\r\n * @param {string} filename\r\n * @returns {Promise}\r\n */\r\n fetch,\r\n\r\n fetchWithoutMagic: fetch,\r\n\r\n isBufferLike,\r\n\r\n isBlobLike,\r\n\r\n /**\r\n * @param {ArrayBuffer|Blob|Uint8Array} left\r\n * @param {ArrayBuffer|Blob|Uint8Array} right\r\n * @returns {Boolean}\r\n */\r\n isMatchingFile: function isMatchingFile(left, right) {\r\n return Promise.all([ensureArrayBuffer(left), ensureArrayBuffer(right)]).then((buffers) => {\r\n const innerLeft = buffers[0];\r\n const innerRight = buffers[1];\r\n\r\n if (!FileShim.isBufferLike(innerLeft)) {\r\n throw new Error('`innerLeft` must be a `Buffer`');\r\n }\r\n\r\n if (!FileShim.isBufferLike(innerRight)) {\r\n throw new Error('`innerRight` must be a `Buffer`');\r\n }\r\n\r\n if (innerLeft.byteLength !== innerRight.byteLength) {\r\n return false;\r\n }\r\n\r\n const l = new Uint8Array(innerLeft);\r\n const r = new Uint8Array(innerRight);\r\n\r\n for (let i = 0; i < l.length; i += 1) {\r\n if (l[i] !== r[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n },\r\n};\r\n\r\nmodule.exports = FileShim;\r\n"],"mappings":";;;;AAAA;AACA;AACA;;AAEA;;AAEA,IAAMA,YAAY,GAAGC,OAAO,CAAC,mCAAmC,CAAC;AACjE,IAAMC,GAAG,GAAGD,OAAO,CAAC,KAAK,CAAC;;AAE1B;AACA;AACA;AACA;AACA;AACA,SAASE,wBAAwBA,CAACC,IAAI,EAAE;EACtC,IAAI,EAAEA,IAAI,YAAYC,IAAI,CAAC,EAAE;IAC3B,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEA,OAAO,IAAAC,QAAA,CAAAC,OAAA,CAAY,UAACC,OAAO,EAAEC,MAAM,EAAK;IACtC,IAAMC,MAAM,GAAG,IAAIC,UAAU,EAAE;IAE/BD,MAAM,CAACE,OAAO,GAAGH,MAAM;IACvBC,MAAM,CAACG,MAAM,GAAG,SAASA,MAAMA,CAAA,EAAG;MAChCL,OAAO,CAACE,MAAM,CAACI,MAAM,CAAC;IACxB,CAAC;IAEDJ,MAAM,CAACK,iBAAiB,CAACZ,IAAI,CAAC;EAChC,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASa,8BAA8BA,CAACC,KAAK,EAAE;EAC7C,IAAI,EAAEA,KAAK,YAAYC,UAAU,CAAC,EAAE;IAClC,MAAM,IAAIb,KAAK,CAAC,gCAAgC,CAAC;EACnD;EAEA,OAAOY,KAAK,CAACE,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,IAAI,EAAE;EACxB,OAAOA,IAAI,YAAYjB,IAAI,IAAI,MAAM,IAAIiB,IAAI,IAAI,MAAM,IAAIA,IAAI;AACjE;;AAEA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACD,IAAI,EAAE;EAC1B,OAAOA,IAAI,YAAYE,WAAW;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACH,IAAI,EAAE;EAC/B,IAAIC,YAAY,CAACD,IAAI,CAAC,EAAE;IACtB,OAAOA,IAAI;EACb;EAEA,IAAID,UAAU,CAACC,IAAI,CAAC,EAAE;IACpB,OAAOnB,wBAAwB,CAACmB,IAAI,CAAC;EACvC;EAEA,IAAIA,IAAI,YAAYH,UAAU,EAAE;IAC9B,OAAOF,8BAA8B,CAACK,IAAI,CAAC;EAC7C;EAEA,MAAM,IAAIhB,KAAK,CAAC,oCAAoC,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASoB,KAAKA,CAACC,QAAQ,EAAE;EACvB,OAAO,IAAApB,QAAA,CAAAC,OAAA,CAAY,UAACC,OAAO,EAAEC,MAAM,EAAK;IACtCR,GAAG,CACD;MACE0B,GAAG,EAAE5B,YAAY,KAAA6B,MAAA,CAAKF,QAAQ,EAAG;MACjCG,YAAY,EAAE;IAChB,CAAC,EACD,UAACC,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAK;MAClB,IAAIF,GAAG,EAAE;QACPrB,MAAM,CAACqB,GAAG,CAAC;MACb,CAAC,MAAM;QACLE,IAAI,CAACC,IAAI,GAAGD,IAAI,CAACC,IAAI,IAAIP,QAAQ;QACjClB,OAAO,CAACwB,IAAI,CAAC;MACf;IACF,CAAC,CACF;EACH,CAAC,CAAC;AACJ;AAEA,IAAME,QAAQ,GAAG;EACf;AACF;AACA;AACA;EACET,KAAK,EAALA,KAAK;EAELU,iBAAiB,EAAEV,KAAK;EAExBH,YAAY,EAAZA,YAAY;EAEZF,UAAU,EAAVA,UAAU;EAEV;AACF;AACA;AACA;AACA;EACEgB,cAAc,EAAE,SAASA,cAAcA,CAACC,IAAI,EAAEC,KAAK,EAAE;IACnD,OAAOhC,QAAA,CAAAC,OAAA,CAAQgC,GAAG,CAAC,CAACf,iBAAiB,CAACa,IAAI,CAAC,EAAEb,iBAAiB,CAACc,KAAK,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,UAACC,OAAO,EAAK;MACxF,IAAMC,SAAS,GAAGD,OAAO,CAAC,CAAC,CAAC;MAC5B,IAAME,UAAU,GAAGF,OAAO,CAAC,CAAC,CAAC;MAE7B,IAAI,CAACP,QAAQ,CAACZ,YAAY,CAACoB,SAAS,CAAC,EAAE;QACrC,MAAM,IAAIrC,KAAK,CAAC,gCAAgC,CAAC;MACnD;MAEA,IAAI,CAAC6B,QAAQ,CAACZ,YAAY,CAACqB,UAAU,CAAC,EAAE;QACtC,MAAM,IAAItC,KAAK,CAAC,iCAAiC,CAAC;MACpD;MAEA,IAAIqC,SAAS,CAACE,UAAU,KAAKD,UAAU,CAACC,UAAU,EAAE;QAClD,OAAO,KAAK;MACd;MAEA,IAAMC,CAAC,GAAG,IAAI3B,UAAU,CAACwB,SAAS,CAAC;MACnC,IAAMI,CAAC,GAAG,IAAI5B,UAAU,CAACyB,UAAU,CAAC;MAEpC,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,CAAC,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;QACpC,IAAIF,CAAC,CAACE,CAAC,CAAC,KAAKD,CAAC,CAACC,CAAC,CAAC,EAAE;UACjB,OAAO,KAAK;QACd;MACF;MAEA,OAAO,IAAI;IACb,CAAC,CAAC;EACJ;AACF,CAAC;AAEDE,MAAM,CAACC,OAAO,GAAGhB,QAAQ"}
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
4
4
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
5
|
-
/*!
|
|
6
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
5
|
+
/*!
|
|
6
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
/* istanbul ignore next */
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_promise","default","require","polyfill","module","exports"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* istanbul ignore next */\nif (typeof Promise === 'undefined') {\n // eslint-disable-next-line global-require\n require('es6-promise').polyfill();\n}\n\nmodule.exports = require('./file');\n"],"mappings":";;;;AAAA;AACA;AACA;;AAEA;AACA,IAAI,OAAAA,QAAA,CAAAC,OAAc,KAAK,WAAW,EAAE;EAClC;EACAC,OAAO,CAAC,aAAa,CAAC,CAACC,QAAQ,EAAE;AACnC;AAEAC,MAAM,CAACC,OAAO,GAAGH,OAAO,CAAC,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"names":["_promise","default","require","polyfill","module","exports"],"sources":["index.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\n/* istanbul ignore next */\r\nif (typeof Promise === 'undefined') {\r\n // eslint-disable-next-line global-require\r\n require('es6-promise').polyfill();\r\n}\r\n\r\nmodule.exports = require('./file');\r\n"],"mappings":";;;;AAAA;AACA;AACA;;AAEA;AACA,IAAI,OAAAA,QAAA,CAAAC,OAAc,KAAK,WAAW,EAAE;EAClC;EACAC,OAAO,CAAC,aAAa,CAAC,CAACC,QAAQ,EAAE;AACnC;AAEAC,MAAM,CAACC,OAAO,GAAGH,OAAO,CAAC,QAAQ,CAAC"}
|
package/jest.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const config = require('@webex/jest-config-legacy');
|
|
2
|
-
|
|
3
|
-
module.exports = config;
|
|
1
|
+
const config = require('@webex/jest-config-legacy');
|
|
2
|
+
|
|
3
|
+
module.exports = config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/test-helper-file",
|
|
3
|
-
"version": "2.59.2",
|
|
4
3
|
"description": "File helpers for writing isomorphicish mocha tests",
|
|
5
4
|
"license": "MIT",
|
|
6
5
|
"main": "dist/index.js",
|
|
@@ -17,8 +16,8 @@
|
|
|
17
16
|
"./src/file.js": "./src/file.shim.js"
|
|
18
17
|
},
|
|
19
18
|
"dependencies": {
|
|
20
|
-
"@webex/common": "2.59.
|
|
21
|
-
"@webex/test-helper-make-local-url": "2.59.
|
|
19
|
+
"@webex/common": "^2.59.3-next.1",
|
|
20
|
+
"@webex/test-helper-make-local-url": "^2.59.3-next.1",
|
|
22
21
|
"es6-promise": "^4.2.8",
|
|
23
22
|
"file-type": "^16.0.1",
|
|
24
23
|
"xhr": "^2.5.0"
|
|
@@ -26,6 +25,7 @@
|
|
|
26
25
|
"scripts": {
|
|
27
26
|
"build": "yarn build:src",
|
|
28
27
|
"build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
|
|
28
|
+
"deploy:npm": "yarn npm publish",
|
|
29
29
|
"test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
|
|
30
30
|
"test:browser": "webex-legacy-tools test --integration --unit --runner karma",
|
|
31
31
|
"test:integration": "webex-legacy-tools test --integration --runner mocha",
|
|
@@ -34,15 +34,16 @@
|
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@babel/core": "^7.17.10",
|
|
37
|
-
"@webex/babel-config-legacy": "
|
|
38
|
-
"@webex/eslint-config-legacy": "
|
|
39
|
-
"@webex/jest-config-legacy": "
|
|
40
|
-
"@webex/legacy-tools": "
|
|
41
|
-
"@webex/test-helper-chai": "2.59.
|
|
42
|
-
"@webex/test-helper-mocha": "2.59.
|
|
43
|
-
"@webex/test-helper-mock-webex": "2.59.
|
|
44
|
-
"@webex/test-helper-test-users": "2.59.
|
|
37
|
+
"@webex/babel-config-legacy": "^0.0.0",
|
|
38
|
+
"@webex/eslint-config-legacy": "^0.0.0",
|
|
39
|
+
"@webex/jest-config-legacy": "^0.0.0",
|
|
40
|
+
"@webex/legacy-tools": "^0.0.0",
|
|
41
|
+
"@webex/test-helper-chai": "^2.59.3-next.1",
|
|
42
|
+
"@webex/test-helper-mocha": "^2.59.3-next.1",
|
|
43
|
+
"@webex/test-helper-mock-webex": "^2.59.3-next.1",
|
|
44
|
+
"@webex/test-helper-test-users": "^2.59.3-next.1",
|
|
45
45
|
"eslint": "^8.24.0",
|
|
46
46
|
"prettier": "^2.7.1"
|
|
47
|
-
}
|
|
48
|
-
|
|
47
|
+
},
|
|
48
|
+
"version": "2.59.3-next.1"
|
|
49
|
+
}
|
package/process
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = {browser: true};
|
|
1
|
+
module.exports = {browser: true};
|
package/src/file.js
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {readFile} from 'fs';
|
|
6
|
-
import {join} from 'path';
|
|
7
|
-
|
|
8
|
-
import {fromFile} from 'file-type';
|
|
9
|
-
import {isBuffer} from '@webex/common';
|
|
10
|
-
|
|
11
|
-
export const fetchWithoutMagic = (filename) =>
|
|
12
|
-
new Promise((resolve, reject) => {
|
|
13
|
-
const filepath = join(__dirname, '../../../@webex/test-helper-server/static', filename);
|
|
14
|
-
|
|
15
|
-
readFile(filepath, (err, data) => {
|
|
16
|
-
if (err) {
|
|
17
|
-
reject(err);
|
|
18
|
-
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
resolve({...data, name: filename});
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
export const fetch = (filename) =>
|
|
26
|
-
fetchWithoutMagic(filename)
|
|
27
|
-
.then((data) => Promise.all([fromFile(data), data]))
|
|
28
|
-
// .then(([{mime: type}, data]) => {
|
|
29
|
-
// console.error(data, type);
|
|
30
|
-
|
|
31
|
-
// return {...data, type};
|
|
32
|
-
// });
|
|
33
|
-
.then(([{mime: type}, data]) =>
|
|
34
|
-
type ? {...data, type} : Promise.reject(new Error('Invalid Media Type'))
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
export const isBufferLike = (file) => isBuffer(file);
|
|
38
|
-
|
|
39
|
-
export const isBlobLike = (file) => isBuffer(file);
|
|
40
|
-
|
|
41
|
-
export const isMatchingFile = (left, right) => {
|
|
42
|
-
if (!isBufferLike(left)) {
|
|
43
|
-
throw new Error('`left` must be a `Buffer`');
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (!isBufferLike(right)) {
|
|
47
|
-
throw new Error('`right` must be a `Buffer`');
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Node 10 doesn't have Buffer#equals()
|
|
51
|
-
if (left.equals) {
|
|
52
|
-
return Promise.resolve(left.equals(right));
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (left.length !== right.length) {
|
|
56
|
-
return Promise.resolve(false);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
for (let i = 0; i < left.length; i += 1) {
|
|
60
|
-
if (left[i] !== right[i]) {
|
|
61
|
-
return Promise.resolve(false);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return Promise.resolve(true);
|
|
66
|
-
};
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {readFile} from 'fs';
|
|
6
|
+
import {join} from 'path';
|
|
7
|
+
|
|
8
|
+
import {fromFile} from 'file-type';
|
|
9
|
+
import {isBuffer} from '@webex/common';
|
|
10
|
+
|
|
11
|
+
export const fetchWithoutMagic = (filename) =>
|
|
12
|
+
new Promise((resolve, reject) => {
|
|
13
|
+
const filepath = join(__dirname, '../../../@webex/test-helper-server/static', filename);
|
|
14
|
+
|
|
15
|
+
readFile(filepath, (err, data) => {
|
|
16
|
+
if (err) {
|
|
17
|
+
reject(err);
|
|
18
|
+
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
resolve({...data, name: filename});
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export const fetch = (filename) =>
|
|
26
|
+
fetchWithoutMagic(filename)
|
|
27
|
+
.then((data) => Promise.all([fromFile(data), data]))
|
|
28
|
+
// .then(([{mime: type}, data]) => {
|
|
29
|
+
// console.error(data, type);
|
|
30
|
+
|
|
31
|
+
// return {...data, type};
|
|
32
|
+
// });
|
|
33
|
+
.then(([{mime: type}, data]) =>
|
|
34
|
+
type ? {...data, type} : Promise.reject(new Error('Invalid Media Type'))
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
export const isBufferLike = (file) => isBuffer(file);
|
|
38
|
+
|
|
39
|
+
export const isBlobLike = (file) => isBuffer(file);
|
|
40
|
+
|
|
41
|
+
export const isMatchingFile = (left, right) => {
|
|
42
|
+
if (!isBufferLike(left)) {
|
|
43
|
+
throw new Error('`left` must be a `Buffer`');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (!isBufferLike(right)) {
|
|
47
|
+
throw new Error('`right` must be a `Buffer`');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Node 10 doesn't have Buffer#equals()
|
|
51
|
+
if (left.equals) {
|
|
52
|
+
return Promise.resolve(left.equals(right));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (left.length !== right.length) {
|
|
56
|
+
return Promise.resolve(false);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
for (let i = 0; i < left.length; i += 1) {
|
|
60
|
+
if (left[i] !== right[i]) {
|
|
61
|
+
return Promise.resolve(false);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return Promise.resolve(true);
|
|
66
|
+
};
|
package/src/file.shim.js
CHANGED
|
@@ -1,155 +1,155 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/* eslint-env browser */
|
|
6
|
-
|
|
7
|
-
const makeLocalUrl = require('@webex/test-helper-make-local-url');
|
|
8
|
-
const xhr = require('xhr');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @param {Blob} blob
|
|
12
|
-
* @private
|
|
13
|
-
* @returns {Promise}
|
|
14
|
-
*/
|
|
15
|
-
function convertBlobToArrayBuffer(blob) {
|
|
16
|
-
if (!(blob instanceof Blob)) {
|
|
17
|
-
throw new Error('`blob` must be a `Blob`');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return new Promise((resolve, reject) => {
|
|
21
|
-
const reader = new FileReader();
|
|
22
|
-
|
|
23
|
-
reader.onerror = reject;
|
|
24
|
-
reader.onload = function onload() {
|
|
25
|
-
resolve(reader.result);
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
reader.readAsArrayBuffer(blob);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @param {Uint8Array} array
|
|
34
|
-
* @private
|
|
35
|
-
* @returns {ArrayBuffer}
|
|
36
|
-
*/
|
|
37
|
-
function convertUint8ArrayToArrayBuffer(array) {
|
|
38
|
-
if (!(array instanceof Uint8Array)) {
|
|
39
|
-
throw new Error('`array` must be a `Uint8Array`');
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return array.buffer;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* @param {mixed} file
|
|
47
|
-
* @returns {Boolean}
|
|
48
|
-
*/
|
|
49
|
-
function isBlobLike(file) {
|
|
50
|
-
return file instanceof Blob && 'size' in file && 'type' in file;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* @param {mixed} file
|
|
55
|
-
* @returns {Boolean}
|
|
56
|
-
*/
|
|
57
|
-
function isBufferLike(file) {
|
|
58
|
-
return file instanceof ArrayBuffer;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @param {mixed} file
|
|
63
|
-
* @private
|
|
64
|
-
* @returns {Promise}
|
|
65
|
-
*/
|
|
66
|
-
function ensureArrayBuffer(file) {
|
|
67
|
-
if (isBufferLike(file)) {
|
|
68
|
-
return file;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (isBlobLike(file)) {
|
|
72
|
-
return convertBlobToArrayBuffer(file);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (file instanceof Uint8Array) {
|
|
76
|
-
return convertUint8ArrayToArrayBuffer(file);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
throw new Error('Could not determine type of `file`');
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Fetches a file
|
|
84
|
-
* @param {string} filename
|
|
85
|
-
* @returns {Promise<File>}
|
|
86
|
-
*/
|
|
87
|
-
function fetch(filename) {
|
|
88
|
-
return new Promise((resolve, reject) => {
|
|
89
|
-
xhr(
|
|
90
|
-
{
|
|
91
|
-
uri: makeLocalUrl(`/${filename}`),
|
|
92
|
-
responseType: 'blob',
|
|
93
|
-
},
|
|
94
|
-
(err, res, body) => {
|
|
95
|
-
if (err) {
|
|
96
|
-
reject(err);
|
|
97
|
-
} else {
|
|
98
|
-
body.name = body.name || filename;
|
|
99
|
-
resolve(body);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
);
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const FileShim = {
|
|
107
|
-
/**
|
|
108
|
-
* @param {string} filename
|
|
109
|
-
* @returns {Promise}
|
|
110
|
-
*/
|
|
111
|
-
fetch,
|
|
112
|
-
|
|
113
|
-
fetchWithoutMagic: fetch,
|
|
114
|
-
|
|
115
|
-
isBufferLike,
|
|
116
|
-
|
|
117
|
-
isBlobLike,
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* @param {ArrayBuffer|Blob|Uint8Array} left
|
|
121
|
-
* @param {ArrayBuffer|Blob|Uint8Array} right
|
|
122
|
-
* @returns {Boolean}
|
|
123
|
-
*/
|
|
124
|
-
isMatchingFile: function isMatchingFile(left, right) {
|
|
125
|
-
return Promise.all([ensureArrayBuffer(left), ensureArrayBuffer(right)]).then((buffers) => {
|
|
126
|
-
const innerLeft = buffers[0];
|
|
127
|
-
const innerRight = buffers[1];
|
|
128
|
-
|
|
129
|
-
if (!FileShim.isBufferLike(innerLeft)) {
|
|
130
|
-
throw new Error('`innerLeft` must be a `Buffer`');
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (!FileShim.isBufferLike(innerRight)) {
|
|
134
|
-
throw new Error('`innerRight` must be a `Buffer`');
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (innerLeft.byteLength !== innerRight.byteLength) {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const l = new Uint8Array(innerLeft);
|
|
142
|
-
const r = new Uint8Array(innerRight);
|
|
143
|
-
|
|
144
|
-
for (let i = 0; i < l.length; i += 1) {
|
|
145
|
-
if (l[i] !== r[i]) {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
return true;
|
|
151
|
-
});
|
|
152
|
-
},
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
module.exports = FileShim;
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/* eslint-env browser */
|
|
6
|
+
|
|
7
|
+
const makeLocalUrl = require('@webex/test-helper-make-local-url');
|
|
8
|
+
const xhr = require('xhr');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @param {Blob} blob
|
|
12
|
+
* @private
|
|
13
|
+
* @returns {Promise}
|
|
14
|
+
*/
|
|
15
|
+
function convertBlobToArrayBuffer(blob) {
|
|
16
|
+
if (!(blob instanceof Blob)) {
|
|
17
|
+
throw new Error('`blob` must be a `Blob`');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
const reader = new FileReader();
|
|
22
|
+
|
|
23
|
+
reader.onerror = reject;
|
|
24
|
+
reader.onload = function onload() {
|
|
25
|
+
resolve(reader.result);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
reader.readAsArrayBuffer(blob);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @param {Uint8Array} array
|
|
34
|
+
* @private
|
|
35
|
+
* @returns {ArrayBuffer}
|
|
36
|
+
*/
|
|
37
|
+
function convertUint8ArrayToArrayBuffer(array) {
|
|
38
|
+
if (!(array instanceof Uint8Array)) {
|
|
39
|
+
throw new Error('`array` must be a `Uint8Array`');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return array.buffer;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @param {mixed} file
|
|
47
|
+
* @returns {Boolean}
|
|
48
|
+
*/
|
|
49
|
+
function isBlobLike(file) {
|
|
50
|
+
return file instanceof Blob && 'size' in file && 'type' in file;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @param {mixed} file
|
|
55
|
+
* @returns {Boolean}
|
|
56
|
+
*/
|
|
57
|
+
function isBufferLike(file) {
|
|
58
|
+
return file instanceof ArrayBuffer;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @param {mixed} file
|
|
63
|
+
* @private
|
|
64
|
+
* @returns {Promise}
|
|
65
|
+
*/
|
|
66
|
+
function ensureArrayBuffer(file) {
|
|
67
|
+
if (isBufferLike(file)) {
|
|
68
|
+
return file;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (isBlobLike(file)) {
|
|
72
|
+
return convertBlobToArrayBuffer(file);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (file instanceof Uint8Array) {
|
|
76
|
+
return convertUint8ArrayToArrayBuffer(file);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
throw new Error('Could not determine type of `file`');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Fetches a file
|
|
84
|
+
* @param {string} filename
|
|
85
|
+
* @returns {Promise<File>}
|
|
86
|
+
*/
|
|
87
|
+
function fetch(filename) {
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
xhr(
|
|
90
|
+
{
|
|
91
|
+
uri: makeLocalUrl(`/${filename}`),
|
|
92
|
+
responseType: 'blob',
|
|
93
|
+
},
|
|
94
|
+
(err, res, body) => {
|
|
95
|
+
if (err) {
|
|
96
|
+
reject(err);
|
|
97
|
+
} else {
|
|
98
|
+
body.name = body.name || filename;
|
|
99
|
+
resolve(body);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const FileShim = {
|
|
107
|
+
/**
|
|
108
|
+
* @param {string} filename
|
|
109
|
+
* @returns {Promise}
|
|
110
|
+
*/
|
|
111
|
+
fetch,
|
|
112
|
+
|
|
113
|
+
fetchWithoutMagic: fetch,
|
|
114
|
+
|
|
115
|
+
isBufferLike,
|
|
116
|
+
|
|
117
|
+
isBlobLike,
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @param {ArrayBuffer|Blob|Uint8Array} left
|
|
121
|
+
* @param {ArrayBuffer|Blob|Uint8Array} right
|
|
122
|
+
* @returns {Boolean}
|
|
123
|
+
*/
|
|
124
|
+
isMatchingFile: function isMatchingFile(left, right) {
|
|
125
|
+
return Promise.all([ensureArrayBuffer(left), ensureArrayBuffer(right)]).then((buffers) => {
|
|
126
|
+
const innerLeft = buffers[0];
|
|
127
|
+
const innerRight = buffers[1];
|
|
128
|
+
|
|
129
|
+
if (!FileShim.isBufferLike(innerLeft)) {
|
|
130
|
+
throw new Error('`innerLeft` must be a `Buffer`');
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (!FileShim.isBufferLike(innerRight)) {
|
|
134
|
+
throw new Error('`innerRight` must be a `Buffer`');
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (innerLeft.byteLength !== innerRight.byteLength) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const l = new Uint8Array(innerLeft);
|
|
142
|
+
const r = new Uint8Array(innerRight);
|
|
143
|
+
|
|
144
|
+
for (let i = 0; i < l.length; i += 1) {
|
|
145
|
+
if (l[i] !== r[i]) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return true;
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
module.exports = FileShim;
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/* istanbul ignore next */
|
|
6
|
-
if (typeof Promise === 'undefined') {
|
|
7
|
-
// eslint-disable-next-line global-require
|
|
8
|
-
require('es6-promise').polyfill();
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
module.exports = require('./file');
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/* istanbul ignore next */
|
|
6
|
+
if (typeof Promise === 'undefined') {
|
|
7
|
+
// eslint-disable-next-line global-require
|
|
8
|
+
require('es6-promise').polyfill();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
module.exports = require('./file');
|