Introduce ESLint and Prettier

This commit is contained in:
Zaid Abdulla committed 2018-08-24 05:31:22 -07:00
1 parent 9c943d0bbf
commit e494bdca8a
26 files changed
+1585 -1594

No files matched your search

+65 -96
View File
@@ -1,5 +1,5 @@
/**
* Copyright 2013-2017 Zaid Abdulla
* Copyright 2013-2018 Zaid Abdulla
*
* This file is part of GenieACS.
*
@@ -20,18 +20,21 @@
const NONEXISTENT = new Object();
function compareEquality(a, b) {
var t = typeof a;
if (t === 'number' || (a == null) || t === 'boolean' || t === 'string' || t === 'symbol')
if (
t === "number" ||
a == null ||
t === "boolean" ||
t === "string" ||
t === "symbol"
)
return a === b;
return JSON.stringify(a) === JSON.stringify(b);
}
class VersionedMap {
constructor() {
this._sizeDiff = [0];
this._revision = 0;
@@ -39,71 +42,59 @@ class VersionedMap {
this.dirty = 0;
}
get size() {
return this.map.size + this._sizeDiff[this.revision];
}
get revision() {
return this._revision;
}
set revision(rev) {
for (let i = this._sizeDiff.length; i <= rev; ++ i)
for (let i = this._sizeDiff.length; i <= rev; ++i)
this._sizeDiff[i] = this._sizeDiff[i - 1];
this._revision = rev;
}
get(key, rev) {
if (rev == null)
rev = this._revision
if (rev == null) rev = this._revision;
var v = this.map.get(key);
if (!v)
return;
if (!v) return;
for (let i = Math.min(v.length - 1, rev); i >= 0; -- i)
if (i in v)
if (v[i] === NONEXISTENT)
return undefined;
else
return v[i];
for (let i = Math.min(v.length - 1, rev); i >= 0; --i) {
if (i in v) {
if (v[i] === NONEXISTENT) return undefined;
else return v[i];
}
}
}
has(key, rev) {
if (rev == null)
rev = this._revision
if (rev == null) rev = this._revision;
var v = this.map.get(key);
if (v == null)
return false;
if (v == null) return false;
for (let i = Math.min(v.length - 1, rev); i >= 0; -- i)
if (i in v)
if (v[i] === NONEXISTENT)
return false;
else
return true;
for (let i = Math.min(v.length - 1, rev); i >= 0; --i) {
if (i in v) {
if (v[i] === NONEXISTENT) return false;
else return true;
}
}
return false;
}
set(key, value, rev) {
if (rev == null)
rev = this._revision;
if (rev == null) rev = this._revision;
var v = this.map.get(key);
if (!v) {
this.dirty |= 1 << rev;
for (let i = 0; i < rev; ++ i)
this._sizeDiff[i] -= 1;
for (let i = 0; i < rev; ++i) this._sizeDiff[i] -= 1;
v = [];
v[rev] = value;
@@ -114,71 +105,59 @@ class VersionedMap {
var old = v[Math.min(rev, v.length - 1)];
if (rev < v.length - 1) {
if (compareEquality(value, old))
return
else
throw new Error('Cannot modify old revisions');
if (compareEquality(value, old)) return;
else throw new Error("Cannot modify old revisions");
}
this.dirty |= 1 << rev;
if (old === NONEXISTENT)
++ this._sizeDiff[rev];
if (old === NONEXISTENT) ++this._sizeDiff[rev];
v[rev] = value;
}
delete(key, rev) {
if (rev == null)
rev = this._revision;
if (rev == null) rev = this._revision;
var v = this.map.get(key);
if (!v)
return false;
if (!v) return false;
if (rev < v.length - 1)
throw new Error('Cannot modify old revisions');
if (rev < v.length - 1) throw new Error("Cannot modify old revisions");
var old = v[v.length - 1];
if (old === NONEXISTENT)
return false;
if (old === NONEXISTENT) return false;
this.dirty |= 1 << rev;
-- this._sizeDiff[rev];
--this._sizeDiff[rev];
v[rev] = NONEXISTENT;
return true;
}
getRevisions(key) {
var v = this.map.get(key);
if (!v)
return null;
if (!v) return null;
var res = {};
for (let i in v)
if (v[i] === NONEXISTENT)
res.delete |= 1 << i;
else
res[i] = v[i];
for (let i in v) {
if (v[i] === NONEXISTENT) res.delete |= 1 << i;
else res[i] = v[i];
}
return res;
}
setRevisions(key, revisions) {
var del = 0;
var rev = [];
var minKey = 999;
for (let k in revisions) {
if (k === 'delete')
if (k === "delete") {
del = revisions[k];
else {
} else {
let r = parseInt(k);
minKey = Math.min(minKey, r);
for (let i = this._sizeDiff.length; i <= r; ++ i)
for (let i = this._sizeDiff.length; i <= r; ++i)
this._sizeDiff[i] = this._sizeDiff[i - 1];
this.dirty |= 1 << r;
@@ -186,63 +165,57 @@ class VersionedMap {
}
}
for (let i = 0; i < minKey; ++ i)
-- this._sizeDiff[i];
for (let i = 0; i < minKey; ++i) --this._sizeDiff[i];
this.dirty |= del;
for (let i = 0; del > 0; del >>= 1, ++ i)
if (del & 1)
rev[i] = NONEXISTENT;
for (let i = 0; del > 0; del >>= 1, ++i) if (del & 1) rev[i] = NONEXISTENT;
this.map.set(key, rev);
}
getDiff(key) {
var revisions = this.map.get(key);
if (!revisions)
return [];
if (!revisions) return [];
var current = revisions[revisions.length - 1];
if (current === NONEXISTENT) {
if (0 in revisions)
return [key, revisions[0]];
else
return [key];
} else if (0 in revisions)
if (0 in revisions) return [key, revisions[0]];
else return [key];
} else if (0 in revisions) {
return [key, revisions[0], current];
else
} else {
// TODO don't use sparse arrays?
// eslint-disable-next-line no-sparse-arrays
return [key, , current];
}
}
*diff() {
for (let pair of this.map) {
let current = pair[1][pair[1].length - 1];
if (current === NONEXISTENT) {
if (0 in pair[1])
yield [pair[0], pair[1][0]];
else
yield [pair[0]];
} else if (0 in pair[1])
if (0 in pair[1]) yield [pair[0], pair[1][0]];
else yield [pair[0]];
} else if (0 in pair[1]) {
yield [pair[0], pair[1][0], current];
else
} else {
// TODO don't use sparse arrays?
// eslint-disable-next-line no-sparse-arrays
yield [pair[0], , current];
}
}
}
collapse(revision) {
if (this._sizeDiff.length <= revision)
return;
if (this._sizeDiff.length <= revision) return;
this._sizeDiff[revision] = this._sizeDiff[this._sizeDiff.length - 1];
this._sizeDiff.splice(revision + 1, this._sizeDiff.length);
let d = this.dirty >> revision;
this.dirty = this.dirty ^ (d << revision);
this.dirty |= (+!!d) << revision;
this.dirty |= +!!d << revision;
for (let pair of this.map) {
let k = pair[0];
@@ -250,18 +223,14 @@ class VersionedMap {
let last = v[v.length - 1];
if (last === NONEXISTENT) {
v.splice(revision, v.length);
if (v.some(function(val) { return true; }))
v[revision] = NONEXISTENT;
else
this.map.delete(k);
}
else {
if (v.some(() => true)) v[revision] = NONEXISTENT;
else this.map.delete(k);
} else {
v[revision] = last;
v.splice(revision + 1, v.length);
}
}
}
}
module.exports = VersionedMap;