@ix-xs/node-comfort 1.1.31 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +190 -0
  2. package/LICENSE +21 -0
  3. package/README.md +210 -748
  4. package/index.js +84 -13
  5. package/package.json +201 -21
  6. package/src/Arr.js +901 -0
  7. package/src/Async.js +585 -0
  8. package/src/Cache.js +329 -0
  9. package/src/Checker.js +979 -188
  10. package/src/Cli.js +1034 -0
  11. package/src/Color.js +415 -0
  12. package/src/Crypto.js +707 -0
  13. package/src/Emitter.js +289 -0
  14. package/src/Env.js +555 -0
  15. package/src/FS.js +1483 -768
  16. package/src/Func.js +692 -0
  17. package/src/Http.js +538 -0
  18. package/src/Id.js +418 -0
  19. package/src/Logger.js +739 -307
  20. package/src/Num.js +849 -0
  21. package/src/Obj.js +904 -0
  22. package/src/SQLite.js +1308 -994
  23. package/src/Schema.js +1586 -0
  24. package/src/Str.js +999 -0
  25. package/src/Sys.js +511 -0
  26. package/src/Time.js +1323 -0
  27. package/src/Utils.js +321 -325
  28. package/src/errors.js +292 -0
  29. package/types/index.d.ts +693 -120
  30. package/types/src/Arr.d.ts +562 -0
  31. package/types/src/Arr.d.ts.map +1 -0
  32. package/types/src/Async.d.ts +321 -0
  33. package/types/src/Async.d.ts.map +1 -0
  34. package/types/src/Cache.d.ts +195 -0
  35. package/types/src/Cache.d.ts.map +1 -0
  36. package/types/src/Checker.d.ts +609 -81
  37. package/types/src/Checker.d.ts.map +1 -1
  38. package/types/src/Cli.d.ts +582 -0
  39. package/types/src/Cli.d.ts.map +1 -0
  40. package/types/src/Color.d.ts +294 -0
  41. package/types/src/Color.d.ts.map +1 -0
  42. package/types/src/Crypto.d.ts +534 -0
  43. package/types/src/Crypto.d.ts.map +1 -0
  44. package/types/src/Emitter.d.ts +170 -0
  45. package/types/src/Emitter.d.ts.map +1 -0
  46. package/types/src/Env.d.ts +382 -0
  47. package/types/src/Env.d.ts.map +1 -0
  48. package/types/src/FS.d.ts +709 -201
  49. package/types/src/FS.d.ts.map +1 -1
  50. package/types/src/Func.d.ts +455 -0
  51. package/types/src/Func.d.ts.map +1 -0
  52. package/types/src/Http.d.ts +374 -0
  53. package/types/src/Http.d.ts.map +1 -0
  54. package/types/src/Id.d.ts +200 -0
  55. package/types/src/Id.d.ts.map +1 -0
  56. package/types/src/Logger.d.ts +374 -24
  57. package/types/src/Logger.d.ts.map +1 -1
  58. package/types/src/Num.d.ts +578 -0
  59. package/types/src/Num.d.ts.map +1 -0
  60. package/types/src/Obj.d.ts +475 -0
  61. package/types/src/Obj.d.ts.map +1 -0
  62. package/types/src/SQLite.d.ts +647 -305
  63. package/types/src/SQLite.d.ts.map +1 -1
  64. package/types/src/Schema.d.ts +940 -0
  65. package/types/src/Schema.d.ts.map +1 -0
  66. package/types/src/Str.d.ts +696 -0
  67. package/types/src/Str.d.ts.map +1 -0
  68. package/types/src/Sys.d.ts +269 -0
  69. package/types/src/Sys.d.ts.map +1 -0
  70. package/types/src/Time.d.ts +664 -0
  71. package/types/src/Time.d.ts.map +1 -0
  72. package/types/src/Utils.d.ts +154 -102
  73. package/types/src/Utils.d.ts.map +1 -1
  74. package/types/src/errors.d.ts +292 -0
  75. package/types/src/errors.d.ts.map +1 -0
  76. package/tsconfig.json +0 -18
  77. package/types/index.d.ts.map +0 -1
