feature/node-rewrite
Sven Slootweg 4 years ago
parent b9fc50c0d2
commit 98a4bcb6d8

@ -1,6 +1,5 @@
MARKER: MARKER:
- Replace local `unreachable` with @joepie91/unreachable - Move to pegjs-import
- Update all Validatem usage to new validateArguments API
- LVM / mdraid support and tabs (+ complete refactoring LVM implementation) - LVM / mdraid support and tabs (+ complete refactoring LVM implementation)
- Switch hashing to argon2id - Switch hashing to argon2id
- Switch child_process to execa - Switch child_process to execa

@ -15,14 +15,21 @@
"dependencies": { "dependencies": {
"@babel/register": "^7.8.3", "@babel/register": "^7.8.3",
"@joepie91/express-react-views": "^1.0.1", "@joepie91/express-react-views": "^1.0.1",
"@joepie91/unreachable": "^1.0.0",
"@validatem/allow-extra-properties": "^0.1.0", "@validatem/allow-extra-properties": "^0.1.0",
"@validatem/anything": "^0.1.0", "@validatem/anything": "^0.1.0",
"@validatem/array-of": "^0.1.2", "@validatem/array-of": "^0.1.2",
"@validatem/core": "^0.3.15", "@validatem/core": "^0.3.15",
"@validatem/dynamic": "^0.1.2", "@validatem/dynamic": "^0.1.2",
"@validatem/either": "^0.1.9",
"@validatem/error": "^1.1.0",
"@validatem/is-array": "^0.1.1",
"@validatem/is-function": "^0.1.0",
"@validatem/is-number": "^0.1.3", "@validatem/is-number": "^0.1.3",
"@validatem/is-plain-object": "^0.1.1",
"@validatem/is-regular-expression": "^0.1.0", "@validatem/is-regular-expression": "^0.1.0",
"@validatem/is-string": "^1.0.0", "@validatem/is-string": "^1.0.0",
"@validatem/require-either": "^0.1.0",
"@validatem/required": "^0.1.1", "@validatem/required": "^0.1.1",
"@validatem/when": "^0.1.0", "@validatem/when": "^0.1.0",
"JSONStream": "^1.1.4", "JSONStream": "^1.1.4",
@ -74,8 +81,7 @@
"sse-channel": "^3.1.1", "sse-channel": "^3.1.1",
"syncpipe": "^1.0.0", "syncpipe": "^1.0.0",
"through2": "^2.0.1", "through2": "^2.0.1",
"uuid": "^2.0.2", "uuid": "^2.0.2"
"validatem": "^0.2.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.8.4", "@babel/core": "^7.8.4",

@ -4,12 +4,12 @@ const Promise = require("bluebird");
const memoizee = require("memoizee"); const memoizee = require("memoizee");
const asExpression = require("as-expression"); const asExpression = require("as-expression");
const fs = Promise.promisifyAll(require("fs")); const fs = Promise.promisifyAll(require("fs"));
const unreachable = require("@joepie91/unreachable")("cvm");
const lsblk = require("../../packages/exec-lsblk"); const lsblk = require("../../packages/exec-lsblk");
const All = require("../../packages/graphql-interface/symbols/all"); const All = require("../../packages/graphql-interface/symbols/all");
const treecutter = require("../../packages/treecutter"); const treecutter = require("../../packages/treecutter");
const findInTree = require("../../packages/find-in-tree"); const findInTree = require("../../packages/find-in-tree");
const shallowMerge = require("../../packages/shallow-merge"); const shallowMerge = require("../../packages/shallow-merge");
const unreachable = require("../../packages/unreachable");
module.exports = function () { module.exports = function () {
let lsblkOnce = memoizee(() => { let lsblkOnce = memoizee(() => {

@ -1,9 +1,13 @@
"use strict"; "use strict";
const { validateOptions, required, isFunction, isString } = require("validatem");
const assureArray = require("assure-array"); const assureArray = require("assure-array");
const isIterable = require("is-iterable"); const isIterable = require("is-iterable");
const { validateOptions } = require("@validatem/core");
const required = require("@validatem/required");
const isFunction = require("@validatem/is-function");
const isString = require("@validatem/is-string");
module.exports = function findInTree(options) { module.exports = function findInTree(options) {
validateOptions(arguments, { validateOptions(arguments, {
tree: [ required ], tree: [ required ],

@ -9,7 +9,8 @@ ensure NaN is handled correctly
const util = require("util"); const util = require("util");
const chalk = require("chalk"); const chalk = require("chalk");
const { validateArguments, required } = require("@validatem/core"); const { validateArguments } = require("@validatem/core");
const required = require("@validatem/required");
const arrayOf = require("@validatem/array-of"); const arrayOf = require("@validatem/array-of");
const isString = require("@validatem/is-string"); const isString = require("@validatem/is-string");
const isNumber = require("@validatem/is-number"); const isNumber = require("@validatem/is-number");

@ -2,14 +2,17 @@
// FIXME: Finish this later // FIXME: Finish this later
const { validateArguments, required, isString, isFunction } = require("validatem"); const { validateArguments } = require("@validatem/core");
const isString = require("@validatem/is-string");
const isFunction = require("@validatem/is-function");
const required = require("@validatem/required");
module.exports = function mapTree(tree, predicate, childrenProperty) { module.exports = function mapTree(tree, predicate, childrenProperty) {
validateArguments(arguments, [ validateArguments(arguments, {
[ "tree", required ], tree: [ required ],
[ "predicate", required, isFunction ], predicate: [ required, isFunction ],
[ "childrenProperty", isString ] childrenProperty: [ isString ]
]); });
}; };

@ -1,14 +1,15 @@
"use strict"; "use strict";
const { validateArguments, required } = require("@validatem/core"); const { validateArguments } = require("@validatem/core");
const isString = require("@validatem/is-string"); const isString = require("@validatem/is-string");
const isRegularExpression = require("@validatem/is-regular-expression"); const isRegularExpression = require("@validatem/is-regular-expression");
const required = require("@validatem/required");
module.exports = function matchOrError(regex, string) { module.exports = function matchOrError(regex, string) {
validateArguments(arguments, [ validateArguments(arguments, {
[ "regex", required, isRegularExpression ], regex: [ required, isRegularExpression ],
[ "string", required, isString ] string: [ required, isString ]
]); });
let match = regex.exec(string); let match = regex.exec(string);

@ -1,6 +1,8 @@
"use strict"; "use strict";
const { validateArguments, required, isString } = require("validatem"); const { validateArguments } = require("@validatem/core");
const isString = require("@validatem/is-string");
const required = require("@validatem/required");
// FIXME: Length validation? // FIXME: Length validation?
function parseModeDigit(modeDigit) { function parseModeDigit(modeDigit) {
@ -65,12 +67,12 @@ function intoDigits(modeString) {
} }
module.exports = function parseModeString(modeString, { mask } = {}) { module.exports = function parseModeString(modeString, { mask } = {}) {
validateArguments(arguments, [ validateArguments(arguments, {
[ "modeString", required, isString ], modeString: [ required, isString ],
[ "options", { options: {
mask: isString mask: isString
}] }
]); });
let hasSpecialBits = (modeString.length === 4); let hasSpecialBits = (modeString.length === 4);
let modeDigits = intoDigits(modeString); let modeDigits = intoDigits(modeString);

@ -1,25 +1,24 @@
"use strict"; "use strict";
const pegjs = require("pegjs"); const pegjs = require("pegjs");
const { validateOptions, either, required, isString, isPlainObject, allowExtraProperties } = require("validatem");
const fs = require("fs"); const fs = require("fs");
const moduleEval = require("eval"); const moduleEval = require("eval");
const vm = require("vm"); const vm = require("vm");
const asExpression = require("as-expression"); const asExpression = require("as-expression");
const textParser = require("../text-parser"); const textParser = require("../text-parser");
const { validateOptions } = require("@validatem/core");
const isString = require("@validatem/is-string");
const isPlainObject = require("@validatem/is-plain-object");
const requireEither = require("@validatem/require-either");
module.exports = function createPegParser({ grammar, grammarFile, options }) { module.exports = function createPegParser({ grammar, grammarFile, options }) {
validateOptions(arguments, [ validateOptions(arguments, [
{ {
grammar: [ isString ], grammar: [ isString ],
grammarFile: [ isString ], grammarFile: [ isString ],
options: [ isPlainObject ] options: [ isPlainObject ]
}, }, requireEither([ "grammar", "grammarFile" ])
// FIXME: require-either
either(
allowExtraProperties({ grammar: [ required ] }),
allowExtraProperties({ grammarFile: [ required ] })
)
]); ]);
if (grammarFile != null) { if (grammarFile != null) {

@ -1,9 +1,14 @@
"use strict"; "use strict";
const { validateArguments, required, isString, isArray, ValidationError } = require("validatem");
const assureArray = require("assure-array"); const assureArray = require("assure-array");
const shallowMerge = require("../shallow-merge"); const shallowMerge = require("../shallow-merge");
const { validateArguments } = require("@validatem/core");
const required = require("@validatem/required");
const isString = require("@validatem/is-string");
const isArray = require("@validatem/is-array");
const ValidationError = require("@validatem/error");
function createListValidator() { function createListValidator() {
let lastSequenceNumber = null; let lastSequenceNumber = null;
@ -32,10 +37,10 @@ function defaultOptions(options = {}) {
module.exports = { module.exports = {
flatten: function (tree, options) { flatten: function (tree, options) {
validateArguments(arguments, [ validateArguments(arguments, {
[ "tree", required ], tree: [ required ],
[ "options", validateTreecutterOptions ] options: [ validateTreecutterOptions ]
]); });
let { childrenProperty } = defaultOptions(options); let { childrenProperty } = defaultOptions(options);
@ -69,10 +74,10 @@ module.exports = {
rebuild: function (list, options) { rebuild: function (list, options) {
let isTreecutterList = createListValidator(); let isTreecutterList = createListValidator();
validateArguments(arguments, [ validateArguments(arguments, {
[ "list", required, isTreecutterList ], list: [ required, isTreecutterList ],
[ "options", validateTreecutterOptions ] options: [ validateTreecutterOptions ]
]); });
let { childrenProperty } = defaultOptions(options); let { childrenProperty } = defaultOptions(options);

@ -1,6 +0,0 @@
"use strict";
module.exports = function unreachable(reason) {
// TODO: Parse the package name out of the stacktrace and include it in the error message?
throw new Error(`${reason} -- this is a bug, please report it!`);
};

@ -968,6 +968,11 @@
lodash.escaperegexp "^4.1.2" lodash.escaperegexp "^4.1.2"
object-assign "^4.1.1" object-assign "^4.1.1"
"@joepie91/unreachable@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@joepie91/unreachable/-/unreachable-1.0.0.tgz#8032bb8a5813e81bbbe516cb3031d60818526687"
integrity sha512-vZRJ5UDq4mqP1vgSrcOLD3aIfS/nzwsvGFOOHv5sj5fa1Ss0dT1xnIzrXKLD9pu5EcUvF3K6n6jdaMW8uXpNEQ==
"@phc/format@^1.0.0": "@phc/format@^1.0.0":
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/@phc/format/-/format-1.0.0.tgz#b5627003b3216dc4362125b13f48a4daa76680e4" resolved "https://registry.yarnpkg.com/@phc/format/-/format-1.0.0.tgz#b5627003b3216dc4362125b13f48a4daa76680e4"
@ -1076,6 +1081,17 @@
dependencies: dependencies:
"@validatem/combinator" "^0.1.1" "@validatem/combinator" "^0.1.1"
"@validatem/either@^0.1.9":
version "0.1.9"
resolved "https://registry.yarnpkg.com/@validatem/either/-/either-0.1.9.tgz#0d753ef8fe04486d2b7122de3dd3ac51b3acaacf"
integrity sha512-cUqlRjy02qDcZ166/D6duk8lrtqrHynHuSakU0TvMGMBiLzjWpMJ+3beAWHe+kILB5/dlXVyc68ZIjSNhBi8Kw==
dependencies:
"@validatem/combinator" "^0.1.1"
"@validatem/error" "^1.0.0"
"@validatem/match-validation-error" "^0.1.0"
"@validatem/validation-result" "^0.1.2"
flatten "^1.0.3"
"@validatem/error@^1.0.0", "@validatem/error@^1.1.0": "@validatem/error@^1.0.0", "@validatem/error@^1.1.0":
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/@validatem/error/-/error-1.1.0.tgz#bef46e7066c39761b494ebe3eec2ecdc7348f4ed" resolved "https://registry.yarnpkg.com/@validatem/error/-/error-1.1.0.tgz#bef46e7066c39761b494ebe3eec2ecdc7348f4ed"
@ -1103,7 +1119,7 @@
default-value "^1.0.0" default-value "^1.0.0"
flatten "^1.0.3" flatten "^1.0.3"
"@validatem/is-array@^0.1.0": "@validatem/is-array@^0.1.0", "@validatem/is-array@^0.1.1":
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/@validatem/is-array/-/is-array-0.1.1.tgz#fbe15ca8c97c30b622a5bbeb536d341e99cfc2c5" resolved "https://registry.yarnpkg.com/@validatem/is-array/-/is-array-0.1.1.tgz#fbe15ca8c97c30b622a5bbeb536d341e99cfc2c5"
integrity sha512-XD3C+Nqfpnbb4oO//Ufodzvui7SsCIW/stxZ39dP/fyRsBHrdERinkFATH5HepegtDlWMQswm5m1XFRbQiP2oQ== integrity sha512-XD3C+Nqfpnbb4oO//Ufodzvui7SsCIW/stxZ39dP/fyRsBHrdERinkFATH5HepegtDlWMQswm5m1XFRbQiP2oQ==
@ -1208,6 +1224,18 @@
dependencies: dependencies:
"@validatem/error" "^1.0.0" "@validatem/error" "^1.0.0"
"@validatem/require-either@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@validatem/require-either/-/require-either-0.1.0.tgz#250e35ab06f124ea90f3925d74b5f53a083923b0"
integrity sha512-UyZtJieT3aJhO9tj1OJp47V9jpHCE7RSohue9jg3FyDGwmIBVYXCfASeM19mWg9W0lp6IevsqTmaGQhqQOQYJg==
dependencies:
"@validatem/allow-extra-properties" "^0.1.0"
"@validatem/either" "^0.1.9"
"@validatem/forbidden" "^0.1.0"
"@validatem/required" "^0.1.1"
assure-array "^1.0.0"
flatten "^1.0.3"
"@validatem/required@^0.1.0", "@validatem/required@^0.1.1": "@validatem/required@^0.1.0", "@validatem/required@^0.1.1":
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/@validatem/required/-/required-0.1.1.tgz#64f4a87333fc5955511634036b7f8948ed269170" resolved "https://registry.yarnpkg.com/@validatem/required/-/required-0.1.1.tgz#64f4a87333fc5955511634036b7f8948ed269170"
@ -2087,9 +2115,9 @@ camelcase@^4.0.0:
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
caniuse-lite@^1.0.30001135: caniuse-lite@^1.0.30001135:
version "1.0.30001150" version "1.0.30001151"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001150.tgz#6d0d829da654b0b233576de00335586bc2004df1" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001151.tgz#1ddfde5e6fff02aad7940b4edb7d3ac76b0cb00b"
integrity sha512-kiNKvihW0m36UhAFnl7bOAv0i1K1f6wpfVtTF5O5O82XzgtBnb05V0XeV3oZ968vfg2sRNChsHw8ASH2hDfoYQ== integrity sha512-Zh3sHqskX6mHNrqUerh+fkf0N72cMxrmflzje/JyVImfpknscMnkeJrlFGJcqTmaa0iszdYptGpWMJCRQDkBVw==
capitalize@^2.0.0: capitalize@^2.0.0:
version "2.0.3" version "2.0.3"

Loading…
Cancel
Save