@superblocksteam/shared 0.9565.0 → 0.9565.3
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/dist/utils/truncate.d.ts +1 -0
- package/dist/utils/truncate.d.ts.map +1 -1
- package/dist/utils/truncate.js +11 -1
- package/dist/utils/truncate.js.map +1 -1
- package/dist/utils/truncate.test.js +15 -0
- package/dist/utils/truncate.test.js.map +1 -1
- package/dist-esm/utils/truncate.d.ts +1 -0
- package/dist-esm/utils/truncate.d.ts.map +1 -1
- package/dist-esm/utils/truncate.js +9 -0
- package/dist-esm/utils/truncate.js.map +1 -1
- package/dist-esm/utils/truncate.test.js +16 -1
- package/dist-esm/utils/truncate.test.js.map +1 -1
- package/package.json +1 -1
- package/src/utils/truncate.test.ts +20 -1
- package/src/utils/truncate.ts +10 -0
package/dist/utils/truncate.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const truncatedJsonStringify: (obj: unknown, lengthLimit?: number, tailLength?: number) => string | undefined;
|
|
2
|
+
export declare const truncateString: (text: string, maxLength: number, omission?: string) => string;
|
|
2
3
|
export declare const truncateCommitId: (commitId: string) => string;
|
|
3
4
|
//# sourceMappingURL=truncate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,GAAI,KAAK,OAAO,EAAE,oBAAkB,EAAE,mBAAe,KAAG,MAAM,GAAG,SAgBnG,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAEnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,GAAI,KAAK,OAAO,EAAE,oBAAkB,EAAE,mBAAe,KAAG,MAAM,GAAG,SAgBnG,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,WAAW,MAAM,EAAE,iBAAgB,KAAG,MAQlF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAEnD,CAAC"}
|
package/dist/utils/truncate.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.truncateCommitId = exports.truncatedJsonStringify = void 0;
|
|
3
|
+
exports.truncateCommitId = exports.truncateString = exports.truncatedJsonStringify = void 0;
|
|
4
4
|
const truncatedJsonStringify = (obj, lengthLimit = 1000, tailLength = 10) => {
|
|
5
5
|
let stringified;
|
|
6
6
|
try {
|
|
@@ -18,6 +18,16 @@ const truncatedJsonStringify = (obj, lengthLimit = 1000, tailLength = 10) => {
|
|
|
18
18
|
stringified.substring(stringified.length - tailLength, stringified.length));
|
|
19
19
|
};
|
|
20
20
|
exports.truncatedJsonStringify = truncatedJsonStringify;
|
|
21
|
+
const truncateString = (text, maxLength, omission = '...') => {
|
|
22
|
+
if (maxLength <= omission.length) {
|
|
23
|
+
return omission.slice(0, maxLength);
|
|
24
|
+
}
|
|
25
|
+
if (text.length <= maxLength) {
|
|
26
|
+
return text;
|
|
27
|
+
}
|
|
28
|
+
return text.slice(0, maxLength - omission.length) + omission;
|
|
29
|
+
};
|
|
30
|
+
exports.truncateString = truncateString;
|
|
21
31
|
const truncateCommitId = (commitId) => {
|
|
22
32
|
return commitId.slice(0, 7);
|
|
23
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":";;;AAAO,MAAM,sBAAsB,GAAG,CAAC,GAAY,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,EAAsB,EAAE;IAC9G,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,CACL,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QAClD,iBAAiB;QACjB,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC;AAEK,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
|
|
1
|
+
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":";;;AAAO,MAAM,sBAAsB,GAAG,CAAC,GAAY,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,EAAsB,EAAE;IAC9G,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,CACL,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QAClD,iBAAiB;QACjB,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC;AAEK,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAE,QAAQ,GAAG,KAAK,EAAU,EAAE;IAC1F,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC/D,CAAC,CAAC;AARW,QAAA,cAAc,kBAQzB;AAEK,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
|
|
@@ -38,4 +38,19 @@ const truncate_js_1 = require("./truncate.js");
|
|
|
38
38
|
(0, vitest_1.expect)((0, truncate_js_1.truncatedJsonStringify)(null, 200)).toBe('null');
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
|
+
(0, vitest_1.describe)('truncate string', () => {
|
|
42
|
+
(0, vitest_1.test)('does not truncate if under limit', () => {
|
|
43
|
+
(0, vitest_1.expect)((0, truncate_js_1.truncateString)('hello', 10)).toBe('hello');
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.test)('truncates and appends omission when over limit', () => {
|
|
46
|
+
(0, vitest_1.expect)((0, truncate_js_1.truncateString)('abcdefghij', 8)).toBe('abcde...');
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.test)('supports custom omission', () => {
|
|
49
|
+
(0, vitest_1.expect)((0, truncate_js_1.truncateString)('abcdefghij', 8, '..')).toBe('abcdef..');
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.test)('handles very small maxLength values', () => {
|
|
52
|
+
(0, vitest_1.expect)((0, truncate_js_1.truncateString)('abcdefghij', 2)).toBe('..');
|
|
53
|
+
(0, vitest_1.expect)((0, truncate_js_1.truncateString)('abcdefghij', 0)).toBe('');
|
|
54
|
+
});
|
|
55
|
+
});
|
|
41
56
|
//# sourceMappingURL=truncate.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.test.js","sourceRoot":"","sources":["../../src/utils/truncate.test.ts"],"names":[],"mappings":";;AAAA,mCAAgD;AAChD,+
|
|
1
|
+
{"version":3,"file":"truncate.test.js","sourceRoot":"","sources":["../../src/utils/truncate.test.ts"],"names":[],"mappings":";;AAAA,mCAAgD;AAChD,+CAAuE;AAEvE,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAA,aAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,aAAa,GAAG;YACpB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;SACf,CAAC;QACF,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,+EAA+E,CAAC;QACjG,IAAA,eAAM,EAAC,IAAA,oCAAsB,EAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,aAAa,GAAG;YACpB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;SACf,CAAC;QACF,IAAA,eAAM,EAAC,IAAA,oCAAsB,EAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,IAAA,eAAM,EAAC,IAAA,oCAAsB,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAA,eAAM,EAAC,IAAA,oCAAsB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,aAAI,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,IAAA,eAAM,EAAC,IAAA,4BAAc,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,IAAA,eAAM,EAAC,IAAA,4BAAc,EAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,IAAA,eAAM,EAAC,IAAA,4BAAc,EAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC/C,IAAA,eAAM,EAAC,IAAA,4BAAc,EAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAA,eAAM,EAAC,IAAA,4BAAc,EAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const truncatedJsonStringify: (obj: unknown, lengthLimit?: number, tailLength?: number) => string | undefined;
|
|
2
|
+
export declare const truncateString: (text: string, maxLength: number, omission?: string) => string;
|
|
2
3
|
export declare const truncateCommitId: (commitId: string) => string;
|
|
3
4
|
//# sourceMappingURL=truncate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,GAAI,KAAK,OAAO,EAAE,oBAAkB,EAAE,mBAAe,KAAG,MAAM,GAAG,SAgBnG,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAEnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,GAAI,KAAK,OAAO,EAAE,oBAAkB,EAAE,mBAAe,KAAG,MAAM,GAAG,SAgBnG,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,WAAW,MAAM,EAAE,iBAAgB,KAAG,MAQlF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAEnD,CAAC"}
|
|
@@ -14,6 +14,15 @@ export const truncatedJsonStringify = (obj, lengthLimit = 1000, tailLength = 10)
|
|
|
14
14
|
'<… TRUNCATED …>' +
|
|
15
15
|
stringified.substring(stringified.length - tailLength, stringified.length));
|
|
16
16
|
};
|
|
17
|
+
export const truncateString = (text, maxLength, omission = '...') => {
|
|
18
|
+
if (maxLength <= omission.length) {
|
|
19
|
+
return omission.slice(0, maxLength);
|
|
20
|
+
}
|
|
21
|
+
if (text.length <= maxLength) {
|
|
22
|
+
return text;
|
|
23
|
+
}
|
|
24
|
+
return text.slice(0, maxLength - omission.length) + omission;
|
|
25
|
+
};
|
|
17
26
|
export const truncateCommitId = (commitId) => {
|
|
18
27
|
return commitId.slice(0, 7);
|
|
19
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAY,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,EAAsB,EAAE;IAC9G,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,CACL,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QAClD,iBAAiB;QACjB,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/utils/truncate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAY,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,EAAsB,EAAE;IAC9G,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,CACL,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QAClD,iBAAiB;QACjB,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAE,QAAQ,GAAG,KAAK,EAAU,EAAE;IAC1F,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, test, expect } from 'vitest';
|
|
2
|
-
import { truncatedJsonStringify } from './truncate.js';
|
|
2
|
+
import { truncatedJsonStringify, truncateString } from './truncate.js';
|
|
3
3
|
describe('truncate json', () => {
|
|
4
4
|
test('truncates if exceeds line limit', () => {
|
|
5
5
|
const objToTruncate = {
|
|
@@ -36,4 +36,19 @@ describe('truncate json', () => {
|
|
|
36
36
|
expect(truncatedJsonStringify(null, 200)).toBe('null');
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
|
+
describe('truncate string', () => {
|
|
40
|
+
test('does not truncate if under limit', () => {
|
|
41
|
+
expect(truncateString('hello', 10)).toBe('hello');
|
|
42
|
+
});
|
|
43
|
+
test('truncates and appends omission when over limit', () => {
|
|
44
|
+
expect(truncateString('abcdefghij', 8)).toBe('abcde...');
|
|
45
|
+
});
|
|
46
|
+
test('supports custom omission', () => {
|
|
47
|
+
expect(truncateString('abcdefghij', 8, '..')).toBe('abcdef..');
|
|
48
|
+
});
|
|
49
|
+
test('handles very small maxLength values', () => {
|
|
50
|
+
expect(truncateString('abcdefghij', 2)).toBe('..');
|
|
51
|
+
expect(truncateString('abcdefghij', 0)).toBe('');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
39
54
|
//# sourceMappingURL=truncate.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.test.js","sourceRoot":"","sources":["../../src/utils/truncate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"truncate.test.js","sourceRoot":"","sources":["../../src/utils/truncate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEvE,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,aAAa,GAAG;YACpB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;SACf,CAAC;QACF,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,+EAA+E,CAAC;QACjG,MAAM,CAAC,sBAAsB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,aAAa,GAAG;YACpB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;SACf,CAAC;QACF,MAAM,CAAC,sBAAsB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, test, expect } from 'vitest';
|
|
2
|
-
import { truncatedJsonStringify } from './truncate.js';
|
|
2
|
+
import { truncatedJsonStringify, truncateString } from './truncate.js';
|
|
3
3
|
|
|
4
4
|
describe('truncate json', () => {
|
|
5
5
|
test('truncates if exceeds line limit', () => {
|
|
@@ -39,3 +39,22 @@ describe('truncate json', () => {
|
|
|
39
39
|
expect(truncatedJsonStringify(null, 200)).toBe('null');
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
|
+
|
|
43
|
+
describe('truncate string', () => {
|
|
44
|
+
test('does not truncate if under limit', () => {
|
|
45
|
+
expect(truncateString('hello', 10)).toBe('hello');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('truncates and appends omission when over limit', () => {
|
|
49
|
+
expect(truncateString('abcdefghij', 8)).toBe('abcde...');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('supports custom omission', () => {
|
|
53
|
+
expect(truncateString('abcdefghij', 8, '..')).toBe('abcdef..');
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test('handles very small maxLength values', () => {
|
|
57
|
+
expect(truncateString('abcdefghij', 2)).toBe('..');
|
|
58
|
+
expect(truncateString('abcdefghij', 0)).toBe('');
|
|
59
|
+
});
|
|
60
|
+
});
|
package/src/utils/truncate.ts
CHANGED
|
@@ -16,6 +16,16 @@ export const truncatedJsonStringify = (obj: unknown, lengthLimit = 1000, tailLen
|
|
|
16
16
|
);
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
export const truncateString = (text: string, maxLength: number, omission = '...'): string => {
|
|
20
|
+
if (maxLength <= omission.length) {
|
|
21
|
+
return omission.slice(0, maxLength);
|
|
22
|
+
}
|
|
23
|
+
if (text.length <= maxLength) {
|
|
24
|
+
return text;
|
|
25
|
+
}
|
|
26
|
+
return text.slice(0, maxLength - omission.length) + omission;
|
|
27
|
+
};
|
|
28
|
+
|
|
19
29
|
export const truncateCommitId = (commitId: string): string => {
|
|
20
30
|
return commitId.slice(0, 7);
|
|
21
31
|
};
|