@gkucmierz/utils 1.1.0 → 1.1.1

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.
@@ -0,0 +1,728 @@
1
+ {
2
+ "name": "@gkucmierz/utils",
3
+ "version": "1.1.1",
4
+ "lockfileVersion": 2,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@gkucmierz/utils",
9
+ "version": "1.1.1",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "jasmine": "^4.4.0",
13
+ "nodemon": "^2.0.20"
14
+ }
15
+ },
16
+ "node_modules/abbrev": {
17
+ "version": "1.1.1",
18
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
19
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
20
+ },
21
+ "node_modules/anymatch": {
22
+ "version": "3.1.2",
23
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
24
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
25
+ "dependencies": {
26
+ "normalize-path": "^3.0.0",
27
+ "picomatch": "^2.0.4"
28
+ },
29
+ "engines": {
30
+ "node": ">= 8"
31
+ }
32
+ },
33
+ "node_modules/balanced-match": {
34
+ "version": "1.0.2",
35
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
36
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
37
+ },
38
+ "node_modules/binary-extensions": {
39
+ "version": "2.2.0",
40
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
41
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
42
+ "engines": {
43
+ "node": ">=8"
44
+ }
45
+ },
46
+ "node_modules/brace-expansion": {
47
+ "version": "1.1.11",
48
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
49
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
50
+ "dependencies": {
51
+ "balanced-match": "^1.0.0",
52
+ "concat-map": "0.0.1"
53
+ }
54
+ },
55
+ "node_modules/braces": {
56
+ "version": "3.0.2",
57
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
58
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
59
+ "dependencies": {
60
+ "fill-range": "^7.0.1"
61
+ },
62
+ "engines": {
63
+ "node": ">=8"
64
+ }
65
+ },
66
+ "node_modules/chokidar": {
67
+ "version": "3.5.3",
68
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
69
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
70
+ "funding": [
71
+ {
72
+ "type": "individual",
73
+ "url": "https://paulmillr.com/funding/"
74
+ }
75
+ ],
76
+ "dependencies": {
77
+ "anymatch": "~3.1.2",
78
+ "braces": "~3.0.2",
79
+ "glob-parent": "~5.1.2",
80
+ "is-binary-path": "~2.1.0",
81
+ "is-glob": "~4.0.1",
82
+ "normalize-path": "~3.0.0",
83
+ "readdirp": "~3.6.0"
84
+ },
85
+ "engines": {
86
+ "node": ">= 8.10.0"
87
+ },
88
+ "optionalDependencies": {
89
+ "fsevents": "~2.3.2"
90
+ }
91
+ },
92
+ "node_modules/concat-map": {
93
+ "version": "0.0.1",
94
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
95
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
96
+ },
97
+ "node_modules/debug": {
98
+ "version": "3.2.7",
99
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
100
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
101
+ "dependencies": {
102
+ "ms": "^2.1.1"
103
+ }
104
+ },
105
+ "node_modules/fill-range": {
106
+ "version": "7.0.1",
107
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
108
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
109
+ "dependencies": {
110
+ "to-regex-range": "^5.0.1"
111
+ },
112
+ "engines": {
113
+ "node": ">=8"
114
+ }
115
+ },
116
+ "node_modules/fs.realpath": {
117
+ "version": "1.0.0",
118
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
119
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
120
+ },
121
+ "node_modules/fsevents": {
122
+ "version": "2.3.2",
123
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
124
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
125
+ "hasInstallScript": true,
126
+ "optional": true,
127
+ "os": [
128
+ "darwin"
129
+ ],
130
+ "engines": {
131
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
132
+ }
133
+ },
134
+ "node_modules/glob": {
135
+ "version": "7.2.3",
136
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
137
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
138
+ "dependencies": {
139
+ "fs.realpath": "^1.0.0",
140
+ "inflight": "^1.0.4",
141
+ "inherits": "2",
142
+ "minimatch": "^3.1.1",
143
+ "once": "^1.3.0",
144
+ "path-is-absolute": "^1.0.0"
145
+ },
146
+ "engines": {
147
+ "node": "*"
148
+ },
149
+ "funding": {
150
+ "url": "https://github.com/sponsors/isaacs"
151
+ }
152
+ },
153
+ "node_modules/glob-parent": {
154
+ "version": "5.1.2",
155
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
156
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
157
+ "dependencies": {
158
+ "is-glob": "^4.0.1"
159
+ },
160
+ "engines": {
161
+ "node": ">= 6"
162
+ }
163
+ },
164
+ "node_modules/has-flag": {
165
+ "version": "3.0.0",
166
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
167
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
168
+ "engines": {
169
+ "node": ">=4"
170
+ }
171
+ },
172
+ "node_modules/ignore-by-default": {
173
+ "version": "1.0.1",
174
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
175
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
176
+ },
177
+ "node_modules/inflight": {
178
+ "version": "1.0.6",
179
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
180
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
181
+ "dependencies": {
182
+ "once": "^1.3.0",
183
+ "wrappy": "1"
184
+ }
185
+ },
186
+ "node_modules/inherits": {
187
+ "version": "2.0.4",
188
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
189
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
190
+ },
191
+ "node_modules/is-binary-path": {
192
+ "version": "2.1.0",
193
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
194
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
195
+ "dependencies": {
196
+ "binary-extensions": "^2.0.0"
197
+ },
198
+ "engines": {
199
+ "node": ">=8"
200
+ }
201
+ },
202
+ "node_modules/is-extglob": {
203
+ "version": "2.1.1",
204
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
205
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
206
+ "engines": {
207
+ "node": ">=0.10.0"
208
+ }
209
+ },
210
+ "node_modules/is-glob": {
211
+ "version": "4.0.3",
212
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
213
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
214
+ "dependencies": {
215
+ "is-extglob": "^2.1.1"
216
+ },
217
+ "engines": {
218
+ "node": ">=0.10.0"
219
+ }
220
+ },
221
+ "node_modules/is-number": {
222
+ "version": "7.0.0",
223
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
224
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
225
+ "engines": {
226
+ "node": ">=0.12.0"
227
+ }
228
+ },
229
+ "node_modules/jasmine": {
230
+ "version": "4.4.0",
231
+ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-4.4.0.tgz",
232
+ "integrity": "sha512-xrbOyYkkCvgduNw7CKktDtNb+BwwBv/zvQeHpTkbxqQ37AJL5V4sY3jHoMIJPP/hTc3QxLVwOyxc87AqA+kw5g==",
233
+ "dependencies": {
234
+ "glob": "^7.1.6",
235
+ "jasmine-core": "^4.4.0"
236
+ },
237
+ "bin": {
238
+ "jasmine": "bin/jasmine.js"
239
+ }
240
+ },
241
+ "node_modules/jasmine-core": {
242
+ "version": "4.4.0",
243
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.4.0.tgz",
244
+ "integrity": "sha512-+l482uImx5BVd6brJYlaHe2UwfKoZBqQfNp20ZmdNfsjGFTemGfqHLsXjKEW23w9R/m8WYeFc9JmIgjj6dUtAA=="
245
+ },
246
+ "node_modules/minimatch": {
247
+ "version": "3.1.2",
248
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
249
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
250
+ "dependencies": {
251
+ "brace-expansion": "^1.1.7"
252
+ },
253
+ "engines": {
254
+ "node": "*"
255
+ }
256
+ },
257
+ "node_modules/ms": {
258
+ "version": "2.1.3",
259
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
260
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
261
+ },
262
+ "node_modules/nodemon": {
263
+ "version": "2.0.20",
264
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
265
+ "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==",
266
+ "dependencies": {
267
+ "chokidar": "^3.5.2",
268
+ "debug": "^3.2.7",
269
+ "ignore-by-default": "^1.0.1",
270
+ "minimatch": "^3.1.2",
271
+ "pstree.remy": "^1.1.8",
272
+ "semver": "^5.7.1",
273
+ "simple-update-notifier": "^1.0.7",
274
+ "supports-color": "^5.5.0",
275
+ "touch": "^3.1.0",
276
+ "undefsafe": "^2.0.5"
277
+ },
278
+ "bin": {
279
+ "nodemon": "bin/nodemon.js"
280
+ },
281
+ "engines": {
282
+ "node": ">=8.10.0"
283
+ },
284
+ "funding": {
285
+ "type": "opencollective",
286
+ "url": "https://opencollective.com/nodemon"
287
+ }
288
+ },
289
+ "node_modules/nopt": {
290
+ "version": "1.0.10",
291
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
292
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
293
+ "dependencies": {
294
+ "abbrev": "1"
295
+ },
296
+ "bin": {
297
+ "nopt": "bin/nopt.js"
298
+ },
299
+ "engines": {
300
+ "node": "*"
301
+ }
302
+ },
303
+ "node_modules/normalize-path": {
304
+ "version": "3.0.0",
305
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
306
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
307
+ "engines": {
308
+ "node": ">=0.10.0"
309
+ }
310
+ },
311
+ "node_modules/once": {
312
+ "version": "1.4.0",
313
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
314
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
315
+ "dependencies": {
316
+ "wrappy": "1"
317
+ }
318
+ },
319
+ "node_modules/path-is-absolute": {
320
+ "version": "1.0.1",
321
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
322
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
323
+ "engines": {
324
+ "node": ">=0.10.0"
325
+ }
326
+ },
327
+ "node_modules/picomatch": {
328
+ "version": "2.3.1",
329
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
330
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
331
+ "engines": {
332
+ "node": ">=8.6"
333
+ },
334
+ "funding": {
335
+ "url": "https://github.com/sponsors/jonschlinkert"
336
+ }
337
+ },
338
+ "node_modules/pstree.remy": {
339
+ "version": "1.1.8",
340
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
341
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
342
+ },
343
+ "node_modules/readdirp": {
344
+ "version": "3.6.0",
345
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
346
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
347
+ "dependencies": {
348
+ "picomatch": "^2.2.1"
349
+ },
350
+ "engines": {
351
+ "node": ">=8.10.0"
352
+ }
353
+ },
354
+ "node_modules/semver": {
355
+ "version": "5.7.1",
356
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
357
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
358
+ "bin": {
359
+ "semver": "bin/semver"
360
+ }
361
+ },
362
+ "node_modules/simple-update-notifier": {
363
+ "version": "1.0.7",
364
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
365
+ "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
366
+ "dependencies": {
367
+ "semver": "~7.0.0"
368
+ },
369
+ "engines": {
370
+ "node": ">=8.10.0"
371
+ }
372
+ },
373
+ "node_modules/simple-update-notifier/node_modules/semver": {
374
+ "version": "7.0.0",
375
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
376
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
377
+ "bin": {
378
+ "semver": "bin/semver.js"
379
+ }
380
+ },
381
+ "node_modules/supports-color": {
382
+ "version": "5.5.0",
383
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
384
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
385
+ "dependencies": {
386
+ "has-flag": "^3.0.0"
387
+ },
388
+ "engines": {
389
+ "node": ">=4"
390
+ }
391
+ },
392
+ "node_modules/to-regex-range": {
393
+ "version": "5.0.1",
394
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
395
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
396
+ "dependencies": {
397
+ "is-number": "^7.0.0"
398
+ },
399
+ "engines": {
400
+ "node": ">=8.0"
401
+ }
402
+ },
403
+ "node_modules/touch": {
404
+ "version": "3.1.0",
405
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
406
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
407
+ "dependencies": {
408
+ "nopt": "~1.0.10"
409
+ },
410
+ "bin": {
411
+ "nodetouch": "bin/nodetouch.js"
412
+ }
413
+ },
414
+ "node_modules/undefsafe": {
415
+ "version": "2.0.5",
416
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
417
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
418
+ },
419
+ "node_modules/wrappy": {
420
+ "version": "1.0.2",
421
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
422
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
423
+ }
424
+ },
425
+ "dependencies": {
426
+ "abbrev": {
427
+ "version": "1.1.1",
428
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
429
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
430
+ },
431
+ "anymatch": {
432
+ "version": "3.1.2",
433
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
434
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
435
+ "requires": {
436
+ "normalize-path": "^3.0.0",
437
+ "picomatch": "^2.0.4"
438
+ }
439
+ },
440
+ "balanced-match": {
441
+ "version": "1.0.2",
442
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
443
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
444
+ },
445
+ "binary-extensions": {
446
+ "version": "2.2.0",
447
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
448
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
449
+ },
450
+ "brace-expansion": {
451
+ "version": "1.1.11",
452
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
453
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
454
+ "requires": {
455
+ "balanced-match": "^1.0.0",
456
+ "concat-map": "0.0.1"
457
+ }
458
+ },
459
+ "braces": {
460
+ "version": "3.0.2",
461
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
462
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
463
+ "requires": {
464
+ "fill-range": "^7.0.1"
465
+ }
466
+ },
467
+ "chokidar": {
468
+ "version": "3.5.3",
469
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
470
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
471
+ "requires": {
472
+ "anymatch": "~3.1.2",
473
+ "braces": "~3.0.2",
474
+ "fsevents": "~2.3.2",
475
+ "glob-parent": "~5.1.2",
476
+ "is-binary-path": "~2.1.0",
477
+ "is-glob": "~4.0.1",
478
+ "normalize-path": "~3.0.0",
479
+ "readdirp": "~3.6.0"
480
+ }
481
+ },
482
+ "concat-map": {
483
+ "version": "0.0.1",
484
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
485
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
486
+ },
487
+ "debug": {
488
+ "version": "3.2.7",
489
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
490
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
491
+ "requires": {
492
+ "ms": "^2.1.1"
493
+ }
494
+ },
495
+ "fill-range": {
496
+ "version": "7.0.1",
497
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
498
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
499
+ "requires": {
500
+ "to-regex-range": "^5.0.1"
501
+ }
502
+ },
503
+ "fs.realpath": {
504
+ "version": "1.0.0",
505
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
506
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
507
+ },
508
+ "fsevents": {
509
+ "version": "2.3.2",
510
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
511
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
512
+ "optional": true
513
+ },
514
+ "glob": {
515
+ "version": "7.2.3",
516
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
517
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
518
+ "requires": {
519
+ "fs.realpath": "^1.0.0",
520
+ "inflight": "^1.0.4",
521
+ "inherits": "2",
522
+ "minimatch": "^3.1.1",
523
+ "once": "^1.3.0",
524
+ "path-is-absolute": "^1.0.0"
525
+ }
526
+ },
527
+ "glob-parent": {
528
+ "version": "5.1.2",
529
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
530
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
531
+ "requires": {
532
+ "is-glob": "^4.0.1"
533
+ }
534
+ },
535
+ "has-flag": {
536
+ "version": "3.0.0",
537
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
538
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
539
+ },
540
+ "ignore-by-default": {
541
+ "version": "1.0.1",
542
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
543
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
544
+ },
545
+ "inflight": {
546
+ "version": "1.0.6",
547
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
548
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
549
+ "requires": {
550
+ "once": "^1.3.0",
551
+ "wrappy": "1"
552
+ }
553
+ },
554
+ "inherits": {
555
+ "version": "2.0.4",
556
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
557
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
558
+ },
559
+ "is-binary-path": {
560
+ "version": "2.1.0",
561
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
562
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
563
+ "requires": {
564
+ "binary-extensions": "^2.0.0"
565
+ }
566
+ },
567
+ "is-extglob": {
568
+ "version": "2.1.1",
569
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
570
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
571
+ },
572
+ "is-glob": {
573
+ "version": "4.0.3",
574
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
575
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
576
+ "requires": {
577
+ "is-extglob": "^2.1.1"
578
+ }
579
+ },
580
+ "is-number": {
581
+ "version": "7.0.0",
582
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
583
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
584
+ },
585
+ "jasmine": {
586
+ "version": "4.4.0",
587
+ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-4.4.0.tgz",
588
+ "integrity": "sha512-xrbOyYkkCvgduNw7CKktDtNb+BwwBv/zvQeHpTkbxqQ37AJL5V4sY3jHoMIJPP/hTc3QxLVwOyxc87AqA+kw5g==",
589
+ "requires": {
590
+ "glob": "^7.1.6",
591
+ "jasmine-core": "^4.4.0"
592
+ }
593
+ },
594
+ "jasmine-core": {
595
+ "version": "4.4.0",
596
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.4.0.tgz",
597
+ "integrity": "sha512-+l482uImx5BVd6brJYlaHe2UwfKoZBqQfNp20ZmdNfsjGFTemGfqHLsXjKEW23w9R/m8WYeFc9JmIgjj6dUtAA=="
598
+ },
599
+ "minimatch": {
600
+ "version": "3.1.2",
601
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
602
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
603
+ "requires": {
604
+ "brace-expansion": "^1.1.7"
605
+ }
606
+ },
607
+ "ms": {
608
+ "version": "2.1.3",
609
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
610
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
611
+ },
612
+ "nodemon": {
613
+ "version": "2.0.20",
614
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
615
+ "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==",
616
+ "requires": {
617
+ "chokidar": "^3.5.2",
618
+ "debug": "^3.2.7",
619
+ "ignore-by-default": "^1.0.1",
620
+ "minimatch": "^3.1.2",
621
+ "pstree.remy": "^1.1.8",
622
+ "semver": "^5.7.1",
623
+ "simple-update-notifier": "^1.0.7",
624
+ "supports-color": "^5.5.0",
625
+ "touch": "^3.1.0",
626
+ "undefsafe": "^2.0.5"
627
+ }
628
+ },
629
+ "nopt": {
630
+ "version": "1.0.10",
631
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
632
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
633
+ "requires": {
634
+ "abbrev": "1"
635
+ }
636
+ },
637
+ "normalize-path": {
638
+ "version": "3.0.0",
639
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
640
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
641
+ },
642
+ "once": {
643
+ "version": "1.4.0",
644
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
645
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
646
+ "requires": {
647
+ "wrappy": "1"
648
+ }
649
+ },
650
+ "path-is-absolute": {
651
+ "version": "1.0.1",
652
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
653
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
654
+ },
655
+ "picomatch": {
656
+ "version": "2.3.1",
657
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
658
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
659
+ },
660
+ "pstree.remy": {
661
+ "version": "1.1.8",
662
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
663
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
664
+ },
665
+ "readdirp": {
666
+ "version": "3.6.0",
667
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
668
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
669
+ "requires": {
670
+ "picomatch": "^2.2.1"
671
+ }
672
+ },
673
+ "semver": {
674
+ "version": "5.7.1",
675
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
676
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
677
+ },
678
+ "simple-update-notifier": {
679
+ "version": "1.0.7",
680
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
681
+ "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
682
+ "requires": {
683
+ "semver": "~7.0.0"
684
+ },
685
+ "dependencies": {
686
+ "semver": {
687
+ "version": "7.0.0",
688
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
689
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A=="
690
+ }
691
+ }
692
+ },
693
+ "supports-color": {
694
+ "version": "5.5.0",
695
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
696
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
697
+ "requires": {
698
+ "has-flag": "^3.0.0"
699
+ }
700
+ },
701
+ "to-regex-range": {
702
+ "version": "5.0.1",
703
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
704
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
705
+ "requires": {
706
+ "is-number": "^7.0.0"
707
+ }
708
+ },
709
+ "touch": {
710
+ "version": "3.1.0",
711
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
712
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
713
+ "requires": {
714
+ "nopt": "~1.0.10"
715
+ }
716
+ },
717
+ "undefsafe": {
718
+ "version": "2.0.5",
719
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
720
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
721
+ },
722
+ "wrappy": {
723
+ "version": "1.0.2",
724
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
725
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
726
+ }
727
+ }
728
+ }
package/package.json CHANGED
@@ -1,11 +1,16 @@
1
1
  {
2
2
  "name": "@gkucmierz/utils",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "",
5
5
  "main": "src/main.mjs",
6
6
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
7
+ "test": "jasmine",
8
+ "watch": "nodemon --exec 'npm test'"
8
9
  },
