Chore: Remove md5 dependency and use uuid/v5 instead (#34192)

This commit is contained in:
kay delaney 2021-05-18 13:42:57 +01:00 committed by GitHub
parent 9f9666415b
commit 8cfbee1e11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 49 deletions

View File

@ -105,12 +105,11 @@
"@types/hoist-non-react-statics": "3.3.1", "@types/hoist-non-react-statics": "3.3.1",
"@types/is-hotkey": "0.1.1", "@types/is-hotkey": "0.1.1",
"@types/jest": "26.0.15", "@types/jest": "26.0.15",
"@types/jsurl": "^1.2.28",
"@types/jquery": "3.3.38", "@types/jquery": "3.3.38",
"@types/jsurl": "^1.2.28",
"@types/lodash": "4.14.149", "@types/lodash": "4.14.149",
"@types/logfmt": "^1.2.1", "@types/logfmt": "^1.2.1",
"@types/lru-cache": "^5.1.0", "@types/lru-cache": "^5.1.0",
"@types/md5": "^2.1.33",
"@types/mousetrap": "1.6.3", "@types/mousetrap": "1.6.3",
"@types/node": "13.7.0", "@types/node": "13.7.0",
"@types/papaparse": "5.2.0", "@types/papaparse": "5.2.0",
@ -264,7 +263,6 @@
"lodash": "4.17.21", "lodash": "4.17.21",
"logfmt": "^1.3.2", "logfmt": "^1.3.2",
"lru-cache": "^5.1.1", "lru-cache": "^5.1.1",
"md5": "^2.2.1",
"memoize-one": "5.1.1", "memoize-one": "5.1.1",
"moment": "2.29.1", "moment": "2.29.1",
"moment-timezone": "0.5.33", "moment-timezone": "0.5.33",

View File

@ -48,7 +48,7 @@ describe('Live Stream Tests', () => {
expect(last).toEqual({ expect(last).toEqual({
ts: '2019-08-28T20:50:40.118Z', ts: '2019-08-28T20:50:40.118Z',
tsNs: '1567025440118944705', tsNs: '1567025440118944705',
id: '8c50d09800ce8dda69a2ff25405c9f65_A', id: '25d81461-a66f-53ff-98d5-e39515af4735_A',
line: 'Kittens', line: 'Kittens',
labels: { filename: '/var/log/sntpc.log' }, labels: { filename: '/var/log/sntpc.log' },
}); });

View File

@ -72,10 +72,10 @@ describe('loki result transformer', () => {
expect(data[0].fields[1].labels!['foo']).toEqual('bar'); expect(data[0].fields[1].labels!['foo']).toEqual('bar');
expect(data[0].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.021Z'); expect(data[0].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.021Z');
expect(data[0].fields[1].values.get(0)).toEqual(streamResult[0].values[0][1]); expect(data[0].fields[1].values.get(0)).toEqual(streamResult[0].values[0][1]);
expect(data[0].fields[2].values.get(0)).toEqual('2b431b8a98b80b3b2c2f4cd2444ae6cb'); expect(data[0].fields[2].values.get(0)).toEqual('4b79cb43-81ce-52f7-b1e9-a207fff144dc');
expect(data[1].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.031Z'); expect(data[1].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.031Z');
expect(data[1].fields[1].values.get(0)).toEqual(streamResult[1].values[0][1]); expect(data[1].fields[1].values.get(0)).toEqual(streamResult[1].values[0][1]);
expect(data[1].fields[2].values.get(0)).toEqual('75d73d66cff40f9d1a1f2d5a0bf295d0'); expect(data[1].fields[2].values.get(0)).toEqual('73d144f6-57f2-5a45-a49c-eb998e2006b1');
}); });
it('should always generate unique ids for logs', () => { it('should always generate unique ids for logs', () => {
@ -102,18 +102,18 @@ describe('loki result transformer', () => {
const data = streamResultWithDuplicateLogs.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream)); const data = streamResultWithDuplicateLogs.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream));
expect(data[0].fields[2].values.get(0)).toEqual('65cee200875f58ee1430d8bd2e8b74e7'); expect(data[0].fields[2].values.get(0)).toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa');
expect(data[0].fields[2].values.get(1)).toEqual('65cee200875f58ee1430d8bd2e8b74e7_1'); expect(data[0].fields[2].values.get(1)).toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_1');
expect(data[0].fields[2].values.get(2)).not.toEqual('65cee200875f58ee1430d8bd2e8b74e7_2'); expect(data[0].fields[2].values.get(2)).not.toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_2');
expect(data[0].fields[2].values.get(3)).toEqual('65cee200875f58ee1430d8bd2e8b74e7_2'); expect(data[0].fields[2].values.get(3)).toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_2');
expect(data[1].fields[2].values.get(0)).not.toEqual('65cee200875f58ee1430d8bd2e8b74e7_3'); expect(data[1].fields[2].values.get(0)).not.toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_3');
}); });
it('should append refId to the unique ids if refId is provided', () => { it('should append refId to the unique ids if refId is provided', () => {
const data = streamResult.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream, false, 'B')); const data = streamResult.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream, false, 'B'));
expect(data.length).toBe(2); expect(data.length).toBe(2);
expect(data[0].fields[2].values.get(0)).toEqual('2b431b8a98b80b3b2c2f4cd2444ae6cb_B'); expect(data[0].fields[2].values.get(0)).toEqual('4b79cb43-81ce-52f7-b1e9-a207fff144dc_B');
expect(data[1].fields[2].values.get(0)).toEqual('75d73d66cff40f9d1a1f2d5a0bf295d0_B'); expect(data[1].fields[2].values.get(0)).toEqual('73d144f6-57f2-5a45-a49c-eb998e2006b1_B');
}); });
}); });
@ -172,7 +172,7 @@ describe('loki result transformer', () => {
line: line:
't=2020-02-12T15:04:51+0000 lvl=info msg="Starting Grafana" logger=server version=6.7.0-pre commit=6f09bc9fb4 branch=issue-21929 compiled=2020-02-11T20:43:28+0000', 't=2020-02-12T15:04:51+0000 lvl=info msg="Starting Grafana" logger=server version=6.7.0-pre commit=6f09bc9fb4 branch=issue-21929 compiled=2020-02-11T20:43:28+0000',
labels: { filename: '/var/log/grafana/grafana.log' }, labels: { filename: '/var/log/grafana/grafana.log' },
id: '19e8e093d70122b3b53cb6e24efd6e2d', id: '07f0607c-04ee-51bd-8a0c-fc0f85d37489',
}); });
}); });
@ -205,12 +205,12 @@ describe('loki result transformer', () => {
data.refId = 'C'; data.refId = 'C';
ResultTransformer.appendResponseToBufferedData(tailResponse, data); ResultTransformer.appendResponseToBufferedData(tailResponse, data);
expect(data.get(0).id).toEqual('870e4d105741bdfc2c67904ee480d4f3_C'); expect(data.get(0).id).toEqual('75e72b25-8589-5f99-8d10-ccb5eb27c1b4_C');
expect(data.get(1).id).toEqual('870e4d105741bdfc2c67904ee480d4f3_1_C'); expect(data.get(1).id).toEqual('75e72b25-8589-5f99-8d10-ccb5eb27c1b4_1_C');
expect(data.get(2).id).toEqual('707e4ec2b842f389dbb993438505856d_C'); expect(data.get(2).id).toEqual('3ca99d6b-3ab5-5970-93c0-eb3c9449088e_C');
expect(data.get(3).id).toEqual('78f044015a58fad3e257a855b167d85e_C'); expect(data.get(3).id).toEqual('ec9bea1d-70cb-556c-8519-d5d6ae18c004_C');
expect(data.get(4).id).toEqual('870e4d105741bdfc2c67904ee480d4f3_2_C'); expect(data.get(4).id).toEqual('75e72b25-8589-5f99-8d10-ccb5eb27c1b4_2_C');
expect(data.get(5).id).toEqual('707e4ec2b842f389dbb993438505856d_1_C'); expect(data.get(5).id).toEqual('3ca99d6b-3ab5-5970-93c0-eb3c9449088e_1_C');
}); });
}); });

