@n8n/utils 1.10.0 → 1.11.0
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/string/truncate.cjs
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/string/truncate.ts
|
|
2
2
|
var truncate = (text, length = 30) => text.length > length ? text.slice(0, length) + "..." : text;
|
|
3
|
+
function truncateBeforeLast(text, maxLength) {
|
|
4
|
+
const chars = [];
|
|
5
|
+
const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
6
|
+
for (const { segment } of segmenter.segment(text)) {
|
|
7
|
+
chars.push(segment);
|
|
8
|
+
}
|
|
9
|
+
if (chars.length <= maxLength) {
|
|
10
|
+
return text;
|
|
11
|
+
}
|
|
12
|
+
const lastWhitespaceIndex = chars.findLastIndex((ch) => ch.match(/^\s+$/));
|
|
13
|
+
const lastWordIndex = lastWhitespaceIndex + 1;
|
|
14
|
+
const lastWord = chars.slice(lastWordIndex);
|
|
15
|
+
const ellipsis = "\u2026";
|
|
16
|
+
const ellipsisLength = ellipsis.length;
|
|
17
|
+
if (lastWord.length < 15) {
|
|
18
|
+
const charsToRemove = chars.length - maxLength + ellipsisLength;
|
|
19
|
+
const indexBeforeLastWord = lastWordIndex;
|
|
20
|
+
const keepLength = indexBeforeLastWord - charsToRemove;
|
|
21
|
+
if (keepLength > 0) {
|
|
22
|
+
return chars.slice(0, keepLength).join("") + ellipsis + chars.slice(indexBeforeLastWord).join("");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return chars.slice(0, maxLength - 5 - ellipsisLength).join("") + ellipsis + chars.slice(-5).join("");
|
|
26
|
+
}
|
|
3
27
|
|
|
4
28
|
|
|
5
|
-
|
|
29
|
+
|
|
30
|
+
exports.truncate = truncate; exports.truncateBeforeLast = truncateBeforeLast;
|
|
6
31
|
//# sourceMappingURL=truncate.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/n8n/n8n/packages/@n8n/utils/dist/string/truncate.cjs","../../src/string/truncate.ts"],"names":[],"mappings":"AAAA;ACAO,IAAM,SAAA,EAAW,CAAC,IAAA,EAAc,OAAA,EAAS,EAAA,EAAA,GAC/C,IAAA,CAAK,OAAA,EAAS,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,MAAM,EAAA,EAAI,MAAA,EAAQ,IAAA;
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/n8n/n8n/packages/@n8n/utils/dist/string/truncate.cjs","../../src/string/truncate.ts"],"names":[],"mappings":"AAAA;ACAO,IAAM,SAAA,EAAW,CAAC,IAAA,EAAc,OAAA,EAAS,EAAA,EAAA,GAC/C,IAAA,CAAK,OAAA,EAAS,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,MAAM,EAAA,EAAI,MAAA,EAAQ,IAAA;AAQjD,SAAS,kBAAA,CAAmB,IAAA,EAAc,SAAA,EAA2B;AAC3E,EAAA,MAAM,MAAA,EAAkB,CAAC,CAAA;AAEzB,EAAA,MAAM,UAAA,EAAY,IAAI,IAAA,CAAK,SAAA,CAAU,KAAA,CAAA,EAAW,EAAE,WAAA,EAAa,WAAW,CAAC,CAAA;AAE3E,EAAA,IAAA,CAAA,MAAW,EAAE,QAAQ,EAAA,GAAK,SAAA,CAAU,OAAA,CAAQ,IAAI,CAAA,EAAG;AAClD,IAAA,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAAA,EACnB;AAEA,EAAA,GAAA,CAAI,KAAA,CAAM,OAAA,GAAU,SAAA,EAAW;AAC9B,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,MAAM,oBAAA,EAAsB,KAAA,CAAM,aAAA,CAAc,CAAC,EAAA,EAAA,GAAO,EAAA,CAAG,KAAA,CAAM,OAAO,CAAC,CAAA;AACzE,EAAA,MAAM,cAAA,EAAgB,oBAAA,EAAsB,CAAA;AAC5C,EAAA,MAAM,SAAA,EAAW,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA;AAC1C,EAAA,MAAM,SAAA,EAAW,QAAA;AACjB,EAAA,MAAM,eAAA,EAAiB,QAAA,CAAS,MAAA;AAEhC,EAAA,GAAA,CAAI,QAAA,CAAS,OAAA,EAAS,EAAA,EAAI;AACzB,IAAA,MAAM,cAAA,EAAgB,KAAA,CAAM,OAAA,EAAS,UAAA,EAAY,cAAA;AACjD,IAAA,MAAM,oBAAA,EAAsB,aAAA;AAC5B,IAAA,MAAM,WAAA,EAAa,oBAAA,EAAsB,aAAA;AAEzC,IAAA,GAAA,CAAI,WAAA,EAAa,CAAA,EAAG;AACnB,MAAA,OACC,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,UAAU,CAAA,CAAE,IAAA,CAAK,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,CAAM,KAAA,CAAM,mBAAmB,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,IAE3F;AAAA,EACD;AAEA,EAAA,OACC,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,UAAA,EAAY,EAAA,EAAI,cAAc,CAAA,CAAE,IAAA,CAAK,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,CAAM,KAAA,CAAM,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAE9F;ADjBA;AACE;AACA;AACF,6EAAC","file":"/home/runner/work/n8n/n8n/packages/@n8n/utils/dist/string/truncate.cjs","sourcesContent":[null,"export const truncate = (text: string, length = 30): string =>\n\ttext.length > length ? text.slice(0, length) + '...' : text;\n\n/**\n * Replace part of given text with ellipsis following the rules below:\n *\n * - Remove chars just before the last word, as long as the last word is under 15 chars\n * - Otherwise preserve the last 5 chars of the name and remove chars before that\n */\nexport function truncateBeforeLast(text: string, maxLength: number): string {\n\tconst chars: string[] = [];\n\n\tconst segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n\n\tfor (const { segment } of segmenter.segment(text)) {\n\t\tchars.push(segment);\n\t}\n\n\tif (chars.length <= maxLength) {\n\t\treturn text;\n\t}\n\n\tconst lastWhitespaceIndex = chars.findLastIndex((ch) => ch.match(/^\\s+$/));\n\tconst lastWordIndex = lastWhitespaceIndex + 1;\n\tconst lastWord = chars.slice(lastWordIndex);\n\tconst ellipsis = '…';\n\tconst ellipsisLength = ellipsis.length;\n\n\tif (lastWord.length < 15) {\n\t\tconst charsToRemove = chars.length - maxLength + ellipsisLength;\n\t\tconst indexBeforeLastWord = lastWordIndex;\n\t\tconst keepLength = indexBeforeLastWord - charsToRemove;\n\n\t\tif (keepLength > 0) {\n\t\t\treturn (\n\t\t\t\tchars.slice(0, keepLength).join('') + ellipsis + chars.slice(indexBeforeLastWord).join('')\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\tchars.slice(0, maxLength - 5 - ellipsisLength).join('') + ellipsis + chars.slice(-5).join('')\n\t);\n}\n"]}
|
package/dist/string/truncate.js
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
// src/string/truncate.ts
|
|
2
2
|
var truncate = (text, length = 30) => text.length > length ? text.slice(0, length) + "..." : text;
|
|
3
|
+
function truncateBeforeLast(text, maxLength) {
|
|
4
|
+
const chars = [];
|
|
5
|
+
const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
6
|
+
for (const { segment } of segmenter.segment(text)) {
|
|
7
|
+
chars.push(segment);
|
|
8
|
+
}
|
|
9
|
+
if (chars.length <= maxLength) {
|
|
10
|
+
return text;
|
|
11
|
+
}
|
|
12
|
+
const lastWhitespaceIndex = chars.findLastIndex((ch) => ch.match(/^\s+$/));
|
|
13
|
+
const lastWordIndex = lastWhitespaceIndex + 1;
|
|
14
|
+
const lastWord = chars.slice(lastWordIndex);
|
|
15
|
+
const ellipsis = "\u2026";
|
|
16
|
+
const ellipsisLength = ellipsis.length;
|
|
17
|
+
if (lastWord.length < 15) {
|
|
18
|
+
const charsToRemove = chars.length - maxLength + ellipsisLength;
|
|
19
|
+
const indexBeforeLastWord = lastWordIndex;
|
|
20
|
+
const keepLength = indexBeforeLastWord - charsToRemove;
|
|
21
|
+
if (keepLength > 0) {
|
|
22
|
+
return chars.slice(0, keepLength).join("") + ellipsis + chars.slice(indexBeforeLastWord).join("");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return chars.slice(0, maxLength - 5 - ellipsisLength).join("") + ellipsis + chars.slice(-5).join("");
|
|
26
|
+
}
|
|
3
27
|
export {
|
|
4
|
-
truncate
|
|
28
|
+
truncate,
|
|
29
|
+
truncateBeforeLast
|
|
5
30
|
};
|
|
6
31
|
//# sourceMappingURL=truncate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/string/truncate.ts"],"sourcesContent":["export const truncate = (text: string, length = 30): string =>\n\ttext.length > length ? text.slice(0, length) + '...' : text;\n"],"mappings":";AAAO,IAAM,WAAW,CAAC,MAAc,SAAS,OAC/C,KAAK,SAAS,SAAS,KAAK,MAAM,GAAG,MAAM,IAAI,QAAQ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/string/truncate.ts"],"sourcesContent":["export const truncate = (text: string, length = 30): string =>\n\ttext.length > length ? text.slice(0, length) + '...' : text;\n\n/**\n * Replace part of given text with ellipsis following the rules below:\n *\n * - Remove chars just before the last word, as long as the last word is under 15 chars\n * - Otherwise preserve the last 5 chars of the name and remove chars before that\n */\nexport function truncateBeforeLast(text: string, maxLength: number): string {\n\tconst chars: string[] = [];\n\n\tconst segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n\n\tfor (const { segment } of segmenter.segment(text)) {\n\t\tchars.push(segment);\n\t}\n\n\tif (chars.length <= maxLength) {\n\t\treturn text;\n\t}\n\n\tconst lastWhitespaceIndex = chars.findLastIndex((ch) => ch.match(/^\\s+$/));\n\tconst lastWordIndex = lastWhitespaceIndex + 1;\n\tconst lastWord = chars.slice(lastWordIndex);\n\tconst ellipsis = '…';\n\tconst ellipsisLength = ellipsis.length;\n\n\tif (lastWord.length < 15) {\n\t\tconst charsToRemove = chars.length - maxLength + ellipsisLength;\n\t\tconst indexBeforeLastWord = lastWordIndex;\n\t\tconst keepLength = indexBeforeLastWord - charsToRemove;\n\n\t\tif (keepLength > 0) {\n\t\t\treturn (\n\t\t\t\tchars.slice(0, keepLength).join('') + ellipsis + chars.slice(indexBeforeLastWord).join('')\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\tchars.slice(0, maxLength - 5 - ellipsisLength).join('') + ellipsis + chars.slice(-5).join('')\n\t);\n}\n"],"mappings":";AAAO,IAAM,WAAW,CAAC,MAAc,SAAS,OAC/C,KAAK,SAAS,SAAS,KAAK,MAAM,GAAG,MAAM,IAAI,QAAQ;AAQjD,SAAS,mBAAmB,MAAc,WAA2B;AAC3E,QAAM,QAAkB,CAAC;AAEzB,QAAM,YAAY,IAAI,KAAK,UAAU,QAAW,EAAE,aAAa,WAAW,CAAC;AAE3E,aAAW,EAAE,QAAQ,KAAK,UAAU,QAAQ,IAAI,GAAG;AAClD,UAAM,KAAK,OAAO;AAAA,EACnB;AAEA,MAAI,MAAM,UAAU,WAAW;AAC9B,WAAO;AAAA,EACR;AAEA,QAAM,sBAAsB,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC;AACzE,QAAM,gBAAgB,sBAAsB;AAC5C,QAAM,WAAW,MAAM,MAAM,aAAa;AAC1C,QAAM,WAAW;AACjB,QAAM,iBAAiB,SAAS;AAEhC,MAAI,SAAS,SAAS,IAAI;AACzB,UAAM,gBAAgB,MAAM,SAAS,YAAY;AACjD,UAAM,sBAAsB;AAC5B,UAAM,aAAa,sBAAsB;AAEzC,QAAI,aAAa,GAAG;AACnB,aACC,MAAM,MAAM,GAAG,UAAU,EAAE,KAAK,EAAE,IAAI,WAAW,MAAM,MAAM,mBAAmB,EAAE,KAAK,EAAE;AAAA,IAE3F;AAAA,EACD;AAEA,SACC,MAAM,MAAM,GAAG,YAAY,IAAI,cAAc,EAAE,KAAK,EAAE,IAAI,WAAW,MAAM,MAAM,EAAE,EAAE,KAAK,EAAE;AAE9F;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/utils",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.11.0",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"LICENSE.md",
|
|
8
8
|
"LICENSE_EE.md"
|
|
9
9
|
],
|
|
10
10
|
"exports": {
|
|
11
|
+
"./dist/*": {
|
|
12
|
+
"types": "./dist/*.d.ts",
|
|
13
|
+
"import": "./dist/*.js",
|
|
14
|
+
"require": "./dist/*.cjs"
|
|
15
|
+
},
|
|
11
16
|
"./*": {
|
|
12
17
|
"types": "./dist/*.d.ts",
|
|
13
18
|
"import": "./dist/*.js",
|
|
@@ -21,9 +26,9 @@
|
|
|
21
26
|
"typescript": "^5.8.2",
|
|
22
27
|
"vite": "^6.3.5",
|
|
23
28
|
"vitest": "^3.1.3",
|
|
29
|
+
"@n8n/eslint-config": "0.0.1",
|
|
24
30
|
"@n8n/typescript-config": "1.2.0",
|
|
25
|
-
"@n8n/vitest-config": "1.
|
|
26
|
-
"@n8n/eslint-config": "0.0.1"
|
|
31
|
+
"@n8n/vitest-config": "1.3.0"
|
|
27
32
|
},
|
|
28
33
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
29
34
|
"homepage": "https://n8n.io",
|