yummies 5.15.1 → 6.1.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.
Files changed (236) hide show
  1. package/README.md +10 -4
  2. package/async.cjs +45 -1
  3. package/async.cjs.map +1 -1
  4. package/async.d.ts +7 -6
  5. package/common.cjs +11 -1
  6. package/common.cjs.map +1 -1
  7. package/common.d.ts +8 -5
  8. package/common.js.map +1 -1
  9. package/complex.cjs +130 -1
  10. package/complex.cjs.map +1 -1
  11. package/complex.d.ts +113 -0
  12. package/complex.js +43 -1
  13. package/complex.js.map +1 -1
  14. package/cookie.cjs +9 -1
  15. package/cookie.cjs.map +1 -1
  16. package/cookie.d.ts +5 -3
  17. package/cookie.js.map +1 -1
  18. package/css.cjs +45 -1
  19. package/css.cjs.map +1 -1
  20. package/css.d.ts +11 -8
  21. package/css.js.map +1 -1
  22. package/data.cjs +43 -1
  23. package/data.cjs.map +1 -1
  24. package/data.d.ts +5 -4
  25. package/data.js.map +1 -1
  26. package/date-time.cjs +395 -1
  27. package/date-time.cjs.map +1 -1
  28. package/date-time.d.ts +12 -10
  29. package/date-time.js.map +1 -1
  30. package/device.cjs +32 -1
  31. package/device.cjs.map +1 -1
  32. package/device.d.ts +9 -8
  33. package/encodings.cjs +270 -1
  34. package/encodings.cjs.map +1 -1
  35. package/encodings.d.ts +3 -2
  36. package/encodings.js.map +1 -1
  37. package/errors.cjs +23 -1
  38. package/errors.cjs.map +1 -1
  39. package/errors.d.ts +5 -4
  40. package/errors.js.map +1 -1
  41. package/file.cjs +28 -1
  42. package/file.cjs.map +1 -1
  43. package/file.d.ts +4 -3
  44. package/format.cjs +75 -1
  45. package/format.cjs.map +1 -1
  46. package/format.d.ts +74 -0
  47. package/format.js.map +1 -1
  48. package/html.cjs +167 -1
  49. package/html.cjs.map +1 -1
  50. package/html.d.ts +19 -17
  51. package/html.js.map +1 -1
  52. package/id.cjs +25 -1
  53. package/id.cjs.map +1 -1
  54. package/id.d.ts +9 -8
  55. package/imports.cjs +33 -1
  56. package/imports.cjs.map +1 -1
  57. package/imports.d.ts +6 -4
  58. package/math.cjs +14 -1
  59. package/math.cjs.map +1 -1
  60. package/math.d.ts +7 -5
  61. package/math.js.map +1 -1
  62. package/media.cjs +105 -1
  63. package/media.cjs.map +1 -1
  64. package/media.d.ts +11 -11
  65. package/mobx.cjs +184 -1
  66. package/mobx.cjs.map +1 -1
  67. package/mobx.d.ts +66 -0
  68. package/mobx.js.map +1 -1
  69. package/ms.cjs +13 -1
  70. package/ms.cjs.map +1 -1
  71. package/ms.d.ts +4 -3
  72. package/number.cjs +10 -1
  73. package/number.cjs.map +1 -1
  74. package/number.d.ts +3 -2
  75. package/package.json +97 -141
  76. package/parser.cjs +68 -1
  77. package/parser.cjs.map +1 -1
  78. package/parser.d.ts +41 -0
  79. package/parser.js.map +1 -1
  80. package/price.cjs +20 -1
  81. package/price.cjs.map +1 -1
  82. package/price.d.ts +5 -3
  83. package/random.cjs +24 -1
  84. package/random.cjs.map +1 -1
  85. package/random.d.ts +10 -9
  86. package/react.cjs +216 -1
  87. package/react.cjs.map +1 -1
  88. package/react.d.ts +113 -0
  89. package/react.js.map +1 -1
  90. package/sound.cjs +11 -1
  91. package/sound.cjs.map +1 -1
  92. package/sound.d.ts +3 -2
  93. package/text.cjs +37 -1
  94. package/text.cjs.map +1 -1
  95. package/text.d.ts +4 -3
  96. package/type-guard.cjs +75 -1
  97. package/type-guard.cjs.map +1 -1
  98. package/type-guard.d.ts +121 -0
  99. package/type-guard.js.map +1 -1
  100. package/{utils/types.d.ts → types.d.ts} +54 -53
  101. package/types.global.cjs +2 -0
  102. package/types.global.cjs.map +1 -0
  103. package/{utility-types.d.ts → types.global.d.ts} +1 -1
  104. package/types.global.js +2 -0
  105. package/types.global.js.map +1 -0
  106. package/vibrate.cjs +8 -1
  107. package/vibrate.cjs.map +1 -1
  108. package/vibrate.d.ts +3 -2
  109. package/async.d.ts.map +0 -1
  110. package/common.d.ts.map +0 -1
  111. package/complex/counter.d.ts +0 -15
  112. package/complex/counter.d.ts.map +0 -1
  113. package/complex/global-config.d.ts +0 -11
  114. package/complex/global-config.d.ts.map +0 -1
  115. package/complex/index.d.ts +0 -4
  116. package/complex/index.d.ts.map +0 -1
  117. package/complex/modules-factory.d.ts +0 -49
  118. package/complex/modules-factory.d.ts.map +0 -1
  119. package/cookie.d.ts.map +0 -1
  120. package/css.d.ts.map +0 -1
  121. package/data.d.ts.map +0 -1
  122. package/date-time.d.ts.map +0 -1
  123. package/device.d.ts.map +0 -1
  124. package/encodings.d.ts.map +0 -1
  125. package/errors.d.ts.map +0 -1
  126. package/file.d.ts.map +0 -1
  127. package/format/_exports.d.ts +0 -5
  128. package/format/_exports.d.ts.map +0 -1
  129. package/format/constants.d.ts +0 -4
  130. package/format/constants.d.ts.map +0 -1
  131. package/format/index.d.ts +0 -3
  132. package/format/index.d.ts.map +0 -1
  133. package/format/number.d.ts +0 -36
  134. package/format/number.d.ts.map +0 -1
  135. package/format/percent.d.ts +0 -15
  136. package/format/percent.d.ts.map +0 -1
  137. package/format/skip-spaces.d.ts +0 -5
  138. package/format/skip-spaces.d.ts.map +0 -1
  139. package/html.d.ts.map +0 -1
  140. package/id.d.ts.map +0 -1
  141. package/imports.d.ts.map +0 -1
  142. package/math.d.ts.map +0 -1
  143. package/media.d.ts.map +0 -1
  144. package/mobx/apply-observable.d.ts +0 -4
  145. package/mobx/apply-observable.d.ts.map +0 -1
  146. package/mobx/create-enhanced-atom.d.ts +0 -11
  147. package/mobx/create-enhanced-atom.d.ts.map +0 -1
  148. package/mobx/create-ref.d.ts +0 -28
  149. package/mobx/create-ref.d.ts.map +0 -1
  150. package/mobx/deep-observable-struct.d.ts +0 -7
  151. package/mobx/deep-observable-struct.d.ts.map +0 -1
  152. package/mobx/get-mobx-administration.d.ts +0 -6
  153. package/mobx/get-mobx-administration.d.ts.map +0 -1
  154. package/mobx/index.d.ts +0 -7
  155. package/mobx/index.d.ts.map +0 -1
  156. package/mobx/lazy-observe.d.ts +0 -14
  157. package/mobx/lazy-observe.d.ts.map +0 -1
  158. package/ms.d.ts.map +0 -1
  159. package/number.d.ts.map +0 -1
  160. package/parser/_exports.d.ts +0 -4
  161. package/parser/_exports.d.ts.map +0 -1
  162. package/parser/index.d.ts +0 -3
  163. package/parser/index.d.ts.map +0 -1
  164. package/parser/number.d.ts +0 -21
  165. package/parser/number.d.ts.map +0 -1
  166. package/parser/percent.d.ts +0 -4
  167. package/parser/percent.d.ts.map +0 -1
  168. package/parser/string.d.ts +0 -7
  169. package/parser/string.d.ts.map +0 -1
  170. package/price.d.ts.map +0 -1
  171. package/random.d.ts.map +0 -1
  172. package/react/hooks/index.d.ts +0 -22
  173. package/react/hooks/index.d.ts.map +0 -1
  174. package/react/hooks/use-abort-controller.d.ts +0 -2
  175. package/react/hooks/use-abort-controller.d.ts.map +0 -1
  176. package/react/hooks/use-abort-signal.d.ts +0 -2
  177. package/react/hooks/use-abort-signal.d.ts.map +0 -1
  178. package/react/hooks/use-click-outside.d.ts +0 -9
  179. package/react/hooks/use-click-outside.d.ts.map +0 -1
  180. package/react/hooks/use-constant.d.ts +0 -9
  181. package/react/hooks/use-constant.d.ts.map +0 -1
  182. package/react/hooks/use-define-ref.d.ts +0 -10
  183. package/react/hooks/use-define-ref.d.ts.map +0 -1
  184. package/react/hooks/use-element-ref.d.ts +0 -2
  185. package/react/hooks/use-element-ref.d.ts.map +0 -1
  186. package/react/hooks/use-event-listener.d.ts +0 -8
  187. package/react/hooks/use-event-listener.d.ts.map +0 -1
  188. package/react/hooks/use-event.d.ts +0 -3
  189. package/react/hooks/use-event.d.ts.map +0 -1
  190. package/react/hooks/use-flag.d.ts +0 -8
  191. package/react/hooks/use-flag.d.ts.map +0 -1
  192. package/react/hooks/use-force-update.d.ts +0 -2
  193. package/react/hooks/use-force-update.d.ts.map +0 -1
  194. package/react/hooks/use-initial-height.d.ts +0 -5
  195. package/react/hooks/use-initial-height.d.ts.map +0 -1
  196. package/react/hooks/use-instance.d.ts +0 -27
  197. package/react/hooks/use-instance.d.ts.map +0 -1
  198. package/react/hooks/use-intersection-observer.d.ts +0 -2
  199. package/react/hooks/use-intersection-observer.d.ts.map +0 -1
  200. package/react/hooks/use-last-defined-value.d.ts +0 -2
  201. package/react/hooks/use-last-defined-value.d.ts.map +0 -1
  202. package/react/hooks/use-last-value-ref.d.ts +0 -2
  203. package/react/hooks/use-last-value-ref.d.ts.map +0 -1
  204. package/react/hooks/use-life-cycle.d.ts +0 -5
  205. package/react/hooks/use-life-cycle.d.ts.map +0 -1
  206. package/react/hooks/use-resize-observer.d.ts +0 -2
  207. package/react/hooks/use-resize-observer.d.ts.map +0 -1
  208. package/react/hooks/use-sync-ref.d.ts +0 -2
  209. package/react/hooks/use-sync-ref.d.ts.map +0 -1
  210. package/react/hooks/use-toggle.d.ts +0 -2
  211. package/react/hooks/use-toggle.d.ts.map +0 -1
  212. package/react/hooks/use-value.d.ts +0 -5
  213. package/react/hooks/use-value.d.ts.map +0 -1
  214. package/react/hooks/use-visibility-state.d.ts +0 -2
  215. package/react/hooks/use-visibility-state.d.ts.map +0 -1
  216. package/react/index.d.ts +0 -2
  217. package/react/index.d.ts.map +0 -1
  218. package/sound.d.ts.map +0 -1
  219. package/storage.d.ts +0 -39
  220. package/storage.d.ts.map +0 -1
  221. package/text.d.ts.map +0 -1
  222. package/type-guard/_exports.d.ts +0 -86
  223. package/type-guard/_exports.d.ts.map +0 -1
  224. package/type-guard/index.d.ts +0 -3
  225. package/type-guard/index.d.ts.map +0 -1
  226. package/utility-types.cjs +0 -2
  227. package/utility-types.cjs.map +0 -1
  228. package/utility-types.d.ts.map +0 -1
  229. package/utility-types.js +0 -2
  230. package/utility-types.js.map +0 -1
  231. package/utils/types.d.ts.map +0 -1
  232. package/vibrate.d.ts.map +0 -1
  233. /package/{utils/types.cjs → types.cjs} +0 -0
  234. /package/{utils/types.cjs.map → types.cjs.map} +0 -0
  235. /package/{utils/types.js → types.js} +0 -0
  236. /package/{utils/types.js.map → types.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yummies",
3
- "version": "5.15.1",
3
+ "version": "6.1.0",
4
4
  "keywords": [
5
5
  "javascript",
6
6
  "typescript",
@@ -38,234 +38,190 @@
38
38
  "nanoid": "^5.1.5",
39
39
  "tailwind-merge": "^3.3.1"
40
40
  },
41
- "devDependencies": {
42
- "@biomejs/biome": "2.2.2",
43
- "@changesets/changelog-github": "^0.5.1",
44
- "@changesets/cli": "^2.29.5",
45
- "@types/node": "^20.17.30",
46
- "@types/react": "^18",
47
- "@vitejs/plugin-react-swc": "^3.9.0",
48
- "@vitest/coverage-istanbul": "^3.1.2",
49
- "commitfmt": "^1.0.4",
50
- "js2me-biome-config": "^1.0.3",
51
- "jsdom": "^26.1.0",
52
- "lefthook": "^1.11.16",
53
- "nodemon": "^3.1.9",
54
- "rimraf": "^6.0.1",
55
- "sborshik": "^1.0.33",
56
- "tsx": "^4.20.5",
57
- "typescript": "^5.8.3",
58
- "vite": "^7.1.9",
59
- "vite-plugin-dts": "^4.5.4",
60
- "vitest": "^3.1.2",
61
- "zshy": "^0.4.2"
62
- },
63
41
  "type": "module",
64
42
  "exports": {
65
- "./LICENSE": "./LICENSE",
66
- "./README": "./README.md",
67
43
  "./async": {
44
+ "types": "./async.d.ts",
68
45
  "import": "./async.js",
69
- "default": "./async.js",
70
- "types": "./async/index.d.ts",
71
- "require": "./async.cjs"
46
+ "require": "./async.cjs",
47
+ "default": "./async.js"
72
48
  },
73
49
  "./common": {
50
+ "types": "./common.d.ts",
74
51
  "import": "./common.js",
75
- "default": "./common.js",
76
- "types": "./common/index.d.ts",
77
- "require": "./common.cjs"
52
+ "require": "./common.cjs",
53
+ "default": "./common.js"
78
54
  },
79
55
  "./complex": {
56
+ "types": "./complex.d.ts",
80
57
  "import": "./complex.js",
81
- "default": "./complex.js",
82
- "types": "./complex/index.d.ts",
83
- "require": "./complex.cjs"
58
+ "require": "./complex.cjs",
59
+ "default": "./complex.js"
84
60
  },
85
61
  "./cookie": {
62
+ "types": "./cookie.d.ts",
86
63
  "import": "./cookie.js",
87
- "default": "./cookie.js",
88
- "types": "./cookie/index.d.ts",
89
- "require": "./cookie.cjs"
64
+ "require": "./cookie.cjs",
65
+ "default": "./cookie.js"
90
66
  },
91
67
  "./css": {
68
+ "types": "./css.d.ts",
92
69
  "import": "./css.js",
93
- "default": "./css.js",
94
- "types": "./css/index.d.ts",
95
- "require": "./css.cjs"
70
+ "require": "./css.cjs",
71
+ "default": "./css.js"
96
72
  },
97
73
  "./data": {
74
+ "types": "./data.d.ts",
98
75
  "import": "./data.js",
99
- "default": "./data.js",
100
- "types": "./data/index.d.ts",
101
- "require": "./data.cjs"
76
+ "require": "./data.cjs",
77
+ "default": "./data.js"
102
78
  },
103
79
  "./date-time": {
80
+ "types": "./date-time.d.ts",
104
81
  "import": "./date-time.js",
105
- "default": "./date-time.js",
106
- "types": "./date-time/index.d.ts",
107
- "require": "./date-time.cjs"
82
+ "require": "./date-time.cjs",
83
+ "default": "./date-time.js"
108
84
  },
109
85
  "./device": {
86
+ "types": "./device.d.ts",
110
87
  "import": "./device.js",
111
- "default": "./device.js",
112
- "types": "./device/index.d.ts",
113
- "require": "./device.cjs"
88
+ "require": "./device.cjs",
89
+ "default": "./device.js"
114
90
  },
115
91
  "./encodings": {
92
+ "types": "./encodings.d.ts",
116
93
  "import": "./encodings.js",
117
- "default": "./encodings.js",
118
- "types": "./encodings/index.d.ts",
119
- "require": "./encodings.cjs"
94
+ "require": "./encodings.cjs",
95
+ "default": "./encodings.js"
120
96
  },
121
97
  "./errors": {
98
+ "types": "./errors.d.ts",
122
99
  "import": "./errors.js",
123
- "default": "./errors.js",
124
- "types": "./errors/index.d.ts",
125
- "require": "./errors.cjs"
100
+ "require": "./errors.cjs",
101
+ "default": "./errors.js"
126
102
  },
127
103
  "./file": {
104
+ "types": "./file.d.ts",
128
105
  "import": "./file.js",
129
- "default": "./file.js",
130
- "types": "./file/index.d.ts",
131
- "require": "./file.cjs"
106
+ "require": "./file.cjs",
107
+ "default": "./file.js"
132
108
  },
133
109
  "./format": {
110
+ "types": "./format.d.ts",
134
111
  "import": "./format.js",
135
- "default": "./format.js",
136
- "types": "./format/index.d.ts",
137
- "require": "./format.cjs"
112
+ "require": "./format.cjs",
113
+ "default": "./format.js"
138
114
  },
139
115
  "./html": {
116
+ "types": "./html.d.ts",
140
117
  "import": "./html.js",
141
- "default": "./html.js",
142
- "types": "./html/index.d.ts",
143
- "require": "./html.cjs"
118
+ "require": "./html.cjs",
119
+ "default": "./html.js"
144
120
  },
145
121
  "./id": {
122
+ "types": "./id.d.ts",
146
123
  "import": "./id.js",
147
- "default": "./id.js",
148
- "types": "./id/index.d.ts",
149
- "require": "./id.cjs"
124
+ "require": "./id.cjs",
125
+ "default": "./id.js"
150
126
  },
151
127
  "./imports": {
128
+ "types": "./imports.d.ts",
152
129
  "import": "./imports.js",
153
- "default": "./imports.js",
154
- "types": "./imports/index.d.ts",
155
- "require": "./imports.cjs"
130
+ "require": "./imports.cjs",
131
+ "default": "./imports.js"
156
132
  },
157
133
  "./math": {
134
+ "types": "./math.d.ts",
158
135
  "import": "./math.js",
159
- "default": "./math.js",
160
- "types": "./math/index.d.ts",
161
- "require": "./math.cjs"
136
+ "require": "./math.cjs",
137
+ "default": "./math.js"
162
138
  },
163
139
  "./media": {
140
+ "types": "./media.d.ts",
164
141
  "import": "./media.js",
165
- "default": "./media.js",
166
- "types": "./media/index.d.ts",
167
- "require": "./media.cjs"
142
+ "require": "./media.cjs",
143
+ "default": "./media.js"
168
144
  },
169
145
  "./mobx": {
146
+ "types": "./mobx.d.ts",
170
147
  "import": "./mobx.js",
171
- "default": "./mobx.js",
172
- "types": "./mobx/index.d.ts",
173
- "require": "./mobx.cjs"
148
+ "require": "./mobx.cjs",
149
+ "default": "./mobx.js"
174
150
  },
175
151
  "./ms": {
152
+ "types": "./ms.d.ts",
176
153
  "import": "./ms.js",
177
- "default": "./ms.js",
178
- "types": "./ms/index.d.ts",
179
- "require": "./ms.cjs"
154
+ "require": "./ms.cjs",
155
+ "default": "./ms.js"
180
156
  },
181
157
  "./number": {
158
+ "types": "./number.d.ts",
182
159
  "import": "./number.js",
183
- "default": "./number.js",
184
- "types": "./number/index.d.ts",
185
- "require": "./number.cjs"
160
+ "require": "./number.cjs",
161
+ "default": "./number.js"
186
162
  },
187
- "./package": "./package.json",
188
163
  "./parser": {
164
+ "types": "./parser.d.ts",
189
165
  "import": "./parser.js",
190
- "default": "./parser.js",
191
- "types": "./parser/index.d.ts",
192
- "require": "./parser.cjs"
166
+ "require": "./parser.cjs",
167
+ "default": "./parser.js"
193
168
  },
194
169
  "./price": {
170
+ "types": "./price.d.ts",
195
171
  "import": "./price.js",
196
- "default": "./price.js",
197
- "types": "./price/index.d.ts",
198
- "require": "./price.cjs"
172
+ "require": "./price.cjs",
173
+ "default": "./price.js"
199
174
  },
200
175
  "./random": {
176
+ "types": "./random.d.ts",
201
177
  "import": "./random.js",
202
- "default": "./random.js",
203
- "types": "./random/index.d.ts",
204
- "require": "./random.cjs"
178
+ "require": "./random.cjs",
179
+ "default": "./random.js"
205
180
  },
206
181
  "./react": {
182
+ "types": "./react.d.ts",
207
183
  "import": "./react.js",
208
- "default": "./react.js",
209
- "types": "./react/index.d.ts",
210
- "require": "./react.cjs"
184
+ "require": "./react.cjs",
185
+ "default": "./react.js"
211
186
  },
212
187
  "./sound": {
188
+ "types": "./sound.d.ts",
213
189
  "import": "./sound.js",
214
- "default": "./sound.js",
215
- "types": "./sound/index.d.ts",
216
- "require": "./sound.cjs"
190
+ "require": "./sound.cjs",
191
+ "default": "./sound.js"
217
192
  },
218
193
  "./text": {
194
+ "types": "./text.d.ts",
219
195
  "import": "./text.js",
220
- "default": "./text.js",
221
- "types": "./text/index.d.ts",
222
- "require": "./text.cjs"
196
+ "require": "./text.cjs",
197
+ "default": "./text.js"
223
198
  },
224
199
  "./type-guard": {
200
+ "types": "./type-guard.d.ts",
225
201
  "import": "./type-guard.js",
226
- "default": "./type-guard.js",
227
- "types": "./type-guard/index.d.ts",
228
- "require": "./type-guard.cjs"
202
+ "require": "./type-guard.cjs",
203
+ "default": "./type-guard.js"
229
204
  },
230
- "./utility-types": {
231
- "import": "./utility-types.js",
232
- "default": "./utility-types.js",
233
- "types": "./utility-types/index.d.ts",
234
- "require": "./utility-types.cjs"
205
+ "./types": {
206
+ "types": "./types.d.ts",
207
+ "import": "./types.js",
208
+ "require": "./types.cjs",
209
+ "default": "./types.js"
235
210
  },
236
- "./utils/types": {
237
- "import": "./utils/types.js",
238
- "default": "./utils/types.js",
239
- "types": "./utils/types/index.d.ts",
240
- "require": "./utils/types.cjs"
211
+ "./types.global": {
212
+ "types": "./types.global.d.ts",
213
+ "import": "./types.global.js",
214
+ "require": "./types.global.cjs",
215
+ "default": "./types.global.js"
241
216
  },
242
217
  "./vibrate": {
218
+ "types": "./vibrate.d.ts",
243
219
  "import": "./vibrate.js",
244
- "default": "./vibrate.js",
245
- "types": "./vibrate/index.d.ts",
246
- "require": "./vibrate.cjs"
247
- },
248
- "./package.json": "./package.json"
220
+ "require": "./vibrate.cjs",
221
+ "default": "./vibrate.js"
222
+ }
249
223
  },
250
224
  "files": [
251
225
  "*"
252
- ],
253
- "scripts": {
254
- "clean": "rm -rf dist",
255
- "lint:check": "pnpm exec biome check --write --no-errors-on-unmatched --files-ignore-unknown=true",
256
- "ts:check": "tsc --noEmit",
257
- "check": "npm run lint:check && npm run ts:check",
258
- "prebuild": "npm run clean && npm run check",
259
- "build:watch": "pnpm build && nodemon --watch src --ext ts --exec \"pnpm build\"",
260
- "build": "vite build && tsx scripts/generate-utility-types-file",
261
- "pub": "pnpm build && sborshik publish --useDistDir",
262
- "pub:patch": "PUBLISH_VERSION=patch pnpm pub",
263
- "pub:minor": "PUBLISH_VERSION=minor pnpm pub",
264
- "pub:major": "PUBLISH_VERSION=major pnpm pub",
265
- "test": "vitest run --config vitest.config.ts",
266
- "test:watch": "vitest watch --config vitest.config.ts",
267
- "test:coverage": "vitest run --config vitest.config.ts --coverage",
268
- "dev": "pnpm test:watch",
269
- "dev:install-hooks": "if [ -z \"$CI\" ]; then lefthook install; fi"
270
- }
226
+ ]
271
227
  }
