indexeddbshim 17.7.0 → 18.0.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 +13 -3
- package/dist/DOMException.d.ts +2 -2
- package/dist/DOMException.d.ts.map +1 -1
- package/dist/IDBCursor.d.ts +8 -2
- package/dist/IDBCursor.d.ts.map +1 -1
- package/dist/IDBFactory.d.ts.map +1 -1
- package/dist/IDBTransaction.d.ts +12 -12
- package/dist/IDBTransaction.d.ts.map +1 -1
- package/dist/indexeddbshim-Key.js +2 -2
- package/dist/indexeddbshim-Key.js.map +1 -1
- package/dist/indexeddbshim-Key.min.js +1 -1
- package/dist/indexeddbshim-Key.min.js.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs +41 -18
- package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers.js +41 -226
- package/dist/indexeddbshim-UnicodeIdentifiers.js.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers.min.js +3 -3
- package/dist/indexeddbshim-UnicodeIdentifiers.min.js.map +1 -1
- package/dist/indexeddbshim-node.cjs +41 -18
- package/dist/indexeddbshim-node.cjs.map +1 -1
- package/dist/indexeddbshim-noninvasive.js +41 -226
- package/dist/indexeddbshim-noninvasive.js.map +1 -1
- package/dist/indexeddbshim-noninvasive.min.js +3 -3
- package/dist/indexeddbshim-noninvasive.min.js.map +1 -1
- package/dist/indexeddbshim.js +41 -226
- package/dist/indexeddbshim.js.map +1 -1
- package/dist/indexeddbshim.min.js +3 -3
- package/dist/indexeddbshim.min.js.map +1 -1
- package/dist/util.d.ts +15 -0
- package/dist/util.d.ts.map +1 -1
- package/package.json +1 -4
- package/src/DOMException.js +1 -1
- package/src/IDBCursor.js +4 -1
- package/src/IDBFactory.js +5 -7
- package/src/IDBTransaction.js +8 -8
- package/src/util.js +23 -1
package/dist/util.d.ts
CHANGED
|
@@ -50,6 +50,21 @@ export function sqlLIKEEscape(str: string): string;
|
|
|
50
50
|
* @returns {string}
|
|
51
51
|
*/
|
|
52
52
|
export function sqlQuote(arg: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Minimal replacement for `path.join(base, name)` covering our only use case:
|
|
55
|
+
* `name` is always a bare file name (no separators and no `.`/`..`), and
|
|
56
|
+
* `base` is a directory path expected to be absolute and normalized (an
|
|
57
|
+
* empty string means the current working directory). Unlike `path.join`,
|
|
58
|
+
* this performs no `.`/`..` resolution. It reuses the separator style of
|
|
59
|
+
* `base` (backslash only when `base` uses backslashes and no forward
|
|
60
|
+
* slashes, i.e. a Windows path), otherwise `/`; Node's `fs`, SQLite, and
|
|
61
|
+
* `websql-configurable` accept either separator on Windows regardless.
|
|
62
|
+
* Avoiding `node:path` keeps browser bundles free of a path polyfill.
|
|
63
|
+
* @param {string} base
|
|
64
|
+
* @param {string} name
|
|
65
|
+
* @returns {string}
|
|
66
|
+
*/
|
|
67
|
+
export function joinPath(base: string, name: string): string;
|
|
53
68
|
/**
|
|
54
69
|
* @typedef {Function} AnyClass
|
|
55
70
|
*/
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.js"],"names":[],"mappings":"sBAKa,MAAM;;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.js"],"names":[],"mappings":"sBAKa,MAAM;;uBA8iBN,GAAG;AApgBhB;;;;GAIG;AACH,2CAHW,MAAM,GACJ,MAAM,CASlB;AAED;;;GAGG;AACH,4CAHW,MAAM,GACJ,MAAM,CAclB;AAuBD;;;;GAIG;AACH,qDAJW,MAAM,GAEJ,MAAM,CAoClB;AAmBD;;;;GAIG;AACH,uDAHW,MAAM,GACJ,MAAM,CAkClB;AAED;;;GAGG;AACH,6CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,6CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,sDAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,mCAHW,MAAM,GACJ,MAAM,CAKlB;AAzID;;;GAGG;AACH,8BAHW,MAAM,GACJ,MAAM,CAIlB;AAqID;;;;;;;;;;;;;GAaG;AACH,+BAJW,MAAM,QACN,MAAM,GACJ,MAAM,CAQlB;AAED;;GAEG;AAGH;;;;;GAKG;AACH,gCAJW,QAAQ,QACR,QAAQ,GACN,OAAO,CAInB;AAED;;;;GAIG;AACH,2BAHW,QAAQ,GACN,GAAG,IAAI,MAAM,CAIzB;AAED;;;;GAIG;AACH,4BAHW,MAAM,GACJ,OAAO,CAInB;AAED;;;;GAIG;AACH,4BAHW,MAAM,GACJ,OAAO,CAKnB;AAED;;;;GAIG;AACH,8BAHW,MAAM,GACJ,OAAO,CAKnB;AAED;;;;GAIG;AACH,4BAHW,MAAM,GACJ,OAAO,CAKnB;AAED;;;;GAIG;AACH,8BAHW,QAAQ,GACN,OAAO,CAOnB;AAED;;;;GAIG;AACH,gCAHW,QAAQ,GACN,OAAO,CAOnB;AAED;;;;;GAKG;AACH,0CAJW,MAAM,SACN,MAAM,EAAE,GACN,IAAI,CAkBhB;AAED;;;;;GAKG;AACH,kDAJW,MAAM,SACN,MAAM,EAAE,GACN,IAAI,CAchB;AAED;;;;;;;GAOG;AACH,8CANW,MAAM,GAAG;IACnB,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,aACO,MAAM,EAAE,GACN,IAAI,CA0BhB;AAED;;;;;;;;GAQG;AACH,8CAPW,MAAM,SACN,MAAM,GAAC,MAAM,EAAE,WACf,IAAI,GAAC;IACf,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,GACS,IAAI,CA8BhB;AAED;;;;;;;;;;;;;GAaG;AACH,uCAHW,MAAM,GACJ,IAAI,CAchB;AAgCD;;;;GAIG;AACH,wCAHW,MAAM,GAAC,MAAM,EAAE,GACb,OAAO,CAWnB;AAED;;;;;GAKG;AACH,qCALW,MAAM,QACN,oBAAoB,GAAC,eAAe,GAElC,MAAM,CAyBlB;AAED;;GAEG;AAEH;;;;GAIG;AACH,sCAJW,QAAQ,gBACR,OAAO,GACL,MAAM,CAIlB;AAWD;;;;GAIG;AACH,gDAHW,QAAQ,GACN,MAAM,GAAC,MAAM,EAAE,CAW3B;AAED;;;GAGG;AACH,6BAHW,QAAQ,GACN,CAAC,IAAI,IAAI,GAAC,SAAS,CAI/B;AA6BD;;;GAGG;AACH,0CAHW,MAAM,IAAI,GACR,IAAI,CAmBhB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "indexeddbshim",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "18.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Parashuram <code@nparashuram.com>",
|
|
6
6
|
"contributors": [
|
|
@@ -181,8 +181,6 @@
|
|
|
181
181
|
"@es-joy/json-file-reporter": "^1.5.0",
|
|
182
182
|
"@rollup/plugin-babel": "^7.1.0",
|
|
183
183
|
"@rollup/plugin-commonjs": "^29.0.3",
|
|
184
|
-
"@rollup/plugin-inject": "^5.0.5",
|
|
185
|
-
"@rollup/plugin-json": "^6.1.0",
|
|
186
184
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
187
185
|
"@rollup/plugin-terser": "^1.0.0",
|
|
188
186
|
"@types/node": "^26.4.1",
|
|
@@ -214,7 +212,6 @@
|
|
|
214
212
|
"rimraf": "^6.1.3",
|
|
215
213
|
"rollup": "^4.63.1",
|
|
216
214
|
"rollup-plugin-filesize": "^10.0.0",
|
|
217
|
-
"rollup-plugin-node-polyfills": "^0.2.1",
|
|
218
215
|
"sinon": "^22.1.0",
|
|
219
216
|
"source-map-support": "0.5.21",
|
|
220
217
|
"typescript": "^6.0.3",
|
package/src/DOMException.js
CHANGED
package/src/IDBCursor.js
CHANGED
|
@@ -44,7 +44,10 @@ const cursorDirections = ['next', 'prev', 'nextunique', 'prevunique'];
|
|
|
44
44
|
* },
|
|
45
45
|
* __count: boolean,
|
|
46
46
|
* __prefetchedIndex: Integer,
|
|
47
|
-
* __prefetchedData: null|
|
|
47
|
+
* __prefetchedData: null|{
|
|
48
|
+
* length: number;
|
|
49
|
+
* item(index: number): any;
|
|
50
|
+
* }|{
|
|
48
51
|
* data: RowItemNonNull[],
|
|
49
52
|
* length: Integer,
|
|
50
53
|
* item: (index: Integer) => RowItemNonNull
|
package/src/IDBFactory.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/* eslint-disable sonarjs/no-invariant-returns -- Convenient here */
|
|
2
|
-
// eslint-disable-next-line no-restricted-imports -- Can be polyfilled
|
|
3
|
-
import path from 'node:path';
|
|
4
2
|
import SyncPromise from 'sync-promise-expanded';
|
|
5
3
|
|
|
6
4
|
import {createEvent} from './Event.js';
|
|
@@ -367,7 +365,7 @@ function cleanupDatabaseResources (__openDatabase, name, escapedDatabaseName, da
|
|
|
367
365
|
}
|
|
368
366
|
if (fs && CFG.deleteDatabaseFiles !== false) {
|
|
369
367
|
closeCachedWebSQLConnections(name, () => {
|
|
370
|
-
fs.unlink(
|
|
368
|
+
fs.unlink(util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName), (err) => {
|
|
371
369
|
if (err && err.code !== 'ENOENT') { // Ignore if file is already deleted
|
|
372
370
|
const removalError = /** @type {Error & {code?: number}} */ (
|
|
373
371
|
new Error('Error removing database file: ' + escapedDatabaseName + ' ' + err)
|
|
@@ -383,7 +381,7 @@ function cleanupDatabaseResources (__openDatabase, name, escapedDatabaseName, da
|
|
|
383
381
|
}
|
|
384
382
|
|
|
385
383
|
const sqliteDB = __openDatabase(
|
|
386
|
-
|
|
384
|
+
util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName),
|
|
387
385
|
'1',
|
|
388
386
|
name,
|
|
389
387
|
CFG.DEFAULT_DB_SIZE
|
|
@@ -451,7 +449,7 @@ function createSysDB (__openDatabase, success, failure) {
|
|
|
451
449
|
sysdb = __openDatabase(
|
|
452
450
|
typeof CFG.memoryDatabase === 'string'
|
|
453
451
|
? CFG.memoryDatabase
|
|
454
|
-
:
|
|
452
|
+
: util.joinPath(
|
|
455
453
|
(typeof CFG.sysDatabaseBasePath === 'string'
|
|
456
454
|
? CFG.sysDatabaseBasePath
|
|
457
455
|
: (CFG.databaseBasePath || '')),
|
|
@@ -726,7 +724,7 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
726
724
|
req.transaction.__addNonRequestToTransactionQueue(
|
|
727
725
|
/**
|
|
728
726
|
* @param {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} tx
|
|
729
|
-
* @param {
|
|
727
|
+
* @param {any[]} args
|
|
730
728
|
* @param {(result?: any, req?: import('./IDBRequest.js').IDBRequestFull) => void} finished
|
|
731
729
|
* @returns {void}
|
|
732
730
|
*/
|
|
@@ -963,7 +961,7 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
963
961
|
db = websqlDBCache[name][version];
|
|
964
962
|
} else {
|
|
965
963
|
db = /** @type {DatabaseFull} */ (me.__openDatabase(
|
|
966
|
-
useMemoryDatabase ? CFG.memoryDatabase :
|
|
964
|
+
useMemoryDatabase ? CFG.memoryDatabase : util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName),
|
|
967
965
|
'1',
|
|
968
966
|
name,
|
|
969
967
|
CFG.DEFAULT_DB_SIZE
|
package/src/IDBTransaction.js
CHANGED
|
@@ -19,7 +19,7 @@ const readonlyProperties = ['objectStoreNames', 'mode', 'durability', 'db', 'err
|
|
|
19
19
|
/**
|
|
20
20
|
* @typedef {{
|
|
21
21
|
* op: SQLCallback,
|
|
22
|
-
* args:
|
|
22
|
+
* args: any[],
|
|
23
23
|
* req: import('./IDBRequest.js').IDBRequestFull|null
|
|
24
24
|
* }} RequestInfo
|
|
25
25
|
*/
|
|
@@ -71,17 +71,17 @@ const readonlyProperties = ['objectStoreNames', 'mode', 'durability', 'db', 'err
|
|
|
71
71
|
* __pushToQueue: (
|
|
72
72
|
* request: import('./IDBRequest.js').IDBRequestFull|null,
|
|
73
73
|
* callback: SQLCallback,
|
|
74
|
-
* args?:
|
|
74
|
+
* args?: any[]
|
|
75
75
|
* ) => void,
|
|
76
76
|
* __assertActive: () => void,
|
|
77
77
|
* commit: () => void,
|
|
78
78
|
* __addNonRequestToTransactionQueue: (
|
|
79
79
|
* callback: SQLCallback,
|
|
80
|
-
* args?:
|
|
80
|
+
* args?: any[]
|
|
81
81
|
* ) => void
|
|
82
82
|
* __addToTransactionQueue: (
|
|
83
83
|
* callback: SQLCallback,
|
|
84
|
-
* args:
|
|
84
|
+
* args: any[]|undefined,
|
|
85
85
|
* source: import('./IDBDatabase.js').IDBDatabaseFull|
|
|
86
86
|
* import('./IDBObjectStore.js').IDBObjectStoreFull|
|
|
87
87
|
* import('./IDBIndex.js').IDBIndexFull|
|
|
@@ -710,7 +710,7 @@ IDBTransaction.prototype.__createRequest = function (source) {
|
|
|
710
710
|
/**
|
|
711
711
|
* @typedef {(
|
|
712
712
|
* tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default,
|
|
713
|
-
* args:
|
|
713
|
+
* args: any[],
|
|
714
714
|
* success: (result?: any, req?: import('./IDBRequest.js').IDBRequestFull) => void,
|
|
715
715
|
* error: (
|
|
716
716
|
* tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default|Error|DOMException,
|
|
@@ -723,7 +723,7 @@ IDBTransaction.prototype.__createRequest = function (source) {
|
|
|
723
723
|
/**
|
|
724
724
|
* Adds a callback function to the transaction queue.
|
|
725
725
|
* @param {SQLCallback} callback
|
|
726
|
-
* @param {
|
|
726
|
+
* @param {any[]} args
|
|
727
727
|
* @param {import('./IDBDatabase.js').IDBDatabaseFull|
|
|
728
728
|
* import('./IDBObjectStore.js').IDBObjectStoreFull|
|
|
729
729
|
* import('./IDBIndex.js').IDBIndexFull} source
|
|
@@ -740,7 +740,7 @@ IDBTransaction.prototype.__addToTransactionQueue = function (callback, args, sou
|
|
|
740
740
|
* Adds a callback function to the transaction queue without generating a
|
|
741
741
|
* request.
|
|
742
742
|
* @param {SQLCallback} callback
|
|
743
|
-
* @param {
|
|
743
|
+
* @param {any[]} args
|
|
744
744
|
* @this {IDBTransactionFull}
|
|
745
745
|
* @returns {void}
|
|
746
746
|
*/
|
|
@@ -752,7 +752,7 @@ IDBTransaction.prototype.__addNonRequestToTransactionQueue = function (callback,
|
|
|
752
752
|
* Adds an IDBRequest to the transaction queue.
|
|
753
753
|
* @param {import('./IDBRequest.js').IDBRequestFull|null} request
|
|
754
754
|
* @param {SQLCallback} callback
|
|
755
|
-
* @param {
|
|
755
|
+
* @param {any[]} args
|
|
756
756
|
* @this {IDBTransactionFull}
|
|
757
757
|
* @returns {void}
|
|
758
758
|
*/
|
package/src/util.js
CHANGED
|
@@ -229,6 +229,28 @@ function sqlLIKEEscape (str) {
|
|
|
229
229
|
return str.replaceAll('^', '^^');
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Minimal replacement for `path.join(base, name)` covering our only use case:
|
|
234
|
+
* `name` is always a bare file name (no separators and no `.`/`..`), and
|
|
235
|
+
* `base` is a directory path expected to be absolute and normalized (an
|
|
236
|
+
* empty string means the current working directory). Unlike `path.join`,
|
|
237
|
+
* this performs no `.`/`..` resolution. It reuses the separator style of
|
|
238
|
+
* `base` (backslash only when `base` uses backslashes and no forward
|
|
239
|
+
* slashes, i.e. a Windows path), otherwise `/`; Node's `fs`, SQLite, and
|
|
240
|
+
* `websql-configurable` accept either separator on Windows regardless.
|
|
241
|
+
* Avoiding `node:path` keeps browser bundles free of a path polyfill.
|
|
242
|
+
* @param {string} base
|
|
243
|
+
* @param {string} name
|
|
244
|
+
* @returns {string}
|
|
245
|
+
*/
|
|
246
|
+
function joinPath (base, name) {
|
|
247
|
+
if (!base) {
|
|
248
|
+
return name;
|
|
249
|
+
}
|
|
250
|
+
const sep = base.includes('\\') && !base.includes('/') ? '\\' : '/';
|
|
251
|
+
return base.replace(/[/\\]+$/u, '') + sep + name;
|
|
252
|
+
}
|
|
253
|
+
|
|
232
254
|
/**
|
|
233
255
|
* @typedef {Function} AnyClass
|
|
234
256
|
*/
|
|
@@ -637,7 +659,7 @@ function runContinuationSafely (fn) {
|
|
|
637
659
|
export {escapeSQLiteStatement, unescapeSQLiteResponse,
|
|
638
660
|
escapeDatabaseNameForSQLAndFiles, unescapeDatabaseNameForSQLAndFiles,
|
|
639
661
|
escapeStoreNameForSQL, escapeIndexNameForSQL, escapeIndexNameForSQLKeyColumn,
|
|
640
|
-
sqlLIKEEscape, sqlQuote,
|
|
662
|
+
sqlLIKEEscape, sqlQuote, joinPath,
|
|
641
663
|
instanceOf,
|
|
642
664
|
isObj, isDate, isBlob, isRegExp, isFile, isBinary, isIterable,
|
|
643
665
|
defineOuterInterface, defineReadonlyOuterInterface,
|