@@ -0,0 +1,374 @@
1
+ declare namespace _exports {
2
+ export { HttpBody, HttpMethod, QueryParams, HttpRetryOptions, HttpRequestConfig, HttpHooks, HttpOptions, HttpResponse, HttpClient };
3
+ }
4
+ declare namespace _exports {
5
+ export { request };
6
+ export { get };
7
+ export { head };
8
+ export { post };
9
+ export { put };
10
+ export { patch };
11
+ export { del as delete };
12
+ export { download };
13
+ export { create };
14
+ export { HttpError };
15
+ }
16
+ export = _exports;
17
+ /**
18
+ * A request body.
19
+ */
20
+ type HttpBody = string | Buffer | Uint8Array | ArrayBuffer | URLSearchParams | FormData | Blob | ReadableStream | import("node:stream").Readable;
21
+ /**
22
+ * An HTTP method.
23
+ */
24
+ type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS" | (string & {});
25
+ /**
26
+ * Query string values. `null` and `undefined` are skipped, arrays repeat the key.
27
+ */
28
+ type QueryParams = Record<string, string | number | boolean | null | undefined | Array<string | number | boolean>>;
29
+ /**
30
+ * Retry settings.
31
+ */
32
+ type HttpRetryOptions = {
33
+ /**
34
+ * Total attempts, the first included. Defaults to `3` for methods that are safe to repeat, `1` for the others.
35
+ */
36
+ attempts?: number | undefined;
37
+ /**
38
+ * Wait before the first retry, in ms. Defaults to `300`.
39
+ */
40
+ delay?: number | undefined;
41
+ /**
42
+ * Multiplies the wait after each attempt. Defaults to `2`.
43
+ */
44
+ backoff?: number | undefined;
45
+ /**
46
+ * Longest wait, `Retry-After` included. Defaults to 30 seconds.
47
+ */
48
+ maxDelay?: number | undefined;
49
+ /**
50
+ * Statuses worth retrying. Defaults to 408, 413, 429, 500, 502, 503 and 504.
51
+ */
52
+ statuses?: number[] | undefined;
53
+ /**
54
+ * Methods allowed to retry. POST and PATCH aren't, by default, so nothing gets created twice.
55
+ */
56
+ methods?: HttpMethod[] | undefined;
57
+ };
58
+ /**
59
+ * A request as hooks see it.
60
+ */
61
+ type HttpRequestConfig = {
62
+ /**
63
+ * The final URL, base URL and query included.
64
+ */
65
+ url: string;
66
+ method: HttpMethod;
67
+ /**
68
+ * Lower-cased names.
69
+ */
70
+ headers: Record<string, string>;
71
+ body: HttpBody | undefined;
72
+ /**
73
+ * 1 for the first try.
74
+ */
75
+ attempt: number;
76
+ };
77
+ /**
78
+ * Hooks to watch or change requests.
79
+ */
80
+ type HttpHooks = {
81
+ /**
82
+ * Runs before each attempt. It can change the URL, headers or body.
83
+ */
84
+ beforeRequest?: ((config: HttpRequestConfig) => void | Promise<void>)[] | undefined;
85
+ /**
86
+ * Runs after each response, before errors are thrown. It can return another response.
87
+ */
88
+ afterResponse?: ((response: HttpResponse<any>, config: HttpRequestConfig) => void | HttpResponse<any> | Promise<void | HttpResponse<any>>)[] | undefined;
89
+ /**
90
+ * Runs before waiting for a retry.
91
+ */
92
+ beforeRetry?: ((error: unknown, attempt: number, delay: number) => void | Promise<void>)[] | undefined;
93
+ };
94
+ /**
95
+ * Request options.
96
+ */
97
+ type HttpOptions = {
98
+ /**
99
+ * Defaults to `"GET"`.
100
+ */
101
+ method?: HttpMethod | undefined;
102
+ /**
103
+ * Prefix for relative URLs.
104
+ */
105
+ baseURL?: string | undefined;
106
+ /**
107
+ * Set a header to `undefined` to remove a default one.
108
+ */
109
+ headers?: Record<string, string | undefined> | undefined;
110
+ /**
111
+ * Added to the URL's own query string.
112
+ */
113
+ query?: URLSearchParams | QueryParams | undefined;
114
+ /**
115
+ * Sent as JSON.
116
+ */
117
+ json?: unknown;
118
+ /**
119
+ * Sent as a URL-encoded form.
120
+ */
121
+ form?: Record<string, string | number | boolean> | undefined;
122
+ /**
123
+ * Sent as is: string, Buffer, `FormData`, stream...
124
+ */
125
+ body?: HttpBody | undefined;
126
+ /**
127
+ * Sets the `authorization` header.
128
+ */
129
+ auth?: {
130
+ bearer: string;
131
+ } | {
132
+ username: string;
133
+ password: string;
134
+ } | undefined;
135
+ /**
136
+ * Time limit per attempt, like `"10s"`. `false` turns it off. Defaults to 30 seconds.
137
+ */
138
+ timeout?: string | number | false | undefined;
139
+ /**
140
+ * Number of attempts, `false`, or retry settings.
141
+ */
142
+ retry?: number | false | HttpRetryOptions | undefined;
143
+ /**
144
+ * How to read the body. `"auto"` reads JSON or text based on the content type, a Buffer otherwise.
145
+ */
146
+ responseType?: "auto" | "json" | "buffer" | "text" | "stream" | undefined;
147
+ /**
148
+ * Throw an `HttpError` when the status isn't 2xx. Defaults to `true`.
149
+ */
150
+ throwHttpErrors?: boolean | undefined;
151
+ /**
152
+ * Cancels the request.
153
+ */
154
+ signal?: AbortSignal | undefined;
155
+ hooks?: HttpHooks | undefined;
156
+ /**
157
+ * Called while the body downloads.
158
+ */
159
+ onDownloadProgress?: ((progress: {
160
+ loaded: number;
161
+ total: number | undefined;
162
+ percent: number | undefined;
163
+ }) => void) | undefined;
164
+ /**
165
+ * Defaults to `"follow"`.
166
+ */
167
+ redirect?: "error" | "follow" | "manual" | undefined;
168
+ };
169
+ /**
170
+ * A response.
171
+ */
172
+ type HttpResponse<T = any> = {
173
+ status: number;
174
+ statusText: string;
175
+ /**
176
+ * `true` for 2xx statuses.
177
+ */
178
+ ok: boolean;
179
+ /**
180
+ * Lower-cased names.
181
+ */
182
+ headers: Record<string, string>;
183
+ /**
184
+ * The body, already read (see `responseType`).
185
+ */
186
+ data: T;
187
+ /**
188
+ * The final URL, after redirects.
189
+ */
190
+ url: string;
191
+ /**
192
+ * In ms, retries included.
193
+ */
194
+ duration: number;
195
+ /**
196
+ * How many attempts it took.
197
+ */
198
+ attempts: number;
199
+ };
200
+ /**
201
+ * A client with its own defaults, from `create()`.
202
+ */
203
+ type HttpClient = {
204
+ /**
205
+ * Sends a request.
206
+ */
207
+ request: <T = any>(url: string | URL, options?: HttpOptions) => Promise<HttpResponse<T>>;
208
+ /**
209
+ * Sends a GET request.
210
+ */
211
+ get: <T = any>(url: string | URL, options?: HttpOptions) => Promise<HttpResponse<T>>;
212
+ /**
213
+ * Sends a HEAD request.
214
+ */
215
+ head: <T = any>(url: string | URL, options?: HttpOptions) => Promise<HttpResponse<T>>;
216
+ /**
217
+ * Sends a DELETE request.
218
+ */
219
+ delete: <T = any>(url: string | URL, options?: HttpOptions) => Promise<HttpResponse<T>>;
220
+ /**
221
+ * Sends a POST request. Objects and arrays go as JSON.
222
+ */
223
+ post: <T = any>(url: string | URL, data?: unknown, options?: HttpOptions) => Promise<HttpResponse<T>>;
224
+ /**
225
+ * Sends a PUT request. Objects and arrays go as JSON.
226
+ */
227
+ put: <T = any>(url: string | URL, data?: unknown, options?: HttpOptions) => Promise<HttpResponse<T>>;
228
+ /**
229
+ * Sends a PATCH request. Objects and arrays go as JSON.
230
+ */
231
+ patch: <T = any>(url: string | URL, data?: unknown, options?: HttpOptions) => Promise<HttpResponse<T>>;
232
+ /**
233
+ * Saves a response to a file.
234
+ */
235
+ download: (url: string | URL, destination: string, options?: HttpOptions) => Promise<{
236
+ path: string;
237
+ size: number;
238
+ }>;
239
+ /**
240
+ * A new client with these defaults added.
241
+ */
242
+ extend: (defaults: HttpOptions) => HttpClient;
243
+ defaults: Readonly<HttpOptions>;
244
+ };
245
+ /**
246
+ * Sends a request and resolves with the response, body already read.
247
+ * Throws an `HttpError` for error statuses, a `TimeoutError` when it's too
248
+ * slow and an `AbortError` when cancelled.
249
+ *
250
+ * @example
251
+ * const res = await http.request("https://api.example.com/items/42", {
252
+ * method: "PUT",
253
+ * json: { name: "Lamp" },
254
+ * timeout: "10s",
255
+ * retry: { attempts: 5, statuses: [429, 503] },
256
+ * });
257
+ * res.data; // parsed JSON
258
+ *
259
+ * @template [T=any]
260
+ * @param {string | URL} url An absolute URL, or a path when `baseURL` is set.
261
+ * @param {HttpOptions} [options]
262
+ * @returns {Promise<HttpResponse<T>>}
263
+ * @throws {HttpError | TimeoutError | AbortError}
264
+ */
265
+ declare function request<T = any>(url: string | URL, options?: HttpOptions): Promise<HttpResponse<T>>;
266
+ /**
267
+ * Sends a GET request.
268
+ *
269
+ * @example
270
+ * const { data } = await http.get("https://api.example.com/users", { query: { page: 2, tags: ["a", "b"] } });
271
+ *
272
+ * @template [T=any]
273
+ * @param {string | URL} url
274
+ * @param {HttpOptions} [options]
275
+ * @returns {Promise<HttpResponse<T>>}
276
+ */
277
+ declare function get<T = any>(url: string | URL, options?: HttpOptions): Promise<HttpResponse<T>>;
278
+ /**
279
+ * Sends a HEAD request: headers only, no body.
280
+ *
281
+ * @example
282
+ * const { headers } = await http.head("https://example.com/big.zip");
283
+ * headers["content-length"];
284
+ *
285
+ * @template [T=undefined]
286
+ * @param {string | URL} url
287
+ * @param {HttpOptions} [options]
288
+ * @returns {Promise<HttpResponse<T>>}
289
+ */
290
+ declare function head<T = undefined>(url: string | URL, options?: HttpOptions): Promise<HttpResponse<T>>;
291
+ /**
292
+ * Sends a POST request. Objects, arrays, numbers and booleans go as JSON;
293
+ * strings, Buffers, `FormData`, Blobs and streams go as they are.
294
+ *
295
+ * @example
296
+ * const { data: user } = await http.post("https://api.example.com/users", { name: "Ada" });
297
+ * await http.post(uploadUrl, formData);
298
+ *
299
+ * @template [T=any]
300
+ * @param {string | URL} url
301
+ * @param {unknown} [data]
302
+ * @param {HttpOptions} [options]
303
+ * @returns {Promise<HttpResponse<T>>}
304
+ */
305
+ declare function post<T = any>(url: string | URL, data?: unknown, options?: HttpOptions): Promise<HttpResponse<T>>;
306
+ /**
307
+ * Sends a PUT request. The body works like in `post()`.
308
+ *
309
+ * @template [T=any]
310
+ * @param {string | URL} url
311
+ * @param {unknown} [data]
312
+ * @param {HttpOptions} [options]
313
+ * @returns {Promise<HttpResponse<T>>}
314
+ */
315
+ declare function put<T = any>(url: string | URL, data?: unknown, options?: HttpOptions): Promise<HttpResponse<T>>;
316
+ /**
317
+ * Sends a PATCH request. The body works like in `post()`.
318
+ *
319
+ * @template [T=any]
320
+ * @param {string | URL} url
321
+ * @param {unknown} [data]
322
+ * @param {HttpOptions} [options]
323
+ * @returns {Promise<HttpResponse<T>>}
324
+ */
325
+ declare function patch<T = any>(url: string | URL, data?: unknown, options?: HttpOptions): Promise<HttpResponse<T>>;
326
+ /**
327
+ * Sends a DELETE request.
328
+ *
329
+ * @example
330
+ * await http.delete(`https://api.example.com/users/${id}`);
331
+ *
332
+ * @template [T=any]
333
+ * @param {string | URL} url
334
+ * @param {HttpOptions} [options]
335
+ * @returns {Promise<HttpResponse<T>>}
336
+ */
337
+ declare function del<T = any>(url: string | URL, options?: HttpOptions): Promise<HttpResponse<T>>;
338
+ /**
339
+ * Downloads to a file as a stream, so memory stays flat whatever the size.
340
+ * Folders are created, and a partial file is removed if it fails.
341
+ *
342
+ * @example
343
+ * await http.download("https://example.com/video.mp4", "./downloads/video.mp4", {
344
+ * onDownloadProgress: ({ percent }) => bar.update(percent ?? 0),
345
+ * });
346
+ *
347
+ * @param {string | URL} url
348
+ * @param {string} destination
349
+ * @param {HttpOptions} [options]
350
+ * @returns {Promise<{ path: string, size: number }>} The absolute path and size in bytes.
351
+ * @throws {HttpError | TimeoutError | AbortError}
352
+ */
353
+ declare function download(url: string | URL, destination: string, options?: HttpOptions): Promise<{
354
+ path: string;
355
+ size: number;
356
+ }>;
357
+ /**
358
+ * Creates a client with default options. Options passed to each call are
359
+ * merged on top.
360
+ *
361
+ * @example
362
+ * const github = http.create({
363
+ * baseURL: "https://api.github.com",
364
+ * auth: { bearer: process.env.GITHUB_TOKEN },
365
+ * hooks: { afterResponse: [(res) => nc.debug(res.status, res.url)] },
366
+ * });
367
+ * const { data: repo } = await github.get("/repos/nodejs/node");
368
+ *
369
+ * @param {HttpOptions} [defaults]
370
+ * @returns {HttpClient}
371
+ */
372
+ declare function create(defaults?: HttpOptions): HttpClient;
373
+ import { HttpError } from "./errors.js";
374
+ //# sourceMappingURL=Http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Http.d.ts","sourceRoot":"","sources":["../../src/Http.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Encodings for `token()`.
3
+ */
4
+ export type TokenEncoding = "hex" | "base64" | "base64url" | "base58" | "base32";
5
+ /**
6
+ * Options for `snowflake()` and `parseSnowflake()`.
7
+ */
8
+ export type SnowflakeOptions = {
9
+ /**
10
+ * Start of time, in ms. Defaults to Discord's (2015-01-01). Twitter uses `1288834974657`.
11
+ */
12
+ epoch?: number | undefined;
13
+ /**
14
+ * 0 to 31. Defaults to `0`.
15
+ */
16
+ workerId?: number | undefined;
17
+ /**
18
+ * 0 to 31. Defaults to `process.pid % 32`.
19
+ */
20
+ processId?: number | undefined;
21
+ };
22
+ /**
23
+ * A decoded Snowflake.
24
+ */
25
+ export type ParsedSnowflake = {
26
+ /**
27
+ * When it was created.
28
+ */
29
+ date: Date;
30
+ /**
31
+ * When it was created, in ms.
32
+ */
33
+ timestamp: number;
34
+ workerId: number;
35
+ processId: number;
36
+ /**
37
+ * Sequence number within the millisecond, 0 to 4095.
38
+ */
39
+ increment: number;
40
+ };
41
+ /**
42
+ * A random UUID (version 4). For ids that sort by date, see `uuidv7()`.
43
+ *
44
+ * @example
45
+ * id.uuid(); // "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
46
+ *
47
+ * @returns {string}
48
+ */
49
+ export function uuid(): string;
50
+ /**
51
+ * A UUID v7: it starts with a timestamp, so ids sort by creation time.
52
+ * That keeps database indexes compact, which makes them great primary
53
+ * keys. Ids from the same process always increase, even within a
54
+ * millisecond.
55
+ *
56
+ * @example
57
+ * id.uuidv7(); // "0190a5c4-7c1e-7b2a-9f3e-1c2d3e4f5a6b"
58
+ * id.timestamp(id.uuidv7()); // when it was created
59
+ *
60
+ * @returns {string}
61
+ */
62
+ export function uuidv7(): string;
63
+ /**
64
+ * A ULID: 26 URL-safe characters that sort by creation time. Ids made in
65
+ * the same millisecond still increase.
66
+ *
67
+ * @example
68
+ * id.ulid(); // "01HQ3Z8K9V3N5W7Y2XJ4T6R8PB"
69
+ * id.ulid(Date.UTC(2024, 0, 1)); // for a given time
70
+ *
71
+ * @param {number} [time] Timestamp to encode, in ms. Defaults to now.
72
+ * @returns {string}
73
+ */
74
+ export function ulid(time?: number): string;
75
+ /**
76
+ * A short, URL-safe random id, like `nanoid`. At 21 characters, collisions
77
+ * are as unlikely as with a UUID.
78
+ *
79
+ * @example
80
+ * id.nano(); // "V1StGXR8_Z5jdHi6B-myT"
81
+ * id.nano(10); // "IRFa-VaY2b"
82
+ * id.nano(8, "0123456789abcdef"); // "4f90d13a"
83
+ *
84
+ * @param {number} [size=21]
85
+ * @param {string} [alphabet] 2 to 256 characters. Defaults to letters, digits, `_` and `-`.
86
+ * @returns {string}
87
+ */
88
+ export function nano(size?: number, alphabet?: string): string;
89
+ /**
90
+ * Makes an id generator with your own alphabet and length.
91
+ *
92
+ * @example
93
+ * const orderId = id.customAlphabet("0123456789ABCDEF", 12);
94
+ * orderId(); // "4F1A09C2BB7E"
95
+ *
96
+ * @param {string} alphabet
97
+ * @param {number} [size=21]
98
+ * @returns {(size?: number) => string}
99
+ */
100
+ export function customAlphabet(alphabet: string, size?: number): (size?: number) => string;
101
+ /**
102
+ * A random token for API keys, session ids, reset links...
103
+ *
104
+ * @example
105
+ * id.token(); // 64 hex characters
106
+ * id.token(16, "base64url"); // 22 URL-safe characters
107
+ * id.token(16, "base58"); // no look-alike characters
108
+ *
109
+ * @param {number} [bytes=32] How much randomness, in bytes.
110
+ * @param {TokenEncoding} [encoding="hex"]
111
+ * @returns {string}
112
+ */
113
+ export function token(bytes?: number, encoding?: TokenEncoding): string;
114
+ /**
115
+ * A short code that's easy to read aloud and type: no `0/O` or `1/I/L`
116
+ * mix-ups. For invites, coupons and verification codes.
117
+ *
118
+ * @example
119
+ * id.code(); // "K7QF9X"
120
+ * id.code(4, "0123456789"); // "3920"
121
+ *
122
+ * @param {number} [length=6]
123
+ * @param {string} [alphabet="ABCDEFGHJKMNPQRSTUVWXYZ23456789"]
124
+ * @returns {string}
125
+ */
126
+ export function code(length?: number, alphabet?: string): string;
127
+ /**
128
+ * A Snowflake id, the 64-bit format used by Discord and Twitter. Returned
129
+ * as a string because it doesn't fit in a JavaScript number.
130
+ *
131
+ * @example
132
+ * id.snowflake(); // "1215361932810932224"
133
+ *
134
+ * @param {SnowflakeOptions} [options]
135
+ * @returns {string}
136
+ */
137
+ export function snowflake(options?: SnowflakeOptions): string;
138
+ /**
139
+ * Decodes a Snowflake. With the default epoch, it reads Discord ids.
140
+ *
141
+ * @example
142
+ * id.parseSnowflake("175928847299117063").date; // 2016-04-30T11:18:25.796Z
143
+ *
144
+ * @param {string | bigint} id
145
+ * @param {SnowflakeOptions} [options] Use the epoch it was created with.
146
+ * @returns {ParsedSnowflake}
147
+ */
148
+ export function parseSnowflake(id: string | bigint, options?: SnowflakeOptions): ParsedSnowflake;
149
+ /**
150
+ * When a ULID or a UUID v7 was created.
151
+ *
152
+ * @example
153
+ * id.timestamp(id.ulid()); // now
154
+ * id.timestamp(id.uuid()); // undefined, v4 has no time in it
155
+ *
156
+ * @param {string} value
157
+ * @returns {Date | undefined}
158
+ */
159
+ export function timestamp(value: string): Date | undefined;
160
+ /**
161
+ * Readable sequential ids like `"user-1"`, `"user-2"`, counted per prefix.
162
+ * Only unique within the current process; handy in logs and tests.
163
+ *
164
+ * @example
165
+ * id.seq("user"); // "user-1"
166
+ * id.seq("user"); // "user-2"
167
+ *
168
+ * @param {string} [prefix=""]
169
+ * @returns {string}
170
+ */
171
+ export function seq(prefix?: string): string;
172
+ /**
173
+ * Hashes a value.
174
+ *
175
+ * @deprecated Use `nc.crypto.hash()`. This alias goes away in 3.0.
176
+ * @param {string | Buffer | Uint8Array} value
177
+ * @param {import("./Crypto").HashOptions} [options]
178
+ * @returns {string}
179
+ */
180
+ export function hash(value: string | Buffer | Uint8Array, options?: import("./Crypto").HashOptions): string;
181
+ /**
182
+ * Signs a value with HMAC.
183
+ *
184
+ * @deprecated Use `nc.crypto.hmac()`. This alias goes away in 3.0.
185
+ * @param {string | Buffer | Uint8Array} value
186
+ * @param {string | Buffer | Uint8Array} secret
187
+ * @param {import("./Crypto").HashOptions} [options]
188
+ * @returns {string}
189
+ */
190
+ export function hmac(value: string | Buffer | Uint8Array, secret: string | Buffer | Uint8Array, options?: import("./Crypto").HashOptions): string;
191
+ /**
192
+ * Compares two secrets in constant time.
193
+ *
194
+ * @deprecated Use `nc.crypto.safeEqual()`. This alias goes away in 3.0.
195
+ * @param {string | Buffer | Uint8Array} a
196
+ * @param {string | Buffer | Uint8Array} b
197
+ * @returns {boolean}
198
+ */
199
+ export function safeEqual(a: string | Buffer | Uint8Array, b: string | Buffer | Uint8Array): boolean;
200
+ //# sourceMappingURL=Id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Id.d.ts","sourceRoot":"","sources":["../../src/Id.js"],"names":[],"mappings":";;;4BAqBa,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;UAcnD,IAAI;;;;eACJ,MAAM;cACN,MAAM;eACN,MAAM;;;;eACN,MAAM;;AA8EpB;;;;;;;GAOG;AACH,wBAFa,MAAM,CAIlB;AAKD;;;;;;;;;;;GAWG;AACH,0BAFa,MAAM,CAsBlB;AAMD;;;;;;;;;;GAUG;AACH,4BAHW,MAAM,GACJ,MAAM,CA0BlB;AAED;;;;;;;;;;;;GAYG;AACH,4BAJW,MAAM,aACN,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;;;;GAUG;AACH,yCAJW,MAAM,SACN,MAAM,GACJ,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAKrC;AAED;;;;;;;;;;;GAWG;AACH,8BAJW,MAAM,aACN,aAAa,GACX,MAAM,CAOlB;AAED;;;;;;;;;;;GAWG;AACH,8BAJW,MAAM,aACN,MAAM,GACJ,MAAM,CAIlB;AAKD;;;;;;;;;GASG;AACH,oCAHW,gBAAgB,GACd,MAAM,CAgBlB;AAED;;;;;;;;;GASG;AACH,mCAJW,MAAM,GAAG,MAAM,YACf,gBAAgB,GACd,eAAe,CAY3B;AAED;;;;;;;;;GASG;AACH,iCAHW,MAAM,GACJ,IAAI,GAAG,SAAS,CAa5B;AAED;;;;;;;;;;GAUG;AACH,6BAHW,MAAM,GACJ,MAAM,CAKlB;AAED;;;;;;;GAOG;AACH,4BAJW,MAAM,GAAG,MAAM,GAAG,UAAU,YAC5B,OAAO,UAAU,EAAE,WAAW,GAC5B,MAAM,CAIlB;AAED;;;;;;;;GAQG;AACH,4BALW,MAAM,GAAG,MAAM,GAAG,UAAU,UAC5B,MAAM,GAAG,MAAM,GAAG,UAAU,YAC5B,OAAO,UAAU,EAAE,WAAW,GAC5B,MAAM,CAIlB;AAED;;;;;;;GAOG;AACH,6BAJW,MAAM,GAAG,MAAM,GAAG,UAAU,KAC5B,MAAM,GAAG,MAAM,GAAG,UAAU,GAC1B,OAAO,CAInB"}