zilla-util 1.2.27
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.
- package/LICENSE.txt +202 -0
- package/lib/esm/array.d.ts +30 -0
- package/lib/esm/array.js +111 -0
- package/lib/esm/array.js.map +1 -0
- package/lib/esm/base64.d.ts +2 -0
- package/lib/esm/base64.js +51 -0
- package/lib/esm/base64.js.map +1 -0
- package/lib/esm/crypto.d.ts +16 -0
- package/lib/esm/crypto.js +182 -0
- package/lib/esm/crypto.js.map +1 -0
- package/lib/esm/date.d.ts +2 -0
- package/lib/esm/date.js +47 -0
- package/lib/esm/date.js.map +1 -0
- package/lib/esm/deep.d.ts +24 -0
- package/lib/esm/deep.js +318 -0
- package/lib/esm/deep.js.map +1 -0
- package/lib/esm/error.d.ts +1 -0
- package/lib/esm/error.js +9 -0
- package/lib/esm/error.js.map +1 -0
- package/lib/esm/hash.d.ts +4 -0
- package/lib/esm/hash.js +18 -0
- package/lib/esm/hash.js.map +1 -0
- package/lib/esm/index.d.ts +17 -0
- package/lib/esm/index.js +18 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/logger.d.ts +18 -0
- package/lib/esm/logger.js +18 -0
- package/lib/esm/logger.js.map +1 -0
- package/lib/esm/lru.d.ts +25 -0
- package/lib/esm/lru.js +137 -0
- package/lib/esm/lru.js.map +1 -0
- package/lib/esm/msg.d.ts +29 -0
- package/lib/esm/msg.js +7 -0
- package/lib/esm/msg.js.map +1 -0
- package/lib/esm/object.d.ts +8 -0
- package/lib/esm/object.js +31 -0
- package/lib/esm/object.js.map +1 -0
- package/lib/esm/package.d.ts +2 -0
- package/lib/esm/package.js +38 -0
- package/lib/esm/package.js.map +1 -0
- package/lib/esm/regex.d.ts +1 -0
- package/lib/esm/regex.js +22 -0
- package/lib/esm/regex.js.map +1 -0
- package/lib/esm/retry.d.ts +13 -0
- package/lib/esm/retry.js +57 -0
- package/lib/esm/retry.js.map +1 -0
- package/lib/esm/sha256.d.ts +50 -0
- package/lib/esm/sha256.js +181 -0
- package/lib/esm/sha256.js.map +1 -0
- package/lib/esm/string.d.ts +106 -0
- package/lib/esm/string.js +257 -0
- package/lib/esm/string.js.map +1 -0
- package/lib/esm/subst.d.ts +6 -0
- package/lib/esm/subst.js +37 -0
- package/lib/esm/subst.js.map +1 -0
- package/lib/esm/time.d.ts +27 -0
- package/lib/esm/time.js +84 -0
- package/lib/esm/time.js.map +1 -0
- package/lib/esm/url.d.ts +9 -0
- package/lib/esm/url.js +80 -0
- package/lib/esm/url.js.map +1 -0
- package/package.json +72 -0
- package/src/array.ts +134 -0
- package/src/base64.ts +53 -0
- package/src/crypto.ts +281 -0
- package/src/date.ts +48 -0
- package/src/deep.ts +348 -0
- package/src/error.ts +7 -0
- package/src/hash.ts +20 -0
- package/src/index.ts +17 -0
- package/src/logger.ts +35 -0
- package/src/lru.ts +187 -0
- package/src/msg.ts +33 -0
- package/src/object.ts +43 -0
- package/src/package.ts +39 -0
- package/src/retry.ts +71 -0
- package/src/string.ts +338 -0
- package/src/subst.ts +41 -0
- package/src/time.ts +105 -0
- package/src/url.ts +92 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/sha256.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { ZillaClock } from "./time.js";
|
|
2
|
+
import { GenericLogger } from "./logger.js";
|
|
3
|
+
import GraphemeSplitter from "grapheme-splitter";
|
|
4
|
+
export declare const capitalize: (s?: string) => string;
|
|
5
|
+
export declare const uncapitalize: (s?: string) => string;
|
|
6
|
+
export declare const basefilename: (s: string) => string;
|
|
7
|
+
export declare const ext: (s: string) => string;
|
|
8
|
+
export declare const basefilenameWithoutExt: (s: string) => string;
|
|
9
|
+
export declare const dateAsYYYYMMDD: (date: Date) => string;
|
|
10
|
+
export declare const dateAsUTCYYYYMMDD: (date: Date) => string;
|
|
11
|
+
export declare const nextDateAsYYYYMMDD: (d: string) => string;
|
|
12
|
+
export declare const dateAsYYYYMMDDHHmmSS: (date: Date) => string;
|
|
13
|
+
export declare const timestampAsYYYYMMDD: (timestamp: number) => string;
|
|
14
|
+
export declare const timestampAsUTCYYYYMMDD: (timestamp: number) => string;
|
|
15
|
+
export declare const timestampAsYYYYMMDDHHmmSS: (timestamp: number) => string;
|
|
16
|
+
export declare const nowAsYYYYMMDD: () => string;
|
|
17
|
+
export declare const nowAsYYYYMMDDHHmmSS: () => string;
|
|
18
|
+
export declare const sluggize: (name: string, replaceChar?: string) => string;
|
|
19
|
+
export declare const hyphenate: (name: string) => string;
|
|
20
|
+
export declare const uuidv4: (squeezed?: boolean) => string;
|
|
21
|
+
export declare const camel2kebab: (camelCaseString: string) => string;
|
|
22
|
+
export declare const camel2snake: (camelCaseString: string) => string;
|
|
23
|
+
export declare const kebab2camel: (kebabCaseString: string) => string;
|
|
24
|
+
export declare const snake2camel: (kebabCaseString: string) => string;
|
|
25
|
+
export declare const hasUpperCase: (str: string) => boolean;
|
|
26
|
+
export declare const startsWithPrefix: (s: string, prefixes: string[]) => boolean;
|
|
27
|
+
export declare const endsWithSuffix: (s: string, suffixes: string[]) => boolean;
|
|
28
|
+
export declare const randomDigit: (min?: number, max?: number) => number;
|
|
29
|
+
export declare const randomDigits: (n: number, min?: number, max?: number) => string;
|
|
30
|
+
export declare const isOnlyDigits: (s: string) => boolean;
|
|
31
|
+
export declare const BASE62_CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
32
|
+
export declare const BASE62_CHARS_WITHOUT_SIMILAR_CHARS = "23456789ABCEFGHJKLMNPRSTUVWXYZ";
|
|
33
|
+
export declare const VOWEL_CHARS = "AEOIUaeoiu";
|
|
34
|
+
export declare const DIGIT_CHARS = "0123456789";
|
|
35
|
+
export declare const VOWEL_AND_DIGIT_CHARS: string;
|
|
36
|
+
export declare const _randomSafeToken: (n: number, CHARS: string) => string;
|
|
37
|
+
export declare const randomSafeToken: (n: number) => string;
|
|
38
|
+
export declare const randomSuperSafeToken: (n: number) => string;
|
|
39
|
+
export declare const epochToHttpDate: (epoch?: number, clock?: ZillaClock) => string;
|
|
40
|
+
export declare const sortWords: (words: string[], dict: string[]) => string[];
|
|
41
|
+
export declare const trimSpaces: (str: string) => string;
|
|
42
|
+
export declare const trimNonalphanumeric: (str: string) => string;
|
|
43
|
+
export declare const getRandomCodePoint: () => number;
|
|
44
|
+
export declare const generateRandomString: (length: number) => string;
|
|
45
|
+
export declare const sortObj: (o: Record<string, unknown>) => Record<string, unknown>;
|
|
46
|
+
export declare const sortedStringify: (obj: Record<string, unknown>) => string;
|
|
47
|
+
export declare const jsonHeader: () => {
|
|
48
|
+
"Content-Type": string;
|
|
49
|
+
};
|
|
50
|
+
export declare const ANSI: {
|
|
51
|
+
RESET: string;
|
|
52
|
+
BOLD: string;
|
|
53
|
+
DIM: string;
|
|
54
|
+
UNDERLINE: string;
|
|
55
|
+
BLINK: string;
|
|
56
|
+
INVERSE: string;
|
|
57
|
+
HIDDEN: string;
|
|
58
|
+
BLACK: string;
|
|
59
|
+
RED: string;
|
|
60
|
+
GREEN: string;
|
|
61
|
+
YELLOW: string;
|
|
62
|
+
BLUE: string;
|
|
63
|
+
MAGENTA: string;
|
|
64
|
+
CYAN: string;
|
|
65
|
+
WHITE: string;
|
|
66
|
+
BRIGHT_BLACK: string;
|
|
67
|
+
BRIGHT_RED: string;
|
|
68
|
+
BRIGHT_GREEN: string;
|
|
69
|
+
BRIGHT_YELLOW: string;
|
|
70
|
+
BRIGHT_BLUE: string;
|
|
71
|
+
BRIGHT_MAGENTA: string;
|
|
72
|
+
BRIGHT_CYAN: string;
|
|
73
|
+
BRIGHT_WHITE: string;
|
|
74
|
+
};
|
|
75
|
+
export declare const CSS: {
|
|
76
|
+
RESET: string;
|
|
77
|
+
BOLD: string;
|
|
78
|
+
DIM: string;
|
|
79
|
+
UNDERLINE: string;
|
|
80
|
+
BLINK: string;
|
|
81
|
+
INVERSE: string;
|
|
82
|
+
HIDDEN: string;
|
|
83
|
+
BLACK: string;
|
|
84
|
+
RED: string;
|
|
85
|
+
GREEN: string;
|
|
86
|
+
YELLOW: string;
|
|
87
|
+
BLUE: string;
|
|
88
|
+
MAGENTA: string;
|
|
89
|
+
CYAN: string;
|
|
90
|
+
WHITE: string;
|
|
91
|
+
BRIGHT_BLACK: string;
|
|
92
|
+
BRIGHT_RED: string;
|
|
93
|
+
BRIGHT_GREEN: string;
|
|
94
|
+
BRIGHT_YELLOW: string;
|
|
95
|
+
BRIGHT_BLUE: string;
|
|
96
|
+
BRIGHT_MAGENTA: string;
|
|
97
|
+
BRIGHT_CYAN: string;
|
|
98
|
+
BRIGHT_WHITE: string;
|
|
99
|
+
};
|
|
100
|
+
export declare const REGEX_ARRAY_OF_STRINGS: RegExp;
|
|
101
|
+
export declare const REGEX_ARRAY_OF_BOOLEANS: RegExp;
|
|
102
|
+
export declare const REGEX_ARRAY_OF_INTEGERS: RegExp;
|
|
103
|
+
export declare const REGEX_ARRAY_OF_FLOATS: RegExp;
|
|
104
|
+
export declare const safeStringify: (obj: unknown, logger?: GenericLogger) => string;
|
|
105
|
+
export declare const splitter: GraphemeSplitter;
|
|
106
|
+
export declare const countVisibleChars: (data: Uint8Array | string) => number;
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import GraphemeSplitter from "grapheme-splitter";
|
|
2
|
+
export const capitalize = (s) => s && s.length > 0 ? s.substring(0, 1).toUpperCase() + s.substring(1) : "";
|
|
3
|
+
export const uncapitalize = (s) => s && s.length > 0 ? s.substring(0, 1).toLowerCase() + s.substring(1) : "";
|
|
4
|
+
export const basefilename = (s) => {
|
|
5
|
+
if (!s)
|
|
6
|
+
return s; // return null/undefined as-is
|
|
7
|
+
// drop trailing slashes
|
|
8
|
+
while (s.endsWith("/")) {
|
|
9
|
+
s = s.substring(0, s.length - 1);
|
|
10
|
+
}
|
|
11
|
+
const i = s ? s.lastIndexOf("/") : -1;
|
|
12
|
+
return i === -1 ? s : s.substring(i + 1);
|
|
13
|
+
};
|
|
14
|
+
export const ext = (s) => {
|
|
15
|
+
if (!s)
|
|
16
|
+
return s; // return null/undefined/no-dot files as-is
|
|
17
|
+
const dot = s.lastIndexOf(".");
|
|
18
|
+
return dot === -1 || dot === s.length - 1 ? "" : s.substring(dot + 1);
|
|
19
|
+
};
|
|
20
|
+
export const basefilenameWithoutExt = (s) => {
|
|
21
|
+
s = basefilename(s);
|
|
22
|
+
if (!s)
|
|
23
|
+
return s; // return null/undefined as-is
|
|
24
|
+
// drop trailing dots
|
|
25
|
+
while (s.endsWith(".")) {
|
|
26
|
+
s = s.substring(0, s.length - 1);
|
|
27
|
+
}
|
|
28
|
+
const i = s ? s.lastIndexOf(".") : -1;
|
|
29
|
+
return i === -1 ? s : s.substring(0, i);
|
|
30
|
+
};
|
|
31
|
+
export const dateAsYYYYMMDD = (date) => `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date
|
|
32
|
+
.getDate()
|
|
33
|
+
.toString()
|
|
34
|
+
.padStart(2, "0")}`;
|
|
35
|
+
export const dateAsUTCYYYYMMDD = (date) => `${date.getUTCFullYear()}-${(date.getUTCMonth() + 1).toString().padStart(2, "0")}-${date
|
|
36
|
+
.getUTCDate()
|
|
37
|
+
.toString()
|
|
38
|
+
.padStart(2, "0")}`;
|
|
39
|
+
export const nextDateAsYYYYMMDD = (d) => {
|
|
40
|
+
const dt = new Date(`${d}T00:00:00Z`); // UTC midnight of current day
|
|
41
|
+
dt.setUTCDate(dt.getUTCDate() + 1); // +1 calendar day
|
|
42
|
+
return dt.toISOString().slice(0, 10); // back to YYYY‑MM‑DD
|
|
43
|
+
};
|
|
44
|
+
export const dateAsYYYYMMDDHHmmSS = (date) => `${date.getFullYear()}${(date.getMonth() + 1).toString().padStart(2, "0")}${date
|
|
45
|
+
.getDate()
|
|
46
|
+
.toString()
|
|
47
|
+
.padStart(2, "0")}-${("" + date.getHours()).padStart(2, "0")}${("" + date.getMinutes()).padStart(2, "0")}${("" + date.getSeconds()).padStart(2, "0")}`;
|
|
48
|
+
export const timestampAsYYYYMMDD = (timestamp) => dateAsYYYYMMDD(new Date(timestamp));
|
|
49
|
+
export const timestampAsUTCYYYYMMDD = (timestamp) => dateAsUTCYYYYMMDD(new Date(timestamp));
|
|
50
|
+
export const timestampAsYYYYMMDDHHmmSS = (timestamp) => dateAsYYYYMMDDHHmmSS(new Date(timestamp));
|
|
51
|
+
export const nowAsYYYYMMDD = () => timestampAsYYYYMMDD(Date.now());
|
|
52
|
+
export const nowAsYYYYMMDDHHmmSS = () => timestampAsYYYYMMDDHHmmSS(Date.now());
|
|
53
|
+
export const sluggize = (name, replaceChar = "_") => {
|
|
54
|
+
replaceChar ||= "_";
|
|
55
|
+
return name
|
|
56
|
+
.trim()
|
|
57
|
+
.replace(new RegExp(`[^A-Z\\d${replaceChar}]+`, "gi"), replaceChar)
|
|
58
|
+
.replace(/[\s_-]+/g, replaceChar)
|
|
59
|
+
.replace(new RegExp(`[${replaceChar}]+`, "gi"), replaceChar)
|
|
60
|
+
.replace(new RegExp(`^[${replaceChar}]+`, "gi"), "")
|
|
61
|
+
.replace(new RegExp(`[${replaceChar}]+$`, "gi"), "")
|
|
62
|
+
.toLowerCase();
|
|
63
|
+
};
|
|
64
|
+
export const hyphenate = (name) => sluggize(name, "-");
|
|
65
|
+
const generateRandomValues = (count) => {
|
|
66
|
+
if (globalThis && globalThis.crypto && globalThis.crypto.getRandomValues) {
|
|
67
|
+
return globalThis.crypto.getRandomValues(new Uint8Array(count));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const arr = new Uint8Array(count);
|
|
71
|
+
for (let i = 0; i < count; i++) {
|
|
72
|
+
arr[i] = (Math.random() * 256) | 0;
|
|
73
|
+
}
|
|
74
|
+
return arr;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
export const uuidv4 = (squeezed) => {
|
|
78
|
+
const arr = generateRandomValues(16);
|
|
79
|
+
// Per 4.4, set bits for version and clock_seq_hi_and_reserved
|
|
80
|
+
arr[6] = (arr[6] & 0x0f) | 0x40;
|
|
81
|
+
arr[8] = (arr[8] & 0x3f) | 0x80;
|
|
82
|
+
// Join it all together
|
|
83
|
+
const pad = (n) => (n.length < 2 ? "0" + n : n);
|
|
84
|
+
const uuid = Array.from(arr)
|
|
85
|
+
.map((b) => pad(b.toString(16)))
|
|
86
|
+
.join("");
|
|
87
|
+
return squeezed
|
|
88
|
+
? uuid
|
|
89
|
+
: `${uuid.slice(0, 8)}-${uuid.slice(8, 12)}-${uuid.slice(12, 16)}-${uuid.slice(16, 20)}-${uuid.slice(20)}`;
|
|
90
|
+
};
|
|
91
|
+
export const camel2kebab = (camelCaseString) => camelCaseString.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase();
|
|
92
|
+
export const camel2snake = (camelCaseString) => camelCaseString.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1_$2").toLowerCase();
|
|
93
|
+
export const kebab2camel = (kebabCaseString) => kebabCaseString
|
|
94
|
+
.toLowerCase()
|
|
95
|
+
.replace(/([-_][a-z])/g, (group) => group.toUpperCase().replace("-", "").replace("_", ""));
|
|
96
|
+
export const snake2camel = kebab2camel;
|
|
97
|
+
export const hasUpperCase = (str) => /[A-Z]/.test(str);
|
|
98
|
+
export const startsWithPrefix = (s, prefixes) => prefixes.some((prefix) => s.startsWith(prefix));
|
|
99
|
+
export const endsWithSuffix = (s, suffixes) => suffixes.some((suffix) => s.endsWith(suffix));
|
|
100
|
+
export const randomDigit = (min, max) => {
|
|
101
|
+
min = typeof min === "number" && min >= 0 && ((max && min <= max) || typeof max !== "number") ? min : 0;
|
|
102
|
+
max = typeof max === "number" && max <= 9 && max >= min ? max : 9;
|
|
103
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
104
|
+
};
|
|
105
|
+
export const randomDigits = (n, min, max) => Array.from({ length: n }, () => `${randomDigit(min, max)}`).join("");
|
|
106
|
+
export const isOnlyDigits = (s) => /^\d+$/.test(s);
|
|
107
|
+
export const BASE62_CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
108
|
+
export const BASE62_CHARS_WITHOUT_SIMILAR_CHARS = "23456789ABCEFGHJKLMNPRSTUVWXYZ";
|
|
109
|
+
export const VOWEL_CHARS = "AEOIUaeoiu";
|
|
110
|
+
export const DIGIT_CHARS = "0123456789";
|
|
111
|
+
export const VOWEL_AND_DIGIT_CHARS = VOWEL_CHARS + DIGIT_CHARS;
|
|
112
|
+
// "safeToken" means safe in two ways:
|
|
113
|
+
// 1. It's web-safe, using only characters than can appear un-encoded in URLs
|
|
114
|
+
// 2. It's curse-word safe: after 2 consecutive letters, the next char will be a vowel or digit
|
|
115
|
+
export const _randomSafeToken = (n, CHARS) => {
|
|
116
|
+
let result = "";
|
|
117
|
+
const allowedSet = new Set(CHARS);
|
|
118
|
+
const vowelsAndDigits = [...VOWEL_AND_DIGIT_CHARS].filter((char) => allowedSet.has(char)).join("");
|
|
119
|
+
for (let i = 0; i < n; i++) {
|
|
120
|
+
let newChar = CHARS[Math.floor(Math.random() * CHARS.length)];
|
|
121
|
+
// If we have at least 2 characters and they're all alphabetic
|
|
122
|
+
if (result.length >= 2 &&
|
|
123
|
+
isNaN(Number(result.charAt(result.length - 1))) &&
|
|
124
|
+
isNaN(Number(result.charAt(result.length - 2)))) {
|
|
125
|
+
// ensure next character is a vowel or a digit
|
|
126
|
+
newChar = vowelsAndDigits[Math.floor(Math.random() * vowelsAndDigits.length)];
|
|
127
|
+
}
|
|
128
|
+
result += newChar;
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
};
|
|
132
|
+
export const randomSafeToken = (n) => _randomSafeToken(n, BASE62_CHARS);
|
|
133
|
+
export const randomSuperSafeToken = (n) => _randomSafeToken(n, BASE62_CHARS_WITHOUT_SIMILAR_CHARS);
|
|
134
|
+
export const epochToHttpDate = (epoch, clock) => new Date(epoch ? epoch : clock ? clock.now() : Date.now()).toUTCString();
|
|
135
|
+
export const sortWords = (words, dict) => words.sort((a, b) => dict.indexOf(a) - dict.indexOf(b) || dict.length + words.indexOf(a) - (dict.length + words.indexOf(b)));
|
|
136
|
+
export const trimSpaces = (str) => str.trim().replace(/\s+/g, " ");
|
|
137
|
+
export const trimNonalphanumeric = (str) => str.replace(/[^a-zA-Z0-9]/g, "");
|
|
138
|
+
const commonUnicodeRanges = [
|
|
139
|
+
[0x0000, 0x007f], // Basic Latin (ASCII)
|
|
140
|
+
[0x0080, 0x00ff], // Latin-1 Supplement
|
|
141
|
+
[0x0100, 0x017f], // Latin Extended-A
|
|
142
|
+
[0x0370, 0x03ff], // Greek and Coptic
|
|
143
|
+
[0x0400, 0x04ff], // Cyrillic
|
|
144
|
+
[0x0530, 0x058f], // Armenian
|
|
145
|
+
[0x0590, 0x05ff], // Hebrew
|
|
146
|
+
[0x0600, 0x06ff], // Arabic
|
|
147
|
+
[0x0900, 0x097f], // Devanagari
|
|
148
|
+
[0xac00, 0xd7af], // Hangul Syllables
|
|
149
|
+
[0x4e00, 0x9fff], // CJK Unified Ideographs
|
|
150
|
+
];
|
|
151
|
+
const createUnifiedRange = (ranges) => {
|
|
152
|
+
const unifiedRange = [];
|
|
153
|
+
for (const [start, end] of ranges) {
|
|
154
|
+
for (let i = start; i <= end; i++) {
|
|
155
|
+
unifiedRange.push(i);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return unifiedRange;
|
|
159
|
+
};
|
|
160
|
+
const unifiedUnicodeRange = createUnifiedRange(commonUnicodeRanges);
|
|
161
|
+
export const getRandomCodePoint = () => {
|
|
162
|
+
const randomIndex = Math.floor(Math.random() * unifiedUnicodeRange.length);
|
|
163
|
+
return unifiedUnicodeRange[randomIndex];
|
|
164
|
+
};
|
|
165
|
+
export const generateRandomString = (length) => {
|
|
166
|
+
return Array.from({ length }, () => String.fromCodePoint(getRandomCodePoint())).join("");
|
|
167
|
+
};
|
|
168
|
+
export const sortObj = (o) => Object.keys(o)
|
|
169
|
+
.sort()
|
|
170
|
+
.reduce((acc, key) => {
|
|
171
|
+
acc[key] =
|
|
172
|
+
typeof o[key] === "object" && o[key] !== null && !Array.isArray(o[key])
|
|
173
|
+
? sortObj(o[key])
|
|
174
|
+
: o[key];
|
|
175
|
+
return acc;
|
|
176
|
+
}, {});
|
|
177
|
+
export const sortedStringify = (obj) => JSON.stringify(sortObj(obj));
|
|
178
|
+
export const jsonHeader = () => ({ "Content-Type": "application/json" });
|
|
179
|
+
export const ANSI = {
|
|
180
|
+
RESET: "\x1b[0m",
|
|
181
|
+
BOLD: "\x1b[1m",
|
|
182
|
+
DIM: "\x1b[2m",
|
|
183
|
+
UNDERLINE: "\x1b[4m",
|
|
184
|
+
BLINK: "\x1b[5m",
|
|
185
|
+
INVERSE: "\x1b[7m",
|
|
186
|
+
HIDDEN: "\x1b[8m",
|
|
187
|
+
// Foreground Colors
|
|
188
|
+
BLACK: "\x1b[30m",
|
|
189
|
+
RED: "\x1b[31m",
|
|
190
|
+
GREEN: "\x1b[32m",
|
|
191
|
+
YELLOW: "\x1b[33m",
|
|
192
|
+
BLUE: "\x1b[34m",
|
|
193
|
+
MAGENTA: "\x1b[35m",
|
|
194
|
+
CYAN: "\x1b[36m",
|
|
195
|
+
WHITE: "\x1b[37m",
|
|
196
|
+
// Bright Foreground Colors
|
|
197
|
+
BRIGHT_BLACK: "\x1b[90m",
|
|
198
|
+
BRIGHT_RED: "\x1b[91m",
|
|
199
|
+
BRIGHT_GREEN: "\x1b[92m",
|
|
200
|
+
BRIGHT_YELLOW: "\x1b[93m",
|
|
201
|
+
BRIGHT_BLUE: "\x1b[94m",
|
|
202
|
+
BRIGHT_MAGENTA: "\x1b[95m",
|
|
203
|
+
BRIGHT_CYAN: "\x1b[96m",
|
|
204
|
+
BRIGHT_WHITE: "\x1b[97m",
|
|
205
|
+
};
|
|
206
|
+
export const CSS = {
|
|
207
|
+
RESET: "color: inherit;",
|
|
208
|
+
BOLD: "font-weight: bold;",
|
|
209
|
+
DIM: "opacity: 0.7;",
|
|
210
|
+
UNDERLINE: "text-decoration: underline;",
|
|
211
|
+
// for BLINK to work, add the CSS below to some global CSS file that the browser will load:
|
|
212
|
+
// @keyframes blink { 50% { opacity: 0; } }
|
|
213
|
+
// If the CSS isn't defined, BLINK text will still appear, it just won't blink
|
|
214
|
+
BLINK: "animation: blink 1s step-start infinite;",
|
|
215
|
+
INVERSE: "filter: invert(100%);",
|
|
216
|
+
HIDDEN: "visibility: hidden;",
|
|
217
|
+
// Foreground Colors
|
|
218
|
+
BLACK: "color: black;",
|
|
219
|
+
RED: "color: red;",
|
|
220
|
+
GREEN: "color: green;",
|
|
221
|
+
YELLOW: "color: goldenrod;",
|
|
222
|
+
BLUE: "color: blue;",
|
|
223
|
+
MAGENTA: "color: purple;",
|
|
224
|
+
CYAN: "color: cyan;",
|
|
225
|
+
WHITE: "color: white;",
|
|
226
|
+
// Bright Foreground Colors
|
|
227
|
+
BRIGHT_BLACK: "color: gray;",
|
|
228
|
+
BRIGHT_RED: "color: lightcoral;",
|
|
229
|
+
BRIGHT_GREEN: "color: lightgreen;",
|
|
230
|
+
BRIGHT_YELLOW: "color: yellow;",
|
|
231
|
+
BRIGHT_BLUE: "color: lightskyblue;",
|
|
232
|
+
BRIGHT_MAGENTA: "color: violet;",
|
|
233
|
+
BRIGHT_CYAN: "color: lightcyan;",
|
|
234
|
+
BRIGHT_WHITE: "color: white;",
|
|
235
|
+
};
|
|
236
|
+
export const REGEX_ARRAY_OF_STRINGS = /^\[\s*(?:"[^"]*"\s*(?:,\s*"[^"]*"\s*)*)?]$/;
|
|
237
|
+
export const REGEX_ARRAY_OF_BOOLEANS = /^\[\s*(?:true|false)(\s*,\s*(?:true|false))*\s*]$/;
|
|
238
|
+
export const REGEX_ARRAY_OF_INTEGERS = /^\[\s*-?\d+(\s*,\s*-?\d+)*\s*]$/;
|
|
239
|
+
export const REGEX_ARRAY_OF_FLOATS = /^\[\s*-?\d+(\.\d+)?([eE][-+]?\d+)?(\s*,\s*-?\d+(\.\d+)?([eE][-+]?\d+)?)*\s*]$/;
|
|
240
|
+
export const safeStringify = (obj, logger) => {
|
|
241
|
+
const seen = new WeakSet();
|
|
242
|
+
return JSON.stringify(obj, (_key, val) => {
|
|
243
|
+
if (typeof val === "object" && val !== null) {
|
|
244
|
+
if (seen.has(val)) {
|
|
245
|
+
if (logger && logger.isDebugEnabled()) {
|
|
246
|
+
logger.debug(`safeStringify: detected circular reference in obj: ${obj}${obj?.constructor?.name ? ` [constructor=${obj.constructor.name}]` : ""}`);
|
|
247
|
+
}
|
|
248
|
+
return "[Circular]";
|
|
249
|
+
}
|
|
250
|
+
seen.add(val);
|
|
251
|
+
}
|
|
252
|
+
return val;
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
export const splitter = new GraphemeSplitter();
|
|
256
|
+
export const countVisibleChars = (data) => splitter.countGraphemes(typeof data === "string" ? data : new TextDecoder("utf-8").decode(data));
|
|
257
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type StringXformFunction = (args?: string[]) => string;
|
|
2
|
+
export type StringXformContext = Record<string, string | StringXformFunction | undefined | null>;
|
|
3
|
+
export declare const ERR_UNKNOWN_SUBST_CONTEXT_VAR = "Unknown context variable";
|
|
4
|
+
export declare const substContext: (obj: unknown, context: StringXformContext, opts?: {
|
|
5
|
+
strict: boolean;
|
|
6
|
+
}) => unknown;
|
package/lib/esm/subst.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const ERR_UNKNOWN_SUBST_CONTEXT_VAR = "Unknown context variable";
|
|
2
|
+
export const substContext = (obj, context, opts) => {
|
|
3
|
+
const transformString = (str) => {
|
|
4
|
+
return str.replace(/{{(.*?)}}/g, (_, key) => {
|
|
5
|
+
const parts = key
|
|
6
|
+
.trim()
|
|
7
|
+
.split(/\s+/)
|
|
8
|
+
.filter((s) => s.length > 0)
|
|
9
|
+
.map((s) => s.trim());
|
|
10
|
+
const k = parts[0];
|
|
11
|
+
const args = parts.length > 1 ? parts.slice(1) : [];
|
|
12
|
+
const subst = context[k];
|
|
13
|
+
if (typeof subst === "string")
|
|
14
|
+
return subst;
|
|
15
|
+
if (typeof subst === "function") {
|
|
16
|
+
return subst(args);
|
|
17
|
+
}
|
|
18
|
+
if (!opts || opts?.strict !== false)
|
|
19
|
+
throw new Error(`${ERR_UNKNOWN_SUBST_CONTEXT_VAR} var=${k}`);
|
|
20
|
+
return `??${k}`;
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const transform = (item) => {
|
|
24
|
+
if (typeof item === "string") {
|
|
25
|
+
return transformString(item);
|
|
26
|
+
}
|
|
27
|
+
else if (Array.isArray(item)) {
|
|
28
|
+
return item.map(transform);
|
|
29
|
+
}
|
|
30
|
+
else if (item && typeof item === "object") {
|
|
31
|
+
return Object.fromEntries(Object.entries(item).map(([k, v]) => [k, transform(v)]));
|
|
32
|
+
}
|
|
33
|
+
return item;
|
|
34
|
+
};
|
|
35
|
+
return transform(obj);
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=subst.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subst.js","sourceRoot":"","sources":["../../src/subst.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AAExE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAE,OAA2B,EAAE,IAA0B,EAAW,EAAE;IAC3G,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE;QAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,KAAK,GAAa,GAAG;iBACtB,IAAI,EAAE;iBACN,KAAK,CAAC,KAAK,CAAC;iBACZ,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;iBACnC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC5C,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,MAAM,KAAK,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,6BAA6B,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClG,OAAO,KAAK,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,IAAa,EAAW,EAAE;QACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { GenericLogger } from "./logger.js";
|
|
2
|
+
export type ZillaNowFunc = () => number;
|
|
3
|
+
export type ZillaClock = {
|
|
4
|
+
now: ZillaNowFunc;
|
|
5
|
+
};
|
|
6
|
+
export declare const DEFAULT_CLOCK: ZillaClock;
|
|
7
|
+
export type ZillaClockSource = () => ZillaClock;
|
|
8
|
+
export declare const DEFAULT_CLOCK_SOURCE: ZillaClockSource;
|
|
9
|
+
export declare class MockClock {
|
|
10
|
+
private time;
|
|
11
|
+
private start;
|
|
12
|
+
private logger?;
|
|
13
|
+
private name;
|
|
14
|
+
constructor(startTime?: number, logger?: GenericLogger, name?: string);
|
|
15
|
+
now(): number;
|
|
16
|
+
setTime(time: number): void;
|
|
17
|
+
advance(timeDelta: number): void;
|
|
18
|
+
}
|
|
19
|
+
export declare const mockClock: (startTime?: number) => ZillaClock;
|
|
20
|
+
export declare const sleep: (ms: number) => Promise<unknown>;
|
|
21
|
+
export declare const DEFAULT_NAP_CHECK = 1000;
|
|
22
|
+
export type NapAlarm = {
|
|
23
|
+
wake?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare const nap: (clock: ZillaClock, alarm: NapAlarm, ms: number, check?: number) => Promise<unknown>;
|
|
26
|
+
export declare const parseSimpleTime: (t: string) => number;
|
|
27
|
+
export declare const delay: (duration?: number | string) => Promise<void>;
|
package/lib/esm/time.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { uuidv4 } from "./string.js";
|
|
2
|
+
const DEFAULT_NOW_FUNC = () => Date.now();
|
|
3
|
+
export const DEFAULT_CLOCK = {
|
|
4
|
+
now: DEFAULT_NOW_FUNC,
|
|
5
|
+
};
|
|
6
|
+
export const DEFAULT_CLOCK_SOURCE = () => DEFAULT_CLOCK;
|
|
7
|
+
export class MockClock {
|
|
8
|
+
time;
|
|
9
|
+
start;
|
|
10
|
+
logger;
|
|
11
|
+
name;
|
|
12
|
+
constructor(startTime, logger, name) {
|
|
13
|
+
this.start = Date.now();
|
|
14
|
+
this.time = typeof startTime === "number" && startTime > 0 ? startTime : Date.now();
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
this.name = name ? name : `MockClock-${uuidv4()}`;
|
|
17
|
+
}
|
|
18
|
+
now() {
|
|
19
|
+
if (this.logger && this.logger.isTraceEnabled()) {
|
|
20
|
+
this.logger.trace(`MockClock ID=${this.name} RETURNING now=${this.time}`);
|
|
21
|
+
}
|
|
22
|
+
return this.time + (Date.now() - this.start);
|
|
23
|
+
}
|
|
24
|
+
setTime(time) {
|
|
25
|
+
if (this.logger && this.logger.isTraceEnabled()) {
|
|
26
|
+
this.logger.trace(`MockClock ID=${this.name} SET-TIME now=${this.time} setting-to=${time}`);
|
|
27
|
+
}
|
|
28
|
+
this.time = time;
|
|
29
|
+
if (this.logger && this.logger.isTraceEnabled()) {
|
|
30
|
+
this.logger.trace(`MockClock ID=${this.name} SET-TIME now=${this.time}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
advance(timeDelta) {
|
|
34
|
+
if (this.logger && this.logger.isTraceEnabled()) {
|
|
35
|
+
this.logger.trace(`MockClock ID=${this.name} ADVANCING now=${this.time} timeDelta=${timeDelta}`);
|
|
36
|
+
}
|
|
37
|
+
this.time += timeDelta;
|
|
38
|
+
if (this.logger && this.logger.isTraceEnabled()) {
|
|
39
|
+
this.logger.trace(`MockClock ID=${this.name} ADVANCED now=${this.time}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export const mockClock = (startTime = 0) => new MockClock(startTime);
|
|
44
|
+
// adapted from https://stackoverflow.com/a/39914235
|
|
45
|
+
export const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
46
|
+
export const DEFAULT_NAP_CHECK = 1000;
|
|
47
|
+
const _nap = (resolve, clock, alarm, ms, check) => async () => {
|
|
48
|
+
try {
|
|
49
|
+
alarm.wake = false;
|
|
50
|
+
const start = clock.now();
|
|
51
|
+
while (!alarm.wake && clock.now() - start < ms) {
|
|
52
|
+
await sleep(check);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
resolve();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
export const nap = (clock, alarm, ms, check) => new Promise((r) => _nap(r, clock, alarm, ms, check || DEFAULT_NAP_CHECK)());
|
|
60
|
+
export const parseSimpleTime = (t) => {
|
|
61
|
+
const match = /^(\d+(\.\d+)?)([smhd])?$/.exec(t);
|
|
62
|
+
if (!match)
|
|
63
|
+
throw new Error(`Invalid time format: ${t}`);
|
|
64
|
+
const value = Number(match[1]);
|
|
65
|
+
const unit = match[3];
|
|
66
|
+
switch (unit) {
|
|
67
|
+
case "s":
|
|
68
|
+
return value * 1000;
|
|
69
|
+
case "m":
|
|
70
|
+
return value * 60 * 1000;
|
|
71
|
+
case "h":
|
|
72
|
+
return value * 3600 * 1000;
|
|
73
|
+
case "d":
|
|
74
|
+
return value * 24 * 3600 * 1000;
|
|
75
|
+
default:
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
export const delay = async (duration) => {
|
|
80
|
+
if (!duration)
|
|
81
|
+
return;
|
|
82
|
+
await sleep(typeof duration === "number" ? duration : parseSimpleTime(duration));
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/time.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/url.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type CanonicalizedUrl = {
|
|
2
|
+
original: string;
|
|
3
|
+
normalized: string;
|
|
4
|
+
redirectChain: string[];
|
|
5
|
+
landing: string;
|
|
6
|
+
canonical: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const normalizeUrl: (input: string) => string;
|
|
9
|
+
export declare const canonicalizeUrl: (url: string) => Promise<CanonicalizedUrl>;
|