@pawells/typescript-common 1.0.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/LICENSE +21 -0
- package/README.md +148 -0
- package/build/array/array-chunk.d.ts +10 -0
- package/build/array/array-chunk.d.ts.map +1 -0
- package/build/array/array-chunk.js +19 -0
- package/build/array/array-chunk.js.map +1 -0
- package/build/array/array-compact.d.ts +18 -0
- package/build/array/array-compact.d.ts.map +1 -0
- package/build/array/array-compact.js +22 -0
- package/build/array/array-compact.js.map +1 -0
- package/build/array/array-contains.d.ts +9 -0
- package/build/array/array-contains.d.ts.map +1 -0
- package/build/array/array-contains.js +13 -0
- package/build/array/array-contains.js.map +1 -0
- package/build/array/array-count-by.d.ts +21 -0
- package/build/array/array-count-by.d.ts.map +1 -0
- package/build/array/array-count-by.js +29 -0
- package/build/array/array-count-by.js.map +1 -0
- package/build/array/array-difference.d.ts +25 -0
- package/build/array/array-difference.d.ts.map +1 -0
- package/build/array/array-difference.js +34 -0
- package/build/array/array-difference.js.map +1 -0
- package/build/array/array-element.d.ts +7 -0
- package/build/array/array-element.d.ts.map +1 -0
- package/build/array/array-element.js +2 -0
- package/build/array/array-element.js.map +1 -0
- package/build/array/array-filter.d.ts +37 -0
- package/build/array/array-filter.d.ts.map +1 -0
- package/build/array/array-filter.js +78 -0
- package/build/array/array-filter.js.map +1 -0
- package/build/array/array-flatten.d.ts +16 -0
- package/build/array/array-flatten.d.ts.map +1 -0
- package/build/array/array-flatten.js +20 -0
- package/build/array/array-flatten.js.map +1 -0
- package/build/array/array-group-by.d.ts +13 -0
- package/build/array/array-group-by.d.ts.map +1 -0
- package/build/array/array-group-by.js +24 -0
- package/build/array/array-group-by.js.map +1 -0
- package/build/array/array-intersection.d.ts +25 -0
- package/build/array/array-intersection.d.ts.map +1 -0
- package/build/array/array-intersection.js +39 -0
- package/build/array/array-intersection.js.map +1 -0
- package/build/array/array-partition.d.ts +19 -0
- package/build/array/array-partition.d.ts.map +1 -0
- package/build/array/array-partition.js +32 -0
- package/build/array/array-partition.js.map +1 -0
- package/build/array/array-range.d.ts +18 -0
- package/build/array/array-range.d.ts.map +1 -0
- package/build/array/array-range.js +30 -0
- package/build/array/array-range.js.map +1 -0
- package/build/array/array-sample.d.ts +29 -0
- package/build/array/array-sample.d.ts.map +1 -0
- package/build/array/array-sample.js +19 -0
- package/build/array/array-sample.js.map +1 -0
- package/build/array/array-shuffle.d.ts +8 -0
- package/build/array/array-shuffle.d.ts.map +1 -0
- package/build/array/array-shuffle.js +19 -0
- package/build/array/array-shuffle.js.map +1 -0
- package/build/array/array-sort-by.d.ts +20 -0
- package/build/array/array-sort-by.d.ts.map +1 -0
- package/build/array/array-sort-by.js +31 -0
- package/build/array/array-sort-by.js.map +1 -0
- package/build/array/array-zip.d.ts +22 -0
- package/build/array/array-zip.d.ts.map +1 -0
- package/build/array/array-zip.js +25 -0
- package/build/array/array-zip.js.map +1 -0
- package/build/array/array.test.d.ts +2 -0
- package/build/array/array.test.d.ts.map +1 -0
- package/build/array/array.test.js +347 -0
- package/build/array/array.test.js.map +1 -0
- package/build/array/index.d.ts +27 -0
- package/build/array/index.d.ts.map +1 -0
- package/build/array/index.js +25 -0
- package/build/array/index.js.map +1 -0
- package/build/array/types.d.ts +32 -0
- package/build/array/types.d.ts.map +1 -0
- package/build/array/types.js +2 -0
- package/build/array/types.js.map +1 -0
- package/build/array/unique.d.ts +8 -0
- package/build/array/unique.d.ts.map +1 -0
- package/build/array/unique.js +13 -0
- package/build/array/unique.js.map +1 -0
- package/build/enum/enum-entries.d.ts +11 -0
- package/build/enum/enum-entries.d.ts.map +1 -0
- package/build/enum/enum-entries.js +14 -0
- package/build/enum/enum-entries.js.map +1 -0
- package/build/enum/enum-key-by-value.d.ts +13 -0
- package/build/enum/enum-key-by-value.d.ts.map +1 -0
- package/build/enum/enum-key-by-value.js +21 -0
- package/build/enum/enum-key-by-value.js.map +1 -0
- package/build/enum/enum-keys.d.ts +10 -0
- package/build/enum/enum-keys.d.ts.map +1 -0
- package/build/enum/enum-keys.js +14 -0
- package/build/enum/enum-keys.js.map +1 -0
- package/build/enum/enum-safe-value.d.ts +14 -0
- package/build/enum/enum-safe-value.d.ts.map +1 -0
- package/build/enum/enum-safe-value.js +16 -0
- package/build/enum/enum-safe-value.js.map +1 -0
- package/build/enum/enum-values.d.ts +19 -0
- package/build/enum/enum-values.d.ts.map +1 -0
- package/build/enum/enum-values.js +25 -0
- package/build/enum/enum-values.js.map +1 -0
- package/build/enum/enum.test.d.ts +2 -0
- package/build/enum/enum.test.d.ts.map +1 -0
- package/build/enum/enum.test.js +122 -0
- package/build/enum/enum.test.js.map +1 -0
- package/build/enum/index.d.ts +17 -0
- package/build/enum/index.d.ts.map +1 -0
- package/build/enum/index.js +17 -0
- package/build/enum/index.js.map +1 -0
- package/build/enum/types.d.ts +9 -0
- package/build/enum/types.d.ts.map +1 -0
- package/build/enum/types.js +2 -0
- package/build/enum/types.js.map +1 -0
- package/build/enum/validate-enum-value.d.ts +13 -0
- package/build/enum/validate-enum-value.d.ts.map +1 -0
- package/build/enum/validate-enum-value.js +18 -0
- package/build/enum/validate-enum-value.js.map +1 -0
- package/build/function/compose.d.ts +37 -0
- package/build/function/compose.d.ts.map +1 -0
- package/build/function/compose.js +7 -0
- package/build/function/compose.js.map +1 -0
- package/build/function/debounce.d.ts +25 -0
- package/build/function/debounce.d.ts.map +1 -0
- package/build/function/debounce.js +37 -0
- package/build/function/debounce.js.map +1 -0
- package/build/function/function.test.d.ts +2 -0
- package/build/function/function.test.d.ts.map +1 -0
- package/build/function/function.test.js +158 -0
- package/build/function/function.test.js.map +1 -0
- package/build/function/index.d.ts +17 -0
- package/build/function/index.d.ts.map +1 -0
- package/build/function/index.js +16 -0
- package/build/function/index.js.map +1 -0
- package/build/function/memoize.d.ts +23 -0
- package/build/function/memoize.d.ts.map +1 -0
- package/build/function/memoize.js +34 -0
- package/build/function/memoize.js.map +1 -0
- package/build/function/once.d.ts +17 -0
- package/build/function/once.d.ts.map +1 -0
- package/build/function/once.js +27 -0
- package/build/function/once.js.map +1 -0
- package/build/function/sleep.d.ts +20 -0
- package/build/function/sleep.d.ts.map +1 -0
- package/build/function/sleep.js +22 -0
- package/build/function/sleep.js.map +1 -0
- package/build/function/throttle.d.ts +17 -0
- package/build/function/throttle.d.ts.map +1 -0
- package/build/function/throttle.js +37 -0
- package/build/function/throttle.js.map +1 -0
- package/build/function/types.d.ts +5 -0
- package/build/function/types.d.ts.map +1 -0
- package/build/function/types.js +2 -0
- package/build/function/types.js.map +1 -0
- package/build/index.d.ts +32 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +51 -0
- package/build/index.js.map +1 -0
- package/build/object/assert-object.d.ts +8 -0
- package/build/object/assert-object.d.ts.map +1 -0
- package/build/object/assert-object.js +10 -0
- package/build/object/assert-object.js.map +1 -0
- package/build/object/clone.d.ts +39 -0
- package/build/object/clone.d.ts.map +1 -0
- package/build/object/clone.js +85 -0
- package/build/object/clone.js.map +1 -0
- package/build/object/equals.d.ts +44 -0
- package/build/object/equals.d.ts.map +1 -0
- package/build/object/equals.js +104 -0
- package/build/object/equals.js.map +1 -0
- package/build/object/filter-cached.d.ts +9 -0
- package/build/object/filter-cached.d.ts.map +1 -0
- package/build/object/filter-cached.js +108 -0
- package/build/object/filter-cached.js.map +1 -0
- package/build/object/filter.d.ts +85 -0
- package/build/object/filter.d.ts.map +1 -0
- package/build/object/filter.js +248 -0
- package/build/object/filter.js.map +1 -0
- package/build/object/has-circular-reference.d.ts +8 -0
- package/build/object/has-circular-reference.d.ts.map +1 -0
- package/build/object/has-circular-reference.js +40 -0
- package/build/object/has-circular-reference.js.map +1 -0
- package/build/object/hash.d.ts +20 -0
- package/build/object/hash.d.ts.map +1 -0
- package/build/object/hash.js +39 -0
- package/build/object/hash.js.map +1 -0
- package/build/object/index.d.ts +32 -0
- package/build/object/index.d.ts.map +1 -0
- package/build/object/index.js +30 -0
- package/build/object/index.js.map +1 -0
- package/build/object/key-value-pairs.d.ts +21 -0
- package/build/object/key-value-pairs.d.ts.map +1 -0
- package/build/object/key-value-pairs.js +28 -0
- package/build/object/key-value-pairs.js.map +1 -0
- package/build/object/map-cached.d.ts +9 -0
- package/build/object/map-cached.d.ts.map +1 -0
- package/build/object/map-cached.js +97 -0
- package/build/object/map-cached.js.map +1 -0
- package/build/object/map.d.ts +29 -0
- package/build/object/map.d.ts.map +1 -0
- package/build/object/map.js +40 -0
- package/build/object/map.js.map +1 -0
- package/build/object/merge.d.ts +14 -0
- package/build/object/merge.d.ts.map +1 -0
- package/build/object/merge.js +41 -0
- package/build/object/merge.js.map +1 -0
- package/build/object/object-diff.d.ts +40 -0
- package/build/object/object-diff.d.ts.map +1 -0
- package/build/object/object-diff.js +45 -0
- package/build/object/object-diff.js.map +1 -0
- package/build/object/object-flatten.d.ts +22 -0
- package/build/object/object-flatten.d.ts.map +1 -0
- package/build/object/object-flatten.js +38 -0
- package/build/object/object-flatten.js.map +1 -0
- package/build/object/object-invert.d.ts +20 -0
- package/build/object/object-invert.d.ts.map +1 -0
- package/build/object/object-invert.js +26 -0
- package/build/object/object-invert.js.map +1 -0
- package/build/object/object.test.d.ts +2 -0
- package/build/object/object.test.d.ts.map +1 -0
- package/build/object/object.test.js +432 -0
- package/build/object/object.test.js.map +1 -0
- package/build/object/omit.d.ts +8 -0
- package/build/object/omit.d.ts.map +1 -0
- package/build/object/omit.js +17 -0
- package/build/object/omit.js.map +1 -0
- package/build/object/pick.d.ts +50 -0
- package/build/object/pick.d.ts.map +1 -0
- package/build/object/pick.js +60 -0
- package/build/object/pick.js.map +1 -0
- package/build/object/property-paths.d.ts +115 -0
- package/build/object/property-paths.d.ts.map +1 -0
- package/build/object/property-paths.js +170 -0
- package/build/object/property-paths.js.map +1 -0
- package/build/object/security-utils.d.ts +59 -0
- package/build/object/security-utils.d.ts.map +1 -0
- package/build/object/security-utils.js +165 -0
- package/build/object/security-utils.js.map +1 -0
- package/build/object/sort-keys.d.ts +26 -0
- package/build/object/sort-keys.d.ts.map +1 -0
- package/build/object/sort-keys.js +52 -0
- package/build/object/sort-keys.js.map +1 -0
- package/build/object/types.d.ts +152 -0
- package/build/object/types.d.ts.map +1 -0
- package/build/object/types.js +6 -0
- package/build/object/types.js.map +1 -0
- package/build/string/case-conversion.d.ts +50 -0
- package/build/string/case-conversion.d.ts.map +1 -0
- package/build/string/case-conversion.js +94 -0
- package/build/string/case-conversion.js.map +1 -0
- package/build/string/formatting.d.ts +108 -0
- package/build/string/formatting.d.ts.map +1 -0
- package/build/string/formatting.js +171 -0
- package/build/string/formatting.js.map +1 -0
- package/build/string/index.d.ts +15 -0
- package/build/string/index.d.ts.map +1 -0
- package/build/string/index.js +14 -0
- package/build/string/index.js.map +1 -0
- package/build/string/string.test.d.ts +2 -0
- package/build/string/string.test.d.ts.map +1 -0
- package/build/string/string.test.js +321 -0
- package/build/string/string.test.js.map +1 -0
- package/build/string/transformation.d.ts +18 -0
- package/build/string/transformation.d.ts.map +1 -0
- package/build/string/transformation.js +32 -0
- package/build/string/transformation.js.map +1 -0
- package/build/string/types.d.ts +44 -0
- package/build/string/types.d.ts.map +1 -0
- package/build/string/types.js +2 -0
- package/build/string/types.js.map +1 -0
- package/build/string/validation.d.ts +18 -0
- package/build/string/validation.d.ts.map +1 -0
- package/build/string/validation.js +26 -0
- package/build/string/validation.js.map +1 -0
- package/build/time/elapsed-time/constants.d.ts +10 -0
- package/build/time/elapsed-time/constants.d.ts.map +1 -0
- package/build/time/elapsed-time/constants.js +96 -0
- package/build/time/elapsed-time/constants.js.map +1 -0
- package/build/time/elapsed-time/elapsed-time.d.ts +412 -0
- package/build/time/elapsed-time/elapsed-time.d.ts.map +1 -0
- package/build/time/elapsed-time/elapsed-time.js +652 -0
- package/build/time/elapsed-time/elapsed-time.js.map +1 -0
- package/build/time/elapsed-time/types.d.ts +150 -0
- package/build/time/elapsed-time/types.d.ts.map +1 -0
- package/build/time/elapsed-time/types.js +2 -0
- package/build/time/elapsed-time/types.js.map +1 -0
- package/build/time/elapsed-time/utils.d.ts +18 -0
- package/build/time/elapsed-time/utils.d.ts.map +1 -0
- package/build/time/elapsed-time/utils.js +24 -0
- package/build/time/elapsed-time/utils.js.map +1 -0
- package/build/time/index.d.ts +18 -0
- package/build/time/index.d.ts.map +1 -0
- package/build/time/index.js +17 -0
- package/build/time/index.js.map +1 -0
- package/build/time/stopwatch/entry-types.d.ts +13 -0
- package/build/time/stopwatch/entry-types.d.ts.map +1 -0
- package/build/time/stopwatch/entry-types.js +2 -0
- package/build/time/stopwatch/entry-types.js.map +1 -0
- package/build/time/stopwatch/entry.d.ts +80 -0
- package/build/time/stopwatch/entry.d.ts.map +1 -0
- package/build/time/stopwatch/entry.js +105 -0
- package/build/time/stopwatch/entry.js.map +1 -0
- package/build/time/stopwatch/stopwatch.d.ts +232 -0
- package/build/time/stopwatch/stopwatch.d.ts.map +1 -0
- package/build/time/stopwatch/stopwatch.js +315 -0
- package/build/time/stopwatch/stopwatch.js.map +1 -0
- package/build/time/time.test.d.ts +2 -0
- package/build/time/time.test.d.ts.map +1 -0
- package/build/time/time.test.js +211 -0
- package/build/time/time.test.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { CamelCase, CAPITALIZE, KEBAB_CASE, PASCAL_CASE, SNAKE_CASE, SCREAMING_SNAKE_CASE } from './case-conversion.js';
|
|
3
|
+
import { EscapeHTML, FormatString, TruncateString, PadString, StripHTML, Pluralize, WordCount, CountOccurrences } from './formatting.js';
|
|
4
|
+
import { REVERSE_STRING, SLUGIFY } from './transformation.js';
|
|
5
|
+
import { IS_BLANK_STRING, IS_HEX_STRING } from './validation.js';
|
|
6
|
+
describe('CamelCase', () => {
|
|
7
|
+
it('converts space-separated words', () => {
|
|
8
|
+
expect(CamelCase('hello world')).toBe('helloWorld');
|
|
9
|
+
});
|
|
10
|
+
it('converts kebab-case', () => {
|
|
11
|
+
expect(CamelCase('foo-bar-baz')).toBe('fooBarBaz');
|
|
12
|
+
});
|
|
13
|
+
it('converts snake_case', () => {
|
|
14
|
+
expect(CamelCase('hello_world')).toBe('helloWorld');
|
|
15
|
+
});
|
|
16
|
+
it('returns empty string for empty input', () => {
|
|
17
|
+
expect(CamelCase('')).toBe('');
|
|
18
|
+
});
|
|
19
|
+
it('returns empty string for null/falsy input', () => {
|
|
20
|
+
expect(CamelCase(null)).toBe('');
|
|
21
|
+
});
|
|
22
|
+
it('lowercases the first letter', () => {
|
|
23
|
+
expect(CamelCase('HelloWorld')[0]).toBe('h');
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('CAPITALIZE', () => {
|
|
27
|
+
it('capitalizes the first letter', () => {
|
|
28
|
+
expect(CAPITALIZE('hello')).toBe('Hello');
|
|
29
|
+
});
|
|
30
|
+
it('does not alter rest of the string', () => {
|
|
31
|
+
expect(CAPITALIZE('hello world')).toBe('Hello world');
|
|
32
|
+
});
|
|
33
|
+
it('returns empty string for empty input', () => {
|
|
34
|
+
expect(CAPITALIZE('')).toBe('');
|
|
35
|
+
});
|
|
36
|
+
it('returns empty string for null input', () => {
|
|
37
|
+
expect(CAPITALIZE(null)).toBe('');
|
|
38
|
+
});
|
|
39
|
+
it('handles already-capitalized strings', () => {
|
|
40
|
+
expect(CAPITALIZE('Hello')).toBe('Hello');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('KEBAB_CASE', () => {
|
|
44
|
+
it('converts camelCase to kebab-case', () => {
|
|
45
|
+
expect(KEBAB_CASE('helloWorld')).toBe('hello-world');
|
|
46
|
+
});
|
|
47
|
+
it('converts spaces to dashes', () => {
|
|
48
|
+
expect(KEBAB_CASE('hello world')).toBe('hello-world');
|
|
49
|
+
});
|
|
50
|
+
it('converts underscores to dashes', () => {
|
|
51
|
+
expect(KEBAB_CASE('hello_world')).toBe('hello-world');
|
|
52
|
+
});
|
|
53
|
+
it('lowercases everything', () => {
|
|
54
|
+
expect(KEBAB_CASE('HELLO')).toBe('hello');
|
|
55
|
+
});
|
|
56
|
+
it('returns empty string for empty/null input', () => {
|
|
57
|
+
expect(KEBAB_CASE('')).toBe('');
|
|
58
|
+
expect(KEBAB_CASE(null)).toBe('');
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('PASCAL_CASE', () => {
|
|
62
|
+
it('converts space-separated words', () => {
|
|
63
|
+
expect(PASCAL_CASE('hello world')).toBe('HelloWorld');
|
|
64
|
+
});
|
|
65
|
+
it('converts kebab-case', () => {
|
|
66
|
+
expect(PASCAL_CASE('foo-bar')).toBe('FooBar');
|
|
67
|
+
});
|
|
68
|
+
it('converts snake_case', () => {
|
|
69
|
+
expect(PASCAL_CASE('foo_bar')).toBe('FooBar');
|
|
70
|
+
});
|
|
71
|
+
it('capitalizes first letter', () => {
|
|
72
|
+
expect(PASCAL_CASE('hello')[0]).toBe('H');
|
|
73
|
+
});
|
|
74
|
+
it('returns empty string for empty/null input', () => {
|
|
75
|
+
expect(PASCAL_CASE('')).toBe('');
|
|
76
|
+
expect(PASCAL_CASE(null)).toBe('');
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('EscapeHTML', () => {
|
|
80
|
+
it('escapes ampersands', () => {
|
|
81
|
+
expect(EscapeHTML('a & b')).toBe('a & b');
|
|
82
|
+
});
|
|
83
|
+
it('escapes angle brackets', () => {
|
|
84
|
+
expect(EscapeHTML('<div>')).toBe('<div>');
|
|
85
|
+
});
|
|
86
|
+
it('escapes double quotes', () => {
|
|
87
|
+
expect(EscapeHTML('"hello"')).toBe('"hello"');
|
|
88
|
+
});
|
|
89
|
+
it('escapes single quotes', () => {
|
|
90
|
+
expect(EscapeHTML('it\'s')).toBe('it's');
|
|
91
|
+
});
|
|
92
|
+
it('returns empty string for empty/null input', () => {
|
|
93
|
+
expect(EscapeHTML('')).toBe('');
|
|
94
|
+
expect(EscapeHTML(null)).toBe('');
|
|
95
|
+
});
|
|
96
|
+
it('does not alter a string with no special chars', () => {
|
|
97
|
+
expect(EscapeHTML('hello world')).toBe('hello world');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe('FormatString', () => {
|
|
101
|
+
it('replaces named placeholders', () => {
|
|
102
|
+
expect(FormatString('Hello {name}!', { name: 'World' })).toBe('Hello World!');
|
|
103
|
+
});
|
|
104
|
+
it('replaces positional placeholders', () => {
|
|
105
|
+
expect(FormatString('Hello {0}!', ['World'])).toBe('Hello World!');
|
|
106
|
+
});
|
|
107
|
+
it('handles multiple named params', () => {
|
|
108
|
+
expect(FormatString('{greeting} {name}', { greeting: 'Hi', name: 'Alice' })).toBe('Hi Alice');
|
|
109
|
+
});
|
|
110
|
+
it('handles multiple positional params', () => {
|
|
111
|
+
expect(FormatString('{0} {1}', ['foo', 'bar'])).toBe('foo bar');
|
|
112
|
+
});
|
|
113
|
+
it('leaves unknown placeholders unchanged', () => {
|
|
114
|
+
expect(FormatString('Hello {unknown}!', {})).toBe('Hello {unknown}!');
|
|
115
|
+
});
|
|
116
|
+
it('converts boolean and number values to strings', () => {
|
|
117
|
+
expect(FormatString('Count: {count}, Active: {active}', { count: 42, active: true })).toBe('Count: 42, Active: true');
|
|
118
|
+
});
|
|
119
|
+
it('returns empty string for empty/null template', () => {
|
|
120
|
+
expect(FormatString('', { name: 'x' })).toBe('');
|
|
121
|
+
expect(FormatString(null, {})).toBe('');
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe('TruncateString', () => {
|
|
125
|
+
it('truncates strings exceeding maxLength', () => {
|
|
126
|
+
expect(TruncateString('Hello World', 5)).toBe('Hello...');
|
|
127
|
+
});
|
|
128
|
+
it('returns the original string when within maxLength', () => {
|
|
129
|
+
expect(TruncateString('Hi', 10)).toBe('Hi');
|
|
130
|
+
});
|
|
131
|
+
it('uses a custom ellipsis', () => {
|
|
132
|
+
expect(TruncateString('Hello World', 5, '…')).toBe('Hello…');
|
|
133
|
+
});
|
|
134
|
+
it('returns empty string for empty/null input', () => {
|
|
135
|
+
expect(TruncateString('', 5)).toBe('');
|
|
136
|
+
expect(TruncateString(null, 5)).toBe('');
|
|
137
|
+
});
|
|
138
|
+
it('returns empty string when maxLength <= 0', () => {
|
|
139
|
+
expect(TruncateString('hello', 0)).toBe('');
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
describe('PadString', () => {
|
|
143
|
+
it('pads to the end by default', () => {
|
|
144
|
+
expect(PadString('hi', 5)).toBe('hi ');
|
|
145
|
+
});
|
|
146
|
+
it('pads to the start when padEnd is false', () => {
|
|
147
|
+
expect(PadString('hi', 5, ' ', false)).toBe(' hi');
|
|
148
|
+
});
|
|
149
|
+
it('uses a custom pad character', () => {
|
|
150
|
+
expect(PadString('hi', 5, '0')).toBe('hi000');
|
|
151
|
+
});
|
|
152
|
+
it('returns the original string when length is already met', () => {
|
|
153
|
+
expect(PadString('hello', 3)).toBe('hello');
|
|
154
|
+
});
|
|
155
|
+
it('returns empty string for null input', () => {
|
|
156
|
+
expect(PadString(null, 5)).toBe('');
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('REVERSE_STRING', () => {
|
|
160
|
+
it('reverses a string', () => {
|
|
161
|
+
expect(REVERSE_STRING('hello')).toBe('olleh');
|
|
162
|
+
});
|
|
163
|
+
it('handles single characters', () => {
|
|
164
|
+
expect(REVERSE_STRING('a')).toBe('a');
|
|
165
|
+
});
|
|
166
|
+
it('handles empty strings', () => {
|
|
167
|
+
expect(REVERSE_STRING('')).toBe('');
|
|
168
|
+
});
|
|
169
|
+
it('returns empty string for null', () => {
|
|
170
|
+
expect(REVERSE_STRING(null)).toBe('');
|
|
171
|
+
});
|
|
172
|
+
it('handles palindromes', () => {
|
|
173
|
+
expect(REVERSE_STRING('racecar')).toBe('racecar');
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('SLUGIFY', () => {
|
|
177
|
+
it('converts to lowercase and replaces spaces with dashes', () => {
|
|
178
|
+
expect(SLUGIFY('Hello World')).toBe('hello-world');
|
|
179
|
+
});
|
|
180
|
+
it('removes special characters', () => {
|
|
181
|
+
expect(SLUGIFY('Hello, World!')).toBe('hello-world');
|
|
182
|
+
});
|
|
183
|
+
it('collapses multiple spaces and dashes', () => {
|
|
184
|
+
expect(SLUGIFY('foo bar -- baz')).toBe('foo-bar-baz');
|
|
185
|
+
});
|
|
186
|
+
it('trims leading/trailing dashes', () => {
|
|
187
|
+
expect(SLUGIFY('--hello world--')).toBe('hello-world');
|
|
188
|
+
});
|
|
189
|
+
it('returns empty string for empty/null input', () => {
|
|
190
|
+
expect(SLUGIFY('')).toBe('');
|
|
191
|
+
expect(SLUGIFY(null)).toBe('');
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
describe('IS_BLANK_STRING', () => {
|
|
195
|
+
it('returns true for an empty string', () => {
|
|
196
|
+
expect(IS_BLANK_STRING('')).toBe(true);
|
|
197
|
+
});
|
|
198
|
+
it('returns true for whitespace-only strings', () => {
|
|
199
|
+
expect(IS_BLANK_STRING(' ')).toBe(true);
|
|
200
|
+
expect(IS_BLANK_STRING('\t\n')).toBe(true);
|
|
201
|
+
});
|
|
202
|
+
it('returns false for non-blank strings', () => {
|
|
203
|
+
expect(IS_BLANK_STRING('hello')).toBe(false);
|
|
204
|
+
expect(IS_BLANK_STRING(' hi ')).toBe(false);
|
|
205
|
+
});
|
|
206
|
+
it('returns true for null/undefined', () => {
|
|
207
|
+
expect(IS_BLANK_STRING(null)).toBe(true);
|
|
208
|
+
expect(IS_BLANK_STRING(undefined)).toBe(true);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
describe('IS_HEX_STRING', () => {
|
|
212
|
+
it('returns true for plain hex digits', () => {
|
|
213
|
+
expect(IS_HEX_STRING('1a2b3c')).toBe(true);
|
|
214
|
+
expect(IS_HEX_STRING('DEADBEEF')).toBe(true);
|
|
215
|
+
});
|
|
216
|
+
it('returns true for # prefixed hex', () => {
|
|
217
|
+
expect(IS_HEX_STRING('#ff0000')).toBe(true);
|
|
218
|
+
});
|
|
219
|
+
it('returns true for 0x prefixed hex', () => {
|
|
220
|
+
expect(IS_HEX_STRING('0xff')).toBe(true);
|
|
221
|
+
});
|
|
222
|
+
it('returns false for non-hex strings', () => {
|
|
223
|
+
expect(IS_HEX_STRING('hello')).toBe(false);
|
|
224
|
+
expect(IS_HEX_STRING('xyz')).toBe(false);
|
|
225
|
+
});
|
|
226
|
+
it('returns false for empty string', () => {
|
|
227
|
+
expect(IS_HEX_STRING('')).toBe(false);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
describe('SNAKE_CASE', () => {
|
|
231
|
+
it('converts camelCase to snake_case', () => {
|
|
232
|
+
expect(SNAKE_CASE('helloWorld')).toBe('hello_world');
|
|
233
|
+
});
|
|
234
|
+
it('converts spaces to underscores', () => {
|
|
235
|
+
expect(SNAKE_CASE('hello world')).toBe('hello_world');
|
|
236
|
+
});
|
|
237
|
+
it('converts kebab-case to snake_case', () => {
|
|
238
|
+
expect(SNAKE_CASE('hello-world')).toBe('hello_world');
|
|
239
|
+
});
|
|
240
|
+
it('lowercases everything', () => {
|
|
241
|
+
expect(SNAKE_CASE('HelloWorld')).toBe('hello_world');
|
|
242
|
+
});
|
|
243
|
+
it('returns empty string for empty/null input', () => {
|
|
244
|
+
expect(SNAKE_CASE('')).toBe('');
|
|
245
|
+
expect(SNAKE_CASE(null)).toBe('');
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
describe('SCREAMING_SNAKE_CASE', () => {
|
|
249
|
+
it('converts camelCase to SCREAMING_SNAKE_CASE', () => {
|
|
250
|
+
expect(SCREAMING_SNAKE_CASE('helloWorld')).toBe('HELLO_WORLD');
|
|
251
|
+
});
|
|
252
|
+
it('converts spaces', () => {
|
|
253
|
+
expect(SCREAMING_SNAKE_CASE('hello world')).toBe('HELLO_WORLD');
|
|
254
|
+
});
|
|
255
|
+
it('returns empty string for empty/null input', () => {
|
|
256
|
+
expect(SCREAMING_SNAKE_CASE('')).toBe('');
|
|
257
|
+
expect(SCREAMING_SNAKE_CASE(null)).toBe('');
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
describe('StripHTML', () => {
|
|
261
|
+
it('removes HTML tags', () => {
|
|
262
|
+
expect(StripHTML('<p>Hello <strong>World</strong></p>')).toBe('Hello World');
|
|
263
|
+
});
|
|
264
|
+
it('handles self-closing tags', () => {
|
|
265
|
+
expect(StripHTML('Line1<br/>Line2')).toBe('Line1Line2');
|
|
266
|
+
});
|
|
267
|
+
it('returns string unchanged when no tags', () => {
|
|
268
|
+
expect(StripHTML('plain text')).toBe('plain text');
|
|
269
|
+
});
|
|
270
|
+
it('returns empty string for empty/null input', () => {
|
|
271
|
+
expect(StripHTML('')).toBe('');
|
|
272
|
+
expect(StripHTML(null)).toBe('');
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
describe('Pluralize', () => {
|
|
276
|
+
it('returns singular when count is 1', () => {
|
|
277
|
+
expect(Pluralize('cat', 1)).toBe('cat');
|
|
278
|
+
});
|
|
279
|
+
it('returns plural form when count is not 1', () => {
|
|
280
|
+
expect(Pluralize('cat', 0)).toBe('cats');
|
|
281
|
+
expect(Pluralize('cat', 2)).toBe('cats');
|
|
282
|
+
});
|
|
283
|
+
it('uses custom plural when provided', () => {
|
|
284
|
+
expect(Pluralize('child', 3, 'children')).toBe('children');
|
|
285
|
+
});
|
|
286
|
+
it('returns empty string for empty/null input', () => {
|
|
287
|
+
expect(Pluralize('', 2)).toBe('');
|
|
288
|
+
expect(Pluralize(null, 2)).toBe('');
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
describe('WordCount', () => {
|
|
292
|
+
it('counts words', () => {
|
|
293
|
+
expect(WordCount('hello world')).toBe(2);
|
|
294
|
+
});
|
|
295
|
+
it('handles extra whitespace', () => {
|
|
296
|
+
expect(WordCount(' foo bar baz ')).toBe(3);
|
|
297
|
+
});
|
|
298
|
+
it('returns 0 for empty string', () => {
|
|
299
|
+
expect(WordCount('')).toBe(0);
|
|
300
|
+
expect(WordCount(' ')).toBe(0);
|
|
301
|
+
});
|
|
302
|
+
it('returns 0 for null input', () => {
|
|
303
|
+
expect(WordCount(null)).toBe(0);
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
describe('CountOccurrences', () => {
|
|
307
|
+
it('counts non-overlapping occurrences', () => {
|
|
308
|
+
expect(CountOccurrences('hello world hello', 'hello')).toBe(2);
|
|
309
|
+
});
|
|
310
|
+
it('returns 0 when substring is not found', () => {
|
|
311
|
+
expect(CountOccurrences('hello', 'xyz')).toBe(0);
|
|
312
|
+
});
|
|
313
|
+
it('counts non-overlapping matches', () => {
|
|
314
|
+
expect(CountOccurrences('aaa', 'aa')).toBe(1);
|
|
315
|
+
});
|
|
316
|
+
it('returns 0 for empty inputs', () => {
|
|
317
|
+
expect(CountOccurrences('', 'a')).toBe(0);
|
|
318
|
+
expect(CountOccurrences('hello', '')).toBe(0);
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
//# sourceMappingURL=string.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.test.js","sourceRoot":"","sources":["../../src/string/string.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TStringTransformer } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Reverses a string.
|
|
4
|
+
*
|
|
5
|
+
* @param input The input string.
|
|
6
|
+
* @returns The reversed string.
|
|
7
|
+
* @see {@link TStringTransformer}
|
|
8
|
+
*/
|
|
9
|
+
export declare const REVERSE_STRING: TStringTransformer;
|
|
10
|
+
/**
|
|
11
|
+
* Converts a string to a URL-friendly slug.
|
|
12
|
+
*
|
|
13
|
+
* @param input The input string.
|
|
14
|
+
* @returns The URL-friendly slug.
|
|
15
|
+
* @see {@link TStringTransformer}
|
|
16
|
+
*/
|
|
17
|
+
export declare const SLUGIFY: TStringTransformer;
|
|
18
|
+
//# sourceMappingURL=transformation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../../src/string/transformation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,kBAM5B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,kBAWrB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reverses a string.
|
|
3
|
+
*
|
|
4
|
+
* @param input The input string.
|
|
5
|
+
* @returns The reversed string.
|
|
6
|
+
* @see {@link TStringTransformer}
|
|
7
|
+
*/
|
|
8
|
+
export const REVERSE_STRING = (input) => {
|
|
9
|
+
if (input && typeof input === 'string') {
|
|
10
|
+
return Array.from(input).reverse().join('');
|
|
11
|
+
}
|
|
12
|
+
return '';
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Converts a string to a URL-friendly slug.
|
|
16
|
+
*
|
|
17
|
+
* @param input The input string.
|
|
18
|
+
* @returns The URL-friendly slug.
|
|
19
|
+
* @see {@link TStringTransformer}
|
|
20
|
+
*/
|
|
21
|
+
export const SLUGIFY = (input) => {
|
|
22
|
+
if (input && typeof input === 'string') {
|
|
23
|
+
return input
|
|
24
|
+
.toLowerCase()
|
|
25
|
+
.trim()
|
|
26
|
+
.replace(/[^\w\s-]/gu, '')
|
|
27
|
+
.replace(/[\s_-]+/gu, '-')
|
|
28
|
+
.replace(/^-+|-+$/gu, '');
|
|
29
|
+
}
|
|
30
|
+
return '';
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=transformation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformation.js","sourceRoot":"","sources":["../../src/string/transformation.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,KAAa,EAAU,EAAE;IAC3E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAuB,CAAC,KAAa,EAAU,EAAE;IACpE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK;aACV,WAAW,EAAE;aACb,IAAI,EAAE;aACN,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;aACzB,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;aACzB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String validator function type
|
|
3
|
+
* @param value - The string to validate
|
|
4
|
+
* @returns true if valid, false otherwise
|
|
5
|
+
*/
|
|
6
|
+
export type TStringValidator = (value: string) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* String formatter function type with optional parameters
|
|
9
|
+
* @param value - The string to format
|
|
10
|
+
* @param params - Optional formatting parameters
|
|
11
|
+
* @returns The formatted string
|
|
12
|
+
*/
|
|
13
|
+
export type TStringFormatter = (value: string, ...params: unknown[]) => string;
|
|
14
|
+
/**
|
|
15
|
+
* String transformer function type
|
|
16
|
+
* @param input - The input string
|
|
17
|
+
* @returns The transformed string
|
|
18
|
+
*/
|
|
19
|
+
export type TStringTransformer = (input: string) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Case converter function type
|
|
22
|
+
* @param value - The string to convert
|
|
23
|
+
* @returns The converted string
|
|
24
|
+
*/
|
|
25
|
+
export type TCaseConverter = (value: string) => string;
|
|
26
|
+
/**
|
|
27
|
+
* String predicate function type
|
|
28
|
+
* @param value - The string to test
|
|
29
|
+
* @returns true if the string passes the predicate, false otherwise
|
|
30
|
+
*/
|
|
31
|
+
export type TStringPredicate = (value: string) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Format parameter value types
|
|
34
|
+
*/
|
|
35
|
+
export type TFormatValue = string | number | boolean | null | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Format parameters as key-value pairs
|
|
38
|
+
*/
|
|
39
|
+
export type TFormatParams = Record<string, TFormatValue>;
|
|
40
|
+
/**
|
|
41
|
+
* Format parameters as positional array
|
|
42
|
+
*/
|
|
43
|
+
export type TFormatArgs = TFormatValue[];
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/string/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;AAE/E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/string/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TStringValidator } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a string is empty or contains only whitespace.
|
|
4
|
+
*
|
|
5
|
+
* @param value The string to check.
|
|
6
|
+
* @returns `true` if the string is empty or contains only whitespace.
|
|
7
|
+
* @see {@link TStringValidator}
|
|
8
|
+
*/
|
|
9
|
+
export declare const IS_BLANK_STRING: TStringValidator;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a string is a valid hexadecimal value.
|
|
12
|
+
*
|
|
13
|
+
* @param value The input string.
|
|
14
|
+
* @returns `true` if the string is a valid hexadecimal value.
|
|
15
|
+
* @see {@link TStringValidator}
|
|
16
|
+
*/
|
|
17
|
+
export declare const IS_HEX_STRING: TStringValidator;
|
|
18
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/string/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,gBAE7B,CAAC;AAQF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,gBAE3B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a string is empty or contains only whitespace.
|
|
3
|
+
*
|
|
4
|
+
* @param value The string to check.
|
|
5
|
+
* @returns `true` if the string is empty or contains only whitespace.
|
|
6
|
+
* @see {@link TStringValidator}
|
|
7
|
+
*/
|
|
8
|
+
export const IS_BLANK_STRING = (value) => {
|
|
9
|
+
return !value || (/^\s*$/u).test(value);
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Compiled regex pattern for hexadecimal validation.
|
|
13
|
+
* Cached for optimal performance with repeated calls.
|
|
14
|
+
*/
|
|
15
|
+
const HEX_PATTERN = /^(?<prefix>#|0x)?(?<hex>[0-9a-f]+)$/iu;
|
|
16
|
+
/**
|
|
17
|
+
* Checks if a string is a valid hexadecimal value.
|
|
18
|
+
*
|
|
19
|
+
* @param value The input string.
|
|
20
|
+
* @returns `true` if the string is a valid hexadecimal value.
|
|
21
|
+
* @see {@link TStringValidator}
|
|
22
|
+
*/
|
|
23
|
+
export const IS_HEX_STRING = (value) => {
|
|
24
|
+
return HEX_PATTERN.test(value);
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/string/validation.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqB,CAAC,KAAa,EAAW,EAAE;IAC3E,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqB,CAAC,KAAa,EAAW,EAAE;IACzE,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IDefaultUnitLabels, IFormats } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Default unit labels for different formatting styles.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_UNIT_LABELS: IDefaultUnitLabels;
|
|
6
|
+
/**
|
|
7
|
+
* Predefined formatter styles with comprehensive formatting options.
|
|
8
|
+
*/
|
|
9
|
+
export declare const FORMATS: IFormats;
|
|
10
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/time/elapsed-time/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAuCxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,QAkEZ,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default unit labels for different formatting styles.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_UNIT_LABELS = {
|
|
5
|
+
concise: {
|
|
6
|
+
day: 'd',
|
|
7
|
+
hour: 'h',
|
|
8
|
+
millisecond: 'ms',
|
|
9
|
+
minute: 'm',
|
|
10
|
+
second: 's',
|
|
11
|
+
week: 'w',
|
|
12
|
+
},
|
|
13
|
+
long: {
|
|
14
|
+
day: (value) => `${value === 1 ? 'day' : 'days'}`,
|
|
15
|
+
hour: (value) => `${value === 1 ? 'hour' : 'hours'}`,
|
|
16
|
+
millisecond: (value) => `${value === 1 ? 'millisecond' : 'milliseconds'}`,
|
|
17
|
+
minute: (value) => `${value === 1 ? 'minute' : 'minutes'}`,
|
|
18
|
+
second: (value) => `${value === 1 ? 'second' : 'seconds'}`,
|
|
19
|
+
week: (value) => `${value === 1 ? 'week' : 'weeks'}`,
|
|
20
|
+
},
|
|
21
|
+
medium: {
|
|
22
|
+
day: 'day',
|
|
23
|
+
hour: 'hour',
|
|
24
|
+
millisecond: 'ms',
|
|
25
|
+
minute: 'min',
|
|
26
|
+
second: 'sec',
|
|
27
|
+
week: 'week',
|
|
28
|
+
},
|
|
29
|
+
short: {
|
|
30
|
+
day: 'd',
|
|
31
|
+
hour: 'hr',
|
|
32
|
+
millisecond: 'ms',
|
|
33
|
+
minute: 'min',
|
|
34
|
+
second: 'sec',
|
|
35
|
+
week: 'wk',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Predefined formatter styles with comprehensive formatting options.
|
|
40
|
+
*/
|
|
41
|
+
export const FORMATS = {
|
|
42
|
+
/**
|
|
43
|
+
* Format like "1h 30m 45s"
|
|
44
|
+
*/
|
|
45
|
+
concise: {
|
|
46
|
+
unitLabels: DEFAULT_UNIT_LABELS.concise,
|
|
47
|
+
},
|
|
48
|
+
/**
|
|
49
|
+
* Format like "1 hour 30 minutes 45 seconds" with proper pluralization
|
|
50
|
+
*/
|
|
51
|
+
long: {
|
|
52
|
+
unitLabels: DEFAULT_UNIT_LABELS.long,
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Format like "1 hour 30 min 45 sec"
|
|
56
|
+
*/
|
|
57
|
+
medium: {
|
|
58
|
+
unitLabels: DEFAULT_UNIT_LABELS.medium,
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* Format showing only the most significant 2 units
|
|
62
|
+
*/
|
|
63
|
+
mostSignificant: {
|
|
64
|
+
maxUnits: 2,
|
|
65
|
+
unitLabels: DEFAULT_UNIT_LABELS.medium,
|
|
66
|
+
},
|
|
67
|
+
/**
|
|
68
|
+
* Format like "1hr 30min 45sec"
|
|
69
|
+
*/
|
|
70
|
+
short: {
|
|
71
|
+
unitLabels: DEFAULT_UNIT_LABELS.short,
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* Format showing only hours and minutes like "1:30"
|
|
75
|
+
*/
|
|
76
|
+
time: {
|
|
77
|
+
maxUnits: 2,
|
|
78
|
+
unitLabels: {
|
|
79
|
+
hour: (value) => `${value}:`,
|
|
80
|
+
minute: (value) => `${value.toString().padStart(2, '0')}`,
|
|
81
|
+
second: (value) => `:${value.toString().padStart(2, '0')}`,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Format showing hours, minutes and seconds like "1:30:45"
|
|
86
|
+
*/
|
|
87
|
+
timeWithSeconds: {
|
|
88
|
+
maxUnits: 3,
|
|
89
|
+
unitLabels: {
|
|
90
|
+
hour: (value) => `${value}:`,
|
|
91
|
+
minute: (value) => `${value.toString().padStart(2, '0')}:`,
|
|
92
|
+
second: (value) => `${value.toString().padStart(2, '0')}`,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/time/elapsed-time/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACtD,OAAO,EAAE;QACR,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,GAAG;KACT;IACD,IAAI,EAAE;QAEL,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;QAEzD,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;QAE5D,WAAW,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,EAAE;QAEjF,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;QAElE,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;QAElE,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;KAC5D;IACD,MAAM,EAAE;QACP,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,MAAM;KACZ;IACD,KAAK,EAAE;QACN,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI;KACV;CACQ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAa;IAChC;;OAEG;IACH,OAAO,EAAE;QACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;KACvC;IAED;;OAEG;IACH,IAAI,EAAE;QACL,UAAU,EAAE,mBAAmB,CAAC,IAAI;KACpC;IAED;;OAEG;IACH,MAAM,EAAE;QACP,UAAU,EAAE,mBAAmB,CAAC,MAAM;KACtC;IAED;;OAEG;IACH,eAAe,EAAE;QAChB,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,mBAAmB,CAAC,MAAM;KACtC;IAED;;OAEG;IACH,KAAK,EAAE;QACN,UAAU,EAAE,mBAAmB,CAAC,KAAK;KACrC;IAED;;OAEG;IACH,IAAI,EAAE;QACL,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE;YAEX,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG;YAEpC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YAEjE,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SAClE;KACD;IAED;;OAEG;IACH,eAAe,EAAE;QAChB,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE;YAEX,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG;YAEpC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;YAElE,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SACjE;KACD;CACQ,CAAC"}
|