@visulima/string 2.0.6 → 3.0.0-alpha.10
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/CHANGELOG.md +157 -0
- package/LICENSE.md +429 -1
- package/README.md +105 -24
- package/dist/align-text.d.ts +7 -10
- package/dist/align-text.js +7 -5
- package/dist/case/camel-case.d.ts +3 -5
- package/dist/case/camel-case.js +7 -7
- package/dist/case/capital-case.d.ts +3 -5
- package/dist/case/capital-case.js +3 -3
- package/dist/case/constant-case.d.ts +3 -5
- package/dist/case/dot-case.d.ts +3 -5
- package/dist/case/flat-case.d.ts +3 -5
- package/dist/case/flip-case.d.ts +4 -7
- package/dist/case/flip-case.js +8 -2
- package/dist/case/identify-case.d.ts +3 -5
- package/dist/case/identify-case.js +2 -1
- package/dist/case/index.d.ts +23 -25
- package/dist/case/index.js +1 -1
- package/dist/case/kebab-case.d.ts +6 -9
- package/dist/case/kebab-case.js +3 -3
- package/dist/case/lower-first.d.ts +3 -5
- package/dist/case/no-case.d.ts +3 -5
- package/dist/case/pascal-case.d.ts +3 -5
- package/dist/case/pascal-case.js +3 -3
- package/dist/case/pascal-snake-case.d.ts +3 -5
- package/dist/case/path-case.d.ts +3 -5
- package/dist/case/sentence-case.d.ts +3 -5
- package/dist/case/sentence-case.js +7 -7
- package/dist/case/snake-case.d.ts +3 -5
- package/dist/case/split-by-case.d.ts +11 -14
- package/dist/case/split-by-case.js +171 -52
- package/dist/case/title-case.d.ts +3 -5
- package/dist/case/title-case.js +3 -5
- package/dist/case/train-case.d.ts +3 -5
- package/dist/case/train-case.js +1 -1
- package/dist/case/upper-first.d.ts +3 -5
- package/dist/closest-string.d.ts +3 -5
- package/dist/closest-string.js +5 -8
- package/dist/compare-similarity.d.ts +3 -5
- package/dist/compare-similarity.js +2 -2
- package/dist/get-string-truncated-width.d.ts +18 -20
- package/dist/get-string-truncated-width.js +2 -33
- package/dist/get-string-width.d.ts +2 -5
- package/dist/index.d.ts +49 -45
- package/dist/index.js +12 -4
- package/dist/native-string-types.d.ts +145 -128
- package/dist/outdent.d.ts +9 -11
- package/dist/outdent.js +8 -16
- package/dist/packem_shared/closestN-DUsjgiXb.js +25 -0
- package/dist/packem_shared/{constants-CTzC6Gjg.js → constants-BsZS5f0z.js} +1 -1
- package/dist/packem_shared/countOccurrences-CS9XprQN.js +22 -0
- package/dist/packem_shared/direction-C9gfWWTK.js +16 -0
- package/dist/packem_shared/eastAsianWidthType-SD3YniiT.js +20 -0
- package/dist/packem_shared/excerpt-COsVNttN.js +1502 -0
- package/dist/packem_shared/indent-D3DSCa6s.js +33 -0
- package/dist/packem_shared/isFullwidthCodePoint-IFXZxNjq.js +10 -0
- package/dist/packem_shared/{joinSegments-CuU8RGpP.js → joinSegments-CvxSgKz0.js} +1 -1
- package/dist/packem_shared/lookup-BE8lEqy4.js +104 -0
- package/dist/packem_shared/lru-cache.d-BsP6kbVJ.d.ts +13 -0
- package/dist/packem_shared/{normalize-german-eszett-DEB8-ZPT.js → normalize-german-eszett-4p3yKEzn.js} +2 -1
- package/dist/packem_shared/redent-DSb1IJWn.js +8 -0
- package/dist/packem_shared/{replaceString-vYvRBMfC.js → replaceString-Ce8X2ZQ-.js} +19 -17
- package/dist/packem_shared/stripIndent-D_TRjxZ_.js +20 -0
- package/dist/packem_shared/{transliterate-CYnKKT8f.js → transliterate-CKt9VK7D.js} +10 -12
- package/dist/packem_shared/{types-Daae0hGf.d.ts → types.d-BVNv675q.d.ts} +18 -21
- package/dist/packem_shared/{types-CfPsw9ix.d.ts → types.d-DfgbcNKh.d.ts} +19 -21
- package/dist/slice.d.ts +5 -8
- package/dist/slice.js +9 -7
- package/dist/slugify.d.ts +1 -3
- package/dist/slugify.js +1 -1
- package/dist/test/utils.d.ts +20 -22
- package/dist/test/utils.js +2 -2
- package/dist/test/vitest.d.ts +3 -6
- package/dist/truncate.d.ts +7 -10
- package/dist/truncate.js +49 -26
- package/dist/utilities.d.ts +2 -4
- package/dist/utilities.js +6 -8
- package/dist/word-similarity-sort.d.ts +3 -5
- package/dist/word-wrap.d.ts +9 -11
- package/dist/word-wrap.js +37 -35
- package/package.json +3 -3
- package/dist/packem_shared/closestN-BREy4E7C.js +0 -19
- package/dist/packem_shared/lru-cache-B_t27XwI.d.ts +0 -14
package/README.md
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
<!-- START_PACKAGE_OG_IMAGE_PLACEHOLDER -->
|
|
2
|
+
|
|
3
|
+
<a href="https://www.anolilab.com/open-source" align="center">
|
|
4
|
+
|
|
5
|
+
<img src="__assets__/package-og.svg" alt="string" />
|
|
6
|
+
|
|
7
|
+
</a>
|
|
8
|
+
|
|
9
|
+
<h3 align="center">Functions for manipulating strings.</h3>
|
|
10
|
+
|
|
11
|
+
<!-- END_PACKAGE_OG_IMAGE_PLACEHOLDER -->
|
|
7
12
|
|
|
8
13
|
<br />
|
|
9
14
|
|
|
10
15
|
<div align="center">
|
|
11
16
|
|
|
12
|
-
[![typescript-image]
|
|
17
|
+
[![typescript-image][typescript-badge]][typescript-url]
|
|
18
|
+
[![mit licence][license-badge]][license]
|
|
19
|
+
[![npm downloads][npm-downloads-badge]][npm-downloads]
|
|
20
|
+
[![Chat][chat-badge]][chat]
|
|
21
|
+
[![PRs Welcome][prs-welcome-badge]][prs-welcome]
|
|
13
22
|
|
|
14
23
|
</div>
|
|
15
24
|
|
|
@@ -46,13 +55,23 @@
|
|
|
46
55
|
- Split by separators (foo-bar → ["foo", "bar"])
|
|
47
56
|
- Preserve known acronyms (XMLHttpRequest → ["XML", "Http", "Request"])
|
|
48
57
|
- **Text Indentation**:
|
|
49
|
-
- `
|
|
50
|
-
-
|
|
58
|
+
- `indent`: Add indentation to each line in a string
|
|
59
|
+
- `stripIndent`: Strip common leading whitespace from all lines
|
|
60
|
+
- `dedent`: Strip indent and trim leading/trailing blank lines
|
|
61
|
+
- `redent`: Strip redundant indentation and re-indent
|
|
62
|
+
- `outdent`: Remove indentation from template literals
|
|
51
63
|
- Normalizes newlines across platforms
|
|
52
64
|
- Configurable trimming behavior
|
|
65
|
+
- **String Analysis**:
|
|
66
|
+
- `countOccurrences`: Count occurrences of a substring in a string
|
|
67
|
+
- `direction`: Detect text direction (left-to-right, right-to-left, or neutral)
|
|
68
|
+
- Unicode-aware and handles multi-byte characters
|
|
53
69
|
- **String Width Calculation**:
|
|
54
70
|
- `getStringWidth`: Calculate visual width of strings with Unicode support
|
|
55
71
|
- `getStringTruncatedWidth`: Width calculation with smart truncation
|
|
72
|
+
- `isFullwidthCodePoint`: Check if a code point is fullwidth
|
|
73
|
+
- `eastAsianWidth`: Get character width (1 or 2) for a code point
|
|
74
|
+
- `eastAsianWidthType`: Get East Asian Width category for a code point
|
|
56
75
|
- Handles CJK characters, emojis, ANSI codes, and more
|
|
57
76
|
- Configurable character width settings
|
|
58
77
|
- Support for zero-width and combining characters
|
|
@@ -124,6 +143,25 @@
|
|
|
124
143
|
|
|
125
144
|
---
|
|
126
145
|
|
|
146
|
+
## Documentation
|
|
147
|
+
|
|
148
|
+
Comprehensive documentation is available in the [`docs/`](./docs/) directory. The documentation includes:
|
|
149
|
+
|
|
150
|
+
- **[Getting Started](./docs/index.mdx)** - Overview and quick start guide
|
|
151
|
+
- **[Installation](./docs/installation.mdx)** - Installation instructions and setup
|
|
152
|
+
- **[Case Conversion](./docs/case-conversion.mdx)** - Case conversion utilities (camelCase, PascalCase, etc.)
|
|
153
|
+
- **[String Manipulation](./docs/string-manipulation.mdx)** - Text formatting, truncation, wrapping, and alignment
|
|
154
|
+
- **[Slugification](./docs/slugification.mdx)** - URL slug generation and transliteration
|
|
155
|
+
- **[String Width](./docs/string-width.mdx)** - Visual width calculation for Unicode strings
|
|
156
|
+
- **[String Similarity](./docs/string-similarity.mdx)** - String comparison and similarity algorithms
|
|
157
|
+
- **[Testing](./docs/testing.mdx)** - Testing utilities for ANSI strings
|
|
158
|
+
- **[TypeScript](./docs/typescript.mdx)** - TypeScript support and type definitions
|
|
159
|
+
- **[API Reference](./docs/api.mdx)** - Complete API reference
|
|
160
|
+
|
|
161
|
+
The documentation follows the [fumadocs.dev](https://fumadocs.dev) markdown format and can be integrated into your documentation site.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
127
165
|
## Install
|
|
128
166
|
|
|
129
167
|
```sh
|
|
@@ -364,6 +402,42 @@ splitByCase("🎉HappyBirthday🎂", {
|
|
|
364
402
|
// ['🎉', 'Happy', 'Birthday', '🎂']
|
|
365
403
|
```
|
|
366
404
|
|
|
405
|
+
### String Analysis
|
|
406
|
+
|
|
407
|
+
The `countOccurrences` function counts how many times a substring appears in a string, with full Unicode support:
|
|
408
|
+
|
|
409
|
+
```typescript
|
|
410
|
+
import { countOccurrences } from "@visulima/string";
|
|
411
|
+
|
|
412
|
+
// Basic counting
|
|
413
|
+
countOccurrences("foo", "o"); // 2
|
|
414
|
+
countOccurrences("fo fooo fo", "o"); // 5
|
|
415
|
+
|
|
416
|
+
// Unicode support
|
|
417
|
+
countOccurrences("a🤔b🤔c", "🤔"); // 2
|
|
418
|
+
|
|
419
|
+
// Empty string handling
|
|
420
|
+
countOccurrences("", "f"); // 0
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
The `direction` function detects text direction for internationalization:
|
|
424
|
+
|
|
425
|
+
```typescript
|
|
426
|
+
import { direction } from "@visulima/string";
|
|
427
|
+
|
|
428
|
+
// Left-to-right languages
|
|
429
|
+
direction("english"); // 'ltr'
|
|
430
|
+
direction("Hello World"); // 'ltr'
|
|
431
|
+
|
|
432
|
+
// Right-to-left languages
|
|
433
|
+
direction("الجملة"); // 'rtl' (Arabic)
|
|
434
|
+
direction("נ"); // 'rtl' (Hebrew)
|
|
435
|
+
|
|
436
|
+
// Neutral (numbers, symbols, empty)
|
|
437
|
+
direction("123"); // 'neutral'
|
|
438
|
+
direction(""); // 'neutral'
|
|
439
|
+
```
|
|
440
|
+
|
|
367
441
|
### Case Conversion Functions
|
|
368
442
|
|
|
369
443
|
#### camelCase
|
|
@@ -806,19 +880,16 @@ paddedStr.trimEnd<typeof paddedStr>(); // type: ' hello'
|
|
|
806
880
|
These enhanced types provide several benefits:
|
|
807
881
|
|
|
808
882
|
1. **Compile-Time Type Safety**:
|
|
809
|
-
|
|
810
883
|
- Catch type errors before runtime
|
|
811
884
|
- Get accurate type inference for method results
|
|
812
885
|
- Validate string operations at compile time
|
|
813
886
|
|
|
814
887
|
2. **Better IDE Support**:
|
|
815
|
-
|
|
816
888
|
- Improved autocompletion
|
|
817
889
|
- More accurate type hints
|
|
818
890
|
- Better refactoring support
|
|
819
891
|
|
|
820
892
|
3. **Type-Level String Manipulation**:
|
|
821
|
-
|
|
822
893
|
- Perform string operations at the type level
|
|
823
894
|
- Get literal type results for string operations
|
|
824
895
|
- Chain operations with type safety
|
|
@@ -1063,7 +1134,7 @@ const alignedEmojiText = alignText(emojiText, {
|
|
|
1063
1134
|
align: "center",
|
|
1064
1135
|
split: "*",
|
|
1065
1136
|
pad: "-",
|
|
1066
|
-
stringWidthOptions: { emojiWidth: 2 } // Crucial for correct width calculation with emojis
|
|
1137
|
+
stringWidthOptions: { emojiWidth: 2 }, // Crucial for correct width calculation with emojis
|
|
1067
1138
|
});
|
|
1068
1139
|
// alignedEmojiText (string output, exact padding depends on calculated widths):
|
|
1069
1140
|
// "--Line1😊---\nWiderLine😊😊"
|
|
@@ -1073,10 +1144,10 @@ const alignedEmojiText = alignText(emojiText, {
|
|
|
1073
1144
|
|
|
1074
1145
|
The `alignText` function accepts an `options` object of type `AlignTextOptions` with the following properties:
|
|
1075
1146
|
|
|
1076
|
-
-
|
|
1077
|
-
-
|
|
1078
|
-
-
|
|
1079
|
-
-
|
|
1147
|
+
- `align?: "center" | "left" | "right"`: Specifies the alignment direction. Defaults to `"center"`. Note: `left` alignment primarily ensures line splitting if `text` is a single string; it doesn't typically add padding on the left unless the string was not pre-split.
|
|
1148
|
+
- `pad?: string`: The character or string to use for padding. Defaults to `" "`.
|
|
1149
|
+
- `split?: string`: The character or string used to split the input `text` into multiple lines if it's provided as a single string. Defaults to `"\n"`.
|
|
1150
|
+
- `stringWidthOptions?: StringWidthOptions`: Options passed to an internal string width calculation function (similar to `getStringWidth`) for determining the visual width of each line. This is important for accurately handling ANSI escape codes, CJK characters, emojis, etc. Refer to the `getStringWidth` documentation for details on `StringWidthOptions`.
|
|
1080
1151
|
|
|
1081
1152
|
## Related
|
|
1082
1153
|
|
|
@@ -1112,13 +1183,23 @@ If you would like to help, take a look at the [list of issues](https://github.co
|
|
|
1112
1183
|
- [Daniel Bannert](https://github.com/prisis)
|
|
1113
1184
|
- [All Contributors](https://github.com/visulima/visulima/graphs/contributors)
|
|
1114
1185
|
|
|
1186
|
+
## Made with ❤️ at Anolilab
|
|
1187
|
+
|
|
1188
|
+
This is an open source project and will always remain free to use. If you think it's cool, please star it 🌟. [Anolilab](https://www.anolilab.com/open-source) is a Development and AI Studio. Contact us at [hello@anolilab.com](mailto:hello@anolilab.com) if you need any help with these technologies or just want to say hi!
|
|
1189
|
+
|
|
1115
1190
|
## License
|
|
1116
1191
|
|
|
1117
|
-
The visulima string is open-sourced software licensed under the [MIT][license
|
|
1192
|
+
The visulima string is open-sourced software licensed under the [MIT][license]
|
|
1193
|
+
|
|
1194
|
+
<!-- badges -->
|
|
1118
1195
|
|
|
1119
|
-
[
|
|
1120
|
-
[
|
|
1121
|
-
[
|
|
1122
|
-
[
|
|
1123
|
-
[
|
|
1124
|
-
[
|
|
1196
|
+
[license-badge]: https://img.shields.io/npm/l/@visulima/string?style=for-the-badge
|
|
1197
|
+
[license]: https://github.com/visulima/visulima/blob/main/LICENSE
|
|
1198
|
+
[npm-downloads-badge]: https://img.shields.io/npm/dm/@visulima/string?style=for-the-badge
|
|
1199
|
+
[npm-downloads]: https://www.npmjs.com/package/@visulima/string
|
|
1200
|
+
[prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge
|
|
1201
|
+
[prs-welcome]: https://github.com/visulima/visulima/blob/main/.github/CONTRIBUTING.md
|
|
1202
|
+
[chat-badge]: https://img.shields.io/discord/932323359193186354.svg?style=for-the-badge
|
|
1203
|
+
[chat]: https://discord.gg/TtFJY8xkFK
|
|
1204
|
+
[typescript-badge]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
|
|
1205
|
+
[typescript-url]: https://www.typescriptlang.org/
|
package/dist/align-text.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { StringWidthOptions } from
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { StringWidthOptions } from "./get-string-width.js";
|
|
2
|
+
import "./get-string-truncated-width.js";
|
|
4
3
|
type AlignTextOptions = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
align?: "center" | "left" | "right";
|
|
5
|
+
pad?: string;
|
|
6
|
+
split?: string;
|
|
7
|
+
stringWidthOptions?: StringWidthOptions;
|
|
9
8
|
};
|
|
10
9
|
declare const alignText: (text: string[] | string, options?: AlignTextOptions) => string[] | string;
|
|
11
|
-
|
|
12
|
-
export { alignText };
|
|
13
|
-
export type { AlignTextOptions };
|
|
10
|
+
export { AlignTextOptions, alignText };
|
package/dist/align-text.js
CHANGED
|
@@ -11,14 +11,16 @@ const alignText = (text, options = {}) => {
|
|
|
11
11
|
const pad = options.pad ?? " ";
|
|
12
12
|
const widthDiffFunction = align === "right" ? fullDiff : halfDiff;
|
|
13
13
|
let returnString = false;
|
|
14
|
-
|
|
14
|
+
let lines;
|
|
15
|
+
if (Array.isArray(text)) {
|
|
16
|
+
lines = text;
|
|
17
|
+
} else {
|
|
15
18
|
returnString = true;
|
|
16
|
-
|
|
19
|
+
lines = text.split(split);
|
|
17
20
|
}
|
|
18
21
|
let width;
|
|
19
22
|
let maxWidth = 0;
|
|
20
|
-
|
|
21
|
-
input = String(input);
|
|
23
|
+
const result = lines.map((input) => {
|
|
22
24
|
width = getStringWidth(input, options.stringWidthOptions);
|
|
23
25
|
maxWidth = Math.max(width, maxWidth);
|
|
24
26
|
return {
|
|
@@ -26,7 +28,7 @@ const alignText = (text, options = {}) => {
|
|
|
26
28
|
width
|
|
27
29
|
};
|
|
28
30
|
}).map((object) => Array.from({ length: widthDiffFunction(maxWidth, object.width) + 1 }).join(pad) + object.str);
|
|
29
|
-
return returnString ?
|
|
31
|
+
return returnString ? result.join(split) : result;
|
|
30
32
|
};
|
|
31
33
|
|
|
32
34
|
export { alignText };
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, a as CamelCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, a as CamelCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const camelCase: <T extends string = string>(value?: T, options?: CaseOptions) => CamelCase<T>;
|
|
6
|
-
|
|
7
5
|
export { camelCase as default };
|
package/dist/case/camel-case.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { R as RE_FAST_ANSI } from '../packem_shared/constants-
|
|
1
|
+
import { R as RE_FAST_ANSI } from '../packem_shared/constants-BsZS5f0z.js';
|
|
2
2
|
import LRUCache from '../packem_shared/LRUCache-3r3SovvR.js';
|
|
3
3
|
import lowerFirst from './lower-first.js';
|
|
4
4
|
import { splitByCase } from './split-by-case.js';
|
|
5
5
|
import upperFirst from './upper-first.js';
|
|
6
6
|
import { g as generateCacheKey } from '../packem_shared/generate-cache-key-DdayDfjV.js';
|
|
7
|
-
import joinSegments from '../packem_shared/joinSegments-
|
|
8
|
-
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-
|
|
7
|
+
import joinSegments from '../packem_shared/joinSegments-CvxSgKz0.js';
|
|
8
|
+
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-4p3yKEzn.js';
|
|
9
9
|
|
|
10
10
|
const defaultCacheStore = new LRUCache(1e3);
|
|
11
11
|
const camelCase = (value, options) => {
|
|
@@ -36,13 +36,13 @@ const camelCase = (value, options) => {
|
|
|
36
36
|
if (options?.handleAnsi && RE_FAST_ANSI.test(word)) {
|
|
37
37
|
return word;
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const normalized = options?.locale?.startsWith("de") ? normalizeGermanEszett(word) : word;
|
|
40
|
+
const lowered = options?.locale ? normalized.toLocaleLowerCase(options.locale) : normalized.toLowerCase();
|
|
41
41
|
if (firstWord) {
|
|
42
42
|
firstWord = false;
|
|
43
|
-
return lowerFirst(
|
|
43
|
+
return lowerFirst(lowered, options);
|
|
44
44
|
}
|
|
45
|
-
return upperFirst(
|
|
45
|
+
return upperFirst(lowered, options);
|
|
46
46
|
}),
|
|
47
47
|
""
|
|
48
48
|
);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, b as CapitalCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, b as CapitalCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const capitalCase: <T extends string = string>(value?: T, options?: CaseOptions) => CapitalCase<T>;
|
|
6
|
-
|
|
7
5
|
export { capitalCase as default };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { R as RE_FAST_ANSI } from '../packem_shared/constants-
|
|
1
|
+
import { R as RE_FAST_ANSI } from '../packem_shared/constants-BsZS5f0z.js';
|
|
2
2
|
import LRUCache from '../packem_shared/LRUCache-3r3SovvR.js';
|
|
3
3
|
import { splitByCase } from './split-by-case.js';
|
|
4
4
|
import upperFirst from './upper-first.js';
|
|
5
5
|
import { g as generateCacheKey } from '../packem_shared/generate-cache-key-DdayDfjV.js';
|
|
6
|
-
import joinSegments from '../packem_shared/joinSegments-
|
|
7
|
-
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-
|
|
6
|
+
import joinSegments from '../packem_shared/joinSegments-CvxSgKz0.js';
|
|
7
|
+
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-4p3yKEzn.js';
|
|
8
8
|
|
|
9
9
|
const defaultCacheStore = new LRUCache(1e3);
|
|
10
10
|
const capitalCase = (value, options) => {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, c as ConstantCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, c as ConstantCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const constantCase: <T extends string = string>(value?: T, options?: CaseOptions) => ConstantCase<T>;
|
|
6
|
-
|
|
7
5
|
export { constantCase as default };
|
package/dist/case/dot-case.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, D as DotCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, D as DotCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const dotCase: <T extends string = string>(value?: T, options?: CaseOptions) => DotCase<T>;
|
|
6
|
-
|
|
7
5
|
export { dotCase as default };
|
package/dist/case/flat-case.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, F as FlatCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, F as FlatCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const flatCase: <T extends string = string>(value?: T, options?: CaseOptions) => FlatCase<T>;
|
|
6
|
-
|
|
7
5
|
export { flatCase as default };
|
package/dist/case/flip-case.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { C as CaseOptions, d as FlipCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, d as FlipCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
type FlipOptions = Omit<CaseOptions, "handleEmoji">;
|
|
6
5
|
declare const flipCase: <T extends string = string>(value?: T, options?: FlipOptions) => FlipCase<T>;
|
|
7
|
-
|
|
8
|
-
export { flipCase };
|
|
9
|
-
export type { FlipOptions };
|
|
6
|
+
export { FlipOptions, flipCase };
|
package/dist/case/flip-case.js
CHANGED
|
@@ -20,7 +20,7 @@ const __cjs_getBuiltinModule = (module) => {
|
|
|
20
20
|
const {
|
|
21
21
|
stripVTControlCharacters
|
|
22
22
|
} = __cjs_getBuiltinModule("node:util");
|
|
23
|
-
import { s as stripEmoji } from '../packem_shared/constants-
|
|
23
|
+
import { s as stripEmoji } from '../packem_shared/constants-BsZS5f0z.js';
|
|
24
24
|
import LRUCache from '../packem_shared/LRUCache-3r3SovvR.js';
|
|
25
25
|
import { g as generateCacheKey } from '../packem_shared/generate-cache-key-DdayDfjV.js';
|
|
26
26
|
|
|
@@ -64,7 +64,13 @@ const flipCase = (value, options) => {
|
|
|
64
64
|
}
|
|
65
65
|
const char = processedValue[index];
|
|
66
66
|
const lowerChar = options?.locale ? char.toLocaleLowerCase(options.locale) : char.toLowerCase();
|
|
67
|
-
|
|
67
|
+
let flippedChar;
|
|
68
|
+
if (char === lowerChar) {
|
|
69
|
+
flippedChar = options?.locale ? char.toLocaleUpperCase(options.locale) : char.toUpperCase();
|
|
70
|
+
} else {
|
|
71
|
+
flippedChar = lowerChar;
|
|
72
|
+
}
|
|
73
|
+
result += flippedChar;
|
|
68
74
|
index += 1;
|
|
69
75
|
}
|
|
70
76
|
if (shouldCache && cacheKey) {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { I as IdentifyCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { I as IdentifyCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const identifyCase: <T extends string = string>(value?: T) => IdentifyCase<T>;
|
|
6
|
-
|
|
7
5
|
export { identifyCase as default };
|
|
@@ -8,6 +8,7 @@ const IS_UPPERCASE = /^[A-Z][A-Z0-9]*$/;
|
|
|
8
8
|
const WHITESPACE_REGEX = /\s+/;
|
|
9
9
|
const IS_NUMERIC = /^\d+$/;
|
|
10
10
|
const IS_CAMEL_CASE_LIKE = /^[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)+$/;
|
|
11
|
+
const IS_LOWERCASE_START = /^[a-z]/;
|
|
11
12
|
const CONTAINS_PUNCTUATION_MID_WORD = /[.!?;:,](?!\s|$)/;
|
|
12
13
|
const identifyCase = (value) => {
|
|
13
14
|
if (typeof value !== "string") {
|
|
@@ -47,7 +48,7 @@ const identifyCase = (value) => {
|
|
|
47
48
|
if (words.length > 1 && IS_NUMERIC.test(words[0]) && IS_PASCAL_CASE.test(words[1])) {
|
|
48
49
|
return "title";
|
|
49
50
|
}
|
|
50
|
-
if (words.length > 1 && IS_PASCAL_CASE.test(words[0]) &&
|
|
51
|
+
if (words.length > 1 && IS_PASCAL_CASE.test(words[0]) && IS_LOWERCASE_START.test(words[1])) {
|
|
51
52
|
return "sentence";
|
|
52
53
|
}
|
|
53
54
|
if (IS_PASCAL_CASE.test(value)) {
|
package/dist/case/index.d.ts
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
export { N as NodeLocale } from
|
|
2
|
-
export { default as camelCase } from
|
|
3
|
-
export { default as capitalCase } from
|
|
4
|
-
export { default as constantCase } from
|
|
5
|
-
export { default as dotCase } from
|
|
6
|
-
export { default as flatCase } from
|
|
7
|
-
export { FlipOptions, flipCase } from
|
|
8
|
-
export { default as identifyCase } from
|
|
9
|
-
export { KebabCaseOptions, kebabCase } from
|
|
10
|
-
export { default as lowerFirst } from
|
|
11
|
-
export { default as noCase } from
|
|
12
|
-
export { default as pascalCase } from
|
|
13
|
-
export { default as pascalSnakeCase } from
|
|
14
|
-
export { default as pathCase } from
|
|
15
|
-
export { default as sentenceCase } from
|
|
16
|
-
export { default as snakeCase } from
|
|
17
|
-
export { SplitOptions, splitByCase } from
|
|
18
|
-
export { default as titleCase } from
|
|
19
|
-
export { default as trainCase } from
|
|
20
|
-
export { a as CamelCase, b as CapitalCase, C as CaseOptions, c as ConstantCase, D as DotCase, F as FlatCase, d as FlipCase, I as IdentifyCase, K as KebabCase, L as LocaleOptions, e as LowerFirst, N as NoCase, P as PascalCase, f as PascalSnakeCase, g as PathCase, S as SentenceCase, h as SnakeCase, i as SplitByCase, T as TitleCase, j as TrainCase, U as UpperFirst } from
|
|
21
|
-
export { default as upperFirst } from
|
|
22
|
-
import
|
|
23
|
-
|
|
24
|
-
declare const joinSegments: <T extends string = string>(segments: string[], joiner: string) => T;
|
|
25
|
-
|
|
1
|
+
export { type N as NodeLocale } from "../packem_shared/types.d-BVNv675q.js";
|
|
2
|
+
export { default as camelCase } from "./camel-case.js";
|
|
3
|
+
export { default as capitalCase } from "./capital-case.js";
|
|
4
|
+
export { default as constantCase } from "./constant-case.js";
|
|
5
|
+
export { default as dotCase } from "./dot-case.js";
|
|
6
|
+
export { default as flatCase } from "./flat-case.js";
|
|
7
|
+
export { type FlipOptions, flipCase } from "./flip-case.js";
|
|
8
|
+
export { default as identifyCase } from "./identify-case.js";
|
|
9
|
+
export { type KebabCaseOptions, kebabCase } from "./kebab-case.js";
|
|
10
|
+
export { default as lowerFirst } from "./lower-first.js";
|
|
11
|
+
export { default as noCase } from "./no-case.js";
|
|
12
|
+
export { default as pascalCase } from "./pascal-case.js";
|
|
13
|
+
export { default as pascalSnakeCase } from "./pascal-snake-case.js";
|
|
14
|
+
export { default as pathCase } from "./path-case.js";
|
|
15
|
+
export { default as sentenceCase } from "./sentence-case.js";
|
|
16
|
+
export { default as snakeCase } from "./snake-case.js";
|
|
17
|
+
export { type SplitOptions, splitByCase } from "./split-by-case.js";
|
|
18
|
+
export { default as titleCase } from "./title-case.js";
|
|
19
|
+
export { default as trainCase } from "./train-case.js";
|
|
20
|
+
export { type a as CamelCase, type b as CapitalCase, type C as CaseOptions, type c as ConstantCase, type D as DotCase, type F as FlatCase, type d as FlipCase, type I as IdentifyCase, type K as KebabCase, type L as LocaleOptions, type e as LowerFirst, type N as NoCase, type P as PascalCase, type f as PascalSnakeCase, type g as PathCase, type S as SentenceCase, type h as SnakeCase, type i as SplitByCase, type T as TitleCase, type j as TrainCase, type U as UpperFirst } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
21
|
+
export { default as upperFirst } from "./upper-first.js";
|
|
22
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
23
|
+
declare const joinSegments: (segments: string[], joiner: string) => string;
|
|
26
24
|
export { joinSegments };
|
package/dist/case/index.js
CHANGED
|
@@ -17,4 +17,4 @@ export { splitByCase } from './split-by-case.js';
|
|
|
17
17
|
export { default as titleCase } from './title-case.js';
|
|
18
18
|
export { default as trainCase } from './train-case.js';
|
|
19
19
|
export { default as upperFirst } from './upper-first.js';
|
|
20
|
-
export { default as joinSegments } from '../packem_shared/joinSegments-
|
|
20
|
+
export { default as joinSegments } from '../packem_shared/joinSegments-CvxSgKz0.js';
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { C as CaseOptions, K as KebabCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, K as KebabCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
interface KebabCaseOptions extends CaseOptions {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
joiner?: string;
|
|
6
|
+
toUpperCase?: boolean;
|
|
8
7
|
}
|
|
9
8
|
declare const kebabCase: <T extends string = string>(value?: T, options?: KebabCaseOptions) => KebabCase<T>;
|
|
10
|
-
|
|
11
|
-
export { kebabCase };
|
|
12
|
-
export type { KebabCaseOptions };
|
|
9
|
+
export { KebabCaseOptions, kebabCase };
|
package/dist/case/kebab-case.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { R as RE_FAST_ANSI } from '../packem_shared/constants-
|
|
1
|
+
import { R as RE_FAST_ANSI } from '../packem_shared/constants-BsZS5f0z.js';
|
|
2
2
|
import LRUCache from '../packem_shared/LRUCache-3r3SovvR.js';
|
|
3
3
|
import { splitByCase } from './split-by-case.js';
|
|
4
4
|
import { g as generateCacheKey } from '../packem_shared/generate-cache-key-DdayDfjV.js';
|
|
5
|
-
import joinSegments from '../packem_shared/joinSegments-
|
|
6
|
-
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-
|
|
5
|
+
import joinSegments from '../packem_shared/joinSegments-CvxSgKz0.js';
|
|
6
|
+
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-4p3yKEzn.js';
|
|
7
7
|
|
|
8
8
|
const defaultCacheStore = new LRUCache(1e3);
|
|
9
9
|
const kebabCase = (value, options) => {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { L as LocaleOptions, e as LowerFirst } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { L as LocaleOptions, e as LowerFirst } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const lowerFirst: <T extends string = string>(value?: T, options?: LocaleOptions) => LowerFirst<T>;
|
|
6
|
-
|
|
7
5
|
export { lowerFirst as default };
|
package/dist/case/no-case.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, N as NoCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, N as NoCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const noCase: <T extends string = string>(value?: T, options?: CaseOptions) => NoCase<T>;
|
|
6
|
-
|
|
7
5
|
export { noCase as default };
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, P as PascalCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, P as PascalCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const pascalCase: <T extends string = string>(value?: T, options?: CaseOptions) => PascalCase<T>;
|
|
6
|
-
|
|
7
5
|
export { pascalCase as default };
|
package/dist/case/pascal-case.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { R as RE_FAST_ANSI } from '../packem_shared/constants-
|
|
1
|
+
import { R as RE_FAST_ANSI } from '../packem_shared/constants-BsZS5f0z.js';
|
|
2
2
|
import LRUCache from '../packem_shared/LRUCache-3r3SovvR.js';
|
|
3
3
|
import { splitByCase } from './split-by-case.js';
|
|
4
4
|
import upperFirst from './upper-first.js';
|
|
5
5
|
import { g as generateCacheKey } from '../packem_shared/generate-cache-key-DdayDfjV.js';
|
|
6
|
-
import joinSegments from '../packem_shared/joinSegments-
|
|
7
|
-
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-
|
|
6
|
+
import joinSegments from '../packem_shared/joinSegments-CvxSgKz0.js';
|
|
7
|
+
import { n as normalizeGermanEszett } from '../packem_shared/normalize-german-eszett-4p3yKEzn.js';
|
|
8
8
|
|
|
9
9
|
const defaultCacheStore = new LRUCache(1e3);
|
|
10
10
|
const pascalCase = (value, options) => {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, f as PascalSnakeCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, f as PascalSnakeCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const pascalSnakeCase: <T extends string = string>(value?: T, options?: CaseOptions) => PascalSnakeCase<T>;
|
|
6
|
-
|
|
7
5
|
export { pascalSnakeCase as default };
|
package/dist/case/path-case.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, g as PathCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, g as PathCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const pathCase: <T extends string = string>(value?: T, options?: CaseOptions) => PathCase<T>;
|
|
6
|
-
|
|
7
5
|
export { pathCase as default };
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { C as CaseOptions, S as SentenceCase } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { C as CaseOptions, S as SentenceCase } from "../packem_shared/types.d-DfgbcNKh.js";
|
|
2
|
+
import "../packem_shared/types.d-BVNv675q.js";
|
|
3
|
+
import "../packem_shared/lru-cache.d-BsP6kbVJ.js";
|
|
5
4
|
declare const sentenceCase: <T extends string = string>(value?: T, options?: CaseOptions) => SentenceCase<T>;
|
|
6
|
-
|
|
7
5
|
export { sentenceCase as default };
|