package/parser.cjs CHANGED
@@ -1,2 +1,69 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("yummies/format"),t=require("yummies/type-guard"),r=(l,i)=>{const u={...r.defaultSettings,...i},a=u?.fallback??0;let n;if(t.typeGuard.isNumber(l))n=l;else if(t.typeGuard.isString(l)){const t=e.format.skipSpaces(l).replace(",",".");n=""===t?a:Number(t)}else n=a;return t.typeGuard.isNumber(n)?(null!=u?.clamped&&(n=Math.max(u.clamped[0]??-1/0,Math.min(n,u.clamped[1]??1/0))),null!=u?.ceil&&(n=Math.ceil(n)),null!=u?.floor&&(n=Math.floor(n)),null!=u?.digits&&(n=+n.toFixed(u.digits)),n):a};r.defaultSettings={};const l=Object.freeze(Object.defineProperty({__proto__:null,number:r,percent:(e,t,l)=>r(Number(e)/Number(t)*100,l),string:(e,r)=>{const l=r&&"fallback"in r?r.fallback:"";return null==e?l:t.typeGuard.isObject(e)?r?.prettyJson?JSON.stringify(e,null,2):JSON.stringify(e):String(e)}},Symbol.toStringTag,{value:"Module"}));exports.parser=l;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const format = require("yummies/format");
4
+ const typeGuard = require("yummies/type-guard");
5
+ const number = (input, userSettings) => {
6
+ const settings = {
7
+ ...number.defaultSettings,
8
+ ...userSettings
9
+ };
10
+ const fallback = settings?.fallback ?? 0;
11
+ let result;
12
+ if (typeGuard.typeGuard.isNumber(input)) {
13
+ result = input;
14
+ } else if (typeGuard.typeGuard.isString(input)) {
15
+ const formattedInput = format.format.skipSpaces(input).replace(",", ".");
16
+ if (formattedInput === "") {
17
+ result = fallback;
18
+ } else {
19
+ result = Number(formattedInput);
20
+ }
21
+ } else {
22
+ result = fallback;
23
+ }
24
+ if (typeGuard.typeGuard.isNumber(result)) {
25
+ if (settings?.clamped != null) {
26
+ result = Math.max(
27
+ settings.clamped[0] ?? -Infinity,
28
+ Math.min(result, settings.clamped[1] ?? Infinity)
29
+ );
30
+ }
31
+ if (settings?.ceil != null) {
32
+ result = Math.ceil(result);
33
+ }
34
+ if (settings?.floor != null) {
35
+ result = Math.floor(result);
36
+ }
37
+ if (settings?.digits != null) {
38
+ result = +result.toFixed(settings.digits);
39
+ }
40
+ return result;
41
+ } else {
42
+ return fallback;
43
+ }
44
+ };
45
+ number.defaultSettings = {};
46
+ const percent = (value, maxValue, settings) => {
47
+ return number(Number(value) / Number(maxValue) * 100, settings);
48
+ };
49
+ const string = (input, settings) => {
50
+ const fallback = settings && "fallback" in settings ? settings.fallback : "";
51
+ if (input == null) {
52
+ return fallback;
53
+ }
54
+ if (typeGuard.typeGuard.isObject(input)) {
55
+ if (settings?.prettyJson) {
56
+ return JSON.stringify(input, null, 2);
57
+ }
58
+ return JSON.stringify(input);
59
+ }
60
+ return String(input);
61
+ };
62
+ const _exports = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
63
+ __proto__: null,
64
+ number,
65
+ percent,
66
+ string
67
+ }, Symbol.toStringTag, { value: "Module" }));
68
+ exports.parser = _exports;
2
69
  //# sourceMappingURL=parser.cjs.map
