@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.
@@ -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"}
@@ -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,+CAAuD;AAEvD,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"}
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;AAEvD,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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@superblocksteam/shared",
3
- "version": "0.9565.0",
3
+ "version": "0.9565.3",
4
4
  "description": "Superblocks Shared Resources",
5
5
  "repository": "https://github.com/superblocksteam/shared.git",
6
6
  "license": "Superblocks Community Software License",
@@ -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
+ });
@@ -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
  };