Skip to content

Commit

Permalink
Linting (including Karma file indent);
Browse files Browse the repository at this point in the history
    Babelify/Uglify/ESLint and add source maps for test worker;
    Avoid polyfill double-loading;
    Put test worker in test directory;
    Grunt: Reorder tasks to be more in normal order of execution;
    Load polyfill in worker for sake of PhantomJS tests;
    Overcome or workaround Karma/PhantomJS issues with workers,
    Documenting limitations;
    Remove ecmaFeatures:modules (not needed);
    Allow override of Saucekey env var.
    Rename web workers file to enable to execute first and avoid PhantomJS interaction problem with server-handlers.js;
    Promise rejection for bad schema callback or IDBKeyRange call;
    Add test for version change events in another window with resumption after unblocking
  • Loading branch information
brettz9 committed Mar 24, 2016
1 parent e192158 commit bb2f2cd
Show file tree
Hide file tree
Showing 32 changed files with 433 additions and 248 deletions.
3 changes: 2 additions & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{
"presets": ["es2015"]
"presets": ["es2015"],
"plugins": ["transform-es2015-modules-commonjs"]
}
88 changes: 56 additions & 32 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
module.exports = function(grunt) {
module.exports = function (grunt) {
'use strict';
// Project configuration.
var saucekey = process.env.saucekey;

if (!saucekey) {
console.warn('Unable to load saucelabs key');
console.warn('Unable to load Saucelabs key');
}

grunt.initConfig({
Expand Down Expand Up @@ -51,83 +51,107 @@ module.exports = function(grunt) {
platform: 'Windows 2008'
}]
},
onTestComplete: function(result, callback) {
onTestComplete: function (result, callback) {
console.dir(result);
}
}
},

'babel': {
karma: {
options: {
configFile: 'karma.conf.js'
},
ci: {
singleRun: true,
browsers: ['PhantomJS']
},
dev: {
singleRun: false,
browsers: ['PhantomJS']
},
'dev-single': {
singleRun: true,
browsers: ['PhantomJS']
}
},

eslint: {
target: ['src/db.js', 'src/test-worker.js']
},

babel: {
options: {
sourceMap: true
},
dist: {
files: {
'dist/db.js': 'src/db.js'
'dist/db.js': 'src/db.js',
'tests/test-worker.js': 'src/test-worker.js'
}
}
},

'eslint': {
target: ['src/db.js']
browserify: {
dist: {
files: {
'dist/db.js': 'dist/db.js'
},
options: {
browserifyOptions: {
standalone: 'db'
}
}
}
},

uglify: {
options: {
sourceMap: true,
sourceMapIncludeSources: true,
sourceMapIn: 'dist/db.js.map' // input sourcemap from a previous compilation
sourceMapIncludeSources: true
},
dist: {
dbjs: {
options: {
sourceMapIn: 'dist/db.js.map' // input sourcemap from a previous compilation
},
files: {
'dist/db.min.js': ['dist/db.js']
}
}
},

karma: {
options: {
configFile: 'karma.conf.js'
},
ci: {
singleRun: true,
browsers: ['PhantomJS']
},
dev: {
singleRun: false,
browsers: ['PhantomJS']
},
'dev-single': {
singleRun: true,
browsers: ['PhantomJS']
testworker: {
options: {
sourceMapIn: 'tests/test-worker.js.map' // input sourcemap from a previous compilation
},
files: {
'tests/test-worker.js': ['tests/test-worker.js']
}
}
}
});

// load all grunt tasks
require('matchdep').filterDev(['grunt-*', '!grunt-cli']).forEach(grunt.loadNpmTasks);

grunt.registerTask('forever', function() {
grunt.registerTask('forever', function () {
this.async();
});

var devJobs = ['eslint', 'babel', 'uglify', 'clean', 'jade'];
var devJobs = ['eslint', 'babel', 'browserify', 'uglify', 'clean', 'jade'];
var testJobs = devJobs.concat('connect');
if (saucekey && !process.env.TRAVIS_PULL_REQUEST) {
console.info('adding saucelabs integration');
console.info('adding Saucelabs integration');
testJobs.push('saucelabs-mocha');
}

if (process.env.TRAVIS_JOB_ID) {
testJobs = testJobs.concat('karma:ci');
testJobs.push('karma:ci');
} else {
testJobs.push('karma:dev-single');
}

grunt.registerTask('dev', devJobs);
grunt.registerTask('test', testJobs);
grunt.registerTask('default', 'test');
grunt.registerTask('test:local', function() {
grunt.registerTask('test:local', function () {
grunt.task.run(devJobs);
grunt.task.run('connect:server:keepalive');
});
Expand Down
45 changes: 32 additions & 13 deletions dist/db.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.db = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';

var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
Expand Down Expand Up @@ -357,7 +358,11 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr

var runQuery = function runQuery(type, args, cursorType, direction, limitRange, filters, mapper) {
return new Promise(function (resolve, reject) {
var keyRange = type ? IDBKeyRange[type].apply(IDBKeyRange, _toConsumableArray(args)) : null;
try {
var keyRange = type ? IDBKeyRange[type].apply(IDBKeyRange, _toConsumableArray(args)) : null;
} catch (e) {
reject(e);
}
var results = [];
var indexArgs = [keyRange];
var counter = 0;
Expand Down Expand Up @@ -593,10 +598,6 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
};

var createSchema = function createSchema(e, schema, db) {
if (typeof schema === 'function') {
schema = schema();
}

if (!schema || schema.length === 0) {
return;
}
Expand Down Expand Up @@ -630,7 +631,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
}
};

var _open = function _open(e, server, noServerMethods, version, schema) {
var _open = function _open(e, server, noServerMethods, version) {
var db = e.target.result;
dbCache[server][version] = db;

Expand All @@ -643,6 +644,9 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
open: function open(options) {
var server = options.server;
var version = options.version || 1;
var schema = options.schema;
var noServerMethods = options.noServerMethods;

if (!dbCache[server]) {
dbCache[server] = {};
}
Expand All @@ -652,16 +656,26 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
target: {
result: dbCache[server][version]
}
}, server, options.noServerMethods, version, options.schema).then(resolve, reject);
}, server, noServerMethods, version).then(resolve, reject);
} else {
(function () {
var _ret = function () {
if (typeof schema === 'function') {
try {
schema = schema();
} catch (e) {
reject(e);
return {
v: void 0
};
}
}
var request = indexedDB.open(server, version);

request.onsuccess = function (e) {
return _open(e, server, options.noServerMethods, version, options.schema).then(resolve, reject);
return _open(e, server, noServerMethods, version).then(resolve, reject);
};
request.onupgradeneeded = function (e) {
return createSchema(e, options.schema, e.target.result);
return createSchema(e, schema, e.target.result);
};
request.onerror = function (e) {
return reject(e);
Expand All @@ -674,7 +688,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
// the user unblocks by closing the blocking
// connection
request.onsuccess = function (ev) {
_open(ev, server, options.noServerMethods, version, options.schema).then(res, rej);
_open(ev, server, noServerMethods, version).then(res, rej);
};
request.onerror = function (e) {
return rej(e);
Expand All @@ -683,7 +697,9 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
e.resume = resume;
reject(e);
};
})();
}();

if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
}
});
},
Expand Down Expand Up @@ -742,4 +758,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
local.db = db;
}
})(self);
//# sourceMappingURL=db.js.map


},{}]},{},[1])(1)
});
2 changes: 1 addition & 1 deletion dist/db.js.map

Large diffs are not rendered by default.

Loading

0 comments on commit bb2f2cd

Please sign in to comment.