Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: switch to md4 by default #168

Merged
merged 1 commit into from Mar 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 6 additions & 6 deletions README.md
Expand Up @@ -180,14 +180,14 @@ The following tokens are replaced in the `name` parameter:
* `[query]` the queryof the resource, i.e. `?foo=bar`
* `[emoji]` a random emoji representation of `options.content`
* `[emoji:<length>]` same as above, but with a customizable number of emojis
* `[contenthash]` the hash of `options.content` (Buffer) (by default it's the hex digest of the md5 hash)
* `[contenthash]` the hash of `options.content` (Buffer) (by default it's the hex digest of the md4 hash)
* `[<hashType>:contenthash:<digestType>:<length>]` optionally one can configure
* other `hashType`s, i. e. `sha1`, `md5`, `sha256`, `sha512`
* other `hashType`s, i. e. `sha1`, `md4`, `md5`, `sha256`, `sha512`
* other `digestType`s, i. e. `hex`, `base26`, `base32`, `base36`, `base49`, `base52`, `base58`, `base62`, `base64`
* and `length` the length in chars
* `[hash]` the hash of `options.content` (Buffer) (by default it's the hex digest of the md5 hash)
* `[hash]` the hash of `options.content` (Buffer) (by default it's the hex digest of the md4 hash)
* `[<hashType>:hash:<digestType>:<length>]` optionally one can configure
* other `hashType`s, i. e. `sha1`, `md5`, `sha256`, `sha512`
* other `hashType`s, i. e. `sha1`, `md4`, `md5`, `sha256`, `sha512`
* other `digestType`s, i. e. `hex`, `base26`, `base32`, `base36`, `base49`, `base52`, `base58`, `base62`, `base64`
* and `length` the length in chars
* `[N]` the N-th match obtained from matching the current file name against `options.regExp`
Expand Down Expand Up @@ -229,7 +229,7 @@ loaderUtils.interpolateName(loaderContext, "[emoji:4]", { content: ... });
// loaderContext.resourcePath = "/absolute/path/to/app/img/image.png"
loaderUtils.interpolateName(loaderContext, "[sha512:hash:base64:7].[ext]", { content: ... });
// => 2BKDTjl.png
// use sha512 hash instead of md5 and with only 7 chars of base64
// use sha512 hash instead of md4 and with only 7 chars of base64

// loaderContext.resourcePath = "/absolute/path/to/app/img/myself.png"
// loaderContext.query.name =
Expand Down Expand Up @@ -266,7 +266,7 @@ const digestString = loaderUtils.getHashDigest(buffer, hashType, digestType, max
```

* `buffer` the content that should be hashed
* `hashType` one of `sha1`, `md5`, `sha256`, `sha512` or any other node.js supported hash type
* `hashType` one of `sha1`, `md4`, `md5`, `sha256`, `sha512` or any other node.js supported hash type
* `digestType` one of `hex`, `base26`, `base32`, `base36`, `base49`, `base52`, `base58`, `base62`, `base64`
* `maxLength` the maximum length in chars

Expand Down
2 changes: 1 addition & 1 deletion lib/getHashDigest.js
Expand Up @@ -40,7 +40,7 @@ function encodeBufferToBase(buffer, base) {
}

function getHashDigest(buffer, hashType, digestType, maxLength) {
hashType = hashType || 'md5';
hashType = hashType || 'md4';
maxLength = maxLength || 9999;

const hash = require('crypto').createHash(hashType);
Expand Down
40 changes: 20 additions & 20 deletions test/interpolateName.test.js
Expand Up @@ -26,37 +26,37 @@ describe('interpolateName()', () => {
'/app/js/javascript.js',
'js/[hash].script.[ext]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js',
'js/a69899814931280e2f527219ad6ac754.script.js',
],
[
'/app/js/javascript.js',
'js/[contenthash].script.[ext]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js',
'js/a69899814931280e2f527219ad6ac754.script.js',
],
[
'/app/page.html',
'html-[hash:6].html',
'test content',
'html-9473fd.html',
'html-a69899.html',
],
[
'/app/page.html',
'html-[contenthash:6].html',
'test content',
'html-9473fd.html',
'html-a69899.html',
],
[
'/app/flash.txt',
'[hash]',
'test content',
'9473fdd0d880a43c21b7778d34872157',
'a69899814931280e2f527219ad6ac754',
],
[
'/app/flash.txt',
'[contenthash]',
'test content',
'9473fdd0d880a43c21b7778d34872157',
'a69899814931280e2f527219ad6ac754',
],
[
'/app/img/image.png',
Expand All @@ -74,13 +74,13 @@ describe('interpolateName()', () => {
'/app/dir/file.png',
'[path][name].[ext]?[hash]',
'test content',
'/app/dir/file.png?9473fdd0d880a43c21b7778d34872157',
'/app/dir/file.png?a69899814931280e2f527219ad6ac754',
],
[
'/app/dir/file.png',
'[path][name].[ext]?[contenthash]',
'test content',
'/app/dir/file.png?9473fdd0d880a43c21b7778d34872157',
'/app/dir/file.png?a69899814931280e2f527219ad6ac754',
],
[
'/vendor/test/images/loading.gif',
Expand Down Expand Up @@ -135,37 +135,37 @@ describe('interpolateName()', () => {
'/app/js/javascript.js?foo=bar',
'js/[hash].script.[ext][query]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js?foo=bar',
'js/a69899814931280e2f527219ad6ac754.script.js?foo=bar',
],
[
'/app/js/javascript.js?foo=bar&bar=baz',
'js/[hash].script.[ext][query]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js?foo=bar&bar=baz',
'js/a69899814931280e2f527219ad6ac754.script.js?foo=bar&bar=baz',
],
[
'/app/js/javascript.js?foo',
'js/[hash].script.[ext][query]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js?foo',
'js/a69899814931280e2f527219ad6ac754.script.js?foo',
],
[
'/app/js/javascript.js?',
'js/[hash].script.[ext][query]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js',
'js/a69899814931280e2f527219ad6ac754.script.js',
],
[
'/app/js/javascript.js?a',
'js/[hash].script.[ext][query]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js?a',
'js/a69899814931280e2f527219ad6ac754.script.js?a',
],
[
'/app/js/javascript.js?foo=bar#hash',
'js/[hash].script.[ext][query]',
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js?foo=bar',
'js/a69899814931280e2f527219ad6ac754.script.js?foo=bar',
],
[
'/app/js/javascript.js?foo=bar#hash',
Expand All @@ -176,7 +176,7 @@ describe('interpolateName()', () => {
return 'js/[hash].script.[ext][query]';
},
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js?foo=bar',
'js/a69899814931280e2f527219ad6ac754.script.js?foo=bar',
],
[
'/app/js/javascript.js?a',
Expand All @@ -187,7 +187,7 @@ describe('interpolateName()', () => {
return 'js/[hash].script.[ext][query]';
},
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js?a',
'js/a69899814931280e2f527219ad6ac754.script.js?a',
],
[
'/app/js/javascript.js',
Expand All @@ -198,7 +198,7 @@ describe('interpolateName()', () => {
return 'js/[hash].script.[ext][query]';
},
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js',
'js/a69899814931280e2f527219ad6ac754.script.js',
],
[
'/app/js/javascript.js?',
Expand All @@ -209,7 +209,7 @@ describe('interpolateName()', () => {
return 'js/[hash].script.[ext][query]';
},
'test content',
'js/9473fdd0d880a43c21b7778d34872157.script.js',
'js/a69899814931280e2f527219ad6ac754.script.js',
],
].forEach((test) => {
it('should interpolate ' + test[0] + ' ' + test[1], () => {
Expand Down Expand Up @@ -260,12 +260,12 @@ describe('interpolateName()', () => {
run([
[
[{}, '', { content: 'test string' }],
'6f8db599de986fab7a21625b7916589c.bin',
'2e06edd4f1623268c5a51730d8a0b2af.bin',
'should interpolate default tokens',
],
[
[{}, '[hash:base64]', { content: 'test string' }],
'2sm1pVmS8xuGJLCdWpJoRL',
'2LIG3oc1uBNmwOoL7kXgoK',
'should interpolate [hash] token with options',
],
[
Expand Down