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:
1 parent
824639976f
commit
1e41c72d60
62 files changed
+718
-898
No files matched your search
@@ -18,12 +18,12 @@
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
const mongodb = require("mongodb");
|
||||
const config = require("./config");
|
||||
const common = require("./common");
|
||||
const expressionParser = require("./common/expression-parser");
|
||||
import { MongoClient, ObjectID } from "mongodb";
|
||||
import { get } from "./config";
|
||||
import { escapeRegExp } from "./common";
|
||||
import { parse } from "./common/expression-parser";
|
||||
|
||||
let tasksCollection,
|
||||
export let tasksCollection,
|
||||
devicesCollection,
|
||||
presetsCollection,
|
||||
objectsCollection,
|
||||
@@ -34,32 +34,28 @@ let tasksCollection,
|
||||
operationsCollection,
|
||||
configCollection;
|
||||
|
||||
function connect(callback) {
|
||||
mongodb.MongoClient.connect(
|
||||
config.get("MONGODB_CONNECTION_URL"),
|
||||
export let client;
|
||||
|
||||
export function connect(callback) {
|
||||
MongoClient.connect(
|
||||
get("MONGODB_CONNECTION_URL"),
|
||||
{ useNewUrlParser: true },
|
||||
(err, client) => {
|
||||
(err, _client) => {
|
||||
if (err) return void callback(err);
|
||||
exports.client = client;
|
||||
client = _client;
|
||||
const db = client.db();
|
||||
|
||||
exports.tasksCollection = tasksCollection = db.collection("tasks");
|
||||
tasksCollection = db.collection("tasks");
|
||||
tasksCollection.createIndex({ device: 1, timestamp: 1 });
|
||||
|
||||
exports.devicesCollection = devicesCollection = db.collection("devices");
|
||||
exports.presetsCollection = presetsCollection = db.collection("presets");
|
||||
exports.objectsCollection = objectsCollection = db.collection("objects");
|
||||
exports.filesCollection = filesCollection = db.collection("fs.files");
|
||||
exports.provisionsCollection = provisionsCollection = db.collection(
|
||||
"provisions"
|
||||
);
|
||||
exports.virtualParametersCollection = virtualParametersCollection = db.collection(
|
||||
"virtualParameters"
|
||||
);
|
||||
exports.faultsCollection = faultsCollection = db.collection("faults");
|
||||
exports.operationsCollection = operationsCollection = db.collection(
|
||||
"operations"
|
||||
);
|
||||
devicesCollection = db.collection("devices");
|
||||
presetsCollection = db.collection("presets");
|
||||
objectsCollection = db.collection("objects");
|
||||
filesCollection = db.collection("fs.files");
|
||||
provisionsCollection = db.collection("provisions");
|
||||
virtualParametersCollection = db.collection("virtualParameters");
|
||||
faultsCollection = db.collection("faults");
|
||||
operationsCollection = db.collection("operations");
|
||||
configCollection = db.collection("config");
|
||||
|
||||
callback();
|
||||
@@ -67,8 +63,8 @@ function connect(callback) {
|
||||
);
|
||||
}
|
||||
|
||||
function disconnect() {
|
||||
if (exports.client) exports.client.close();
|
||||
export function disconnect() {
|
||||
if (client) client.close();
|
||||
}
|
||||
|
||||
// Optimize projection by removing overlaps
|
||||
@@ -92,8 +88,8 @@ function optimizeProjection(obj) {
|
||||
return obj;
|
||||
}
|
||||
|
||||
function fetchDevice(id, timestamp, patterns, callback) {
|
||||
const MAX_DEPTH = config.get("MAX_DEPTH", id);
|
||||
export function fetchDevice(id, timestamp, patterns, callback) {
|
||||
const MAX_DEPTH = get("MAX_DEPTH", id);
|
||||
|
||||
if (!patterns || !patterns.length) patterns = [[[], (1 << MAX_DEPTH) - 1]];
|
||||
|
||||
@@ -476,7 +472,13 @@ function fetchDevice(id, timestamp, patterns, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
function saveDevice(deviceId, deviceData, isNew, sessionTimestamp, callback) {
|
||||
export function saveDevice(
|
||||
deviceId,
|
||||
deviceData,
|
||||
isNew,
|
||||
sessionTimestamp,
|
||||
callback
|
||||
) {
|
||||
const update = { $set: {}, $unset: {}, $addToSet: {}, $pull: {} };
|
||||
|
||||
for (const diff of deviceData.timestamps.diff()) {
|
||||
@@ -724,9 +726,9 @@ function saveDevice(deviceId, deviceData, isNew, sessionTimestamp, callback) {
|
||||
);
|
||||
}
|
||||
|
||||
function getFaults(deviceId, callback) {
|
||||
export function getFaults(deviceId, callback) {
|
||||
faultsCollection
|
||||
.find({ _id: { $regex: `^${common.escapeRegExp(deviceId)}\\:` } })
|
||||
.find({ _id: { $regex: `^${escapeRegExp(deviceId)}\\:` } })
|
||||
.toArray((err, res) => {
|
||||
if (err) return callback(err);
|
||||
|
||||
@@ -745,7 +747,7 @@ function getFaults(deviceId, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
function saveFault(deviceId, channel, fault, callback) {
|
||||
export function saveFault(deviceId, channel, fault, callback) {
|
||||
const id = `${deviceId}:${channel}`;
|
||||
fault = Object.assign({}, fault);
|
||||
fault._id = id;
|
||||
@@ -756,11 +758,11 @@ function saveFault(deviceId, channel, fault, callback) {
|
||||
faultsCollection.replaceOne({ _id: id }, fault, { upsert: true }, callback);
|
||||
}
|
||||
|
||||
function deleteFault(deviceId, channel, callback) {
|
||||
export function deleteFault(deviceId, channel, callback) {
|
||||
faultsCollection.deleteOne({ _id: `${deviceId}:${channel}` }, callback);
|
||||
}
|
||||
|
||||
function getDueTasks(deviceId, timestamp, callback) {
|
||||
export function getDueTasks(deviceId, timestamp, callback) {
|
||||
const cur = tasksCollection.find({ device: deviceId }).sort(["timestamp"]);
|
||||
const tasks = [];
|
||||
|
||||
@@ -782,8 +784,8 @@ function getDueTasks(deviceId, timestamp, callback) {
|
||||
// For API compatibility
|
||||
if (task.name === "download" && task.file) {
|
||||
let q;
|
||||
if (mongodb.ObjectID.isValid(task.file))
|
||||
q = { _id: { $in: [task.file, new mongodb.ObjectID(task.file)] } };
|
||||
if (ObjectID.isValid(task.file))
|
||||
q = { _id: { $in: [task.file, new ObjectID(task.file)] } };
|
||||
else q = { _id: task.file };
|
||||
|
||||
filesCollection.find(q).toArray((err, res) => {
|
||||
@@ -805,16 +807,16 @@ function getDueTasks(deviceId, timestamp, callback) {
|
||||
);
|
||||
}
|
||||
|
||||
function clearTasks(deviceId, taskIds, callback) {
|
||||
export function clearTasks(deviceId, taskIds, callback) {
|
||||
tasksCollection.deleteMany(
|
||||
{ _id: { $in: taskIds.map(id => new mongodb.ObjectID(id)) } },
|
||||
{ _id: { $in: taskIds.map(id => new ObjectID(id)) } },
|
||||
callback
|
||||
);
|
||||
}
|
||||
|
||||
function getOperations(deviceId, callback) {
|
||||
export function getOperations(deviceId, callback) {
|
||||
operationsCollection
|
||||
.find({ _id: { $regex: `^${common.escapeRegExp(deviceId)}\\:` } })
|
||||
.find({ _id: { $regex: `^${escapeRegExp(deviceId)}\\:` } })
|
||||
.toArray((err, res) => {
|
||||
if (err) return void callback(err);
|
||||
|
||||
@@ -833,7 +835,7 @@ function getOperations(deviceId, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
function saveOperation(deviceId, commandKey, operation, callback) {
|
||||
export function saveOperation(deviceId, commandKey, operation, callback) {
|
||||
const id = `${deviceId}:${commandKey}`;
|
||||
operation = Object.assign({}, operation);
|
||||
operation._id = id;
|
||||
@@ -849,34 +851,34 @@ function saveOperation(deviceId, commandKey, operation, callback) {
|
||||
);
|
||||
}
|
||||
|
||||
function deleteOperation(deviceId, commandKey, callback) {
|
||||
export function deleteOperation(deviceId, commandKey, callback) {
|
||||
operationsCollection.deleteOne(
|
||||
{ _id: `${deviceId}:${commandKey}` },
|
||||
callback
|
||||
);
|
||||
}
|
||||
|
||||
function getPresets(callback) {
|
||||
export function getPresets(callback) {
|
||||
presetsCollection.find().toArray(callback);
|
||||
}
|
||||
|
||||
function getObjects(callback) {
|
||||
export function getObjects(callback) {
|
||||
objectsCollection.find().toArray(callback);
|
||||
}
|
||||
|
||||
function getProvisions(callback) {
|
||||
export function getProvisions(callback) {
|
||||
provisionsCollection.find().toArray(callback);
|
||||
}
|
||||
|
||||
function getVirtualParameters(callback) {
|
||||
export function getVirtualParameters(callback) {
|
||||
virtualParametersCollection.find().toArray(callback);
|
||||
}
|
||||
|
||||
function getFiles(callback) {
|
||||
export function getFiles(callback) {
|
||||
filesCollection.find().toArray(callback);
|
||||
}
|
||||
|
||||
function getConfig(callback) {
|
||||
export function getConfig(callback) {
|
||||
configCollection.find().toArray((err, res) => {
|
||||
if (err) return void callback(err);
|
||||
|
||||
@@ -884,27 +886,8 @@ function getConfig(callback) {
|
||||
null,
|
||||
res.map(c => ({
|
||||
id: c["_id"],
|
||||
value: expressionParser.parse(c["value"])
|
||||
value: parse(c["value"])
|
||||
}))
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
exports.connect = connect;
|
||||
exports.disconnect = disconnect;
|
||||
exports.fetchDevice = fetchDevice;
|
||||
exports.saveDevice = saveDevice;
|
||||
exports.getFaults = getFaults;
|
||||
exports.saveFault = saveFault;
|
||||
exports.deleteFault = deleteFault;
|
||||
exports.clearTasks = clearTasks;
|
||||
exports.saveOperation = saveOperation;
|
||||
exports.deleteOperation = deleteOperation;
|
||||
exports.getPresets = getPresets;
|
||||
exports.getObjects = getObjects;
|
||||
exports.getProvisions = getProvisions;
|
||||
exports.getVirtualParameters = getVirtualParameters;
|
||||
exports.getFiles = getFiles;
|
||||
exports.getDueTasks = getDueTasks;
|
||||
exports.getOperations = getOperations;
|
||||
exports.getConfig = getConfig;
|
||||
Reference in new issue
Block a user