@toiroakr/lines-db 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.
@@ -0,0 +1,486 @@
1
+ import { StandardSchemaV1 } from "@standard-schema/spec";
2
+
3
+ //#region src/sqlite-adapter.d.ts
4
+
5
+ /**
6
+ * SQLite adapter that works across Node.js, Bun, and Deno
7
+ */
8
+ /**
9
+ * Common interface for SQLite database
10
+ */
11
+ interface SQLiteDatabase {
12
+ prepare(sql: string): SQLiteStatement;
13
+ exec(sql: string): void;
14
+ close(): void;
15
+ }
16
+ interface SQLiteStatement {
17
+ run(...params: any[]): {
18
+ changes: number;
19
+ lastInsertRowid: number | bigint;
20
+ };
21
+ get(...params: any[]): any;
22
+ all(...params: any[]): any[];
23
+ }
24
+ //#endregion
25
+ //#region src/types.d.ts
26
+ type Table = Record<string, unknown>;
27
+ type StandardSchema<Input extends Table = Table, Output extends Table = Input> = StandardSchemaV1<Input, Output>;
28
+ type StandardSchemaResult<Output> = StandardSchemaV1.Result<Output>;
29
+ type StandardSchemaIssue = StandardSchemaV1.Issue;
30
+ type InferInput<T$1> = T$1 extends StandardSchemaV1<infer I, unknown> ? I : never;
31
+ type InferOutput<T$1> = T$1 extends StandardSchemaV1<unknown, infer O> ? O : never;
32
+ interface ForeignKeyDefinition {
33
+ columns: string[];
34
+ references: {
35
+ table: string;
36
+ columns: string[];
37
+ };
38
+ onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
39
+ onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
40
+ }
41
+ interface IndexDefinition {
42
+ name?: string;
43
+ columns: string[];
44
+ unique?: boolean;
45
+ }
46
+ interface TableSchema {
47
+ name: string;
48
+ columns: ColumnDefinition[];
49
+ foreignKeys?: ForeignKeyDefinition[];
50
+ indexes?: IndexDefinition[];
51
+ }
52
+ interface ColumnDefinition {
53
+ name: string;
54
+ type: 'TEXT' | 'INTEGER' | 'REAL' | 'BLOB' | 'NULL' | 'JSON';
55
+ primaryKey?: boolean;
56
+ notNull?: boolean;
57
+ unique?: boolean;
58
+ valueType?: 'boolean';
59
+ }
60
+ type TableDefs = Record<string, Table>;
61
+ declare const TABLES_BRAND: unique symbol;
62
+ interface DatabaseConfig<_Tables extends TableDefs = TableDefs> {
63
+ dataDir: string;
64
+ readonly [TABLES_BRAND]?: _Tables;
65
+ }
66
+ interface TableConfig {
67
+ jsonlPath: string;
68
+ schema?: TableSchema;
69
+ autoInferSchema?: boolean;
70
+ validationSchema?: StandardSchema;
71
+ }
72
+ interface ValidationError extends Error {
73
+ name: 'ValidationError';
74
+ issues: ReadonlyArray<StandardSchemaIssue>;
75
+ }
76
+ type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
77
+ interface JsonObject {
78
+ [key: string]: JsonValue;
79
+ }
80
+ type JsonArray = JsonValue[];
81
+ type WhereValue<T$1> = T$1 | ((value: T$1) => boolean);
82
+ type WhereObject<T$1 extends Table> = { [K in keyof T$1]?: WhereValue<T$1[K]> };
83
+ type WhereCondition<T$1 extends Table> = WhereObject<T$1> | WhereConditionArray<T$1>;
84
+ type WhereConditionArray<T$1 extends Table> = Array<WhereObject<T$1> | WhereConditionArray<T$1>>;
85
+ //#endregion
86
+ //#region src/database.d.ts
87
+ declare class LinesDB<Tables extends TableDefs> {
88
+ private db;
89
+ private config;
90
+ private schemas;
91
+ private validationSchemas;
92
+ private tables;
93
+ private inTransaction;
94
+ private constructor();
95
+ static create<Tables extends TableDefs>(config: DatabaseConfig<Tables>, dbPath?: string): LinesDB<Tables>;
96
+ /**
97
+ * Initialize database by loading all JSONL files
98
+ */
99
+ initialize(): Promise<void>;
100
+ /**
101
+ * Load a single table from JSONL file
102
+ */
103
+ private loadTable;
104
+ /**
105
+ * Create table in SQLite with constraints and indexes
106
+ */
107
+ private createTable;
108
+ /**
109
+ * Quote table name to handle special characters in SQL
110
+ */
111
+ private quoteTableName;
112
+ /**
113
+ * Quote identifier for SQL statements, escaping embedded quotes
114
+ */
115
+ private quoteIdentifier;
116
+ /**
117
+ * Insert data into table
118
+ */
119
+ private insertData;
120
+ /**
121
+ * Execute a raw SQL query
122
+ */
123
+ query<T$1 = unknown>(sql: string, params?: (string | number | bigint | null | Uint8Array)[]): T$1[];
124
+ /**
125
+ * Execute a SQL query that returns a single row
126
+ */
127
+ queryOne<T$1 = unknown>(sql: string, params?: (string | number | bigint | null | Uint8Array)[]): T$1 | null;
128
+ /**
129
+ * Execute a SQL statement (INSERT, UPDATE, DELETE)
130
+ */
131
+ execute(sql: string, params?: (string | number | bigint | null | Uint8Array)[]): {
132
+ changes: number | bigint;
133
+ lastInsertRowid: number | bigint;
134
+ };
135
+ /**
136
+ * Find rows by condition (supports OR/AND with arrays and function filters)
137
+ * If where is not provided, returns all rows
138
+ */
139
+ find<K$1 extends keyof Tables & string>(tableName: K$1, where?: WhereCondition<Tables[K$1]>): Tables[K$1][];
140
+ /**
141
+ * Find a single row by condition (supports OR/AND with arrays and function filters)
142
+ */
143
+ findOne<K$1 extends keyof Tables & string>(tableName: K$1, where: WhereCondition<Tables[K$1]>): Tables[K$1] | null;
144
+ /**
145
+ * Deserialize JSON columns in a row
146
+ */
147
+ private deserializeRow;
148
+ /**
149
+ * Validate data using StandardSchema
150
+ * Note: Only synchronous validation is supported
151
+ */
152
+ private validateData;
153
+ /**
154
+ * Insert a row into a table with validation
155
+ */
156
+ insert<K$1 extends keyof Tables & string>(tableName: K$1, data: Tables[K$1]): {
157
+ changes: number | bigint;
158
+ lastInsertRowid: number | bigint;
159
+ };
160
+ /**
161
+ * Batch insert rows with validation per record.
162
+ */
163
+ batchInsert<K$1 extends keyof Tables & string>(tableName: K$1, records: Tables[K$1][]): {
164
+ changes: number | bigint;
165
+ lastInsertRowid: number | bigint;
166
+ };
167
+ /**
168
+ * Update rows in a table with validation (supports OR/AND with arrays)
169
+ * Note: Function filters are not supported for update operations
170
+ * Note: By default, validation is enabled. For partial updates, existing data is fetched
171
+ * and merged before validation. Set options.validate = false to disable validation.
172
+ */
173
+ update<K$1 extends keyof Tables & string>(tableName: K$1, data: Partial<Tables[K$1]>, where: WhereCondition<Tables[K$1]>, options?: {
174
+ validate?: boolean;
175
+ }): {
176
+ changes: number | bigint;
177
+ lastInsertRowid: number | bigint;
178
+ };
179
+ /**
180
+ * Batch update rows with record-specific values and validation.
181
+ * Each record must include the primary key to identify the target row.
182
+ * Validation runs once per merged record unless explicitly disabled.
183
+ */
184
+ batchUpdate<K$1 extends keyof Tables & string>(tableName: K$1, records: Array<Partial<Tables[K$1]> & Record<string, unknown>>, options?: {
185
+ validate?: boolean;
186
+ }): {
187
+ changes: number | bigint;
188
+ lastInsertRowid: number | bigint;
189
+ };
190
+ /**
191
+ * Delete rows from a table (supports OR/AND with arrays)
192
+ * Note: Function filters are not supported for delete operations
193
+ */
194
+ delete<K$1 extends keyof Tables & string>(tableName: K$1, where: WhereCondition<Tables[K$1]>): {
195
+ changes: number | bigint;
196
+ lastInsertRowid: number | bigint;
197
+ };
198
+ /**
199
+ * Batch delete rows by primary key.
200
+ */
201
+ batchDelete<K$1 extends keyof Tables & string>(tableName: K$1, records: Array<Partial<Tables[K$1]> & Record<string, unknown>>): {
202
+ changes: number | bigint;
203
+ lastInsertRowid: number | bigint;
204
+ };
205
+ /**
206
+ * Normalize value for SQLite
207
+ */
208
+ private normalizeValue;
209
+ /**
210
+ * Build WHERE clause from condition (supports OR/AND with arrays and functions)
211
+ */
212
+ private buildWhereClause;
213
+ /**
214
+ * Apply OR condition with function filters by evaluating each row against the condition
215
+ */
216
+ private applyOrConditionWithFilters;
217
+ /**
218
+ * Check if a row matches an OR/AND condition (recursively)
219
+ */
220
+ private matchesOrCondition;
221
+ /**
222
+ * Apply function filters to rows
223
+ */
224
+ private applyFunctionFilters;
225
+ /**
226
+ * Get table schema
227
+ */
228
+ getSchema(tableName: string): TableSchema | undefined;
229
+ /**
230
+ * Get all table names
231
+ */
232
+ getTableNames(): string[];
233
+ /**
234
+ * Sync a specific table back to its JSONL file
235
+ * Uses backward transformation when available
236
+ */
237
+ private syncTable;
238
+ /**
239
+ * Sync database changes back to JSONL files
240
+ * Uses backward transformation when available
241
+ */
242
+ sync(): Promise<void>;
243
+ /**
244
+ * Execute a function within a transaction
245
+ * Automatically commits on success or rolls back on error
246
+ */
247
+ transaction<T$1>(fn: (tx: LinesDB<Tables>) => Promise<T$1> | T$1): Promise<T$1>;
248
+ /**
249
+ * Close the database connection
250
+ */
251
+ close(): Promise<void>;
252
+ /**
253
+ * Get the underlying SQLite database instance
254
+ */
255
+ getDb(): SQLiteDatabase;
256
+ }
257
+ //#endregion
258
+ //#region src/jsonl-reader.d.ts
259
+ declare class JsonlReader {
260
+ private static overrides;
261
+ /**
262
+ * Temporarily override the data returned for specific JSONL files.
263
+ * Useful for scenarios like migration validation where in-memory data should be used.
264
+ */
265
+ static withOverrides<T$1>(overrides: Map<string, JsonObject[]>, fn: () => Promise<T$1>): Promise<T$1>;
266
+ /**
267
+ * Read JSONL file and parse each line as JSON
268
+ */
269
+ static read(filePath: string): Promise<JsonObject[]>;
270
+ /**
271
+ * Infer schema from JSONL data
272
+ */
273
+ static inferSchema(tableName: string, data: JsonObject[]): TableSchema;
274
+ private static inferType;
275
+ }
276
+ //#endregion
277
+ //#region src/jsonl-writer.d.ts
278
+ declare class JsonlWriter {
279
+ /**
280
+ * Write data to JSONL file
281
+ */
282
+ static write(filePath: string, data: JsonObject[]): Promise<void>;
283
+ /**
284
+ * Append data to JSONL file
285
+ */
286
+ static append(filePath: string, data: JsonObject[]): Promise<void>;
287
+ }
288
+ //#endregion
289
+ //#region src/schema-loader.d.ts
290
+ declare class SchemaLoader {
291
+ /**
292
+ * Load a validation schema file for a table
293
+ * Requires ${tableName}.schema.ts to exist alongside the JSONL file
294
+ */
295
+ static loadSchema(jsonlPath: string): Promise<StandardSchema>;
296
+ /**
297
+ * Check if an object implements the StandardSchema interface
298
+ */
299
+ private static isStandardSchema;
300
+ }
301
+ //#endregion
302
+ //#region src/directory-scanner.d.ts
303
+ declare class DirectoryScanner {
304
+ /**
305
+ * Scan directory for JSONL files and create table configurations
306
+ */
307
+ static scanDirectory(dataDir: string): Promise<Map<string, TableConfig>>;
308
+ }
309
+ //#endregion
310
+ //#region src/schema.d.ts
311
+ /**
312
+ * Schema options for defining constraints and indexes
313
+ */
314
+ interface SchemaOptions {
315
+ /**
316
+ * Primary key columns
317
+ */
318
+ primaryKey?: string[];
319
+ /**
320
+ * Foreign key constraints
321
+ */
322
+ foreignKeys?: ForeignKeyDefinition[];
323
+ /**
324
+ * Indexes to create
325
+ */
326
+ indexes?: IndexDefinition[];
327
+ /**
328
+ * Backward transformation from Output to Input
329
+ * Required when Input and Output types differ (e.g., with transformations)
330
+ */
331
+ backward?: (output: Table) => Table;
332
+ }
333
+ /**
334
+ * BiDirectional Schema interface
335
+ * Extends StandardSchema with optional backward transformation and schema metadata
336
+ */
337
+ interface BiDirectionalSchema<Input extends Table = Table, Output extends Table = Input> extends StandardSchema<Input, Output> {
338
+ /**
339
+ * Backward transformation from Output to Input
340
+ * Required when Input and Output types differ (e.g., with transformations)
341
+ */
342
+ backward?: (output: Output) => Input;
343
+ /**
344
+ * Primary key columns
345
+ */
346
+ primaryKey?: string[];
347
+ /**
348
+ * Foreign key constraints
349
+ */
350
+ foreignKeys?: ForeignKeyDefinition[];
351
+ /**
352
+ * Indexes to create
353
+ */
354
+ indexes?: IndexDefinition[];
355
+ }
356
+ /**
357
+ * Define a bidirectional schema with optional backward transformation
358
+ *
359
+ * @param schema - Standard Schema for validation
360
+ * @param optionsOrBackward - Optional SchemaOptions object or backward transformation function (Output → Input)
361
+ * Required when schema performs transformations
362
+ *
363
+ * @example
364
+ * // No transformation - backward not needed
365
+ * const schema = defineSchema(
366
+ * v.object({ id: v.number(), name: v.string() })
367
+ * );
368
+ *
369
+ * @example
370
+ * // With transformation - backward recommended (legacy)
371
+ * const schema = defineSchema(
372
+ * v.pipe(v.string(), v.transform(Number)),
373
+ * (num) => String(num) // backward: number → string
374
+ * );
375
+ *
376
+ * @example
377
+ * // With primary key and foreign key
378
+ * const schema = defineSchema(
379
+ * v.object({ id: v.number(), customerId: v.number() }),
380
+ * {
381
+ * primaryKey: ['id'],
382
+ * foreignKeys: [
383
+ * { columns: ['customerId'], references: { table: 'users', columns: ['id'] } }
384
+ * ]
385
+ * }
386
+ * );
387
+ */
388
+ declare function defineSchema<Input extends Table, Output extends Table>(schema: StandardSchema<Input, Output>, optionsOrBackward?: SchemaOptions | ((output: Output) => Input)): BiDirectionalSchema<Input, Output>;
389
+ /**
390
+ * Check if a schema has backward transformation
391
+ */
392
+ declare function hasBackward<Input extends Table, Output extends Table>(schema: StandardSchema<Input, Output>): schema is BiDirectionalSchema<Input, Output>;
393
+ //#endregion
394
+ //#region src/type-generator.d.ts
395
+ interface TypeGeneratorOptions {
396
+ dataDir: string;
397
+ projectRoot?: string;
398
+ }
399
+ declare class TypeGenerator {
400
+ private dataDir;
401
+ private projectRoot;
402
+ private outputFile;
403
+ private dataDirPath;
404
+ constructor(options: TypeGeneratorOptions);
405
+ /**
406
+ * Generate types file from JSONL files and their optional schema files.
407
+ */
408
+ generate(): Promise<string>;
409
+ /**
410
+ * Find all *.jsonl files and check if they have corresponding *.schema.ts files
411
+ */
412
+ private findTables;
413
+ /**
414
+ * Generate type declaration content
415
+ */
416
+ private generateTypeDeclarations;
417
+ private createSchemaIdentifier;
418
+ private formatTableKey;
419
+ }
420
+ //#endregion
421
+ //#region src/validator.d.ts
422
+ interface ValidationResult {
423
+ valid: boolean;
424
+ errors: ValidationErrorDetail[];
425
+ }
426
+ interface ValidationErrorDetail {
427
+ file: string;
428
+ tableName: string;
429
+ rowIndex: number;
430
+ issues: ReadonlyArray<StandardSchemaIssue>;
431
+ type?: 'schema' | 'foreignKey';
432
+ foreignKeyError?: {
433
+ column: string;
434
+ value: unknown;
435
+ referencedTable: string;
436
+ referencedColumn: string;
437
+ };
438
+ }
439
+ interface ValidatorOptions {
440
+ path: string;
441
+ projectRoot?: string;
442
+ }
443
+ declare class Validator {
444
+ private path;
445
+ private projectRoot;
446
+ constructor(options: ValidatorOptions);
447
+ /**
448
+ * Validate JSONL file(s)
449
+ */
450
+ validate(): Promise<ValidationResult>;
451
+ /**
452
+ * Validate all JSONL files in a directory
453
+ */
454
+ private validateDirectory;
455
+ /**
456
+ * Validate foreign key constraints across all tables
457
+ */
458
+ private validateForeignKeys;
459
+ /**
460
+ * Validate a single JSONL file
461
+ */
462
+ private validateFile;
463
+ }
464
+ //#endregion
465
+ //#region src/jsonl-migration.d.ts
466
+ interface TableValidationOptions {
467
+ dataDir: string;
468
+ tableName: string;
469
+ rows: JsonObject[];
470
+ }
471
+ /**
472
+ * Validate a table by temporarily supplying in-memory rows while reusing the existing LinesDB validation pipeline.
473
+ * If validation fails, the underlying LinesDB error is rethrown so callers can inspect validation details.
474
+ */
475
+ declare function ensureTableRowsValid(options: TableValidationOptions): Promise<void>;
476
+ //#endregion
477
+ //#region src/runtime.d.ts
478
+ /**
479
+ * Runtime detection utilities
480
+ */
481
+ type RuntimeEnvironment = 'node' | 'bun' | 'deno' | 'unknown';
482
+ declare function detectRuntime(): RuntimeEnvironment;
483
+ declare const RUNTIME: RuntimeEnvironment;
484
+ //#endregion
485
+ export { type BiDirectionalSchema, type ColumnDefinition, type DatabaseConfig, DirectoryScanner, type ForeignKeyDefinition, type IndexDefinition, type InferInput, type InferOutput, type JsonArray, type JsonObject, type JsonValue, JsonlReader, JsonlWriter, LinesDB, RUNTIME, type RuntimeEnvironment, type SQLiteDatabase, type SQLiteStatement, SchemaLoader, type SchemaOptions, type StandardSchema, type StandardSchemaIssue, type StandardSchemaResult, type Table, type TableConfig, type TableDefs, type TableSchema, type TableValidationOptions, TypeGenerator, type TypeGeneratorOptions, type ValidationError, type ValidationErrorDetail, type ValidationResult, Validator, type ValidatorOptions, defineSchema, detectRuntime, ensureTableRowsValid, hasBackward };
486
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/sqlite-adapter.ts","../src/types.ts","../src/database.ts","../src/jsonl-reader.ts","../src/jsonl-writer.ts","../src/schema-loader.ts","../src/directory-scanner.ts","../src/schema.ts","../src/type-generator.ts","../src/validator.ts","../src/jsonl-migration.ts","../src/runtime.ts"],"sourcesContent":[],"mappings":"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"}