dropcap 1.4.0 → 1.6.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 (104) hide show
  1. package/dist/{idb/idb.d.ts → idb.d.ts} +11 -15
  2. package/dist/idb.js +232 -0
  3. package/dist/idb.js.map +1 -0
  4. package/dist/types-global.d.ts +8 -0
  5. package/dist/types-global.js +2 -0
  6. package/dist/types-global.js.map +1 -0
  7. package/dist/types.d.ts +5 -0
  8. package/dist/types.js +2 -0
  9. package/dist/types.js.map +1 -0
  10. package/dist/utils-color-hash.d.ts +2 -0
  11. package/dist/utils-color-hash.js +47 -0
  12. package/dist/utils-color-hash.js.map +1 -0
  13. package/dist/utils-create-log.d.ts +6 -0
  14. package/dist/utils-create-log.js +12 -0
  15. package/dist/utils-create-log.js.map +1 -0
  16. package/dist/utils-enqueue.d.ts +2 -0
  17. package/dist/utils-enqueue.js +5 -0
  18. package/dist/utils-enqueue.js.map +1 -0
  19. package/dist/utils-ensure-array.d.ts +1 -0
  20. package/dist/utils-ensure-array.js +4 -0
  21. package/dist/utils-ensure-array.js.map +1 -0
  22. package/dist/{utils/utils-is.d.ts → utils-is.d.ts} +3 -6
  23. package/dist/utils-is.js +30 -0
  24. package/dist/utils-is.js.map +1 -0
  25. package/dist/utils-link.d.ts +1 -0
  26. package/dist/utils-link.js +7 -0
  27. package/dist/utils-link.js.map +1 -0
  28. package/dist/{utils/utils-queue.d.ts → utils-queue.d.ts} +5 -8
  29. package/dist/utils-queue.js +50 -0
  30. package/dist/utils-queue.js.map +1 -0
  31. package/dist/utils-safe.d.ts +2 -0
  32. package/dist/utils-safe.js +22 -0
  33. package/dist/utils-safe.js.map +1 -0
  34. package/dist/utils-unique.d.ts +1 -0
  35. package/dist/utils-unique.js +13 -0
  36. package/dist/utils-unique.js.map +1 -0
  37. package/dist/utils-unit.d.ts +9 -0
  38. package/dist/utils-unit.js +26 -0
  39. package/dist/utils-unit.js.map +1 -0
  40. package/dist/utils-wait.d.ts +1 -0
  41. package/dist/utils-wait.js +4 -0
  42. package/dist/utils-wait.js.map +1 -0
  43. package/dist/utils.d.ts +13 -0
  44. package/dist/utils.js +13 -0
  45. package/dist/utils.js.map +1 -0
  46. package/package.json +8 -7
  47. package/dist/chunk-5N6O5FSZ.js +0 -53
  48. package/dist/chunk-5N6O5FSZ.js.map +0 -1
  49. package/dist/chunk-6X6FFIZN.js +0 -9
  50. package/dist/chunk-6X6FFIZN.js.map +0 -1
  51. package/dist/chunk-IEKJYSB2.js +0 -38
  52. package/dist/chunk-IEKJYSB2.js.map +0 -1
  53. package/dist/chunk-IL3H2YKT.js +0 -20
  54. package/dist/chunk-IL3H2YKT.js.map +0 -1
  55. package/dist/chunk-IQMQQI6W.js +0 -35
  56. package/dist/chunk-IQMQQI6W.js.map +0 -1
  57. package/dist/chunk-NIQOLOOJ.js +0 -44
  58. package/dist/chunk-NIQOLOOJ.js.map +0 -1
  59. package/dist/chunk-OURJLKNI.js +0 -16
  60. package/dist/chunk-OURJLKNI.js.map +0 -1
  61. package/dist/chunk-RXAMNVZW.js +0 -9
  62. package/dist/chunk-RXAMNVZW.js.map +0 -1
  63. package/dist/chunk-SDOWUYJK.js +0 -1
  64. package/dist/chunk-SDOWUYJK.js.map +0 -1
  65. package/dist/chunk-WBZCJMFI.js +0 -14
  66. package/dist/chunk-WBZCJMFI.js.map +0 -1
  67. package/dist/chunk-YPFVC6GE.js +0 -29
  68. package/dist/chunk-YPFVC6GE.js.map +0 -1
  69. package/dist/idb/idb.js +0 -200
  70. package/dist/idb/idb.js.map +0 -1
  71. package/dist/types/types.d.ts +0 -7
  72. package/dist/types/types.js +0 -1
  73. package/dist/types/types.js.map +0 -1
  74. package/dist/utils/utils-color-hash.d.ts +0 -4
  75. package/dist/utils/utils-color-hash.js +0 -7
  76. package/dist/utils/utils-color-hash.js.map +0 -1
  77. package/dist/utils/utils-create-log.d.ts +0 -9
  78. package/dist/utils/utils-create-log.js +0 -8
  79. package/dist/utils/utils-create-log.js.map +0 -1
  80. package/dist/utils/utils-ensure-array.d.ts +0 -3
  81. package/dist/utils/utils-ensure-array.js +0 -7
  82. package/dist/utils/utils-ensure-array.js.map +0 -1
  83. package/dist/utils/utils-is.js +0 -7
  84. package/dist/utils/utils-is.js.map +0 -1
  85. package/dist/utils/utils-link.d.ts +0 -3
  86. package/dist/utils/utils-link.js +0 -8
  87. package/dist/utils/utils-link.js.map +0 -1
  88. package/dist/utils/utils-queue.js +0 -9
  89. package/dist/utils/utils-queue.js.map +0 -1
  90. package/dist/utils/utils-safe.d.ts +0 -4
  91. package/dist/utils/utils-safe.js +0 -10
  92. package/dist/utils/utils-safe.js.map +0 -1
  93. package/dist/utils/utils-unique.d.ts +0 -3
  94. package/dist/utils/utils-unique.js +0 -7
  95. package/dist/utils/utils-unique.js.map +0 -1
  96. package/dist/utils/utils-unit.d.ts +0 -14
  97. package/dist/utils/utils-unit.js +0 -9
  98. package/dist/utils/utils-unit.js.map +0 -1
  99. package/dist/utils/utils-wait.d.ts +0 -3
  100. package/dist/utils/utils-wait.js +0 -7
  101. package/dist/utils/utils-wait.js.map +0 -1
  102. package/dist/utils/utils.d.ts +0 -11
  103. package/dist/utils/utils.js +0 -46
  104. package/dist/utils/utils.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ export function unique(items, keyFn) {
2
+ if (!keyFn)
3
+ return [...new Set(items)];
4
+ const seen = new Set();
5
+ return items.filter(item => {
6
+ const key = keyFn(item);
7
+ if (seen.has(key))
8
+ return false;
9
+ seen.add(key);
10
+ return true;
11
+ });
12
+ }
13
+ //# sourceMappingURL=utils-unique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-unique.js","sourceRoot":"","sources":["../src/utils-unique.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAI,KAAU,EAAE,KAA4B,EAAE;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAEtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;IACtB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,CAAA;IAAA,CACZ,CAAC,CAAA;AAAA,CACH"}
@@ -0,0 +1,9 @@
1
+ import type { Cls } from './types.js';
2
+ export declare class Unit<TRoot = unknown> {
3
+ #private;
4
+ $: TRoot;
5
+ log: import("./utils-create-log.js").Log;
6
+ constructor(parent?: Unit<TRoot> | null);
7
+ closest<T extends Unit<TRoot>>(Ancestor: Cls<T>): T | null;
8
+ never(message?: string): Error;
9
+ }
@@ -0,0 +1,26 @@
1
+ import { createLog } from './utils-create-log.js';
2
+ export class Unit {
3
+ $;
4
+ log = createLog(this.constructor.name);
5
+ #parent = null;
6
+ constructor(parent) {
7
+ this.$ = (parent?.$ ?? this);
8
+ this.#parent = parent ?? null;
9
+ }
10
+ closest(Ancestor) {
11
+ let cursor = this.#parent;
12
+ while (cursor) {
13
+ if (cursor instanceof Ancestor)
14
+ return cursor;
15
+ cursor = cursor.#parent;
16
+ }
17
+ return null;
18
+ }
19
+ never(message) {
20
+ const details = message ? `: ${message}` : '';
21
+ const error = new Error(`[${this.constructor.name}] This should never happen${details}`);
22
+ Error.captureStackTrace(error, this.never);
23
+ return error;
24
+ }
25
+ }
26
+ //# sourceMappingURL=utils-unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-unit.js","sourceRoot":"","sources":["../src/utils-unit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,MAAM,OAAO,IAAI;IACf,CAAC,CAAO;IACR,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO,GAAuB,IAAI,CAAA;IAElC,YAAY,MAA2B,EAAE;QACvC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAU,CAAA;QACrC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAA;IAAA,CAC9B;IAED,OAAO,CAAwB,QAAgB,EAAY;QACzD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAA;QACzB,OAAO,MAAM,EAAE,CAAC;YACd,IAAI,MAAM,YAAY,QAAQ;gBAAE,OAAO,MAAW,CAAA;YAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAA;IAAA,CACZ;IAED,KAAK,CAAC,OAAgB,EAAE;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,6BAA6B,OAAO,EAAE,CAAC,CAAA;QACxF,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,OAAO,KAAK,CAAA;IAAA,CACb;CACF"}
@@ -0,0 +1 @@
1
+ export declare function wait(ms: number): Promise<void>;
@@ -0,0 +1,4 @@
1
+ export async function wait(ms) {
2
+ await new Promise(r => setTimeout(r, ms));
3
+ }
4
+ //# sourceMappingURL=utils-wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-wait.js","sourceRoot":"","sources":["../src/utils-wait.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAU,EAAE;IACrC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAAA,CAC1C"}
@@ -0,0 +1,13 @@
1
+ import { colorHash } from './utils-color-hash.js';
2
+ import { createLog, type Log } from './utils-create-log.js';
3
+ import { enqueue } from './utils-enqueue.js';
4
+ import { ensureArray } from './utils-ensure-array.js';
5
+ import { is } from './utils-is.js';
6
+ import { link } from './utils-link.js';
7
+ import { Queue } from './utils-queue.js';
8
+ import { safe, safeSync } from './utils-safe.js';
9
+ import { unique } from './utils-unique.js';
10
+ import { Unit } from './utils-unit.js';
11
+ import { wait } from './utils-wait.js';
12
+ export type { Log };
13
+ export { colorHash, createLog, enqueue, ensureArray, is, link, Queue, safe, safeSync, unique, Unit, wait };
package/dist/utils.js ADDED
@@ -0,0 +1,13 @@
1
+ import { colorHash } from './utils-color-hash.js';
2
+ import { createLog } from './utils-create-log.js';
3
+ import { enqueue } from './utils-enqueue.js';
4
+ import { ensureArray } from './utils-ensure-array.js';
5
+ import { is } from './utils-is.js';
6
+ import { link } from './utils-link.js';
7
+ import { Queue } from './utils-queue.js';
8
+ import { safe, safeSync } from './utils-safe.js';
9
+ import { unique } from './utils-unique.js';
10
+ import { Unit } from './utils-unit.js';
11
+ import { wait } from './utils-wait.js';
12
+ export { colorHash, createLog, enqueue, ensureArray, is, link, Queue, safe, safeSync, unique, Unit, wait };
13
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAY,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAItC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,20 +1,21 @@
1
1
  {
2
2
  "name": "dropcap",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "imkost",
7
7
  "description": "",
8
8
  "scripts": {
9
- "dev": "tsup --config ../../tsup.config.ts --watch",
10
- "build": "tsup --config ../../tsup.config.ts",
11
- "lint": "tsc --noEmit",
9
+ "dev": "rimraf dist && tsgo --watch",
10
+ "build": "rimraf dist && tsgo",
11
+ "lint": "tsgo --noEmit",
12
12
  "release": "sh -c 'npm version ${1:-minor} && npm run build && npm publish' --"
13
13
  },
14
14
  "exports": {
15
- "./idb": "./dist/idb/idb.js",
16
- "./utils": "./dist/utils/utils.js",
17
- "./types": "./dist/types/types.js"
15
+ "./idb": "./dist/idb.js",
16
+ "./utils": "./dist/utils.js",
17
+ "./types": "./dist/types.js",
18
+ "./types-global": "./dist/types-global.js"
18
19
  },
19
20
  "files": [
20
21
  "dist"
@@ -1,53 +0,0 @@
1
- import {
2
- safe
3
- } from "./chunk-YPFVC6GE.js";
4
-
5
- // src/utils/utils-queue.ts
6
- var Queue = class {
7
- name;
8
- tasks = [];
9
- running = false;
10
- constructor(name = null) {
11
- this.name = name;
12
- }
13
- async add(fn) {
14
- const task = { fn, result$: Promise.withResolvers() };
15
- this.tasks.push(task);
16
- this.start();
17
- return await task.result$.promise;
18
- }
19
- wrap(fn, thisValue = null) {
20
- return (async (...args) => {
21
- return await this.add(() => fn.call(thisValue, ...args));
22
- });
23
- }
24
- async wait() {
25
- const lastTask = this.tasks.at(-1);
26
- if (lastTask) await safe(lastTask.result$.promise);
27
- }
28
- isEmpty() {
29
- return this.tasks.length === 0;
30
- }
31
- async start() {
32
- if (this.running) return;
33
- if (this.isEmpty()) return;
34
- this.running = true;
35
- while (this.tasks.length > 0) {
36
- const task = this.tasks[0];
37
- if (!task) break;
38
- const [result, error] = await safe(task.fn);
39
- this.tasks.shift();
40
- if (error) {
41
- task.result$.reject(error);
42
- } else {
43
- task.result$.resolve(result);
44
- }
45
- }
46
- this.running = false;
47
- }
48
- };
49
-
50
- export {
51
- Queue
52
- };
53
- //# sourceMappingURL=chunk-5N6O5FSZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-queue.ts"],"sourcesContent":["import type { AsyncFn } from '../types/types'\nimport { safe } from './utils-safe'\n\nexport type TaskFn<T> = () => Promise<T>\nexport type Task<T = any> = { fn: TaskFn<T>; result$: PromiseWithResolvers<T> }\n\nexport class Queue {\n name: string | null\n tasks: Task[] = []\n private running = false\n\n constructor(name: string | null = null) {\n this.name = name\n }\n\n async add<T>(fn: TaskFn<T>): Promise<T> {\n const task: Task<T> = { fn, result$: Promise.withResolvers<T>() }\n this.tasks.push(task)\n this.start()\n return await task.result$.promise\n }\n\n wrap<T extends AsyncFn>(fn: T, thisValue: unknown = null) {\n return (async (...args: Parameters<T>) => {\n return await this.add(() => fn.call(thisValue, ...args))\n }) as T\n }\n\n async wait() {\n const lastTask = this.tasks.at(-1)\n if (lastTask) await safe(lastTask.result$.promise)\n }\n\n isEmpty() {\n return this.tasks.length === 0\n }\n\n private async start() {\n if (this.running) return\n if (this.isEmpty()) return\n\n this.running = true\n\n while (this.tasks.length > 0) {\n const task = this.tasks[0]\n if (!task) break\n const [result, error] = await safe(task.fn)\n this.tasks.shift()\n if (error) {\n task.result$.reject(error)\n } else {\n task.result$.resolve(result)\n }\n }\n\n this.running = false\n }\n}\n"],"mappings":";;;;;AAMO,IAAM,QAAN,MAAY;AAAA,EACjB;AAAA,EACA,QAAgB,CAAC;AAAA,EACT,UAAU;AAAA,EAElB,YAAY,OAAsB,MAAM;AACtC,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,IAAO,IAA2B;AACtC,UAAM,OAAgB,EAAE,IAAI,SAAS,QAAQ,cAAiB,EAAE;AAChE,SAAK,MAAM,KAAK,IAAI;AACpB,SAAK,MAAM;AACX,WAAO,MAAM,KAAK,QAAQ;AAAA,EAC5B;AAAA,EAEA,KAAwB,IAAO,YAAqB,MAAM;AACxD,YAAQ,UAAU,SAAwB;AACxC,aAAO,MAAM,KAAK,IAAI,MAAM,GAAG,KAAK,WAAW,GAAG,IAAI,CAAC;AAAA,IACzD;AAAA,EACF;AAAA,EAEA,MAAM,OAAO;AACX,UAAM,WAAW,KAAK,MAAM,GAAG,EAAE;AACjC,QAAI,SAAU,OAAM,KAAK,SAAS,QAAQ,OAAO;AAAA,EACnD;AAAA,EAEA,UAAU;AACR,WAAO,KAAK,MAAM,WAAW;AAAA,EAC/B;AAAA,EAEA,MAAc,QAAQ;AACpB,QAAI,KAAK,QAAS;AAClB,QAAI,KAAK,QAAQ,EAAG;AAEpB,SAAK,UAAU;AAEf,WAAO,KAAK,MAAM,SAAS,GAAG;AAC5B,YAAM,OAAO,KAAK,MAAM,CAAC;AACzB,UAAI,CAAC,KAAM;AACX,YAAM,CAAC,QAAQ,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE;AAC1C,WAAK,MAAM,MAAM;AACjB,UAAI,OAAO;AACT,aAAK,QAAQ,OAAO,KAAK;AAAA,MAC3B,OAAO;AACL,aAAK,QAAQ,QAAQ,MAAM;AAAA,MAC7B;AAAA,IACF;AAEA,SAAK,UAAU;AAAA,EACjB;AACF;","names":[]}
@@ -1,9 +0,0 @@
1
- // src/utils/utils-ensure-array.ts
2
- function ensureArray(value) {
3
- return Array.isArray(value) ? value : [value];
4
- }
5
-
6
- export {
7
- ensureArray
8
- };
9
- //# sourceMappingURL=chunk-6X6FFIZN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-ensure-array.ts"],"sourcesContent":["export function ensureArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value]\n}\n"],"mappings":";AAAO,SAAS,YAAe,OAAqB;AAClD,SAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC9C;","names":[]}
@@ -1,38 +0,0 @@
1
- import {
2
- createLog
3
- } from "./chunk-IL3H2YKT.js";
4
-
5
- // src/utils/utils-unit.ts
6
- var Unit = class {
7
- $;
8
- log = createLog(this.constructor.name);
9
- #parent = null;
10
- constructor(parent) {
11
- this.$ = parent?.$ ?? this;
12
- this.#parent = parent ?? null;
13
- }
14
- closest(Ancestor) {
15
- let cursor = this.#parent;
16
- while (cursor) {
17
- if (cursor instanceof Ancestor) return cursor;
18
- cursor = cursor.#parent;
19
- }
20
- return null;
21
- }
22
- never(message) {
23
- const details = message ? `: ${message}` : "";
24
- const error = new Error(`[${this.constructor.name}] This should never happen${details}`);
25
- Error.captureStackTrace(error, this.never);
26
- return error;
27
- }
28
- Error(message) {
29
- const error = new Error(`[${this.constructor.name}] ${message}`);
30
- Error.captureStackTrace(error, this.Error);
31
- return error;
32
- }
33
- };
34
-
35
- export {
36
- Unit
37
- };
38
- //# sourceMappingURL=chunk-IEKJYSB2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-unit.ts"],"sourcesContent":["import type { Cls } from '../types/types'\nimport { createLog } from './utils-create-log'\n\nexport class Unit<TRoot = unknown> {\n $: TRoot\n log = createLog(this.constructor.name)\n #parent: Unit<TRoot> | null = null\n\n constructor(parent?: Unit<TRoot> | null) {\n this.$ = (parent?.$ ?? this) as TRoot\n this.#parent = parent ?? null\n }\n\n closest<T extends Unit<TRoot>>(Ancestor: Cls<T>): T | null {\n let cursor = this.#parent\n while (cursor) {\n if (cursor instanceof Ancestor) return cursor as T\n cursor = cursor.#parent\n }\n return null\n }\n\n never(message?: string) {\n const details = message ? `: ${message}` : ''\n const error = new Error(`[${this.constructor.name}] This should never happen${details}`)\n Error.captureStackTrace(error, this.never)\n return error\n }\n\n Error(message?: string) {\n const error = new Error(`[${this.constructor.name}] ${message}`)\n Error.captureStackTrace(error, this.Error)\n return error\n }\n}\n"],"mappings":";;;;;AAGO,IAAM,OAAN,MAA4B;AAAA,EACjC;AAAA,EACA,MAAM,UAAU,KAAK,YAAY,IAAI;AAAA,EACrC,UAA8B;AAAA,EAE9B,YAAY,QAA6B;AACvC,SAAK,IAAK,QAAQ,KAAK;AACvB,SAAK,UAAU,UAAU;AAAA,EAC3B;AAAA,EAEA,QAA+B,UAA4B;AACzD,QAAI,SAAS,KAAK;AAClB,WAAO,QAAQ;AACb,UAAI,kBAAkB,SAAU,QAAO;AACvC,eAAS,OAAO;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAkB;AACtB,UAAM,UAAU,UAAU,KAAK,OAAO,KAAK;AAC3C,UAAM,QAAQ,IAAI,MAAM,IAAI,KAAK,YAAY,IAAI,6BAA6B,OAAO,EAAE;AACvF,UAAM,kBAAkB,OAAO,KAAK,KAAK;AACzC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAkB;AACtB,UAAM,QAAQ,IAAI,MAAM,IAAI,KAAK,YAAY,IAAI,KAAK,OAAO,EAAE;AAC/D,UAAM,kBAAkB,OAAO,KAAK,KAAK;AACzC,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,20 +0,0 @@
1
- import {
2
- colorHash
3
- } from "./chunk-NIQOLOOJ.js";
4
-
5
- // src/utils/utils-create-log.ts
6
- function createLog(name) {
7
- const color = colorHash(name);
8
- const log = print.bind(null, "log", name, color);
9
- log.warn = print.bind(null, "warn", name, color);
10
- log.error = print.bind(null, "error", name, color);
11
- return log;
12
- }
13
- function print(type, name, color, ...args) {
14
- console[type](`%c[${name}]`, `color: ${color}`, ...args);
15
- }
16
-
17
- export {
18
- createLog
19
- };
20
- //# sourceMappingURL=chunk-IL3H2YKT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-create-log.ts"],"sourcesContent":["import type { Fn } from '../types/types'\nimport { colorHash } from './utils-color-hash'\n\nexport type Log = Fn<void> & { warn: Fn<void>; error: Fn<void> }\n\nexport function createLog(name: string) {\n const color = colorHash(name)\n const log = print.bind(null, 'log', name, color) as Log\n log.warn = print.bind(null, 'warn', name, color) as Log['warn']\n log.error = print.bind(null, 'error', name, color) as Log['error']\n return log\n}\n\nfunction print(type: 'log' | 'warn' | 'error', name: string, color: string, ...args: unknown[]) {\n console[type](`%c[${name}]`, `color: ${color}`, ...args)\n}\n"],"mappings":";;;;;AAKO,SAAS,UAAU,MAAc;AACtC,QAAM,QAAQ,UAAU,IAAI;AAC5B,QAAM,MAAM,MAAM,KAAK,MAAM,OAAO,MAAM,KAAK;AAC/C,MAAI,OAAO,MAAM,KAAK,MAAM,QAAQ,MAAM,KAAK;AAC/C,MAAI,QAAQ,MAAM,KAAK,MAAM,SAAS,MAAM,KAAK;AACjD,SAAO;AACT;AAEA,SAAS,MAAM,MAAgC,MAAc,UAAkB,MAAiB;AAC9F,UAAQ,IAAI,EAAE,MAAM,IAAI,KAAK,UAAU,KAAK,IAAI,GAAG,IAAI;AACzD;","names":[]}
@@ -1,35 +0,0 @@
1
- // src/utils/utils-is.ts
2
- var is = {
3
- null: (v) => v === null,
4
- undefined: (v) => v === void 0,
5
- boolean: (v) => typeof v === "boolean",
6
- number: (v) => typeof v === "number",
7
- string: (v) => typeof v === "string",
8
- symbol: (v) => typeof v === "symbol",
9
- function: (v) => typeof v === "function",
10
- object: (v) => Object.prototype.toString.call(v) === "[object Object]",
11
- array: (v) => Array.isArray(v),
12
- set: (v) => v instanceof Set,
13
- map: (v) => v instanceof Map,
14
- blob: (v) => v instanceof Blob,
15
- date: (v) => v instanceof Date,
16
- error: (v) => v instanceof Error,
17
- regex: (v) => v instanceof RegExp,
18
- promise: (v) => v instanceof Promise,
19
- uint8Array: (v) => v instanceof Uint8Array,
20
- uint16Array: (v) => v instanceof Uint16Array,
21
- uint32Array: (v) => v instanceof Uint32Array,
22
- nan: (v) => Number.isNaN(v),
23
- numeric: (v) => !is.nan(Number(v)),
24
- integer: (v) => Number.isInteger(v),
25
- absent: (v) => v === null || v === void 0,
26
- present: (v) => !is.absent(v),
27
- primitive: (v) => v !== Object(v),
28
- collection: (v) => is.array(v) || is.object(v),
29
- compound: (v) => v !== null && typeof v === "object"
30
- };
31
-
32
- export {
33
- is
34
- };
35
- //# sourceMappingURL=chunk-IQMQQI6W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-is.ts"],"sourcesContent":["import type { Fn, Obj, Arr } from '../types/types'\n\nexport const is = {\n null: (v: unknown) => v === null,\n undefined: (v: unknown) => v === undefined,\n boolean: (v: unknown) => typeof v === 'boolean',\n number: (v: unknown) => typeof v === 'number',\n string: (v: unknown) => typeof v === 'string',\n symbol: (v: unknown) => typeof v === 'symbol',\n function: (v: unknown): v is Fn => typeof v === 'function',\n object: (v: unknown): v is Obj => Object.prototype.toString.call(v) === '[object Object]',\n array: (v: unknown): v is Arr => Array.isArray(v),\n set: (v: unknown) => v instanceof Set,\n map: (v: unknown) => v instanceof Map,\n blob: (v: unknown) => v instanceof Blob,\n date: (v: unknown) => v instanceof Date,\n error: (v: unknown) => v instanceof Error,\n regex: (v: unknown) => v instanceof RegExp,\n promise: (v: unknown) => v instanceof Promise,\n uint8Array: (v: unknown) => v instanceof Uint8Array,\n uint16Array: (v: unknown) => v instanceof Uint16Array,\n uint32Array: (v: unknown) => v instanceof Uint32Array,\n\n nan: (v: unknown) => Number.isNaN(v),\n numeric: (v: unknown) => !is.nan(Number(v)),\n integer: (v: unknown): v is number => Number.isInteger(v),\n absent: (v: unknown) => v === null || v === undefined,\n present: <T>(v: T): v is NonNullable<T> => !is.absent(v),\n primitive: (v: unknown) => v !== Object(v),\n collection: (v: unknown) => is.array(v) || is.object(v),\n compound: (v: unknown) => v !== null && typeof v === 'object',\n}\n"],"mappings":";AAEO,IAAM,KAAK;AAAA,EAChB,MAAM,CAAC,MAAe,MAAM;AAAA,EAC5B,WAAW,CAAC,MAAe,MAAM;AAAA,EACjC,SAAS,CAAC,MAAe,OAAO,MAAM;AAAA,EACtC,QAAQ,CAAC,MAAe,OAAO,MAAM;AAAA,EACrC,QAAQ,CAAC,MAAe,OAAO,MAAM;AAAA,EACrC,QAAQ,CAAC,MAAe,OAAO,MAAM;AAAA,EACrC,UAAU,CAAC,MAAwB,OAAO,MAAM;AAAA,EAChD,QAAQ,CAAC,MAAyB,OAAO,UAAU,SAAS,KAAK,CAAC,MAAM;AAAA,EACxE,OAAO,CAAC,MAAyB,MAAM,QAAQ,CAAC;AAAA,EAChD,KAAK,CAAC,MAAe,aAAa;AAAA,EAClC,KAAK,CAAC,MAAe,aAAa;AAAA,EAClC,MAAM,CAAC,MAAe,aAAa;AAAA,EACnC,MAAM,CAAC,MAAe,aAAa;AAAA,EACnC,OAAO,CAAC,MAAe,aAAa;AAAA,EACpC,OAAO,CAAC,MAAe,aAAa;AAAA,EACpC,SAAS,CAAC,MAAe,aAAa;AAAA,EACtC,YAAY,CAAC,MAAe,aAAa;AAAA,EACzC,aAAa,CAAC,MAAe,aAAa;AAAA,EAC1C,aAAa,CAAC,MAAe,aAAa;AAAA,EAE1C,KAAK,CAAC,MAAe,OAAO,MAAM,CAAC;AAAA,EACnC,SAAS,CAAC,MAAe,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;AAAA,EAC1C,SAAS,CAAC,MAA4B,OAAO,UAAU,CAAC;AAAA,EACxD,QAAQ,CAAC,MAAe,MAAM,QAAQ,MAAM;AAAA,EAC5C,SAAS,CAAI,MAA8B,CAAC,GAAG,OAAO,CAAC;AAAA,EACvD,WAAW,CAAC,MAAe,MAAM,OAAO,CAAC;AAAA,EACzC,YAAY,CAAC,MAAe,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;AAAA,EACtD,UAAU,CAAC,MAAe,MAAM,QAAQ,OAAO,MAAM;AACvD;","names":[]}
@@ -1,44 +0,0 @@
1
- // src/utils/utils-color-hash.ts
2
- function colorHash(str) {
3
- let hash = 5381;
4
- for (let i = 0; i < str.length; i++) {
5
- hash = hash * 33 ^ str.charCodeAt(i);
6
- }
7
- hash >>>= 0;
8
- const hue = Math.floor(hash * 0.618033988749895 % 1 * 360);
9
- const sat = 70;
10
- let light = 50;
11
- for (let i = 0; i < 20; i++) {
12
- const rgb = hsl2rgb(hue, sat, light);
13
- const l = lum(rgb);
14
- const cW = contrast(1, l);
15
- const cB = contrast(0, l);
16
- if (cW >= 4.5 && cB >= 4.5) break;
17
- light += cW < cB ? -5 : 5;
18
- }
19
- const hex = hsl2rgb(hue, sat, light).map((v) => v.toString(16).padStart(2, "0")).join("");
20
- return `#${hex}`;
21
- }
22
- function hsl2rgb(hh, ss, ll) {
23
- ss /= 100;
24
- ll /= 100;
25
- const k = (n) => (n + hh / 30) % 12;
26
- const a = ss * Math.min(ll, 1 - ll);
27
- const f = (n) => ll - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
28
- return [f(0), f(8), f(4)].map((v) => Math.round(v * 255));
29
- }
30
- function lum([r, g, b]) {
31
- const c = (x) => {
32
- x /= 255;
33
- return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;
34
- };
35
- return 0.2126 * c(r) + 0.7152 * c(g) + 0.0722 * c(b);
36
- }
37
- function contrast(l1, l2) {
38
- return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);
39
- }
40
-
41
- export {
42
- colorHash
43
- };
44
- //# sourceMappingURL=chunk-NIQOLOOJ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-color-hash.ts"],"sourcesContent":["export type Rgb = [number, number, number]\n\nexport function colorHash(str: string) {\n // Calculate hash (djb2 xor) as 32‑bit unsigned\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n hash = (hash * 33) ^ str.charCodeAt(i)\n }\n hash >>>= 0\n\n // Calculate hue. Golden‑ratio scramble gives maximum spread for 'near' strings.\n const hue = Math.floor(((hash * 0.618033988749895) % 1) * 360)\n\n // Start with vivid mid‑tone\n const sat = 70\n let light = 50\n\n // Adjust lightness until it reads on both white and black backgrounds.\n for (let i = 0; i < 20; i++) {\n const rgb = hsl2rgb(hue, sat, light)\n const l = lum(rgb)\n const cW = contrast(1, l) // Versus white\n const cB = contrast(0, l) // Versus black\n if (cW >= 4.5 && cB >= 4.5) break // Good on both\n light += cW < cB ? -5 : 5 // Move toward darker or lighter\n }\n\n // Convert to hex\n const hex = hsl2rgb(hue, sat, light)\n .map(v => v.toString(16).padStart(2, '0'))\n .join('')\n\n return `#${hex}`\n}\n\nfunction hsl2rgb(hh: number, ss: number, ll: number): Rgb {\n ss /= 100\n ll /= 100\n const k = (n: number) => (n + hh / 30) % 12\n const a = ss * Math.min(ll, 1 - ll)\n const f = (n: number) => ll - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)))\n return [f(0), f(8), f(4)].map(v => Math.round(v * 255)) as Rgb\n}\n\nfunction lum([r, g, b]: Rgb) {\n const c = (x: number) => {\n x /= 255\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4\n }\n return 0.2126 * c(r) + 0.7152 * c(g) + 0.0722 * c(b)\n}\n\nfunction contrast(l1: number, l2: number) {\n return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05)\n}\n"],"mappings":";AAEO,SAAS,UAAU,KAAa;AAErC,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,WAAQ,OAAO,KAAM,IAAI,WAAW,CAAC;AAAA,EACvC;AACA,YAAU;AAGV,QAAM,MAAM,KAAK,MAAQ,OAAO,oBAAqB,IAAK,GAAG;AAG7D,QAAM,MAAM;AACZ,MAAI,QAAQ;AAGZ,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,UAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AACnC,UAAM,IAAI,IAAI,GAAG;AACjB,UAAM,KAAK,SAAS,GAAG,CAAC;AACxB,UAAM,KAAK,SAAS,GAAG,CAAC;AACxB,QAAI,MAAM,OAAO,MAAM,IAAK;AAC5B,aAAS,KAAK,KAAK,KAAK;AAAA,EAC1B;AAGA,QAAM,MAAM,QAAQ,KAAK,KAAK,KAAK,EAChC,IAAI,OAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EACxC,KAAK,EAAE;AAEV,SAAO,IAAI,GAAG;AAChB;AAEA,SAAS,QAAQ,IAAY,IAAY,IAAiB;AACxD,QAAM;AACN,QAAM;AACN,QAAM,IAAI,CAAC,OAAe,IAAI,KAAK,MAAM;AACzC,QAAM,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE;AAClC,QAAM,IAAI,CAAC,MAAc,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF,SAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,OAAK,KAAK,MAAM,IAAI,GAAG,CAAC;AACxD;AAEA,SAAS,IAAI,CAAC,GAAG,GAAG,CAAC,GAAQ;AAC3B,QAAM,IAAI,CAAC,MAAc;AACvB,SAAK;AACL,WAAO,KAAK,UAAU,IAAI,UAAU,IAAI,SAAS,UAAU;AAAA,EAC7D;AACA,SAAO,SAAS,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;AACrD;AAEA,SAAS,SAAS,IAAY,IAAY;AACxC,UAAQ,KAAK,IAAI,IAAI,EAAE,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,IAAI;AACzD;","names":[]}
@@ -1,16 +0,0 @@
1
- // src/utils/utils-unique.ts
2
- function unique(items, keyFn) {
3
- if (!keyFn) return [...new Set(items)];
4
- const seen = /* @__PURE__ */ new Set();
5
- return items.filter((item) => {
6
- const key = keyFn(item);
7
- if (seen.has(key)) return false;
8
- seen.add(key);
9
- return true;
10
- });
11
- }
12
-
13
- export {
14
- unique
15
- };
16
- //# sourceMappingURL=chunk-OURJLKNI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-unique.ts"],"sourcesContent":["export function unique<T = unknown>(items: T[], keyFn?: (item: T) => unknown) {\n if (!keyFn) return [...new Set(items)]\n\n const seen = new Set()\n return items.filter(item => {\n const key = keyFn(item)\n if (seen.has(key)) return false\n seen.add(key)\n return true\n })\n}\n"],"mappings":";AAAO,SAAS,OAAoB,OAAY,OAA8B;AAC5E,MAAI,CAAC,MAAO,QAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;AAErC,QAAM,OAAO,oBAAI,IAAI;AACrB,SAAO,MAAM,OAAO,UAAQ;AAC1B,UAAM,MAAM,MAAM,IAAI;AACtB,QAAI,KAAK,IAAI,GAAG,EAAG,QAAO;AAC1B,SAAK,IAAI,GAAG;AACZ,WAAO;AAAA,EACT,CAAC;AACH;","names":[]}
@@ -1,9 +0,0 @@
1
- // src/utils/utils-wait.ts
2
- async function wait(ms) {
3
- await new Promise((r) => setTimeout(r, ms));
4
- }
5
-
6
- export {
7
- wait
8
- };
9
- //# sourceMappingURL=chunk-RXAMNVZW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-wait.ts"],"sourcesContent":["export async function wait(ms: number) {\n await new Promise(r => setTimeout(r, ms))\n}\n"],"mappings":";AAAA,eAAsB,KAAK,IAAY;AACrC,QAAM,IAAI,QAAQ,OAAK,WAAW,GAAG,EAAE,CAAC;AAC1C;","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-SDOWUYJK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,14 +0,0 @@
1
- import {
2
- is
3
- } from "./chunk-IQMQQI6W.js";
4
-
5
- // src/utils/utils-link.ts
6
- function link(target, method) {
7
- if (!is.function(target[method])) throw new Error(`Property '${String(method)}' is not a function`);
8
- return target[method].bind(target);
9
- }
10
-
11
- export {
12
- link
13
- };
14
- //# sourceMappingURL=chunk-WBZCJMFI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-link.ts"],"sourcesContent":["import { is } from './utils-is'\n\nexport function link<T, M extends keyof T>(target: T, method: M): T[M] {\n if (!is.function(target[method])) throw new Error(`Property '${String(method)}' is not a function`)\n return target[method].bind(target) as T[M]\n}\n"],"mappings":";;;;;AAEO,SAAS,KAA2B,QAAW,QAAiB;AACrE,MAAI,CAAC,GAAG,SAAS,OAAO,MAAM,CAAC,EAAG,OAAM,IAAI,MAAM,aAAa,OAAO,MAAM,CAAC,qBAAqB;AAClG,SAAO,OAAO,MAAM,EAAE,KAAK,MAAM;AACnC;","names":[]}
@@ -1,29 +0,0 @@
1
- import {
2
- is
3
- } from "./chunk-IQMQQI6W.js";
4
-
5
- // src/utils/utils-safe.ts
6
- async function safe(effect) {
7
- try {
8
- const result = is.function(effect) ? await effect() : await effect;
9
- return [result, null];
10
- } catch (e) {
11
- const error = e instanceof Error ? e : new Error(String(e));
12
- return [null, error];
13
- }
14
- }
15
- function safeSync(effect) {
16
- try {
17
- const result = effect();
18
- return [result, null];
19
- } catch (e) {
20
- const error = e instanceof Error ? e : new Error(String(e));
21
- return [null, error];
22
- }
23
- }
24
-
25
- export {
26
- safe,
27
- safeSync
28
- };
29
- //# sourceMappingURL=chunk-YPFVC6GE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils-safe.ts"],"sourcesContent":["import { is } from './utils-is'\n\nexport async function safe<T>(\n effect: (() => T | Promise<T>) | Promise<T>,\n): Promise<[T, null] | [null, Error]> {\n try {\n const result = is.function(effect) ? await effect() : await effect\n return [result, null]\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e))\n return [null, error]\n }\n}\n\nexport function safeSync<T>(effect: () => T): [T, null] | [null, Error] {\n try {\n const result = effect()\n return [result, null]\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e))\n return [null, error]\n }\n}\n"],"mappings":";;;;;AAEA,eAAsB,KACpB,QACoC;AACpC,MAAI;AACF,UAAM,SAAS,GAAG,SAAS,MAAM,IAAI,MAAM,OAAO,IAAI,MAAM;AAC5D,WAAO,CAAC,QAAQ,IAAI;AAAA,EACtB,SAAS,GAAG;AACV,UAAM,QAAQ,aAAa,QAAQ,IAAI,IAAI,MAAM,OAAO,CAAC,CAAC;AAC1D,WAAO,CAAC,MAAM,KAAK;AAAA,EACrB;AACF;AAEO,SAAS,SAAY,QAA4C;AACtE,MAAI;AACF,UAAM,SAAS,OAAO;AACtB,WAAO,CAAC,QAAQ,IAAI;AAAA,EACtB,SAAS,GAAG;AACV,UAAM,QAAQ,aAAa,QAAQ,IAAI,IAAI,MAAM,OAAO,CAAC,CAAC;AAC1D,WAAO,CAAC,MAAM,KAAK;AAAA,EACrB;AACF;","names":[]}