@thi.ng/strings 3.1.3 → 3.2.2

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.
Files changed (4) hide show
  1. package/CHANGELOG.md +221 -136
  2. package/README.md +1 -1
  3. package/package.json +200 -195
  4. package/units.js +1 -1
package/CHANGELOG.md CHANGED
@@ -1,266 +1,351 @@
1
1
  # Change Log
2
2
 
3
+ - **Last updated**: 2021-11-21T17:09:28Z
4
+ - **Generator**: [thi.ng/monopub](https://thi.ng/monopub)
5
+
3
6
  All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
+ See [Conventional Commits](https://conventionalcommits.org/) for commit guidelines.
5
8
 
6
- ## [3.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@3.1.2...@thi.ng/strings@3.1.3) (2021-11-03)
9
+ **Note:** Unlisted _patch_ versions only involve non-code or otherwise excluded changes
10
+ and/or version bumps of transitive dependencies.
7
11
 
8
- **Note:** Version bump only for package @thi.ng/strings
12
+ ## [3.2.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@3.2.0) (2021-11-17)
9
13
 
14
+ #### 🚀 Features
10
15
 
16
+ - Using workspaces for local tools ([bf7a404](https://github.com/thi-ng/umbrella/commit/bf7a404))
17
+ Improving the overall build ergonomics
18
+ - introduced a tools workspaces
19
+ - imported it in all needed packages/examples
20
+ - inclusive project root
11
21
 
22
+ #### ♻️ Refactoring
12
23
 
24
+ - testrunner to binary ([4ebbbb2](https://github.com/thi-ng/umbrella/commit/4ebbbb2))
25
+ this commit reverts (partly) changes made in:
26
+ ef346d7a8753590dc9094108a3d861a8dbd5dd2c
27
+ overall purpose is better testament ergonomics:
28
+ instead of having to pass NODE_OPTIONS with every invocation
29
+ having a binary to handle this for us.
13
30
 
14
- # [3.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@3.0.3...@thi.ng/strings@3.1.0) (2021-10-25)
31
+ ### [3.1.4](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@3.1.4) (2021-11-10)
15
32
 
33
+ #### ♻️ Refactoring
16
34
 
17
- ### Features
35
+ - update all countdown loops ([a5f374b](https://github.com/thi-ng/umbrella/commit/a5f374b))
18
36
 
19
- * **strings:** migrate/add entities, regexes, fns ([57c246d](https://github.com/thi-ng/umbrella/commit/57c246df06279a2e70cfb28ce34ff8d9666b0199))
37
+ ## [3.1.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@3.1.0) (2021-10-25)
20
38
 
39
+ #### 🚀 Features
21
40
 
41
+ - migrate/add entities, regexes, fns ([57c246d](https://github.com/thi-ng/umbrella/commit/57c246d))
22
42
 
43
+ ### [3.0.1](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@3.0.1) (2021-10-13)
23
44
 
45
+ #### ♻️ Refactoring
24
46
 
25
- # [3.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@2.1.7...@thi.ng/strings@3.0.0) (2021-10-12)
47
+ - update imports in all tests/pkgs ([effd591](https://github.com/thi-ng/umbrella/commit/effd591))
48
+ - update imports in all pkgs ([5fa2b6f](https://github.com/thi-ng/umbrella/commit/5fa2b6f))
49
+ - add .js suffix for all relative imports
26
50
 
51
+ # [3.0.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@3.0.0) (2021-10-12)
27
52
 
28
- ### Build System
53
+ #### 🛑 Breaking changes
29
54
 
30
- * major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
55
+ - major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea))
56
+ - BREAKING CHANGE: discontinue CommonJS & UMD versions
57
+ - only ESM modules will be published from now on
58
+ - CJS obsolete due to ESM support in recent versions of node:
59
+ - i.e. launch NodeJS via:
60
+ - `node --experimental-specifier-resolution=node --experimental-repl-await`
61
+ - in the node REPL use `await import(...)` instead of `require()`
62
+ - UMD obsolete due to widespread browser support for ESM
63
+ Also:
64
+ - normalize/restructure/reorg all package.json files
65
+ - cleanup all build scripts, remove obsolete
66
+ - switch from mocha to [@thi.ng/testament](https://github.com/thi-ng/umbrella/tree/main/packages/testament) for all tests
31
67
 
68
+ #### 🚀 Features
32
69
 
33
- ### Features
70
+ - add initials() ([5b8476f](https://github.com/thi-ng/umbrella/commit/5b8476f))
34
71
 
35
- * **strings:** add initials() ([5b8476f](https://github.com/thi-ng/umbrella/commit/5b8476f28dcfbbc252b11eb68a08f6d47aeca300))
72
+ #### ♻️ Refactoring
36
73
 
74
+ - update imports ([138571a](https://github.com/thi-ng/umbrella/commit/138571a))
75
+ - update all tests in _all_ pkgs ([8b582bc](https://github.com/thi-ng/umbrella/commit/8b582bc))
76
+ - update all to use [@thi.ng/testament](https://github.com/thi-ng/umbrella/tree/main/packages/testament)
37
77
 
38
- ### BREAKING CHANGES
78
+ ## [2.1.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@2.1.0) (2021-03-24)
39
79
 
40
- * discontinue CommonJS & UMD versions
80
+ #### 🚀 Features
41
81
 
42
- - only ESM modules will be published from now on
43
- - CJS obsolete due to ESM support in recent versions of node:
44
- - i.e. launch NodeJS via:
45
- - `node --experimental-specifier-resolution=node --experimental-repl-await`
46
- - in the node REPL use `await import(...)` instead of `require()`
47
- - UMD obsolete due to widespread browser support for ESM
82
+ - add ruler(), grid() fns, update readme ([d93cbf9](https://github.com/thi-ng/umbrella/commit/d93cbf9))
48
83
 
49
- Also:
50
- - normalize/restructure/reorg all package.json files
51
- - cleanup all build scripts, remove obsolete
52
- - switch from mocha to @thi.ng/testament for all tests
84
+ #### ♻️ Refactoring
53
85
 
86
+ - update opts default handling ([fc92745](https://github.com/thi-ng/umbrella/commit/fc92745))
87
+ - update wrapWord(), wordWrapLine()
54
88
 
89
+ # [2.0.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@2.0.0) (2021-03-24)
55
90
 
91
+ #### 🛑 Breaking changes
56
92
 
93
+ - major update wordWrap() & co. ([9c9c9cc](https://github.com/thi-ng/umbrella/commit/9c9c9cc))
94
+ - BREAKING CHANGE: major update wordWrap(), wordWrapLines() etc.
95
+ - update arguments
96
+ - add `WordWrapOpts` to configure wordwrap behavior
97
+ - add `IWordSplit` interface and `SPLIT_PLAIN`, `SPLIT_ANSI` impls
98
+ - implement hardwrap mode
57
99
 
100
+ #### 🚀 Features
58
101
 
59
- # [2.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@2.0.0...@thi.ng/strings@2.1.0) (2021-03-24)
102
+ - add ANSI predicates ([928694b](https://github.com/thi-ng/umbrella/commit/928694b))
103
+ - update split() args ([ea503e8](https://github.com/thi-ng/umbrella/commit/ea503e8))
104
+ - allow string delimiters (or regexp)
60
105
 
61
- ### Features
106
+ ## [1.15.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.15.0) (2021-02-20)
62
107
 
63
- - **strings:** add ruler(), grid() fns, update readme ([d93cbf9](https://github.com/thi-ng/umbrella/commit/d93cbf9708c414e703fde61e80b5762f34899aa4))
108
+ #### 🚀 Features
64
109
 
65
- # [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.15.6...@thi.ng/strings@2.0.0) (2021-03-24)
110
+ - add int/intLocale, vector formatters ([ac55fe0](https://github.com/thi-ng/umbrella/commit/ac55fe0))
111
+ - add optional arg for float() for special NaN/Inf handling
66
112
 
67
- ### Features
113
+ #### ♻️ Refactoring
68
114
 
69
- - **strings:** add ANSI predicates ([928694b](https://github.com/thi-ng/umbrella/commit/928694b0a46a7a58b0b4ab56562afceb0b6c8d8d))
70
- - **strings:** major update wordWrap() & co. ([9c9c9cc](https://github.com/thi-ng/umbrella/commit/9c9c9cc1abe68ec32edbe91ac5c277561cafd3c4))
71
- - **strings:** update split() args ([ea503e8](https://github.com/thi-ng/umbrella/commit/ea503e8abdf3598ccd0c1abf5d484164ea73890c))
115
+ - avoid [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/main/packages/checks) dep in vector() ([410d463](https://github.com/thi-ng/umbrella/commit/410d463))
116
+ - update uuid() ([7fe966a](https://github.com/thi-ng/umbrella/commit/7fe966a))
117
+ - re-use fn from [@thi.ng/hex](https://github.com/thi-ng/umbrella/tree/main/packages/hex)
72
118
 
73
- ### BREAKING CHANGES
119
+ ## [1.14.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.14.0) (2021-01-13)
74
120
 
75
- - **strings:** major update wordWrap(), wordWrapLines() etc.
76
- - update arguments
77
- - add `WordWrapOpts` to configure wordwrap behavior
78
- - add `IWordSplit` interface and `SPLIT_PLAIN`, `SPLIT_ANSI` impls
79
- - implement hardwrap mode
121
+ #### 🚀 Features
80
122
 
81
- # [1.15.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.14.0...@thi.ng/strings@1.15.0) (2021-02-20)
123
+ - add stringify() HOF ([4ab7e72](https://github.com/thi-ng/umbrella/commit/4ab7e72))
82
124
 
83
- ### Features
125
+ #### ♻️ Refactoring
84
126
 
85
- - **strings:** add int/intLocale, vector formatters ([ac55fe0](https://github.com/thi-ng/umbrella/commit/ac55fe007bed81d04848eddb1c4145eb26cdd437))
127
+ - minor update computeCursorPos() ([a593d66](https://github.com/thi-ng/umbrella/commit/a593d66))
128
+ - minor update uuid() ([0a37562](https://github.com/thi-ng/umbrella/commit/0a37562))
86
129
 
87
- # [1.14.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.13.0...@thi.ng/strings@1.14.0) (2021-01-13)
130
+ ## [1.13.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.13.0) (2021-01-10)
88
131
 
89
- ### Features
132
+ #### 🚀 Features
90
133
 
91
- - **strings:** add stringify() HOF ([4ab7e72](https://github.com/thi-ng/umbrella/commit/4ab7e72bf87cbf058a38ca85b5e2853a5f432d9d))
134
+ - add tab conversion fns ([aefdd97](https://github.com/thi-ng/umbrella/commit/aefdd97))
135
+ - add wordWrap*() fns ([2a283c0](https://github.com/thi-ng/umbrella/commit/2a283c0))
136
+ - add stripAnsi(), lengthAnsi() fns ([86fa81a](https://github.com/thi-ng/umbrella/commit/86fa81a))
137
+ - update padLeft/Right() args ([118f97f](https://github.com/thi-ng/umbrella/commit/118f97f))
138
+ - add optional length arg to explicitly specify string length
139
+ (e.g. to exclude ANSI control seq chars)
92
140
 
93
- # [1.13.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.12.0...@thi.ng/strings@1.13.0) (2021-01-10)
141
+ #### ⏱ Performance improvements
94
142
 
95
- ### Features
143
+ - simplify string default delim regexp ([bb62760](https://github.com/thi-ng/umbrella/commit/bb62760))
96
144
 
97
- - **strings:** add stripAnsi(), lengthAnsi() fns ([86fa81a](https://github.com/thi-ng/umbrella/commit/86fa81acb7dfcf1dc3d6f5600cbf427ee44cf722))
98
- - **strings:** add tab conversion fns ([aefdd97](https://github.com/thi-ng/umbrella/commit/aefdd97e27fce2405860e817b9c5b4aedb6e59e4))
99
- - **strings:** add wordWrap*() fns ([2a283c0](https://github.com/thi-ng/umbrella/commit/2a283c018592d8cc76f4ef83b69c6ce3c378aca6))
100
- - **strings:** update padLeft/Right() args ([118f97f](https://github.com/thi-ng/umbrella/commit/118f97f1fca27671c53d184484a7b435e6eedf88))
145
+ ## [1.12.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.12.0) (2021-01-05)
101
146
 
102
- ### Performance Improvements
147
+ #### 🚀 Features
103
148
 
104
- - **strings:** simplify string default delim regexp ([bb62760](https://github.com/thi-ng/umbrella/commit/bb62760f2069a1f7edeaa09ce0e0639047789af3))
149
+ - add interpolateKeys() ([bd78d1d](https://github.com/thi-ng/umbrella/commit/bd78d1d))
105
150
 
106
- # [1.12.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.11.4...@thi.ng/strings@1.12.0) (2021-01-05)
151
+ ### [1.11.4](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.11.4) (2021-01-02)
107
152
 
108
- ### Features
153
+ #### 🩹 Bug fixes
109
154
 
110
- - **strings:** add interpolateKeys() ([bd78d1d](https://github.com/thi-ng/umbrella/commit/bd78d1dba5e467e6cda452e6db6fcd0fb9a3cf19))
155
+ - update slugifyGH() replacements ([#174](https://github.com/thi-ng/umbrella/issues/174)) ([98a9135](https://github.com/thi-ng/umbrella/commit/98a9135))
156
+ - hard to find definitive info about GH's slugify rules
157
+ - new rules based on more manual experiments and
158
+ studying of unicode charts
159
+ - likely not a watertight solution, but should fix most issues
160
+ of prev impl
111
161
 
112
- ## [1.11.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.11.3...@thi.ng/strings@1.11.4) (2021-01-02)
162
+ ### [1.11.2](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.11.2) (2020-12-07)
113
163
 
114
- ### Bug Fixes
164
+ #### ♻️ Refactoring
115
165
 
116
- - **strings:** update slugifyGH() replacements ([#174](https://github.com/thi-ng/umbrella/issues/174)) ([98a9135](https://github.com/thi-ng/umbrella/commit/98a91351728d730446f9654fc93317c1bece77ed))
166
+ - update type-only imports in various tests/pkgs ([3fd9c24](https://github.com/thi-ng/umbrella/commit/3fd9c24))
117
167
 
118
- # [1.11.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.10.0...@thi.ng/strings@1.11.0) (2020-11-24)
168
+ ## [1.11.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.11.0) (2020-11-24)
119
169
 
120
- ### Features
170
+ #### 🚀 Features
121
171
 
122
- - **strings:** add split() iterator ([6d2ec4f](https://github.com/thi-ng/umbrella/commit/6d2ec4fccc688acf5a541ea51c9705faca1c9835))
172
+ - add split() iterator ([6d2ec4f](https://github.com/thi-ng/umbrella/commit/6d2ec4f))
123
173
 
124
- # [1.10.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.9.6...@thi.ng/strings@1.10.0) (2020-09-22)
174
+ #### ♻️ Refactoring
125
175
 
126
- ### Features
176
+ - replace hex formatters w/ [@thi.ng/hex](https://github.com/thi-ng/umbrella/tree/main/packages/hex) ([6d7446c](https://github.com/thi-ng/umbrella/commit/6d7446c))
177
+ - add [@thi.ng/hex](https://github.com/thi-ng/umbrella/tree/main/packages/hex) dependency
178
+ - replace U8/16/24/32/64
179
+ - refactor uuid()
127
180
 
128
- - **strings:** add BOM const, update pkg meta ([b6751fc](https://github.com/thi-ng/umbrella/commit/b6751fc506a28a075ea9fee1a5f6d3520449f5af))
129
- - **strings:** add escape(), update unescape(), add tests ([e0d5f1e](https://github.com/thi-ng/umbrella/commit/e0d5f1edcdf78b075908c4973586a0f1732fe006))
130
- - **strings:** add unescape() ([924466b](https://github.com/thi-ng/umbrella/commit/924466bc5d5f16ced3da95fa2f24dab2bfad0679))
181
+ ## [1.10.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.10.0) (2020-09-22)
131
182
 
132
- # [1.9.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.8.13...@thi.ng/strings@1.9.0) (2020-07-08)
183
+ #### 🚀 Features
133
184
 
134
- ### Features
185
+ - add BOM const, update pkg meta ([b6751fc](https://github.com/thi-ng/umbrella/commit/b6751fc))
186
+ - add escape(), update unescape(), add tests ([e0d5f1e](https://github.com/thi-ng/umbrella/commit/e0d5f1e))
187
+ - add unescape() ([924466b](https://github.com/thi-ng/umbrella/commit/924466b))
135
188
 
136
- - **strings:** add computeCursorPos() ([c178d00](https://github.com/thi-ng/umbrella/commit/c178d00edcdbe12cec492a1629c80bf359116b66))
189
+ ### [1.9.6](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.9.6) (2020-09-13)
137
190
 
138
- # [1.8.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.7.0...@thi.ng/strings@1.8.0) (2020-03-28)
191
+ #### ♻️ Refactoring
139
192
 
140
- ### Features
193
+ - update deps, imports, use new Fn types ([3d21571](https://github.com/thi-ng/umbrella/commit/3d21571))
141
194
 
142
- - **strings:** add join() HOF ([1c5c46f](https://github.com/thi-ng/umbrella/commit/1c5c46f5ac832865266613a6d71024507238b694))
143
- - **strings:** add slugifyGH(), refactor slugify() ([1ef805b](https://github.com/thi-ng/umbrella/commit/1ef805be3f0347751eba6da0122e1277a5b81e21))
144
- - **strings:** add trim() HOF ([350a6c6](https://github.com/thi-ng/umbrella/commit/350a6c6cb010e00f2053fb41eeb0f458ee8fb715))
195
+ ## [1.9.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.9.0) (2020-07-08)
145
196
 
146
- # [1.7.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.6.0...@thi.ng/strings@1.7.0) (2020-03-06)
197
+ #### 🚀 Features
147
198
 
148
- ### Features
199
+ - add computeCursorPos() ([c178d00](https://github.com/thi-ng/umbrella/commit/c178d00))
149
200
 
150
- - **strings:** add char group LUTs for classification ([c3ff006](https://github.com/thi-ng/umbrella/commit/c3ff006b237bece057f675d62a47d29bab9df413))
201
+ ### [1.8.4](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.8.4) (2020-04-20)
151
202
 
152
- # [1.6.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.5.2...@thi.ng/strings@1.6.0) (2020-03-01)
203
+ #### ♻️ Refactoring
153
204
 
154
- ### Features
205
+ - update ALPHA, ALPHA_NUM & WS groups ([719b437](https://github.com/thi-ng/umbrella/commit/719b437))
155
206
 
156
- - **strings:** add defFormat() HOF ([62f4e04](https://github.com/thi-ng/umbrella/commit/62f4e04c72e8822930da3f337898dae0ea51f6d0))
207
+ ## [1.8.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.8.0) (2020-03-28)
157
208
 
158
- # [1.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.4.0...@thi.ng/strings@1.5.0) (2020-02-25)
209
+ #### 🚀 Features
159
210
 
160
- ### Features
211
+ - add trim() HOF ([350a6c6](https://github.com/thi-ng/umbrella/commit/350a6c6))
212
+ - add slugifyGH(), refactor slugify() ([1ef805b](https://github.com/thi-ng/umbrella/commit/1ef805b))
213
+ - add join() HOF ([1c5c46f](https://github.com/thi-ng/umbrella/commit/1c5c46f))
161
214
 
162
- - **strings:** add uuid() formatter ([4592742](https://github.com/thi-ng/umbrella/commit/4592742daad1020aa336e3d819324f4555223160))
215
+ #### ♻️ Refactoring
163
216
 
164
- # [1.4.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.3.3...@thi.ng/strings@1.4.0) (2020-01-26)
217
+ - update bits/bytes unit defs ([f9becb1](https://github.com/thi-ng/umbrella/commit/f9becb1))
218
+ - add truncateRight alias ([81fb592](https://github.com/thi-ng/umbrella/commit/81fb592))
165
219
 
166
- ### Features
220
+ ## [1.7.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.7.0) (2020-03-06)
167
221
 
168
- - **strings:** add format() helpers (str, ignore) ([df87b7c](https://github.com/thi-ng/umbrella/commit/df87b7c7f0a1f9fa5b299fe8311fda02f40ab4cd))
169
- - **strings:** add interpolate() ([a19e409](https://github.com/thi-ng/umbrella/commit/a19e4094494a8b4af6c35626e4a99394e0481a4e))
222
+ #### 🚀 Features
170
223
 
171
- # [1.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.2.3...@thi.ng/strings@1.3.0) (2019-09-21)
224
+ - add char group LUTs for classification ([c3ff006](https://github.com/thi-ng/umbrella/commit/c3ff006))
172
225
 
173
- ### Features
226
+ ## [1.6.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.6.0) (2020-03-01)
174
227
 
175
- - **strings:** add charRange(), add radix & zero-pad presets ([c9e5a63](https://github.com/thi-ng/umbrella/commit/c9e5a63))
228
+ #### 🚀 Features
176
229
 
177
- # [1.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.1.3...@thi.ng/strings@1.2.0) (2019-07-07)
230
+ - add defFormat() HOF ([62f4e04](https://github.com/thi-ng/umbrella/commit/62f4e04))
178
231
 
179
- ### Features
232
+ ## [1.5.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.5.0) (2020-02-25)
180
233
 
181
- - **strings:** enable TS strict compiler flags (refactor) ([76cecb8](https://github.com/thi-ng/umbrella/commit/76cecb8))
234
+ #### 🚀 Features
182
235
 
183
- # [1.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.0.7...@thi.ng/strings@1.1.0) (2019-04-15)
236
+ - add uuid() formatter ([4592742](https://github.com/thi-ng/umbrella/commit/4592742))
184
237
 
185
- ### Features
238
+ #### ♻️ Refactoring
186
239
 
187
- - **strings:** add hstr() (hollerith) ([619e9ef](https://github.com/thi-ng/umbrella/commit/619e9ef))
240
+ - update imports ([3937dc6](https://github.com/thi-ng/umbrella/commit/3937dc6))
188
241
 
189
- ## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.0.1...@thi.ng/strings@1.0.2) (2019-01-31)
242
+ ## [1.4.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.4.0) (2020-01-26)
190
243
 
191
- ### Bug Fixes
244
+ #### 🚀 Features
192
245
 
193
- - **strings:** fix [#70](https://github.com/thi-ng/umbrella/issues/70), replace kebab() regex w/ legacy version ([3adabc4](https://github.com/thi-ng/umbrella/commit/3adabc4))
246
+ - add interpolate() ([a19e409](https://github.com/thi-ng/umbrella/commit/a19e409))
247
+ - add format() helpers (str, ignore) ([df87b7c](https://github.com/thi-ng/umbrella/commit/df87b7c))
194
248
 
195
- # [1.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.7.1...@thi.ng/strings@1.0.0) (2019-01-21)
249
+ ## [1.3.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.3.0) (2019-09-21)
196
250
 
197
- ### Build System
251
+ #### 🚀 Features
198
252
 
199
- - update package build scripts & outputs, imports in ~50 packages ([b54b703](https://github.com/thi-ng/umbrella/commit/b54b703))
253
+ - add charRange(), add radix & zero-pad presets ([c9e5a63](https://github.com/thi-ng/umbrella/commit/c9e5a63))
254
+
255
+ ## [1.2.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.2.0) (2019-07-07)
256
+
257
+ #### 🚀 Features
258
+
259
+ - enable TS strict compiler flags (refactor) ([76cecb8](https://github.com/thi-ng/umbrella/commit/76cecb8))
260
+
261
+ #### ♻️ Refactoring
262
+
263
+ - address TS strictNullChecks flag ([fb315fe](https://github.com/thi-ng/umbrella/commit/fb315fe))
200
264
 
201
- ### Features
265
+ ## [1.1.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.1.0) (2019-04-15)
202
266
 
203
- - **strings:** add floatFixedWidth(), update float() ([816c9c0](https://github.com/thi-ng/umbrella/commit/816c9c0))
267
+ #### 🚀 Features
204
268
 
205
- ### BREAKING CHANGES
269
+ - add hstr() (hollerith) ([619e9ef](https://github.com/thi-ng/umbrella/commit/619e9ef))
206
270
 
207
- - enabled multi-outputs (ES6 modules, CJS, UMD)
208
- - build scripts now first build ES6 modules in package root, then call `scripts/bundle-module` to build minified CJS & UMD bundles in `/lib`
209
- - all imports MUST be updated to only refer to package level (not individual files anymore). tree shaking in user land will get rid of all unused imported symbols.
271
+ ### [1.0.2](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.0.2) (2019-01-31)
272
+
273
+ #### 🩹 Bug fixes
274
+
275
+ - fix [#70](https://github.com/thi-ng/umbrella/issues/70), replace kebab() regex w/ legacy version ([3adabc4](https://github.com/thi-ng/umbrella/commit/3adabc4))
276
+
277
+ # [1.0.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@1.0.0) (2019-01-21)
278
+
279
+ #### 🛑 Breaking changes
280
+
281
+ - update package build scripts & outputs, imports in ~50 packages ([b54b703](https://github.com/thi-ng/umbrella/commit/b54b703))
282
+ - BREAKING CHANGE: enabled multi-outputs (ES6 modules, CJS, UMD)
283
+ - build scripts now first build ES6 modules in package root, then call
284
+ `scripts/bundle-module` to build minified CJS & UMD bundles in `/lib`
285
+ - all imports MUST be updated to only refer to package level
286
+ (not individual files anymore). tree shaking in user land will get rid of
287
+ all unused imported symbols.
210
288
 
211
- # [0.7.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.6.0...@thi.ng/strings@0.7.0) (2018-12-13)
289
+ ## [0.7.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.7.0) (2018-12-13)
212
290
 
213
- ### Bug Fixes
291
+ #### 🚀 Features
214
292
 
215
- - **strings:** update kebab() ([1b298f7](https://github.com/thi-ng/umbrella/commit/1b298f7))
293
+ - add slugify() ([8dcc73a](https://github.com/thi-ng/umbrella/commit/8dcc73a))
216
294
 
217
- ### Features
295
+ #### 🩹 Bug fixes
218
296
 
219
- - **strings:** add slugify() ([8dcc73a](https://github.com/thi-ng/umbrella/commit/8dcc73a))
297
+ - update kebab() ([1b298f7](https://github.com/thi-ng/umbrella/commit/1b298f7))
298
+ - fix initial capital handling
299
+ - add (partial) UTF-8 support
300
+ - add note about Safari / FF
220
301
 
221
- # [0.6.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.5.2...@thi.ng/strings@0.6.0) (2018-11-08)
302
+ ## [0.6.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.6.0) (2018-11-08)
222
303
 
223
- ### Features
304
+ #### 🚀 Features
224
305
 
225
- - **strings:** add configurable units() HOF & presets ([33e915b](https://github.com/thi-ng/umbrella/commit/33e915b))
306
+ - add configurable units() HOF & presets ([33e915b](https://github.com/thi-ng/umbrella/commit/33e915b))
307
+ - add presets formatters: seconds(), meters(), grams(), bits(), bytes()
226
308
 
227
- # [0.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.4.3...@thi.ng/strings@0.5.0) (2018-09-25)
309
+ ## [0.5.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.5.0) (2018-09-25)
228
310
 
229
- ### Features
311
+ #### 🚀 Features
230
312
 
231
- - **strings:** add splice(), refactor repeat(), add tests ([0cce048](https://github.com/thi-ng/umbrella/commit/0cce048))
313
+ - add splice(), refactor repeat(), add tests ([0cce048](https://github.com/thi-ng/umbrella/commit/0cce048))
232
314
 
233
- ## [0.4.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.4.2...@thi.ng/strings@0.4.3) (2018-09-24)
315
+ ### [0.4.3](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.4.3) (2018-09-24)
234
316
 
235
- ### Bug Fixes
317
+ #### 🩹 Bug fixes
236
318
 
237
- - **strings:** rename number parsers ([8cbfb97](https://github.com/thi-ng/umbrella/commit/8cbfb97))
319
+ - rename number parsers ([8cbfb97](https://github.com/thi-ng/umbrella/commit/8cbfb97))
320
+ - rename to `maybeParseInt` / `maybeParseFloat`
238
321
 
239
- # [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.2.0...@thi.ng/strings@0.3.0) (2018-08-24)
322
+ ## [0.3.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.3.0) (2018-08-24)
240
323
 
241
- ### Bug Fixes
324
+ #### 🚀 Features
242
325
 
243
- - **strings:** buffer length (for null inputs) (`center()`) ([5209c42](https://github.com/thi-ng/umbrella/commit/5209c42))
326
+ - add case converters ([653a175](https://github.com/thi-ng/umbrella/commit/653a175))
327
+ - camel / kebab / snake
328
+ - add truncateLeft() & wrap() stringers ([1a20bc2](https://github.com/thi-ng/umbrella/commit/1a20bc2))
244
329
 
245
- ### Features
330
+ #### 🩹 Bug fixes
246
331
 
247
- - **strings:** add case converters ([653a175](https://github.com/thi-ng/umbrella/commit/653a175))
248
- - **strings:** add truncateLeft() & wrap() stringers ([1a20bc2](https://github.com/thi-ng/umbrella/commit/1a20bc2))
332
+ - buffer length (for null inputs) (`center()`) ([5209c42](https://github.com/thi-ng/umbrella/commit/5209c42))
333
+ - also truncate oversized inputs
249
334
 
250
- # [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.1.1...@thi.ng/strings@0.2.0) (2018-08-08)
335
+ ## [0.2.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.2.0) (2018-08-08)
251
336
 
252
- ### Features
337
+ #### 🚀 Features
253
338
 
254
- - **strings:** add opt prefix arg for radix() ([5864f2c](https://github.com/thi-ng/umbrella/commit/5864f2c))
339
+ - add opt prefix arg for radix() ([5864f2c](https://github.com/thi-ng/umbrella/commit/5864f2c))
255
340
 
256
- ## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.1.0...@thi.ng/strings@0.1.1) (2018-08-08)
341
+ ### [0.1.1](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.1.1) (2018-08-08)
257
342
 
258
- ### Bug Fixes
343
+ #### 🩹 Bug fixes
259
344
 
260
- - **strings:** float type decl ([b2ebbfc](https://github.com/thi-ng/umbrella/commit/b2ebbfc))
345
+ - float type decl ([b2ebbfc](https://github.com/thi-ng/umbrella/commit/b2ebbfc))
261
346
 
262
- # 0.1.0 (2018-08-08)
347
+ ## [0.1.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/strings@0.1.0) (2018-08-08)
263
348
 
264
- ### Features
349
+ #### 🚀 Features
265
350
 
266
- - **strings:** re-import & update [@thi](https://github.com/thi).ng/strings from MBP2010 ([40781eb](https://github.com/thi-ng/umbrella/commit/40781eb))
351
+ - re-import & update [@thi.ng/strings](https://github.com/thi-ng/umbrella/tree/main/packages/strings) from MBP2010 ([40781eb](https://github.com/thi-ng/umbrella/commit/40781eb))
package/README.md CHANGED
@@ -142,7 +142,7 @@ node --experimental-repl-await
142
142
  > const strings = await import("@thi.ng/strings");
143
143
  ```
144
144
 
145
- Package sizes (gzipped, pre-treeshake): ESM: 4.38 KB
145
+ Package sizes (gzipped, pre-treeshake): ESM: 4.53 KB
146
146
 
147
147
  ## Dependencies
148
148
 
package/package.json CHANGED
@@ -1,196 +1,201 @@
1
1
  {
2
- "name": "@thi.ng/strings",
3
- "version": "3.1.3",
4
- "description": "Various string formatting & utility functions",
5
- "type": "module",
6
- "module": "./index.js",
7
- "typings": "./index.d.ts",
8
- "sideEffects": false,
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/thi-ng/umbrella.git"
12
- },
13
- "homepage": "https://github.com/thi-ng/umbrella/tree/develop/packages/format#readme",
14
- "funding": [
15
- {
16
- "type": "github",
17
- "url": "https://github.com/sponsors/postspectacular"
18
- },
19
- {
20
- "type": "patreon",
21
- "url": "https://patreon.com/thing_umbrella"
22
- }
23
- ],
24
- "author": "Karsten Schmidt <k+npm@thi.ng>",
25
- "license": "Apache-2.0",
26
- "scripts": {
27
- "build": "yarn clean && tsc --declaration",
28
- "clean": "rimraf *.js *.d.ts *.map doc",
29
- "doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
30
- "doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
31
- "doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
32
- "doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
33
- "pub": "yarn build && yarn publish --access public",
34
- "test": "testament test"
35
- },
36
- "dependencies": {
37
- "@thi.ng/api": "^8.1.0",
38
- "@thi.ng/errors": "^2.0.6",
39
- "@thi.ng/hex": "^2.0.6",
40
- "@thi.ng/memoize": "^3.0.7"
41
- },
42
- "devDependencies": {
43
- "@thi.ng/testament": "^0.1.6"
44
- },
45
- "keywords": [
46
- "ansi",
47
- "composition",
48
- "conversion",
49
- "escape",
50
- "float",
51
- "format",
52
- "functional",
53
- "hex",
54
- "hollerith",
55
- "interpolation",
56
- "number",
57
- "padding",
58
- "percent",
59
- "radix",
60
- "slugify",
61
- "split",
62
- "string",
63
- "tab",
64
- "trim",
65
- "typescript",
66
- "unicode",
67
- "wordwrap"
68
- ],
69
- "publishConfig": {
70
- "access": "public"
71
- },
72
- "engines": {
73
- "node": ">=12.7"
74
- },
75
- "files": [
76
- "*.js",
77
- "*.d.ts"
78
- ],
79
- "exports": {
80
- ".": {
81
- "import": "./index.js"
82
- },
83
- "./ansi": {
84
- "import": "./ansi.js"
85
- },
86
- "./api": {
87
- "import": "./api.js"
88
- },
89
- "./case": {
90
- "import": "./case.js"
91
- },
92
- "./center": {
93
- "import": "./center.js"
94
- },
95
- "./cursor": {
96
- "import": "./cursor.js"
97
- },
98
- "./entities": {
99
- "import": "./entities.js"
100
- },
101
- "./escape": {
102
- "import": "./escape.js"
103
- },
104
- "./float": {
105
- "import": "./float.js"
106
- },
107
- "./format": {
108
- "import": "./format.js"
109
- },
110
- "./groups": {
111
- "import": "./groups.js"
112
- },
113
- "./hollerith": {
114
- "import": "./hollerith.js"
115
- },
116
- "./initials": {
117
- "import": "./initials.js"
118
- },
119
- "./int": {
120
- "import": "./int.js"
121
- },
122
- "./interpolate": {
123
- "import": "./interpolate.js"
124
- },
125
- "./join": {
126
- "import": "./join.js"
127
- },
128
- "./pad-left": {
129
- "import": "./pad-left.js"
130
- },
131
- "./pad-right": {
132
- "import": "./pad-right.js"
133
- },
134
- "./parse": {
135
- "import": "./parse.js"
136
- },
137
- "./percent": {
138
- "import": "./percent.js"
139
- },
140
- "./radix": {
141
- "import": "./radix.js"
142
- },
143
- "./range": {
144
- "import": "./range.js"
145
- },
146
- "./repeat": {
147
- "import": "./repeat.js"
148
- },
149
- "./ruler": {
150
- "import": "./ruler.js"
151
- },
152
- "./slugify": {
153
- "import": "./slugify.js"
154
- },
155
- "./splice": {
156
- "import": "./splice.js"
157
- },
158
- "./split": {
159
- "import": "./split.js"
160
- },
161
- "./stringify": {
162
- "import": "./stringify.js"
163
- },
164
- "./tabs": {
165
- "import": "./tabs.js"
166
- },
167
- "./trim": {
168
- "import": "./trim.js"
169
- },
170
- "./truncate-left": {
171
- "import": "./truncate-left.js"
172
- },
173
- "./truncate": {
174
- "import": "./truncate.js"
175
- },
176
- "./units": {
177
- "import": "./units.js"
178
- },
179
- "./uuid": {
180
- "import": "./uuid.js"
181
- },
182
- "./vector": {
183
- "import": "./vector.js"
184
- },
185
- "./word-wrap": {
186
- "import": "./word-wrap.js"
187
- },
188
- "./wrap": {
189
- "import": "./wrap.js"
190
- }
191
- },
192
- "thi.ng": {
193
- "year": 2015
194
- },
195
- "gitHead": "852cd2450617c86d15d18477dc634f17f04202eb"
196
- }
2
+ "name": "@thi.ng/strings",
3
+ "version": "3.2.2",
4
+ "description": "Various string formatting & utility functions",
5
+ "type": "module",
6
+ "module": "./index.js",
7
+ "typings": "./index.d.ts",
8
+ "sideEffects": false,
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/thi-ng/umbrella.git"
12
+ },
13
+ "homepage": "https://github.com/thi-ng/umbrella/tree/develop/packages/format#readme",
14
+ "funding": [
15
+ {
16
+ "type": "github",
17
+ "url": "https://github.com/sponsors/postspectacular"
18
+ },
19
+ {
20
+ "type": "patreon",
21
+ "url": "https://patreon.com/thing_umbrella"
22
+ }
23
+ ],
24
+ "author": "Karsten Schmidt <k+npm@thi.ng>",
25
+ "license": "Apache-2.0",
26
+ "scripts": {
27
+ "build": "yarn clean && tsc --declaration",
28
+ "clean": "rimraf '*.js' '*.d.ts' '*.map' doc",
29
+ "doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
30
+ "doc:ae": "mkdir -p .ae/doc .ae/temp && api-extractor run --local --verbose",
31
+ "doc:readme": "yarn doc:stats && tools:readme",
32
+ "doc:stats": "tools:module-stats",
33
+ "pub": "yarn npm publish --access public",
34
+ "test": "testament test"
35
+ },
36
+ "dependencies": {
37
+ "@thi.ng/api": "^8.3.2",
38
+ "@thi.ng/errors": "^2.1.2",
39
+ "@thi.ng/hex": "^2.1.2",
40
+ "@thi.ng/memoize": "^3.1.2"
41
+ },
42
+ "devDependencies": {
43
+ "@microsoft/api-extractor": "^7.18.19",
44
+ "@thi.ng/testament": "^0.2.2",
45
+ "rimraf": "^3.0.2",
46
+ "tools": "^0.0.1",
47
+ "typedoc": "^0.22.9",
48
+ "typescript": "^4.5.2"
49
+ },
50
+ "keywords": [
51
+ "ansi",
52
+ "composition",
53
+ "conversion",
54
+ "escape",
55
+ "float",
56
+ "format",
57
+ "functional",
58
+ "hex",
59
+ "hollerith",
60
+ "interpolation",
61
+ "number",
62
+ "padding",
63
+ "percent",
64
+ "radix",
65
+ "slugify",
66
+ "split",
67
+ "string",
68
+ "tab",
69
+ "trim",
70
+ "typescript",
71
+ "unicode",
72
+ "wordwrap"
73
+ ],
74
+ "publishConfig": {
75
+ "access": "public"
76
+ },
77
+ "engines": {
78
+ "node": ">=12.7"
79
+ },
80
+ "files": [
81
+ "*.js",
82
+ "*.d.ts"
83
+ ],
84
+ "exports": {
85
+ ".": {
86
+ "import": "./index.js"
87
+ },
88
+ "./ansi": {
89
+ "import": "./ansi.js"
90
+ },
91
+ "./api": {
92
+ "import": "./api.js"
93
+ },
94
+ "./case": {
95
+ "import": "./case.js"
96
+ },
97
+ "./center": {
98
+ "import": "./center.js"
99
+ },
100
+ "./cursor": {
101
+ "import": "./cursor.js"
102
+ },
103
+ "./entities": {
104
+ "import": "./entities.js"
105
+ },
106
+ "./escape": {
107
+ "import": "./escape.js"
108
+ },
109
+ "./float": {
110
+ "import": "./float.js"
111
+ },
112
+ "./format": {
113
+ "import": "./format.js"
114
+ },
115
+ "./groups": {
116
+ "import": "./groups.js"
117
+ },
118
+ "./hollerith": {
119
+ "import": "./hollerith.js"
120
+ },
121
+ "./initials": {
122
+ "import": "./initials.js"
123
+ },
124
+ "./int": {
125
+ "import": "./int.js"
126
+ },
127
+ "./interpolate": {
128
+ "import": "./interpolate.js"
129
+ },
130
+ "./join": {
131
+ "import": "./join.js"
132
+ },
133
+ "./pad-left": {
134
+ "import": "./pad-left.js"
135
+ },
136
+ "./pad-right": {
137
+ "import": "./pad-right.js"
138
+ },
139
+ "./parse": {
140
+ "import": "./parse.js"
141
+ },
142
+ "./percent": {
143
+ "import": "./percent.js"
144
+ },
145
+ "./radix": {
146
+ "import": "./radix.js"
147
+ },
148
+ "./range": {
149
+ "import": "./range.js"
150
+ },
151
+ "./repeat": {
152
+ "import": "./repeat.js"
153
+ },
154
+ "./ruler": {
155
+ "import": "./ruler.js"
156
+ },
157
+ "./slugify": {
158
+ "import": "./slugify.js"
159
+ },
160
+ "./splice": {
161
+ "import": "./splice.js"
162
+ },
163
+ "./split": {
164
+ "import": "./split.js"
165
+ },
166
+ "./stringify": {
167
+ "import": "./stringify.js"
168
+ },
169
+ "./tabs": {
170
+ "import": "./tabs.js"
171
+ },
172
+ "./trim": {
173
+ "import": "./trim.js"
174
+ },
175
+ "./truncate-left": {
176
+ "import": "./truncate-left.js"
177
+ },
178
+ "./truncate": {
179
+ "import": "./truncate.js"
180
+ },
181
+ "./units": {
182
+ "import": "./units.js"
183
+ },
184
+ "./uuid": {
185
+ "import": "./uuid.js"
186
+ },
187
+ "./vector": {
188
+ "import": "./vector.js"
189
+ },
190
+ "./word-wrap": {
191
+ "import": "./word-wrap.js"
192
+ },
193
+ "./wrap": {
194
+ "import": "./wrap.js"
195
+ }
196
+ },
197
+ "thi.ng": {
198
+ "year": 2015
199
+ },
200
+ "gitHead": "e8a7c2a40191b391cef182c2978e5a6c85987a87\n"
201
+ }
package/units.js CHANGED
@@ -12,7 +12,7 @@ export const units = memoizeJ((exp, base, prec = 2) => {
12
12
  return `0${base}`;
13
13
  }
14
14
  const absX = Math.abs(x);
15
- for (let i = groups.length; --i >= 0;) {
15
+ for (let i = groups.length; i-- > 0;) {
16
16
  const g = groups[i];
17
17
  if (absX >= g[0] || i === 0) {
18
18
  return (x / g[0]).toFixed(g[1]) + g[2];