indexeddbshim 16.1.0 → 17.1.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 (82) hide show
  1. package/README.md +65 -3
  2. package/badges/licenses-badge-dev.svg +1 -1
  3. package/badges/licenses-badge.svg +1 -1
  4. package/dist/CFG.d.ts +1 -0
  5. package/dist/CFG.d.ts.map +1 -1
  6. package/dist/DOMException.d.ts.map +1 -1
  7. package/dist/DOMStringList.d.ts.map +1 -1
  8. package/dist/IDBCursor.d.ts +12 -3
  9. package/dist/IDBCursor.d.ts.map +1 -1
  10. package/dist/IDBDatabase.d.ts +2 -1
  11. package/dist/IDBDatabase.d.ts.map +1 -1
  12. package/dist/IDBFactory.d.ts +2 -1
  13. package/dist/IDBFactory.d.ts.map +1 -1
  14. package/dist/IDBIndex.d.ts +2 -1
  15. package/dist/IDBIndex.d.ts.map +1 -1
  16. package/dist/IDBKeyRange.d.ts +1 -1
  17. package/dist/IDBKeyRange.d.ts.map +1 -1
  18. package/dist/IDBObjectStore.d.ts +2 -1
  19. package/dist/IDBObjectStore.d.ts.map +1 -1
  20. package/dist/IDBRequest.d.ts +5 -3
  21. package/dist/IDBRequest.d.ts.map +1 -1
  22. package/dist/IDBTransaction.d.ts +23 -1
  23. package/dist/IDBTransaction.d.ts.map +1 -1
  24. package/dist/Key.d.ts.map +1 -1
  25. package/dist/Sca.d.ts.map +1 -1
  26. package/dist/UnicodeIdentifiers.d.ts.map +1 -1
  27. package/dist/browser-noninvasive.d.ts.map +1 -1
  28. package/dist/indexeddbshim-Key.js +1863 -1669
  29. package/dist/indexeddbshim-Key.js.map +1 -1
  30. package/dist/indexeddbshim-Key.min.js +2 -2
  31. package/dist/indexeddbshim-Key.min.js.map +1 -1
  32. package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs +2373 -1893
  33. package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs.map +1 -1
  34. package/dist/indexeddbshim-UnicodeIdentifiers.js +3124 -2285
  35. package/dist/indexeddbshim-UnicodeIdentifiers.js.map +1 -1
  36. package/dist/indexeddbshim-UnicodeIdentifiers.min.js +9 -2
  37. package/dist/indexeddbshim-UnicodeIdentifiers.min.js.map +1 -1
  38. package/dist/indexeddbshim-node.cjs +2373 -1893
  39. package/dist/indexeddbshim-node.cjs.map +1 -1
  40. package/dist/indexeddbshim-noninvasive.js +3123 -2284
  41. package/dist/indexeddbshim-noninvasive.js.map +1 -1
  42. package/dist/indexeddbshim-noninvasive.min.js +9 -2
  43. package/dist/indexeddbshim-noninvasive.min.js.map +1 -1
  44. package/dist/indexeddbshim.js +3120 -2282
  45. package/dist/indexeddbshim.js.map +1 -1
  46. package/dist/indexeddbshim.min.js +9 -2
  47. package/dist/indexeddbshim.min.js.map +1 -1
  48. package/dist/node-UnicodeIdentifiers.d.ts +2 -2
  49. package/dist/node-UnicodeIdentifiers.d.ts.map +1 -1
  50. package/dist/node.d.ts +2 -2
  51. package/dist/node.d.ts.map +1 -1
  52. package/dist/nodeSQLiteDatabase.d.ts +65 -0
  53. package/dist/nodeSQLiteDatabase.d.ts.map +1 -0
  54. package/dist/nodeWebSQL.d.ts.map +1 -1
  55. package/dist/util.d.ts +5 -0
  56. package/dist/util.d.ts.map +1 -1
  57. package/package.json +118 -106
  58. package/src/CFG.js +5 -3
  59. package/src/DOMException.js +11 -9
  60. package/src/DOMStringList.js +8 -3
  61. package/src/Event.js +2 -0
  62. package/src/IDBCursor.js +152 -95
  63. package/src/IDBDatabase.js +9 -6
  64. package/src/IDBFactory.js +31 -20
  65. package/src/IDBIndex.js +83 -79
  66. package/src/IDBKeyRange.js +42 -35
  67. package/src/IDBObjectStore.js +83 -77
  68. package/src/IDBRequest.js +28 -15
  69. package/src/IDBTransaction.js +40 -6
  70. package/src/IDBVersionChangeEvent.js +2 -0
  71. package/src/Key.js +28 -14
  72. package/src/Sca.js +2 -1
  73. package/src/UnicodeIdentifiers.js +2 -2
  74. package/src/browser-UnicodeIdentifiers.js +0 -1
  75. package/src/browser-noninvasive.js +0 -1
  76. package/src/browser.js +0 -1
  77. package/src/node-UnicodeIdentifiers.js +6 -2
  78. package/src/node.js +6 -2
  79. package/src/nodeSQLiteDatabase.js +174 -0
  80. package/src/nodeWebSQL.js +1 -3
  81. package/src/setGlobalVars.js +13 -13
  82. package/src/util.js +75 -15
