@dolthub/web-utils 0.3.0 → 0.3.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 (129) hide show
  1. package/dist/{Maybe.d.d.ts → Maybe.d-D0RyzIMq.d.ts} +1 -1
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/{null.js → null-YOYbhU37.js} +1 -1
  5. package/dist/cjs/null-YOYbhU37.js.map +1 -0
  6. package/dist/cjs/parseSqlQuery.js +1 -1
  7. package/dist/cjs/parseSqlQuery.js.map +1 -1
  8. package/dist/esm/index.js +1 -1
  9. package/dist/esm/index.js.map +1 -1
  10. package/dist/esm/{null.js → null-Bxv_EpNg.js} +2 -2
  11. package/dist/esm/null-Bxv_EpNg.js.map +1 -0
  12. package/dist/esm/parseSqlQuery.js +1 -1
  13. package/dist/esm/parseSqlQuery.js.map +1 -1
  14. package/dist/index.d.ts +404 -23
  15. package/dist/parseSqlQuery.d.ts +1 -1
  16. package/package.json +14 -14
  17. package/dist/cjs/compareArray.js +0 -2
  18. package/dist/cjs/compareArray.js.map +0 -1
  19. package/dist/cjs/dateConversions.js +0 -2
  20. package/dist/cjs/dateConversions.js.map +0 -1
  21. package/dist/cjs/dedupe.js +0 -2
  22. package/dist/cjs/dedupe.js.map +0 -1
  23. package/dist/cjs/enumKeys.js +0 -2
  24. package/dist/cjs/enumKeys.js.map +0 -1
  25. package/dist/cjs/excerpt.js +0 -2
  26. package/dist/cjs/excerpt.js.map +0 -1
  27. package/dist/cjs/fakeEscapePress.js +0 -2
  28. package/dist/cjs/fakeEscapePress.js.map +0 -1
  29. package/dist/cjs/initialUppercase.js +0 -2
  30. package/dist/cjs/initialUppercase.js.map +0 -1
  31. package/dist/cjs/keycodes.js +0 -2
  32. package/dist/cjs/keycodes.js.map +0 -1
  33. package/dist/cjs/loremer/index.js +0 -2
  34. package/dist/cjs/loremer/index.js.map +0 -1
  35. package/dist/cjs/loremer/words.js +0 -2
  36. package/dist/cjs/loremer/words.js.map +0 -1
  37. package/dist/cjs/nTimes.js +0 -2
  38. package/dist/cjs/nTimes.js.map +0 -1
  39. package/dist/cjs/null.js.map +0 -1
  40. package/dist/cjs/numberFormat.js +0 -2
  41. package/dist/cjs/numberFormat.js.map +0 -1
  42. package/dist/cjs/pluralize.js +0 -2
  43. package/dist/cjs/pluralize.js.map +0 -1
  44. package/dist/cjs/prettyJSON.js +0 -2
  45. package/dist/cjs/prettyJSON.js.map +0 -1
  46. package/dist/cjs/randomArrayItem.js +0 -2
  47. package/dist/cjs/randomArrayItem.js.map +0 -1
  48. package/dist/cjs/randomNum.js +0 -2
  49. package/dist/cjs/randomNum.js.map +0 -1
  50. package/dist/cjs/safeJSONParse.js +0 -2
  51. package/dist/cjs/safeJSONParse.js.map +0 -1
  52. package/dist/cjs/sprintf.js +0 -2
  53. package/dist/cjs/sprintf.js.map +0 -1
  54. package/dist/cjs/toOrdinal.js +0 -2
  55. package/dist/cjs/toOrdinal.js.map +0 -1
  56. package/dist/cjs/tuplify.js +0 -2
  57. package/dist/cjs/tuplify.js.map +0 -1
  58. package/dist/cjs/urlUtils.js +0 -2
  59. package/dist/cjs/urlUtils.js.map +0 -1
  60. package/dist/cjs/validators.js +0 -2
  61. package/dist/cjs/validators.js.map +0 -1
  62. package/dist/compareArray.d.d.ts +0 -3
  63. package/dist/dateConversions.d.d.ts +0 -15
  64. package/dist/dedupe.d.d.ts +0 -3
  65. package/dist/enumKeys.d.d.ts +0 -22
  66. package/dist/esm/compareArray.js +0 -2
  67. package/dist/esm/compareArray.js.map +0 -1
  68. package/dist/esm/dateConversions.js +0 -2
  69. package/dist/esm/dateConversions.js.map +0 -1
  70. package/dist/esm/dedupe.js +0 -2
  71. package/dist/esm/dedupe.js.map +0 -1
  72. package/dist/esm/enumKeys.js +0 -2
  73. package/dist/esm/enumKeys.js.map +0 -1
  74. package/dist/esm/excerpt.js +0 -2
  75. package/dist/esm/excerpt.js.map +0 -1
  76. package/dist/esm/fakeEscapePress.js +0 -2
  77. package/dist/esm/fakeEscapePress.js.map +0 -1
  78. package/dist/esm/initialUppercase.js +0 -2
  79. package/dist/esm/initialUppercase.js.map +0 -1
  80. package/dist/esm/keycodes.js +0 -2
  81. package/dist/esm/keycodes.js.map +0 -1
  82. package/dist/esm/loremer/index.js +0 -2
  83. package/dist/esm/loremer/index.js.map +0 -1
  84. package/dist/esm/loremer/words.js +0 -2
  85. package/dist/esm/loremer/words.js.map +0 -1
  86. package/dist/esm/nTimes.js +0 -2
  87. package/dist/esm/nTimes.js.map +0 -1
  88. package/dist/esm/null.js.map +0 -1
  89. package/dist/esm/numberFormat.js +0 -2
  90. package/dist/esm/numberFormat.js.map +0 -1
  91. package/dist/esm/pluralize.js +0 -2
  92. package/dist/esm/pluralize.js.map +0 -1
  93. package/dist/esm/prettyJSON.js +0 -2
  94. package/dist/esm/prettyJSON.js.map +0 -1
  95. package/dist/esm/randomArrayItem.js +0 -2
  96. package/dist/esm/randomArrayItem.js.map +0 -1
  97. package/dist/esm/randomNum.js +0 -2
  98. package/dist/esm/randomNum.js.map +0 -1
  99. package/dist/esm/safeJSONParse.js +0 -2
  100. package/dist/esm/safeJSONParse.js.map +0 -1
  101. package/dist/esm/sprintf.js +0 -2
  102. package/dist/esm/sprintf.js.map +0 -1
  103. package/dist/esm/toOrdinal.js +0 -2
  104. package/dist/esm/toOrdinal.js.map +0 -1
  105. package/dist/esm/tuplify.js +0 -2
  106. package/dist/esm/tuplify.js.map +0 -1
  107. package/dist/esm/urlUtils.js +0 -2
  108. package/dist/esm/urlUtils.js.map +0 -1
  109. package/dist/esm/validators.js +0 -2
  110. package/dist/esm/validators.js.map +0 -1
  111. package/dist/excerpt.d.d.ts +0 -3
  112. package/dist/fakeEscapePress.d.d.ts +0 -3
  113. package/dist/initialUppercase.d.d.ts +0 -3
  114. package/dist/keycodes.d.d.ts +0 -103
  115. package/dist/loremer/index.d.d.ts +0 -18
  116. package/dist/nTimes.d.d.ts +0 -4
  117. package/dist/null.d.d.ts +0 -6
  118. package/dist/numberFormat.d.d.ts +0 -5
  119. package/dist/pluralize.d.d.ts +0 -3
  120. package/dist/prettyJSON.d.d.ts +0 -4
  121. package/dist/randomArrayItem.d.d.ts +0 -3
  122. package/dist/randomNum.d.d.ts +0 -3
  123. package/dist/safeJSONParse.d.d.ts +0 -3
  124. package/dist/sprintf.d.d.ts +0 -3
  125. package/dist/toOrdinal.d.d.ts +0 -3
  126. package/dist/tsconfig.tsbuildinfo +0 -1
  127. package/dist/tuplify.d.d.ts +0 -3
  128. package/dist/urlUtils.d.d.ts +0 -200
  129. package/dist/validators.d.d.ts +0 -11
