indexeddbshim 17.6.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.
Files changed (36) hide show
  1. package/README.md +13 -3
  2. package/dist/DOMException.d.ts +2 -2
  3. package/dist/DOMException.d.ts.map +1 -1
  4. package/dist/IDBCursor.d.ts +8 -2
  5. package/dist/IDBCursor.d.ts.map +1 -1
  6. package/dist/IDBFactory.d.ts.map +1 -1
  7. package/dist/IDBTransaction.d.ts +12 -12
  8. package/dist/IDBTransaction.d.ts.map +1 -1
  9. package/dist/indexeddbshim-Key.js +2 -2
  10. package/dist/indexeddbshim-Key.js.map +1 -1
  11. package/dist/indexeddbshim-Key.min.js +1 -1
  12. package/dist/indexeddbshim-Key.min.js.map +1 -1
  13. package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs +506 -379
  14. package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs.map +1 -1
  15. package/dist/indexeddbshim-UnicodeIdentifiers.js +633 -710
  16. package/dist/indexeddbshim-UnicodeIdentifiers.js.map +1 -1
  17. package/dist/indexeddbshim-UnicodeIdentifiers.min.js +4 -4
  18. package/dist/indexeddbshim-UnicodeIdentifiers.min.js.map +1 -1
  19. package/dist/indexeddbshim-node.cjs +506 -379
  20. package/dist/indexeddbshim-node.cjs.map +1 -1
  21. package/dist/indexeddbshim-noninvasive.js +633 -710
  22. package/dist/indexeddbshim-noninvasive.js.map +1 -1
  23. package/dist/indexeddbshim-noninvasive.min.js +4 -4
  24. package/dist/indexeddbshim-noninvasive.min.js.map +1 -1
  25. package/dist/indexeddbshim.js +633 -710
  26. package/dist/indexeddbshim.js.map +1 -1
  27. package/dist/indexeddbshim.min.js +4 -4
  28. package/dist/indexeddbshim.min.js.map +1 -1
  29. package/dist/util.d.ts +15 -0
  30. package/dist/util.d.ts.map +1 -1
  31. package/package.json +6 -9
  32. package/src/DOMException.js +1 -1
  33. package/src/IDBCursor.js +4 -1
  34. package/src/IDBFactory.js +5 -7
  35. package/src/IDBTransaction.js +8 -8
  36. 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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.js"],"names":[],"mappings":"sBAKa,MAAM;;uBAwhBN,GAAG;AA9ehB;;;;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;;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"}
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": "17.6.0",
3
+ "version": "18.0.0",
4
4
  "type": "module",
5
5
  "author": "Parashuram <code@nparashuram.com>",
6
6
  "contributors": [
@@ -170,8 +170,8 @@
170
170
  "canvas": "^3.2.3",
171
171
  "eventtargeter": "0.12.0",
172
172
  "sync-promise-expanded": "^2.0.0",
173
- "typeson": "10.2.0",
174
- "typeson-registry": "14.3.0",
173
+ "typeson": "10.3.0",
174
+ "typeson-registry": "14.5.0",
175
175
  "websql-configurable": "^4.0.0"
176
176
  },
177
177
  "devDependencies": {
@@ -181,11 +181,9 @@
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
- "@types/node": "^26.4.0",
186
+ "@types/node": "^26.4.1",
189
187
  "@types/websql": "^0.0.30",
190
188
  "@unicode/unicode-17.0.0": "^2.0.2",
191
189
  "babel-plugin-add-module-exports": "1.0.4",
@@ -199,8 +197,8 @@
199
197
  "coveradge": "^0.8.2",
200
198
  "delay-cli": "^3.0.0",
201
199
  "eslint": "^10.9.1",
202
- "eslint-config-ash-nazg": "^43.1.0",
203
- "globals": "^17.11.0",
200
+ "eslint-config-ash-nazg": "^43.1.6",
201
+ "globals": "^17.12.0",
204
202
  "is-date-object": "1.1.0",
205
203
  "isomorphic-fetch": "^3.0.0",
206
204
  "jsdom": "^30.0.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",
@@ -260,7 +260,7 @@ function createNonNativeDOMException (name, message) {
260
260
 
261
261
  /**
262
262
  * @typedef {{
263
- * message: string|DOMString
263
+ * message: string
264
264
  * }} ErrorLike
265
265
  */
266
266
 
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|SQLResultSetRowList|{
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(path.join(CFG.databaseBasePath || '', escapedDatabaseName), (err) => {
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
- path.join(CFG.databaseBasePath || '', escapedDatabaseName),
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
- : path.join(
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 {ObjectArray} args
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 : path.join(CFG.databaseBasePath || '', escapedDatabaseName),
964
+ useMemoryDatabase ? CFG.memoryDatabase : util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName),
967
965
  '1',
968
966
  name,
969
967
  CFG.DEFAULT_DB_SIZE
@@ -19,7 +19,7 @@ const readonlyProperties = ['objectStoreNames', 'mode', 'durability', 'db', 'err
19
19
  /**
20
20
  * @typedef {{
21
21
  * op: SQLCallback,
22
- * args: ObjectArray,
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?: ObjectArray
74
+ * args?: any[]
75
75
  * ) => void,
76
76
  * __assertActive: () => void,
77
77
  * commit: () => void,
78
78
  * __addNonRequestToTransactionQueue: (
79
79
  * callback: SQLCallback,
80
- * args?: ObjectArray
80
+ * args?: any[]
81
81
  * ) => void
82
82
  * __addToTransactionQueue: (
83
83
  * callback: SQLCallback,
84
- * args: ObjectArray|undefined,
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: ObjectArray,
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 {ObjectArray} args
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 {ObjectArray} args
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 {ObjectArray} args
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,