Convert backend code to ES modules

Bundling code now with Rollup for its flat bundling and tree shaking
support. Front end code still goes through Webpack for browser support.
This commit is contained in:
Zaid Abdulla committed 2019-02-04 23:47:54 -08:00
1 parent 824639976f
commit 1e41c72d60
62 files changed
+718 -898

No files matched your search

+25 -43
View File
@@ -1,10 +1,10 @@
"use strict";
const mongodb = require("mongodb");
const expressionParser = require("../common/expression-parser");
const expression = require("../common/expression");
import { ObjectID } from "mongodb";
import { map, parse, stringify } from "../common/expression-parser";
import { likePatternToRegExp } from "../common/expression";
function processDeviceFilter(filter) {
return expressionParser.map(filter, exp => {
export function processDeviceFilter(filter) {
return map(filter, exp => {
if (!Array.isArray(exp)) return exp;
if (exp[0] === "PARAM") {
@@ -32,7 +32,7 @@ function processDeviceFilter(filter) {
} else if (
["=", "<>", ">", ">=", "<", "<=", "LIKE", "NOT LIKE"].includes(exp[0])
) {
let e = expressionParser.map(exp, ee => {
let e = map(exp, ee => {
if (
Array.isArray(ee) &&
ee[0] === "PARAM" &&
@@ -54,13 +54,12 @@ function processDeviceFilter(filter) {
});
}
function processTasksFilter(filter) {
return expressionParser.map(filter, exp => {
export function processTasksFilter(filter) {
return map(filter, exp => {
if (!Array.isArray(exp)) return exp;
if (["=", "<>", ">", ">=", "<", "<="].includes(exp[0])) {
const e = exp.slice();
if (e[1][0] === "PARAM" && e[1][1] === "_id")
e[2] = new mongodb.ObjectID(e[2]);
if (e[1][0] === "PARAM" && e[1][1] === "_id") e[2] = new ObjectID(e[2]);
else if (e[1][0] === "PARAM" && e[1][1] === "timestamp")
e[2] = new Date(e[2]);
else if (e[1][0] === "PARAM" && e[1][1] === "expiry")
@@ -71,8 +70,8 @@ function processTasksFilter(filter) {
});
}
function processFaultsFilter(filter) {
return expressionParser.map(filter, exp => {
export function processFaultsFilter(filter) {
return map(filter, exp => {
if (!Array.isArray(exp)) return exp;
if (["=", "<>", ">", ">=", "<", "<="].includes(exp[0])) {
const e = exp.slice();
@@ -85,7 +84,7 @@ function processFaultsFilter(filter) {
});
}
function filterToMongoQuery(filter, negate = false, res = {}) {
export function filterToMongoQuery(filter, negate = false, res = {}) {
const op = filter[0];
if ((!negate && op === "AND") || (negate && op === "OR")) {
@@ -160,7 +159,7 @@ function filterToMongoQuery(filter, negate = false, res = {}) {
param = filter[1][1];
flags = "";
}
const r = expression.likePatternToRegExp(filter[2], filter[3], flags);
const r = likePatternToRegExp(filter[2], filter[3], flags);
if (negate) res[param] = { $not: r };
else res[param] = r;
} else {
@@ -170,7 +169,7 @@ function filterToMongoQuery(filter, negate = false, res = {}) {
return res;
}
function processDeviceProjection(projection) {
export function processDeviceProjection(projection) {
if (!projection) return projection;
const p = {};
for (const [k, v] of Object.entries(projection)) {
@@ -196,7 +195,7 @@ function processDeviceProjection(projection) {
return p;
}
function processDeviceSort(sort) {
export function processDeviceSort(sort) {
if (!sort) return sort;
const s = {};
for (const [k, v] of Object.entries(sort)) {
@@ -217,7 +216,7 @@ function parseDate(d) {
return isNaN(n) ? "" + d : n;
}
function flattenDevice(device) {
export function flattenDevice(device) {
function recursive(input, root, output, timestamp) {
for (const [name, tree] of Object.entries(input)) {
if (!root) {
@@ -361,14 +360,14 @@ function flattenDevice(device) {
return newDevice;
}
function flattenFault(fault) {
export function flattenFault(fault) {
const f = Object.assign({}, fault);
if (f.timestamp) f.timestamp = +f.timestamp;
if (f.expiry) f.expiry = +f.expiry;
return f;
}
function flattenTask(task) {
export function flattenTask(task) {
const t = Object.assign({}, task);
t._id = "" + t._id;
if (t.timestamp) t.timestamp = +t.timestamp;
@@ -443,13 +442,11 @@ function mongoQueryToFilter(query) {
return expressions;
}
function flattenPreset(preset) {
export function flattenPreset(preset) {
const p = Object.assign({}, preset);
if (p.precondition) {
p.precondition = mongoQueryToFilter(JSON.parse(p.precondition));
p.precondition = p.precondition.length
? expression.stringify(p.precondition)
: "";
p.precondition = p.precondition.length ? stringify(p.precondition) : "";
}
if (p.events) {
@@ -474,7 +471,7 @@ function flattenPreset(preset) {
return p;
}
function flattenFile(file) {
export function flattenFile(file) {
const f = {};
f["_id"] = file["_id"];
if (file.metadata) {
@@ -486,10 +483,10 @@ function flattenFile(file) {
return f;
}
function preProcessPreset(data) {
export function preProcessPreset(data) {
const preset = Object.assign({}, data);
preset.precondition = preset.precondition
? filterToMongoQuery(expression.parse(preset.precondition))
? filterToMongoQuery(parse(preset.precondition))
: {};
preset.precondition = JSON.stringify(preset.precondition);
@@ -526,25 +523,10 @@ function preProcessPreset(data) {
return preset;
}
function preProcessProvision(data) {
export function preProcessProvision(data) {
return data.script;
}
function preProcessVirtualParameters(data) {
export function preProcessVirtualParameters(data) {
return data.script;
}
exports.processDeviceFilter = processDeviceFilter;
exports.processTasksFilter = processTasksFilter;
exports.processFaultsFilter = processFaultsFilter;
exports.filterToMongoQuery = filterToMongoQuery;
exports.processDeviceProjection = processDeviceProjection;
exports.processDeviceSort = processDeviceSort;
exports.flattenDevice = flattenDevice;
exports.flattenFault = flattenFault;
exports.flattenTask = flattenTask;
exports.flattenPreset = flattenPreset;
exports.flattenFile = flattenFile;
exports.preProcessPreset = preProcessPreset;
exports.preProcessProvision = preProcessProvision;
exports.preProcessVirtualParameters = preProcessVirtualParameters;