Skip to content

Commit 34748c7

Browse files
committed
chore: update @subframe7536/sqlite-wasm to v1.3.0 in dependencies and peerDependencies
1 parent 517f2d1 commit 34748c7

3 files changed

Lines changed: 17 additions & 90 deletions

File tree

packages/dialect-wasqlite-worker/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,12 @@
6060
"zen-mitt": "^3.1.0"
6161
},
6262
"devDependencies": {
63-
"@subframe7536/sqlite-wasm": "^1.2.0",
63+
"@subframe7536/sqlite-wasm": "^1.3.0",
6464
"kysely": "catalog:",
6565
"wa-sqlite": "^1.0.0"
6666
},
6767
"peerDependencies": {
68-
"@subframe7536/sqlite-wasm": ">=0.5.0",
68+
"@subframe7536/sqlite-wasm": ">=1.3.0",
6969
"kysely": ">=0.29"
7070
}
7171
}
Lines changed: 8 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
import type { SQLiteDBCore } from '@subframe7536/sqlite-wasm'
22
import {
3-
changes as changesCore,
4-
close as closeCore,
5-
lastInsertRowId as lastInsertRowIdCore,
3+
close as coreClose,
4+
query as coreQuery,
5+
iterator as coreIterator,
66
} from '@subframe7536/sqlite-wasm'
7-
import { SQLITE_OK, SQLITE_ROW } from '@subframe7536/sqlite-wasm/constant'
8-
import type { QueryResult } from 'kysely'
97
import type { IGenericSqlite, Promisable } from 'kysely-generic-sqlite'
10-
import { parseBigInt } from 'kysely-generic-sqlite'
118
import type { MessageHandleFn } from 'kysely-generic-sqlite/worker'
129
import { createWebOnMessageCallback } from 'kysely-generic-sqlite/worker-helper-web'
1310

@@ -23,83 +20,6 @@ export const defaultCreateDatabaseFn: CreateDatabaseFn = async ({ fileName, url,
2320
)
2421
}
2522

26-
function createRowMapper(sqlite: SQLiteDBCore['sqlite'], stmt: number) {
27-
const cols = sqlite.column_names(stmt)
28-
return (row: any[]) => Object.fromEntries(cols.map((key, i) => [key, row[i]]))
29-
}
30-
31-
async function queryData(
32-
core: SQLiteDBCore,
33-
sql: string,
34-
parameters?: readonly any[],
35-
): Promise<QueryResult<any>> {
36-
const iterator = core.sqlite.statements(core.pointer, sql)[Symbol.asyncIterator]()
37-
const { value: stmt } = await iterator.next()
38-
39-
try {
40-
if (parameters?.length) {
41-
core.sqlite.bind_collection(stmt, parameters)
42-
}
43-
44-
const size = core.sqlite.column_count(stmt)
45-
if (size === 0) {
46-
await core.sqlite.step(stmt)
47-
return {
48-
rows: [],
49-
insertId: parseBigInt(lastInsertRowIdCore(core)),
50-
numAffectedRows: parseBigInt(changesCore(core)),
51-
}
52-
}
53-
54-
const mapRow = createRowMapper(core.sqlite, stmt)
55-
const result = []
56-
let idx = 0
57-
while ((await core.sqlite.step(stmt)) === SQLITE_ROW) {
58-
result[idx++] = mapRow(core.sqlite.row(stmt))
59-
}
60-
return { rows: result }
61-
} finally {
62-
await iterator.return?.()
63-
}
64-
}
65-
66-
async function* iterateDate(
67-
core: SQLiteDBCore,
68-
sql: string,
69-
parameters?: readonly any[],
70-
chunkSize = 1,
71-
): AsyncIterableIterator<any[]> {
72-
const { sqlite, pointer } = core
73-
let cache = new Array(chunkSize)
74-
for await (const stmt of sqlite.statements(pointer, sql)) {
75-
if (parameters?.length) {
76-
sqlite.bind_collection(stmt, parameters)
77-
}
78-
let idx = 0
79-
const mapRow = createRowMapper(core.sqlite, stmt)
80-
while (1) {
81-
const result = await sqlite.step(stmt)
82-
if (result === SQLITE_ROW) {
83-
cache[idx] = mapRow(core.sqlite.row(stmt))
84-
if (++idx === chunkSize) {
85-
yield cache.slice(0, idx)
86-
idx = 0
87-
}
88-
} else if (result === SQLITE_OK) {
89-
if (++idx === chunkSize) {
90-
yield []
91-
}
92-
} else {
93-
if (idx > 0) {
94-
yield cache.slice(0, idx)
95-
}
96-
break
97-
}
98-
}
99-
}
100-
cache = undefined!
101-
}
102-
10323
/**
10424
* Handle worker message, support custom message handler,
10525
* built-in: {@link defaultCreateDatabaseFn}
@@ -136,9 +56,11 @@ export function createOnMessageCallback(
13656
export function createSqliteExecutor(db: SQLiteDBCore): IGenericSqlite<SQLiteDBCore> {
13757
return {
13858
db,
139-
query: async (_isSelect, sql, parameters) => await queryData(db, sql, parameters),
140-
close: async () => await closeCore(db),
59+
query: async (_isSelect, sql, parameters) => ({
60+
rows: await coreQuery(db, sql, parameters as any[]),
61+
}),
62+
close: async () => await coreClose(db),
14163
iterator: (_isSelect, sql, parameters, chunkSize) =>
142-
iterateDate(db, sql, parameters as any[], chunkSize),
64+
coreIterator(db, sql, parameters as any[], chunkSize),
14365
}
14466
}

pnpm-lock.yaml

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)