@@ -2,7 +2,7 @@ export default __setGlobalVars;
2
2
  /**
3
3
  * @param {import('./setGlobalVars.js').ShimmedObject} idb
4
4
  * @param {import('./CFG.js').default} initialConfig
5
- * @returns {{}|Window}
5
+ * @returns {import('./setGlobalVars.js').ShimmedObject|Window}
6
6
  */
7
- declare function __setGlobalVars(idb: import("./setGlobalVars.js").ShimmedObject, initialConfig?: any): {} | Window;
7
+ declare function __setGlobalVars(idb: import("./setGlobalVars.js").ShimmedObject, initialConfig?: any): import("./setGlobalVars.js").ShimmedObject | Window;
8
8
  //# sourceMappingURL=node-UnicodeIdentifiers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-UnicodeIdentifiers.d.ts","sourceRoot":"","sources":["../src/node-UnicodeIdentifiers.js"],"names":[],"mappings":";AASA;;;;GAIG;AACH,sCAJW,OAAO,oBAAoB,EAAE,aAAa,wBAExC,EAAE,GAAC,MAAM,CAWrB"}
1
+ {"version":3,"file":"node-UnicodeIdentifiers.d.ts","sourceRoot":"","sources":["../src/node-UnicodeIdentifiers.js"],"names":[],"mappings":";AASA;;;;GAIG;AACH,sCAJW,OAAO,oBAAoB,EAAE,aAAa,wBAExC,OAAO,oBAAoB,EAAE,aAAa,GAAC,MAAM,CAe7D"}
package/dist/node.d.ts CHANGED
@@ -2,7 +2,7 @@ export default __setGlobalVars;
2
2
  /**
3
3
  * @param {import('./setGlobalVars.js').ShimmedObject} idb
4
4
  * @param {import('./CFG.js').default} initialConfig
5
- * @returns {{}|Window}
5
+ * @returns {import('./setGlobalVars.js').ShimmedObject|Window}
6
6
  */
7
- declare function __setGlobalVars(idb: import("./setGlobalVars.js").ShimmedObject, initialConfig?: any): {} | Window;
7
+ declare function __setGlobalVars(idb: import("./setGlobalVars.js").ShimmedObject, initialConfig?: any): import("./setGlobalVars.js").ShimmedObject | Window;
8
8
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.js"],"names":[],"mappings":";AAQA;;;;GAIG;AACH,sCAJW,OAAO,oBAAoB,EAAE,aAAa,wBAExC,EAAE,GAAC,MAAM,CAIrB"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.js"],"names":[],"mappings":";AAQA;;;;GAIG;AACH,sCAJW,OAAO,oBAAoB,EAAE,aAAa,wBAExC,OAAO,oBAAoB,EAAE,aAAa,GAAC,MAAM,CAQ7D"}
@@ -0,0 +1,65 @@
1
+ export default SQLiteDatabase;
2
+ export type SQLProfileCallback = (sql: string, duration: number) => void;
3
+ export type SQLTraceCallback = ((sql: string) => void) | undefined;
4
+ /**
5
+ * @typedef {(sql: string, duration: number) => void} SQLProfileCallback
6
+ */
7
+ /**
8
+ * @typedef {((sql: string) => void)|undefined} SQLTraceCallback
9
+ */
10
+ /**
11
+ * @param {string} name
12
+ * @param {{busyTimeout?: number, trace?: (sql: string) => void, profile?: SQLProfileCallback}} [opts]
13
+ * @returns {void}
14
+ */
15
+ declare function SQLiteDatabase(name: string, opts?: {
16
+ busyTimeout?: number;
17
+ trace?: (sql: string) => void;
18
+ profile?: SQLProfileCallback;
19
+ }): void;
20
+ declare class SQLiteDatabase {
21
+ /**
22
+ * @typedef {(sql: string, duration: number) => void} SQLProfileCallback
23
+ */
24
+ /**
25
+ * @typedef {((sql: string) => void)|undefined} SQLTraceCallback
26
+ */
27
+ /**
28
+ * @param {string} name
29
+ * @param {{busyTimeout?: number, trace?: (sql: string) => void, profile?: SQLProfileCallback}} [opts]
30
+ * @returns {void}
31
+ */
32
+ constructor(name: string, opts?: {
33
+ busyTimeout?: number;
34
+ trace?: (sql: string) => void;
35
+ profile?: SQLProfileCallback;
36
+ });
37
+ _db: any;
38
+ /**
39
+ * @param {{sql: string, args: unknown[]}[]} queries
40
+ * @param {boolean} readOnly
41
+ * @param {(err: Error|null, results?: SQLiteResult[]) => void} callback
42
+ * @returns {void}
43
+ */
44
+ exec(queries: {
45
+ sql: string;
46
+ args: unknown[];
47
+ }[], readOnly: boolean, callback: (err: Error | null, results?: SQLiteResult[]) => void): void;
48
+ }
49
+ /**
50
+ *
51
+ */
52
+ declare class SQLiteResult {
53
+ /**
54
+ * @param {Error|null|undefined} error
55
+ * @param {number|undefined} [insertId]
56
+ * @param {number} [rowsAffected]
57
+ * @param {object[]} [rows]
58
+ */
59
+ constructor(error: Error | null | undefined, insertId?: number | undefined, rowsAffected?: number, rows?: object[]);
60
+ error: Error | null | undefined;
61
+ insertId: number | undefined;
62
+ rowsAffected: number | undefined;
63
+ rows: object[] | undefined;
64
+ }
65
+ //# sourceMappingURL=nodeSQLiteDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeSQLiteDatabase.d.ts","sourceRoot":"","sources":["../src/nodeSQLiteDatabase.js"],"names":[],"mappings":";iCAyBa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI;+BAIvC,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAC,SAAS;AAL9C;;GAEG;AAEH;;GAEG;AAEH;;;;GAIG;AACH,sCAJW,MAAM,SACN;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAAC,GACjF,IAAI,CAkEhB;;IA7ED;;OAEG;IAEH;;OAEG;IAEH;;;;OAIG;IACH,kBAJW,MAAM,SACN;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,kBAAkB,CAAA;KAAC,EAmE7F;IA9CG,SA6CE;IAyBN;;;;;OAKG;IACH,cALW;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,EAAE,CAAA;KAAC,EAAE,YAChC,OAAO,YACP,CAAC,GAAG,EAAE,KAAK,GAAC,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,GACjD,IAAI,CA0ChB;;AAzKD;;GAEG;AACH;IACI;;;;;OAKG;IACH,mBALW,KAAK,GAAC,IAAI,GAAC,SAAS,aACpB,MAAM,GAAC,SAAS,iBAChB,MAAM,SACN,MAAM,EAAE,EAOlB;IAJG,gCAAkB;IAClB,6BAAwB;IACxB,iCAAgC;IAChC,2BAAgB;CAEvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"nodeWebSQL.d.ts","sourceRoot":"","sources":["../src/nodeWebSQL.js"],"names":[],"mappings":";AAwBA,iHAAiE"}
1
+ {"version":3,"file":"nodeWebSQL.d.ts","sourceRoot":"","sources":["../src/nodeWebSQL.js"],"names":[],"mappings":";AAsBA,iHAAiE"}
package/dist/util.d.ts CHANGED
@@ -172,4 +172,9 @@ export function convertToSequenceDOMString(val: AnyValue): string | string[];
172
172
  * @returns {v is null|undefined}