package/dist/index.d.ts CHANGED
@@ -1,23 +1,404 @@
1
- export { default as Maybe } from './Maybe.d.js';
2
- export { default as compareArray } from './compareArray.d.js';
3
- export { areTimeAgosEqual, convertToUTCDate, getDateMinusHours, getDateString, getLongDateTimeString, getNow, getTimeAgoString, getTimeWithSeconds, getUTCDateAndTimeString, getUTCDateString, getUTCNowDateString, getUTCTimeString, oneHour } from './dateConversions.d.js';
4
- export { default as dedupe } from './dedupe.d.js';
5
- export { default as enumKeys } from './enumKeys.d.js';
6
- export { default as excerpt } from './excerpt.d.js';
7
- export { default as fakeEscapePress } from './fakeEscapePress.d.js';
8
- export { default as initialUppercase } from './initialUppercase.d.js';
9
- export { KeyCodes } from './keycodes.d.js';
10
- export { loremer } from './loremer/index.d.js';
11
- export { default as nTimes, nTimesWithIndex } from './nTimes.d.js';
12
- export { NULL_VALUE, getDisplayValue, getDisplayValueForApi, isNullValue } from './null.d.js';
13
- export { formatNumber, formatToRoundedUsd, formatToUsd } from './numberFormat.d.js';
14
- export { default as pluralize } from './pluralize.d.js';
15
- export { default as prettyJSON, prettyJSONText } from './prettyJSON.d.js';
16
- export { default as randomArrayItem } from './randomArrayItem.d.js';
17
- export { default as randomNum } from './randomNum.d.js';
18
- export { default as safeJSONParse } from './safeJSONParse.d.js';
19
- export { sprintf } from './sprintf.d.js';
20
- export { default as toOrdinal } from './toOrdinal.d.js';
21
- export { default as tuplify } from './tuplify.d.js';
22
- export { Route } from './urlUtils.d.js';
23
- export { emailValidator, usernameValidator } from './validators.d.js';
1
+ export { M as Maybe } from './Maybe.d-D0RyzIMq.js';
2
+ import { ParsedUrlQueryInput } from 'querystring';
3
+ import { UrlObject } from 'url';
4
+
5
+ declare function compareArray(arr1: string[], arr2: string[]): boolean;
6
+
7
+ declare const oneHour: number;
8
+ declare function getUTCDateAndTimeString(date: Date): string;
9
+ declare function getDateString(date: Date): string;
10
+ declare function getUTCDateString(date: Date): string;
11
+ declare function getUTCTimeString(date: Date): string;
12
+ declare function getNow(): Date;
13
+ declare function getDateMinusHours(date: Date, hours: number): Date;
14
+ declare function getUTCNowDateString(): string;
15
+ declare function getLongDateTimeString(d: Date): string;
16
+ declare function getTimeWithSeconds(date: Date): string;
17
+ declare function getTimeAgoString(oldDateTime: number): string;
18
+ declare function areTimeAgosEqual(a: Date, b: Date): boolean;
19
+ declare function convertToUTCDate(d: Date): Date;
20
+
21
+ declare function dedupe<T>(arr: T[]): T[];
22
+
23
+ /**
24
+ * enumKeys takes an enum and returns an array of strongly typed keys. Useful to iterate over string enums.
25
+ * @param obj The enum
26
+ * @returns An array of strong typed keys
27
+ * @example
28
+ *
29
+ * enum MyEnum {
30
+ * Key1 = "value1",
31
+ * Key2 = "value2",
32
+ * Key3 = "value3"
33
+ * }
34
+ *
35
+ * // ks's type is ("Key1" || "Key2" || "Key3")[]
36
+ * const ks = enumKeys(MyEnum);
37
+ *
38
+ * // keys' type is MyEnum[]
39
+ * // Unfortunately, we can't do this inside enumKeys because there is no generic type constraint for enums.
40
+ * const keys = ks.map(k => MyEnum[k])
41
+ */
42
+ declare function enumKeys<O extends object, K extends keyof O = keyof O>(obj: O): K[];
43
+
44
+ declare function excerpt(str: string, len?: number): string;
45
+
46
+ declare function fakeEscapePress(): void;
47
+
48
+ declare function initialUppercase(s: string): string;
49
+
50
+ declare enum KeyCodes {
51
+ BACKSPACE = 8,
52
+ TAB = 9,
53
+ ENTER = 13,
54
+ SHIFT = 16,
55
+ CTRL = 17,
56
+ ALT = 18,
57
+ PAUSE = 19,
58
+ CAPS_LOCK = 20,
59
+ ESCAPE = 27,
60
+ SPACE = 32,
61
+ PAGE_UP = 33,
62
+ PAGE_DOWN = 34,
63
+ END = 35,
64
+ HOME = 36,
65
+ LEFT_ARROW = 37,
66
+ UP_ARROW = 38,
67
+ RIGHT_ARROW = 39,
68
+ DOWN_ARROW = 40,
69
+ INSERT = 45,
70
+ DELETE = 46,
71
+ KEY_0 = 48,
72
+ KEY_1 = 49,
73
+ KEY_2 = 50,
74
+ KEY_3 = 51,
75
+ KEY_4 = 52,
76
+ KEY_5 = 53,
77
+ KEY_6 = 54,
78
+ KEY_7 = 55,
79
+ KEY_8 = 56,
80
+ KEY_9 = 57,
81
+ KEY_A = 65,
82
+ KEY_B = 66,
83
+ KEY_C = 67,
84
+ KEY_D = 68,
85
+ KEY_E = 69,
86
+ KEY_F = 70,
87
+ KEY_G = 71,
88
+ KEY_H = 72,
89
+ KEY_I = 73,
90
+ KEY_J = 74,
91
+ KEY_K = 75,
92
+ KEY_L = 76,
93
+ KEY_M = 77,
94
+ KEY_N = 78,
95
+ KEY_O = 79,
96
+ KEY_P = 80,
97
+ KEY_Q = 81,
98
+ KEY_R = 82,
99
+ KEY_S = 83,
100
+ KEY_T = 84,
101
+ KEY_U = 85,
102
+ KEY_V = 86,
103
+ KEY_W = 87,
104
+ KEY_X = 88,
105
+ KEY_Y = 89,
106
+ KEY_Z = 90,
107
+ LEFT_META = 91,
108
+ RIGHT_META = 92,
109
+ SELECT = 93,
110
+ NUMPAD_0 = 96,
111
+ NUMPAD_1 = 97,
112
+ NUMPAD_2 = 98,
113
+ NUMPAD_3 = 99,
114
+ NUMPAD_4 = 100,
115
+ NUMPAD_5 = 101,
116
+ NUMPAD_6 = 102,
117
+ NUMPAD_7 = 103,
118
+ NUMPAD_8 = 104,
119
+ NUMPAD_9 = 105,
120
+ MULTIPLY = 106,
121
+ ADD = 107,
122
+ SUBTRACT = 109,
123
+ DECIMAL = 110,
124
+ DIVIDE = 111,
125
+ F1 = 112,
126
+ F2 = 113,
127
+ F3 = 114,
128
+ F4 = 115,
129
+ F5 = 116,
130
+ F6 = 117,
131
+ F7 = 118,
132
+ F8 = 119,
133
+ F9 = 120,
134
+ F10 = 121,
135
+ F11 = 122,
136
+ F12 = 123,
137
+ NUM_LOCK = 144,
138
+ SCROLL_LOCK = 145,
139
+ SEMICOLON = 186,
140
+ EQUALS = 187,
141
+ COMMA = 188,
142
+ DASH = 189,
143
+ PERIOD = 190,
144
+ FORWARD_SLASH = 191,
145
+ GRAVE_ACCENT = 192,
146
+ OPEN_BRACKET = 219,
147
+ BACK_SLASH = 220,
148
+ CLOSE_BRACKET = 221,
149
+ SINGLE_QUOTE = 222
150
+ }
151
+
152
+ declare const loremer: {
153
+ word: ({ trueSingleWord, minLength, maxLength, matchRegex, }?: {
154
+ trueSingleWord?: boolean;
155
+ matchRegex?: RegExp;
156
+ minLength?: number;
157
+ maxLength?: number;
158
+ }) => string;
159
+ words: (n: number) => string[];
160
+ resourceNameSegment: () => string;
161
+ sentence: (options?: {
162
+ max?: number;
163
+ min?: number;
164
+ }) => string;
165
+ sentences: (n: number) => string[];
166
+ paragraph: () => string;
167
+ };
168
+
169
+ declare function nTimes<T>(n: number, operation: (...args: any[]) => T, args?: Parameters<typeof operation>): T[];
170
+ declare function nTimesWithIndex<T>(n: number, operation: (n: number) => T): T[];
171
+
172
+ declare const NULL_VALUE = "\uF5F2\uEB94NULL\uF5A8\uE6FF";
173
+ declare function isNullValue(dv: string): boolean;
174
+ declare function getDisplayValue(dv: string): string;
175
+ declare function getDisplayValueForApi(dv: string): string | null;
176
+
177
+ declare function formatNumber(num: number): string;
178
+ declare function formatToUsd(num: number): string;
179
+ declare function formatToRoundedUsd(num: number): string;
180
+
181
+ declare function pluralize(num: number, str: string): string;
182
+
183
+ declare function prettyJSON(data: any): string;
184
+ declare function prettyJSONText(text: string): string;
185
+
186
+ declare function randomArrayItem<T>(arr: T[]): T;
187
+
188
+ declare function randomNum(min: number, max: number): number;
189
+
190
+ declare function safeJSONParse(text: string): any;
191
+
192
+ declare const sprintf: (str: string, ...argv: any[]) => string;
193
+
194
+ declare function toOrdinal(n: number): string;
195
+
196
+ declare function tuplify<T extends any[]>(...elements: T): T;
197
+
198
+ type Url = string | UrlObject;
199
+ /**
200
+ * __Route__
201
+ *
202
+ * `Route` class that handles adding static and dynamic route segments to
203
+ * existing routes. `Route` can be initialized with a "href" string or
204
+ * `UrlObject` and optional "as" string or `UrlObject`.
205
+ *
206
+ * @example
207
+ * const routeA = new Route("/repositories");
208
+ * routeA.hrefPathname() // "/repositories"
209
+ * routeA.addDynamic("ownerName", "my-owner")
210
+ * routeA.hrefPathname() // "repositories/[ownerName]"
211
+ * routeA.asPathname() // "repositories/my-owner"
212
+ *
213
+ * const routeB = new Route(
214
+ * { pathname: "/repositories/[ownerName]", query: { refName: "main" } },
215
+ * { pathname: "/repositories/my-owner", query: { refName: "main" } },
216
+ * )
217
+ * routeB.hrefPathname() // "/repositories/[ownerName]"
218
+ * routeB.asPathname() // "repositories/my-owner"
219
+ * routeB.getQuery() // { refName: "main" }
220
+ */
221
+ declare class Route {
222
+ href: Url;
223
+ as: Url;
224
+ constructor(href: Url, as?: Url);
225
+ /**
226
+ * __hrefPathname__
227
+ *
228
+ * Gets pathname string from href string or `UrlObject`.
229
+ *
230
+ * @param addFrag Optional route fragment string to add to `href` pathname
231
+ *
232
+ * @returns `href` pathname string, with added route fragment if provided
233
+ *
234
+ * @example
235
+ * const routeA = new Route("/repositories");
236
+ * routeA.hrefPathname() // "/repositories"
237
+ * routeA.hrefPathname("[ownerName]") // "repositories/[ownerName]"
238
+ *
239
+ * const routeB = new Route({ pathname: "/repositories" })
240
+ * routeB.hrefPathname() // "/repositories"
241
+ * routeB.hrefPathname("[ownerName]") // "repositories/[ownerName]"
242
+ */
243
+ hrefPathname(addFrag?: string): string;
244
+ /**
245
+ * __asPathname__
246
+ *
247
+ * Gets pathname string from as string or `UrlObject`.
248
+ *
249
+ * @param addFrag Optional route fragment string to add to `as` pathname
250
+ *
251
+ * @returns `as` pathname string, with added route fragment if provided
252
+ *
253
+ * @example
254
+ * const routeA = new Route("/repositories");
255
+ * routeA.asPathname() // "/repositories"
256
+ * routeA.asPathname("my-username") // "repositories/my-username"
257
+ *
258
+ * const routeB = new Route(
259
+ * { pathname: "/repositories/[ownerName]" },
260
+ * { pathname: "/repositories/my-username" },
261
+ * );
262
+ * routeB.asPathname() // "/repositories/my-username"
263
+ * routeB.asPathname("data") // "repositories/my-username/data"
264
+ */
265
+ asPathname(addFrag?: string): string;
266
+ /**
267
+ * __getQuery__
268
+ *
269
+ * Gets query object from the href `UrlObject`.
270
+ *
271
+ * @returns query object
272
+ *
273
+ * @example
274
+ * const route = new Route("/repositories");
275
+ * route.withQuery({ refName: "main" })
276
+ * route.getQuery() // { refName: "main" }
277
+ */
278
+ getQuery(): string | ParsedUrlQueryInput | undefined | null;
279
+ /**
280
+ * __getHash__
281
+ *
282
+ * Gets hash string from the href `UrlObject`.
283
+ *
284
+ * @returns hash string
285
+ *
286
+ * @example
287
+ * const route = new Route("/repositories");
288
+ * route.withHash("commitA")
289
+ * route.getHash() // "commitA"
290
+ */
291
+ getHash(): string;
292
+ /**
293
+ * __addStatic__
294
+ *
295
+ * Adds static route fragment string to a `Route`. Static route fragments look like:
296
+ * ```ts
297
+ * { href: "/repositories", as: "/repositories" }
298
+ * ```
299
+ * As opposed to dynamic route fragments which look like:
300
+ * ```ts
301
+ * { href: "/[ownerName]", as: "/owner-value" }
302
+ * ```
303
+ *
304
+ * @param pathFrag Route fragment string to add to the url. "/" is automatically prepended.
305
+ *
306
+ * @returns new instance of `Route`
307
+ *
308
+ * @example
309
+ * const route = new Route("/repositories");
310
+ * route.addStatic("data")
311
+ * route.hrefPathname() // "/repositories/data"
312
+ * route.asPathname() // "/repositories/data"
313
+ */
314
+ addStatic(pathFrag: string): Route;
315
+ /**
316
+ * __maybeAddStatic__
317
+ *
318
+ * Maybe adds static route fragment string to a `Route`.
319
+ *
320
+ * @see this.addStatic
321
+ *
322
+ * @param pathFrag Optional route fragment string to add to the url. "/" is automatically prepended.
323
+ *
324
+ * @example
325
+ * const route = new Route("/repositories");
326
+ * route.maybeAddStatic("data")
327
+ * route.hrefPathname() // "/repositories/data"
328
+ * route.maybeAddStatic()
329
+ * route.hrefPathname() // "/repositories"
330
+ */
331
+ maybeAddStatic(pathFrag?: string): Route;
332
+ /**
333
+ * __addDynamic__
334
+ *
335
+ * Adds dynamic route fragment string to a Route.
336
+ * Dynamic route fragments look like:
337
+ * ```ts
338
+ * { href: "/[ownerName]", as: "/owner-value" }
339
+ * ```
340
+ * As opposed to static route fragments which look like:
341
+ *
342
+ * ```ts
343
+ * { href: "/repositories", as: "/repositories" }
344
+ * ```
345
+ *
346
+ * @param param String fragment to add to the href path. This value will be wrapped in square brackets. "/" is automatically prepended.
347
+ * @param as Value of the `param` to be added to the `as` path. "/" is automatically prepended.
348
+ * @param encode Default false. If true, encodes a `as` param value string as a valid component of a Uniform Resource Identifier (URI).
349
+ *
350
+ * @returns new instance of `Route`
351
+ *
352
+ * @example
353
+ * const route = new Route("/repositories");
354
+ * route.addDynamic("ownerName", "my-owner-name")
355
+ * route.hrefPathname() // "/repositories/[ownerName]"
356
+ * route.asPathname() // "/repositories/my-owner-name"
357
+ */
358
+ addDynamic(param: string, as: string, encode?: boolean): Route;
359
+ /**
360
+ * __withQuery__
361
+ *
362
+ * Adds query object to a `Route`. Looks like "?refName=main&active=Tables"
363
+ * when url is formatted.
364
+ *
365
+ * @param q Record with fields that will be added to the query string.
366
+ *
367
+ * @returns new instance of `Route`
368
+ *
369
+ * @example
370
+ * const route = new Route("/repositories/[ownerName]", "/repositories/my-owner");
371
+ * route.withQuery({ refName: "main", active: undefined })
372
+ * route.hrefPathname() // { pathname: "/repositories/[ownerName]", query: { refName: "main" } }
373
+ * route.asPathname() // { pathname: "/repositories/my-owner", query: { refName: "main" } }
374
+ */
375
+ withQuery(q: Record<string, string | undefined | null>): Route;
376
+ /**
377
+ * __withHash__
378
+ *
379
+ * Adds hash string to a `Route`. Looks like "#hash-value" when url is formatted.
380
+ *
381
+ * @param hash Optional hash string
382
+ *
383
+ * @returns new instance of Route
384
+ *
385
+ * @example
386
+ * const route = new Route("/repositories/[ownerName]", "/repositories/my-owner");
387
+ * route.withHash({ commitId: "commitA" })
388
+ * route.hrefPathname() // { pathname: "/repositories/[ownerName]", hash: { commitId: "commitA" } }
389
+ * route.asPathname() // { pathname: "/repositories/my-owner", hash: { commitId: "commitA" } }
390
+ */
391
+ withHash(hash?: string): Route;
392
+ }
393
+
394
+ declare function emailValidator(s: string): {
395
+ isValid: boolean;
396
+ errorMsg: string;
397
+ };
398
+ declare function usernameValidator(s: string): {
399
+ isValid: boolean;
400
+ errorMsg: string;
401
+ detailedErrorMsg: string;
402
+ };
403
+
404
+ export { KeyCodes, NULL_VALUE, Route, areTimeAgosEqual, compareArray, convertToUTCDate, dedupe, emailValidator, enumKeys, excerpt, fakeEscapePress, formatNumber, formatToRoundedUsd, formatToUsd, getDateMinusHours, getDateString, getDisplayValue, getDisplayValueForApi, getLongDateTimeString, getNow, getTimeAgoString, getTimeWithSeconds, getUTCDateAndTimeString, getUTCDateString, getUTCNowDateString, getUTCTimeString, initialUppercase, isNullValue, loremer, nTimes, nTimesWithIndex, oneHour, pluralize, prettyJSON, prettyJSONText, randomArrayItem, randomNum, safeJSONParse, sprintf, toOrdinal, tuplify, usernameValidator };
@@ -1,5 +1,5 @@
1
1
  import { Select, ColumnRef } from 'node-sql-parser';
