Skip to content

Commit 3d0aa9f

Browse files
robhoganmeta-codesync[bot]
authored andcommitted
Add Flow lib defs for node:sqlite (#55284)
Summary: Pull Request resolved: #55284 This diff adds Flow type definitions for the `node:sqlite` module, Node.js's built-in SQLite database interface added experimentally in v22.5.0. **Module Overview:** The `node:sqlite` module provides synchronous SQLite database operations, enabling embedded database functionality without external dependencies. **Core Classes:** 1. **DatabaseSync** - Main database interface - `constructor(location: string, options?: DatabaseSyncOptions)` - `exec(sql: string)` - Execute SQL without returning results - `prepare(sql: string)` - Create prepared statement - `close()` / `open()` - Manage connection lifecycle - `function()` - Register custom SQL functions - `createSession()` / `applyChangeset()` - Session/changeset support - https://nodejs.org/api/sqlite.html#class-databasesync 2. **StatementSync** - Prepared statement interface - `all(...params)` - Return all rows as array - `get(...params)` - Return first row - `run(...params)` - Execute and return changes/lastInsertRowid - `iterate(...params)` - Return iterator over rows - `expandedSQL` / `sourceSQL` - SQL inspection - https://nodejs.org/api/sqlite.html#class-statementsync 3. **Session** - Change tracking interface - `changeset()` - Get changes as Uint8Array - `patchset()` - Get minimal changes - `close()` - End session **References:** - Node.js sqlite module documentation: https://nodejs.org/api/sqlite.html **Stability:** Experimental (added in v22.5.0) Changelog: [Internal] Reviewed By: GijsWeterings Differential Revision: D90764441 fbshipit-source-id: 9bce1e13bf8d550211c62d7d5cde255854379363
1 parent 534c06f commit 3d0aa9f

1 file changed

Lines changed: 122 additions & 3 deletions

File tree

flow-typed/environment/node.js

Lines changed: 122 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3348,6 +3348,125 @@ declare module 'querystring' {
33483348
declare function unescape(str: string, decodeSpaces?: boolean): string;
33493349
}
33503350

3351+
/**
3352+
* Node.js sqlite module (only available with node: prefix)
3353+
* @since v22.5.0
3354+
*/
3355+
declare module 'node:sqlite' {
3356+
declare export type SupportedValueType =
3357+
| null
3358+
| number
3359+
| bigint
3360+
| string
3361+
| Uint8Array;
3362+
3363+
declare export type DatabaseSyncOptions = Readonly<{
3364+
open?: boolean,
3365+
enableForeignKeyConstraints?: boolean,
3366+
enableDoubleQuotedStringLiterals?: boolean,
3367+
readOnly?: boolean,
3368+
allowExtension?: boolean,
3369+
}>;
3370+
3371+
declare export type CreateSessionOptions = Readonly<{
3372+
table?: string,
3373+
db?: string,
3374+
}>;
3375+
3376+
declare export type ApplyChangesetOptions = Readonly<{
3377+
filter?: (tableName: string) => boolean,
3378+
onConflict?: number,
3379+
}>;
3380+
3381+
declare export type FunctionOptions = Readonly<{
3382+
deterministic?: boolean,
3383+
directOnly?: boolean,
3384+
useBigIntArguments?: boolean,
3385+
varargs?: boolean,
3386+
}>;
3387+
3388+
declare export type StatementResultingChanges = {
3389+
changes: number | bigint,
3390+
lastInsertRowid: number | bigint,
3391+
};
3392+
3393+
declare export interface Session {
3394+
changeset(): Uint8Array;
3395+
patchset(): Uint8Array;
3396+
close(): void;
3397+
}
3398+
3399+
declare export class StatementSync {
3400+
all(...anonymousParameters: ReadonlyArray<SupportedValueType>): Array<any>;
3401+
all(
3402+
namedParameters: {[key: string]: SupportedValueType, ...},
3403+
...anonymousParameters: ReadonlyArray<SupportedValueType>
3404+
): Array<any>;
3405+
3406+
+expandedSQL: string;
3407+
3408+
get(...anonymousParameters: ReadonlyArray<SupportedValueType>): any;
3409+
get(
3410+
namedParameters: {[key: string]: SupportedValueType, ...},
3411+
...anonymousParameters: ReadonlyArray<SupportedValueType>
3412+
): any;
3413+
3414+
iterate(
3415+
...anonymousParameters: ReadonlyArray<SupportedValueType>
3416+
): Iterator<any>;
3417+
iterate(
3418+
namedParameters: {[key: string]: SupportedValueType, ...},
3419+
...anonymousParameters: ReadonlyArray<SupportedValueType>
3420+
): Iterator<any>;
3421+
3422+
run(
3423+
...anonymousParameters: ReadonlyArray<SupportedValueType>
3424+
): StatementResultingChanges;
3425+
run(
3426+
namedParameters: {[key: string]: SupportedValueType, ...},
3427+
...anonymousParameters: ReadonlyArray<SupportedValueType>
3428+
): StatementResultingChanges;
3429+
3430+
setAllowBareNamedParameters(enabled: boolean): void;
3431+
setReadBigInts(enabled: boolean): void;
3432+
3433+
+sourceSQL: string;
3434+
}
3435+
3436+
declare export class DatabaseSync {
3437+
constructor(location: string, options?: DatabaseSyncOptions): void;
3438+
3439+
close(): void;
3440+
loadExtension(path: string): void;
3441+
enableLoadExtension(allow: boolean): void;
3442+
exec(sql: string): void;
3443+
3444+
function(
3445+
name: string,
3446+
options: FunctionOptions,
3447+
func: (...args: ReadonlyArray<SupportedValueType>) => SupportedValueType,
3448+
): void;
3449+
function(
3450+
name: string,
3451+
func: (...args: ReadonlyArray<SupportedValueType>) => SupportedValueType,
3452+
): void;
3453+
3454+
open(): void;
3455+
prepare(sql: string): StatementSync;
3456+
createSession(options?: CreateSessionOptions): Session;
3457+
applyChangeset(
3458+
changeset: Uint8Array,
3459+
options?: ApplyChangesetOptions,
3460+
): boolean;
3461+
}
3462+
3463+
declare export var constants: {|
3464+
+SQLITE_CHANGESET_OMIT: number,
3465+
+SQLITE_CHANGESET_REPLACE: number,
3466+
+SQLITE_CHANGESET_ABORT: number,
3467+
|};
3468+
}
3469+
33513470
type readline$InterfaceCompleter = (
33523471
line: string,
33533472
) =>
@@ -5042,16 +5161,16 @@ declare module 'v8' {
50425161
version: number,
50435162
startTime: number,
50445163
endTime: number,
5045-
statistics: $ReadOnlyArray<{
5164+
statistics: ReadonlyArray<{
50465165
gcType: string,
50475166
cost: number,
50485167
beforeGC: {
50495168
heapStatistics: HeapStatistics,
5050-
heapSpaceStatistics: $ReadOnlyArray<HeapSpaceStatistics>,
5169+
heapSpaceStatistics: ReadonlyArray<HeapSpaceStatistics>,
50515170
},
50525171
afterGC: {
50535172
heapStatistics: HeapStatistics,
5054-
heapSpaceStatistics: $ReadOnlyArray<HeapSpaceStatistics>,
5173+
heapSpaceStatistics: ReadonlyArray<HeapSpaceStatistics>,
50555174
},
50565175
}>,
50575176
};

0 commit comments

Comments
 (0)