173
173
  */
174
174
  export function isNullish(v: AnyValue): v is null | undefined;
175
+ /**
176
+ * @param {() => void} fn
177
+ * @returns {void}
178
+ */
179
+ export function runContinuationSafely(fn: () => void): void;
175
180
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.js"],"names":[],"mappings":"sBAMa,MAAM;;uBAkfN,GAAG;AAxchB;;;;GAIG;AACH,2CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,4CAHW,MAAM,GACJ,MAAM,CAUlB;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,CAKnB;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,CA2BhB;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;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"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.js"],"names":[],"mappings":"sBAKa,MAAM;;uBA6fN,GAAG;AAndhB;;;;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,CA2BhB;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;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": "16.1.0",
3
+ "version": "17.1.0",
4
4
  "type": "module",
5
5
  "author": "Parashuram <code@nparashuram.com>",
6
6
  "contributors": [
@@ -28,6 +28,78 @@
28
28
  "test-support/**"
29
29
  ]
30
30
  },
31
+ "scripts": {
32
+ "tsc": "tsc",
33
+ "tsc-prod": "tsc -p tsconfig-prod.json",
34
+ "build": "rm -R dist && npm run tsc-prod && npm run rollup",
35
+ "prepublishOnly": "npm run license-badges && npm run build",
36
+ "license-badge": "license-badger --corrections --uncategorizedLicenseTemplate \"\\${license} (\\${name} (\\${version}))\" --filteredTypes=nonempty --textTemplate \"License types\n(project, deps, and bundled devDeps)\" --packageJson --production badges/licenses-badge.svg",
37
+ "license-badge-dev": "license-badger --corrections --filteredTypes=nonempty --textTemplate \"License types\n(all devDeps)\" --allDevelopment badges/licenses-badge-dev.svg",
38
+ "license-badges": "run-p license-badge license-badge-dev",
39
+ "start": "static -p 9999 -H '{\"Access-Control-Allow-Origin\": \"http://web-platform.test:8000\", \"Access-Control-Allow-Methods\": \"GET\", \"Access-Control-Allow-Headers\": \"Content-Type\"}'",
40
+ "watch": "chokidar \"src/*\" \"node_modules/eventtarget/EventTarget.js\" \"node_modules/websql/lib/websql/WebSQLTransaction.js\" \"node_modules/websql/lib/websql/WebSQLDatabase.js\" -c \"npm run rollup\"",
41
+ "dev": "run-p start watch",
42
+ "clean": "run-p clean-sysDB clean-mocha clean-fake clean-mock clean-w3c clean-w3cOld",
43
+ "clean-sysDB": "rimraf __sysdb__*",
44
+ "clean-polyfill": "run-p clean-fake clean-mock clean-w3cOld clean-sysDB",
45
+ "clean-mocha": "rimraf D_indexeddbshim_test_database_* D_test.sqlite",
46
+ "clean-fake": "rimraf D_test0.*",
47
+ "clean-mock": "rimraf D_test_database*",
48
+ "clean-w3c": "rimraf D_^D^B2* D_db* D_test* D_about* D_^I^D^B* D_blank* D_database_name* D_idbtransaction* D_x D_x.sqlite D_y D_y.sqlite D_webworker* D_http*",
49
+ "clean-w3cOld": "rimraf D_db.sqlite* D_test* D_database_name* D_idbtransaction*",
50
+ "copy": "copyup node_modules/core-js-bundle/minified.js node_modules/source-map-support/browser-source-map-support.js node_modules/mocha/mocha.css node_modules/mocha/mocha.js node_modules/chai/chai.js node_modules/sinon/pkg/sinon-no-sourcemaps.js test-support",
51
+ "lint": "eslint .",
52
+ "eslint": "npm run lint",
53
+ "sqlite-rebuild": "cd node_modules/sqlite3 && npm i",
54
+ "w3c-build-only": "node test-support/node-buildjs",
55
+ "w3c-build": "run-s clean-w3c w3c-build-only",
56
+ "fake": "run-s clean-fake coverage:fake clean-fake",
57
+ "mock": "run-s clean-mock coverage:mock clean-mock",
58
+ "w3c-old": "run-s clean-w3cOld coverage:w3cOld clean-w3cOld",
59
+ "tests-polyfill": "run-s clean-polyfill coverage:fake coverage:mock coverage:w3cOld",
60
+ "mocha": "run-s clean-mocha coverage:mocha clean-mocha",
61
+ "rollup": "rollup -c",
62
+ "coverage:fake": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+fake --require source-map-support/register tests-polyfill/fakeIndexedDB/test-node.js",
63
+ "coverage:mock": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+mock --require source-map-support/register tests-polyfill/indexedDBmock/test-node.js",
64
+ "coverage:w3cOld": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+w3c --require source-map-support/register tests-polyfill/w3c/test-node.js",
65
+ "coverage:w3c": "NODE_OPTIONS=--max_old_space_size=16384 c8 --silent --no-clean npm run w3c-test-only",
66
+ "test:w3c": "NODE_OPTIONS=--max_old_space_size=16384 NODE_OPTIONS=--trace-warnings node test-support/node-idb-test.js",
67
+ "w3c-test-only": "node --trace-warnings test-support/node-idb-test.js",
68
+ "coverage:mocha": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+mocha --require source-map-support/register tests-mocha/test-node.js",
69
+ "coverage-badge": "coveradge badges/coverage-badge",
70
+ "coverage:report-only": "c8 report",
71
+ "coverage:report": "run-s coverage:report-only",
72
+ "remove-cache": "rimraf node_modules/.cache",
73
+ "remove-cov": "rimraf .nyc_output ",
74
+ "remove-results": "rimraf test-support/results/file*.json",
75
+ "coverage:polyfill": "run-s coverage:fake coverage:mock coverage:w3cOld",
76
+ "tests-badge": "mbg --fileGlob \"./test-support/results/file*.json\" --badge_output badges/tests-badge.svg",
77
+ "coverage": "run-s -c clean remove-cache remove-cov remove-results coverage:fake coverage:mock coverage:mocha coverage:w3c clean tests-badge coverage-badge coverage:report",
78
+ "open-coverage-only": "open http://127.0.0.1:9999/coverage/lcov-report/",
79
+ "open-coverage": "run-p start open-coverage-only",
80
+ "test": "run-s lint coverage",
81
+ "submodules-init": "git submodule update --init --recursive",
82
+ "submodules-fetch": "git submodule foreach --recursive git fetch",
83
+ "submodules-merge": "git submodule foreach git merge origin master",
84
+ "submodules": "run-s submodules-init submodules-fetch submodules-merge",
85
+ "wpt": "run-p start web-platform-tests",
86
+ "web-platform-tests": "cd web-platform-tests && ./wpt serve",
87
+ "w3c-find-unused": "node test-support/find-unused.js",
88
+ "w3c": "run-s w3c-build w3c-test",
89
+ "w3c-add-wrap": "node test-support/wrap-w3c-tests",
90
+ "w3c-remove-wrap": "node test-support/wrap-w3c-tests remove",
91
+ "w3c-wrap": "node test-support/wrap-w3c-tests",
92
+ "test-and-start:w3c": "run-p -r start web-platform-tests delayed-w3c-test",
93
+ "delay": "delay 9",
94
+ "delayed-w3c-test": "run-s delay test:w3c",
95
+ "w3c-test": "run-s clean-w3c test-and-start:w3c",
96
+ "w3c-good-only": "node test-support/node-idb-test.js good",
97
+ "w3c-bad-only": "node test-support/node-idb-test.js bad",
98
+ "w3c-good": "run-s w3c-build w3c-good-only clean-w3c",
99
+ "w3c-bad": "run-s w3c-build w3c-bad-only clean-w3c",
100
+ "w3c-good-test": "run-s w3c-good-only clean-w3c",
101
+ "w3c-bad-test": "run-s w3c-bad-only clean-w3c"
102
+ },
31
103
  "repository": {
32
104
  "type": "git",
33
105
  "url": "https://github.com/indexeddbshim/IndexedDBShim"
@@ -81,136 +153,76 @@
81
153
  "last 3 Samsung versions"
82
154
  ],