2
- import Maybe from './Maybe.d.js';
2
+ import { Maybe } from './index.js';
3
3
 
4
4
  type TableColumn = {
5
5
  name: string;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@dolthub/web-utils",
3
3
  "author": "DoltHub",
4
4
  "description": "A collection of utilities for building web applications",
5
- "version": "0.3.0",
5
+ "version": "0.3.2",
6
6
  "main": "dist/cjs/index.js",
7
7
  "module": "dist/esm/index.js",
8
8
  "types": "dist/index.d.ts",
@@ -43,26 +43,26 @@
43
43
  "timeago.js": "^4.0.2"
44
44
  },
45
45
  "devDependencies": {
46
- "@babel/core": "^7.28.3",
47
- "@babel/preset-env": "^7.28.6",
48
- "@babel/preset-typescript": "^7.28.5",
49
- "@rollup/plugin-commonjs": "^28.0.6",
46
+ "@babel/core": "^8.0.1",
47
+ "@babel/preset-env": "^8.0.2",
48
+ "@babel/preset-typescript": "^8.0.1",
49
+ "@rollup/plugin-commonjs": "^29.0.3",
50
50
  "@rollup/plugin-node-resolve": "^16.0.3",
51
+ "@rollup/plugin-terser": "^1.0.0",
51
52
  "@rollup/plugin-typescript": "^11.1.5",
52
53
  "@types/eslint": "^9",
53
- "@types/jest": "^29.5.14",
54
+ "@types/jest": "^30.0.0",
54
55
  "@types/rollup-plugin-peer-deps-external": "^2",
55
- "@typescript-eslint/eslint-plugin": "^8.54.0",
56
- "@typescript-eslint/parser": "^8.45.0",
57
- "babel-jest": "^30.2.0",
56
+ "@typescript-eslint/eslint-plugin": "^8.68.0",
57
+ "@typescript-eslint/parser": "^8.62.1",
58
+ "babel-jest": "^30.5.2",
58
59
  "eslint": "^9.39.2",
59
- "jest": "^29.7.0",
60
+ "jest": "^30.5.0",
60
61
  "node-sql-parser": "^5.4.0",
61
- "prettier": "^3.6.2",
62
- "rollup": "^4.59.0",
63
- "rollup-plugin-dts": "^6.3.0",
62
+ "prettier": "^3.9.9",
63
+ "rollup": "^4.63.1",
64
+ "rollup-plugin-dts": "^6.5.1",
64
65
  "rollup-plugin-peer-deps-external": "^2.2.4",
65
- "rollup-plugin-terser": "^7.0.2",
66
66
  "typescript": "^5.9.3",
67
67
  "yalc": "^1.0.0-pre.53"
68
68
  },