package/parser.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parser.cjs","sources":["../src/parser/number.ts","../src/parser/percent.ts","../src/parser/string.ts"],"sourcesContent":["import { format } from 'yummies/format';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\n\nexport interface NumberParserSettings<TFallback = number> {\n digits?: number;\n fallback?: TFallback;\n /**\n * Round to upper boundary\n * 5.1 -> 6\n */\n ceil?: boolean;\n /**\n * Round to bottom boundary\n * 5.9 -> 5\n */\n floor?: boolean;\n clamped?: [min?: Maybe<number>, max?: Maybe<number>];\n}\n\nexport const number = <TFallback = number>(\n input: Maybe<unknown>,\n userSettings?: Maybe<NumberParserSettings<TFallback>>,\n): number | TFallback => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const fallback = settings?.fallback ?? 0;\n\n let result: number;\n\n if (typeGuard.isNumber(input)) {\n result = input;\n } else if (typeGuard.isString(input)) {\n const formattedInput = format.skipSpaces(input).replace(',', '.');\n if (formattedInput === '') {\n result = fallback as any;\n } else {\n result = Number(formattedInput);\n }\n } else {\n result = fallback as any;\n }\n\n if (typeGuard.isNumber(result)) {\n if (settings?.clamped != null) {\n result = Math.max(\n settings.clamped[0] ?? -Infinity,\n Math.min(result, settings.clamped[1] ?? Infinity),\n );\n }\n\n if (settings?.ceil != null) {\n result = Math.ceil(result);\n }\n\n if (settings?.floor != null) {\n result = Math.floor(result);\n }\n\n if (settings?.digits != null) {\n result = +result.toFixed(settings.digits);\n }\n\n return result;\n } else {\n return fallback;\n }\n};\n\nnumber.defaultSettings = {} as NumberParserSettings;\n","import type { Maybe } from 'yummies/utils/types';\n\nimport { type NumberParserSettings, number } from './number.js';\n\nexport const percent = <TFallback = number>(\n value: Maybe<string | number>,\n maxValue?: Maybe<string | number>,\n settings?: Maybe<NumberParserSettings<TFallback>>,\n) => {\n return number<TFallback>((Number(value) / Number(maxValue)) * 100, settings);\n};\n","import { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\n\nexport interface StringParserSettings<TFallback = string> {\n fallback?: TFallback;\n prettyJson?: boolean;\n}\n\nexport const string = <TFallback = string>(\n input: Maybe<unknown>,\n settings?: Maybe<StringParserSettings<TFallback>>,\n): string | TFallback => {\n const fallback =\n settings && 'fallback' in settings ? (settings.fallback as TFallback) : '';\n\n if (input == null) {\n return fallback;\n }\n\n if (typeGuard.isObject(input)) {\n if (settings?.prettyJson) {\n return JSON.stringify(input, null, 2);\n }\n\n return JSON.stringify(input);\n }\n\n return String(input);\n};\n"],"names":["number","input","userSettings","settings","defaultSettings","fallback","result","typeGuard","isNumber","isString","formattedInput","format","skipSpaces","replace","Number","clamped","Math","max","Infinity","min","ceil","floor","digits","toFixed","value","maxValue","isObject","prettyJson","JSON","stringify","String"],"mappings":"kJAoBaA,EAAS,CACpBC,EACAC,KAEA,MAAMC,EAAW,IACZH,EAAOI,mBACPF,GAGCG,EAAWF,GAAUE,UAAY,EAEvC,IAAIC,EAEJ,GAAIC,EAAAA,UAAUC,SAASP,GACrBK,EAASL,OACX,GAAWM,EAAAA,UAAUE,SAASR,GAAQ,CACpC,MAAMS,EAAiBC,EAAAA,OAAOC,WAAWX,GAAOY,QAAQ,IAAK,KAE3DP,EADqB,KAAnBI,EACOL,EAEAS,OAAOJ,EAEpB,MACEJ,EAASD,EAGX,OAAIE,EAAAA,UAAUC,SAASF,IACI,MAArBH,GAAUY,UACZT,EAASU,KAAKC,IACZd,EAASY,QAAQ,KAAMG,IACvBF,KAAKG,IAAIb,EAAQH,EAASY,QAAQ,IAAMG,OAItB,MAAlBf,GAAUiB,OACZd,EAASU,KAAKI,KAAKd,IAGE,MAAnBH,GAAUkB,QACZf,EAASU,KAAKK,MAAMf,IAGE,MAApBH,GAAUmB,SACZhB,GAAUA,EAAOiB,QAAQpB,EAASmB,SAG7BhB,GAEAD,GAIXL,EAAOI,gBAAkB,CAAA,ECpElB,6EAAgB,CACrBoB,EACAC,EACAtB,IAEOH,EAAmBc,OAAOU,GAASV,OAAOW,GAAa,IAAKtB,UCD/C,CACpBF,EACAE,KAEA,MAAME,EACJF,GAAY,aAAcA,EAAYA,EAASE,SAAyB,GAE1E,OAAa,MAATJ,EACKI,EAGLE,EAAAA,UAAUmB,SAASzB,GACjBE,GAAUwB,WACLC,KAAKC,UAAU5B,EAAO,KAAM,GAG9B2B,KAAKC,UAAU5B,GAGjB6B,OAAO7B"}
1
+ {"version":3,"file":"parser.cjs","sources":["../src/parser/number.ts","../src/parser/percent.ts","../src/parser/string.ts"],"sourcesContent":["import { format } from 'yummies/format';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nexport interface NumberParserSettings<TFallback = number> {\n digits?: number;\n fallback?: TFallback;\n /**\n * Round to upper boundary\n * 5.1 -> 6\n */\n ceil?: boolean;\n /**\n * Round to bottom boundary\n * 5.9 -> 5\n */\n floor?: boolean;\n clamped?: [min?: Maybe<number>, max?: Maybe<number>];\n}\n\nexport const number = <TFallback = number>(\n input: Maybe<unknown>,\n userSettings?: Maybe<NumberParserSettings<TFallback>>,\n): number | TFallback => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const fallback = settings?.fallback ?? 0;\n\n let result: number;\n\n if (typeGuard.isNumber(input)) {\n result = input;\n } else if (typeGuard.isString(input)) {\n const formattedInput = format.skipSpaces(input).replace(',', '.');\n if (formattedInput === '') {\n result = fallback as any;\n } else {\n result = Number(formattedInput);\n }\n } else {\n result = fallback as any;\n }\n\n if (typeGuard.isNumber(result)) {\n if (settings?.clamped != null) {\n result = Math.max(\n settings.clamped[0] ?? -Infinity,\n Math.min(result, settings.clamped[1] ?? Infinity),\n );\n }\n\n if (settings?.ceil != null) {\n result = Math.ceil(result);\n }\n\n if (settings?.floor != null) {\n result = Math.floor(result);\n }\n\n if (settings?.digits != null) {\n result = +result.toFixed(settings.digits);\n }\n\n return result;\n } else {\n return fallback;\n }\n};\n\nnumber.defaultSettings = {} as NumberParserSettings;\n","import type { Maybe } from 'yummies/types';\n\nimport { type NumberParserSettings, number } from './number.js';\n\nexport const percent = <TFallback = number>(\n value: Maybe<string | number>,\n maxValue?: Maybe<string | number>,\n settings?: Maybe<NumberParserSettings<TFallback>>,\n) => {\n return number<TFallback>((Number(value) / Number(maxValue)) * 100, settings);\n};\n","import { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nexport interface StringParserSettings<TFallback = string> {\n fallback?: TFallback;\n prettyJson?: boolean;\n}\n\nexport const string = <TFallback = string>(\n input: Maybe<unknown>,\n settings?: Maybe<StringParserSettings<TFallback>>,\n): string | TFallback => {\n const fallback =\n settings && 'fallback' in settings ? (settings.fallback as TFallback) : '';\n\n if (input == null) {\n return fallback;\n }\n\n if (typeGuard.isObject(input)) {\n if (settings?.prettyJson) {\n return JSON.stringify(input, null, 2);\n }\n\n return JSON.stringify(input);\n }\n\n return String(input);\n};\n"],"names":["typeGuard","format"],"mappings":";;;;AAoBO,MAAM,SAAS,CACpB,OACA,iBACuB;AACvB,QAAM,WAAW;AAAA,IACf,GAAG,OAAO;AAAA,IACV,GAAG;AAAA,EAAA;AAGL,QAAM,WAAW,UAAU,YAAY;AAEvC,MAAI;AAEJ,MAAIA,UAAAA,UAAU,SAAS,KAAK,GAAG;AAC7B,aAAS;AAAA,EACX,WAAWA,UAAAA,UAAU,SAAS,KAAK,GAAG;AACpC,UAAM,iBAAiBC,OAAAA,OAAO,WAAW,KAAK,EAAE,QAAQ,KAAK,GAAG;AAChE,QAAI,mBAAmB,IAAI;AACzB,eAAS;AAAA,IACX,OAAO;AACL,eAAS,OAAO,cAAc;AAAA,IAChC;AAAA,EACF,OAAO;AACL,aAAS;AAAA,EACX;AAEA,MAAID,UAAAA,UAAU,SAAS,MAAM,GAAG;AAC9B,QAAI,UAAU,WAAW,MAAM;AAC7B,eAAS,KAAK;AAAA,QACZ,SAAS,QAAQ,CAAC,KAAK;AAAA,QACvB,KAAK,IAAI,QAAQ,SAAS,QAAQ,CAAC,KAAK,QAAQ;AAAA,MAAA;AAAA,IAEpD;AAEA,QAAI,UAAU,QAAQ,MAAM;AAC1B,eAAS,KAAK,KAAK,MAAM;AAAA,IAC3B;AAEA,QAAI,UAAU,SAAS,MAAM;AAC3B,eAAS,KAAK,MAAM,MAAM;AAAA,IAC5B;AAEA,QAAI,UAAU,UAAU,MAAM;AAC5B,eAAS,CAAC,OAAO,QAAQ,SAAS,MAAM;AAAA,IAC1C;AAEA,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,OAAO,kBAAkB,CAAA;ACpElB,MAAM,UAAU,CACrB,OACA,UACA,aACG;AACH,SAAO,OAAmB,OAAO,KAAK,IAAI,OAAO,QAAQ,IAAK,KAAK,QAAQ;AAC7E;ACFO,MAAM,SAAS,CACpB,OACA,aACuB;AACvB,QAAM,WACJ,YAAY,cAAc,WAAY,SAAS,WAAyB;AAE1E,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAEA,MAAIA,UAAAA,UAAU,SAAS,KAAK,GAAG;AAC7B,QAAI,UAAU,YAAY;AACxB,aAAO,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,IACtC;AAEA,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B;AAEA,SAAO,OAAO,KAAK;AACrB;;;;;;;;"}
package/parser.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ import { Maybe } from 'yummies/types';
2
+
3
+ interface NumberParserSettings<TFallback = number> {
4
+ digits?: number;
5
+ fallback?: TFallback;
6
+ /**
7
+ * Round to upper boundary
8
+ * 5.1 -> 6
9
+ */
10
+ ceil?: boolean;
11
+ /**
12
+ * Round to bottom boundary
13
+ * 5.9 -> 5
14
+ */
15
+ floor?: boolean;
16
+ clamped?: [min?: Maybe<number>, max?: Maybe<number>];
17
+ }
18
+ declare const number: {
19
+ <TFallback = number>(input: Maybe<unknown>, userSettings?: Maybe<NumberParserSettings<TFallback>>): number | TFallback;
20
+ defaultSettings: NumberParserSettings<number>;
21
+ };
22
+
23
+ declare const percent: <TFallback = number>(value: Maybe<string | number>, maxValue?: Maybe<string | number>, settings?: Maybe<NumberParserSettings<TFallback>>) => number | TFallback;
24
+
25
+ interface StringParserSettings<TFallback = string> {
26
+ fallback?: TFallback;
27
+ prettyJson?: boolean;
28
+ }
29
+ declare const string: <TFallback = string>(input: Maybe<unknown>, settings?: Maybe<StringParserSettings<TFallback>>) => string | TFallback;
30
+
31
+ type _exports_NumberParserSettings<TFallback = number> = NumberParserSettings<TFallback>;
32
+ type _exports_StringParserSettings<TFallback = string> = StringParserSettings<TFallback>;
33
+ declare const _exports_number: typeof number;
34
+ declare const _exports_percent: typeof percent;
35
+ declare const _exports_string: typeof string;
36
+ declare namespace _exports {
37
+ export { _exports_number as number, _exports_percent as percent, _exports_string as string };
38
+ export type { _exports_NumberParserSettings as NumberParserSettings, _exports_StringParserSettings as StringParserSettings };
39
+ }
40
+
41
+ export { _exports as parser };
package/parser.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sources":["../src/parser/number.ts","../src/parser/percent.ts","../src/parser/string.ts"],"sourcesContent":["import { format } from 'yummies/format';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\n\nexport interface NumberParserSettings<TFallback = number> {\n digits?: number;\n fallback?: TFallback;\n /**\n * Round to upper boundary\n * 5.1 -> 6\n */\n ceil?: boolean;\n /**\n * Round to bottom boundary\n * 5.9 -> 5\n */\n floor?: boolean;\n clamped?: [min?: Maybe<number>, max?: Maybe<number>];\n}\n\nexport const number = <TFallback = number>(\n input: Maybe<unknown>,\n userSettings?: Maybe<NumberParserSettings<TFallback>>,\n): number | TFallback => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const fallback = settings?.fallback ?? 0;\n\n let result: number;\n\n if (typeGuard.isNumber(input)) {\n result = input;\n } else if (typeGuard.isString(input)) {\n const formattedInput = format.skipSpaces(input).replace(',', '.');\n if (formattedInput === '') {\n result = fallback as any;\n } else {\n result = Number(formattedInput);\n }\n } else {\n result = fallback as any;\n }\n\n if (typeGuard.isNumber(result)) {\n if (settings?.clamped != null) {\n result = Math.max(\n settings.clamped[0] ?? -Infinity,\n Math.min(result, settings.clamped[1] ?? Infinity),\n );\n }\n\n if (settings?.ceil != null) {\n result = Math.ceil(result);\n }\n\n if (settings?.floor != null) {\n result = Math.floor(result);\n }\n\n if (settings?.digits != null) {\n result = +result.toFixed(settings.digits);\n }\n\n return result;\n } else {\n return fallback;\n }\n};\n\nnumber.defaultSettings = {} as NumberParserSettings;\n","import type { Maybe } from 'yummies/utils/types';\n\nimport { type NumberParserSettings, number } from './number.js';\n\nexport const percent = <TFallback = number>(\n value: Maybe<string | number>,\n maxValue?: Maybe<string | number>,\n settings?: Maybe<NumberParserSettings<TFallback>>,\n) => {\n return number<TFallback>((Number(value) / Number(maxValue)) * 100, settings);\n};\n","import { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\n\nexport interface StringParserSettings<TFallback = string> {\n fallback?: TFallback;\n prettyJson?: boolean;\n}\n\nexport const string = <TFallback = string>(\n input: Maybe<unknown>,\n settings?: Maybe<StringParserSettings<TFallback>>,\n): string | TFallback => {\n const fallback =\n settings && 'fallback' in settings ? (settings.fallback as TFallback) : '';\n\n if (input == null) {\n return fallback;\n }\n\n if (typeGuard.isObject(input)) {\n if (settings?.prettyJson) {\n return JSON.stringify(input, null, 2);\n }\n\n return JSON.stringify(input);\n }\n\n return String(input);\n};\n"],"names":[],"mappings":";;AAoBO,MAAM,SAAS,CACpB,OACA,iBACuB;AACvB,QAAM,WAAW;AAAA,IACf,GAAG,OAAO;AAAA,IACV,GAAG;AAAA,EAAA;AAGL,QAAM,WAAW,UAAU,YAAY;AAEvC,MAAI;AAEJ,MAAI,UAAU,SAAS,KAAK,GAAG;AAC7B,aAAS;AAAA,EACX,WAAW,UAAU,SAAS,KAAK,GAAG;AACpC,UAAM,iBAAiB,OAAO,WAAW,KAAK,EAAE,QAAQ,KAAK,GAAG;AAChE,QAAI,mBAAmB,IAAI;AACzB,eAAS;AAAA,IACX,OAAO;AACL,eAAS,OAAO,cAAc;AAAA,IAChC;AAAA,EACF,OAAO;AACL,aAAS;AAAA,EACX;AAEA,MAAI,UAAU,SAAS,MAAM,GAAG;AAC9B,QAAI,UAAU,WAAW,MAAM;AAC7B,eAAS,KAAK;AAAA,QACZ,SAAS,QAAQ,CAAC,KAAK;AAAA,QACvB,KAAK,IAAI,QAAQ,SAAS,QAAQ,CAAC,KAAK,QAAQ;AAAA,MAAA;AAAA,IAEpD;AAEA,QAAI,UAAU,QAAQ,MAAM;AAC1B,eAAS,KAAK,KAAK,MAAM;AAAA,IAC3B;AAEA,QAAI,UAAU,SAAS,MAAM;AAC3B,eAAS,KAAK,MAAM,MAAM;AAAA,IAC5B;AAEA,QAAI,UAAU,UAAU,MAAM;AAC5B,eAAS,CAAC,OAAO,QAAQ,SAAS,MAAM;AAAA,IAC1C;AAEA,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,OAAO,kBAAkB,CAAA;ACpElB,MAAM,UAAU,CACrB,OACA,UACA,aACG;AACH,SAAO,OAAmB,OAAO,KAAK,IAAI,OAAO,QAAQ,IAAK,KAAK,QAAQ;AAC7E;ACFO,MAAM,SAAS,CACpB,OACA,aACuB;AACvB,QAAM,WACJ,YAAY,cAAc,WAAY,SAAS,WAAyB;AAE1E,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,SAAS,KAAK,GAAG;AAC7B,QAAI,UAAU,YAAY;AACxB,aAAO,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,IACtC;AAEA,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B;AAEA,SAAO,OAAO,KAAK;AACrB;;;;;;;"}
1
+ {"version":3,"file":"parser.js","sources":["../src/parser/number.ts","../src/parser/percent.ts","../src/parser/string.ts"],"sourcesContent":["import { format } from 'yummies/format';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nexport interface NumberParserSettings<TFallback = number> {\n digits?: number;\n fallback?: TFallback;\n /**\n * Round to upper boundary\n * 5.1 -> 6\n */\n ceil?: boolean;\n /**\n * Round to bottom boundary\n * 5.9 -> 5\n */\n floor?: boolean;\n clamped?: [min?: Maybe<number>, max?: Maybe<number>];\n}\n\nexport const number = <TFallback = number>(\n input: Maybe<unknown>,\n userSettings?: Maybe<NumberParserSettings<TFallback>>,\n): number | TFallback => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const fallback = settings?.fallback ?? 0;\n\n let result: number;\n\n if (typeGuard.isNumber(input)) {\n result = input;\n } else if (typeGuard.isString(input)) {\n const formattedInput = format.skipSpaces(input).replace(',', '.');\n if (formattedInput === '') {\n result = fallback as any;\n } else {\n result = Number(formattedInput);\n }\n } else {\n result = fallback as any;\n }\n\n if (typeGuard.isNumber(result)) {\n if (settings?.clamped != null) {\n result = Math.max(\n settings.clamped[0] ?? -Infinity,\n Math.min(result, settings.clamped[1] ?? Infinity),\n );\n }\n\n if (settings?.ceil != null) {\n result = Math.ceil(result);\n }\n\n if (settings?.floor != null) {\n result = Math.floor(result);\n }\n\n if (settings?.digits != null) {\n result = +result.toFixed(settings.digits);\n }\n\n return result;\n } else {\n return fallback;\n }\n};\n\nnumber.defaultSettings = {} as NumberParserSettings;\n","import type { Maybe } from 'yummies/types';\n\nimport { type NumberParserSettings, number } from './number.js';\n\nexport const percent = <TFallback = number>(\n value: Maybe<string | number>,\n maxValue?: Maybe<string | number>,\n settings?: Maybe<NumberParserSettings<TFallback>>,\n) => {\n return number<TFallback>((Number(value) / Number(maxValue)) * 100, settings);\n};\n","import { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nexport interface StringParserSettings<TFallback = string> {\n fallback?: TFallback;\n prettyJson?: boolean;\n}\n\nexport const string = <TFallback = string>(\n input: Maybe<unknown>,\n settings?: Maybe<StringParserSettings<TFallback>>,\n): string | TFallback => {\n const fallback =\n settings && 'fallback' in settings ? (settings.fallback as TFallback) : '';\n\n if (input == null) {\n return fallback;\n }\n\n if (typeGuard.isObject(input)) {\n if (settings?.prettyJson) {\n return JSON.stringify(input, null, 2);\n }\n\n return JSON.stringify(input);\n }\n\n return String(input);\n};\n"],"names":[],"mappings":";;AAoBO,MAAM,SAAS,CACpB,OACA,iBACuB;AACvB,QAAM,WAAW;AAAA,IACf,GAAG,OAAO;AAAA,IACV,GAAG;AAAA,EAAA;AAGL,QAAM,WAAW,UAAU,YAAY;AAEvC,MAAI;AAEJ,MAAI,UAAU,SAAS,KAAK,GAAG;AAC7B,aAAS;AAAA,EACX,WAAW,UAAU,SAAS,KAAK,GAAG;AACpC,UAAM,iBAAiB,OAAO,WAAW,KAAK,EAAE,QAAQ,KAAK,GAAG;AAChE,QAAI,mBAAmB,IAAI;AACzB,eAAS;AAAA,IACX,OAAO;AACL,eAAS,OAAO,cAAc;AAAA,IAChC;AAAA,EACF,OAAO;AACL,aAAS;AAAA,EACX;AAEA,MAAI,UAAU,SAAS,MAAM,GAAG;AAC9B,QAAI,UAAU,WAAW,MAAM;AAC7B,eAAS,KAAK;AAAA,QACZ,SAAS,QAAQ,CAAC,KAAK;AAAA,QACvB,KAAK,IAAI,QAAQ,SAAS,QAAQ,CAAC,KAAK,QAAQ;AAAA,MAAA;AAAA,IAEpD;AAEA,QAAI,UAAU,QAAQ,MAAM;AAC1B,eAAS,KAAK,KAAK,MAAM;AAAA,IAC3B;AAEA,QAAI,UAAU,SAAS,MAAM;AAC3B,eAAS,KAAK,MAAM,MAAM;AAAA,IAC5B;AAEA,QAAI,UAAU,UAAU,MAAM;AAC5B,eAAS,CAAC,OAAO,QAAQ,SAAS,MAAM;AAAA,IAC1C;AAEA,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,OAAO,kBAAkB,CAAA;ACpElB,MAAM,UAAU,CACrB,OACA,UACA,aACG;AACH,SAAO,OAAmB,OAAO,KAAK,IAAI,OAAO,QAAQ,IAAK,KAAK,QAAQ;AAC7E;ACFO,MAAM,SAAS,CACpB,OACA,aACuB;AACvB,QAAM,WACJ,YAAY,cAAc,WAAY,SAAS,WAAyB;AAE1E,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,SAAS,KAAK,GAAG;AAC7B,QAAI,UAAU,YAAY;AACxB,aAAO,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,IACtC;AAEA,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B;AAEA,SAAO,OAAO,KAAK;AACrB;;;;;;;"}
package/price.cjs CHANGED
@@ -1,2 +1,21 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});exports.formatPrice=(r,e,t,{withoutSymbol:o,customSymbol:c,...m}={})=>{const a=new Intl.NumberFormat(e,{style:"currency",currency:t,minimumFractionDigits:0,currencyDisplay:"narrowSymbol",...m}),l=a.format(0).replace("0",""),n=a.format(r).replace(l,"");return o?n:`${n} ${c??("RUB"===t?"р":l)}`.replace(/\s{2,}/," ")};
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const formatPrice = (price, locale, currency, { withoutSymbol, customSymbol, ...options } = {}) => {
4
+ const priceFormatter = new Intl.NumberFormat(locale, {
5
+ style: "currency",
6
+ currency,
7
+ minimumFractionDigits: 0,
8
+ currencyDisplay: "narrowSymbol",
9
+ ...options
10
+ });
11
+ const zeroPrice = priceFormatter.format(0);
12
+ const currencySymbol = zeroPrice.replace("0", "");
13
+ const rawPrice = priceFormatter.format(price);
14
+ const priceWithoutCurrency = rawPrice.replace(currencySymbol, "");
15
+ if (withoutSymbol) {
16
+ return priceWithoutCurrency;
17
+ }
18
+ return `${priceWithoutCurrency} ${customSymbol ?? (currency === "RUB" ? "р" : currencySymbol)}`.replace(/\s{2,}/, " ");
19
+ };
20
+ exports.formatPrice = formatPrice;
2
21
  //# sourceMappingURL=price.cjs.map
