yummies 7.11.0 → 7.13.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/README.md +5 -87
- package/async.cjs +179 -48
- package/async.cjs.map +1 -1
- package/async.d.ts +125 -7
- package/async.js +180 -54
- package/async.js.map +1 -1
- package/chunk-CVq3Gv4J.cjs +50 -0
- package/chunk-YKewjYmz.js +37 -0
- package/common.cjs +48 -8
- package/common.cjs.map +1 -1
- package/common.d.ts +53 -2
- package/common.js +49 -11
- package/common.js.map +1 -1
- package/complex.cjs +275 -128
- package/complex.cjs.map +1 -1
- package/complex.d.ts +66 -0
- package/complex.js +275 -133
- package/complex.js.map +1 -1
- package/cookie.cjs +17 -7
- package/cookie.cjs.map +1 -1
- package/cookie.d.ts +26 -0
- package/cookie.js +18 -9
- package/cookie.js.map +1 -1
- package/css.cjs +163 -39
- package/css.cjs.map +1 -1
- package/css.d.ts +115 -6
- package/css.js +159 -41
- package/css.js.map +1 -1
- package/data.cjs +90 -55
- package/data.cjs.map +1 -1
- package/data.d.ts +50 -0
- package/data.js +91 -61
- package/data.js.map +1 -1
- package/date-time.cjs +594 -412
- package/date-time.cjs.map +1 -1
- package/date-time.d.ts +105 -0
- package/date-time.js +591 -421
- package/date-time.js.map +1 -1
- package/device.cjs +65 -23
- package/device.cjs.map +1 -1
- package/device.d.ts +49 -0
- package/device.js +66 -31
- package/device.js.map +1 -1
- package/encodings.cjs +275 -266
- package/encodings.cjs.map +1 -1
- package/encodings.d.ts +25 -0
- package/encodings.js +276 -268
- package/encodings.js.map +1 -1
- package/errors.cjs +36 -18
- package/errors.cjs.map +1 -1
- package/errors.d.ts +17 -0
- package/errors.js +35 -19
- package/errors.js.map +1 -1
- package/file.cjs +58 -24
- package/file.cjs.map +1 -1
- package/file.d.ts +32 -0
- package/file.js +59 -27
- package/file.js.map +1 -1
- package/format.cjs +125 -83
- package/format.cjs.map +1 -1
- package/format.d.ts +18 -0
- package/format.js +118 -82
- package/format.js.map +1 -1
- package/html.cjs +242 -137
- package/html.cjs.map +1 -1
- package/html.d.ts +81 -0
- package/html.js +239 -150
- package/html.js.map +1 -1
- package/id.cjs +90 -17
- package/id.cjs.map +1 -1
- package/id.d.ts +16 -0
- package/id.js +89 -24
- package/id.js.map +1 -1
- package/imports.cjs +57 -29
- package/imports.cjs.map +1 -1
- package/imports.d.ts +24 -0
- package/imports.js +56 -31
- package/imports.js.map +1 -1
- package/math.cjs +32 -6
- package/math.cjs.map +1 -1
- package/math.d.ts +33 -0
- package/math.js +33 -10
- package/math.js.map +1 -1
- package/media.cjs +291 -84
- package/media.cjs.map +1 -1
- package/media.d.ts +204 -2
- package/media.js +290 -93
- package/media.js.map +1 -1
- package/mobx.cjs +449 -193
- package/mobx.cjs.map +1 -1
- package/mobx.d.ts +108 -0
- package/mobx.js +447 -200
- package/mobx.js.map +1 -1
- package/ms.cjs +37 -10
- package/ms.cjs.map +1 -1
- package/ms.d.ts +16 -0
- package/ms.js +38 -13
- package/ms.js.map +1 -1
- package/number.cjs +29 -7
- package/number.cjs.map +1 -1
- package/number.d.ts +16 -0
- package/number.js +30 -9
- package/number.js.map +1 -1
- package/package.json +11 -3
- package/parser.cjs +117 -64
- package/parser.cjs.map +1 -1
- package/parser.d.ts +17 -0
- package/parser.js +111 -64
- package/parser.js.map +1 -1
- package/price.cjs +24 -18
- package/price.cjs.map +1 -1
- package/price.d.ts +24 -0
- package/price.js +25 -20
- package/price.js.map +1 -1
- package/random.cjs +95 -13
- package/random.cjs.map +1 -1
- package/random.d.ts +80 -0
- package/random.js +96 -22
- package/random.js.map +1 -1
- package/react.cjs +673 -214
- package/react.cjs.map +1 -1
- package/react.d.ts +21 -0
- package/react.js +674 -239
- package/react.js.map +1 -1
- package/sound.cjs +30 -9
- package/sound.cjs.map +1 -1
- package/sound.d.ts +16 -0
- package/sound.js +31 -11
- package/sound.js.map +1 -1
- package/storage.cjs +49 -50
- package/storage.cjs.map +1 -1
- package/storage.d.ts +24 -0
- package/storage.js +50 -53
- package/storage.js.map +1 -1
- package/text.cjs +67 -34
- package/text.cjs.map +1 -1
- package/text.d.ts +16 -0
- package/text.js +68 -37
- package/text.js.map +1 -1
- package/type-guard.cjs +292 -72
- package/type-guard.cjs.map +1 -1
- package/type-guard.d.ts +18 -0
- package/type-guard.js +288 -73
- package/type-guard.js.map +1 -1
- package/types.cjs +0 -2
- package/types.d.ts +41 -0
- package/types.global.cjs +0 -2
- package/types.global.d.ts +41 -0
- package/types.global.js +0 -2
- package/types.js +0 -2
- package/vibrate.cjs +47 -6
- package/vibrate.cjs.map +1 -1
- package/vibrate.d.ts +39 -1
- package/vibrate.js +48 -8
- package/vibrate.js.map +1 -1
- package/types.cjs.map +0 -1
- package/types.global.cjs.map +0 -1
- package/types.global.js.map +0 -1
- package/types.js.map +0 -1
package/text.cjs
CHANGED
|
@@ -1,38 +1,71 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
2
|
+
//#region src/text.ts
|
|
3
|
+
/**
|
|
4
|
+
* ---header-docs-section---
|
|
5
|
+
* # yummies/text
|
|
6
|
+
*
|
|
7
|
+
* ## Description
|
|
8
|
+
*
|
|
9
|
+
* Russian-centric text helpers: **declension** by count (одно слово / два слова / пять слов) and
|
|
10
|
+
* utilities for splitting long strings into wrapped lines. Pair with `yummies/date-time` for
|
|
11
|
+
* natural language timestamps and labels in Slavic locales.
|
|
12
|
+
*
|
|
13
|
+
* ## Usage
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { declension } from "yummies/text";
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Returns the correct word form based on the provided count.
|
|
21
|
+
* @example
|
|
22
|
+
* declension(1, ['slovo', 'slova', 'slov']) // 'slovo'
|
|
23
|
+
* @example
|
|
24
|
+
* declension(2, ['slovo', 'slova', 'slov']) // 'slova'
|
|
25
|
+
* @example
|
|
26
|
+
* declension(5, ['slovo', 'slova', 'slov']) // 'slov'
|
|
27
|
+
*/
|
|
28
|
+
var declension = (count, txt, cases = [
|
|
29
|
+
2,
|
|
30
|
+
0,
|
|
31
|
+
1,
|
|
32
|
+
1,
|
|
33
|
+
1,
|
|
34
|
+
2
|
|
35
|
+
]) => txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];
|
|
36
|
+
/**
|
|
37
|
+
* Splits text into lines with a maximum line length.
|
|
38
|
+
*/
|
|
39
|
+
var splitTextByLines = (text, lineLingth = 60) => {
|
|
40
|
+
const words = text.split(/\s+/).filter((word) => word !== "");
|
|
41
|
+
const lines = [];
|
|
42
|
+
let currentLine = "";
|
|
43
|
+
for (const word of words) {
|
|
44
|
+
if (word.length > lineLingth) {
|
|
45
|
+
if (currentLine !== "") {
|
|
46
|
+
lines.push(currentLine);
|
|
47
|
+
currentLine = "";
|
|
48
|
+
}
|
|
49
|
+
let start = 0;
|
|
50
|
+
while (start < word.length) {
|
|
51
|
+
const chunk = word.slice(start, start + lineLingth);
|
|
52
|
+
lines.push(chunk);
|
|
53
|
+
start += lineLingth;
|
|
54
|
+
}
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (currentLine === "") currentLine = word;
|
|
58
|
+
else if (currentLine.length + 1 + word.length <= lineLingth) currentLine += ` ${word}`;
|
|
59
|
+
else {
|
|
60
|
+
lines.push(currentLine);
|
|
61
|
+
currentLine = word;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (currentLine !== "" || lines.length === 0) lines.push(currentLine);
|
|
65
|
+
return lines;
|
|
35
66
|
};
|
|
67
|
+
//#endregion
|
|
36
68
|
exports.declension = declension;
|
|
37
69
|
exports.splitTextByLines = splitTextByLines;
|
|
38
|
-
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=text.cjs.map
|
package/text.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.cjs","sources":["../src/text.ts"],"sourcesContent":["/**\n * Returns the correct word form based on the provided count.\n * @example\n * declension(1, ['slovo', 'slova', 'slov']) // 'slovo'\n * @example\n * declension(2, ['slovo', 'slova', 'slov']) // 'slova'\n * @example\n * declension(5, ['slovo', 'slova', 'slov']) // 'slov'\n */\nexport const declension = (\n count: number,\n txt: readonly [one: string, two: string, five: string],\n cases = [2, 0, 1, 1, 1, 2],\n) =>\n txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n\n/**\n * Splits text into lines with a maximum line length.\n */\nexport const splitTextByLines = (\n text: string,\n lineLingth: number = 60,\n): string[] => {\n const words = text.split(/\\s+/).filter((word) => word !== '');\n const lines = [];\n let currentLine = '';\n\n for (const word of words) {\n if (word.length > lineLingth) {\n if (currentLine !== '') {\n lines.push(currentLine);\n currentLine = '';\n }\n\n let start = 0;\n while (start < word.length) {\n const chunk = word.slice(start, start + lineLingth);\n lines.push(chunk);\n start += lineLingth;\n }\n continue;\n }\n\n // Проверка возможности добавления слова в текущую строку\n if (currentLine === '') {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= lineLingth) {\n currentLine += ` ${word}`;\n } else {\n lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine !== '' || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines;\n};\n"],"
|
|
1
|
+
{"version":3,"file":"text.cjs","names":[],"sources":["../src/text.ts"],"sourcesContent":["/**\n * ---header-docs-section---\n * # yummies/text\n *\n * ## Description\n *\n * Russian-centric text helpers: **declension** by count (одно слово / два слова / пять слов) and\n * utilities for splitting long strings into wrapped lines. Pair with `yummies/date-time` for\n * natural language timestamps and labels in Slavic locales.\n *\n * ## Usage\n *\n * ```ts\n * import { declension } from \"yummies/text\";\n * ```\n */\n\n/**\n * Returns the correct word form based on the provided count.\n * @example\n * declension(1, ['slovo', 'slova', 'slov']) // 'slovo'\n * @example\n * declension(2, ['slovo', 'slova', 'slov']) // 'slova'\n * @example\n * declension(5, ['slovo', 'slova', 'slov']) // 'slov'\n */\nexport const declension = (\n count: number,\n txt: readonly [one: string, two: string, five: string],\n cases = [2, 0, 1, 1, 1, 2],\n) =>\n txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n\n/**\n * Splits text into lines with a maximum line length.\n */\nexport const splitTextByLines = (\n text: string,\n lineLingth: number = 60,\n): string[] => {\n const words = text.split(/\\s+/).filter((word) => word !== '');\n const lines = [];\n let currentLine = '';\n\n for (const word of words) {\n if (word.length > lineLingth) {\n if (currentLine !== '') {\n lines.push(currentLine);\n currentLine = '';\n }\n\n let start = 0;\n while (start < word.length) {\n const chunk = word.slice(start, start + lineLingth);\n lines.push(chunk);\n start += lineLingth;\n }\n continue;\n }\n\n // Проверка возможности добавления слова в текущую строку\n if (currentLine === '') {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= lineLingth) {\n currentLine += ` ${word}`;\n } else {\n lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine !== '' || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAa,cACX,OACA,KACA,QAAQ;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE,KAE1B,IAAI,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,QAAQ,IAAI,EAAE;;;;AAK7E,IAAa,oBACX,MACA,aAAqB,OACR;CACb,MAAM,QAAQ,KAAK,MAAM,MAAM,CAAC,QAAQ,SAAS,SAAS,GAAG;CAC7D,MAAM,QAAQ,EAAE;CAChB,IAAI,cAAc;AAElB,MAAK,MAAM,QAAQ,OAAO;AACxB,MAAI,KAAK,SAAS,YAAY;AAC5B,OAAI,gBAAgB,IAAI;AACtB,UAAM,KAAK,YAAY;AACvB,kBAAc;;GAGhB,IAAI,QAAQ;AACZ,UAAO,QAAQ,KAAK,QAAQ;IAC1B,MAAM,QAAQ,KAAK,MAAM,OAAO,QAAQ,WAAW;AACnD,UAAM,KAAK,MAAM;AACjB,aAAS;;AAEX;;AAIF,MAAI,gBAAgB,GAClB,eAAc;WACL,YAAY,SAAS,IAAI,KAAK,UAAU,WACjD,gBAAe,IAAI;OACd;AACL,SAAM,KAAK,YAAY;AACvB,iBAAc;;;AAIlB,KAAI,gBAAgB,MAAM,MAAM,WAAW,EACzC,OAAM,KAAK,YAAY;AAGzB,QAAO"}
|
package/text.d.ts
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ---header-docs-section---
|
|
3
|
+
* # yummies/text
|
|
4
|
+
*
|
|
5
|
+
* ## Description
|
|
6
|
+
*
|
|
7
|
+
* Russian-centric text helpers: **declension** by count (одно слово / два слова / пять слов) and
|
|
8
|
+
* utilities for splitting long strings into wrapped lines. Pair with `yummies/date-time` for
|
|
9
|
+
* natural language timestamps and labels in Slavic locales.
|
|
10
|
+
*
|
|
11
|
+
* ## Usage
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { declension } from "yummies/text";
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
1
17
|
/**
|
|
2
18
|
* Returns the correct word form based on the provided count.
|
|
3
19
|
* @example
|
package/text.js
CHANGED
|
@@ -1,38 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
//#region src/text.ts
|
|
2
|
+
/**
|
|
3
|
+
* ---header-docs-section---
|
|
4
|
+
* # yummies/text
|
|
5
|
+
*
|
|
6
|
+
* ## Description
|
|
7
|
+
*
|
|
8
|
+
* Russian-centric text helpers: **declension** by count (одно слово / два слова / пять слов) and
|
|
9
|
+
* utilities for splitting long strings into wrapped lines. Pair with `yummies/date-time` for
|
|
10
|
+
* natural language timestamps and labels in Slavic locales.
|
|
11
|
+
*
|
|
12
|
+
* ## Usage
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { declension } from "yummies/text";
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Returns the correct word form based on the provided count.
|
|
20
|
+
* @example
|
|
21
|
+
* declension(1, ['slovo', 'slova', 'slov']) // 'slovo'
|
|
22
|
+
* @example
|
|
23
|
+
* declension(2, ['slovo', 'slova', 'slov']) // 'slova'
|
|
24
|
+
* @example
|
|
25
|
+
* declension(5, ['slovo', 'slova', 'slov']) // 'slov'
|
|
26
|
+
*/
|
|
27
|
+
var declension = (count, txt, cases = [
|
|
28
|
+
2,
|
|
29
|
+
0,
|
|
30
|
+
1,
|
|
31
|
+
1,
|
|
32
|
+
1,
|
|
33
|
+
2
|
|
34
|
+
]) => txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];
|
|
35
|
+
/**
|
|
36
|
+
* Splits text into lines with a maximum line length.
|
|
37
|
+
*/
|
|
38
|
+
var splitTextByLines = (text, lineLingth = 60) => {
|
|
39
|
+
const words = text.split(/\s+/).filter((word) => word !== "");
|
|
40
|
+
const lines = [];
|
|
41
|
+
let currentLine = "";
|
|
42
|
+
for (const word of words) {
|
|
43
|
+
if (word.length > lineLingth) {
|
|
44
|
+
if (currentLine !== "") {
|
|
45
|
+
lines.push(currentLine);
|
|
46
|
+
currentLine = "";
|
|
47
|
+
}
|
|
48
|
+
let start = 0;
|
|
49
|
+
while (start < word.length) {
|
|
50
|
+
const chunk = word.slice(start, start + lineLingth);
|
|
51
|
+
lines.push(chunk);
|
|
52
|
+
start += lineLingth;
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (currentLine === "") currentLine = word;
|
|
57
|
+
else if (currentLine.length + 1 + word.length <= lineLingth) currentLine += ` ${word}`;
|
|
58
|
+
else {
|
|
59
|
+
lines.push(currentLine);
|
|
60
|
+
currentLine = word;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (currentLine !== "" || lines.length === 0) lines.push(currentLine);
|
|
64
|
+
return lines;
|
|
33
65
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=text.js.map
|
|
66
|
+
//#endregion
|
|
67
|
+
export { declension, splitTextByLines };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=text.js.map
|
package/text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sources":["../src/text.ts"],"sourcesContent":["/**\n * Returns the correct word form based on the provided count.\n * @example\n * declension(1, ['slovo', 'slova', 'slov']) // 'slovo'\n * @example\n * declension(2, ['slovo', 'slova', 'slov']) // 'slova'\n * @example\n * declension(5, ['slovo', 'slova', 'slov']) // 'slov'\n */\nexport const declension = (\n count: number,\n txt: readonly [one: string, two: string, five: string],\n cases = [2, 0, 1, 1, 1, 2],\n) =>\n txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n\n/**\n * Splits text into lines with a maximum line length.\n */\nexport const splitTextByLines = (\n text: string,\n lineLingth: number = 60,\n): string[] => {\n const words = text.split(/\\s+/).filter((word) => word !== '');\n const lines = [];\n let currentLine = '';\n\n for (const word of words) {\n if (word.length > lineLingth) {\n if (currentLine !== '') {\n lines.push(currentLine);\n currentLine = '';\n }\n\n let start = 0;\n while (start < word.length) {\n const chunk = word.slice(start, start + lineLingth);\n lines.push(chunk);\n start += lineLingth;\n }\n continue;\n }\n\n // Проверка возможности добавления слова в текущую строку\n if (currentLine === '') {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= lineLingth) {\n currentLine += ` ${word}`;\n } else {\n lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine !== '' || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines;\n};\n"],"
|
|
1
|
+
{"version":3,"file":"text.js","names":[],"sources":["../src/text.ts"],"sourcesContent":["/**\n * ---header-docs-section---\n * # yummies/text\n *\n * ## Description\n *\n * Russian-centric text helpers: **declension** by count (одно слово / два слова / пять слов) and\n * utilities for splitting long strings into wrapped lines. Pair with `yummies/date-time` for\n * natural language timestamps and labels in Slavic locales.\n *\n * ## Usage\n *\n * ```ts\n * import { declension } from \"yummies/text\";\n * ```\n */\n\n/**\n * Returns the correct word form based on the provided count.\n * @example\n * declension(1, ['slovo', 'slova', 'slov']) // 'slovo'\n * @example\n * declension(2, ['slovo', 'slova', 'slov']) // 'slova'\n * @example\n * declension(5, ['slovo', 'slova', 'slov']) // 'slov'\n */\nexport const declension = (\n count: number,\n txt: readonly [one: string, two: string, five: string],\n cases = [2, 0, 1, 1, 1, 2],\n) =>\n txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n\n/**\n * Splits text into lines with a maximum line length.\n */\nexport const splitTextByLines = (\n text: string,\n lineLingth: number = 60,\n): string[] => {\n const words = text.split(/\\s+/).filter((word) => word !== '');\n const lines = [];\n let currentLine = '';\n\n for (const word of words) {\n if (word.length > lineLingth) {\n if (currentLine !== '') {\n lines.push(currentLine);\n currentLine = '';\n }\n\n let start = 0;\n while (start < word.length) {\n const chunk = word.slice(start, start + lineLingth);\n lines.push(chunk);\n start += lineLingth;\n }\n continue;\n }\n\n // Проверка возможности добавления слова в текущую строку\n if (currentLine === '') {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= lineLingth) {\n currentLine += ` ${word}`;\n } else {\n lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine !== '' || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAa,cACX,OACA,KACA,QAAQ;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE,KAE1B,IAAI,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,QAAQ,IAAI,EAAE;;;;AAK7E,IAAa,oBACX,MACA,aAAqB,OACR;CACb,MAAM,QAAQ,KAAK,MAAM,MAAM,CAAC,QAAQ,SAAS,SAAS,GAAG;CAC7D,MAAM,QAAQ,EAAE;CAChB,IAAI,cAAc;AAElB,MAAK,MAAM,QAAQ,OAAO;AACxB,MAAI,KAAK,SAAS,YAAY;AAC5B,OAAI,gBAAgB,IAAI;AACtB,UAAM,KAAK,YAAY;AACvB,kBAAc;;GAGhB,IAAI,QAAQ;AACZ,UAAO,QAAQ,KAAK,QAAQ;IAC1B,MAAM,QAAQ,KAAK,MAAM,OAAO,QAAQ,WAAW;AACnD,UAAM,KAAK,MAAM;AACjB,aAAS;;AAEX;;AAIF,MAAI,gBAAgB,GAClB,eAAc;WACL,YAAY,SAAS,IAAI,KAAK,UAAU,WACjD,gBAAe,IAAI;OACd;AACL,SAAM,KAAK,YAAY;AACvB,iBAAc;;;AAIlB,KAAI,gBAAgB,MAAM,MAAM,WAAW,EACzC,OAAM,KAAK,YAAY;AAGzB,QAAO"}
|
package/type-guard.cjs
CHANGED
|
@@ -1,76 +1,296 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
//#region src/type-guard/_exports.ts
|
|
3
|
+
var _exports_exports = /* @__PURE__ */ require("./chunk-CVq3Gv4J.cjs").__exportAll({
|
|
4
|
+
isArray: () => isArray,
|
|
5
|
+
isBoolean: () => isBoolean,
|
|
6
|
+
isDefined: () => isDefined,
|
|
7
|
+
isElement: () => isElement,
|
|
8
|
+
isFunction: () => isFunction,
|
|
9
|
+
isInfinite: () => isInfinite,
|
|
10
|
+
isNaN: () => isNaN,
|
|
11
|
+
isNull: () => isNull,
|
|
12
|
+
isNumber: () => isNumber,
|
|
13
|
+
isObject: () => isObject,
|
|
14
|
+
isRegExp: () => isRegExp,
|
|
15
|
+
isString: () => isString,
|
|
16
|
+
isSymbol: () => isSymbol,
|
|
17
|
+
isUndefined: () => isUndefined
|
|
18
|
+
});
|
|
19
|
+
var TYPE = {
|
|
20
|
+
Null: "null",
|
|
21
|
+
Undefined: "undefined",
|
|
22
|
+
NaN: "nan",
|
|
23
|
+
Object: "[object Object]",
|
|
24
|
+
Array: "[object Array]",
|
|
25
|
+
String: "[object String]",
|
|
26
|
+
Number: "[object Number]",
|
|
27
|
+
Boolean: "[object Boolean]",
|
|
28
|
+
Function: "[object Function]",
|
|
29
|
+
AsyncFunction: "[object AsyncFunction]",
|
|
30
|
+
RegExp: "[object RegExp]",
|
|
31
|
+
Symbol: "[object Symbol]",
|
|
32
|
+
Infinite: "infinite",
|
|
33
|
+
Element: "element"
|
|
18
34
|
};
|
|
19
35
|
function getType(value) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const stringifiedValue = Object.prototype.toString.call(value);
|
|
30
|
-
if (stringifiedValue === TYPE.Number) {
|
|
31
|
-
if (Number.isNaN(value)) {
|
|
32
|
-
return TYPE.NaN;
|
|
33
|
-
}
|
|
34
|
-
if (!Number.isFinite(value)) {
|
|
35
|
-
return TYPE.Infinite;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return stringifiedValue;
|
|
36
|
+
if (value === void 0) return TYPE.Undefined;
|
|
37
|
+
if (value === null) return TYPE.Null;
|
|
38
|
+
if (value && (value.nodeType === 1 || value.nodeType === 9)) return TYPE.Element;
|
|
39
|
+
const stringifiedValue = Object.prototype.toString.call(value);
|
|
40
|
+
if (stringifiedValue === TYPE.Number) {
|
|
41
|
+
if (Number.isNaN(value)) return TYPE.NaN;
|
|
42
|
+
if (!Number.isFinite(value)) return TYPE.Infinite;
|
|
43
|
+
}
|
|
44
|
+
return stringifiedValue;
|
|
39
45
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
46
|
+
var createTypeGuard = (...types) => (value) => types.includes(getType(value));
|
|
47
|
+
/**
|
|
48
|
+
* Checks that a value is neither `null` nor `undefined`.
|
|
49
|
+
*
|
|
50
|
+
* @template T Value type without nullish branches.
|
|
51
|
+
* @param value Value to test.
|
|
52
|
+
* @returns `true` when the value is defined.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* isDefined(0); // true
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* isDefined(null); // false
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
var isDefined = (value) => value != null;
|
|
65
|
+
/**
|
|
66
|
+
* Checks whether a value is exactly `null`.
|
|
67
|
+
*
|
|
68
|
+
* @param value Value to test.
|
|
69
|
+
* @returns `true` when the value is `null`.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* isNull(null); // true
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* isNull(undefined); // false
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
var isNull = createTypeGuard(TYPE.Null);
|
|
82
|
+
/**
|
|
83
|
+
* Checks whether a value is exactly `undefined`.
|
|
84
|
+
*
|
|
85
|
+
* @param value Value to test.
|
|
86
|
+
* @returns `true` when the value is `undefined`.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* isUndefined(undefined); // true
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* isUndefined('value'); // false
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
var isUndefined = createTypeGuard(TYPE.Undefined);
|
|
99
|
+
/**
|
|
100
|
+
* Checks whether a value is a plain object.
|
|
101
|
+
*
|
|
102
|
+
* @param value Value to test.
|
|
103
|
+
* @returns `true` when the value matches `[object Object]`.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* isObject({ id: 1 }); // true
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```ts
|
|
112
|
+
* isObject([]); // false
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
var isObject = createTypeGuard(TYPE.Object);
|
|
116
|
+
/**
|
|
117
|
+
* Checks whether a value is an array.
|
|
118
|
+
*
|
|
119
|
+
* @param value Value to test.
|
|
120
|
+
* @returns `true` when the value is an array.
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* isArray([1, 2, 3]); // true
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* isArray({ length: 1 }); // false
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
var isArray = createTypeGuard(TYPE.Array);
|
|
133
|
+
/**
|
|
134
|
+
* Checks whether a value is a string object or primitive string.
|
|
135
|
+
*
|
|
136
|
+
* @param value Value to test.
|
|
137
|
+
* @returns `true` when the value is a string.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* isString('hello'); // true
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* isString(123); // false
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
var isString = createTypeGuard(TYPE.String);
|
|
150
|
+
/**
|
|
151
|
+
* Checks whether a value is a finite number.
|
|
152
|
+
*
|
|
153
|
+
* Unlike `isNaN` and `isInfinite`, this guard only matches regular numeric values.
|
|
154
|
+
*
|
|
155
|
+
* @param value Value to test.
|
|
156
|
+
* @returns `true` when the value is a non-NaN finite number.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* isNumber(123); // true
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```ts
|
|
165
|
+
* isNumber(Number.NaN); // false
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
var isNumber = createTypeGuard(TYPE.Number);
|
|
169
|
+
/**
|
|
170
|
+
* Checks whether a value is a boolean.
|
|
171
|
+
*
|
|
172
|
+
* @param value Value to test.
|
|
173
|
+
* @returns `true` when the value is a boolean.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```ts
|
|
177
|
+
* isBoolean(true); // true
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```ts
|
|
182
|
+
* isBoolean('true'); // false
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
var isBoolean = createTypeGuard(TYPE.Boolean);
|
|
186
|
+
/**
|
|
187
|
+
* Checks whether a value is a synchronous or asynchronous function.
|
|
188
|
+
*
|
|
189
|
+
* @param value Value to test.
|
|
190
|
+
* @returns `true` when the value is a function.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```ts
|
|
194
|
+
* isFunction(() => {}); // true
|
|
195
|
+
* ```
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```ts
|
|
199
|
+
* isFunction(async () => {}); // true
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
var isFunction = createTypeGuard(TYPE.Function, TYPE.AsyncFunction);
|
|
203
|
+
/**
|
|
204
|
+
* Checks whether a value is a regular expression.
|
|
205
|
+
*
|
|
206
|
+
* @param value Value to test.
|
|
207
|
+
* @returns `true` when the value is a `RegExp`.
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```ts
|
|
211
|
+
* isRegExp(/foo/); // true
|
|
212
|
+
* ```
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```ts
|
|
216
|
+
* isRegExp('foo'); // false
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
var isRegExp = createTypeGuard(TYPE.RegExp);
|
|
220
|
+
/**
|
|
221
|
+
* Checks whether a value looks like a DOM element or document node.
|
|
222
|
+
*
|
|
223
|
+
* @param value Value to test.
|
|
224
|
+
* @returns `true` when the value has an element-like node type.
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```ts
|
|
228
|
+
* isElement(document.body); // true
|
|
229
|
+
* ```
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```ts
|
|
233
|
+
* isElement({ nodeType: 3 }); // false
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
var isElement = createTypeGuard(TYPE.Element);
|
|
237
|
+
/**
|
|
238
|
+
* Checks whether a value is `NaN`.
|
|
239
|
+
*
|
|
240
|
+
* @param value Value to test.
|
|
241
|
+
* @returns `true` when the value is `NaN`.
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```ts
|
|
245
|
+
* isNaN(Number.NaN); // true
|
|
246
|
+
* ```
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```ts
|
|
250
|
+
* isNaN(5); // false
|
|
251
|
+
* ```
|
|
252
|
+
*/
|
|
253
|
+
var isNaN = createTypeGuard(TYPE.NaN);
|
|
254
|
+
/**
|
|
255
|
+
* Checks whether a value is positive or negative infinity.
|
|
256
|
+
*
|
|
257
|
+
* @param value Value to test.
|
|
258
|
+
* @returns `true` when the value is not finite.
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```ts
|
|
262
|
+
* isInfinite(Infinity); // true
|
|
263
|
+
* ```
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```ts
|
|
267
|
+
* isInfinite(10); // false
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
var isInfinite = createTypeGuard(TYPE.Infinite);
|
|
271
|
+
/**
|
|
272
|
+
* Checks whether a value is a symbol.
|
|
273
|
+
*
|
|
274
|
+
* @param value Value to test.
|
|
275
|
+
* @returns `true` when the value is a symbol.
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* ```ts
|
|
279
|
+
* isSymbol(Symbol('id')); // true
|
|
280
|
+
* ```
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* ```ts
|
|
284
|
+
* isSymbol('id'); // false
|
|
285
|
+
* ```
|
|
286
|
+
*/
|
|
287
|
+
var isSymbol = createTypeGuard(TYPE.Symbol);
|
|
288
|
+
//#endregion
|
|
289
|
+
Object.defineProperty(exports, "typeGuard", {
|
|
290
|
+
enumerable: true,
|
|
291
|
+
get: function() {
|
|
292
|
+
return _exports_exports;
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
//# sourceMappingURL=type-guard.cjs.map
|