@dayme/alien-utils 0.2.0 → 0.3.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.
- package/README.md +24 -1
- package/dist/index.js +194 -1
- package/dist/iterator/index.d.ts +1 -0
- package/dist/iterator/index.d.ts.map +1 -1
- package/dist/iterator/iterator.d.ts.map +1 -1
- package/dist/iterator/par-iter.d.ts +135 -0
- package/dist/iterator/par-iter.d.ts.map +1 -0
- package/dist/iterator/par-worker.d.ts +2 -0
- package/dist/iterator/par-worker.d.ts.map +1 -0
- package/package.json +3 -6
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ pnpm add @dayme/alien-utils
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
17
|
```typescript
|
|
18
|
-
import { Option, Result, Iter, Stack, Queue } from "@dayme/alien-utils";
|
|
18
|
+
import { Option, Result, Iter, ParIter, Stack, Queue } from "@dayme/alien-utils";
|
|
19
19
|
|
|
20
20
|
// Option - Handle nullable values
|
|
21
21
|
const maybeValue = Option.from("hello");
|
|
@@ -31,6 +31,12 @@ Iter.from([1, 2, 3])
|
|
|
31
31
|
.filter(x => x > 3)
|
|
32
32
|
.collect(); // [4, 6]
|
|
33
33
|
|
|
34
|
+
// ParIter - Parallel processing for CPU-intensive operations
|
|
35
|
+
const result = await ParIter.from([1, 2, 3, 4, 5])
|
|
36
|
+
.map(x => x * 2) // Processed in parallel
|
|
37
|
+
.filter(x => x > 5)
|
|
38
|
+
.collect(); // [6, 8, 10]
|
|
39
|
+
|
|
34
40
|
// Stack - LIFO
|
|
35
41
|
const stack = new Stack<number>();
|
|
36
42
|
stack.push(1).push(2);
|
|
@@ -79,6 +85,23 @@ bun run docs:build
|
|
|
79
85
|
bun run docs:preview
|
|
80
86
|
```
|
|
81
87
|
|
|
88
|
+
## Benchmarks
|
|
89
|
+
|
|
90
|
+
Performance and functionality benchmarks are located in the `benchmarks/` folder:
|
|
91
|
+
|
|
92
|
+
- `benchmark-par-iter.ts`: Performance comparison between Iter and ParIter
|
|
93
|
+
- `compare-functionality.ts`: Comprehensive functionality comparison
|
|
94
|
+
|
|
95
|
+
To run benchmarks:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Run performance benchmark
|
|
99
|
+
bun benchmarks/benchmark-par-iter.ts
|
|
100
|
+
|
|
101
|
+
# Run functionality comparison
|
|
102
|
+
bun benchmarks/compare-functionality.ts
|
|
103
|
+
```
|
|
104
|
+
|
|
82
105
|
## Testing
|
|
83
106
|
|
|
84
107
|
Tests are written using Bun's built-in test framework:
|
package/dist/index.js
CHANGED
|
@@ -867,6 +867,199 @@ var Some = class e {
|
|
|
867
867
|
reverse() {
|
|
868
868
|
return new n(this.collect().reverse());
|
|
869
869
|
}
|
|
870
|
+
}, ParIter = class e {
|
|
871
|
+
source;
|
|
872
|
+
ops;
|
|
873
|
+
config;
|
|
874
|
+
opsMask;
|
|
875
|
+
constructor(e, t = [], n = {}) {
|
|
876
|
+
this.source = e, this.ops = t, this.config = {
|
|
877
|
+
workers: n.workers || navigator.hardwareConcurrency || 4,
|
|
878
|
+
chunkSize: n.chunkSize || 1e4,
|
|
879
|
+
strategy: n.strategy || "static",
|
|
880
|
+
ordered: n.ordered ?? !1,
|
|
881
|
+
allowSideEffects: n.allowSideEffects ?? !1
|
|
882
|
+
};
|
|
883
|
+
let r = 0;
|
|
884
|
+
for (let e of t) switch (e.type) {
|
|
885
|
+
case "map":
|
|
886
|
+
r |= 1;
|
|
887
|
+
break;
|
|
888
|
+
case "filter":
|
|
889
|
+
r |= 2;
|
|
890
|
+
break;
|
|
891
|
+
case "reduce":
|
|
892
|
+
r |= 4;
|
|
893
|
+
break;
|
|
894
|
+
case "sum":
|
|
895
|
+
r |= 8;
|
|
896
|
+
break;
|
|
897
|
+
case "count":
|
|
898
|
+
r |= 16;
|
|
899
|
+
break;
|
|
900
|
+
case "groupBy":
|
|
901
|
+
r |= 32;
|
|
902
|
+
break;
|
|
903
|
+
}
|
|
904
|
+
this.opsMask = r;
|
|
905
|
+
}
|
|
906
|
+
static from(t, n = {}) {
|
|
907
|
+
return new e(t, [], n);
|
|
908
|
+
}
|
|
909
|
+
static create(t, n = {}) {
|
|
910
|
+
return new e(t, [], {
|
|
911
|
+
workers: n.workers || navigator.hardwareConcurrency || 4,
|
|
912
|
+
chunkSize: n.chunkSize || 1e4,
|
|
913
|
+
strategy: n.strategy || "static",
|
|
914
|
+
ordered: n.ordered ?? !1,
|
|
915
|
+
allowSideEffects: n.allowSideEffects ?? !1
|
|
916
|
+
});
|
|
917
|
+
}
|
|
918
|
+
map(t) {
|
|
919
|
+
if (this.hasUnsafeOps()) throw Error("Cannot apply map after operations that cannot be parallelized");
|
|
920
|
+
return new e(this.source, [...this.ops, {
|
|
921
|
+
type: "map",
|
|
922
|
+
fn: t
|
|
923
|
+
}], this.config);
|
|
924
|
+
}
|
|
925
|
+
filter(t) {
|
|
926
|
+
if (this.hasUnsafeOps()) throw Error("Cannot apply filter after operations that cannot be parallelized");
|
|
927
|
+
return new e(this.source, [...this.ops, {
|
|
928
|
+
type: "filter",
|
|
929
|
+
fn: t
|
|
930
|
+
}], this.config);
|
|
931
|
+
}
|
|
932
|
+
async sum() {
|
|
933
|
+
if (this.hasUnsafeOps()) throw Error("Cannot perform sum after operations that cannot be parallelized");
|
|
934
|
+
let e = [...this.ops, {
|
|
935
|
+
type: "sum",
|
|
936
|
+
fn: (e, t) => e + t
|
|
937
|
+
}];
|
|
938
|
+
return await this.executeReduction(e, (e) => e.reduce((e, t) => {
|
|
939
|
+
let n = Array.isArray(t) && t.length > 0 ? t[0] : t;
|
|
940
|
+
return e + Number(n);
|
|
941
|
+
}, 0));
|
|
942
|
+
}
|
|
943
|
+
async count() {
|
|
944
|
+
if (this.hasUnsafeOps()) throw Error("Cannot perform count after operations that cannot be parallelized");
|
|
945
|
+
return await this.executeReduction(this.ops, (e) => e.reduce((e, t) => e + (Array.isArray(t) ? t.length : 1), 0));
|
|
946
|
+
}
|
|
947
|
+
async reduce(e, t) {
|
|
948
|
+
if (this.hasUnsafeOps()) throw Error("Cannot perform reduce after operations that cannot be parallelized");
|
|
949
|
+
let n = [...this.ops, {
|
|
950
|
+
type: "reduce",
|
|
951
|
+
fn: e
|
|
952
|
+
}];
|
|
953
|
+
return await this.executeReduction(n, (n) => {
|
|
954
|
+
if (n.length === 0 && t !== void 0) return t;
|
|
955
|
+
let r = n.map((e) => Array.isArray(e) && e.length > 0 ? e[0] : e);
|
|
956
|
+
return r.length === 1 ? r[0] : r.reduce((t, n) => e(t, n), t);
|
|
957
|
+
});
|
|
958
|
+
}
|
|
959
|
+
hasUnsafeOps() {
|
|
960
|
+
for (let e of this.ops) switch (e.type) {
|
|
961
|
+
case "take":
|
|
962
|
+
case "takeWhile":
|
|
963
|
+
case "find":
|
|
964
|
+
case "first":
|
|
965
|
+
case "scan":
|
|
966
|
+
case "inspect": return !0;
|
|
967
|
+
default: break;
|
|
968
|
+
}
|
|
969
|
+
return !1;
|
|
970
|
+
}
|
|
971
|
+
checkSideEffectsAllowed() {
|
|
972
|
+
if (!this.config.allowSideEffects) {
|
|
973
|
+
for (let e of this.ops) if (e.type === "inspect") throw Error("Inspect operations are not allowed when allowSideEffects is false");
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
async executeReduction(e, t) {
|
|
977
|
+
let n = Array.from(this.source), r = this.splitIntoChunks(n);
|
|
978
|
+
return t(await this.processChunksParallel(r, e));
|
|
979
|
+
}
|
|
980
|
+
splitIntoChunks(e) {
|
|
981
|
+
return this.config.strategy, this.staticChunking(e);
|
|
982
|
+
}
|
|
983
|
+
staticChunking(e) {
|
|
984
|
+
let t = [], n = Math.max(1, this.config.chunkSize), r = Math.min(this.config.workers, e.length), i = Math.max(1, Math.ceil(e.length / r)), a = Math.min(n, i);
|
|
985
|
+
for (let n = 0; n < e.length; n += a) t.push(e.slice(n, n + a));
|
|
986
|
+
return t;
|
|
987
|
+
}
|
|
988
|
+
async processChunksParallel(e, t) {
|
|
989
|
+
return typeof Worker < "u" ? this.processWithWebWorkers(e, t) : this.processWithBunWorkers(e, t);
|
|
990
|
+
}
|
|
991
|
+
async processWithWebWorkers(e, t) {
|
|
992
|
+
let n = Array(e.length), r = [];
|
|
993
|
+
for (let i = 0; i < Math.min(e.length, this.config.workers); i++) {
|
|
994
|
+
let a = i, o = (async () => {
|
|
995
|
+
for (let r = a; r < e.length; r += this.config.workers) n[r] = await this.processChunk(e[r], t);
|
|
996
|
+
})();
|
|
997
|
+
r.push(o);
|
|
998
|
+
}
|
|
999
|
+
return await Promise.all(r), n;
|
|
1000
|
+
}
|
|
1001
|
+
async processWithBunWorkers(e, t) {
|
|
1002
|
+
let n = [];
|
|
1003
|
+
for (let r of e) {
|
|
1004
|
+
let e = await this.processChunk(r, t);
|
|
1005
|
+
n.push(e);
|
|
1006
|
+
}
|
|
1007
|
+
return n;
|
|
1008
|
+
}
|
|
1009
|
+
async processChunk(e, t) {
|
|
1010
|
+
let n = [...e];
|
|
1011
|
+
for (let e of t) switch (e.type) {
|
|
1012
|
+
case "map":
|
|
1013
|
+
n = n.map((t, n) => e.fn(t, n));
|
|
1014
|
+
break;
|
|
1015
|
+
case "filter":
|
|
1016
|
+
n = n.filter((t, n) => e.fn(t, n));
|
|
1017
|
+
break;
|
|
1018
|
+
case "sum":
|
|
1019
|
+
n = [n.reduce((e, t) => e + Number(t), 0)];
|
|
1020
|
+
break;
|
|
1021
|
+
case "count":
|
|
1022
|
+
n = [n.length];
|
|
1023
|
+
break;
|
|
1024
|
+
case "reduce":
|
|
1025
|
+
if (n.length > 0) {
|
|
1026
|
+
let t = e.fn;
|
|
1027
|
+
n = [n.reduce(t)];
|
|
1028
|
+
} else n = [];
|
|
1029
|
+
break;
|
|
1030
|
+
}
|
|
1031
|
+
return n;
|
|
1032
|
+
}
|
|
1033
|
+
async collect() {
|
|
1034
|
+
if (this.hasUnsafeOps()) throw Error("Cannot collect after operations that cannot be parallelized");
|
|
1035
|
+
return await this.executeReduction(this.ops, (e) => {
|
|
1036
|
+
let t = [];
|
|
1037
|
+
for (let n of e) Array.isArray(n) ? t.push(...n) : t.push(n);
|
|
1038
|
+
return t;
|
|
1039
|
+
});
|
|
1040
|
+
}
|
|
1041
|
+
take(e) {
|
|
1042
|
+
throw Error("take operation cannot be parallelized");
|
|
1043
|
+
}
|
|
1044
|
+
takeWhile(e) {
|
|
1045
|
+
throw Error("takeWhile operation cannot be parallelized");
|
|
1046
|
+
}
|
|
1047
|
+
find(e) {
|
|
1048
|
+
throw Error("find operation cannot be parallelized");
|
|
1049
|
+
}
|
|
1050
|
+
first() {
|
|
1051
|
+
throw Error("first operation cannot be parallelized");
|
|
1052
|
+
}
|
|
1053
|
+
scan(e, t) {
|
|
1054
|
+
throw Error("scan operation cannot be parallelized");
|
|
1055
|
+
}
|
|
1056
|
+
inspect(t) {
|
|
1057
|
+
if (!this.config.allowSideEffects) throw Error("inspect operation is not allowed when allowSideEffects is false");
|
|
1058
|
+
return new e(this.source, [...this.ops, {
|
|
1059
|
+
type: "inspect",
|
|
1060
|
+
fn: t
|
|
1061
|
+
}], this.config);
|
|
1062
|
+
}
|
|
870
1063
|
};
|
|
871
1064
|
function match(e) {
|
|
872
1065
|
return function(t) {
|
|
@@ -1302,4 +1495,4 @@ var Bimap = class e {
|
|
|
1302
1495
|
this.patches = [this.patches[this.currentIndex]], this.currentIndex = 0;
|
|
1303
1496
|
}
|
|
1304
1497
|
};
|
|
1305
|
-
export { Bimap, Err, History, Iter, None, Ok, PatchHistory, Queue, Some, Stack, dispatch, isArray, isBoolean, isFunction, isNull, isNumber, isObject, isString, isUndefined, match };
|
|
1498
|
+
export { Bimap, Err, History, Iter, None, Ok, ParIter, PatchHistory, Queue, Some, Stack, dispatch, isArray, isBoolean, isFunction, isNull, isNumber, isObject, isString, isUndefined, match };
|
package/dist/iterator/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/package/iterator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/package/iterator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterator.d.ts","sourceRoot":"","sources":["../../src/package/iterator/iterator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"iterator.d.ts","sourceRoot":"","sources":["../../src/package/iterator/iterator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Типы операций в pipeline для ParIter
|
|
3
|
+
*/
|
|
4
|
+
type ParOpType = "map" | "filter" | "reduce" | "sum" | "count" | "groupBy" | "take" | "takeWhile" | "find" | "first" | "scan" | "inspect";
|
|
5
|
+
/**
|
|
6
|
+
* Операция в pipeline ParIter
|
|
7
|
+
*/
|
|
8
|
+
interface ParOp {
|
|
9
|
+
type: ParOpType;
|
|
10
|
+
fn: Function;
|
|
11
|
+
param?: unknown;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Конфигурация для ParIter
|
|
15
|
+
*/
|
|
16
|
+
export interface ParIterConfig {
|
|
17
|
+
workers?: number;
|
|
18
|
+
chunkSize?: number;
|
|
19
|
+
strategy?: "static" | "dynamic";
|
|
20
|
+
ordered?: boolean;
|
|
21
|
+
allowSideEffects?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Параллельный итератор для data-parallel execution с deterministic reduction.
|
|
25
|
+
*
|
|
26
|
+
* ParIter = data-parallel execution + deterministic reduction
|
|
27
|
+
*
|
|
28
|
+
* Основные принципы:
|
|
29
|
+
* - Разбиение источника (split)
|
|
30
|
+
* - Параллельная обработка чанков
|
|
31
|
+
* - Контролируемая агрегация (reduce / collect / fold)
|
|
32
|
+
* - Не все операции можно параллелизировать
|
|
33
|
+
* - lazy-chain → eager-execution boundary
|
|
34
|
+
*/
|
|
35
|
+
export declare class ParIter<T> {
|
|
36
|
+
private readonly source;
|
|
37
|
+
private readonly ops;
|
|
38
|
+
private readonly config;
|
|
39
|
+
private readonly opsMask;
|
|
40
|
+
constructor(source: Iterable<T>, ops?: ParOp[], config?: ParIterConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Создаёт ParIter из итерируемого объекта
|
|
43
|
+
*/
|
|
44
|
+
static from<T>(iterable: Iterable<T>, config?: ParIterConfig): ParIter<T>;
|
|
45
|
+
/**
|
|
46
|
+
* Альтернативный способ создания ParIter с явной конфигурацией
|
|
47
|
+
*/
|
|
48
|
+
static create<T>(iterable: Iterable<T>, config?: ParIterConfig): ParIter<T>;
|
|
49
|
+
/**
|
|
50
|
+
* Применяет функцию к каждому элементу (параллелизируемая операция)
|
|
51
|
+
*/
|
|
52
|
+
map<U>(fn: (value: T, index: number) => U): ParIter<U>;
|
|
53
|
+
/**
|
|
54
|
+
* Фильтрует элементы по предикату (параллелизируемая операция)
|
|
55
|
+
*/
|
|
56
|
+
filter(predicate: (value: T, index: number) => boolean): ParIter<T>;
|
|
57
|
+
/**
|
|
58
|
+
* Суммирует элементы (операция редукции)
|
|
59
|
+
*/
|
|
60
|
+
sum(): Promise<number>;
|
|
61
|
+
/**
|
|
62
|
+
* Подсчитывает количество элементов (операция редукции)
|
|
63
|
+
*/
|
|
64
|
+
count(): Promise<number>;
|
|
65
|
+
/**
|
|
66
|
+
* Выполняет редукцию с ассоциативной функцией (операция редукции)
|
|
67
|
+
*/
|
|
68
|
+
reduce<U>(reducer: (acc: U, value: T) => U, initial?: U): Promise<U>;
|
|
69
|
+
/**
|
|
70
|
+
* Проверяет, есть ли в pipeline операции, которые нельзя параллелизировать
|
|
71
|
+
*/
|
|
72
|
+
private hasUnsafeOps;
|
|
73
|
+
/**
|
|
74
|
+
* Проверяет, разрешены ли побочные эффекты
|
|
75
|
+
*/
|
|
76
|
+
private checkSideEffectsAllowed;
|
|
77
|
+
/**
|
|
78
|
+
* Выполняет редукцию параллельно
|
|
79
|
+
*/
|
|
80
|
+
private executeReduction;
|
|
81
|
+
/**
|
|
82
|
+
* Разбивает данные на чанки в зависимости от стратегии
|
|
83
|
+
*/
|
|
84
|
+
private splitIntoChunks;
|
|
85
|
+
/**
|
|
86
|
+
* Статическое разбиение на чанки
|
|
87
|
+
*/
|
|
88
|
+
private staticChunking;
|
|
89
|
+
/**
|
|
90
|
+
* Обрабатывает чанки параллельно с использованием Web Workers
|
|
91
|
+
*/
|
|
92
|
+
private processChunksParallel;
|
|
93
|
+
/**
|
|
94
|
+
* Обработка с использованием Web Workers (браузер)
|
|
95
|
+
*/
|
|
96
|
+
private processWithWebWorkers;
|
|
97
|
+
/**
|
|
98
|
+
* Обработка с использованием Bun Workers (Bun runtime)
|
|
99
|
+
*/
|
|
100
|
+
private processWithBunWorkers;
|
|
101
|
+
/**
|
|
102
|
+
* Обрабатывает один чанк с применением pipeline
|
|
103
|
+
*/
|
|
104
|
+
private processChunk;
|
|
105
|
+
/**
|
|
106
|
+
* Собирает результаты в массив (операция редукции)
|
|
107
|
+
*/
|
|
108
|
+
collect(): Promise<T[]>;
|
|
109
|
+
/**
|
|
110
|
+
* Берёт первые n элементов - НЕЛЬЗЯ параллелить
|
|
111
|
+
*/
|
|
112
|
+
take(n: number): never;
|
|
113
|
+
/**
|
|
114
|
+
* Берёт элементы пока предикат возвращает true - НЕЛЬЗЯ параллелить
|
|
115
|
+
*/
|
|
116
|
+
takeWhile(predicate: (value: T, index: number) => boolean): never;
|
|
117
|
+
/**
|
|
118
|
+
* Находит элемент - НЕЛЬЗЯ параллелить
|
|
119
|
+
*/
|
|
120
|
+
find(predicate: (value: T, index: number) => boolean): never;
|
|
121
|
+
/**
|
|
122
|
+
* Получает первый элемент - НЕЛЬЗЯ параллелить
|
|
123
|
+
*/
|
|
124
|
+
first(): never;
|
|
125
|
+
/**
|
|
126
|
+
* Сканирует элементы - НЕЛЬЗЯ параллелить
|
|
127
|
+
*/
|
|
128
|
+
scan<U>(initial: U, accumulator: (acc: U, value: T) => U): never;
|
|
129
|
+
/**
|
|
130
|
+
* Инспектирует элементы - НЕЛЬЗЯ параллелить без разрешения
|
|
131
|
+
*/
|
|
132
|
+
inspect(fn: (value: T, index: number) => void): ParIter<T>;
|
|
133
|
+
}
|
|
134
|
+
export {};
|
|
135
|
+
//# sourceMappingURL=par-iter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"par-iter.d.ts","sourceRoot":"","sources":["../../src/package/iterator/par-iter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"par-worker.d.ts","sourceRoot":"","sources":["../../src/package/iterator/par-worker.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dayme/alien-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "TypeScript utility library with functional programming data structures (Option, Result, Iter, Stack, Queue, Bimap, Match, Dispatch)",
|
|
6
6
|
"keywords": [
|
|
@@ -44,7 +44,6 @@
|
|
|
44
44
|
"prepublishOnly": "bun run build",
|
|
45
45
|
"test": "bun test",
|
|
46
46
|
"test:watch": "bun test --watch",
|
|
47
|
-
"bench": "bun run tests/iterator.bench.ts",
|
|
48
47
|
"playground:dev": "vite dev --config app/playground/vite.config.ts",
|
|
49
48
|
"playground": "concurrently \"bun run dev\" \"bun run playground:dev\"",
|
|
50
49
|
"docs:dev": "cd app/docs && vite",
|
|
@@ -59,12 +58,10 @@
|
|
|
59
58
|
"typescript": "~5.9.3",
|
|
60
59
|
"vite": "npm:rolldown-vite@7.2.5",
|
|
61
60
|
"vite-plugin-dts": "^4.3.0",
|
|
62
|
-
"
|
|
61
|
+
"@types/bun": "^1.3.5"
|
|
63
62
|
},
|
|
64
63
|
"overrides": {
|
|
65
64
|
"vite": "npm:rolldown-vite@7.2.5"
|
|
66
65
|
},
|
|
67
|
-
"dependencies": {
|
|
68
|
-
"@types/bun": "^1.3.5"
|
|
69
|
-
}
|
|
66
|
+
"dependencies": {}
|
|
70
67
|
}
|