better-sqlite3-multiple-ciphers 7.4.6-beta.0 → 7.5.0-beta.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 +14 -7
- package/deps/download.sh +111 -108
- package/deps/setup.ps1 +10 -12
- package/deps/sqlite3/sqlite3.c +272560 -0
- package/deps/sqlite3/sqlite3.h +12770 -0
- package/deps/sqlite3/sqlite3ext.h +675 -0
- package/deps/sqlite3.gyp +13 -7
- package/deps/symlink.js +7 -4
- package/lib/database.js +17 -6
- package/lib/sqlite-error.js +1 -2
- package/package.json +10 -4
- package/src/better_sqlite3.cpp +46 -35
- package/src/better_sqlite3.hpp +40 -38
- package/.gitattributes +0 -1
- package/.github/workflows/prebuild.yml +0 -49
- package/.github/workflows/test.yml +0 -59
- package/benchmark/benchmark.js +0 -31
- package/benchmark/drivers.js +0 -21
- package/benchmark/index.js +0 -83
- package/benchmark/seed.js +0 -47
- package/benchmark/trials.js +0 -65
- package/benchmark/types/insert.js +0 -16
- package/benchmark/types/select-all.js +0 -14
- package/benchmark/types/select-iterate.js +0 -23
- package/benchmark/types/select.js +0 -14
- package/benchmark/types/transaction.js +0 -40
- package/deps/extract.js +0 -16
- package/deps/sqlite3.tar.gz +0 -0
- package/docs/api.md +0 -645
- package/docs/benchmark.md +0 -38
- package/docs/compilation.md +0 -76
- package/docs/integer.md +0 -79
- package/docs/performance.md +0 -39
- package/docs/threads.md +0 -97
- package/docs/tips.md +0 -35
- package/docs/troubleshooting.md +0 -23
- package/docs/unsafe.md +0 -16
- package/src/better_sqlite3.lzz +0 -88
- package/src/objects/backup.lzz +0 -138
- package/src/objects/database.lzz +0 -468
- package/src/objects/statement-iterator.lzz +0 -138
- package/src/objects/statement.lzz +0 -323
- package/src/util/bind-map.lzz +0 -73
- package/src/util/binder.lzz +0 -190
- package/src/util/constants.lzz +0 -151
- package/src/util/custom-aggregate.lzz +0 -121
- package/src/util/custom-function.lzz +0 -59
- package/src/util/custom-table.lzz +0 -397
- package/src/util/data-converter.lzz +0 -17
- package/src/util/data.lzz +0 -145
- package/src/util/macros.lzz +0 -159
- package/src/util/query-macros.lzz +0 -71
- package/test/00.setup.js +0 -25
- package/test/01.sqlite-error.js +0 -27
- package/test/10.database.open.js +0 -159
- package/test/11.database.close.js +0 -68
- package/test/12.database.pragma.js +0 -65
- package/test/13.database.prepare.js +0 -60
- package/test/14.database.exec.js +0 -46
- package/test/20.statement.run.js +0 -170
- package/test/21.statement.get.js +0 -109
- package/test/22.statement.all.js +0 -129
- package/test/23.statement.iterate.js +0 -223
- package/test/24.statement.bind.js +0 -107
- package/test/25.statement.columns.js +0 -46
- package/test/30.database.transaction.js +0 -157
- package/test/31.database.checkpoint.js +0 -62
- package/test/32.database.function.js +0 -211
- package/test/33.database.aggregate.js +0 -603
- package/test/34.database.table.js +0 -671
- package/test/35.database.load-extension.js +0 -75
- package/test/36.database.backup.js +0 -240
- package/test/37.database.serialize.js +0 -81
- package/test/40.bigints.js +0 -145
- package/test/41.at-exit.js +0 -52
- package/test/42.integrity.js +0 -531
- package/test/43.verbose.js +0 -100
- package/test/44.worker-threads.js +0 -66
- package/test/45.unsafe-mode.js +0 -52
- package/test/46.encryption.js +0 -31
- package/test/50.misc.js +0 -44
package/README.md
CHANGED
|
@@ -17,14 +17,14 @@ The fastest and simplest library for SQLite3 in Node.js. This particular fork su
|
|
|
17
17
|
## Current versions
|
|
18
18
|
|
|
19
19
|
- ### Stable
|
|
20
|
-
- **better-sqlite3-multiple-ciphers** - [`7.4.
|
|
21
|
-
- **SQLite** - `3.
|
|
22
|
-
- **SQLite3 Multiple Ciphers** - `1.3.
|
|
20
|
+
- **better-sqlite3-multiple-ciphers** - [`7.4.6`](https://www.npmjs.com/package/better-sqlite3-multiple-ciphers/v/7.4.6)
|
|
21
|
+
- **SQLite** - [`3.37.0`](https://www.sqlite.org/draft/releaselog/3_37_0.html)
|
|
22
|
+
- **SQLite3 Multiple Ciphers** - [`1.3.5`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.3.5)
|
|
23
23
|
|
|
24
24
|
- ### Beta
|
|
25
|
-
- **better-sqlite3-multiple-ciphers** - [`7.
|
|
26
|
-
- **SQLite** - `3.37.
|
|
27
|
-
- **SQLite3 Multiple Ciphers** - `1.3.
|
|
25
|
+
- **better-sqlite3-multiple-ciphers** - [`7.5.0-beta.0`](https://www.npmjs.com/package/better-sqlite3-multiple-ciphers/v/7.5.0-beta.0)
|
|
26
|
+
- **SQLite** - [`3.37.2`](https://www.sqlite.org/draft/releaselog/3_37_2.html)
|
|
27
|
+
- **SQLite3 Multiple Ciphers** - [`1.3.7`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.3.7)
|
|
28
28
|
|
|
29
29
|
## Help this project stay strong! 💪
|
|
30
30
|
|
|
@@ -63,7 +63,7 @@ npm install better-sqlite3-multiple-ciphers
|
|
|
63
63
|
npm install better-sqlite3-multiple-ciphers@beta
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
> You must be using Node.js v10.20.1 or above. Prebuilt binaries are available for Node.js [LTS versions](https://nodejs.org/en/about/releases/) and Electron.
|
|
66
|
+
> You must be using Node.js v10.20.1 or above. Prebuilt binaries are available for Node.js [LTS versions](https://nodejs.org/en/about/releases/) and Electron. If you have trouble installing, check the [troubleshooting guide](./docs/troubleshooting.md).
|
|
67
67
|
|
|
68
68
|
> If you have trouble installing, check the [troubleshooting guide](./docs/troubleshooting.md).
|
|
69
69
|
|
|
@@ -76,6 +76,13 @@ const row = db.prepare('SELECT * FROM users WHERE id = ?').get(userId);
|
|
|
76
76
|
console.log(row.firstName, row.lastName, row.email);
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
##### In ES6 module notation:
|
|
80
|
+
|
|
81
|
+
```js
|
|
82
|
+
import Database from 'better-sqlite3-multiple-ciphers';
|
|
83
|
+
const db = new Database('foobar.db', options);
|
|
84
|
+
```
|
|
85
|
+
|
|
79
86
|
### Encryption
|
|
80
87
|
|
|
81
88
|
A database can be encrypted and decrypted simply using `key` and `rekey` `PRAGMA` statements.
|
package/deps/download.sh
CHANGED
|
@@ -1,108 +1,111 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
# ===
|
|
4
|
-
# This script defines and generates the bundled SQLite3 unit (sqlite3.c).
|
|
5
|
-
#
|
|
6
|
-
# The following steps are taken:
|
|
7
|
-
# 1. populate the shell environment with the defined compile-time options.
|
|
8
|
-
# 2. download and extract the SQLite3 source code into a temporary directory.
|
|
9
|
-
# 3. run "sh configure" and "make sqlite3.c" within the source directory.
|
|
10
|
-
# 4.
|
|
11
|
-
# 5. export the defined compile-time options to a gyp file (defines.gypi).
|
|
12
|
-
# 6. update the docs (../docs/compilation.md) with details of this distribution.
|
|
13
|
-
#
|
|
14
|
-
# When a user builds better-sqlite3, the following steps are taken:
|
|
15
|
-
# 1. node-gyp loads the previously exported compile-time options (defines.gypi).
|
|
16
|
-
# 2. the
|
|
17
|
-
# 3. node-gyp compiles the
|
|
18
|
-
#
|
|
19
|
-
# ===
|
|
20
|
-
|
|
21
|
-
YEAR="
|
|
22
|
-
VERSION="
|
|
23
|
-
|
|
24
|
-
DEFINES="
|
|
25
|
-
SQLITE_DQS=0
|
|
26
|
-
SQLITE_LIKE_DOESNT_MATCH_BLOBS
|
|
27
|
-
SQLITE_THREADSAFE=2
|
|
28
|
-
SQLITE_USE_URI=0
|
|
29
|
-
SQLITE_DEFAULT_MEMSTATUS=0
|
|
30
|
-
SQLITE_OMIT_DEPRECATED
|
|
31
|
-
SQLITE_OMIT_GET_TABLE
|
|
32
|
-
SQLITE_OMIT_TCL_VARIABLE
|
|
33
|
-
SQLITE_OMIT_PROGRESS_CALLBACK
|
|
34
|
-
SQLITE_OMIT_SHARED_CACHE
|
|
35
|
-
SQLITE_TRACE_SIZE_LIMIT=32
|
|
36
|
-
SQLITE_DEFAULT_CACHE_SIZE=-16000
|
|
37
|
-
SQLITE_DEFAULT_FOREIGN_KEYS=1
|
|
38
|
-
SQLITE_DEFAULT_WAL_SYNCHRONOUS=1
|
|
39
|
-
SQLITE_ENABLE_MATH_FUNCTIONS
|
|
40
|
-
SQLITE_ENABLE_DESERIALIZE
|
|
41
|
-
SQLITE_ENABLE_COLUMN_METADATA
|
|
42
|
-
SQLITE_ENABLE_UPDATE_DELETE_LIMIT
|
|
43
|
-
SQLITE_ENABLE_STAT4
|
|
44
|
-
SQLITE_ENABLE_FTS3_PARENTHESIS
|
|
45
|
-
SQLITE_ENABLE_FTS3
|
|
46
|
-
SQLITE_ENABLE_FTS4
|
|
47
|
-
SQLITE_ENABLE_FTS5
|
|
48
|
-
SQLITE_ENABLE_JSON1
|
|
49
|
-
SQLITE_ENABLE_RTREE
|
|
50
|
-
SQLITE_ENABLE_GEOPOLY
|
|
51
|
-
SQLITE_INTROSPECTION_PRAGMAS
|
|
52
|
-
SQLITE_SOUNDEX
|
|
53
|
-
HAVE_STDINT_H=1
|
|
54
|
-
HAVE_INT8_T=1
|
|
55
|
-
HAVE_INT16_T=1
|
|
56
|
-
HAVE_INT32_T=1
|
|
57
|
-
HAVE_UINT8_T=1
|
|
58
|
-
HAVE_UINT16_T=1
|
|
59
|
-
HAVE_UINT32_T=1
|
|
60
|
-
SQLITE_USER_AUTHENTICATION=0
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
# ========== START SCRIPT ========== #
|
|
64
|
-
|
|
65
|
-
echo "setting up environment..."
|
|
66
|
-
DEPS="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
|
67
|
-
TEMP="$DEPS/temp"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
echo "
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
echo "
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
echo "
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
echo "
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# ===
|
|
4
|
+
# This script defines and generates the bundled SQLite3 unit (sqlite3.c).
|
|
5
|
+
#
|
|
6
|
+
# The following steps are taken:
|
|
7
|
+
# 1. populate the shell environment with the defined compile-time options.
|
|
8
|
+
# 2. download and extract the SQLite3 source code into a temporary directory.
|
|
9
|
+
# 3. run "sh configure" and "make sqlite3.c" within the source directory.
|
|
10
|
+
# 4. copy the generated amalgamation into the output directory (./sqlite3).
|
|
11
|
+
# 5. export the defined compile-time options to a gyp file (./defines.gypi).
|
|
12
|
+
# 6. update the docs (../docs/compilation.md) with details of this distribution.
|
|
13
|
+
#
|
|
14
|
+
# When a user builds better-sqlite3, the following steps are taken:
|
|
15
|
+
# 1. node-gyp loads the previously exported compile-time options (defines.gypi).
|
|
16
|
+
# 2. the symlink.js script creates symlinks to the bundled amalgamation.
|
|
17
|
+
# 3. node-gyp compiles the symlinked sqlite3.c along with better_sqlite3.cpp.
|
|
18
|
+
# 4. node-gyp links the two resulting binaries to generate better_sqlite3.node.
|
|
19
|
+
# ===
|
|
20
|
+
|
|
21
|
+
YEAR="2022"
|
|
22
|
+
VERSION="3370200"
|
|
23
|
+
|
|
24
|
+
DEFINES="
|
|
25
|
+
SQLITE_DQS=0
|
|
26
|
+
SQLITE_LIKE_DOESNT_MATCH_BLOBS
|
|
27
|
+
SQLITE_THREADSAFE=2
|
|
28
|
+
SQLITE_USE_URI=0
|
|
29
|
+
SQLITE_DEFAULT_MEMSTATUS=0
|
|
30
|
+
SQLITE_OMIT_DEPRECATED
|
|
31
|
+
SQLITE_OMIT_GET_TABLE
|
|
32
|
+
SQLITE_OMIT_TCL_VARIABLE
|
|
33
|
+
SQLITE_OMIT_PROGRESS_CALLBACK
|
|
34
|
+
SQLITE_OMIT_SHARED_CACHE
|
|
35
|
+
SQLITE_TRACE_SIZE_LIMIT=32
|
|
36
|
+
SQLITE_DEFAULT_CACHE_SIZE=-16000
|
|
37
|
+
SQLITE_DEFAULT_FOREIGN_KEYS=1
|
|
38
|
+
SQLITE_DEFAULT_WAL_SYNCHRONOUS=1
|
|
39
|
+
SQLITE_ENABLE_MATH_FUNCTIONS
|
|
40
|
+
SQLITE_ENABLE_DESERIALIZE
|
|
41
|
+
SQLITE_ENABLE_COLUMN_METADATA
|
|
42
|
+
SQLITE_ENABLE_UPDATE_DELETE_LIMIT
|
|
43
|
+
SQLITE_ENABLE_STAT4
|
|
44
|
+
SQLITE_ENABLE_FTS3_PARENTHESIS
|
|
45
|
+
SQLITE_ENABLE_FTS3
|
|
46
|
+
SQLITE_ENABLE_FTS4
|
|
47
|
+
SQLITE_ENABLE_FTS5
|
|
48
|
+
SQLITE_ENABLE_JSON1
|
|
49
|
+
SQLITE_ENABLE_RTREE
|
|
50
|
+
SQLITE_ENABLE_GEOPOLY
|
|
51
|
+
SQLITE_INTROSPECTION_PRAGMAS
|
|
52
|
+
SQLITE_SOUNDEX
|
|
53
|
+
HAVE_STDINT_H=1
|
|
54
|
+
HAVE_INT8_T=1
|
|
55
|
+
HAVE_INT16_T=1
|
|
56
|
+
HAVE_INT32_T=1
|
|
57
|
+
HAVE_UINT8_T=1
|
|
58
|
+
HAVE_UINT16_T=1
|
|
59
|
+
HAVE_UINT32_T=1
|
|
60
|
+
SQLITE_USER_AUTHENTICATION=0
|
|
61
|
+
"
|
|
62
|
+
|
|
63
|
+
# ========== START SCRIPT ========== #
|
|
64
|
+
|
|
65
|
+
echo "setting up environment..."
|
|
66
|
+
DEPS="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
|
67
|
+
TEMP="$DEPS/temp"
|
|
68
|
+
OUTPUT="$DEPS/sqlite3"
|
|
69
|
+
rm -rf "$TEMP"
|
|
70
|
+
rm -rf "$OUTPUT"
|
|
71
|
+
mkdir -p "$TEMP"
|
|
72
|
+
mkdir -p "$OUTPUT"
|
|
73
|
+
export CFLAGS=`echo $(echo "$DEFINES" | sed -e "/^\s*$/d" -e "s/^/-D/")`
|
|
74
|
+
|
|
75
|
+
echo "downloading source..."
|
|
76
|
+
curl -#f "https://www.sqlite.org/$YEAR/sqlite-src-$VERSION.zip" > "$TEMP/source.zip" || exit 1
|
|
77
|
+
|
|
78
|
+
echo "extracting source..."
|
|
79
|
+
unzip "$TEMP/source.zip" -d "$TEMP" > /dev/null || exit 1
|
|
80
|
+
cd "$TEMP/sqlite-src-$VERSION" || exit 1
|
|
81
|
+
|
|
82
|
+
echo "configuring amalgamation..."
|
|
83
|
+
sh configure > /dev/null || exit 1
|
|
84
|
+
|
|
85
|
+
echo "building amalgamation..."
|
|
86
|
+
make sqlite3.c > /dev/null || exit 1
|
|
87
|
+
|
|
88
|
+
echo "copying amalgamation..."
|
|
89
|
+
cp sqlite3.c sqlite3.h sqlite3ext.h "$OUTPUT/" || exit 1
|
|
90
|
+
|
|
91
|
+
echo "updating gyp configs..."
|
|
92
|
+
GYP="$DEPS/defines.gypi"
|
|
93
|
+
printf "# THIS FILE IS AUTOMATICALLY GENERATED (DO NOT EDIT)\n\n{\n 'defines': [\n" > "$GYP"
|
|
94
|
+
printf "$DEFINES" | sed -e "/^\s*$/d" -e "s/\(.*\)/ '\1',/" >> "$GYP"
|
|
95
|
+
printf " ],\n}\n" >> "$GYP"
|
|
96
|
+
|
|
97
|
+
echo "updating docs..."
|
|
98
|
+
DOCS="$DEPS/../docs/compilation.md"
|
|
99
|
+
MAJOR=`expr "${VERSION:0:1}" + 0`
|
|
100
|
+
MINOR=`expr "${VERSION:1:2}" + 0`
|
|
101
|
+
PATCH=`expr "${VERSION:3:2}" + 0`
|
|
102
|
+
sed -Ei "" -e "s/version [0-9]+\.[0-9]+\.[0-9]+/version $MAJOR.$MINOR.$PATCH/g" "$DOCS"
|
|
103
|
+
sed -i "" -e "/^SQLITE_/,\$d" "$DOCS"
|
|
104
|
+
printf "$DEFINES" | sed -e "/^\s*$/d" >> "$DOCS"
|
|
105
|
+
printf "\`\`\`\n" >> "$DOCS"
|
|
106
|
+
|
|
107
|
+
echo "cleaning up..."
|
|
108
|
+
cd - > /dev/null || exit 1
|
|
109
|
+
rm -rf "$TEMP"
|
|
110
|
+
|
|
111
|
+
echo "done!"
|
package/deps/setup.ps1
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
$ErrorActionPreference = "Stop"
|
|
3
3
|
|
|
4
4
|
# SQLite Info
|
|
5
|
-
$SQLITEMC_VER = "v1.3.
|
|
5
|
+
$SQLITEMC_VER = "v1.3.7"
|
|
6
6
|
$API_URL = "https://api.github.com/repos/utelle/SQLite3MultipleCiphers/releases/tags/" + $SQLITEMC_VER
|
|
7
7
|
|
|
8
8
|
# Paths
|
|
9
9
|
$TEMP_PATH = Join-Path $PSScriptRoot "temp"
|
|
10
10
|
$SOURCE_PATH = Join-Path $TEMP_PATH "source.zip"
|
|
11
11
|
$EXTRACT_PATH = Join-Path $TEMP_PATH "extracted"
|
|
12
|
-
$
|
|
12
|
+
$DEST_PATH = Join-Path $PSScriptRoot "sqlite3"
|
|
13
13
|
|
|
14
14
|
Write-Host "Preparing.."
|
|
15
15
|
Remove-Item -Path $TEMP_PATH -Recurse -Force -ErrorAction Ignore
|
|
@@ -23,16 +23,14 @@ Write-Host "`r`nDownloading.. ($( $FILE ))"
|
|
|
23
23
|
Invoke-WebRequest -Uri $DL_URL -OutFile (New-Item -Path $SOURCE_PATH -Force)
|
|
24
24
|
|
|
25
25
|
Write-Host "`r`nExtracting archive.."
|
|
26
|
-
Expand-Archive
|
|
27
|
-
|
|
28
|
-
Write-Host "`r`
|
|
29
|
-
Remove-Item -Path
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Remove-Item -Path $TAR_PATH -Force
|
|
35
|
-
tar czf $TAR_PATH -C $EXTRACT_PATH sqlite3.c sqlite3.h sqlite3ext.h
|
|
26
|
+
Expand-Archive -Path $SOURCE_PATH -DestinationPath $EXTRACT_PATH
|
|
27
|
+
|
|
28
|
+
Write-Host "`r`nCopying SQLite3MC source files.."
|
|
29
|
+
Remove-Item -Path $DEST_PATH -Recurse -Force -ErrorAction Ignore
|
|
30
|
+
New-Item $DEST_PATH -Type Directory
|
|
31
|
+
Copy-Item -Path (Join-Path $EXTRACT_PATH "sqlite3mc_amalgamation.h") -Destination (Join-Path $DEST_PATH "sqlite3.h")
|
|
32
|
+
Copy-Item -Path (Join-Path $EXTRACT_PATH "sqlite3mc_amalgamation.c") -Destination (Join-Path $DEST_PATH "sqlite3.c")
|
|
33
|
+
Copy-Item -Path (Join-Path $EXTRACT_PATH "sqlite3ext.h") -Destination (Join-Path $DEST_PATH "sqlite3ext.h")
|
|
36
34
|
|
|
37
35
|
Write-Host "`r`nCleaning up.."
|
|
38
36
|
Remove-Item -Path $TEMP_PATH -Recurse -Force
|