@ponceca/firestore-sdk 0.1.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/LICENSE +21 -0
- package/README.md +692 -0
- package/dist/app.d.mts +51 -0
- package/dist/app.d.ts +51 -0
- package/dist/app.js +16 -0
- package/dist/app.js.map +1 -0
- package/dist/app.mjs +16 -0
- package/dist/app.mjs.map +1 -0
- package/dist/auth/index.d.mts +43 -0
- package/dist/auth/index.d.ts +43 -0
- package/dist/auth/index.js +18 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/index.mjs +18 -0
- package/dist/auth/index.mjs.map +1 -0
- package/dist/chunk-2RQUHE2K.js +719 -0
- package/dist/chunk-2RQUHE2K.js.map +1 -0
- package/dist/chunk-4CV4JOE5.js +27 -0
- package/dist/chunk-4CV4JOE5.js.map +1 -0
- package/dist/chunk-57XXMSJA.js +65 -0
- package/dist/chunk-57XXMSJA.js.map +1 -0
- package/dist/chunk-6J3LNKUQ.js +213 -0
- package/dist/chunk-6J3LNKUQ.js.map +1 -0
- package/dist/chunk-BXV7KTHB.js +645 -0
- package/dist/chunk-BXV7KTHB.js.map +1 -0
- package/dist/chunk-C3PCJJX4.mjs +645 -0
- package/dist/chunk-C3PCJJX4.mjs.map +1 -0
- package/dist/chunk-C6SKWUQV.mjs +213 -0
- package/dist/chunk-C6SKWUQV.mjs.map +1 -0
- package/dist/chunk-DXPQJR5D.mjs +2469 -0
- package/dist/chunk-DXPQJR5D.mjs.map +1 -0
- package/dist/chunk-MRVKMKSO.mjs +65 -0
- package/dist/chunk-MRVKMKSO.mjs.map +1 -0
- package/dist/chunk-NFEGQTCC.mjs +27 -0
- package/dist/chunk-NFEGQTCC.mjs.map +1 -0
- package/dist/chunk-RSBBZLDE.js +128 -0
- package/dist/chunk-RSBBZLDE.js.map +1 -0
- package/dist/chunk-RZWTSZSJ.js +2469 -0
- package/dist/chunk-RZWTSZSJ.js.map +1 -0
- package/dist/chunk-SZKHE2TQ.mjs +719 -0
- package/dist/chunk-SZKHE2TQ.mjs.map +1 -0
- package/dist/chunk-ZJ4A4Y2T.mjs +128 -0
- package/dist/chunk-ZJ4A4Y2T.mjs.map +1 -0
- package/dist/firestore/index.d.mts +1476 -0
- package/dist/firestore/index.d.ts +1476 -0
- package/dist/firestore/index.js +156 -0
- package/dist/firestore/index.js.map +1 -0
- package/dist/firestore/index.mjs +156 -0
- package/dist/firestore/index.mjs.map +1 -0
- package/dist/http-A2S5CWEV.js +10 -0
- package/dist/http-A2S5CWEV.js.map +1 -0
- package/dist/http-SZFONH6Z.mjs +10 -0
- package/dist/http-SZFONH6Z.mjs.map +1 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +171 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +171 -0
- package/dist/index.mjs.map +1 -0
- package/dist/indexeddb-mutation-queue-5EB7C2D5.js +192 -0
- package/dist/indexeddb-mutation-queue-5EB7C2D5.js.map +1 -0
- package/dist/indexeddb-mutation-queue-M2MAH4E4.mjs +192 -0
- package/dist/indexeddb-mutation-queue-M2MAH4E4.mjs.map +1 -0
- package/dist/indexeddb-store-D23ZY3PR.mjs +162 -0
- package/dist/indexeddb-store-D23ZY3PR.mjs.map +1 -0
- package/dist/indexeddb-store-DNWBZUQE.js +162 -0
- package/dist/indexeddb-store-DNWBZUQE.js.map +1 -0
- package/dist/snapshot-MCQVLVHL.js +22 -0
- package/dist/snapshot-MCQVLVHL.js.map +1 -0
- package/dist/snapshot-ZWZFIFZD.mjs +22 -0
- package/dist/snapshot-ZWZFIFZD.mjs.map +1 -0
- package/dist/types-meoR-Ecp.d.mts +269 -0
- package/dist/types-meoR-Ecp.d.ts +269 -0
- package/package.json +78 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Firestore SDK - Tipos TypeScript
|
|
3
|
+
* Compatible con Firebase Firestore v9
|
|
4
|
+
*/
|
|
5
|
+
/** Datos de un documento Firestore */
|
|
6
|
+
type DocumentData = Record<string, unknown>;
|
|
7
|
+
/** Tipo para campos anidados usando dot notation */
|
|
8
|
+
type FieldPath = string;
|
|
9
|
+
/** Unión de todos los field values especiales */
|
|
10
|
+
type FieldValue = {
|
|
11
|
+
readonly isEqual: (other: FieldValue) => boolean;
|
|
12
|
+
};
|
|
13
|
+
/** Opciones para inicializar la app (idéntico a Firebase) */
|
|
14
|
+
interface FirebaseOptions {
|
|
15
|
+
/** API Key del proyecto (para autenticación con API keys) */
|
|
16
|
+
apiKey?: string;
|
|
17
|
+
/** ID del proyecto (requerido) */
|
|
18
|
+
projectId: string;
|
|
19
|
+
/** Auth Domain para autenticación OAuth */
|
|
20
|
+
authDomain?: string;
|
|
21
|
+
/** URL del Storage Bucket */
|
|
22
|
+
storageBucket?: string;
|
|
23
|
+
/** ID del sender para mensajería */
|
|
24
|
+
messagingSenderId?: string;
|
|
25
|
+
/** App ID de Firebase */
|
|
26
|
+
appId?: string;
|
|
27
|
+
/** ID de medición para Analytics */
|
|
28
|
+
measurementId?: string;
|
|
29
|
+
/** URL base del servidor (para self-hosted, no existe en Firebase original) */
|
|
30
|
+
baseUrl?: string;
|
|
31
|
+
/** ID de la base de datos (default: "(default)") */
|
|
32
|
+
databaseId?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Proveedor de tokens de autenticación
|
|
36
|
+
* Permite integrar cualquier sistema de auth (Firebase Auth, Auth0, custom, etc.)
|
|
37
|
+
*/
|
|
38
|
+
interface AuthTokenProvider {
|
|
39
|
+
/** Obtiene el token actual (puede ser async para refresh) */
|
|
40
|
+
getToken(): Promise<string | null>;
|
|
41
|
+
/** Listener para cambios de auth state */
|
|
42
|
+
onAuthStateChanged?(callback: (token: string | null) => void): () => void;
|
|
43
|
+
}
|
|
44
|
+
/** Configuración de Firestore (idéntico a Firebase) */
|
|
45
|
+
interface FirestoreSettings {
|
|
46
|
+
/** Host del servidor (ej: "localhost:3000" o "firestore.googleapis.com") */
|
|
47
|
+
host?: string;
|
|
48
|
+
/** Usar SSL/TLS */
|
|
49
|
+
ssl?: boolean;
|
|
50
|
+
/** Ignorar certificados no válidos (solo desarrollo) */
|
|
51
|
+
experimentalForceLongPolling?: boolean;
|
|
52
|
+
/** Usar fetch en lugar de WebChannel */
|
|
53
|
+
experimentalAutoDetectLongPolling?: boolean;
|
|
54
|
+
/** Tamaño de caché en bytes */
|
|
55
|
+
cacheSizeBytes?: number;
|
|
56
|
+
/** Habilitar persistencia multi-tab */
|
|
57
|
+
synchronizeTabs?: boolean;
|
|
58
|
+
/** Timeout para requests (ms) */
|
|
59
|
+
timeout?: number;
|
|
60
|
+
/** Token de autenticación (se configura automáticamente si hay Auth) */
|
|
61
|
+
authToken?: string;
|
|
62
|
+
/** Proveedor de tokens personalizado */
|
|
63
|
+
authTokenProvider?: AuthTokenProvider;
|
|
64
|
+
/** Permite queries flexibles fuera de restricciones de Firestore (solo PostgreSQL) */
|
|
65
|
+
allowFlexibleQueries?: boolean;
|
|
66
|
+
/** Número máximo de reintentos para errores transitorios de red */
|
|
67
|
+
maxRetries?: number;
|
|
68
|
+
/** Delay inicial de reintento en ms (backoff exponencial) */
|
|
69
|
+
retryInitialDelayMs?: number;
|
|
70
|
+
/** Delay máximo de reintento en ms */
|
|
71
|
+
retryMaxDelayMs?: number;
|
|
72
|
+
}
|
|
73
|
+
/** Tipo de referencia */
|
|
74
|
+
type ReferenceType = 'document' | 'collection';
|
|
75
|
+
/** Referencia base (abstracta) */
|
|
76
|
+
interface BaseReference {
|
|
77
|
+
/** Tipo de referencia */
|
|
78
|
+
readonly type: ReferenceType;
|
|
79
|
+
/** Path completo */
|
|
80
|
+
readonly path: string;
|
|
81
|
+
/** ID del elemento (último segmento del path) */
|
|
82
|
+
readonly id: string;
|
|
83
|
+
/** Referencia a Firestore */
|
|
84
|
+
readonly firestore: FirestoreInstance;
|
|
85
|
+
}
|
|
86
|
+
/** Referencia a un documento */
|
|
87
|
+
interface DocumentReference<T = DocumentData> extends BaseReference {
|
|
88
|
+
readonly type: 'document';
|
|
89
|
+
/** Referencia a la colección padre */
|
|
90
|
+
readonly parent: CollectionReference<T>;
|
|
91
|
+
}
|
|
92
|
+
/** Referencia a una colección */
|
|
93
|
+
interface CollectionReference<_T = DocumentData> extends BaseReference {
|
|
94
|
+
readonly type: 'collection';
|
|
95
|
+
/** Referencia al documento padre (si es subcolección) */
|
|
96
|
+
readonly parent: DocumentReference | null;
|
|
97
|
+
}
|
|
98
|
+
/** Query de Firestore */
|
|
99
|
+
interface Query<_T = DocumentData> {
|
|
100
|
+
readonly type: 'query' | 'collectionGroup';
|
|
101
|
+
readonly firestore: FirestoreInstance;
|
|
102
|
+
/** Path de la colección */
|
|
103
|
+
readonly path: string;
|
|
104
|
+
}
|
|
105
|
+
/** Operadores de comparación */
|
|
106
|
+
type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'array-contains-any' | 'in' | 'not-in';
|
|
107
|
+
/** Dirección de ordenamiento */
|
|
108
|
+
type OrderByDirection = 'asc' | 'desc';
|
|
109
|
+
/** Constraint de query: where */
|
|
110
|
+
interface WhereConstraint {
|
|
111
|
+
readonly type: 'where';
|
|
112
|
+
readonly field: string;
|
|
113
|
+
readonly op: WhereFilterOp;
|
|
114
|
+
readonly value: unknown;
|
|
115
|
+
}
|
|
116
|
+
/** Constraint de query: orderBy */
|
|
117
|
+
interface OrderByConstraint {
|
|
118
|
+
readonly type: 'orderBy';
|
|
119
|
+
readonly field: string;
|
|
120
|
+
readonly direction: OrderByDirection;
|
|
121
|
+
}
|
|
122
|
+
/** Constraint de query: limit */
|
|
123
|
+
interface LimitConstraint {
|
|
124
|
+
readonly type: 'limit' | 'limitToLast';
|
|
125
|
+
readonly limit: number;
|
|
126
|
+
}
|
|
127
|
+
/** Constraint de query: startAt/startAfter */
|
|
128
|
+
interface StartAtConstraint {
|
|
129
|
+
readonly type: 'startAt' | 'startAfter';
|
|
130
|
+
readonly values: unknown[];
|
|
131
|
+
readonly inclusive: boolean;
|
|
132
|
+
}
|
|
133
|
+
/** Constraint de query: endAt/endBefore */
|
|
134
|
+
interface EndAtConstraint {
|
|
135
|
+
readonly type: 'endAt' | 'endBefore';
|
|
136
|
+
readonly values: unknown[];
|
|
137
|
+
readonly inclusive: boolean;
|
|
138
|
+
}
|
|
139
|
+
/** Constraint de query: and (filtro compuesto) */
|
|
140
|
+
interface AndConstraint {
|
|
141
|
+
readonly type: 'and';
|
|
142
|
+
readonly constraints: QueryConstraint[];
|
|
143
|
+
}
|
|
144
|
+
/** Constraint de query: or (filtro compuesto) */
|
|
145
|
+
interface OrConstraint {
|
|
146
|
+
readonly type: 'or';
|
|
147
|
+
readonly constraints: QueryConstraint[];
|
|
148
|
+
}
|
|
149
|
+
/** Constraint de offset para paginación directa */
|
|
150
|
+
interface OffsetConstraint {
|
|
151
|
+
readonly type: 'offset';
|
|
152
|
+
readonly count: number;
|
|
153
|
+
}
|
|
154
|
+
/** Unión de todos los constraints */
|
|
155
|
+
type QueryConstraint = WhereConstraint | OrderByConstraint | LimitConstraint | StartAtConstraint | EndAtConstraint | AndConstraint | OrConstraint | OffsetConstraint;
|
|
156
|
+
/** Metadatos de un snapshot */
|
|
157
|
+
interface SnapshotMetadata {
|
|
158
|
+
/** Si viene de cache local */
|
|
159
|
+
readonly fromCache: boolean;
|
|
160
|
+
/** Si tiene cambios pendientes de sincronizar */
|
|
161
|
+
readonly hasPendingWrites: boolean;
|
|
162
|
+
}
|
|
163
|
+
/** Tipo de cambio en un documento */
|
|
164
|
+
type DocumentChangeType = 'added' | 'modified' | 'removed';
|
|
165
|
+
/** Snapshot de un documento */
|
|
166
|
+
interface DocumentSnapshot<T = DocumentData> {
|
|
167
|
+
/** ID del documento */
|
|
168
|
+
readonly id: string;
|
|
169
|
+
/** Referencia al documento */
|
|
170
|
+
readonly ref: DocumentReference<T>;
|
|
171
|
+
/** Si el documento existe */
|
|
172
|
+
exists(): boolean;
|
|
173
|
+
/** Obtener datos del documento */
|
|
174
|
+
data(): T | undefined;
|
|
175
|
+
/** Obtener un campo específico */
|
|
176
|
+
get(fieldPath: FieldPath): unknown;
|
|
177
|
+
/** Metadatos */
|
|
178
|
+
readonly metadata: SnapshotMetadata;
|
|
179
|
+
}
|
|
180
|
+
/** Cambio en un documento (para onSnapshot) */
|
|
181
|
+
interface DocumentChange<T = DocumentData> {
|
|
182
|
+
/** Tipo de cambio */
|
|
183
|
+
readonly type: DocumentChangeType;
|
|
184
|
+
/** Snapshot del documento */
|
|
185
|
+
readonly doc: DocumentSnapshot<T>;
|
|
186
|
+
/** Índice anterior (-1 si es nuevo) */
|
|
187
|
+
readonly oldIndex: number;
|
|
188
|
+
/** Índice nuevo (-1 si fue eliminado) */
|
|
189
|
+
readonly newIndex: number;
|
|
190
|
+
}
|
|
191
|
+
/** Snapshot de una query */
|
|
192
|
+
interface QuerySnapshot<T = DocumentData> {
|
|
193
|
+
/** Referencia a la query */
|
|
194
|
+
readonly query: Query<T>;
|
|
195
|
+
/** Documentos en el resultado */
|
|
196
|
+
readonly docs: DocumentSnapshot<T>[];
|
|
197
|
+
/** Si está vacío */
|
|
198
|
+
readonly empty: boolean;
|
|
199
|
+
/** Número de documentos */
|
|
200
|
+
readonly size: number;
|
|
201
|
+
/** Metadatos */
|
|
202
|
+
readonly metadata: SnapshotMetadata;
|
|
203
|
+
/** Iterar sobre documentos */
|
|
204
|
+
forEach(callback: (doc: DocumentSnapshot<T>) => void): void;
|
|
205
|
+
/** Obtener cambios desde el último snapshot */
|
|
206
|
+
docChanges(): DocumentChange<T>[];
|
|
207
|
+
}
|
|
208
|
+
/** Instancia de FirebaseApp */
|
|
209
|
+
interface FirebaseApp {
|
|
210
|
+
/** Nombre de la app */
|
|
211
|
+
readonly name: string;
|
|
212
|
+
/** Opciones de configuración */
|
|
213
|
+
readonly options: FirebaseOptions;
|
|
214
|
+
}
|
|
215
|
+
/** Instancia de Firestore */
|
|
216
|
+
interface FirestoreInstance {
|
|
217
|
+
/** App asociada */
|
|
218
|
+
readonly app: FirebaseApp;
|
|
219
|
+
/** Tipo de instancia */
|
|
220
|
+
readonly type: 'firestore';
|
|
221
|
+
/** Configuración interna */
|
|
222
|
+
readonly _config: FirestoreSettings & {
|
|
223
|
+
host: string;
|
|
224
|
+
ssl: boolean;
|
|
225
|
+
timeout: number;
|
|
226
|
+
maxRetries: number;
|
|
227
|
+
retryInitialDelayMs: number;
|
|
228
|
+
retryMaxDelayMs: number;
|
|
229
|
+
};
|
|
230
|
+
/** Configuración pública (compatible con Firebase SDK) */
|
|
231
|
+
readonly settings: FirestoreSettings;
|
|
232
|
+
/** Project ID */
|
|
233
|
+
readonly _projectId: string;
|
|
234
|
+
/** Database ID */
|
|
235
|
+
readonly _databaseId: string;
|
|
236
|
+
/** Obtiene el token de autenticación actual */
|
|
237
|
+
getToken(): Promise<string | null>;
|
|
238
|
+
}
|
|
239
|
+
/** Alias para compatibilidad con Firebase SDK */
|
|
240
|
+
type Firestore = FirestoreInstance;
|
|
241
|
+
/** Opciones para setDoc */
|
|
242
|
+
interface SetOptions {
|
|
243
|
+
/** Merge con datos existentes */
|
|
244
|
+
merge?: boolean;
|
|
245
|
+
/** Campos específicos a mergear */
|
|
246
|
+
mergeFields?: FieldPath[];
|
|
247
|
+
}
|
|
248
|
+
/** Función para cancelar suscripción */
|
|
249
|
+
type Unsubscribe = () => void;
|
|
250
|
+
/** Origen de lectura para listeners en tiempo real */
|
|
251
|
+
type ListenSource = 'default' | 'cache';
|
|
252
|
+
/** Opciones para onSnapshot */
|
|
253
|
+
interface SnapshotListenOptions {
|
|
254
|
+
/** Incluir cambios de metadatos */
|
|
255
|
+
includeMetadataChanges?: boolean;
|
|
256
|
+
/** Origen de datos del listener (Firestore moderno) */
|
|
257
|
+
source?: ListenSource;
|
|
258
|
+
}
|
|
259
|
+
/** Códigos de error de Firestore */
|
|
260
|
+
type FirestoreErrorCode = 'cancelled' | 'unknown' | 'invalid-argument' | 'deadline-exceeded' | 'not-found' | 'already-exists' | 'permission-denied' | 'resource-exhausted' | 'failed-precondition' | 'aborted' | 'out-of-range' | 'unimplemented' | 'internal' | 'unavailable' | 'data-loss' | 'unauthenticated';
|
|
261
|
+
/** Error de Firestore */
|
|
262
|
+
interface FirestoreError extends Error {
|
|
263
|
+
/** Código de error */
|
|
264
|
+
readonly code: FirestoreErrorCode;
|
|
265
|
+
/** Mensaje de error */
|
|
266
|
+
readonly message: string;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export type { AuthTokenProvider as A, CollectionReference as C, DocumentChange as D, EndAtConstraint as E, FieldPath as F, ListenSource as L, OrderByDirection as O, Query as Q, SetOptions as S, Unsubscribe as U, WhereFilterOp as W, DocumentData as a, DocumentReference as b, DocumentSnapshot as c, FieldValue as d, FirebaseApp as e, FirebaseOptions as f, Firestore as g, FirestoreError as h, FirestoreErrorCode as i, FirestoreSettings as j, QuerySnapshot as k, FirestoreInstance as l, LimitConstraint as m, OrderByConstraint as n, QueryConstraint as o, StartAtConstraint as p, WhereConstraint as q, SnapshotListenOptions as r, DocumentChangeType as s };
|
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ponceca/firestore-sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "SDK JavaScript/TypeScript compatible con Firebase Firestore v9",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./app": {
|
|
15
|
+
"types": "./dist/app.d.ts",
|
|
16
|
+
"import": "./dist/app.mjs",
|
|
17
|
+
"require": "./dist/app.js"
|
|
18
|
+
},
|
|
19
|
+
"./firestore": {
|
|
20
|
+
"types": "./dist/firestore/index.d.ts",
|
|
21
|
+
"import": "./dist/firestore/index.mjs",
|
|
22
|
+
"require": "./dist/firestore/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./auth": {
|
|
25
|
+
"types": "./dist/auth/index.d.ts",
|
|
26
|
+
"import": "./dist/auth/index.mjs",
|
|
27
|
+
"require": "./dist/auth/index.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/ponceca/firestore.git",
|
|
33
|
+
"directory": "sdk/js"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/ponceca/firestore/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/ponceca/firestore/tree/main/sdk/js#readme",
|
|
39
|
+
"files": [
|
|
40
|
+
"dist",
|
|
41
|
+
"LICENSE"
|
|
42
|
+
], "sideEffects": false,
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "tsup",
|
|
45
|
+
"dev": "tsup --watch",
|
|
46
|
+
"test": "vitest",
|
|
47
|
+
"test:run": "vitest run",
|
|
48
|
+
"test:realworld:sdk": "vitest run tests/search-real-world.test.ts --reporter=verbose",
|
|
49
|
+
"test:realworld:compiled": "npm run build && vitest run tests/search-real-world.test.ts --reporter=verbose",
|
|
50
|
+
"test:production-suite": "vitest run tests/production-suite/",
|
|
51
|
+
"test:coverage": "vitest run --coverage",
|
|
52
|
+
"lint": "eslint src --ext .ts",
|
|
53
|
+
"typecheck": "tsc --noEmit",
|
|
54
|
+
"release:check": "npm run typecheck && npm run build && npm run test:production-suite"
|
|
55
|
+
},
|
|
56
|
+
"keywords": [
|
|
57
|
+
"firestore",
|
|
58
|
+
"firebase",
|
|
59
|
+
"database",
|
|
60
|
+
"realtime",
|
|
61
|
+
"sdk"
|
|
62
|
+
],
|
|
63
|
+
"author": "ponceca",
|
|
64
|
+
"license": "MIT",
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@types/node": "^20.11.0",
|
|
67
|
+
"@types/ws": "^8.18.1",
|
|
68
|
+
"@vitest/coverage-v8": "^1.2.0",
|
|
69
|
+
"fake-indexeddb": "^6.2.5",
|
|
70
|
+
"tsup": "^8.0.1",
|
|
71
|
+
"typescript": "^5.3.3",
|
|
72
|
+
"vitest": "^1.2.0",
|
|
73
|
+
"ws": "^8.19.0"
|
|
74
|
+
},
|
|
75
|
+
"engines": {
|
|
76
|
+
"node": ">=18.0.0"
|
|
77
|
+
}
|
|
78
|
+
}
|