@capacitor-community/sqlite 4.2.0 → 4.2.1

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 CHANGED
@@ -27,8 +27,21 @@
27
27
  | Quéau Jean Pierre | [jepiqueau](https://github.com/jepiqueau) | |
28
28
 
29
29
  To install:
30
+
31
+ ```
32
+ npm install --save @capacitor-community/sqlite
33
+ npx cap sync
34
+ ```
35
+
36
+ ```
37
+ yarn install --save @capacitor-community/sqlite
38
+ npx cap sync
39
+ ```
40
+
30
41
  ```
31
- npm install @capacitor-community/sqlite
42
+ pnpm install --save @capacitor-community/sqlite
43
+ pnpm install --save @jeep-sqlite
44
+ pnpm install --save sql.js
32
45
  npx cap sync
33
46
  ```
34
47
 
@@ -3,12 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var require$$0 = require('sqlite3');
6
- var require$$0$1 = require('path');
7
- var require$$1 = require('fs');
8
- var require$$2 = require('node-fetch');
9
- var require$$3 = require('os');
10
- var require$$4 = require('jszip');
11
- var require$$5 = require('electron');
6
+ var require$$0$1 = require('node:fs/promises');
7
+ var require$$1 = require('path');
8
+ var require$$2 = require('fs');
9
+ var require$$3 = require('node-fetch');
10
+ var require$$4 = require('os');
11
+ var require$$5 = require('jszip');
12
+ var require$$6 = require('electron');
12
13
 
13
14
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
15
 
@@ -19,6 +20,7 @@ var require$$2__default = /*#__PURE__*/_interopDefaultLegacy(require$$2);
19
20
  var require$$3__default = /*#__PURE__*/_interopDefaultLegacy(require$$3);
20
21
  var require$$4__default = /*#__PURE__*/_interopDefaultLegacy(require$$4);
21
22
  var require$$5__default = /*#__PURE__*/_interopDefaultLegacy(require$$5);
23
+ var require$$6__default = /*#__PURE__*/_interopDefaultLegacy(require$$6);
22
24
 
23
25
  var src = {};
24
26
 
@@ -2673,6 +2675,7 @@ var utilsFile = {};
2673
2675
 
2674
2676
  Object.defineProperty(utilsFile, "__esModule", { value: true });
2675
2677
  utilsFile.UtilsFile = void 0;
2678
+ const promises_1 = require$$0__default$1["default"];
2676
2679
  class UtilsFile {
2677
2680
  constructor() {
2678
2681
  this.pathDB = 'Databases';
@@ -2685,12 +2688,12 @@ class UtilsFile {
2685
2688
  this.AppName = '';
2686
2689
  this.HomeDir = '';
2687
2690
  this.sep = '/';
2688
- this.Path = require$$0__default$1["default"];
2689
- this.NodeFs = require$$1__default["default"];
2690
- this.NodeFetch = require$$2__default["default"];
2691
- this.Os = require$$3__default["default"];
2692
- this.JSZip = require$$4__default["default"];
2693
- this.Electron = require$$5__default["default"];
2691
+ this.Path = require$$1__default["default"];
2692
+ this.NodeFs = require$$2__default["default"];
2693
+ this.NodeFetch = require$$3__default["default"];
2694
+ this.Os = require$$4__default["default"];
2695
+ this.JSZip = require$$5__default["default"];
2696
+ this.Electron = require$$6__default["default"];
2694
2697
  this.HomeDir = this.Os.homedir();
2695
2698
  const dir = __dirname;
2696
2699
  const idx = dir.indexOf('\\');
@@ -2996,6 +2999,7 @@ class UtilsFile {
2996
2999
  const isPath = this.isPathExists(filePath);
2997
3000
  if (isPath) {
2998
3001
  try {
3002
+ await this.waitForFilePathLock(filePath);
2999
3003
  this.NodeFs.unlinkSync(filePath);
3000
3004
  return Promise.resolve();
3001
3005
  }
@@ -3011,6 +3015,52 @@ class UtilsFile {
3011
3015
  return Promise.reject('DeleteFilePath: delete filePath' + 'failed');
3012
3016
  }
3013
3017
  }
3018
+ async waitForFilePathLock(filePath, timeoutMS = 4000) {
3019
+ let timeIsOver = false;
3020
+ setTimeout(() => {
3021
+ timeIsOver = true;
3022
+ }, timeoutMS);
3023
+ return new Promise((resolve, reject) => {
3024
+ const check = async () => {
3025
+ if (timeIsOver) {
3026
+ reject(new Error(`WaitForFilePathLock: The resource is still locked / busy after ${timeoutMS} milliseconds.`));
3027
+ return;
3028
+ }
3029
+ // check if path exists
3030
+ const isPath = this.isPathExists(filePath);
3031
+ // The file path does not exist. A non existant path cannot be locked.
3032
+ if (!isPath) {
3033
+ resolve();
3034
+ return;
3035
+ }
3036
+ try {
3037
+ const stream = await promises_1.open(filePath, 'r+');
3038
+ // We need to close the stream afterwards, because otherwise, we're locking the file
3039
+ await stream.close();
3040
+ resolve();
3041
+ }
3042
+ catch (err) {
3043
+ if (err.code === 'EBUSY') {
3044
+ // The resource is busy. Retry in 100ms
3045
+ setTimeout(() => {
3046
+ check();
3047
+ }, 100);
3048
+ return;
3049
+ }
3050
+ else if (err.code === 'ENOENT') {
3051
+ // The file does not exist (anymore). So it cannot be locked.
3052
+ resolve();
3053
+ return;
3054
+ }
3055
+ else {
3056
+ // Something else went wrong.
3057
+ reject(new Error(`WaitForFilePathLock: Error while checking the file: ${err}`));
3058
+ }
3059
+ }
3060
+ };
3061
+ check();
3062
+ });
3063
+ }
3014
3064
  /**
3015
3065
  * RenameFileName
3016
3066
  * @param fileName
@@ -3350,11 +3400,15 @@ class Database {
3350
3400
  */
3351
3401
  async close() {
3352
3402
  this.ensureDatabaseIsOpen();
3353
- this.database.close((err) => {
3354
- if (err) {
3355
- throw new Error('Close failed: ${this.dbName} ${err}');
3356
- }
3357
- this._isDbOpen = false;
3403
+ return new Promise((resolve, reject) => {
3404
+ this.database.close((err) => {
3405
+ if (err) {
3406
+ reject(new Error(`Close failed: ${this.dbName} ${err}`));
3407
+ return;
3408
+ }
3409
+ this._isDbOpen = false;
3410
+ resolve();
3411
+ });
3358
3412
  });
3359
3413
  }
3360
3414
  /**