9
10
  "author": "Grzegorz Kućmierz",
10
- "license": "MIT"
11
+ "license": "MIT",
12
+ "dependencies": {
13
+ "jasmine": "^4.4.0",
14
+ "nodemon": "^2.0.20"
15
+ }
11
16
  }
@@ -0,0 +1,19 @@
1
+
2
+ import {
3
+ range2array,
4
+ array2range,
5
+ } from '../src/range-array.mjs';
6
+
7
+ describe('range-array', () => {
8
+ it('array2range', function() {
9
+ expect(array2range([])).toEqual([]);
10
+ expect(array2range([1,3,4,5,7,9,10])).toEqual([[1,1],[3,5],[7,7],[9,10]]);
11
+ expect(array2range([10,12,13,14,15,16,17,20,22,23,27])).toEqual([[10,10],[12,17],[20,20],[22,23],[27,27]]);
12
+ });
13
+
14
+ it('range2array', function() {
15
+ expect(range2array([])).toEqual([]);
16
+ expect(range2array([[1],[3,5],[7],[9,10]])).toEqual([1,3,4,5,7,9,10]);
17
+ expect(range2array([[10],[12,17],[20],[22,23],[27]])).toEqual([10,12,13,14,15,16,17,20,22,23,27]);
18
+ });
19
+ });
@@ -0,0 +1,16 @@
1
+ {
2
+ "spec_dir": "spec",
3
+ "spec_files": [
4
+ "**/*[sS]pec.?(m)js"
5
+ ],
6
+ "helpers": [
7
+ "helpers/**/*.?(m)js"
8
+ ],
9
+ "env": {
10
+ "stopSpecOnExpectationFailure": false,
11
+ "random": true
12
+ },
13
+ "client": {
14
+ "captureConsole": false
15
+ }
16
+ }
@@ -0,0 +1,7 @@
1
+
2
+ // better js typeof
3
+
4
+ export const getType = val => {
5
+ const str = Object.prototype.toString.call(val);
6
+ return str.slice(8, -1).toLowerCase();
7
+ };
@@ -0,0 +1,27 @@
1
+
2
+ // https://www.codewars.com/kata/57d83dfc950d842dcb00005b/train/javascript
3
+
4
+ export const range2array = ranges => {
5
+ return ranges.reduce((arr, range) => {
6
+ const min = range[0];
7
+ const max = range[1] ?? min;
8
+ return arr.push(
9
+ ...new Array(max - min + 1).fill(0).map((n ,i) => min + i)
10
+ ), arr;
11
+ }, []);
12
+ };
13
+
14
+ export const array2range = arr => {
15
+ const ranges = [];
16
+ let last = arr[0];
17
+ let begin = last;
18
+ for (let i = 1; i <= arr.length; ++i) {
19
+ const n = arr[i];
20
+ if (n !== last + 1) {
21
+ ranges.push([begin, last]);
22
+ begin = n;
23
+ }
24
+ last = n;
25
+ }
26
+ return ranges;
27
+ };