View File

@ -1,5 +1,5 @@
import { capitalize, groupBy, isEmpty } from 'lodash'; import { capitalize, groupBy, isEmpty } from 'lodash';
import md5 from 'md5'; import { v5 as uuidv5 } from 'uuid';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { import {
@ -38,6 +38,8 @@ import {
LokiStats, LokiStats,
} from './types'; } from './types';
const UUID_NAMESPACE = '6ec946da-0f49-47a8-983a-1d76d17e7c92';
/** /**
* Transforms LokiStreamResult structure into a dataFrame. Used when doing standard queries and newer version of Loki. * Transforms LokiStreamResult structure into a dataFrame. Used when doing standard queries and newer version of Loki.
*/ */
@ -155,7 +157,7 @@ export function appendResponseToBufferedData(response: LokiTailResponse, data: M
function createUid(ts: string, labelsString: string, line: string, usedUids: any, refId?: string): string { function createUid(ts: string, labelsString: string, line: string, usedUids: any, refId?: string): string {
// Generate id as hashed nanosecond timestamp, labels and line (this does not have to be unique) // Generate id as hashed nanosecond timestamp, labels and line (this does not have to be unique)
let id = md5(`${ts}_${labelsString}_${line}`); let id = uuidv5(`${ts}_${labelsString}_${line}`, UUID_NAMESPACE);
// Check if generated id is unique // Check if generated id is unique
// If not and we've already used it, append it's count after it // If not and we've already used it, append it's count after it

View File

@ -4440,13 +4440,6 @@
resolved "https://registry.yarnpkg.com/@types/marked/-/marked-1.1.0.tgz#53509b5f127e0c05c19176fcf1d743a41e00ff19" resolved "https://registry.yarnpkg.com/@types/marked/-/marked-1.1.0.tgz#53509b5f127e0c05c19176fcf1d743a41e00ff19"
integrity sha512-j8XXj6/l9kFvCwMyVqozznqpd/nk80krrW+QiIJN60Uu9gX5Pvn4/qPJ2YngQrR3QREPwmrE1f9/EWKVTFzoEw== integrity sha512-j8XXj6/l9kFvCwMyVqozznqpd/nk80krrW+QiIJN60Uu9gX5Pvn4/qPJ2YngQrR3QREPwmrE1f9/EWKVTFzoEw==
"@types/md5@^2.1.33":
version "2.1.33"
resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.1.33.tgz#8c8dba30df4ad0e92296424f08c4898dd808e8df"
integrity sha512-8+X960EtKLoSblhauxLKy3zzotagjoj3Jt1Tx9oaxUdZEPIBl+mkrUz6PNKpzJgkrKSN9YgkWTA29c0KnLshmA==
dependencies:
"@types/node" "*"
"@types/mdast@^3.0.0": "@types/mdast@^3.0.0":
version "3.0.3" version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
@ -7220,11 +7213,6 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
charenc@~0.0.1:
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
check-more-types@^2.24.0: check-more-types@^2.24.0:
version "2.24.0" version "2.24.0"
resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
@ -8159,11 +8147,6 @@ cross-spawn@^5.0.1:
shebang-command "^1.2.0" shebang-command "^1.2.0"
which "^1.2.9" which "^1.2.9"
crypt@~0.0.1:
version "0.0.2"
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
crypto-browserify@^3.11.0: crypto-browserify@^3.11.0:
version "3.12.0" version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@ -12661,7 +12644,7 @@ is-boolean-object@^1.0.1, is-boolean-object@^1.1.0:
dependencies: dependencies:
call-bind "^1.0.0" call-bind "^1.0.0"
is-buffer@^1.1.5, is-buffer@~1.1.1: is-buffer@^1.1.5:
version "1.1.6" version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
@ -14834,15 +14817,6 @@ md5.js@^1.3.4:
inherits "^2.0.1" inherits "^2.0.1"
safe-buffer "^5.1.2" safe-buffer "^5.1.2"
md5@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=
dependencies:
charenc "~0.0.1"
crypt "~0.0.1"
is-buffer "~1.1.1"
mdast-squeeze-paragraphs@^4.0.0: mdast-squeeze-paragraphs@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97"