@@ -1,2 +0,0 @@
1
- "use strict";module.exports=function(t,r){if(t.length!==r.length)return!1;const e=t.sort(),n=r.sort();for(let r=0;r<t.length;r++)if(e[r]!==n[r])return!1;return!0};
2
- //# sourceMappingURL=compareArray.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compareArray.js","sources":["../../../src/compareArray.ts"],"sourcesContent":["export default function compareArray(arr1: string[], arr2: string[]): boolean {\n if (arr1.length !== arr2.length) return false;\n const sortedArr1 = arr1.sort();\n const sortedArr2 = arr2.sort();\n for (let i = 0; i < arr1.length; i++) {\n if (sortedArr1[i] !== sortedArr2[i]) {\n return false;\n }\n }\n return true;\n}\n"],"names":["arr1","arr2","length","sortedArr1","sort","sortedArr2","i"],"mappings":"4BAAc,SAAuBA,EAAgBC,GACnD,GAAID,EAAKE,SAAWD,EAAKC,OAAQ,OAAO,EACxC,MAAMC,EAAaH,EAAKI,OAClBC,EAAaJ,EAAKG,OACxB,IAAK,IAAIE,EAAI,EAAGA,EAAIN,EAAKE,OAAQI,IAC/B,GAAIH,EAAWG,KAAOD,EAAWC,GAC/B,OAAO,EAGX,OAAO,CACT"}
@@ -1,2 +0,0 @@
1
- "use strict";var t=require("timeago.js");function e(t){const e=r(t.getUTCMonth()+1),n=r(t.getUTCDate());return`${t.getUTCFullYear()}-${e}-${n}`}function n(t){const e=t.getUTCHours(),n=t.getUTCMinutes();return`${r(e)}:${r(n)}`}function r(t){return t<10?`0${t}`:String(t)}function o(){return new Date(Date.now())}exports.areTimeAgosEqual=function(e,n){return t.format(e)===t.format(n)},exports.convertToUTCDate=function(t){const e=new Date(t);return e.setUTCFullYear(t.getFullYear()),e.setUTCMonth(t.getMonth()),e.setUTCDate(t.getDate()),e.setUTCHours(t.getHours()),e.setUTCMinutes(t.getMinutes()),e.setUTCSeconds(t.getSeconds()),e},exports.getDateMinusHours=function(t,e){return 0===e||t.setHours(t.getHours()-e),t},exports.getDateString=function(t){const e=r(t.getMonth()+1),n=r(t.getDate());return`${t.getFullYear()}-${e}-${n}`},exports.getLongDateTimeString=function(t){const[e,n,r]=t.toLocaleString().split(" "),o=r?` ${r}`:"";return`${e} ${n.slice(0,-3)}${o}`},exports.getNow=o,exports.getTimeAgoString=function(e){return t.format(new Date(e))},exports.getTimeWithSeconds=function(t){return`${function(t){return`${r(t.getHours())}:${r(t.getMinutes())}`}(t)}:${r(t.getSeconds())}`},exports.getUTCDateAndTimeString=function(t){return`${e(t)} ${`${n(t)}:${r(t.getUTCSeconds())}`}`},exports.getUTCDateString=e,exports.getUTCNowDateString=function(){return e(o())},exports.getUTCTimeString=n,exports.oneHour=36e5;
2
- //# sourceMappingURL=dateConversions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dateConversions.js","sources":["../../../src/dateConversions.ts"],"sourcesContent":["import { format } from \"timeago.js\";\n\n// TIME IN MS\nconst oneSecond = 1000;\nconst oneMinute = oneSecond * 60;\nexport const oneHour = oneMinute * 60;\n\n// Gets UTC date in format YYYY-MM-DD HH:MM:SS\nexport function getUTCDateAndTimeString(date: Date): string {\n const d = getUTCDateString(date);\n const t = `${getUTCTimeString(date)}:${zeroPadNumber(date.getUTCSeconds())}`;\n return `${d} ${t}`;\n}\n\n// Gets date in format YYYY-MM-DD\nexport function getDateString(date: Date): string {\n const month = zeroPadNumber(date.getMonth() + 1); // January is 0\n const day = zeroPadNumber(date.getDate());\n const year = date.getFullYear();\n return `${year}-${month}-${day}`;\n}\n\n// Gets UTC date in format YYYY-MM-DD\nexport function getUTCDateString(date: Date): string {\n const month = zeroPadNumber(date.getUTCMonth() + 1); // January is 0\n const day = zeroPadNumber(date.getUTCDate());\n const year = date.getUTCFullYear();\n return `${year}-${month}-${day}`;\n}\n\n// Gets UTC time in format HH:MM:SS\nexport function getUTCTimeString(date: Date): string {\n const hour = date.getUTCHours();\n const mins = date.getUTCMinutes();\n return `${zeroPadNumber(hour)}:${zeroPadNumber(mins)}`;\n}\n\nfunction zeroPadNumber(num: number): string {\n if (num < 10) {\n return `0${num}`;\n }\n return String(num);\n}\n\nexport function getNow(): Date {\n return new Date(Date.now());\n}\n\nexport function getDateMinusHours(date: Date, hours: number): Date {\n if (hours === 0) return date;\n date.setHours(date.getHours() - hours);\n return date;\n}\n\nexport function getUTCNowDateString(): string {\n return getUTCDateString(getNow());\n}\n\n// Gets local time in format \"M/DD/YYYY, HH:MM [AM|PM]\"\nexport function getLongDateTimeString(d: Date): string {\n const [date, time, period] = d.toLocaleString().split(\" \");\n const per = period ? ` ${period}` : \"\";\n return `${date} ${time.slice(0, -3)}${per}`;\n}\n\nfunction getTime(date: Date): string {\n const hour = zeroPadNumber(date.getHours());\n const mins = zeroPadNumber(date.getMinutes());\n return `${hour}:${mins}`;\n}\n\nexport function getTimeWithSeconds(date: Date): string {\n const t = getTime(date);\n return `${t}:${zeroPadNumber(date.getSeconds())}`;\n}\n\nexport function getTimeAgoString(oldDateTime: number): string {\n return format(new Date(oldDateTime));\n}\n\nexport function areTimeAgosEqual(a: Date, b: Date): boolean {\n return format(a) === format(b);\n}\n\n// Manually convert local date to UTC\nexport function convertToUTCDate(d: Date): Date {\n const utcDate = new Date(d);\n utcDate.setUTCFullYear(d.getFullYear());\n utcDate.setUTCMonth(d.getMonth());\n utcDate.setUTCDate(d.getDate());\n utcDate.setUTCHours(d.getHours());\n utcDate.setUTCMinutes(d.getMinutes());\n utcDate.setUTCSeconds(d.getSeconds());\n return utcDate;\n}\n"],"names":["getUTCDateString","date","month","zeroPadNumber","getUTCMonth","day","getUTCDate","getUTCFullYear","getUTCTimeString","hour","getUTCHours","mins","getUTCMinutes","num","String","getNow","Date","now","a","b","format","d","utcDate","setUTCFullYear","getFullYear","setUTCMonth","getMonth","setUTCDate","getDate","setUTCHours","getHours","setUTCMinutes","getMinutes","setUTCSeconds","getSeconds","hours","setHours","time","period","toLocaleString","split","per","slice","oldDateTime","getTime","getUTCSeconds","oneMinute"],"mappings":"yCAuBM,SAAUA,EAAiBC,GAC/B,MAAMC,EAAQC,EAAcF,EAAKG,cAAgB,GAC3CC,EAAMF,EAAcF,EAAKK,cAE/B,MAAO,GADML,EAAKM,oBACAL,KAASG,GAC7B,CAGM,SAAUG,EAAiBP,GAC/B,MAAMQ,EAAOR,EAAKS,cACZC,EAAOV,EAAKW,gBAClB,MAAO,GAAGT,EAAcM,MAASN,EAAcQ,IACjD,CAEA,SAASR,EAAcU,GACrB,OAAIA,EAAM,GACD,IAAIA,IAENC,OAAOD,EAChB,UAEgBE,IACd,OAAO,IAAIC,KAAKA,KAAKC,MACvB,0BAkCM,SAA2BC,EAASC,GACxC,OAAOC,SAAOF,KAAOE,EAAAA,OAAOD,EAC9B,2BAGM,SAA2BE,GAC/B,MAAMC,EAAU,IAAIN,KAAKK,GAOzB,OANAC,EAAQC,eAAeF,EAAEG,eACzBF,EAAQG,YAAYJ,EAAEK,YACtBJ,EAAQK,WAAWN,EAAEO,WACrBN,EAAQO,YAAYR,EAAES,YACtBR,EAAQS,cAAcV,EAAEW,cACxBV,EAAQW,cAAcZ,EAAEa,cACjBZ,CACT,4BA9CM,SAA4BrB,EAAYkC,GAC5C,OAAc,IAAVA,GACJlC,EAAKmC,SAASnC,EAAK6B,WAAaK,GADRlC,CAG1B,wBArCM,SAAwBA,GAC5B,MAAMC,EAAQC,EAAcF,EAAKyB,WAAa,GACxCrB,EAAMF,EAAcF,EAAK2B,WAE/B,MAAO,GADM3B,EAAKuB,iBACAtB,KAASG,GAC7B,gCAuCM,SAAgCgB,GACpC,MAAOpB,EAAMoC,EAAMC,GAAUjB,EAAEkB,iBAAiBC,MAAM,KAChDC,EAAMH,EAAS,IAAIA,IAAW,GACpC,MAAO,GAAGrC,KAAQoC,EAAKK,MAAM,GAAG,KAAMD,GACxC,4CAaM,SAA2BE,GAC/B,OAAOvB,SAAO,IAAIJ,KAAK2B,GACzB,6BAPM,SAA6B1C,GAEjC,MAAO,GART,SAAiBA,GAGf,MAAO,GAFME,EAAcF,EAAK6B,eACnB3B,EAAcF,EAAK+B,eAElC,CAGYY,CAAQ3C,MACHE,EAAcF,EAAKiC,eACpC,kCAlEM,SAAkCjC,GAGtC,MAAO,GAFGD,EAAiBC,MACjB,GAAGO,EAAiBP,MAASE,EAAcF,EAAK4C,oBAE5D,oEA2CE,OAAO7C,EAAiBe,IAC1B,6CAnDuB+B"}
@@ -1,2 +0,0 @@
1
- "use strict";module.exports=function(r){return Array.from(new Set(r))};
2
- //# sourceMappingURL=dedupe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dedupe.js","sources":["../../../src/dedupe.ts"],"sourcesContent":["// Removes duplicates from array for primitive types\nexport default function dedupe<T>(arr: T[]): T[] {\n return Array.from(new Set(arr));\n}\n"],"names":["arr","Array","from","Set"],"mappings":"4BACc,SAAoBA,GAChC,OAAOC,MAAMC,KAAK,IAAIC,IAAIH,GAC5B"}
@@ -1,2 +0,0 @@
1
- "use strict";module.exports=function(e){return Object.keys(e).filter((e=>Number.isNaN(+e))).map((e=>e))};
2
- //# sourceMappingURL=enumKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enumKeys.js","sources":["../../../src/enumKeys.ts"],"sourcesContent":["/**\n * enumKeys takes an enum and returns an array of strongly typed keys. Useful to iterate over string enums.\n * @param obj The enum\n * @returns An array of strong typed keys\n * @example\n *\n * enum MyEnum {\n * Key1 = \"value1\",\n * Key2 = \"value2\",\n * Key3 = \"value3\"\n * }\n *\n * // ks's type is (\"Key1\" || \"Key2\" || \"Key3\")[]\n * const ks = enumKeys(MyEnum);\n *\n * // keys' type is MyEnum[]\n * // Unfortunately, we can't do this inside enumKeys because there is no generic type constraint for enums.\n * const keys = ks.map(k => MyEnum[k])\n */\nfunction enumKeys<O extends object, K extends keyof O = keyof O>(obj: O): K[] {\n return Object.keys(obj)\n .filter(k => Number.isNaN(+k))\n .map(k => k as K);\n}\n\nexport default enumKeys;\n"],"names":["obj","Object","keys","filter","k","Number","isNaN","map"],"mappings":"4BAmBA,SAAiEA,GAC/D,OAAOC,OAAOC,KAAKF,GAChBG,QAAOC,GAAKC,OAAOC,OAAOF,KAC1BG,KAAIH,GAAKA,GACd"}
@@ -1,2 +0,0 @@
1
- "use strict";const t=/[^\u0020-\u007E]/;module.exports=function(n,r=100){return function(n,r){let u="",e=0;for(const o of n){if(e+=t.test(o)?2:1,e>r-1)return`${u}…`;u+=o}return u}(n,r)};
2
- //# sourceMappingURL=excerpt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"excerpt.js","sources":["../../../src/excerpt.ts"],"sourcesContent":["const fullWidthRegex = /[^\\u0020-\\u007E]/;\n\n// Half-width characters have a width of 1, while full-width characters, like those in Japanese and Chinese, have a width of 2.\nfunction truncate(str: string, len: number): string {\n let truncated = \"\";\n let width = 0;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const char of str) {\n width += fullWidthRegex.test(char) ? 2 : 1;\n\n if (width > len - 1) {\n return `${truncated}…`;\n }\n\n truncated += char;\n }\n\n return truncated;\n}\n\nexport default function excerpt(str: string, len = 100): string {\n return truncate(str, len);\n}\n"],"names":["fullWidthRegex","str","len","truncated","width","char","test","truncate"],"mappings":"aAAA,MAAMA,EAAiB,kCAqBT,SAAkBC,EAAaC,EAAM,KACjD,OAnBF,SAAkBD,EAAaC,GAC7B,IAAIC,EAAY,GACZC,EAAQ,EAGZ,IAAK,MAAMC,KAAQJ,EAAK,CAGtB,GAFAG,GAASJ,EAAeM,KAAKD,GAAQ,EAAI,EAErCD,EAAQF,EAAM,EAChB,MAAO,GAAGC,KAGZA,GAAaE,CACf,CAEA,OAAOF,CACT,CAGSI,CAASN,EAAKC,EACvB"}
@@ -1,2 +0,0 @@
1
- "use strict";module.exports=function(){document.dispatchEvent(new KeyboardEvent("keydown",{key:"Escape"})),document.dispatchEvent(new KeyboardEvent("keyup",{key:"Escape"}))};
2
- //# sourceMappingURL=fakeEscapePress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fakeEscapePress.js","sources":["../../../src/fakeEscapePress.ts"],"sourcesContent":["/* \nreactjs-popup stays in it's absolute position when scrolled, \nthis is a workaround until the issue is fixed \nhttps://github.com/yjose/reactjs-popup/issues/208\n\nMake sure to include the following in your react component\n useEffectOnMount(() => {\n document.addEventListener(\"wheel\", fakeEscapePress);\n return () => document.removeEventListener(\"wheel\", fakeEscapePress);\n });\n*/\n\nexport default function fakeEscapePress() {\n document.dispatchEvent(\n new KeyboardEvent(\"keydown\", {\n key: \"Escape\",\n }),\n );\n document.dispatchEvent(\n new KeyboardEvent(\"keyup\", {\n key: \"Escape\",\n }),\n );\n}\n"],"names":["document","dispatchEvent","KeyboardEvent","key"],"mappings":"4BAYc,WACZA,SAASC,cACP,IAAIC,cAAc,UAAW,CAC3BC,IAAK,YAGTH,SAASC,cACP,IAAIC,cAAc,QAAS,CACzBC,IAAK,WAGX"}
@@ -1,2 +0,0 @@
1
- "use strict";module.exports=function(e){const[o,...t]=e;return[o.toLocaleUpperCase(),...t].join("")};
2
- //# sourceMappingURL=initialUppercase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"initialUppercase.js","sources":["../../../src/initialUppercase.ts"],"sourcesContent":["export default function initialUppercase(s: string): string {\n const [first, ...rest] = s;\n return [first.toLocaleUpperCase(), ...rest].join(\"\");\n}\n"],"names":["s","first","rest","toLocaleUpperCase","join"],"mappings":"4BAAc,SAA2BA,GACvC,MAAOC,KAAUC,GAAQF,EACzB,MAAO,CAACC,EAAME,uBAAwBD,GAAME,KAAK,GACnD"}
@@ -1,2 +0,0 @@
1
- "use strict";var E;exports.KeyCodes=void 0,(E=exports.KeyCodes||(exports.KeyCodes={}))[E.BACKSPACE=8]="BACKSPACE",E[E.TAB=9]="TAB",E[E.ENTER=13]="ENTER",E[E.SHIFT=16]="SHIFT",E[E.CTRL=17]="CTRL",E[E.ALT=18]="ALT",E[E.PAUSE=19]="PAUSE",E[E.CAPS_LOCK=20]="CAPS_LOCK",E[E.ESCAPE=27]="ESCAPE",E[E.SPACE=32]="SPACE",E[E.PAGE_UP=33]="PAGE_UP",E[E.PAGE_DOWN=34]="PAGE_DOWN",E[E.END=35]="END",E[E.HOME=36]="HOME",E[E.LEFT_ARROW=37]="LEFT_ARROW",E[E.UP_ARROW=38]="UP_ARROW",E[E.RIGHT_ARROW=39]="RIGHT_ARROW",E[E.DOWN_ARROW=40]="DOWN_ARROW",E[E.INSERT=45]="INSERT",E[E.DELETE=46]="DELETE",E[E.KEY_0=48]="KEY_0",E[E.KEY_1=49]="KEY_1",E[E.KEY_2=50]="KEY_2",E[E.KEY_3=51]="KEY_3",E[E.KEY_4=52]="KEY_4",E[E.KEY_5=53]="KEY_5",E[E.KEY_6=54]="KEY_6",E[E.KEY_7=55]="KEY_7",E[E.KEY_8=56]="KEY_8",E[E.KEY_9=57]="KEY_9",E[E.KEY_A=65]="KEY_A",E[E.KEY_B=66]="KEY_B",E[E.KEY_C=67]="KEY_C",E[E.KEY_D=68]="KEY_D",E[E.KEY_E=69]="KEY_E",E[E.KEY_F=70]="KEY_F",E[E.KEY_G=71]="KEY_G",E[E.KEY_H=72]="KEY_H",E[E.KEY_I=73]="KEY_I",E[E.KEY_J=74]="KEY_J",E[E.KEY_K=75]="KEY_K",E[E.KEY_L=76]="KEY_L",E[E.KEY_M=77]="KEY_M",E[E.KEY_N=78]="KEY_N",E[E.KEY_O=79]="KEY_O",E[E.KEY_P=80]="KEY_P",E[E.KEY_Q=81]="KEY_Q",E[E.KEY_R=82]="KEY_R",E[E.KEY_S=83]="KEY_S",E[E.KEY_T=84]="KEY_T",E[E.KEY_U=85]="KEY_U",E[E.KEY_V=86]="KEY_V",E[E.KEY_W=87]="KEY_W",E[E.KEY_X=88]="KEY_X",E[E.KEY_Y=89]="KEY_Y",E[E.KEY_Z=90]="KEY_Z",E[E.LEFT_META=91]="LEFT_META",E[E.RIGHT_META=92]="RIGHT_META",E[E.SELECT=93]="SELECT",E[E.NUMPAD_0=96]="NUMPAD_0",E[E.NUMPAD_1=97]="NUMPAD_1",E[E.NUMPAD_2=98]="NUMPAD_2",E[E.NUMPAD_3=99]="NUMPAD_3",E[E.NUMPAD_4=100]="NUMPAD_4",E[E.NUMPAD_5=101]="NUMPAD_5",E[E.NUMPAD_6=102]="NUMPAD_6",E[E.NUMPAD_7=103]="NUMPAD_7",E[E.NUMPAD_8=104]="NUMPAD_8",E[E.NUMPAD_9=105]="NUMPAD_9",E[E.MULTIPLY=106]="MULTIPLY",E[E.ADD=107]="ADD",E[E.SUBTRACT=109]="SUBTRACT",E[E.DECIMAL=110]="DECIMAL",E[E.DIVIDE=111]="DIVIDE",E[E.F1=112]="F1",E[E.F2=113]="F2",E[E.F3=114]="F3",E[E.F4=115]="F4",E[E.F5=116]="F5",E[E.F6=117]="F6",E[E.F7=118]="F7",E[E.F8=119]="F8",E[E.F9=120]="F9",E[E.F10=121]="F10",E[E.F11=122]="F11",E[E.F12=123]="F12",E[E.NUM_LOCK=144]="NUM_LOCK",E[E.SCROLL_LOCK=145]="SCROLL_LOCK",E[E.SEMICOLON=186]="SEMICOLON",E[E.EQUALS=187]="EQUALS",E[E.COMMA=188]="COMMA",E[E.DASH=189]="DASH",E[E.PERIOD=190]="PERIOD",E[E.FORWARD_SLASH=191]="FORWARD_SLASH",E[E.GRAVE_ACCENT=192]="GRAVE_ACCENT",E[E.OPEN_BRACKET=219]="OPEN_BRACKET",E[E.BACK_SLASH=220]="BACK_SLASH",E[E.CLOSE_BRACKET=221]="CLOSE_BRACKET",E[E.SINGLE_QUOTE=222]="SINGLE_QUOTE";
2
- //# sourceMappingURL=keycodes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keycodes.js","sources":["../../../src/keycodes.ts"],"sourcesContent":["export enum KeyCodes {\n BACKSPACE = 8,\n TAB = 9,\n ENTER = 13,\n SHIFT = 16,\n CTRL = 17,\n ALT = 18,\n PAUSE = 19,\n CAPS_LOCK = 20,\n ESCAPE = 27,\n SPACE = 32,\n PAGE_UP = 33,\n PAGE_DOWN = 34,\n END = 35,\n HOME = 36,\n LEFT_ARROW = 37,\n UP_ARROW = 38,\n RIGHT_ARROW = 39,\n DOWN_ARROW = 40,\n INSERT = 45,\n DELETE = 46,\n KEY_0 = 48,\n KEY_1 = 49,\n KEY_2 = 50,\n KEY_3 = 51,\n KEY_4 = 52,\n KEY_5 = 53,\n KEY_6 = 54,\n KEY_7 = 55,\n KEY_8 = 56,\n KEY_9 = 57,\n KEY_A = 65,\n KEY_B = 66,\n KEY_C = 67,\n KEY_D = 68,\n KEY_E = 69,\n KEY_F = 70,\n KEY_G = 71,\n KEY_H = 72,\n KEY_I = 73,\n KEY_J = 74,\n KEY_K = 75,\n KEY_L = 76,\n KEY_M = 77,\n KEY_N = 78,\n KEY_O = 79,\n KEY_P = 80,\n KEY_Q = 81,\n KEY_R = 82,\n KEY_S = 83,\n KEY_T = 84,\n KEY_U = 85,\n KEY_V = 86,\n KEY_W = 87,\n KEY_X = 88,\n KEY_Y = 89,\n KEY_Z = 90,\n LEFT_META = 91,\n RIGHT_META = 92,\n SELECT = 93,\n NUMPAD_0 = 96,\n NUMPAD_1 = 97,\n NUMPAD_2 = 98,\n NUMPAD_3 = 99,\n NUMPAD_4 = 100,\n NUMPAD_5 = 101,\n NUMPAD_6 = 102,\n NUMPAD_7 = 103,\n NUMPAD_8 = 104,\n NUMPAD_9 = 105,\n MULTIPLY = 106,\n ADD = 107,\n SUBTRACT = 109,\n DECIMAL = 110,\n DIVIDE = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n NUM_LOCK = 144,\n SCROLL_LOCK = 145,\n SEMICOLON = 186,\n EQUALS = 187,\n COMMA = 188,\n DASH = 189,\n PERIOD = 190,\n FORWARD_SLASH = 191,\n GRAVE_ACCENT = 192,\n OPEN_BRACKET = 219,\n BACK_SLASH = 220,\n CLOSE_BRACKET = 221,\n SINGLE_QUOTE = 222,\n}\n"],"names":["KeyCodes"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("../initialUppercase.js"),n=require("../nTimes.js"),r=require("../randomArrayItem.js");function t(e,n){const[r,t]=e<n?[e,n]:[n,e],i=t-r;return Math.floor(Math.random()*i)+r}function i(e){return e.split(/[\s,]+/)}const o=function(o){const s="string"==typeof o.words?i(o.words):o.words;if(0===s.length)throw new Error("Loremer refuses to be initialized with an empty dictionary. Try again and give him some damn words this time.");function a({trueSingleWord:e,minLength:n,maxLength:t,matchRegex:i}={}){const o=e||n||t||i?s.filter((r=>!(i&&!r.match(i)||e&&r.indexOf(" ")>-1||n&&n>0&&r.length<n||t&&t>0&&r.length>t))):s;if(!o.length)throw new Error(`Loremer's dictionary doesn't contain any words that satisfy the given constraints: ${JSON.stringify({maxLength:t,minLength:n,trueSingleWord:e,matchRegex:String(i)})}`);return r(o)}function c(e){return n.default(e,a)}const u={min:8,max:13};function m(n={}){const i=Object.assign(Object.assign({},u),n),[o,...s]=c(t(i.min,i.max));return[e(o),...s].join(" ")+r([".",".",".",".","!","?"])}function d(e){return n.default(e,m)}return{word:a,words:c,resourceNameSegment:function(){return a({matchRegex:/^[-a-zA-Z_]{3,32}$/,trueSingleWord:!0})},sentence:m,sentences:d,paragraph:function(){return d(t(2,5)).join(" ")}}}({words:require("./words.js")()});exports.loremer=o,exports.parseWords=i;
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/loremer/index.ts"],"sourcesContent":["import initialUppercase from \"../initialUppercase\";\nimport nTimes from \"../nTimes\";\nimport randomArrayItem from \"../randomArrayItem\";\nimport defaultWords from \"./words\";\n\ntype LoremerOptions = { words: string[] | string };\n\n// custom lorem ipsum generator: https://en.wikipedia.org/wiki/Lorem_ipsum\nexport default function Loremer(opts: LoremerOptions) {\n const _words =\n typeof opts.words === \"string\" ? parseWords(opts.words) : opts.words;\n\n if (_words.length === 0) {\n throw new Error(\n \"Loremer refuses to be initialized with an empty dictionary. Try again and give him some damn words this time.\",\n );\n }\n\n type WordOptions = {\n // Some of the \"words\" in the default dictionary are actually more than one word.\n // Accept an option to _actually_ limit the generator to a single word.\n trueSingleWord?: boolean;\n matchRegex?: RegExp;\n minLength?: number;\n maxLength?: number;\n };\n function word({\n trueSingleWord,\n minLength,\n maxLength,\n matchRegex,\n }: WordOptions = {}): string {\n const hasCriteria = trueSingleWord || minLength || maxLength || matchRegex;\n\n // Filter words by criteria:\n const matchingWords = hasCriteria\n ? _words.filter(\n w =>\n // If there's a regex specified, reject non-matches\n !(matchRegex && !w.match(matchRegex)) &&\n // If we want a trueSingleWord, reject words with spaces\n !(trueSingleWord && w.indexOf(\" \") > -1) &&\n // If min or max lengths are specified, enforce them\n !(minLength && minLength > 0 && w.length < minLength) &&\n !(maxLength && maxLength > 0 && w.length > maxLength),\n )\n : _words;\n\n if (!matchingWords.length) {\n throw new Error(\n `Loremer's dictionary doesn't contain any words that satisfy the given constraints: ${JSON.stringify(\n {\n maxLength,\n minLength,\n trueSingleWord,\n matchRegex: String(matchRegex),\n },\n )}`,\n );\n }\n\n return randomArrayItem(matchingWords);\n }\n\n function resourceNameSegment() {\n return word({\n matchRegex: /^[-a-zA-Z_]{3,32}$/,\n trueSingleWord: true,\n });\n }\n\n function words(n: number) {\n return nTimes(n, word);\n }\n\n type SentenceOptions = {\n max?: number;\n min?: number;\n };\n const defaultOptions = { min: 8, max: 13 };\n function sentence(options: SentenceOptions = {}) {\n const o = { ...defaultOptions, ...options };\n const [first, ...rest] = words(randomInRange(o.min, o.max));\n return (\n [initialUppercase(first), ...rest].join(\" \") + randomEndingPunctuation()\n );\n }\n\n function sentences(n: number) {\n return nTimes(n, sentence);\n }\n\n function paragraph() {\n return sentences(randomInRange(2, 5)).join(\" \");\n }\n\n return { word, words, resourceNameSegment, sentence, sentences, paragraph };\n}\n\nfunction randomInRange(a: number, b: number) {\n const [lower, upper] = a < b ? [a, b] : [b, a];\n\n const range = upper - lower;\n return Math.floor(Math.random() * range) + lower;\n}\n\nfunction randomEndingPunctuation() {\n return randomArrayItem([\".\", \".\", \".\", \".\", \"!\", \"?\"]);\n}\n\nexport function parseWords(words: string): string[] {\n return words.split(/[\\s,]+/);\n}\n\nexport const loremer = Loremer({ words: defaultWords() });\n"],"names":["randomInRange","a","b","lower","upper","range","Math","floor","random","parseWords","words","split","loremer","opts","_words","length","Error","word","trueSingleWord","minLength","maxLength","matchRegex","matchingWords","filter","w","match","indexOf","JSON","stringify","String","randomArrayItem","n","nTimes","defaultOptions","min","max","sentence","options","o","Object","assign","first","rest","initialUppercase","join","sentences","resourceNameSegment","paragraph","Loremer","defaultWords"],"mappings":"kHAmGA,SAASA,EAAcC,EAAWC,GAChC,MAAOC,EAAOC,GAASH,EAAIC,EAAI,CAACD,EAAGC,GAAK,CAACA,EAAGD,GAEtCI,EAAQD,EAAQD,EACtB,OAAOG,KAAKC,MAAMD,KAAKE,SAAWH,GAASF,CAC7C,CAMM,SAAUM,EAAWC,GACzB,OAAOA,EAAMC,MAAM,SACrB,CAEO,MAAMC,EA1GC,SAAkBC,GAC9B,MAAMC,EACkB,iBAAfD,EAAKH,MAAqBD,EAAWI,EAAKH,OAASG,EAAKH,MAEjE,GAAsB,IAAlBI,EAAOC,OACT,MAAM,IAAIC,MACR,iHAYJ,SAASC,GAAKC,eACZA,EAAcC,UACdA,EAASC,UACTA,EAASC,WACTA,GACe,IACf,MAGMC,EAHcJ,GAAkBC,GAAaC,GAAaC,EAI5DP,EAAOS,QACLC,KAEIH,IAAeG,EAAEC,MAAMJ,IAEvBH,GAAkBM,EAAEE,QAAQ,MAAO,GAEnCP,GAAaA,EAAY,GAAKK,EAAET,OAASI,GACzCC,GAAaA,EAAY,GAAKI,EAAET,OAASK,KAE/CN,EAEJ,IAAKQ,EAAcP,OACjB,MAAM,IAAIC,MACR,sFAAsFW,KAAKC,UACzF,CACER,YACAD,YACAD,iBACAG,WAAYQ,OAAOR,QAM3B,OAAOS,EAAgBR,EACzB,CASA,SAASZ,EAAMqB,GACb,OAAOC,EAAAA,QAAOD,EAAGd,EACnB,CAMA,MAAMgB,EAAiB,CAAEC,IAAK,EAAGC,IAAK,IACtC,SAASC,EAASC,EAA2B,IAC3C,MAAMC,EAACC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAQP,GAAmBI,IAC3BI,KAAUC,GAAQhC,EAAMV,EAAcsC,EAAEJ,IAAKI,EAAEH,MACtD,MACE,CAACQ,EAAiBF,MAAWC,GAAME,KAAK,KAuBrCd,EAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KArBjD,CAEA,SAASe,EAAUd,GACjB,OAAOC,EAAAA,QAAOD,EAAGK,EACnB,CAMA,MAAO,CAAEnB,OAAMP,QAAOoC,oBAhCtB,WACE,OAAO7B,EAAK,CACVI,WAAY,qBACZH,gBAAgB,GAEpB,EA2B2CkB,WAAUS,YAAWE,UAJhE,WACE,OAAOF,EAAU7C,EAAc,EAAG,IAAI4C,KAAK,IAC7C,EAGF,CAiBuBI,CAAQ,CAAEtC,2BAAOuC"}
@@ -1,2 +0,0 @@
1
- "use strict";const e=["is","a","the","we","but","and","this","that","in","to","of","have","not","with"],r=["accelerometer","ADSL","android","archive","ATX","backup","bandwidth","benchmark","barcode","booting","bios","bitmap","Bitcoin","BitTorrent","blacklist","bluetooth","binary","backlink","bloatware","burn","cache","compression","content","CMOS","cookie","cybercrime","cybersecurity","daemon","debug","dock","DOS","driver","device driver","DPI","DRM","encryption","emulator","ethernet","end user","fat32","framework","freeware","firewall","FTP","gif","Git","GPS","GUI","HTML","https","IEEE","ISO","IMEI","ISP","Java","JavaScript","jpeg","kernel","LAN","LCD","LED","Macintosh","mp3","malware","MMS","MIDI","newbie","OEM","OS","OCR","overclock","pdf","phishing","Python","plug-in","qwerty","remote access","registry","read-only","RAID","rooting","Safe Mode","SSID","SEO","service pack","server","source code","spam","search engine","Swype","trash","underclock","Unix","virus","VGA","web","wifi","Wikipedia","Windows","wireless LAN","World Wide Web","WYSIWYG","WPA","wumpus","zip"],t=["accelerator","incubator","accredited investor","advertorials","advertainment","bleeding edge","bootstrapping","B2B","B2C","burn rate","capital","churn rate","cliff","pitch deck","disrupt","disruptive","exit","freemium","gamify","growth hacking","growth hacker","hockey stick","IP","iterate","launch","lean","leverage","loss leader","market penetration","monetize","MVP","pivot","ramen","responsive design","ROI","runway","SAAS","scaleable","sweat equity","term sheet","traction","valuation","value prop","vaporware","VC","venture"],a=["Adobe","Airbnb","Amazon","Apple","Facebook","Google","Instagram","Microsoft","Netflix","Oracle","Salesforce","Snapchat","Telegram","Twitter","Uber","WeChat","WhatsApp"],i=["0-day","exploit","hacker","virus","vulnerability","warez"],o=["Dolt","DoltHub","database","version control","MySQL","Git","GitHub","rollback","collaborate","clone","branch","merge","commit","repository","pull request","schema","data","command line","diff","commit log","lineage","time travel","community","data bounty","open source","query","workflow","script"];module.exports=()=>[...e,...e,...e,...e,...e,...o,...r,...t,...a,...i];
2
- //# sourceMappingURL=words.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"words.js","sources":["../../../../src/loremer/words.ts"],"sourcesContent":["const commonWords = [\n \"is\",\n \"a\",\n \"the\",\n \"we\",\n \"but\",\n \"and\",\n \"this\",\n \"that\",\n \"in\",\n \"to\",\n \"of\",\n \"have\",\n \"not\",\n \"with\",\n];\nconst fromWikipedia = [\n \"accelerometer\",\n \"ADSL\",\n \"android\",\n \"archive\",\n \"ATX\",\n \"backup\",\n \"bandwidth\",\n \"benchmark\",\n \"barcode\",\n \"booting\",\n \"bios\",\n \"bitmap\",\n \"Bitcoin\",\n \"BitTorrent\",\n \"blacklist\",\n \"bluetooth\",\n \"binary\",\n \"backlink\",\n \"bloatware\",\n \"burn\",\n \"cache\",\n \"compression\",\n \"content\",\n \"CMOS\",\n \"cookie\",\n \"cybercrime\",\n \"cybersecurity\",\n \"daemon\",\n \"debug\",\n \"dock\",\n \"DOS\",\n \"driver\",\n \"device driver\",\n \"DPI\",\n \"DRM\",\n \"encryption\",\n \"emulator\",\n \"ethernet\",\n \"end user\",\n \"fat32\",\n \"framework\",\n \"freeware\",\n \"firewall\",\n \"FTP\",\n \"gif\",\n \"Git\",\n \"GPS\",\n \"GUI\",\n \"HTML\",\n \"https\",\n \"IEEE\",\n \"ISO\",\n \"IMEI\",\n \"ISP\",\n \"Java\",\n \"JavaScript\",\n \"jpeg\",\n \"kernel\",\n \"LAN\",\n \"LCD\",\n \"LED\",\n \"Macintosh\",\n \"mp3\",\n \"malware\",\n \"MMS\",\n \"MIDI\",\n \"newbie\",\n \"OEM\",\n \"OS\",\n \"OCR\",\n \"overclock\",\n \"pdf\",\n \"phishing\",\n \"Python\",\n \"plug-in\",\n \"qwerty\",\n \"remote access\",\n \"registry\",\n \"read-only\",\n \"RAID\",\n \"rooting\",\n \"Safe Mode\",\n \"SSID\",\n \"SEO\",\n \"service pack\",\n \"server\",\n \"source code\",\n \"spam\",\n \"search engine\",\n \"Swype\",\n \"trash\",\n \"underclock\",\n \"Unix\",\n \"virus\",\n \"VGA\",\n \"web\",\n \"wifi\",\n \"Wikipedia\",\n \"Windows\",\n \"wireless LAN\",\n \"World Wide Web\",\n \"WYSIWYG\",\n \"WPA\",\n \"wumpus\",\n \"zip\",\n];\nconst startupJargon = [\n \"accelerator\",\n \"incubator\",\n \"accredited investor\",\n \"advertorials\",\n \"advertainment\",\n \"bleeding edge\",\n \"bootstrapping\",\n \"B2B\",\n \"B2C\",\n \"burn rate\",\n \"capital\",\n \"churn rate\",\n \"cliff\",\n \"pitch deck\",\n \"disrupt\",\n \"disruptive\",\n \"exit\",\n \"freemium\",\n \"gamify\",\n \"growth hacking\",\n \"growth hacker\",\n \"hockey stick\",\n \"IP\",\n \"iterate\",\n \"launch\",\n \"lean\",\n \"leverage\",\n \"loss leader\",\n \"market penetration\",\n \"monetize\",\n \"MVP\",\n \"pivot\",\n \"ramen\",\n \"responsive design\",\n \"ROI\",\n \"runway\",\n \"SAAS\",\n \"scaleable\",\n \"sweat equity\",\n \"term sheet\",\n \"traction\",\n \"valuation\",\n \"value prop\",\n \"vaporware\",\n \"VC\",\n \"venture\",\n];\nconst appsAndCompanies = [\n \"Adobe\",\n \"Airbnb\",\n \"Amazon\",\n \"Apple\",\n \"Facebook\",\n \"Google\",\n \"Instagram\",\n \"Microsoft\",\n \"Netflix\",\n \"Oracle\",\n \"Salesforce\",\n \"Snapchat\",\n \"Telegram\",\n \"Twitter\",\n \"Uber\",\n \"WeChat\",\n \"WhatsApp\",\n];\nconst security = [\n \"0-day\",\n \"exploit\",\n \"hacker\",\n \"virus\",\n \"vulnerability\",\n \"warez\",\n];\nconst dolthubWords = [\n \"Dolt\",\n \"DoltHub\",\n \"database\",\n \"version control\",\n \"MySQL\",\n \"Git\",\n \"GitHub\",\n \"rollback\",\n \"collaborate\",\n \"clone\",\n \"branch\",\n \"merge\",\n \"commit\",\n \"repository\",\n \"pull request\",\n \"schema\",\n \"data\",\n \"command line\",\n \"diff\",\n \"commit log\",\n \"lineage\",\n \"time travel\",\n \"community\",\n \"data bounty\",\n \"open source\",\n \"query\",\n \"workflow\",\n \"script\",\n];\nexport default () => [\n ...commonWords,\n ...commonWords,\n ...commonWords,\n ...commonWords,\n ...commonWords,\n ...dolthubWords,\n ...fromWikipedia,\n ...startupJargon,\n ...appsAndCompanies,\n ...security,\n];\n"],"names":["commonWords","fromWikipedia","startupJargon","appsAndCompanies","security","dolthubWords"],"mappings":"aAAA,MAAMA,EAAc,CAClB,KACA,IACA,MACA,KACA,MACA,MACA,OACA,OACA,KACA,KACA,KACA,OACA,MACA,QAEIC,EAAgB,CACpB,gBACA,OACA,UACA,UACA,MACA,SACA,YACA,YACA,UACA,UACA,OACA,SACA,UACA,aACA,YACA,YACA,SACA,WACA,YACA,OACA,QACA,cACA,UACA,OACA,SACA,aACA,gBACA,SACA,QACA,OACA,MACA,SACA,gBACA,MACA,MACA,aACA,WACA,WACA,WACA,QACA,YACA,WACA,WACA,MACA,MACA,MACA,MACA,MACA,OACA,QACA,OACA,MACA,OACA,MACA,OACA,aACA,OACA,SACA,MACA,MACA,MACA,YACA,MACA,UACA,MACA,OACA,SACA,MACA,KACA,MACA,YACA,MACA,WACA,SACA,UACA,SACA,gBACA,WACA,YACA,OACA,UACA,YACA,OACA,MACA,eACA,SACA,cACA,OACA,gBACA,QACA,QACA,aACA,OACA,QACA,MACA,MACA,OACA,YACA,UACA,eACA,iBACA,UACA,MACA,SACA,OAEIC,EAAgB,CACpB,cACA,YACA,sBACA,eACA,gBACA,gBACA,gBACA,MACA,MACA,YACA,UACA,aACA,QACA,aACA,UACA,aACA,OACA,WACA,SACA,iBACA,gBACA,eACA,KACA,UACA,SACA,OACA,WACA,cACA,qBACA,WACA,MACA,QACA,QACA,oBACA,MACA,SACA,OACA,YACA,eACA,aACA,WACA,YACA,aACA,YACA,KACA,WAEIC,EAAmB,CACvB,QACA,SACA,SACA,QACA,WACA,SACA,YACA,YACA,UACA,SACA,aACA,WACA,WACA,UACA,OACA,SACA,YAEIC,EAAW,CACf,QACA,UACA,SACA,QACA,gBACA,SAEIC,EAAe,CACnB,OACA,UACA,WACA,kBACA,QACA,MACA,SACA,WACA,cACA,QACA,SACA,QACA,SACA,aACA,eACA,SACA,OACA,eACA,OACA,aACA,UACA,cACA,YACA,cACA,cACA,QACA,WACA,yBAEa,IAAM,IAChBL,KACAA,KACAA,KACAA,KACAA,KACAK,KACAJ,KACAC,KACAC,KACAC"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(e,t,r=[]){const n=[];for(let o=0;o<e;o++)n.push(t(...r));return n},exports.nTimesWithIndex=function(e,t){const r=[];for(let n=0;n<e;n++)r.push(t(n));return r};
2
- //# sourceMappingURL=nTimes.js.map