83
155
  "engines": {
84
- "node": ">=20.0.0"
156
+ "node": "^22.18.0 || >= 24.11.0"
85
157
  },
86
158
  "dependencies": {
87
- "canvas": "^3.2.0",
159
+ "@node-static/node-static": "^0.9.0",
160
+ "better-sqlite3": "^13.0.3",
161
+ "canvas": "^3.2.3",
88
162
  "eventtargeter": "0.9.0",
89
- "sync-promise-expanded": "^1.0.0",
90
- "typeson": "9.0.4",
91
- "typeson-registry": "12.0.0",
163
+ "sync-promise-expanded": "^2.0.0",
164
+ "typeson": "10.0.0",
165
+ "typeson-registry": "13.0.0",
92
166
  "websql-configurable": "^3.0.3"
93
167
  },
94
168
  "devDependencies": {
95
- "@babel/core": "^7.28.3",
96
- "@babel/preset-env": "^7.28.3",
97
- "@brettz9/node-static": "^0.1.1",
169
+ "@babel/core": "^8.0.1",
170
+ "@babel/preset-env": "^8.0.2",
98
171
  "@es-joy/json-file-reporter": "^1.5.0",
99
- "@rollup/plugin-babel": "^6.0.4",
100
- "@rollup/plugin-commonjs": "^28.0.6",
172
+ "@rollup/plugin-babel": "^7.1.0",
173
+ "@rollup/plugin-commonjs": "^29.0.3",
174
+ "@rollup/plugin-inject": "^5.0.5",
101
175
  "@rollup/plugin-json": "^6.1.0",
102
- "@rollup/plugin-node-resolve": "^16.0.1",
103
- "@rollup/plugin-terser": "^0.4.4",
104
- "@types/node": "^24.3.0",
176
+ "@rollup/plugin-node-resolve": "^16.0.3",
177
+ "@rollup/plugin-terser": "^1.0.0",
178
+ "@types/better-sqlite3": "^9.6.0",
179
+ "@types/node": "^26.1.2",
105
180
  "@types/websql": "^0.0.30",
106
- "@unicode/unicode-17.0.0": "^1.6.10",
181
+ "@unicode/unicode-17.0.0": "^1.6.17",
107
182
  "babel-plugin-add-module-exports": "1.0.4",
108
- "bson": "^6.10.4",
109
- "builtin-modules": "^5.0.0",
110
- "c8": "^10.1.3",
111
- "chai": "6.0.1",
183
+ "bson": "^7.3.1",
184
+ "builtin-modules": "^5.3.0",
185
+ "c8": "^12.0.0",
186
+ "chai": "6.2.2",
112
187
  "chokidar-cli": "^3.0.0",
113
188
  "colors": "1.4.0",
114
189
  "copyfiles": "^2.4.1",
115
- "core-js-bundle": "^3.45.1",
190
+ "core-js-bundle": "^3.50.0",
116
191
  "coveradge": "^0.8.2",
117
192
  "cyclonejs": "1.1.4",
118
- "delay-cli": "^2.0.0",
119
- "eslint": "^9.34.0",
120
- "eslint-config-ash-nazg": "^39.0.1",
121
- "globals": "^16.3.0",
122
- "got": "^14.4.8",
193
+ "delay-cli": "^3.0.0",
194
+ "eslint": "^10.8.0",
195
+ "eslint-config-ash-nazg": "^42.1.1",
196
+ "globals": "^17.9.0",
123
197
  "is-date-object": "1.1.0",
124
198
  "isomorphic-fetch": "^3.0.0",
125
- "jsdom": "^26.1.0",
126
- "license-badger": "^0.22.1",
199
+ "jsdom": "^30.0.1",
200
+ "license-badger": "^0.23.0",
127
201
  "local-xmlhttprequest": "2.0.0",
128
- "mocha": "^11.7.1",
202
+ "mocha": "^11.8.0",
129
203
  "mocha-badge-generator": "^0.11.0",
130
204
  "mocha-multi-reporters": "^1.5.1",
131
205
  "npm-run-all": "^4.1.5",
132
- "open-cli": "^8.0.0",
133
- "rimraf": "^6.0.1",
134
- "rollup": "^4.50.0",
206
+ "open-cli": "^9.0.0",
207
+ "rimraf": "^6.1.3",
208
+ "rollup": "^4.62.4",
135
209
  "rollup-plugin-filesize": "^10.0.0",
136
- "rollup-plugin-node-globals": "^1.4.0",
137
210
  "rollup-plugin-node-polyfills": "^0.2.1",
138
- "sinon": "^21.0.0",
211
+ "sinon": "^22.1.0",
139
212
  "source-map-support": "0.5.21",
140
213
  "sourcemap-transformer": "git+https://github.com/brettz9/sourcemap-transformer.git",
141
- "typescript": "^5.9.2",
214
+ "typescript": "^6.0.3",
142
215
  "w3c-blob": "0.0.1",
143
- "ws": "^8.18.3"
216
+ "ws": "^8.21.2"
144
217
  },
