Skip to content

Commit

Permalink
Switch from platforms to backends.
Browse files Browse the repository at this point in the history
Now we are able to provide multiple nodejs backends.
  • Loading branch information
paberr committed Mar 23, 2018
1 parent e02aa89 commit 02caa05
Show file tree
Hide file tree
Showing 28 changed files with 65 additions and 62 deletions.
2 changes: 1 addition & 1 deletion .esdoc.json
@@ -1,7 +1,7 @@
{
"source": "./src",
"includes": [
"^main/platform/browser/JungleDB.js$",
"^main/backend/indexeddb/JungleDB.js$",
"^main/generic/"
],
"destination": "./dist/doc",
Expand Down
8 changes: 5 additions & 3 deletions .gitignore
@@ -1,15 +1,17 @@
.DS_Store
/node_modules
/SpecRunner.html
/src/main/platform/nodejs/node_modules
/src/main/platform/nodejs/database/tables
/src/main/platform/nodejs/database/keys
/src/main/backend/leveldb/node_modules
/src/main/backend/leveldb/database/tables
/src/main/backend/leveldb/database/keys
/clients/nodejs/node_modules
/clients/nodejs/database
/clients/nodejs/localhost.*
/dist/nimiq*
/dist/web*
/dist/node*
/dist/leveldb*
/dist/indexeddb*
/dist/doc/
.idea
*.iml
Expand Down
92 changes: 46 additions & 46 deletions gulpfile.js
Expand Up @@ -13,22 +13,22 @@ const util = require('gulp-util');
const istanbul = require('istanbul-api');

const sources = {
platform: {
browser: [
'./src/main/platform/browser/Class.js',
'./src/main/platform/browser/utils/IDBTools.js',
'./src/main/platform/browser/utils/LogNative.js',
'./src/main/platform/browser/IDBBackend.js',
'./src/main/platform/browser/JungleDB.js',
'./src/main/platform/browser/PersistentIndex.js'
backend: {
indexeddb: [
'./src/main/backend/indexeddb/Class.js',
'./src/main/backend/indexeddb/utils/IDBTools.js',
'./src/main/backend/indexeddb/utils/LogNative.js',
'./src/main/backend/indexeddb/IDBBackend.js',
'./src/main/backend/indexeddb/JungleDB.js',
'./src/main/backend/indexeddb/PersistentIndex.js'
],
node: [
'./src/main/platform/nodejs/utils/LevelDBTools.js',
'./src/main/platform/nodejs/utils/LogNative.js',
'./src/main/platform/nodejs/utils/GenericValueEncoding.js',
'./src/main/platform/nodejs/LevelDBBackend.js',
'./src/main/platform/nodejs/JungleDB.js',
'./src/main/platform/nodejs/PersistentIndex.js'
leveldb: [
'./src/main/backend/leveldb/utils/LevelDBTools.js',
'./src/main/backend/leveldb/utils/LogNative.js',
'./src/main/backend/leveldb/utils/GenericValueEncoding.js',
'./src/main/backend/leveldb/LevelDBBackend.js',
'./src/main/backend/leveldb/JungleDB.js',
'./src/main/backend/leveldb/PersistentIndex.js'
]
},
generic: [
Expand Down Expand Up @@ -61,10 +61,10 @@ const sources = {
'./src/test/generic/DummyBackend.js',
'./src/test/generic/**/*.spec.js'
],
browser: [
indexeddb: [
'./src/test/generic/TestCodec.js',
'./src/test/platform/browser/BinaryCodec.js',
'./src/test/platform/browser/**/*.spec.js'
'./src/test/backend/indexeddb/BinaryCodec.js',
'./src/test/backend/indexeddb/**/*.spec.js'
]
},
all: [
Expand Down Expand Up @@ -126,14 +126,14 @@ gulp.task('build-istanbul', function () {
});
});

const BROWSER_SOURCES = [
'./src/loader/browser/prefix.js.template',
...sources.platform.browser,
const INDEXEDDB_SOURCES = [
'./src/loader/indexeddb/prefix.js.template',
...sources.backend.indexeddb,
...sources.generic,
'./src/loader/browser/suffix.js.template'
'./src/loader/indexeddb/suffix.js.template'
];

gulp.task('build-web-babel', function () {
gulp.task('build-indexeddb-babel', function () {
return merge(
browserify([], {
require: [
Expand All @@ -157,64 +157,64 @@ gulp.task('build-web-babel', function () {
.pipe(source('babel.js'))
.pipe(buffer())
.pipe(uglify()),
gulp.src(BROWSER_SOURCES, { base: 'src' })
gulp.src(INDEXEDDB_SOURCES, { base: 'src' })
.pipe(sourcemaps.init())
.pipe(concat('web.js'))
.pipe(concat('indexeddb.js'))
.pipe(babel(babel_config)))
.pipe(sourcemaps.init())
.pipe(concat('web-babel.js'))
.pipe(concat('indexeddb-babel.js'))
.pipe(uglify(uglify_babel))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist'));
});

gulp.task('build-web', function () {
return gulp.src(BROWSER_SOURCES, { base: 'src' })
gulp.task('build-indexeddb', function () {
return gulp.src(INDEXEDDB_SOURCES, { base: 'src' })
.pipe(sourcemaps.init())
.pipe(concat('web.js'))
.pipe(concat('indexeddb.js'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist'))
.pipe(connect.reload());
});

gulp.task('build-web-istanbul', ['build-istanbul'], function () {
return gulp.src(BROWSER_SOURCES.map(f => f.indexOf('./src/main') === 0 ? `./.istanbul/${f}` : f), { base: 'src' })
gulp.task('build-indexeddb-istanbul', ['build-istanbul'], function () {
return gulp.src(INDEXEDDB_SOURCES.map(f => f.indexOf('./src/main') === 0 ? `./.istanbul/${f}` : f), { base: 'src' })
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(concat('web-istanbul.js'))
.pipe(concat('indexeddb-istanbul.js'))
//.pipe(uglify(uglify_config))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist'))
.pipe(connect.reload());
});

const NODE_SOURCES = [
'./src/loader/nodejs/index.prefix.js',
const LEVELDB_SOURCES = [
'./src/loader/leveldb/index.prefix.js',
...sources.generic,
...sources.platform.node,
'./src/loader/nodejs/index.suffix.js'
...sources.backend.leveldb,
'./src/loader/leveldb/index.suffix.js'
];

gulp.task('build-node', function () {
return gulp.src(NODE_SOURCES, { base: 'src' })
gulp.task('build-leveldb', function () {
return gulp.src(LEVELDB_SOURCES, { base: 'src' })
.pipe(sourcemaps.init())
.pipe(concat('node.js'))
.pipe(concat('leveldb.js'))
.pipe(uglify(uglify_config))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist'));
});

gulp.task('build-node-istanbul', ['build-istanbul'], function () {
return gulp.src(NODE_SOURCES.map(f => `./.istanbul/${f}`))
gulp.task('build-leveldb-istanbul', ['build-istanbul'], function () {
return gulp.src(LEVELDB_SOURCES.map(f => `./.istanbul/${f}`))
.pipe(sourcemaps.init())
.pipe(concat('node-istanbul.js'))
.pipe(concat('leveldb-istanbul.js'))
.pipe(uglify(uglify_config))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist'));
});

gulp.task('test', ['watch'], function () {
gulp.run(jasmine({
files: ['./src/test/platform/browser/spec.js', 'dist/web.js'].concat(sources.test.generic).concat(sources.test.browser)
files: ['./src/test/backend/indexeddb/spec.js', 'dist/indexeddb.js'].concat(sources.test.generic).concat(sources.test.indexeddb)
}));
});

Expand All @@ -226,10 +226,10 @@ gulp.task('eslint', function () {
.pipe(eslint.failAfterError());
});

gulp.task('watch', ['build-web'], function () {
return gulp.watch(sources.all, ['build-web']);
gulp.task('watch', ['build-indexeddb'], function () {
return gulp.watch(sources.all, ['build-indexeddb']);
});

gulp.task('build', ['build-web', 'build-web-babel', 'build-web-istanbul', 'build-node', 'build-node-istanbul']);
gulp.task('build', ['build-indexeddb', 'build-indexeddb-babel', 'build-indexeddb-istanbul', 'build-leveldb', 'build-leveldb-istanbul']);

gulp.task('default', ['build']);
12 changes: 6 additions & 6 deletions karma.conf.js
Expand Up @@ -15,13 +15,13 @@ module.exports = function (config) {

// list of files / patterns to load in the browser
files: [
'src/test/platform/browser/spec.js',
'dist/web.js',
'src/test/backend/indexeddb/spec.js',
'dist/indexeddb.js',
'src/test/**/DummyBackend.js',
'src/test/generic/TestCodec.js',
'src/test/platform/browser/BinaryCodec.js',
'src/test/backend/indexeddb/BinaryCodec.js',
'src/test/generic/**/*.spec.js',
'src/test/platform/browser/**/*.spec.js'
'src/test/backend/indexeddb/**/*.spec.js'
],


Expand Down Expand Up @@ -115,10 +115,10 @@ module.exports = function (config) {
for (const version of [57, 58, 59, 60, 61, 62]) sauceLabsConfig('Windows 10', 'chrome', `${version}.0`, 'Chrome', version);

if (process.env.USE_BABEL) {
configuration.files[1] = 'dist/web-babel.js';
configuration.files[1] = 'dist/indexeddb-babel.js';
}
if (process.env.USE_ISTANBUL) {
configuration.files[1] = 'dist/web-istanbul.js';
configuration.files[1] = 'dist/indexeddb-istanbul.js';
configuration.reporters.push('coverage');
configuration.coverageReporter = {
reporters: [
Expand Down
6 changes: 3 additions & 3 deletions package.json
@@ -1,15 +1,15 @@
{
"name": "jungle-db",
"version": "0.4.3",
"main": "dist/node.js",
"main": "dist/leveldb.js",
"private": true,
"scripts": {
"prepare": "gulp build",
"build": "gulp build",
"esdoc": "esdoc",
"test": "jasmine && gulp test",
"test-node": "jasmine",
"test-browser": "gulp test",
"test-leveldb": "jasmine",
"test-indexeddb": "gulp test",
"lint": "gulp eslint",
"postinstall": "gulp build"
},
Expand Down
4 changes: 2 additions & 2 deletions spec/support/jasmine.json
Expand Up @@ -2,10 +2,10 @@
"spec_dir": "src/test",
"spec_files": [
"generic/**/*.[sS]pec.js",
"platform/nodejs/**/*.[sS]pec.js"
"backend/leveldb/**/*.[sS]pec.js"
],
"helpers": [
"platform/nodejs/spec.js"
"backend/leveldb/spec.js"
],
"stopSpecOnExpectationFailure": false,
"random": false
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,4 +1,5 @@
const JDB = require('../../../../dist/node.js');
const JDB = require('../../../../dist/leveldb.js');

for(let i in JDB) global[i] = JDB[i];
global.JDB = JDB;

Expand Down

0 comments on commit 02caa05

Please sign in to comment.