Skip to content

Commit 4a65921

Browse files
author
David de Regt
committed
Forced NodeSqlite3MemoryDbProvider to take a copy of the sqlite3 module to use, and same thing for the ReactNativeSqliteProvider. This fixes browserify issues with including all the modules for a project that doesn't need those providers' external module implementations.
1 parent d7eefd4 commit 4a65921

8 files changed

Lines changed: 41 additions & 18 deletions

dist/NodeSqlite3MemoryDbProvider.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import SyncTasks = require('synctasks');
1010
import NoSqlProvider = require('./NoSqlProvider');
1111
import SqlProviderBase = require('./SqlProviderBase');
1212
export declare class NodeSqlite3MemoryDbProvider extends SqlProviderBase.SqlProviderBase {
13+
private _sqlite3;
1314
private _db;
15+
constructor(sqlite3: any);
1416
open(dbName: string, schema: NoSqlProvider.DbSchema, wipeIfExists: boolean, verbose: boolean): SyncTasks.Promise<void>;
1517
openTransaction(storeNames: string | string[], writeNeeded: boolean): SyncTasks.Promise<NoSqlProvider.DbTransaction>;
1618
close(): SyncTasks.Promise<void>;

dist/NodeSqlite3MemoryDbProvider.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,17 @@ var SyncTasks = require('synctasks');
1515
var SqlProviderBase = require('./SqlProviderBase');
1616
var NodeSqlite3MemoryDbProvider = (function (_super) {
1717
__extends(NodeSqlite3MemoryDbProvider, _super);
18-
function NodeSqlite3MemoryDbProvider() {
19-
_super.apply(this, arguments);
18+
function NodeSqlite3MemoryDbProvider(sqlite3) {
19+
_super.call(this);
20+
this._sqlite3 = sqlite3;
2021
}
2122
NodeSqlite3MemoryDbProvider.prototype.open = function (dbName, schema, wipeIfExists, verbose) {
2223
_super.prototype.open.call(this, dbName, schema, wipeIfExists, verbose);
23-
var sqlite3 = require('sqlite3');
24-
sqlite3.verbose();
25-
this._db = new sqlite3.Database(':memory:');
24+
if (!this._sqlite3) {
25+
return SyncTasks.Rejected('No support for react native sqlite in this environment');
26+
}
27+
this._sqlite3.verbose();
28+
this._db = new this._sqlite3.Database(':memory:');
2629
return this._ourVersionChecker(wipeIfExists);
2730
};
2831
NodeSqlite3MemoryDbProvider.prototype.openTransaction = function (storeNames, writeNeeded) {

dist/ReactNativeSqliteProvider.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import SyncTasks = require('synctasks');
99
import NoSqlProvider = require('./NoSqlProvider');
1010
import SqlProviderBase = require('./SqlProviderBase');
1111
export declare class ReactNativeSqliteProvider extends SqlProviderBase.SqlProviderBase {
12+
private _reactNativeSqlite;
1213
private _db;
14+
constructor(reactNativeSqlite: any);
1315
open(dbName: string, schema: NoSqlProvider.DbSchema, wipeIfExists: boolean, verbose: boolean): SyncTasks.Promise<void>;
1416
close(): SyncTasks.Promise<void>;
1517
openTransaction(storeNames: string | string[], writeNeeded: boolean): SyncTasks.Promise<NoSqlProvider.DbTransaction>;

dist/ReactNativeSqliteProvider.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ var SyncTasks = require('synctasks');
1414
var SqlProviderBase = require('./SqlProviderBase');
1515
var ReactNativeSqliteProvider = (function (_super) {
1616
__extends(ReactNativeSqliteProvider, _super);
17-
function ReactNativeSqliteProvider() {
18-
_super.apply(this, arguments);
17+
function ReactNativeSqliteProvider(reactNativeSqlite) {
18+
_super.call(this);
19+
this._reactNativeSqlite = reactNativeSqlite;
1920
}
2021
ReactNativeSqliteProvider.prototype.open = function (dbName, schema, wipeIfExists, verbose) {
2122
var _this = this;
2223
_super.prototype.open.call(this, dbName, schema, wipeIfExists, verbose);
23-
var sqlite = require('react-native-sqlite');
24-
if (!sqlite || !sqlite.open) {
24+
if (!this._reactNativeSqlite || !this._reactNativeSqlite.open) {
2525
return SyncTasks.Rejected('No support for react native sqlite in this environment');
2626
}
2727
var deferred = SyncTasks.Defer();
28-
sqlite.open(dbName + '.sqlite', function (error, database) {
28+
this._reactNativeSqlite.open(dbName + '.sqlite', function (error, database) {
2929
if (error) {
3030
deferred.reject('Error opening database: ' + error);
3131
return;

dist/tests/NoSqlProviderTests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ var NoSqlProviderUtils = require('../NoSqlProviderUtils');
88
function openProvider(providerName, schema) {
99
var provider = null;
1010
if (providerName === 'sqlite3test') {
11-
provider = new NoSqlProvider.NodeSqlite3MemoryDbProvider();
11+
provider = new NoSqlProvider.NodeSqlite3MemoryDbProvider(sqlite3);
1212
}
1313
else if (providerName === 'indexeddbtest') {
1414
var engine = new sqlite3.Database(':memory:');

src/NodeSqlite3MemoryDbProvider.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,25 @@ import NoSqlProvider = require('./NoSqlProvider');
1313
import SqlProviderBase = require('./SqlProviderBase');
1414

1515
export class NodeSqlite3MemoryDbProvider extends SqlProviderBase.SqlProviderBase {
16+
private _sqlite3: any;
1617
private _db: any;
18+
19+
constructor(sqlite3: any) {
20+
super();
21+
22+
this._sqlite3 = sqlite3;
23+
}
24+
1725
open(dbName: string, schema: NoSqlProvider.DbSchema, wipeIfExists: boolean, verbose: boolean): SyncTasks.Promise<void> {
1826
super.open(dbName, schema, wipeIfExists, verbose);
1927

20-
var sqlite3 = require('sqlite3');
28+
if (!this._sqlite3) {
29+
return SyncTasks.Rejected<void>('No support for react native sqlite in this environment');
30+
}
2131

22-
sqlite3.verbose();
32+
this._sqlite3.verbose();
2333

24-
this._db = new sqlite3.Database(':memory:');
34+
this._db = new this._sqlite3.Database(':memory:');
2535

2636
return this._ourVersionChecker(wipeIfExists);
2737
}

src/ReactNativeSqliteProvider.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,25 @@ interface ReactNativeSqliteDatabase {
1818
}
1919

2020
export class ReactNativeSqliteProvider extends SqlProviderBase.SqlProviderBase {
21+
private _reactNativeSqlite: any;
2122
private _db: ReactNativeSqliteDatabase;
2223

24+
constructor(reactNativeSqlite: any) {
25+
super();
26+
27+
this._reactNativeSqlite = reactNativeSqlite;
28+
}
29+
2330
open(dbName: string, schema: NoSqlProvider.DbSchema, wipeIfExists: boolean, verbose: boolean): SyncTasks.Promise<void> {
2431
super.open(dbName, schema, wipeIfExists, verbose);
2532

26-
var sqlite = require('react-native-sqlite');
27-
if (!sqlite || !sqlite.open) {
33+
if (!this._reactNativeSqlite || !this._reactNativeSqlite.open) {
2834
return SyncTasks.Rejected<void>('No support for react native sqlite in this environment');
2935
}
3036

3137
let deferred = SyncTasks.Defer<void>();
3238

33-
sqlite.open(dbName + '.sqlite', (error, database) => {
39+
this._reactNativeSqlite.open(dbName + '.sqlite', (error, database) => {
3440
if (error) {
3541
deferred.reject('Error opening database: ' + error);
3642
return;

src/tests/NoSqlProviderTests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import InMemoryProvider = require('../InMemoryProvider');
1313
function openProvider(providerName: string, schema: NoSqlProvider.DbSchema) {
1414
let provider: NoSqlProvider.DbProvider = null;
1515
if (providerName === 'sqlite3test') {
16-
provider = new NoSqlProvider.NodeSqlite3MemoryDbProvider();
16+
provider = new NoSqlProvider.NodeSqlite3MemoryDbProvider(sqlite3);
1717
} else if (providerName === 'indexeddbtest') {
1818
const engine = new sqlite3.Database(':memory:');
1919
const scope = indexeddbjs.makeScope('sqlite3', engine);

0 commit comments

Comments
 (0)