Update ESLint and Prettier

This commit is contained in:
Zaid Abdulla committed 2020-07-27 20:30:13 -07:00
1 parent 5a9e03db2c
commit ac980116bd
110 files changed
+2993 -2794

No files matched your search

+83 -50
View File
@@ -17,19 +17,20 @@
* along with GenieACS. If not, see <http://www.gnu.org/licenses/>.
*/
import { MongoClient, GridFSBucket } from "mongodb";
import { MongoClient, GridFSBucket, ObjectID } from "mongodb";
import { Script } from "vm";
import * as config from "../config";
import * as mongodbFunctions from "../mongodb-functions";
import * as expression from "../common/expression";
import { QueryOptions } from "../types";
import { QueryOptions, Expression } from "../types";
import { Readable } from "stream";
const CACHE_TTL = 300000;
let clientPromise: Promise<MongoClient>;
const RESOURCE_COLLECTION = {
files: "fs.files"
files: "fs.files",
};
function ensureIndexes(client): void {
@@ -58,27 +59,31 @@ function getClient(): Promise<MongoClient> {
return clientPromise;
}
export function cache<T>(key, valueGetter: () => Promise<T>, ttl): Promise<T> {
export function cache<T>(
key: string,
valueGetter: () => Promise<T>,
ttl: number
): Promise<T> {
return new Promise((resolve, reject) => {
getClient()
.then(client => {
.then((client) => {
const collection = client.db().collection("cache");
collection.findOne({ _id: key }, (err, doc) => {
if (err) return void reject(err);
if (doc != null) return void resolve(JSON.parse(doc.value) as T);
valueGetter()
.then(res => {
.then((res) => {
const expire = Date.now() + (ttl || CACHE_TTL);
const cacheDoc = {
_id: key,
value: JSON.stringify(res),
expire: new Date(expire)
expire: new Date(expire),
};
collection.updateOne(
{ _id: key },
{ $set: cacheDoc },
{ upsert: true },
err => {
(err) => {
if (err) reject(err);
else resolve(res);
}
@@ -92,8 +97,8 @@ export function cache<T>(key, valueGetter: () => Promise<T>, ttl): Promise<T> {
}
export function query(
resource,
filter,
resource: string,
filter: Expression,
options?: QueryOptions,
callback?: (doc: any) => void
): Promise<any[]> {
@@ -121,7 +126,7 @@ export function query(
}
return new Promise((resolve, reject) => {
getClient().then(client => {
getClient().then((client) => {
const collection = client
.db()
.collection(RESOURCE_COLLECTION[resource] || resource);
@@ -160,20 +165,20 @@ export function query(
cursor.toArray((err, docs) => {
if (err) return reject(err);
if (resource === "devices")
docs = docs.map(d => mongodbFunctions.flattenDevice(d));
docs = docs.map((d) => mongodbFunctions.flattenDevice(d));
else if (resource === "faults")
docs = docs.map(d => mongodbFunctions.flattenFault(d));
docs = docs.map((d) => mongodbFunctions.flattenFault(d));
else if (resource === "tasks")
docs = docs.map(d => mongodbFunctions.flattenTask(d));
docs = docs.map((d) => mongodbFunctions.flattenTask(d));
else if (resource === "presets")
docs = docs.map(d => mongodbFunctions.flattenPreset(d));
docs = docs.map((d) => mongodbFunctions.flattenPreset(d));
else if (resource === "files")
docs = docs.map(d => mongodbFunctions.flattenFile(d));
docs = docs.map((d) => mongodbFunctions.flattenFile(d));
return resolve(docs);
});
} else {
cursor.forEach(
doc => {
(doc) => {
if (resource === "devices")
doc = mongodbFunctions.flattenDevice(doc);
else if (resource === "faults")
@@ -186,7 +191,7 @@ export function query(
doc = mongodbFunctions.flattenFile(doc);
callback(doc);
},
err => {
(err) => {
if (err) reject(err);
else resolve();
}
@@ -196,7 +201,7 @@ export function query(
});
}
export function count(resource, filter): Promise<number> {
export function count(resource: string, filter: Expression): Promise<number> {
let q;
filter = expression.evaluate(filter, null, Date.now());
@@ -213,7 +218,7 @@ export function count(resource, filter): Promise<number> {
}
return new Promise((resolve, reject) => {
getClient().then(client => {
getClient().then((client) => {
const collection = client
.db()
.collection(RESOURCE_COLLECTION[resource] || resource);
@@ -225,7 +230,10 @@ export function count(resource, filter): Promise<number> {
});
}
export function updateDeviceTags(deviceId, tags): Promise<void> {
export function updateDeviceTags(
deviceId: string,
tags: Record<string, boolean>
): Promise<void> {
return new Promise((resolve, reject) => {
const add = [];
const pull = [];
@@ -242,13 +250,13 @@ export function updateDeviceTags(deviceId, tags): Promise<void> {
}
}
getClient()
.then(client => {
.then((client) => {
const collection = client.db().collection("devices");
const object = {};
if (add && add.length) object["$addToSet"] = { _tags: { $each: add } };
if (pull && pull.length) object["$pullAll"] = { _tags: pull };
collection.updateOne({ _id: deviceId }, object, err => {
collection.updateOne({ _id: deviceId }, object, (err) => {
if (err) return void reject(err);
resolve();
});
@@ -260,11 +268,11 @@ export function updateDeviceTags(deviceId, tags): Promise<void> {
function putResource(resource, id, object): Promise<void> {
return new Promise((resolve, reject) => {
getClient()
.then(client => {
.then((client) => {
const collection = client
.db()
.collection(RESOURCE_COLLECTION[resource] || resource);
collection.replaceOne({ _id: id }, object, { upsert: true }, err => {
collection.replaceOne({ _id: id }, object, { upsert: true }, (err) => {
if (err) return void reject(err);
resolve();
});
@@ -273,14 +281,17 @@ function putResource(resource, id, object): Promise<void> {
});
}
function deleteResource(resource, id): Promise<void> {
function deleteResource(
resource: string,
id: string | ObjectID
): Promise<void> {
return new Promise((resolve, reject) => {
getClient()
.then(client => {
.then((client) => {
const collection = client
.db()
.collection(RESOURCE_COLLECTION[resource] || resource);
collection.deleteOne({ _id: id }, err => {
collection.deleteOne({ _id: id }, (err) => {
if (err) return void reject(err);
resolve();
});
@@ -289,16 +300,22 @@ function deleteResource(resource, id): Promise<void> {
});
}
export function putPreset(id, object): Promise<void> {
export function putPreset(
id: string,
object: Record<string, unknown>
): Promise<void> {
object = mongodbFunctions.preProcessPreset(object);
return putResource("presets", id, object);
}
export function deletePreset(id): Promise<void> {
export function deletePreset(id: string): Promise<void> {
return deleteResource("presets", id);
}
export function putProvision(id, object): Promise<void> {
export function putProvision(
id: string,
object: Record<string, unknown>
): Promise<void> {
if (!object.script) object.script = "";
try {
new Script(`"use strict";(function(){\n${object.script}\n})();`);
@@ -308,11 +325,14 @@ export function putProvision(id, object): Promise<void> {
return putResource("provisions", id, object);
}
export function deleteProvision(id): Promise<void> {
export function deleteProvision(id: string): Promise<void> {
return deleteResource("provisions", id);
}
export function putVirtualParameter(id, object): Promise<void> {
export function putVirtualParameter(
id: string,
object: Record<string, unknown>
): Promise<void> {
if (!object.script) object.script = "";
try {
new Script(`"use strict";(function(){\n${object.script}\n})();`);
@@ -322,37 +342,46 @@ export function putVirtualParameter(id, object): Promise<void> {
return putResource("virtualParameters", id, object);
}
export function deleteVirtualParameter(id): Promise<void> {
export function deleteVirtualParameter(id: string): Promise<void> {
return deleteResource("virtualParameters", id);
}
export function putConfig(id, object): Promise<void> {
export function putConfig(
id: string,
object: Record<string, unknown>
): Promise<void> {
return putResource("config", id, object);
}
export function deleteConfig(id): Promise<void> {
export function deleteConfig(id: string): Promise<void> {
return deleteResource("config", id);
}
export function putPermission(id, object): Promise<void> {
export function putPermission(
id: string,
object: Record<string, unknown>
): Promise<void> {
return putResource("permissions", id, object);
}
export function deletePermission(id): Promise<void> {
export function deletePermission(id: string): Promise<void> {
return deleteResource("permissions", id);
}
export function putUser(id, object): Promise<void> {
export function putUser(
id: string,
object: Record<string, unknown>
): Promise<void> {
return new Promise((resolve, reject) => {
getClient()
.then(client => {
.then((client) => {
const collection = client.db().collection("users");
// update instead of replace to keep the password if not set by user
collection.updateOne(
{ _id: id },
{ $set: object },
{ upsert: true },
err => {
(err) => {
if (err) return void reject(err);
resolve();
}
@@ -362,17 +391,21 @@ export function putUser(id, object): Promise<void> {
});
}
export function deleteUser(id): Promise<void> {
export function deleteUser(id: string): Promise<void> {
return deleteResource("users", id);
}
export function putFile(filename, metadata, contentStream): Promise<void> {
export function putFile(
filename: string,
metadata: Record<string, string>,
contentStream: Readable
): Promise<void> {
return new Promise((resolve, reject) => {
getClient()
.then(client => {
.then((client) => {
const bucket = new GridFSBucket(client.db());
const uploadStream = bucket.openUploadStreamWithId(filename, filename, {
metadata: metadata
metadata: metadata,
});
uploadStream.on("error", reject);
contentStream.on("error", reject);
@@ -383,12 +416,12 @@ export function putFile(filename, metadata, contentStream): Promise<void> {
});
}
export function deleteFile(filename): Promise<void> {
export function deleteFile(filename: string): Promise<void> {
return new Promise((resolve, reject) => {
getClient()
.then(client => {
.then((client) => {
const bucket = new GridFSBucket(client.db());
bucket.delete(filename, err => {
bucket.delete(filename as any, (err) => {
if (err) return void reject(err);
resolve();
});
@@ -397,11 +430,11 @@ export function deleteFile(filename): Promise<void> {
});
}
export function deleteFault(id): Promise<void> {
export function deleteFault(id: string): Promise<void> {
return deleteResource("faults", id);
}
export function deleteTask(id): Promise<void> {
export function deleteTask(id: ObjectID): Promise<void> {
return deleteResource("tasks", id);
}