145
- "scripts": {
146
- "tsc": "tsc",
147
- "tsc-prod": "tsc -p tsconfig-prod.json",
148
- "build": "rm -R dist && npm run tsc-prod && npm run rollup",
149
- "license-badge": "license-badger --corrections --uncategorizedLicenseTemplate \"\\${license} (\\${name} (\\${version}))\" --filteredTypes=nonempty --textTemplate \"License types\n(project, deps, and bundled devDeps)\" --packageJson --production badges/licenses-badge.svg",
150
- "license-badge-dev": "license-badger --corrections --filteredTypes=nonempty --textTemplate \"License types\n(all devDeps)\" --allDevelopment badges/licenses-badge-dev.svg",
151
- "license-badges": "run-p license-badge license-badge-dev",
152
- "start": "static -p 9999 -H '{\"Access-Control-Allow-Origin\": \"http://web-platform.test:8000\", \"Access-Control-Allow-Methods\": \"GET\", \"Access-Control-Allow-Headers\": \"Content-Type\"}'",
153
- "watch": "chokidar \"src/*\" \"node_modules/eventtarget/EventTarget.js\" \"node_modules/websql/lib/websql/WebSQLTransaction.js\" \"node_modules/websql/lib/websql/WebSQLDatabase.js\" -c \"npm run rollup\"",
154
- "dev": "run-p start watch",
155
- "clean": "run-p clean-sysDB clean-mocha clean-fake clean-mock clean-w3c clean-w3cOld",
156
- "clean-sysDB": "rimraf __sysdb__*",
157
- "clean-polyfill": "run-p clean-fake clean-mock clean-w3cOld clean-sysDB",
158
- "clean-mocha": "rimraf D_indexeddbshim_test_database_* D_test.sqlite",
159
- "clean-fake": "rimraf D_test0.*",
160
- "clean-mock": "rimraf D_test_database*",
161
- "clean-w3c": "rimraf D_^D^B2* D_db* D_test* D_about* D_^I^D^B* D_blank* D_database_name* D_idbtransaction* D_x D_x.sqlite D_y D_y.sqlite D_webworker* D_http*",
162
- "clean-w3cOld": "rimraf D_db.sqlite* D_test* D_database_name* D_idbtransaction*",
163
- "copy": "copyup node_modules/core-js-bundle/minified.js node_modules/source-map-support/browser-source-map-support.js node_modules/mocha/mocha.css node_modules/mocha/mocha.js node_modules/chai/chai.js node_modules/sinon/pkg/sinon-no-sourcemaps.js test-support",
164
- "lint": "eslint .",
165
- "eslint": "npm run lint",
166
- "sqlite-rebuild": "cd node_modules/sqlite3 && npm i",
167
- "w3c-build-only": "node test-support/node-buildjs",
168
- "w3c-build": "run-s clean-w3c w3c-build-only",
169
- "fake": "run-s clean-fake coverage:fake clean-fake",
170
- "mock": "run-s clean-mock coverage:mock clean-mock",
171
- "w3c-old": "run-s clean-w3cOld coverage:w3cOld clean-w3cOld",
172
- "tests-polyfill": "run-s clean-polyfill coverage:fake coverage:mock coverage:w3cOld",
173
- "mocha": "run-s clean-mocha coverage:mocha clean-mocha",
174
- "rollup": "rollup -c",
175
- "coverage:fake": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+fake --require source-map-support/register tests-polyfill/fakeIndexedDB/test-node.js",
176
- "coverage:mock": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+mock --require source-map-support/register tests-polyfill/indexedDBmock/test-node.js",
177
- "coverage:w3cOld": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+w3c --require source-map-support/register tests-polyfill/w3c/test-node.js",
178
- "coverage:w3c": "NODE_OPTIONS=--max_old_space_size=16384 c8 --silent --no-clean npm run w3c-test-only",
179
- "test:w3c": "NODE_OPTIONS=--max_old_space_size=16384 NODE_OPTIONS=--trace-warnings node test-support/node-idb-test.js",
180
- "w3c-test-only": "node --trace-warnings test-support/node-idb-test.js",
181
- "coverage:mocha": "c8 --silent --no-clean mocha --reporterOptions configFile=mocha-multi-reporters.json,cmrOutput=@es-joy/json-file-reporter+output+mocha --require source-map-support/register tests-mocha/test-node.js",
182
- "coverage-badge": "coveradge badges/coverage-badge",
183
- "coverage:report-only": "c8 report",
184
- "coverage:report": "run-s coverage:report-only",
185
- "remove-cache": "rimraf node_modules/.cache",
186
- "remove-cov": "rimraf .nyc_output ",
187
- "remove-results": "rimraf test-support/results/file*.json",
188
- "coverage:polyfill": "run-s coverage:fake coverage:mock coverage:w3cOld",
189
- "tests-badge": "mbg --fileGlob \"./test-support/results/file*.json\" --badge_output badges/tests-badge.svg",
190
- "coverage": "run-s -c clean remove-cache remove-cov remove-results coverage:fake coverage:mock coverage:mocha coverage:w3c clean tests-badge coverage-badge coverage:report",
191
- "open-coverage-only": "open http://127.0.0.1:9999/coverage/lcov-report/",
192
- "open-coverage": "run-p start open-coverage-only",
193
- "test": "run-s lint coverage",
194
- "submodules-init": "git submodule update --init --recursive",
195
- "submodules-fetch": "git submodule foreach --recursive git fetch",
196
- "submodules-merge": "git submodule foreach git merge origin master",
197
- "submodules": "run-s submodules-init submodules-fetch submodules-merge",
198
- "wpt": "run-p start web-platform-tests",
199
- "web-platform-tests": "cd web-platform-tests && ./wpt serve",
200
- "w3c-find-unused": "node test-support/find-unused.js",
201
- "w3c": "run-s w3c-build w3c-test",
202
- "w3c-add-wrap": "node test-support/wrap-w3c-tests",
203
- "w3c-remove-wrap": "node test-support/wrap-w3c-tests remove",
204
- "w3c-wrap": "node test-support/wrap-w3c-tests",
205
- "test-and-start:w3c": "run-p -r start web-platform-tests delayed-w3c-test",
206
- "delay": "delay 9",
207
- "delayed-w3c-test": "run-s delay test:w3c",
208
- "w3c-test": "run-s clean-w3c test-and-start:w3c",
209
- "w3c-good-only": "node test-support/node-idb-test.js good",
210
- "w3c-bad-only": "node test-support/node-idb-test.js bad",
211
- "w3c-good": "run-s w3c-build w3c-good-only clean-w3c",
212
- "w3c-bad": "run-s w3c-build w3c-bad-only clean-w3c",
213
- "w3c-good-test": "run-s w3c-good-only clean-w3c",
214
- "w3c-bad-test": "run-s w3c-bad-only clean-w3c"
218
+ "allowScripts": {
219
+ "es5-ext@0.10.64": true,
220
+ "fsevents@2.3.3": true,
221
+ "sqlite3@5.1.7": true,
222
+ "canvas@3.2.3": true,
223
+ "unrs-resolver@1.12.2": true,
224
+ "better-sqlite3@13.0.3": true,
225
+ "core-js-bundle@3.50.0": true,
226
+ "is-hidden-file@1.1.2": true
215
227
  }
216
- }
228
+ }
package/src/CFG.js CHANGED
@@ -1,9 +1,7 @@
1
- /* eslint-disable jsdoc/valid-types -- https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/147 */
2
1
  /**
3
2
  * @typedef {T[keyof T]} ValueOf<T>
4
3
  * @template T
5
4
  */
