@opentabs-dev/plugin-sdk 0.0.34 → 0.0.36
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/dist/dom.d.ts +4 -1
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +147 -10
- package/dist/dom.js.map +1 -1
- package/dist/fetch.d.ts +12 -12
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +22 -8
- package/dist/fetch.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +87 -40
- package/dist/log.js.map +1 -1
- package/dist/lucide-icon-names.d.ts +1 -1
- package/dist/page-state.d.ts +0 -7
- package/dist/page-state.d.ts.map +1 -1
- package/dist/page-state.js +6 -1
- package/dist/page-state.js.map +1 -1
- package/dist/storage.d.ts +8 -7
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +32 -25
- package/dist/storage.js.map +1 -1
- package/dist/timing.d.ts +9 -2
- package/dist/timing.d.ts.map +1 -1
- package/dist/timing.js +35 -2
- package/dist/timing.js.map +1 -1
- package/dist/tsconfig.scripts.tsbuildinfo +1 -1
- package/package.json +4 -5
package/dist/log.js
CHANGED
|
@@ -6,54 +6,101 @@
|
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
7
7
|
const MAX_DATA_LENGTH = 10;
|
|
8
8
|
const MAX_STRING_LENGTH = 4096;
|
|
9
|
+
const MAX_SERIALIZED_SIZE = 64 * 1024; // 64 KB per serialized argument
|
|
9
10
|
/**
|
|
10
11
|
* Produces a JSON-safe representation of a single argument.
|
|
11
12
|
* Handles circular references, DOM nodes, functions, and other
|
|
12
13
|
* non-serializable values without throwing.
|
|
13
14
|
*/
|
|
14
15
|
const safeSerializeArg = (value) => {
|
|
15
|
-
if (value === null || value === undefined)
|
|
16
|
-
return value;
|
|
17
|
-
const type = typeof value;
|
|
18
|
-
if (type === 'boolean' || type === 'number')
|
|
19
|
-
return value;
|
|
20
|
-
if (type === 'string') {
|
|
21
|
-
return value.length > MAX_STRING_LENGTH ? value.slice(0, MAX_STRING_LENGTH) + '…' : value;
|
|
22
|
-
}
|
|
23
|
-
if (type === 'function')
|
|
24
|
-
return `[Function: ${value.name || 'anonymous'}]`;
|
|
25
|
-
if (type === 'symbol')
|
|
26
|
-
return `[Symbol: ${value.description ?? ''}]`;
|
|
27
|
-
if (type === 'bigint')
|
|
28
|
-
return `[BigInt: ${value.toString()}]`;
|
|
29
|
-
// DOM nodes
|
|
30
|
-
if (typeof value.nodeType === 'number') {
|
|
31
|
-
const node = value;
|
|
32
|
-
const className = node.className ? `.${node.className.split(' ')[0] ?? ''}` : '';
|
|
33
|
-
return `[${node.nodeName ?? 'Node'}${node.id ? `#${node.id}` : ''}${className}]`;
|
|
34
|
-
}
|
|
35
|
-
// Errors
|
|
36
|
-
if (value instanceof Error) {
|
|
37
|
-
return { name: value.name, message: value.message, stack: value.stack };
|
|
38
|
-
}
|
|
39
|
-
// Fallback: attempt JSON round-trip to strip non-serializable properties
|
|
40
16
|
try {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
17
|
+
if (value === null || value === undefined)
|
|
18
|
+
return value;
|
|
19
|
+
const type = typeof value;
|
|
20
|
+
if (type === 'boolean' || type === 'number')
|
|
21
|
+
return value;
|
|
22
|
+
if (type === 'string') {
|
|
23
|
+
return value.length > MAX_STRING_LENGTH ? value.slice(0, MAX_STRING_LENGTH) + '…' : value;
|
|
24
|
+
}
|
|
25
|
+
if (type === 'function')
|
|
26
|
+
return `[Function: ${value.name || 'anonymous'}]`;
|
|
27
|
+
if (type === 'symbol')
|
|
28
|
+
return `[Symbol: ${value.description ?? ''}]`;
|
|
29
|
+
if (type === 'bigint')
|
|
30
|
+
return `[BigInt: ${value.toString()}]`;
|
|
31
|
+
// DOM nodes — require both nodeType (number) and nodeName (string) to avoid
|
|
32
|
+
// treating arbitrary objects like { nodeType: 1, className: 42 } as DOM nodes.
|
|
33
|
+
if (typeof value.nodeType === 'number' &&
|
|
34
|
+
typeof value.nodeName === 'string') {
|
|
35
|
+
try {
|
|
36
|
+
const node = value;
|
|
37
|
+
let classStr = '';
|
|
38
|
+
if (typeof node.className === 'string') {
|
|
39
|
+
classStr = node.className ? `.${node.className.split(' ')[0] ?? ''}` : '';
|
|
40
|
+
}
|
|
41
|
+
else if (node.className !== null && typeof node.className === 'object') {
|
|
42
|
+
// SVGAnimatedString has a .baseVal string property
|
|
43
|
+
const baseVal = node.className.baseVal;
|
|
44
|
+
if (typeof baseVal === 'string') {
|
|
45
|
+
classStr = baseVal ? `.${baseVal.split(' ')[0] ?? ''}` : '';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return `[${node.nodeName}${node.id ? `#${node.id}` : ''}${classStr}]`;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Fall through to JSON fallback
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Errors
|
|
55
|
+
if (value instanceof Error) {
|
|
56
|
+
return { name: value.name, message: value.message, stack: value.stack };
|
|
57
|
+
}
|
|
58
|
+
// Exotic JS types — serialize as descriptive placeholder strings
|
|
59
|
+
if (value instanceof WeakRef)
|
|
60
|
+
return '[WeakRef]';
|
|
61
|
+
if (value instanceof WeakMap)
|
|
62
|
+
return '[WeakMap]';
|
|
63
|
+
if (value instanceof WeakSet)
|
|
64
|
+
return '[WeakSet]';
|
|
65
|
+
if (value instanceof ArrayBuffer)
|
|
66
|
+
return '[ArrayBuffer]';
|
|
67
|
+
if (typeof SharedArrayBuffer !== 'undefined' && value instanceof SharedArrayBuffer)
|
|
68
|
+
return '[SharedArrayBuffer]';
|
|
69
|
+
// Fallback: attempt JSON round-trip to strip non-serializable properties
|
|
70
|
+
try {
|
|
71
|
+
const seen = new WeakSet();
|
|
72
|
+
const json = JSON.stringify(value, (_key, v) => {
|
|
73
|
+
if (typeof v === 'object' && v !== null) {
|
|
74
|
+
if (seen.has(v))
|
|
75
|
+
return '[Circular]';
|
|
76
|
+
seen.add(v);
|
|
77
|
+
}
|
|
78
|
+
if (typeof v === 'function')
|
|
79
|
+
return `[Function: ${v.name || 'anonymous'}]`;
|
|
80
|
+
if (typeof v === 'bigint')
|
|
81
|
+
return `[BigInt: ${v.toString()}]`;
|
|
82
|
+
if (typeof v === 'symbol')
|
|
83
|
+
return `[Symbol: ${v.description ?? ''}]`;
|
|
84
|
+
if (v instanceof WeakRef)
|
|
85
|
+
return '[WeakRef]';
|
|
86
|
+
if (v instanceof WeakMap)
|
|
87
|
+
return '[WeakMap]';
|
|
88
|
+
if (v instanceof WeakSet)
|
|
89
|
+
return '[WeakSet]';
|
|
90
|
+
if (v instanceof ArrayBuffer)
|
|
91
|
+
return '[ArrayBuffer]';
|
|
92
|
+
if (typeof SharedArrayBuffer !== 'undefined' && v instanceof SharedArrayBuffer)
|
|
93
|
+
return '[SharedArrayBuffer]';
|
|
94
|
+
return v;
|
|
95
|
+
});
|
|
96
|
+
if (json.length > MAX_SERIALIZED_SIZE) {
|
|
97
|
+
return `[Object truncated: ${json.length} chars]`;
|
|
47
98
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return `[Symbol: ${v.description ?? ''}]`;
|
|
54
|
-
return v;
|
|
55
|
-
});
|
|
56
|
-
return JSON.parse(json);
|
|
99
|
+
return JSON.parse(json);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return `[Unserializable: ${typeof value}]`;
|
|
103
|
+
}
|
|
57
104
|
}
|
|
58
105
|
catch {
|
|
59
106
|
return `[Unserializable: ${typeof value}]`;
|
package/dist/log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAgB9E,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Union type of all Lucide icon names (kebab-case).
|
|
3
3
|
*
|
|
4
4
|
* Auto-generated from lucide-react v0.574.0 (1929 icons).
|
|
5
|
-
* Regenerate with:
|
|
5
|
+
* Regenerate with: npm run generate:icons
|
|
6
6
|
*/
|
|
7
7
|
export type LucideIconName = 'a-arrow-down' | 'a-arrow-up' | 'a-large-small' | 'accessibility' | 'activity' | 'activity-square' | 'air-vent' | 'airplay' | 'alarm-check' | 'alarm-clock' | 'alarm-clock-check' | 'alarm-clock-minus' | 'alarm-clock-off' | 'alarm-clock-plus' | 'alarm-minus' | 'alarm-plus' | 'alarm-smoke' | 'album' | 'alert-circle' | 'alert-octagon' | 'alert-triangle' | 'align-center' | 'align-center-horizontal' | 'align-center-vertical' | 'align-end-horizontal' | 'align-end-vertical' | 'align-horizontal-distribute-center' | 'align-horizontal-distribute-end' | 'align-horizontal-distribute-start' | 'align-horizontal-justify-center' | 'align-horizontal-justify-end' | 'align-horizontal-justify-start' | 'align-horizontal-space-around' | 'align-horizontal-space-between' | 'align-justify' | 'align-left' | 'align-right' | 'align-start-horizontal' | 'align-start-vertical' | 'align-vertical-distribute-center' | 'align-vertical-distribute-end' | 'align-vertical-distribute-start' | 'align-vertical-justify-center' | 'align-vertical-justify-end' | 'align-vertical-justify-start' | 'align-vertical-space-around' | 'align-vertical-space-between' | 'ambulance' | 'ampersand' | 'ampersands' | 'amphora' | 'anchor' | 'angry' | 'annoyed' | 'antenna' | 'anvil' | 'aperture' | 'app-window' | 'app-window-mac' | 'apple' | 'archive' | 'archive-restore' | 'archive-x' | 'area-chart' | 'armchair' | 'arrow-big-down' | 'arrow-big-down-dash' | 'arrow-big-left' | 'arrow-big-left-dash' | 'arrow-big-right' | 'arrow-big-right-dash' | 'arrow-big-up' | 'arrow-big-up-dash' | 'arrow-down' | 'arrow-down-0-1' | 'arrow-down-01' | 'arrow-down-1-0' | 'arrow-down-10' | 'arrow-down-a-z' | 'arrow-down-az' | 'arrow-down-circle' | 'arrow-down-from-line' | 'arrow-down-left' | 'arrow-down-left-from-circle' | 'arrow-down-left-from-square' | 'arrow-down-left-square' | 'arrow-down-narrow-wide' | 'arrow-down-right' | 'arrow-down-right-from-circle' | 'arrow-down-right-from-square' | 'arrow-down-right-square' | 'arrow-down-square' | 'arrow-down-to-dot' | 'arrow-down-to-line' | 'arrow-down-up' | 'arrow-down-wide-narrow' | 'arrow-down-z-a' | 'arrow-down-za' | 'arrow-left' | 'arrow-left-circle' | 'arrow-left-from-line' | 'arrow-left-right' | 'arrow-left-square' | 'arrow-left-to-line' | 'arrow-right' | 'arrow-right-circle' | 'arrow-right-from-line' | 'arrow-right-left' | 'arrow-right-square' | 'arrow-right-to-line' | 'arrow-up' | 'arrow-up-0-1' | 'arrow-up-01' | 'arrow-up-1-0' | 'arrow-up-10' | 'arrow-up-a-z' | 'arrow-up-az' | 'arrow-up-circle' | 'arrow-up-down' | 'arrow-up-from-dot' | 'arrow-up-from-line' | 'arrow-up-left' | 'arrow-up-left-from-circle' | 'arrow-up-left-from-square' | 'arrow-up-left-square' | 'arrow-up-narrow-wide' | 'arrow-up-right' | 'arrow-up-right-from-circle' | 'arrow-up-right-from-square' | 'arrow-up-right-square' | 'arrow-up-square' | 'arrow-up-to-line' | 'arrow-up-wide-narrow' | 'arrow-up-z-a' | 'arrow-up-za' | 'arrows-up-from-line' | 'asterisk' | 'asterisk-square' | 'at-sign' | 'atom' | 'audio-lines' | 'audio-waveform' | 'award' | 'axe' | 'axis-3-d' | 'axis-3d' | 'baby' | 'backpack' | 'badge' | 'badge-alert' | 'badge-cent' | 'badge-check' | 'badge-dollar-sign' | 'badge-euro' | 'badge-help' | 'badge-indian-rupee' | 'badge-info' | 'badge-japanese-yen' | 'badge-minus' | 'badge-percent' | 'badge-plus' | 'badge-pound-sterling' | 'badge-question-mark' | 'badge-russian-ruble' | 'badge-swiss-franc' | 'badge-turkish-lira' | 'badge-x' | 'baggage-claim' | 'balloon' | 'ban' | 'banana' | 'bandage' | 'banknote' | 'banknote-arrow-down' | 'banknote-arrow-up' | 'banknote-x' | 'bar-chart' | 'bar-chart-2' | 'bar-chart-3' | 'bar-chart-4' | 'bar-chart-big' | 'bar-chart-horizontal' | 'bar-chart-horizontal-big' | 'barcode' | 'barrel' | 'baseline' | 'bath' | 'battery' | 'battery-charging' | 'battery-full' | 'battery-low' | 'battery-medium' | 'battery-plus' | 'battery-warning' | 'beaker' | 'bean' | 'bean-off' | 'bed' | 'bed-double' | 'bed-single' | 'beef' | 'beer' | 'beer-off' | 'bell' | 'bell-dot' | 'bell-electric' | 'bell-minus' | 'bell-off' | 'bell-plus' | 'bell-ring' | 'between-horizonal-end' | 'between-horizonal-start' | 'between-horizontal-end' | 'between-horizontal-start' | 'between-vertical-end' | 'between-vertical-start' | 'biceps-flexed' | 'bike' | 'binary' | 'binoculars' | 'biohazard' | 'bird' | 'birdhouse' | 'bitcoin' | 'blend' | 'blinds' | 'blocks' | 'bluetooth' | 'bluetooth-connected' | 'bluetooth-off' | 'bluetooth-searching' | 'bold' | 'bolt' | 'bomb' | 'bone' | 'book' | 'book-a' | 'book-alert' | 'book-audio' | 'book-check' | 'book-copy' | 'book-dashed' | 'book-down' | 'book-headphones' | 'book-heart' | 'book-image' | 'book-key' | 'book-lock' | 'book-marked' | 'book-minus' | 'book-open' | 'book-open-check' | 'book-open-text' | 'book-plus' | 'book-search' | 'book-template' | 'book-text' | 'book-type' | 'book-up' | 'book-up-2' | 'book-user' | 'book-x' | 'bookmark' | 'bookmark-check' | 'bookmark-minus' | 'bookmark-plus' | 'bookmark-x' | 'boom-box' | 'bot' | 'bot-message-square' | 'bot-off' | 'bottle-wine' | 'bow-arrow' | 'box' | 'box-select' | 'boxes' | 'braces' | 'brackets' | 'brain' | 'brain-circuit' | 'brain-cog' | 'brick-wall' | 'brick-wall-fire' | 'brick-wall-shield' | 'briefcase' | 'briefcase-business' | 'briefcase-conveyor-belt' | 'briefcase-medical' | 'bring-to-front' | 'brush' | 'brush-cleaning' | 'bubbles' | 'bug' | 'bug-off' | 'bug-play' | 'building' | 'building-2' | 'bus' | 'bus-front' | 'cable' | 'cable-car' | 'cake' | 'cake-slice' | 'calculator' | 'calendar' | 'calendar-1' | 'calendar-arrow-down' | 'calendar-arrow-up' | 'calendar-check' | 'calendar-check-2' | 'calendar-clock' | 'calendar-cog' | 'calendar-days' | 'calendar-fold' | 'calendar-heart' | 'calendar-minus' | 'calendar-minus-2' | 'calendar-off' | 'calendar-plus' | 'calendar-plus-2' | 'calendar-range' | 'calendar-search' | 'calendar-sync' | 'calendar-x' | 'calendar-x-2' | 'calendars' | 'camera' | 'camera-off' | 'candlestick-chart' | 'candy' | 'candy-cane' | 'candy-off' | 'cannabis' | 'cannabis-off' | 'captions' | 'captions-off' | 'car' | 'car-front' | 'car-taxi-front' | 'caravan' | 'card-sim' | 'carrot' | 'case-lower' | 'case-sensitive' | 'case-upper' | 'cassette-tape' | 'cast' | 'castle' | 'cat' | 'cctv' | 'chart-area' | 'chart-bar' | 'chart-bar-big' | 'chart-bar-decreasing' | 'chart-bar-increasing' | 'chart-bar-stacked' | 'chart-candlestick' | 'chart-column' | 'chart-column-big' | 'chart-column-decreasing' | 'chart-column-increasing' | 'chart-column-stacked' | 'chart-gantt' | 'chart-line' | 'chart-network' | 'chart-no-axes-column' | 'chart-no-axes-column-decreasing' | 'chart-no-axes-column-increasing' | 'chart-no-axes-combined' | 'chart-no-axes-gantt' | 'chart-pie' | 'chart-scatter' | 'chart-spline' | 'check' | 'check-check' | 'check-circle' | 'check-circle-2' | 'check-line' | 'check-square' | 'check-square-2' | 'chef-hat' | 'cherry' | 'chess-bishop' | 'chess-king' | 'chess-knight' | 'chess-pawn' | 'chess-queen' | 'chess-rook' | 'chevron-down' | 'chevron-down-circle' | 'chevron-down-square' | 'chevron-first' | 'chevron-last' | 'chevron-left' | 'chevron-left-circle' | 'chevron-left-square' | 'chevron-right' | 'chevron-right-circle' | 'chevron-right-square' | 'chevron-up' | 'chevron-up-circle' | 'chevron-up-square' | 'chevrons-down' | 'chevrons-down-up' | 'chevrons-left' | 'chevrons-left-right' | 'chevrons-left-right-ellipsis' | 'chevrons-right' | 'chevrons-right-left' | 'chevrons-up' | 'chevrons-up-down' | 'chrome' | 'chromium' | 'church' | 'cigarette' | 'cigarette-off' | 'circle' | 'circle-alert' | 'circle-arrow-down' | 'circle-arrow-left' | 'circle-arrow-out-down-left' | 'circle-arrow-out-down-right' | 'circle-arrow-out-up-left' | 'circle-arrow-out-up-right' | 'circle-arrow-right' | 'circle-arrow-up' | 'circle-check' | 'circle-check-big' | 'circle-chevron-down' | 'circle-chevron-left' | 'circle-chevron-right' | 'circle-chevron-up' | 'circle-dashed' | 'circle-divide' | 'circle-dollar-sign' | 'circle-dot' | 'circle-dot-dashed' | 'circle-ellipsis' | 'circle-equal' | 'circle-fading-arrow-up' | 'circle-fading-plus' | 'circle-gauge' | 'circle-help' | 'circle-minus' | 'circle-off' | 'circle-parking' | 'circle-parking-off' | 'circle-pause' | 'circle-percent' | 'circle-pile' | 'circle-play' | 'circle-plus' | 'circle-pound-sterling' | 'circle-power' | 'circle-question-mark' | 'circle-slash' | 'circle-slash-2' | 'circle-slashed' | 'circle-small' | 'circle-star' | 'circle-stop' | 'circle-user' | 'circle-user-round' | 'circle-x' | 'circuit-board' | 'citrus' | 'clapperboard' | 'clipboard' | 'clipboard-check' | 'clipboard-clock' | 'clipboard-copy' | 'clipboard-edit' | 'clipboard-list' | 'clipboard-minus' | 'clipboard-paste' | 'clipboard-pen' | 'clipboard-pen-line' | 'clipboard-plus' | 'clipboard-signature' | 'clipboard-type' | 'clipboard-x' | 'clock' | 'clock-1' | 'clock-10' | 'clock-11' | 'clock-12' | 'clock-2' | 'clock-3' | 'clock-4' | 'clock-5' | 'clock-6' | 'clock-7' | 'clock-8' | 'clock-9' | 'clock-alert' | 'clock-arrow-down' | 'clock-arrow-up' | 'clock-check' | 'clock-fading' | 'clock-plus' | 'closed-caption' | 'cloud' | 'cloud-alert' | 'cloud-backup' | 'cloud-check' | 'cloud-cog' | 'cloud-download' | 'cloud-drizzle' | 'cloud-fog' | 'cloud-hail' | 'cloud-lightning' | 'cloud-moon' | 'cloud-moon-rain' | 'cloud-off' | 'cloud-rain' | 'cloud-rain-wind' | 'cloud-snow' | 'cloud-sun' | 'cloud-sun-rain' | 'cloud-sync' | 'cloud-upload' | 'cloudy' | 'clover' | 'club' | 'code' | 'code-2' | 'code-square' | 'code-xml' | 'codepen' | 'codesandbox' | 'coffee' | 'cog' | 'coins' | 'columns' | 'columns-2' | 'columns-3' | 'columns-3-cog' | 'columns-4' | 'columns-settings' | 'combine' | 'command' | 'compass' | 'component' | 'computer' | 'concierge-bell' | 'cone' | 'construction' | 'contact' | 'contact-2' | 'contact-round' | 'container' | 'contrast' | 'cookie' | 'cooking-pot' | 'copy' | 'copy-check' | 'copy-minus' | 'copy-plus' | 'copy-slash' | 'copy-x' | 'copyleft' | 'copyright' | 'corner-down-left' | 'corner-down-right' | 'corner-left-down' | 'corner-left-up' | 'corner-right-down' | 'corner-right-up' | 'corner-up-left' | 'corner-up-right' | 'cpu' | 'creative-commons' | 'credit-card' | 'croissant' | 'crop' | 'cross' | 'crosshair' | 'crown' | 'cuboid' | 'cup-soda' | 'curly-braces' | 'currency' | 'cylinder' | 'dam' | 'database' | 'database-backup' | 'database-search' | 'database-zap' | 'decimals-arrow-left' | 'decimals-arrow-right' | 'delete' | 'dessert' | 'diameter' | 'diamond' | 'diamond-minus' | 'diamond-percent' | 'diamond-plus' | 'dice-1' | 'dice-2' | 'dice-3' | 'dice-4' | 'dice-5' | 'dice-6' | 'dices' | 'diff' | 'disc' | 'disc-2' | 'disc-3' | 'disc-album' | 'divide' | 'divide-circle' | 'divide-square' | 'dna' | 'dna-off' | 'dock' | 'dog' | 'dollar-sign' | 'donut' | 'door-closed' | 'door-closed-locked' | 'door-open' | 'dot' | 'dot-square' | 'download' | 'download-cloud' | 'drafting-compass' | 'drama' | 'dribbble' | 'drill' | 'drone' | 'droplet' | 'droplet-off' | 'droplets' | 'drum' | 'drumstick' | 'dumbbell' | 'ear' | 'ear-off' | 'earth' | 'earth-lock' | 'eclipse' | 'edit' | 'edit-2' | 'edit-3' | 'egg' | 'egg-fried' | 'egg-off' | 'ellipsis' | 'ellipsis-vertical' | 'equal' | 'equal-approximately' | 'equal-not' | 'equal-square' | 'eraser' | 'ethernet-port' | 'euro' | 'ev-charger' | 'expand' | 'external-link' | 'eye' | 'eye-closed' | 'eye-off' | 'facebook' | 'factory' | 'fan' | 'fast-forward' | 'feather' | 'fence' | 'ferris-wheel' | 'figma' | 'file' | 'file-archive' | 'file-audio' | 'file-audio-2' | 'file-axis-3-d' | 'file-axis-3d' | 'file-badge' | 'file-badge-2' | 'file-bar-chart' | 'file-bar-chart-2' | 'file-box' | 'file-braces' | 'file-braces-corner' | 'file-chart-column' | 'file-chart-column-increasing' | 'file-chart-line' | 'file-chart-pie' | 'file-check' | 'file-check-2' | 'file-check-corner' | 'file-clock' | 'file-code' | 'file-code-2' | 'file-code-corner' | 'file-cog' | 'file-cog-2' | 'file-diff' | 'file-digit' | 'file-down' | 'file-edit' | 'file-exclamation-point' | 'file-headphone' | 'file-heart' | 'file-image' | 'file-input' | 'file-json' | 'file-json-2' | 'file-key' | 'file-key-2' | 'file-line-chart' | 'file-lock' | 'file-lock-2' | 'file-minus' | 'file-minus-2' | 'file-minus-corner' | 'file-music' | 'file-output' | 'file-pen' | 'file-pen-line' | 'file-pie-chart' | 'file-play' | 'file-plus' | 'file-plus-2' | 'file-plus-corner' | 'file-question' | 'file-question-mark' | 'file-scan' | 'file-search' | 'file-search-2' | 'file-search-corner' | 'file-signal' | 'file-signature' | 'file-sliders' | 'file-spreadsheet' | 'file-stack' | 'file-symlink' | 'file-terminal' | 'file-text' | 'file-type' | 'file-type-2' | 'file-type-corner' | 'file-up' | 'file-user' | 'file-video' | 'file-video-2' | 'file-video-camera' | 'file-volume' | 'file-volume-2' | 'file-warning' | 'file-x' | 'file-x-2' | 'file-x-corner' | 'files' | 'film' | 'filter' | 'filter-x' | 'fingerprint' | 'fingerprint-pattern' | 'fire-extinguisher' | 'fish' | 'fish-off' | 'fish-symbol' | 'fishing-hook' | 'flag' | 'flag-off' | 'flag-triangle-left' | 'flag-triangle-right' | 'flame' | 'flame-kindling' | 'flashlight' | 'flashlight-off' | 'flask-conical' | 'flask-conical-off' | 'flask-round' | 'flip-horizontal' | 'flip-horizontal-2' | 'flip-vertical' | 'flip-vertical-2' | 'flower' | 'flower-2' | 'focus' | 'fold-horizontal' | 'fold-vertical' | 'folder' | 'folder-archive' | 'folder-check' | 'folder-clock' | 'folder-closed' | 'folder-code' | 'folder-cog' | 'folder-cog-2' | 'folder-dot' | 'folder-down' | 'folder-edit' | 'folder-git' | 'folder-git-2' | 'folder-heart' | 'folder-input' | 'folder-kanban' | 'folder-key' | 'folder-lock' | 'folder-minus' | 'folder-open' | 'folder-open-dot' | 'folder-output' | 'folder-pen' | 'folder-plus' | 'folder-root' | 'folder-search' | 'folder-search-2' | 'folder-symlink' | 'folder-sync' | 'folder-tree' | 'folder-up' | 'folder-x' | 'folders' | 'footprints' | 'fork-knife' | 'fork-knife-crossed' | 'forklift' | 'form' | 'form-input' | 'forward' | 'frame' | 'framer' | 'frown' | 'fuel' | 'fullscreen' | 'function-square' | 'funnel' | 'funnel-plus' | 'funnel-x' | 'gallery-horizontal' | 'gallery-horizontal-end' | 'gallery-thumbnails' | 'gallery-vertical' | 'gallery-vertical-end' | 'gamepad' | 'gamepad-2' | 'gamepad-directional' | 'gantt-chart' | 'gantt-chart-square' | 'gauge' | 'gauge-circle' | 'gavel' | 'gem' | 'georgian-lari' | 'ghost' | 'gift' | 'git-branch' | 'git-branch-minus' | 'git-branch-plus' | 'git-commit' | 'git-commit-horizontal' | 'git-commit-vertical' | 'git-compare' | 'git-compare-arrows' | 'git-fork' | 'git-graph' | 'git-merge' | 'git-merge-conflict' | 'git-pull-request' | 'git-pull-request-arrow' | 'git-pull-request-closed' | 'git-pull-request-create' | 'git-pull-request-create-arrow' | 'git-pull-request-draft' | 'github' | 'gitlab' | 'glass-water' | 'glasses' | 'globe' | 'globe-2' | 'globe-lock' | 'globe-off' | 'globe-x' | 'goal' | 'gpu' | 'grab' | 'graduation-cap' | 'grape' | 'grid' | 'grid-2-x-2' | 'grid-2-x-2-check' | 'grid-2-x-2-plus' | 'grid-2-x-2-x' | 'grid-2x2' | 'grid-2x2-check' | 'grid-2x2-plus' | 'grid-2x2-x' | 'grid-3-x-3' | 'grid-3x2' | 'grid-3x3' | 'grip' | 'grip-horizontal' | 'grip-vertical' | 'group' | 'guitar' | 'ham' | 'hamburger' | 'hammer' | 'hand' | 'hand-coins' | 'hand-fist' | 'hand-grab' | 'hand-heart' | 'hand-helping' | 'hand-metal' | 'hand-platter' | 'handbag' | 'handshake' | 'hard-drive' | 'hard-drive-download' | 'hard-drive-upload' | 'hard-hat' | 'hash' | 'hat-glasses' | 'haze' | 'hd' | 'hdmi-port' | 'heading' | 'heading-1' | 'heading-2' | 'heading-3' | 'heading-4' | 'heading-5' | 'heading-6' | 'headphone-off' | 'headphones' | 'headset' | 'heart' | 'heart-crack' | 'heart-handshake' | 'heart-minus' | 'heart-off' | 'heart-plus' | 'heart-pulse' | 'heater' | 'helicopter' | 'help-circle' | 'helping-hand' | 'hexagon' | 'highlighter' | 'history' | 'home' | 'hop' | 'hop-off' | 'hospital' | 'hotel' | 'hourglass' | 'house' | 'house-heart' | 'house-plug' | 'house-plus' | 'house-wifi' | 'ice-cream' | 'ice-cream-2' | 'ice-cream-bowl' | 'ice-cream-cone' | 'id-card' | 'id-card-lanyard' | 'image' | 'image-down' | 'image-minus' | 'image-off' | 'image-play' | 'image-plus' | 'image-up' | 'image-upscale' | 'images' | 'import' | 'inbox' | 'indent' | 'indent-decrease' | 'indent-increase' | 'indian-rupee' | 'infinity' | 'info' | 'inspect' | 'inspection-panel' | 'instagram' | 'italic' | 'iteration-ccw' | 'iteration-cw' | 'japanese-yen' | 'joystick' | 'kanban' | 'kanban-square' | 'kanban-square-dashed' | 'kayak' | 'key' | 'key-round' | 'key-square' | 'keyboard' | 'keyboard-music' | 'keyboard-off' | 'lamp' | 'lamp-ceiling' | 'lamp-desk' | 'lamp-floor' | 'lamp-wall-down' | 'lamp-wall-up' | 'land-plot' | 'landmark' | 'languages' | 'laptop' | 'laptop-2' | 'laptop-minimal' | 'laptop-minimal-check' | 'lasso' | 'lasso-select' | 'laugh' | 'layers' | 'layers-2' | 'layers-3' | 'layers-plus' | 'layout' | 'layout-dashboard' | 'layout-grid' | 'layout-list' | 'layout-panel-left' | 'layout-panel-top' | 'layout-template' | 'leaf' | 'leafy-green' | 'lectern' | 'lens-concave' | 'lens-convex' | 'letter-text' | 'library' | 'library-big' | 'library-square' | 'life-buoy' | 'ligature' | 'lightbulb' | 'lightbulb-off' | 'line-chart' | 'line-dot-right-horizontal' | 'line-squiggle' | 'link' | 'link-2' | 'link-2-off' | 'linkedin' | 'list' | 'list-check' | 'list-checks' | 'list-chevrons-down-up' | 'list-chevrons-up-down' | 'list-collapse' | 'list-end' | 'list-filter' | 'list-filter-plus' | 'list-indent-decrease' | 'list-indent-increase' | 'list-minus' | 'list-music' | 'list-ordered' | 'list-plus' | 'list-restart' | 'list-start' | 'list-todo' | 'list-tree' | 'list-video' | 'list-x' | 'loader' | 'loader-2' | 'loader-circle' | 'loader-pinwheel' | 'locate' | 'locate-fixed' | 'locate-off' | 'location-edit' | 'lock' | 'lock-keyhole' | 'lock-keyhole-open' | 'lock-open' | 'log-in' | 'log-out' | 'logs' | 'lollipop' | 'luggage' | 'm-square' | 'magnet' | 'mail' | 'mail-check' | 'mail-minus' | 'mail-open' | 'mail-plus' | 'mail-question' | 'mail-question-mark' | 'mail-search' | 'mail-warning' | 'mail-x' | 'mailbox' | 'mails' | 'map' | 'map-minus' | 'map-pin' | 'map-pin-check' | 'map-pin-check-inside' | 'map-pin-house' | 'map-pin-minus' | 'map-pin-minus-inside' | 'map-pin-off' | 'map-pin-pen' | 'map-pin-plus' | 'map-pin-plus-inside' | 'map-pin-x' | 'map-pin-x-inside' | 'map-pinned' | 'map-plus' | 'mars' | 'mars-stroke' | 'martini' | 'maximize' | 'maximize-2' | 'medal' | 'megaphone' | 'megaphone-off' | 'meh' | 'memory-stick' | 'menu' | 'menu-square' | 'merge' | 'message-circle' | 'message-circle-check' | 'message-circle-code' | 'message-circle-dashed' | 'message-circle-heart' | 'message-circle-more' | 'message-circle-off' | 'message-circle-plus' | 'message-circle-question' | 'message-circle-question-mark' | 'message-circle-reply' | 'message-circle-warning' | 'message-circle-x' | 'message-square' | 'message-square-code' | 'message-square-dashed' | 'message-square-diff' | 'message-square-dot' | 'message-square-heart' | 'message-square-lock' | 'message-square-more' | 'message-square-off' | 'message-square-plus' | 'message-square-quote' | 'message-square-reply' | 'message-square-share' | 'message-square-text' | 'message-square-warning' | 'message-square-x' | 'messages-square' | 'mic' | 'mic-2' | 'mic-off' | 'mic-vocal' | 'microchip' | 'microscope' | 'microwave' | 'milestone' | 'milk' | 'milk-off' | 'minimize' | 'minimize-2' | 'minus' | 'minus-circle' | 'minus-square' | 'mirror-rectangular' | 'mirror-round' | 'monitor' | 'monitor-check' | 'monitor-cloud' | 'monitor-cog' | 'monitor-dot' | 'monitor-down' | 'monitor-off' | 'monitor-pause' | 'monitor-play' | 'monitor-smartphone' | 'monitor-speaker' | 'monitor-stop' | 'monitor-up' | 'monitor-x' | 'moon' | 'moon-star' | 'more-horizontal' | 'more-vertical' | 'motorbike' | 'mountain' | 'mountain-snow' | 'mouse' | 'mouse-left' | 'mouse-off' | 'mouse-pointer' | 'mouse-pointer-2' | 'mouse-pointer-2-off' | 'mouse-pointer-ban' | 'mouse-pointer-click' | 'mouse-pointer-square-dashed' | 'move' | 'move-3-d' | 'move-3d' | 'move-diagonal' | 'move-diagonal-2' | 'move-down' | 'move-down-left' | 'move-down-right' | 'move-horizontal' | 'move-left' | 'move-right' | 'move-up' | 'move-up-left' | 'move-up-right' | 'move-vertical' | 'music' | 'music-2' | 'music-3' | 'music-4' | 'navigation' | 'navigation-2' | 'navigation-2-off' | 'navigation-off' | 'network' | 'newspaper' | 'nfc' | 'non-binary' | 'notebook' | 'notebook-pen' | 'notebook-tabs' | 'notebook-text' | 'notepad-text' | 'notepad-text-dashed' | 'nut' | 'nut-off' | 'octagon' | 'octagon-alert' | 'octagon-minus' | 'octagon-pause' | 'octagon-x' | 'omega' | 'option' | 'orbit' | 'origami' | 'outdent' | 'package' | 'package-2' | 'package-check' | 'package-minus' | 'package-open' | 'package-plus' | 'package-search' | 'package-x' | 'paint-bucket' | 'paint-roller' | 'paintbrush' | 'paintbrush-2' | 'paintbrush-vertical' | 'palette' | 'palmtree' | 'panda' | 'panel-bottom' | 'panel-bottom-close' | 'panel-bottom-dashed' | 'panel-bottom-inactive' | 'panel-bottom-open' | 'panel-left' | 'panel-left-close' | 'panel-left-dashed' | 'panel-left-inactive' | 'panel-left-open' | 'panel-left-right-dashed' | 'panel-right' | 'panel-right-close' | 'panel-right-dashed' | 'panel-right-inactive' | 'panel-right-open' | 'panel-top' | 'panel-top-bottom-dashed' | 'panel-top-close' | 'panel-top-dashed' | 'panel-top-inactive' | 'panel-top-open' | 'panels-left-bottom' | 'panels-left-right' | 'panels-right-bottom' | 'panels-top-bottom' | 'panels-top-left' | 'paperclip' | 'parentheses' | 'parking-circle' | 'parking-circle-off' | 'parking-meter' | 'parking-square' | 'parking-square-off' | 'party-popper' | 'pause' | 'pause-circle' | 'pause-octagon' | 'paw-print' | 'pc-case' | 'pen' | 'pen-box' | 'pen-line' | 'pen-off' | 'pen-square' | 'pen-tool' | 'pencil' | 'pencil-line' | 'pencil-off' | 'pencil-ruler' | 'pentagon' | 'percent' | 'percent-circle' | 'percent-diamond' | 'percent-square' | 'person-standing' | 'philippine-peso' | 'phone' | 'phone-call' | 'phone-forwarded' | 'phone-incoming' | 'phone-missed' | 'phone-off' | 'phone-outgoing' | 'pi' | 'pi-square' | 'piano' | 'pickaxe' | 'picture-in-picture' | 'picture-in-picture-2' | 'pie-chart' | 'piggy-bank' | 'pilcrow' | 'pilcrow-left' | 'pilcrow-right' | 'pilcrow-square' | 'pill' | 'pill-bottle' | 'pin' | 'pin-off' | 'pipette' | 'pizza' | 'plane' | 'plane-landing' | 'plane-takeoff' | 'play' | 'play-circle' | 'play-square' | 'plug' | 'plug-2' | 'plug-zap' | 'plug-zap-2' | 'plus' | 'plus-circle' | 'plus-square' | 'pocket' | 'pocket-knife' | 'podcast' | 'pointer' | 'pointer-off' | 'popcorn' | 'popsicle' | 'pound-sterling' | 'power' | 'power-circle' | 'power-off' | 'power-square' | 'presentation' | 'printer' | 'printer-check' | 'printer-x' | 'projector' | 'proportions' | 'puzzle' | 'pyramid' | 'qr-code' | 'quote' | 'rabbit' | 'radar' | 'radiation' | 'radical' | 'radio' | 'radio-receiver' | 'radio-tower' | 'radius' | 'rail-symbol' | 'rainbow' | 'rat' | 'ratio' | 'receipt' | 'receipt-cent' | 'receipt-euro' | 'receipt-indian-rupee' | 'receipt-japanese-yen' | 'receipt-pound-sterling' | 'receipt-russian-ruble' | 'receipt-swiss-franc' | 'receipt-text' | 'receipt-turkish-lira' | 'rectangle-circle' | 'rectangle-ellipsis' | 'rectangle-goggles' | 'rectangle-horizontal' | 'rectangle-vertical' | 'recycle' | 'redo' | 'redo-2' | 'redo-dot' | 'refresh-ccw' | 'refresh-ccw-dot' | 'refresh-cw' | 'refresh-cw-off' | 'refrigerator' | 'regex' | 'remove-formatting' | 'repeat' | 'repeat-1' | 'repeat-2' | 'replace' | 'replace-all' | 'reply' | 'reply-all' | 'rewind' | 'ribbon' | 'rocket' | 'rocking-chair' | 'roller-coaster' | 'rose' | 'rotate-3-d' | 'rotate-3d' | 'rotate-ccw' | 'rotate-ccw-key' | 'rotate-ccw-square' | 'rotate-cw' | 'rotate-cw-square' | 'route' | 'route-off' | 'router' | 'rows' | 'rows-2' | 'rows-3' | 'rows-4' | 'rss' | 'ruler' | 'ruler-dimension-line' | 'russian-ruble' | 'sailboat' | 'salad' | 'sandwich' | 'satellite' | 'satellite-dish' | 'saudi-riyal' | 'save' | 'save-all' | 'save-off' | 'scale' | 'scale-3-d' | 'scale-3d' | 'scaling' | 'scan' | 'scan-barcode' | 'scan-eye' | 'scan-face' | 'scan-heart' | 'scan-line' | 'scan-qr-code' | 'scan-search' | 'scan-text' | 'scatter-chart' | 'school' | 'school-2' | 'scissors' | 'scissors-line-dashed' | 'scissors-square' | 'scissors-square-dashed-bottom' | 'scooter' | 'screen-share' | 'screen-share-off' | 'scroll' | 'scroll-text' | 'search' | 'search-alert' | 'search-check' | 'search-code' | 'search-slash' | 'search-x' | 'section' | 'send' | 'send-horizonal' | 'send-horizontal' | 'send-to-back' | 'separator-horizontal' | 'separator-vertical' | 'server' | 'server-cog' | 'server-crash' | 'server-off' | 'settings' | 'settings-2' | 'shapes' | 'share' | 'share-2' | 'sheet' | 'shell' | 'shelving-unit' | 'shield' | 'shield-alert' | 'shield-ban' | 'shield-check' | 'shield-close' | 'shield-ellipsis' | 'shield-half' | 'shield-minus' | 'shield-off' | 'shield-plus' | 'shield-question' | 'shield-question-mark' | 'shield-user' | 'shield-x' | 'ship' | 'ship-wheel' | 'shirt' | 'shopping-bag' | 'shopping-basket' | 'shopping-cart' | 'shovel' | 'shower-head' | 'shredder' | 'shrimp' | 'shrink' | 'shrub' | 'shuffle' | 'sidebar' | 'sidebar-close' | 'sidebar-open' | 'sigma' | 'sigma-square' | 'signal' | 'signal-high' | 'signal-low' | 'signal-medium' | 'signal-zero' | 'signature' | 'signpost' | 'signpost-big' | 'siren' | 'skip-back' | 'skip-forward' | 'skull' | 'slack' | 'slash' | 'slash-square' | 'slice' | 'sliders' | 'sliders-horizontal' | 'sliders-vertical' | 'smartphone' | 'smartphone-charging' | 'smartphone-nfc' | 'smile' | 'smile-plus' | 'snail' | 'snowflake' | 'soap-dispenser-droplet' | 'sofa' | 'solar-panel' | 'sort-asc' | 'sort-desc' | 'soup' | 'space' | 'spade' | 'sparkle' | 'sparkles' | 'speaker' | 'speech' | 'spell-check' | 'spell-check-2' | 'spline' | 'spline-pointer' | 'split' | 'split-square-horizontal' | 'split-square-vertical' | 'spool' | 'spotlight' | 'spray-can' | 'sprout' | 'square' | 'square-activity' | 'square-arrow-down' | 'square-arrow-down-left' | 'square-arrow-down-right' | 'square-arrow-left' | 'square-arrow-out-down-left' | 'square-arrow-out-down-right' | 'square-arrow-out-up-left' | 'square-arrow-out-up-right' | 'square-arrow-right' | 'square-arrow-up' | 'square-arrow-up-left' | 'square-arrow-up-right' | 'square-asterisk' | 'square-bottom-dashed-scissors' | 'square-chart-gantt' | 'square-check' | 'square-check-big' | 'square-chevron-down' | 'square-chevron-left' | 'square-chevron-right' | 'square-chevron-up' | 'square-code' | 'square-dashed' | 'square-dashed-bottom' | 'square-dashed-bottom-code' | 'square-dashed-kanban' | 'square-dashed-mouse-pointer' | 'square-dashed-top-solid' | 'square-divide' | 'square-dot' | 'square-equal' | 'square-function' | 'square-gantt-chart' | 'square-kanban' | 'square-library' | 'square-m' | 'square-menu' | 'square-minus' | 'square-mouse-pointer' | 'square-parking' | 'square-parking-off' | 'square-pause' | 'square-pen' | 'square-percent' | 'square-pi' | 'square-pilcrow' | 'square-play' | 'square-plus' | 'square-power' | 'square-radical' | 'square-round-corner' | 'square-scissors' | 'square-sigma' | 'square-slash' | 'square-split-horizontal' | 'square-split-vertical' | 'square-square' | 'square-stack' | 'square-star' | 'square-stop' | 'square-terminal' | 'square-user' | 'square-user-round' | 'square-x' | 'squares-exclude' | 'squares-intersect' | 'squares-subtract' | 'squares-unite' | 'squircle' | 'squircle-dashed' | 'squirrel' | 'stamp' | 'star' | 'star-half' | 'star-off' | 'stars' | 'step-back' | 'step-forward' | 'stethoscope' | 'sticker' | 'sticky-note' | 'stone' | 'stop-circle' | 'store' | 'stretch-horizontal' | 'stretch-vertical' | 'strikethrough' | 'subscript' | 'subtitles' | 'sun' | 'sun-dim' | 'sun-medium' | 'sun-moon' | 'sun-snow' | 'sunrise' | 'sunset' | 'superscript' | 'swatch-book' | 'swiss-franc' | 'switch-camera' | 'sword' | 'swords' | 'syringe' | 'table' | 'table-2' | 'table-cells-merge' | 'table-cells-split' | 'table-columns-split' | 'table-config' | 'table-of-contents' | 'table-properties' | 'table-rows-split' | 'tablet' | 'tablet-smartphone' | 'tablets' | 'tag' | 'tags' | 'tally-1' | 'tally-2' | 'tally-3' | 'tally-4' | 'tally-5' | 'tangent' | 'target' | 'telescope' | 'tent' | 'tent-tree' | 'terminal' | 'terminal-square' | 'test-tube' | 'test-tube-2' | 'test-tube-diagonal' | 'test-tubes' | 'text' | 'text-align-center' | 'text-align-end' | 'text-align-justify' | 'text-align-start' | 'text-cursor' | 'text-cursor-input' | 'text-initial' | 'text-quote' | 'text-search' | 'text-select' | 'text-selection' | 'text-wrap' | 'theater' | 'thermometer' | 'thermometer-snowflake' | 'thermometer-sun' | 'thumbs-down' | 'thumbs-up' | 'ticket' | 'ticket-check' | 'ticket-minus' | 'ticket-percent' | 'ticket-plus' | 'ticket-slash' | 'ticket-x' | 'tickets' | 'tickets-plane' | 'timer' | 'timer-off' | 'timer-reset' | 'toggle-left' | 'toggle-right' | 'toilet' | 'tool-case' | 'toolbox' | 'tornado' | 'torus' | 'touchpad' | 'touchpad-off' | 'towel-rack' | 'tower-control' | 'toy-brick' | 'tractor' | 'traffic-cone' | 'train' | 'train-front' | 'train-front-tunnel' | 'train-track' | 'tram-front' | 'transgender' | 'trash' | 'trash-2' | 'tree-deciduous' | 'tree-palm' | 'tree-pine' | 'trees' | 'trello' | 'trending-down' | 'trending-up' | 'trending-up-down' | 'triangle' | 'triangle-alert' | 'triangle-dashed' | 'triangle-right' | 'trophy' | 'truck' | 'truck-electric' | 'turkish-lira' | 'turntable' | 'turtle' | 'tv' | 'tv-2' | 'tv-minimal' | 'tv-minimal-play' | 'twitch' | 'twitter' | 'type' | 'type-outline' | 'umbrella' | 'umbrella-off' | 'underline' | 'undo' | 'undo-2' | 'undo-dot' | 'unfold-horizontal' | 'unfold-vertical' | 'ungroup' | 'university' | 'unlink' | 'unlink-2' | 'unlock' | 'unlock-keyhole' | 'unplug' | 'upload' | 'upload-cloud' | 'usb' | 'user' | 'user-2' | 'user-check' | 'user-check-2' | 'user-circle' | 'user-circle-2' | 'user-cog' | 'user-cog-2' | 'user-key' | 'user-lock' | 'user-minus' | 'user-minus-2' | 'user-pen' | 'user-plus' | 'user-plus-2' | 'user-round' | 'user-round-check' | 'user-round-cog' | 'user-round-key' | 'user-round-minus' | 'user-round-pen' | 'user-round-plus' | 'user-round-search' | 'user-round-x' | 'user-search' | 'user-square' | 'user-square-2' | 'user-star' | 'user-x' | 'user-x-2' | 'users' | 'users-2' | 'users-round' | 'utensils' | 'utensils-crossed' | 'utility-pole' | 'van' | 'variable' | 'vault' | 'vector-square' | 'vegan' | 'venetian-mask' | 'venus' | 'venus-and-mars' | 'verified' | 'vibrate' | 'vibrate-off' | 'video' | 'video-off' | 'videotape' | 'view' | 'voicemail' | 'volleyball' | 'volume' | 'volume-1' | 'volume-2' | 'volume-off' | 'volume-x' | 'vote' | 'wallet' | 'wallet-2' | 'wallet-cards' | 'wallet-minimal' | 'wallpaper' | 'wand' | 'wand-2' | 'wand-sparkles' | 'warehouse' | 'washing-machine' | 'watch' | 'waves' | 'waves-arrow-down' | 'waves-arrow-up' | 'waves-ladder' | 'waypoints' | 'webcam' | 'webhook' | 'webhook-off' | 'weight' | 'weight-tilde' | 'wheat' | 'wheat-off' | 'whole-word' | 'wifi' | 'wifi-cog' | 'wifi-high' | 'wifi-low' | 'wifi-off' | 'wifi-pen' | 'wifi-sync' | 'wifi-zero' | 'wind' | 'wind-arrow-down' | 'wine' | 'wine-off' | 'workflow' | 'worm' | 'wrap-text' | 'wrench' | 'x' | 'x-circle' | 'x-line-top' | 'x-octagon' | 'x-square' | 'youtube' | 'zap' | 'zap-off' | 'zoom-in' | 'zoom-out';
|
|
8
8
|
/** Runtime set of all valid Lucide icon names for build-time validation */
|
package/dist/page-state.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Safe deep property access on `globalThis` using dot-notation path.
|
|
3
|
-
* Returns `undefined` if any segment in the path is missing or if a getter throws.
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* const token = getPageGlobal('TS.boot_data.api_token') as string | undefined;
|
|
7
|
-
*/
|
|
8
1
|
export declare const getPageGlobal: (path: string) => unknown;
|
|
9
2
|
/**
|
|
10
3
|
* Returns the current page URL (`window.location.href`).
|
package/dist/page-state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-state.d.ts","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"page-state.d.ts","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAc5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAA8B,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,MAAwB,CAAC"}
|
package/dist/page-state.js
CHANGED
|
@@ -8,12 +8,17 @@
|
|
|
8
8
|
* @example
|
|
9
9
|
* const token = getPageGlobal('TS.boot_data.api_token') as string | undefined;
|
|
10
10
|
*/
|
|
11
|
+
const BLOCKED_SEGMENTS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
11
12
|
export const getPageGlobal = (path) => {
|
|
12
13
|
try {
|
|
13
14
|
const segments = path.split('.');
|
|
14
15
|
let current = globalThis;
|
|
15
16
|
for (const segment of segments) {
|
|
16
|
-
if (current === null || current === undefined
|
|
17
|
+
if (current === null || current === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
if (typeof current !== 'object' && typeof current !== 'function')
|
|
20
|
+
return undefined;
|
|
21
|
+
if (BLOCKED_SEGMENTS.has(segment))
|
|
17
22
|
return undefined;
|
|
18
23
|
current = current[segment];
|
|
19
24
|
}
|
package/dist/page-state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-state.js","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,GAAY,UAAU,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"page-state.js","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,GAAY,UAAU,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAChE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,UAAU;gBAAE,OAAO,SAAS,CAAC;YACnF,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO,SAAS,CAAC;YACpD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export declare const getLocalStorage: (key: string) => string | null;
|
|
6
6
|
/**
|
|
7
|
-
* Writes a value to localStorage.
|
|
8
|
-
* (e.g., SecurityError in sandboxed iframes or when storage is full).
|
|
7
|
+
* Writes a value to localStorage. Logs a warning if storage access throws
|
|
8
|
+
* (e.g., SecurityError in sandboxed iframes or QuotaExceededError when storage is full).
|
|
9
9
|
*/
|
|
10
10
|
export declare const setLocalStorage: (key: string, value: string) => void;
|
|
11
11
|
/**
|
|
@@ -14,23 +14,24 @@ export declare const setLocalStorage: (key: string, value: string) => void;
|
|
|
14
14
|
*/
|
|
15
15
|
export declare const getSessionStorage: (key: string) => string | null;
|
|
16
16
|
/**
|
|
17
|
-
* Writes a value to sessionStorage.
|
|
18
|
-
* (e.g., SecurityError in sandboxed iframes or when storage is full).
|
|
17
|
+
* Writes a value to sessionStorage. Logs a warning if storage access throws
|
|
18
|
+
* (e.g., SecurityError in sandboxed iframes or QuotaExceededError when storage is full).
|
|
19
19
|
*/
|
|
20
20
|
export declare const setSessionStorage: (key: string, value: string) => void;
|
|
21
21
|
/**
|
|
22
|
-
* Removes a key from localStorage.
|
|
22
|
+
* Removes a key from localStorage. Logs a warning if storage access throws
|
|
23
23
|
* (e.g., SecurityError in sandboxed iframes).
|
|
24
24
|
*/
|
|
25
25
|
export declare const removeLocalStorage: (key: string) => void;
|
|
26
26
|
/**
|
|
27
|
-
* Removes a key from sessionStorage.
|
|
27
|
+
* Removes a key from sessionStorage. Logs a warning if storage access throws
|
|
28
28
|
* (e.g., SecurityError in sandboxed iframes).
|
|
29
29
|
*/
|
|
30
30
|
export declare const removeSessionStorage: (key: string) => void;
|
|
31
31
|
/**
|
|
32
32
|
* Reads a cookie by name from `document.cookie`. Handles URI-encoded values.
|
|
33
|
-
* Returns null if the cookie is not found
|
|
33
|
+
* Returns null if the cookie is not found or if cookie access throws
|
|
34
|
+
* (e.g., SecurityError in sandboxed iframes).
|
|
34
35
|
*/
|
|
35
36
|
export declare const getCookie: (name: string) => string | null;
|
|
36
37
|
//# sourceMappingURL=storage.d.ts.map
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,IAM5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,IAM9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,IAMhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,IAMlD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAiBjD,CAAC"}
|
package/dist/storage.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// ---------------------------------------------------------------------------
|
|
2
2
|
// Storage utilities for plugin authors
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
|
+
import { log } from './log.js';
|
|
4
5
|
/**
|
|
5
6
|
* Reads a value from localStorage. Returns null if the key is not found or
|
|
6
7
|
* if storage access throws (e.g., SecurityError in sandboxed iframes).
|
|
@@ -14,15 +15,15 @@ export const getLocalStorage = (key) => {
|
|
|
14
15
|
}
|
|
15
16
|
};
|
|
16
17
|
/**
|
|
17
|
-
* Writes a value to localStorage.
|
|
18
|
-
* (e.g., SecurityError in sandboxed iframes or when storage is full).
|
|
18
|
+
* Writes a value to localStorage. Logs a warning if storage access throws
|
|
19
|
+
* (e.g., SecurityError in sandboxed iframes or QuotaExceededError when storage is full).
|
|
19
20
|
*/
|
|
20
21
|
export const setLocalStorage = (key, value) => {
|
|
21
22
|
try {
|
|
22
23
|
localStorage.setItem(key, value);
|
|
23
24
|
}
|
|
24
|
-
catch {
|
|
25
|
-
|
|
25
|
+
catch (error) {
|
|
26
|
+
log.warn(`setLocalStorage failed for key "${key}"`, error);
|
|
26
27
|
}
|
|
27
28
|
};
|
|
28
29
|
/**
|
|
@@ -38,58 +39,64 @@ export const getSessionStorage = (key) => {
|
|
|
38
39
|
}
|
|
39
40
|
};
|
|
40
41
|
/**
|
|
41
|
-
* Writes a value to sessionStorage.
|
|
42
|
-
* (e.g., SecurityError in sandboxed iframes or when storage is full).
|
|
42
|
+
* Writes a value to sessionStorage. Logs a warning if storage access throws
|
|
43
|
+
* (e.g., SecurityError in sandboxed iframes or QuotaExceededError when storage is full).
|
|
43
44
|
*/
|
|
44
45
|
export const setSessionStorage = (key, value) => {
|
|
45
46
|
try {
|
|
46
47
|
sessionStorage.setItem(key, value);
|
|
47
48
|
}
|
|
48
|
-
catch {
|
|
49
|
-
|
|
49
|
+
catch (error) {
|
|
50
|
+
log.warn(`setSessionStorage failed for key "${key}"`, error);
|
|
50
51
|
}
|
|
51
52
|
};
|
|
52
53
|
/**
|
|
53
|
-
* Removes a key from localStorage.
|
|
54
|
+
* Removes a key from localStorage. Logs a warning if storage access throws
|
|
54
55
|
* (e.g., SecurityError in sandboxed iframes).
|
|
55
56
|
*/
|
|
56
57
|
export const removeLocalStorage = (key) => {
|
|
57
58
|
try {
|
|
58
59
|
localStorage.removeItem(key);
|
|
59
60
|
}
|
|
60
|
-
catch {
|
|
61
|
-
|
|
61
|
+
catch (error) {
|
|
62
|
+
log.warn(`removeLocalStorage failed for key "${key}"`, error);
|
|
62
63
|
}
|
|
63
64
|
};
|
|
64
65
|
/**
|
|
65
|
-
* Removes a key from sessionStorage.
|
|
66
|
+
* Removes a key from sessionStorage. Logs a warning if storage access throws
|
|
66
67
|
* (e.g., SecurityError in sandboxed iframes).
|
|
67
68
|
*/
|
|
68
69
|
export const removeSessionStorage = (key) => {
|
|
69
70
|
try {
|
|
70
71
|
sessionStorage.removeItem(key);
|
|
71
72
|
}
|
|
72
|
-
catch {
|
|
73
|
-
|
|
73
|
+
catch (error) {
|
|
74
|
+
log.warn(`removeSessionStorage failed for key "${key}"`, error);
|
|
74
75
|
}
|
|
75
76
|
};
|
|
76
77
|
/**
|
|
77
78
|
* Reads a cookie by name from `document.cookie`. Handles URI-encoded values.
|
|
78
|
-
* Returns null if the cookie is not found
|
|
79
|
+
* Returns null if the cookie is not found or if cookie access throws
|
|
80
|
+
* (e.g., SecurityError in sandboxed iframes).
|
|
79
81
|
*/
|
|
80
82
|
export const getCookie = (name) => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
try {
|
|
84
|
+
const prefix = `${name}=`;
|
|
85
|
+
const entries = document.cookie.split('; ');
|
|
86
|
+
for (const entry of entries) {
|
|
87
|
+
if (entry.startsWith(prefix)) {
|
|
88
|
+
try {
|
|
89
|
+
return decodeURIComponent(entry.slice(prefix.length));
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return entry.slice(prefix.length);
|
|
93
|
+
}
|
|
90
94
|
}
|
|
91
95
|
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
92
100
|
}
|
|
93
|
-
return null;
|
|
94
101
|
};
|
|
95
102
|
//# sourceMappingURL=storage.js.map
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAiB,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;IAClE,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/timing.d.ts
CHANGED
|
@@ -15,11 +15,18 @@ export interface WaitUntilOptions {
|
|
|
15
15
|
interval?: number;
|
|
16
16
|
/** Timeout in milliseconds (default: 10000) */
|
|
17
17
|
timeout?: number;
|
|
18
|
+
/** AbortSignal to cancel polling early */
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}
|
|
21
|
+
export interface SleepOptions {
|
|
22
|
+
/** AbortSignal to cancel the sleep early */
|
|
23
|
+
signal?: AbortSignal;
|
|
18
24
|
}
|
|
19
25
|
/**
|
|
20
|
-
* Returns a promise that resolves after `ms` milliseconds.
|
|
26
|
+
* Returns a promise that resolves after `ms` milliseconds. Optionally accepts
|
|
27
|
+
* an AbortSignal to cancel the sleep early.
|
|
21
28
|
*/
|
|
22
|
-
export declare const sleep: (ms: number) => Promise<void>;
|
|
29
|
+
export declare const sleep: (ms: number, opts?: SleepOptions) => Promise<void>;
|
|
23
30
|
/**
|
|
24
31
|
* Retries `fn` on failure up to `maxAttempts` times. Waits `delay` ms between
|
|
25
32
|
* attempts (doubled each time when `backoff` is true). Re-throws the last
|
package/dist/timing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../src/timing.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../src/timing.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,EAAE,OAAO,YAAY,KAAG,OAAO,CAAC,IAAI,CAsBnE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAU,CAAC,EAAE,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,YAAY,KAAG,OAAO,CAAC,CAAC,CAoDnF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAwD5G,CAAC"}
|
package/dist/timing.js
CHANGED
|
@@ -2,9 +2,27 @@
|
|
|
2
2
|
// Retry / timing utilities for plugin authors
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
/**
|
|
5
|
-
* Returns a promise that resolves after `ms` milliseconds.
|
|
5
|
+
* Returns a promise that resolves after `ms` milliseconds. Optionally accepts
|
|
6
|
+
* an AbortSignal to cancel the sleep early.
|
|
6
7
|
*/
|
|
7
|
-
export const sleep = (ms) =>
|
|
8
|
+
export const sleep = (ms, opts) => {
|
|
9
|
+
const signal = opts?.signal;
|
|
10
|
+
if (!signal)
|
|
11
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
12
|
+
if (signal.aborted)
|
|
13
|
+
return Promise.reject(signal.reason instanceof Error ? signal.reason : new DOMException('sleep aborted', 'AbortError'));
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const timer = setTimeout(() => {
|
|
16
|
+
signal.removeEventListener('abort', onAbort);
|
|
17
|
+
resolve();
|
|
18
|
+
}, ms);
|
|
19
|
+
const onAbort = () => {
|
|
20
|
+
clearTimeout(timer);
|
|
21
|
+
reject(signal.reason instanceof Error ? signal.reason : new DOMException('sleep aborted', 'AbortError'));
|
|
22
|
+
};
|
|
23
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
24
|
+
});
|
|
25
|
+
};
|
|
8
26
|
/**
|
|
9
27
|
* Retries `fn` on failure up to `maxAttempts` times. Waits `delay` ms between
|
|
10
28
|
* attempts (doubled each time when `backoff` is true). Re-throws the last
|
|
@@ -12,6 +30,9 @@ export const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
|
12
30
|
*/
|
|
13
31
|
export const retry = async (fn, opts) => {
|
|
14
32
|
const maxAttempts = opts?.maxAttempts ?? 3;
|
|
33
|
+
if (!Number.isFinite(maxAttempts) || maxAttempts < 1) {
|
|
34
|
+
throw new Error(`retry: maxAttempts must be a finite number >= 1, got ${maxAttempts}`);
|
|
35
|
+
}
|
|
15
36
|
const baseDelay = opts?.delay ?? 1_000;
|
|
16
37
|
const backoff = opts?.backoff ?? false;
|
|
17
38
|
const maxDelay = opts?.maxDelay ?? 30_000;
|
|
@@ -61,6 +82,10 @@ export const retry = async (fn, opts) => {
|
|
|
61
82
|
export const waitUntil = (predicate, opts) => {
|
|
62
83
|
const interval = opts?.interval ?? 200;
|
|
63
84
|
const timeout = opts?.timeout ?? 10_000;
|
|
85
|
+
const signal = opts?.signal;
|
|
86
|
+
const abortReason = () => (signal?.reason instanceof Error ? signal.reason : new Error('waitUntil: aborted'));
|
|
87
|
+
if (signal?.aborted)
|
|
88
|
+
return Promise.reject(abortReason());
|
|
64
89
|
return new Promise((resolve, reject) => {
|
|
65
90
|
let settled = false;
|
|
66
91
|
let poller;
|
|
@@ -69,7 +94,15 @@ export const waitUntil = (predicate, opts) => {
|
|
|
69
94
|
settled = true;
|
|
70
95
|
clearTimeout(timer);
|
|
71
96
|
clearTimeout(poller);
|
|
97
|
+
signal?.removeEventListener('abort', onAbort);
|
|
98
|
+
};
|
|
99
|
+
const onAbort = () => {
|
|
100
|
+
if (isSettled())
|
|
101
|
+
return;
|
|
102
|
+
cleanup();
|
|
103
|
+
reject(abortReason());
|
|
72
104
|
};
|
|
105
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
73
106
|
const timer = setTimeout(() => {
|
|
74
107
|
if (isSettled())
|
|
75
108
|
return;
|
package/dist/timing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../src/timing.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;
|
|
1
|
+
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../src/timing.ts"],"names":[],"mappings":"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"}
|