1 | /*
|
2 | * Copyright 2018 Adobe. All rights reserved.
|
3 | * This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
4 | * you may not use this file except in compliance with the License. You may obtain a copy
|
5 | * of the License at http://www.apache.org/licenses/LICENSE-2.0
|
6 | *
|
7 | * Unless required by applicable law or agreed to in writing, software distributed under
|
8 | * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
9 | * OF ANY KIND, either express or implied. See the License for the specific language
|
10 | * governing permissions and limitations under the License.
|
11 | */
|
12 | const crypto = require('crypto');
|
13 | const fs = require('fs');
|
14 |
|
15 | function md5(string, encoding = 'hex') {
|
16 | return crypto
|
17 | .createHash('md5')
|
18 | .update(string)
|
19 | .digest(encoding);
|
20 | }
|
21 |
|
22 | md5.file = async function md5File(filename) {
|
23 | return new Promise((resolve, reject) => {
|
24 | const hash = crypto.createHash('md5').setEncoding('hex');
|
25 | fs.createReadStream(filename)
|
26 | .on('data', (data) => {
|
27 | hash.update(data);
|
28 | })
|
29 | .on('end', () => {
|
30 | resolve(hash.digest('hex'));
|
31 | })
|
32 | .on('error', reject);
|
33 | });
|
34 | };
|
35 |
|
36 | module.exports = md5;
|