package/price.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"price.cjs","sources":["../src/price.ts"],"sourcesContent":["export interface PriceFormatOptions\n extends Partial<Omit<Intl.NumberFormatOptions, 'currency'>> {\n withoutSymbol?: boolean;\n customSymbol?: string;\n}\n\nexport const formatPrice = (\n price: number,\n locale: string,\n currency?: string,\n { withoutSymbol, customSymbol, ...options }: PriceFormatOptions = {},\n) => {\n const priceFormatter = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n currencyDisplay: 'narrowSymbol',\n ...options,\n });\n\n const zeroPrice = priceFormatter.format(0);\n const currencySymbol = zeroPrice.replace('0', '');\n const rawPrice = priceFormatter.format(price);\n const priceWithoutCurrency = rawPrice.replace(currencySymbol, '');\n\n if (withoutSymbol) {\n return priceWithoutCurrency;\n }\n\n return `${priceWithoutCurrency} ${\n customSymbol ?? (currency === 'RUB' ? 'р' : currencySymbol)\n }`.replace(/\\s{2,}/, ' ');\n};\n"],"names":["price","locale","currency","withoutSymbol","customSymbol","options","priceFormatter","Intl","NumberFormat","style","minimumFractionDigits","currencyDisplay","currencySymbol","format","replace","priceWithoutCurrency"],"mappings":"oGAM2B,CACzBA,EACAC,EACAC,GACEC,gBAAeC,kBAAiBC,GAAgC,MAElE,MAAMC,EAAiB,IAAIC,KAAKC,aAAaP,EAAQ,CACnDQ,MAAO,WACPP,WACAQ,sBAAuB,EACvBC,gBAAiB,kBACdN,IAICO,EADYN,EAAeO,OAAO,GACPC,QAAQ,IAAK,IAExCC,EADWT,EAAeO,OAAOb,GACDc,QAAQF,EAAgB,IAE9D,OAAIT,EACKY,EAGF,GAAGA,KACRX,IAA8B,QAAbF,EAAqB,IAAMU,KAC3CE,QAAQ,SAAU"}
1
+ {"version":3,"file":"price.cjs","sources":["../src/price.ts"],"sourcesContent":["export interface PriceFormatOptions\n extends Partial<Omit<Intl.NumberFormatOptions, 'currency'>> {\n withoutSymbol?: boolean;\n customSymbol?: string;\n}\n\nexport const formatPrice = (\n price: number,\n locale: string,\n currency?: string,\n { withoutSymbol, customSymbol, ...options }: PriceFormatOptions = {},\n) => {\n const priceFormatter = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n currencyDisplay: 'narrowSymbol',\n ...options,\n });\n\n const zeroPrice = priceFormatter.format(0);\n const currencySymbol = zeroPrice.replace('0', '');\n const rawPrice = priceFormatter.format(price);\n const priceWithoutCurrency = rawPrice.replace(currencySymbol, '');\n\n if (withoutSymbol) {\n return priceWithoutCurrency;\n }\n\n return `${priceWithoutCurrency} ${\n customSymbol ?? (currency === 'RUB' ? 'р' : currencySymbol)\n }`.replace(/\\s{2,}/, ' ');\n};\n"],"names":[],"mappings":";;AAMO,MAAM,cAAc,CACzB,OACA,QACA,UACA,EAAE,eAAe,cAAc,GAAG,QAAA,IAAgC,OAC/D;AACH,QAAM,iBAAiB,IAAI,KAAK,aAAa,QAAQ;AAAA,IACnD,OAAO;AAAA,IACP;AAAA,IACA,uBAAuB;AAAA,IACvB,iBAAiB;AAAA,IACjB,GAAG;AAAA,EAAA,CACJ;AAED,QAAM,YAAY,eAAe,OAAO,CAAC;AACzC,QAAM,iBAAiB,UAAU,QAAQ,KAAK,EAAE;AAChD,QAAM,WAAW,eAAe,OAAO,KAAK;AAC5C,QAAM,uBAAuB,SAAS,QAAQ,gBAAgB,EAAE;AAEhE,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,oBAAoB,IAC5B,iBAAiB,aAAa,QAAQ,MAAM,eAC9C,GAAG,QAAQ,UAAU,GAAG;AAC1B;;"}
package/price.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export interface PriceFormatOptions extends Partial<Omit<Intl.NumberFormatOptions, 'currency'>> {
1
+ interface PriceFormatOptions extends Partial<Omit<Intl.NumberFormatOptions, 'currency'>> {
2
2
  withoutSymbol?: boolean;
3
3
  customSymbol?: string;
4
4
  }
5
- export declare const formatPrice: (price: number, locale: string, currency?: string, { withoutSymbol, customSymbol, ...options }?: PriceFormatOptions) => string;
6
- //# sourceMappingURL=price.d.ts.map
5
+ declare const formatPrice: (price: number, locale: string, currency?: string, { withoutSymbol, customSymbol, ...options }?: PriceFormatOptions) => string;
6
+
7
+ export { formatPrice };
8
+ export type { PriceFormatOptions };
package/random.cjs CHANGED
@@ -1,2 +1,25 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=(o=0,e=1)=>Math.random()*(e-o)+o,e=(e=0,t=1)=>e===t?e:Math.round(o(e,t)),t=()=>e(0,10)<=6;exports.getFrequencyValue=o=>Math.random()<o,exports.getMajorRandomBool=t,exports.getMinorRandomBool=()=>!t(),exports.getRandomBool=()=>1===e(0,1),exports.getRandomChoice=o=>o[e(0,o.length-1)],exports.getRandomFloat=o,exports.getRandomInt=e,exports.getRandomSizeArray=(o=0,t=10)=>Array.from({length:e(o,t)}).fill(null);
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getRandomFloat = (min = 0, max = 1) => Math.random() * (max - min) + min;
4
+ const getRandomInt = (min = 0, max = 1) => min === max ? min : Math.round(getRandomFloat(min, max));
5
+ const getRandomChoice = (arr) => arr[getRandomInt(0, arr.length - 1)];
6
+ const getRandomSizeArray = (min = 0, max = 10) => Array.from({ length: getRandomInt(min, max) }).fill(null);
7
+ const getRandomBool = () => getRandomInt(0, 1) === 1;
8
+ const getMajorRandomBool = () => {
9
+ return getRandomInt(0, 10) <= 6;
10
+ };
11
+ const getMinorRandomBool = () => {
12
+ return !getMajorRandomBool();
13
+ };
14
+ const getFrequencyValue = (frequency) => {
15
+ return Math.random() < frequency;
16
+ };
17
+ exports.getFrequencyValue = getFrequencyValue;
18
+ exports.getMajorRandomBool = getMajorRandomBool;
19
+ exports.getMinorRandomBool = getMinorRandomBool;
20
+ exports.getRandomBool = getRandomBool;
21
+ exports.getRandomChoice = getRandomChoice;
22
+ exports.getRandomFloat = getRandomFloat;
23
+ exports.getRandomInt = getRandomInt;
24
+ exports.getRandomSizeArray = getRandomSizeArray;
2
25
  //# sourceMappingURL=random.cjs.map
package/random.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"random.cjs","sources":["../src/random.ts"],"sourcesContent":["export const getRandomFloat = <T extends number = number>(\n min = 0,\n max = 1,\n): T => (Math.random() * (max - min) + min) as T;\n\nexport const getRandomInt = <T extends number = number>(min = 0, max = 1): T =>\n min === max ? (min as T) : (Math.round(getRandomFloat(min, max)) as T);\n\nexport const getRandomChoice = <T>(arr: T[]): T =>\n arr[getRandomInt(0, arr.length - 1)];\n\nexport const getRandomSizeArray = (min = 0, max = 10) =>\n Array.from({ length: getRandomInt(min, max) }).fill(null);\n\nexport const getRandomBool = () => getRandomInt(0, 1) === 1;\n\nexport const getMajorRandomBool = () => {\n return getRandomInt(0, 10) <= 6;\n};\n\nexport const getMinorRandomBool = () => {\n return !getMajorRandomBool();\n};\n\nexport const getFrequencyValue = (frequency: number) => {\n return Math.random() < frequency;\n};\n"],"names":["getRandomFloat","min","max","Math","random","getRandomInt","round","getMajorRandomBool","frequency","arr","length","Array","from","fill"],"mappings":"gFAAO,MAAMA,EAAiB,CAC5BC,EAAM,EACNC,EAAM,IACCC,KAAKC,UAAYF,EAAMD,GAAOA,EAE1BI,EAAe,CAA4BJ,EAAM,EAAGC,EAAM,IACrED,IAAQC,EAAOD,EAAaE,KAAKG,MAAMN,EAAeC,EAAKC,IAUhDK,EAAqB,IACzBF,EAAa,EAAG,KAAO,4BAOEG,GACzBL,KAAKC,SAAWI,0DALS,KACxBD,0BAPmB,IAA6B,IAAvBF,EAAa,EAAG,2BANhBI,GACjCA,EAAIJ,EAAa,EAAGI,EAAIC,OAAS,+EAED,CAACT,EAAM,EAAGC,EAAM,KAChDS,MAAMC,KAAK,CAAEF,OAAQL,EAAaJ,EAAKC,KAAQW,KAAK"}
1
+ {"version":3,"file":"random.cjs","sources":["../src/random.ts"],"sourcesContent":["export const getRandomFloat = <T extends number = number>(\n min = 0,\n max = 1,\n): T => (Math.random() * (max - min) + min) as T;\n\nexport const getRandomInt = <T extends number = number>(min = 0, max = 1): T =>\n min === max ? (min as T) : (Math.round(getRandomFloat(min, max)) as T);\n\nexport const getRandomChoice = <T>(arr: T[]): T =>\n arr[getRandomInt(0, arr.length - 1)];\n\nexport const getRandomSizeArray = (min = 0, max = 10) =>\n Array.from({ length: getRandomInt(min, max) }).fill(null);\n\nexport const getRandomBool = () => getRandomInt(0, 1) === 1;\n\nexport const getMajorRandomBool = () => {\n return getRandomInt(0, 10) <= 6;\n};\n\nexport const getMinorRandomBool = () => {\n return !getMajorRandomBool();\n};\n\nexport const getFrequencyValue = (frequency: number) => {\n return Math.random() < frequency;\n};\n"],"names":[],"mappings":";;AAAO,MAAM,iBAAiB,CAC5B,MAAM,GACN,MAAM,MACC,KAAK,OAAA,KAAY,MAAM,OAAO;AAEhC,MAAM,eAAe,CAA4B,MAAM,GAAG,MAAM,MACrE,QAAQ,MAAO,MAAa,KAAK,MAAM,eAAe,KAAK,GAAG,CAAC;AAE1D,MAAM,kBAAkB,CAAI,QACjC,IAAI,aAAa,GAAG,IAAI,SAAS,CAAC,CAAC;AAE9B,MAAM,qBAAqB,CAAC,MAAM,GAAG,MAAM,OAChD,MAAM,KAAK,EAAE,QAAQ,aAAa,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI;AAEnD,MAAM,gBAAgB,MAAM,aAAa,GAAG,CAAC,MAAM;AAEnD,MAAM,qBAAqB,MAAM;AACtC,SAAO,aAAa,GAAG,EAAE,KAAK;AAChC;AAEO,MAAM,qBAAqB,MAAM;AACtC,SAAO,CAAC,mBAAA;AACV;AAEO,MAAM,oBAAoB,CAAC,cAAsB;AACtD,SAAO,KAAK,WAAW;AACzB;;;;;;;;;"}
package/random.d.ts CHANGED
@@ -1,9 +1,10 @@
1
- export declare const getRandomFloat: <T extends number = number>(min?: number, max?: number) => T;
2
- export declare const getRandomInt: <T extends number = number>(min?: number, max?: number) => T;
3
- export declare const getRandomChoice: <T>(arr: T[]) => T;
4
- export declare const getRandomSizeArray: (min?: number, max?: number) => unknown[];
5
- export declare const getRandomBool: () => boolean;
6
- export declare const getMajorRandomBool: () => boolean;
7
- export declare const getMinorRandomBool: () => boolean;
8
- export declare const getFrequencyValue: (frequency: number) => boolean;
9
- //# sourceMappingURL=random.d.ts.map
1
+ declare const getRandomFloat: <T extends number = number>(min?: number, max?: number) => T;
2
+ declare const getRandomInt: <T extends number = number>(min?: number, max?: number) => T;
3
+ declare const getRandomChoice: <T>(arr: T[]) => T;
4
+ declare const getRandomSizeArray: (min?: number, max?: number) => unknown[];
5
+ declare const getRandomBool: () => boolean;
6
+ declare const getMajorRandomBool: () => boolean;
7
+ declare const getMinorRandomBool: () => boolean;
8
+ declare const getFrequencyValue: (frequency: number) => boolean;
9
+
10
+ export { getFrequencyValue, getMajorRandomBool, getMinorRandomBool, getRandomBool, getRandomChoice, getRandomFloat, getRandomInt, getRandomSizeArray };