6
- /* eslint-enable jsdoc/valid-types -- https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/147 */
7
5
 
8
6
  /**
9
7
  * @typedef {{unlink: (path: string, cb: import('fs').NoParamCallback) => void}} FSApi
@@ -44,6 +42,7 @@
44
42
  * sqlBusyTimeout: number,
45
43
  * sqlTrace: () => void,
46
44
  * sqlProfile: () => void,
45
+ * escapeNULForSQLiteStatements: boolean,
47
46
  * createIndexes: boolean
48
47
  * }} ConfigValues
49
48
  */
@@ -66,6 +65,7 @@ const CFG = /** @type {ConfigValues} */ ({});
66
65
  */
67
66
 
68
67
  /** @type {Config} */
68
+ // eslint-disable-next-line unicorn/no-top-level-side-effects -- Would be good
69
69
  ([
70
70
  // Boolean for verbose reporting
71
71
  'DEBUG', // Effectively defaults to false (ignored unless `true`)
@@ -84,7 +84,7 @@ const CFG = /** @type {ConfigValues} */ ({});
84
84
  // calls required for full WebIDL compliance will be used. Probably
85
85
  // only needed for testing or environments where full introspection
86
86
  // on class relationships is required; see
87
- // http://stackoverflow.com/questions/41927589/rationales-consequences-of-webidl-class-inheritance-requirements
87
+ // https://stackoverflow.com/questions/41927589/rationales-consequences-of-webidl-class-inheritance-requirements
88
88
  'fullIDLSupport', // Effectively defaults to false (ignored unless `true`)
89
89
 
90
90
  // Boolean on whether to perform origin checks in `IDBFactory` methods
@@ -216,6 +216,8 @@ const CFG = /** @type {ConfigValues} */ ({});
216
216
  'sqlBusyTimeout', // Defaults to 1000
217
217
  'sqlTrace', // Callback not used by default
218
218
  'sqlProfile', // Callback not used by default
219
+ // Defaults to true except in Node builds where we can preserve literal NUL with better-sqlite3
220
+ 'escapeNULForSQLiteStatements',
219
221
 
220
222
  'createIndexes'
221
223
  ]).forEach((prop) => {
@@ -117,7 +117,7 @@ function createNonNativeDOMExceptionClass () {
117
117
  function DOMException (message, name) {
118
118
  // const err = Error.prototype.constructor.call(this, message); // Any use to this? Won't set this.message
119
119
  this[Symbol.toStringTag] = 'DOMException';
120
- this._code = name in codes
120
+ this._code = Object.hasOwn(codes, name)
121
121
  ? codes[/** @type {Code} */ (name)]
122
122
  : (legacyCodes[/** @type {LegacyCode} */ (name)] || 0);
123
123
  this._name = name || 'Error';
@@ -259,15 +259,17 @@ function createNonNativeDOMException (name, message) {
259
259
  * @returns {void}
260
260
  */
261
261
  function logError (name, message, error) {
262
- if (CFG.DEBUG) {
263
- const msg = error && typeof error === 'object' && error.message
264
- ? error.message
265
- : /** @type {string} */ (error);
266
-
267
- const method = typeof (console.error) === 'function' ? 'error' : 'log';
268
- console[method](name + ': ' + message + '. ' + (msg || ''));
269
- if (console.trace) { console.trace(); }
262
+ if (!CFG.DEBUG) {
263
+ return;
270
264
  }
265
+
266
+ const msg = error && typeof error === 'object' && error.message
267
+ ? error.message
268
+ : /** @type {string} */ (error);
269
+
270
+ const method = typeof (console.error) === 'function' ? 'error' : 'log';
271
+ console[method](name + ': ' + message + '. ' + (msg || ''));
272
+ if (console.trace) { console.trace(); }
271
273
  }
272
274
 
273
275
  /**
@@ -70,7 +70,9 @@ DOMStringList.prototype = {
70
70
  if (!arguments.length) {
71
71
  throw new TypeError('DOMStringList.item must be supplied a value');
72
72
  }
73
- if (key < 0 || key >= this.length || !Number.isInteger(key)) {
73
+ if (key < 0 || key >= this.length ||
74
+ // eslint-disable-next-line unicorn/prefer-number-is-safe-integer -- We want all
75
+ !Number.isInteger(key)) {
74
76
  return null;
75
77
  }
76
78
  return this._items[key];
@@ -101,8 +103,9 @@ DOMStringList.prototype = {
101
103
  * @returns {string[]}
102
104
  */
103
105
  sortList () {
104
- // http://w3c.github.io/IndexedDB/#sorted-list
106
+ // https://w3c.github.io/IndexedDB/#sorted-list
105
107
  // https://tc39.github.io/ecma262/#sec-abstract-relational-comparison
108
+ // eslint-disable-next-line unicorn/require-array-sort-compare -- IndexedDB requires code unit comparison (default behavior)
106
109
  this._items.sort();
107
110
  this.addIndexes();
108
111
  return this._items;
@@ -154,7 +157,7 @@ DOMStringList.prototype = {
154
157
  this._items.splice(...args);
155
158
  this._length = this._items.length;
156
159
  for (const i in this) {
157
- if (i === String(Number.parseInt(i))) {
160
+ if (i === String(Math.trunc(Number(i)))) {
158
161
  delete this[i];
159
162
  }
160
163
  }
@@ -174,6 +177,7 @@ DOMStringList.prototype = {
174
177
  }
175
178
  };
176
179
 
180
+ /* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
177
181
  /**
178
182
  * @typedef {any} AnyValue
179
183
  */
@@ -188,6 +192,7 @@ Object.defineProperty(DOMStringList, Symbol.hasInstance, {
188
192
  });
189
193
  const DOMStringListAlias = DOMStringList;
190
194
  Object.defineProperty(DOMStringList, '__createInstance', {
195
+ /* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
191
196
  /**
192
197
  * @returns {DOMStringListFull}
193
198
  */
package/src/Event.js CHANGED
@@ -21,8 +21,10 @@ function createEvent (type, debug, evInit) {
21
21
  return ev;
22
22
  }
23
23
 
24
+ /* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
24
25
  // We don't add within polyfill repo as might not always be the desired implementation
25
26
  Object.defineProperty(ShimEvent, Symbol.hasInstance, {
27
+ /* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
26
28
  /**
27
29
  * @typedef {any} AnyValue
28
30
  */