new license file version [CI SKIP]
This commit is contained in:
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB EC FC","322":"oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB","66":"dB eB fB gB hB iB jB kB h lB mB nB oB pB","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB","578":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB PC QC RC SC qB AC TC rB","66":"SB TB UB VB WB XB YB ZB aB bB cB dB","132":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","132":"h"},L:{"132":"H"},M:{"322":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I wC xC yC zC 0C 0B 1C","132":"g 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD","322":"BD"}},B:4,C:"WebXR Device API"};
|
||||
@@ -0,0 +1,605 @@
|
||||
#! /usr/bin/env node
|
||||
// -*- js -*-
|
||||
|
||||
"use strict";
|
||||
|
||||
require("../tools/tty");
|
||||
|
||||
var fs = require("fs");
|
||||
var info = require("../package.json");
|
||||
var path = require("path");
|
||||
var UglifyJS = require("../tools/node");
|
||||
|
||||
var skip_keys = [ "cname", "fixed", "in_arg", "inlined", "length_read", "parent_scope", "redef", "scope", "unused" ];
|
||||
var truthy_keys = [ "optional", "pure", "terminal", "uses_arguments", "uses_eval", "uses_with" ];
|
||||
|
||||
var files = {};
|
||||
var options = {};
|
||||
var short_forms = {
|
||||
b: "beautify",
|
||||
c: "compress",
|
||||
d: "define",
|
||||
e: "enclose",
|
||||
h: "help",
|
||||
m: "mangle",
|
||||
o: "output",
|
||||
O: "output-opts",
|
||||
p: "parse",
|
||||
v: "version",
|
||||
V: "version",
|
||||
};
|
||||
var args = process.argv.slice(2);
|
||||
var paths = [];
|
||||
var output, nameCache;
|
||||
var specified = {};
|
||||
while (args.length) {
|
||||
var arg = args.shift();
|
||||
if (arg[0] != "-") {
|
||||
paths.push(arg);
|
||||
} else if (arg == "--") {
|
||||
paths = paths.concat(args);
|
||||
break;
|
||||
} else if (arg[1] == "-") {
|
||||
process_option(arg.slice(2));
|
||||
} else [].forEach.call(arg.slice(1), function(letter, index, arg) {
|
||||
if (!(letter in short_forms)) fatal("invalid option -" + letter);
|
||||
process_option(short_forms[letter], index + 1 < arg.length);
|
||||
});
|
||||
}
|
||||
|
||||
function process_option(name, no_value) {
|
||||
specified[name] = true;
|
||||
switch (name) {
|
||||
case "help":
|
||||
switch (read_value()) {
|
||||
case "ast":
|
||||
print(UglifyJS.describe_ast());
|
||||
break;
|
||||
case "options":
|
||||
var text = [];
|
||||
var toplevels = [];
|
||||
var padding = "";
|
||||
var defaults = UglifyJS.default_options();
|
||||
for (var name in defaults) {
|
||||
var option = defaults[name];
|
||||
if (option && typeof option == "object") {
|
||||
text.push("--" + ({
|
||||
output: "beautify",
|
||||
sourceMap: "source-map",
|
||||
}[name] || name) + " options:");
|
||||
text.push(format_object(option));
|
||||
text.push("");
|
||||
} else {
|
||||
if (padding.length < name.length) padding = Array(name.length + 1).join(" ");
|
||||
toplevels.push([ {
|
||||
keep_fargs: "keep-fargs",
|
||||
keep_fnames: "keep-fnames",
|
||||
nameCache: "name-cache",
|
||||
}[name] || name, option ]);
|
||||
}
|
||||
}
|
||||
toplevels.forEach(function(tokens) {
|
||||
text.push("--" + tokens[0] + padding.slice(tokens[0].length - 2) + tokens[1]);
|
||||
});
|
||||
print(text.join("\n"));
|
||||
break;
|
||||
default:
|
||||
print([
|
||||
"Usage: uglifyjs [files...] [options]",
|
||||
"",
|
||||
"Options:",
|
||||
" -h, --help Print usage information.",
|
||||
" `--help options` for details on available options.",
|
||||
" -v, -V, --version Print version number.",
|
||||
" -p, --parse <options> Specify parser options.",
|
||||
" -c, --compress [options] Enable compressor/specify compressor options.",
|
||||
" -m, --mangle [options] Mangle names/specify mangler options.",
|
||||
" --mangle-props [options] Mangle properties/specify mangler options.",
|
||||
" -b, --beautify [options] Beautify output/specify output options.",
|
||||
" -O, --output-opts <options> Output options (beautify disabled).",
|
||||
" -o, --output <file> Output file (default STDOUT).",
|
||||
" --annotations Process and preserve comment annotations.",
|
||||
" --no-annotations Ignore and discard comment annotations.",
|
||||
" --comments [filter] Preserve copyright comments in the output.",
|
||||
" --config-file <file> Read minify() options from JSON file.",
|
||||
" -d, --define <expr>[=value] Global definitions.",
|
||||
" -e, --enclose [arg[,...][:value[,...]]] Embed everything in a big function, with configurable argument(s) & value(s).",
|
||||
" --expression Parse a single expression, rather than a program.",
|
||||
" --ie Support non-standard Internet Explorer.",
|
||||
" --keep-fargs Do not mangle/drop function arguments.",
|
||||
" --keep-fnames Do not mangle/drop function names. Useful for code relying on Function.prototype.name.",
|
||||
" --module Process input as ES module (implies --toplevel)",
|
||||
" --name-cache <file> File to hold mangled name mappings.",
|
||||
" --rename Force symbol expansion.",
|
||||
" --no-rename Disable symbol expansion.",
|
||||
" --self Build UglifyJS as a library (implies --wrap UglifyJS)",
|
||||
" --source-map [options] Enable source map/specify source map options.",
|
||||
" --timings Display operations run time on STDERR.",
|
||||
" --toplevel Compress and/or mangle variables in toplevel scope.",
|
||||
" --v8 Support non-standard Chrome & Node.js.",
|
||||
" --validate Perform validation during AST manipulations.",
|
||||
" --verbose Print diagnostic messages.",
|
||||
" --warn Print warning messages.",
|
||||
" --webkit Support non-standard Safari/Webkit.",
|
||||
" --wrap <name> Embed everything as a function with “exports” corresponding to “name” globally.",
|
||||
"",
|
||||
"(internal debug use only)",
|
||||
" --in-situ Warning: replaces original source files with minified output.",
|
||||
" --reduce-test Reduce a standalone test case (assumes cloned repository).",
|
||||
].join("\n"));
|
||||
}
|
||||
process.exit();
|
||||
case "version":
|
||||
print(info.name + " " + info.version);
|
||||
process.exit();
|
||||
case "config-file":
|
||||
var config = JSON.parse(read_file(read_value(true)));
|
||||
if (config.mangle && config.mangle.properties && config.mangle.properties.regex) {
|
||||
config.mangle.properties.regex = UglifyJS.parse(config.mangle.properties.regex, {
|
||||
expression: true,
|
||||
}).value;
|
||||
}
|
||||
for (var key in config) if (!(key in options)) options[key] = config[key];
|
||||
break;
|
||||
case "compress":
|
||||
case "mangle":
|
||||
options[name] = parse_js(read_value(), options[name]);
|
||||
break;
|
||||
case "source-map":
|
||||
options.sourceMap = parse_js(read_value(), options.sourceMap);
|
||||
break;
|
||||
case "enclose":
|
||||
options[name] = read_value();
|
||||
break;
|
||||
case "annotations":
|
||||
case "expression":
|
||||
case "ie":
|
||||
case "ie8":
|
||||
case "module":
|
||||
case "timings":
|
||||
case "toplevel":
|
||||
case "v8":
|
||||
case "validate":
|
||||
case "webkit":
|
||||
options[name] = true;
|
||||
break;
|
||||
case "no-annotations":
|
||||
options.annotations = false;
|
||||
break;
|
||||
case "keep-fargs":
|
||||
options.keep_fargs = true;
|
||||
break;
|
||||
case "keep-fnames":
|
||||
options.keep_fnames = true;
|
||||
break;
|
||||
case "wrap":
|
||||
options[name] = read_value(true);
|
||||
break;
|
||||
case "verbose":
|
||||
options.warnings = "verbose";
|
||||
break;
|
||||
case "warn":
|
||||
if (!options.warnings) options.warnings = true;
|
||||
break;
|
||||
case "beautify":
|
||||
options.output = parse_js(read_value(), options.output);
|
||||
if (!("beautify" in options.output)) options.output.beautify = true;
|
||||
break;
|
||||
case "output-opts":
|
||||
options.output = parse_js(read_value(true), options.output);
|
||||
break;
|
||||
case "comments":
|
||||
if (typeof options.output != "object") options.output = {};
|
||||
options.output.comments = read_value();
|
||||
if (options.output.comments === true) options.output.comments = "some";
|
||||
break;
|
||||
case "define":
|
||||
if (typeof options.compress != "object") options.compress = {};
|
||||
options.compress.global_defs = parse_js(read_value(true), options.compress.global_defs, "define");
|
||||
break;
|
||||
case "mangle-props":
|
||||
if (typeof options.mangle != "object") options.mangle = {};
|
||||
options.mangle.properties = parse_js(read_value(), options.mangle.properties);
|
||||
break;
|
||||
case "name-cache":
|
||||
nameCache = read_value(true);
|
||||
options.nameCache = JSON.parse(read_file(nameCache, "{}"));
|
||||
break;
|
||||
case "output":
|
||||
output = read_value(true);
|
||||
break;
|
||||
case "parse":
|
||||
options.parse = parse_js(read_value(true), options.parse);
|
||||
break;
|
||||
case "rename":
|
||||
options.rename = true;
|
||||
break;
|
||||
case "no-rename":
|
||||
options.rename = false;
|
||||
break;
|
||||
case "in-situ":
|
||||
case "reduce-test":
|
||||
case "self":
|
||||
break;
|
||||
default:
|
||||
fatal("invalid option --" + name);
|
||||
}
|
||||
|
||||
function read_value(required) {
|
||||
if (no_value || !args.length || args[0][0] == "-") {
|
||||
if (required) fatal("missing option argument for --" + name);
|
||||
return true;
|
||||
}
|
||||
return args.shift();
|
||||
}
|
||||
}
|
||||
if (!output && options.sourceMap && options.sourceMap.url != "inline") fatal("cannot write source map to STDOUT");
|
||||
if (specified["beautify"] && specified["output-opts"]) fatal("--beautify cannot be used with --output-opts");
|
||||
[ "compress", "mangle" ].forEach(function(name) {
|
||||
if (!(name in options)) options[name] = false;
|
||||
});
|
||||
if (/^ast|spidermonkey$/.test(output)) {
|
||||
if (typeof options.output != "object") options.output = {};
|
||||
options.output.ast = true;
|
||||
options.output.code = false;
|
||||
}
|
||||
if (options.parse && (options.parse.acorn || options.parse.spidermonkey)
|
||||
&& options.sourceMap && options.sourceMap.content == "inline") {
|
||||
fatal("inline source map only works with built-in parser");
|
||||
}
|
||||
if (options.warnings) {
|
||||
UglifyJS.AST_Node.log_function(print_error, options.warnings == "verbose");
|
||||
delete options.warnings;
|
||||
}
|
||||
var convert_path = function(name) {
|
||||
return name;
|
||||
};
|
||||
if (typeof options.sourceMap == "object" && "base" in options.sourceMap) {
|
||||
convert_path = function() {
|
||||
var base = options.sourceMap.base;
|
||||
delete options.sourceMap.base;
|
||||
return function(name) {
|
||||
return path.relative(base, name);
|
||||
};
|
||||
}();
|
||||
}
|
||||
if (specified["self"]) {
|
||||
if (paths.length) UglifyJS.AST_Node.warn("Ignoring input files since --self was passed");
|
||||
if (!options.wrap) options.wrap = "UglifyJS";
|
||||
paths = UglifyJS.FILES;
|
||||
} else if (paths.length) {
|
||||
paths = simple_glob(paths);
|
||||
}
|
||||
if (specified["in-situ"]) {
|
||||
if (output && output != "spidermonkey" || specified["reduce-test"] || specified["self"]) {
|
||||
fatal("incompatible options specified");
|
||||
}
|
||||
paths.forEach(function(name) {
|
||||
print(name);
|
||||
if (/^ast|spidermonkey$/.test(name)) fatal("invalid file name specified");
|
||||
files = {};
|
||||
files[convert_path(name)] = read_file(name);
|
||||
output = name;
|
||||
run();
|
||||
});
|
||||
} else if (paths.length) {
|
||||
paths.forEach(function(name) {
|
||||
files[convert_path(name)] = read_file(name);
|
||||
});
|
||||
run();
|
||||
} else {
|
||||
var timerId = process.stdin.isTTY && process.argv.length < 3 && setTimeout(function() {
|
||||
print_error("Waiting for input... (use `--help` to print usage information)");
|
||||
}, 1500);
|
||||
var chunks = [];
|
||||
process.stdin.setEncoding("utf8");
|
||||
process.stdin.once("data", function() {
|
||||
clearTimeout(timerId);
|
||||
}).on("data", function(chunk) {
|
||||
chunks.push(chunk);
|
||||
}).on("end", function() {
|
||||
files = { STDIN: chunks.join("") };
|
||||
run();
|
||||
});
|
||||
process.stdin.resume();
|
||||
}
|
||||
|
||||
function convert_ast(fn) {
|
||||
return UglifyJS.AST_Node.from_mozilla_ast(Object.keys(files).reduce(fn, null));
|
||||
}
|
||||
|
||||
function run() {
|
||||
var content = options.sourceMap && options.sourceMap.content;
|
||||
if (content && content != "inline") {
|
||||
UglifyJS.AST_Node.info("Using input source map: {content}", {
|
||||
content : content,
|
||||
});
|
||||
options.sourceMap.content = read_file(content, content);
|
||||
}
|
||||
try {
|
||||
if (options.parse) {
|
||||
if (options.parse.acorn) {
|
||||
var annotations = Object.create(null);
|
||||
files = convert_ast(function(toplevel, name) {
|
||||
var content = files[name];
|
||||
var list = annotations[name] = [];
|
||||
var prev = -1;
|
||||
return require("acorn").parse(content, {
|
||||
allowHashBang: true,
|
||||
ecmaVersion: "latest",
|
||||
locations: true,
|
||||
onComment: function(block, text, start, end) {
|
||||
var match = /[@#]__PURE__/.exec(text);
|
||||
if (!match) {
|
||||
if (start != prev) return;
|
||||
match = [ list[prev] ];
|
||||
}
|
||||
while (/\s/.test(content[end])) end++;
|
||||
list[end] = match[0];
|
||||
prev = end;
|
||||
},
|
||||
preserveParens: true,
|
||||
program: toplevel,
|
||||
sourceFile: name,
|
||||
sourceType: "module",
|
||||
});
|
||||
});
|
||||
files.walk(new UglifyJS.TreeWalker(function(node) {
|
||||
if (!(node instanceof UglifyJS.AST_Call)) return;
|
||||
var list = annotations[node.start.file];
|
||||
var pure = list[node.start.pos];
|
||||
if (!pure) {
|
||||
var tokens = node.start.parens;
|
||||
if (tokens) for (var i = 0; !pure && i < tokens.length; i++) {
|
||||
pure = list[tokens[i].pos];
|
||||
}
|
||||
}
|
||||
if (pure) node.pure = pure;
|
||||
}));
|
||||
} else if (options.parse.spidermonkey) {
|
||||
files = convert_ast(function(toplevel, name) {
|
||||
var obj = JSON.parse(files[name]);
|
||||
if (!toplevel) return obj;
|
||||
toplevel.body = toplevel.body.concat(obj.body);
|
||||
return toplevel;
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
fatal(ex);
|
||||
}
|
||||
var result;
|
||||
if (specified["reduce-test"]) {
|
||||
// load on demand - assumes cloned repository
|
||||
var reduce_test = require("../test/reduce");
|
||||
if (Object.keys(files).length != 1) fatal("can only test on a single file");
|
||||
result = reduce_test(files[Object.keys(files)[0]], options, {
|
||||
log: print_error,
|
||||
verbose: true,
|
||||
});
|
||||
} else {
|
||||
result = UglifyJS.minify(files, options);
|
||||
}
|
||||
if (result.error) {
|
||||
var ex = result.error;
|
||||
if (ex.name == "SyntaxError") {
|
||||
print_error("Parse error at " + ex.filename + ":" + ex.line + "," + ex.col);
|
||||
var file = files[ex.filename];
|
||||
if (file) {
|
||||
var col = ex.col;
|
||||
var lines = file.split(/\r?\n/);
|
||||
var line = lines[ex.line - 1];
|
||||
if (!line && !col) {
|
||||
line = lines[ex.line - 2];
|
||||
col = line.length;
|
||||
}
|
||||
if (line) {
|
||||
var limit = 70;
|
||||
if (col > limit) {
|
||||
line = line.slice(col - limit);
|
||||
col = limit;
|
||||
}
|
||||
print_error(line.slice(0, 80));
|
||||
print_error(line.slice(0, col).replace(/\S/g, " ") + "^");
|
||||
}
|
||||
}
|
||||
} else if (ex.defs) {
|
||||
print_error("Supported options:");
|
||||
print_error(format_object(ex.defs));
|
||||
}
|
||||
fatal(ex);
|
||||
} else if (output == "ast") {
|
||||
if (!options.compress && !options.mangle) {
|
||||
var toplevel = result.ast;
|
||||
if (!(toplevel instanceof UglifyJS.AST_Toplevel)) {
|
||||
if (!(toplevel instanceof UglifyJS.AST_Statement)) toplevel = new UglifyJS.AST_SimpleStatement({
|
||||
body: toplevel,
|
||||
});
|
||||
toplevel = new UglifyJS.AST_Toplevel({
|
||||
body: [ toplevel ],
|
||||
});
|
||||
}
|
||||
toplevel.figure_out_scope({});
|
||||
}
|
||||
print(JSON.stringify(result.ast, function(key, value) {
|
||||
if (value) switch (key) {
|
||||
case "enclosed":
|
||||
return value.length ? value.map(symdef) : undefined;
|
||||
case "functions":
|
||||
case "globals":
|
||||
case "variables":
|
||||
return value.size() ? value.map(symdef) : undefined;
|
||||
case "thedef":
|
||||
return symdef(value);
|
||||
}
|
||||
if (skip_property(key, value)) return;
|
||||
if (value instanceof UglifyJS.AST_Token) return;
|
||||
if (value instanceof UglifyJS.Dictionary) return;
|
||||
if (value instanceof UglifyJS.AST_Node) {
|
||||
var result = {
|
||||
_class: "AST_" + value.TYPE
|
||||
};
|
||||
value.CTOR.PROPS.forEach(function(prop) {
|
||||
result[prop] = value[prop];
|
||||
});
|
||||
return result;
|
||||
}
|
||||
return value;
|
||||
}, 2));
|
||||
} else if (output == "spidermonkey") {
|
||||
print(JSON.stringify(result.ast.to_mozilla_ast(), null, 2));
|
||||
} else if (output) {
|
||||
var code;
|
||||
if (result.ast) {
|
||||
var opts = {};
|
||||
for (var name in options.output) {
|
||||
if (!/^ast|code$/.test(name)) opts[name] = options.output[name];
|
||||
}
|
||||
code = UglifyJS.AST_Node.from_mozilla_ast(result.ast.to_mozilla_ast()).print_to_string(opts);
|
||||
} else {
|
||||
code = result.code;
|
||||
}
|
||||
fs.writeFileSync(output, code);
|
||||
if (result.map) fs.writeFileSync(output + ".map", result.map);
|
||||
} else {
|
||||
print(result.code);
|
||||
}
|
||||
if (nameCache) fs.writeFileSync(nameCache, JSON.stringify(options.nameCache));
|
||||
if (result.timings) for (var phase in result.timings) {
|
||||
print_error("- " + phase + ": " + result.timings[phase].toFixed(3) + "s");
|
||||
}
|
||||
}
|
||||
|
||||
function fatal(message) {
|
||||
if (message instanceof Error) {
|
||||
message = message.stack.replace(/^\S*?Error:/, "ERROR:")
|
||||
} else {
|
||||
message = "ERROR: " + message;
|
||||
}
|
||||
print_error(message);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// A file glob function that only supports "*" and "?" wildcards in the basename.
|
||||
// Example: "foo/bar/*baz??.*.js"
|
||||
// Argument `paths` must be an array of strings.
|
||||
// Returns an array of strings. Garbage in, garbage out.
|
||||
function simple_glob(paths) {
|
||||
return paths.reduce(function(paths, glob) {
|
||||
if (/\*|\?/.test(glob)) {
|
||||
var dir = path.dirname(glob);
|
||||
try {
|
||||
var entries = fs.readdirSync(dir).filter(function(name) {
|
||||
try {
|
||||
return fs.statSync(path.join(dir, name)).isFile();
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
} catch (ex) {}
|
||||
if (entries) {
|
||||
var pattern = "^" + path.basename(glob)
|
||||
.replace(/[.+^$[\]\\(){}]/g, "\\$&")
|
||||
.replace(/\*/g, "[^/\\\\]*")
|
||||
.replace(/\?/g, "[^/\\\\]") + "$";
|
||||
var mod = process.platform === "win32" ? "i" : "";
|
||||
var rx = new RegExp(pattern, mod);
|
||||
var results = entries.filter(function(name) {
|
||||
return rx.test(name);
|
||||
}).sort().map(function(name) {
|
||||
return path.join(dir, name);
|
||||
});
|
||||
if (results.length) {
|
||||
[].push.apply(paths, results);
|
||||
return paths;
|
||||
}
|
||||
}
|
||||
}
|
||||
paths.push(glob);
|
||||
return paths;
|
||||
}, []);
|
||||
}
|
||||
|
||||
function read_file(path, default_value) {
|
||||
try {
|
||||
return fs.readFileSync(path, "utf8");
|
||||
} catch (ex) {
|
||||
if (ex.code == "ENOENT" && default_value != null) return default_value;
|
||||
fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
function parse_js(value, options, flag) {
|
||||
if (!options || typeof options != "object") options = Object.create(null);
|
||||
if (typeof value == "string") try {
|
||||
UglifyJS.parse(value, {
|
||||
expression: true
|
||||
}).walk(new UglifyJS.TreeWalker(function(node) {
|
||||
if (node instanceof UglifyJS.AST_Assign) {
|
||||
var name = node.left.print_to_string();
|
||||
var value = node.right;
|
||||
if (flag) {
|
||||
options[name] = value;
|
||||
} else if (value instanceof UglifyJS.AST_Array) {
|
||||
options[name] = value.elements.map(to_string);
|
||||
} else {
|
||||
options[name] = to_string(value);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (node instanceof UglifyJS.AST_Symbol || node instanceof UglifyJS.AST_PropAccess) {
|
||||
var name = node.print_to_string();
|
||||
options[name] = true;
|
||||
return true;
|
||||
}
|
||||
if (!(node instanceof UglifyJS.AST_Sequence)) throw node;
|
||||
|
||||
function to_string(value) {
|
||||
return value instanceof UglifyJS.AST_Constant ? value.value : value.print_to_string({
|
||||
quote_keys: true
|
||||
});
|
||||
}
|
||||
}));
|
||||
} catch (ex) {
|
||||
if (flag) {
|
||||
fatal("cannot parse arguments for '" + flag + "': " + value);
|
||||
} else {
|
||||
options[value] = null;
|
||||
}
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
function skip_property(key, value) {
|
||||
return skip_keys.indexOf(key) >= 0
|
||||
// only skip truthy_keys if their value is falsy
|
||||
|| truthy_keys.indexOf(key) >= 0 && !value;
|
||||
}
|
||||
|
||||
function symdef(def) {
|
||||
var ret = (1e6 + def.id) + " " + def.name;
|
||||
if (def.mangled_name) ret += " " + def.mangled_name;
|
||||
return ret;
|
||||
}
|
||||
|
||||
function format_object(obj) {
|
||||
var lines = [];
|
||||
var padding = "";
|
||||
Object.keys(obj).map(function(name) {
|
||||
if (padding.length < name.length) padding = Array(name.length + 1).join(" ");
|
||||
return [ name, JSON.stringify(obj[name]) ];
|
||||
}).forEach(function(tokens) {
|
||||
lines.push(" " + tokens[0] + padding.slice(tokens[0].length - 2) + tokens[1]);
|
||||
});
|
||||
return lines.join("\n");
|
||||
}
|
||||
|
||||
function print_error(msg) {
|
||||
process.stderr.write(msg);
|
||||
process.stderr.write("\n");
|
||||
}
|
||||
|
||||
function print(txt) {
|
||||
process.stdout.write(txt);
|
||||
process.stdout.write("\n");
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
var convert = require('./convert'),
|
||||
func = convert('next', require('../next'), require('./_falseOptions'));
|
||||
|
||||
func.placeholder = require('./placeholder');
|
||||
module.exports = func;
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
|
||||
export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();
|
||||
export function errorNotification(error) {
|
||||
return createNotification('E', undefined, error);
|
||||
}
|
||||
export function nextNotification(value) {
|
||||
return createNotification('N', value, undefined);
|
||||
}
|
||||
export function createNotification(kind, value, error) {
|
||||
return {
|
||||
kind,
|
||||
value,
|
||||
error,
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=NotificationFactories.js.map
|
||||
@@ -0,0 +1,46 @@
|
||||
/***
|
||||
* Node External Editor
|
||||
*
|
||||
* Kevin Gravier <kevin@mrkmg.com>
|
||||
* MIT 2019
|
||||
*/
|
||||
import { CreateFileError } from "./errors/CreateFileError";
|
||||
import { LaunchEditorError } from "./errors/LaunchEditorError";
|
||||
import { ReadFileError } from "./errors/ReadFileError";
|
||||
import { RemoveFileError } from "./errors/RemoveFileError";
|
||||
export interface IEditorParams {
|
||||
args: string[];
|
||||
bin: string;
|
||||
}
|
||||
export interface IFileOptions {
|
||||
prefix?: string;
|
||||
postfix?: string;
|
||||
mode?: number;
|
||||
template?: string;
|
||||
dir?: string;
|
||||
}
|
||||
export declare type StringCallback = (err: Error, result: string) => void;
|
||||
export declare type VoidCallback = () => void;
|
||||
export { CreateFileError, LaunchEditorError, ReadFileError, RemoveFileError };
|
||||
export declare function edit(text?: string, fileOptions?: IFileOptions): string;
|
||||
export declare function editAsync(text: string, callback: StringCallback, fileOptions?: IFileOptions): void;
|
||||
export declare class ExternalEditor {
|
||||
private static splitStringBySpace;
|
||||
text: string;
|
||||
tempFile: string;
|
||||
editor: IEditorParams;
|
||||
lastExitStatus: number;
|
||||
private fileOptions;
|
||||
readonly temp_file: string;
|
||||
readonly last_exit_status: number;
|
||||
constructor(text?: string, fileOptions?: IFileOptions);
|
||||
run(): string;
|
||||
runAsync(callback: StringCallback): void;
|
||||
cleanup(): void;
|
||||
private determineEditor;
|
||||
private createTemporaryFile;
|
||||
private readTemporaryFile;
|
||||
private removeTemporaryFile;
|
||||
private launchEditor;
|
||||
private launchEditorAsync;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $TypeError = GetIntrinsic('%TypeError%');
|
||||
|
||||
var Type = require('../Type');
|
||||
|
||||
// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-multiply
|
||||
|
||||
module.exports = function BigIntMultiply(x, y) {
|
||||
if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
|
||||
throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
|
||||
}
|
||||
|
||||
// shortcut for the actual spec mechanics
|
||||
return x * y;
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
name: Automatic Rebase
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
_:
|
||||
name: "Automatic Rebase"
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: ljharb/rebase@master
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -0,0 +1,143 @@
|
||||
import { EOL } from 'node:os';
|
||||
import test from 'ava';
|
||||
import mockStdIo from 'mock-stdio';
|
||||
import stripAnsi from 'strip-ansi';
|
||||
import Log from '../lib/log.js';
|
||||
|
||||
test('should write to stdout', t => {
|
||||
const log = new Log();
|
||||
mockStdIo.start();
|
||||
log.log('foo');
|
||||
const { stdout, stderr } = mockStdIo.end();
|
||||
t.is(stdout, 'foo\n');
|
||||
t.is(stderr, '');
|
||||
});
|
||||
|
||||
test('should write to stderr', t => {
|
||||
const log = new Log();
|
||||
mockStdIo.start();
|
||||
log.error('foo');
|
||||
const { stdout, stderr } = mockStdIo.end();
|
||||
t.is(stdout, '');
|
||||
t.is(stripAnsi(stderr), 'ERROR foo\n');
|
||||
});
|
||||
|
||||
test('should print a warning', t => {
|
||||
const log = new Log();
|
||||
mockStdIo.start();
|
||||
log.warn('foo');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stripAnsi(stdout), 'WARNING foo\n');
|
||||
});
|
||||
|
||||
test('should print verbose', t => {
|
||||
const log = new Log({ isVerbose: true, verbosityLevel: 2 });
|
||||
mockStdIo.start();
|
||||
log.verbose('foo');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, 'foo\n');
|
||||
});
|
||||
|
||||
test('should print external scripts verbose', t => {
|
||||
const log = new Log({ isVerbose: true });
|
||||
mockStdIo.start();
|
||||
log.verbose('foo', { isExternal: true });
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, 'foo\n');
|
||||
});
|
||||
|
||||
test('should always print external scripts verbose', t => {
|
||||
const log = new Log({ isVerbose: true, verbosityLevel: 2 });
|
||||
mockStdIo.start();
|
||||
log.verbose('foo', { isExternal: true });
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, 'foo\n');
|
||||
});
|
||||
|
||||
test('should not print verbose by default', t => {
|
||||
const log = new Log();
|
||||
mockStdIo.start();
|
||||
log.verbose('foo');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, '');
|
||||
});
|
||||
|
||||
test('should not print command execution by default', t => {
|
||||
const log = new Log();
|
||||
mockStdIo.start();
|
||||
log.exec('foo');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout.trim(), '');
|
||||
});
|
||||
|
||||
test('should print command execution (verbose)', t => {
|
||||
const log = new Log({ isVerbose: true, verbosityLevel: 2 });
|
||||
mockStdIo.start();
|
||||
log.exec('foo');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout.trim(), '$ foo');
|
||||
});
|
||||
|
||||
test('should print command execution (verbose/dry run)', t => {
|
||||
const log = new Log({ isVerbose: true });
|
||||
mockStdIo.start();
|
||||
log.exec('foo', { isDryRun: true, isExternal: true });
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout.trim(), '! foo');
|
||||
});
|
||||
|
||||
test('should print command execution (verbose/external)', t => {
|
||||
const log = new Log({ isVerbose: true });
|
||||
mockStdIo.start();
|
||||
log.exec('foo', { isExternal: true });
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout.trim(), '$ foo');
|
||||
});
|
||||
|
||||
test('should print command execution (dry run)', t => {
|
||||
const log = new Log({ isDryRun: true });
|
||||
mockStdIo.start();
|
||||
log.exec('foo');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, '$ foo\n');
|
||||
});
|
||||
|
||||
test('should print command execution (read-only)', t => {
|
||||
const log = new Log({ isDryRun: true });
|
||||
mockStdIo.start();
|
||||
log.exec('foo', 'bar', false);
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, '$ foo bar\n');
|
||||
});
|
||||
|
||||
test('should print command execution (write)', t => {
|
||||
const log = new Log({ isDryRun: true });
|
||||
mockStdIo.start();
|
||||
log.exec('foo', '--arg n', { isDryRun: true });
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, '! foo --arg n\n');
|
||||
});
|
||||
|
||||
test('should print obtrusive', t => {
|
||||
const log = new Log({ isCI: false });
|
||||
mockStdIo.start();
|
||||
log.obtrusive('spacious');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, '\nspacious\n\n');
|
||||
});
|
||||
|
||||
test('should not print obtrusive in CI mode', t => {
|
||||
const log = new Log({ isCI: true });
|
||||
mockStdIo.start();
|
||||
log.obtrusive('normal');
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stdout, 'normal\n');
|
||||
});
|
||||
|
||||
test('should print preview', t => {
|
||||
const log = new Log();
|
||||
mockStdIo.start();
|
||||
log.preview({ title: 'title', text: 'changelog' });
|
||||
const { stdout } = mockStdIo.end();
|
||||
t.is(stripAnsi(stdout), `Title:${EOL}changelog\n`);
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,16 @@
|
||||
import assertString from './util/assertString';
|
||||
var defaultOptions = {
|
||||
loose: false
|
||||
};
|
||||
var strictBooleans = ['true', 'false', '1', '0'];
|
||||
var looseBooleans = [].concat(strictBooleans, ['yes', 'no']);
|
||||
export default function isBoolean(str) {
|
||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;
|
||||
assertString(str);
|
||||
|
||||
if (options.loose) {
|
||||
return looseBooleans.includes(str.toLowerCase());
|
||||
}
|
||||
|
||||
return strictBooleans.includes(str);
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
import type {KeysOfUnion, ArrayElement, ObjectValue} from './internal';
|
||||
import type {Opaque} from './opaque';
|
||||
import type {IsEqual} from './is-equal';
|
||||
|
||||
/**
|
||||
Create a type from `ParameterType` and `InputType` and change keys exclusive to `InputType` to `never`.
|
||||
- Generate a list of keys that exists in `InputType` but not in `ParameterType`.
|
||||
- Mark these excess keys as `never`.
|
||||
*/
|
||||
type ExactObject<ParameterType, InputType> = {[Key in keyof ParameterType]: Exact<ParameterType[Key], ObjectValue<InputType, Key>>}
|
||||
& Record<Exclude<keyof InputType, KeysOfUnion<ParameterType>>, never>;
|
||||
|
||||
/**
|
||||
Create a type that does not allow extra properties, meaning it only allows properties that are explicitly declared.
|
||||
|
||||
This is useful for function type-guarding to reject arguments with excess properties. Due to the nature of TypeScript, it does not complain if excess properties are provided unless the provided value is an object literal.
|
||||
|
||||
*Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/12936) if you want to have this type as a built-in in TypeScript.*
|
||||
|
||||
@example
|
||||
```
|
||||
type OnlyAcceptName = {name: string};
|
||||
|
||||
function onlyAcceptName(arguments_: OnlyAcceptName) {}
|
||||
|
||||
// TypeScript complains about excess properties when an object literal is provided.
|
||||
onlyAcceptName({name: 'name', id: 1});
|
||||
//=> `id` is excess
|
||||
|
||||
// TypeScript does not complain about excess properties when the provided value is a variable (not an object literal).
|
||||
const invalidInput = {name: 'name', id: 1};
|
||||
onlyAcceptName(invalidInput); // No errors
|
||||
```
|
||||
|
||||
Having `Exact` allows TypeScript to reject excess properties.
|
||||
|
||||
@example
|
||||
```
|
||||
import {Exact} from 'type-fest';
|
||||
|
||||
type OnlyAcceptName = {name: string};
|
||||
|
||||
function onlyAcceptNameImproved<T extends Exact<OnlyAcceptName, T>>(arguments_: T) {}
|
||||
|
||||
const invalidInput = {name: 'name', id: 1};
|
||||
onlyAcceptNameImproved(invalidInput); // Compilation error
|
||||
```
|
||||
|
||||
[Read more](https://stackoverflow.com/questions/49580725/is-it-possible-to-restrict-typescript-object-to-contain-only-properties-defined)
|
||||
|
||||
@category Utilities
|
||||
*/
|
||||
export type Exact<ParameterType, InputType> =
|
||||
IsEqual<ParameterType, InputType> extends true ? ParameterType
|
||||
// Convert union of array to array of union: A[] & B[] => (A & B)[]
|
||||
: ParameterType extends unknown[] ? Array<Exact<ArrayElement<ParameterType>, ArrayElement<InputType>>>
|
||||
// In TypeScript, Array is a subtype of ReadonlyArray, so always test Array before ReadonlyArray.
|
||||
: ParameterType extends readonly unknown[] ? ReadonlyArray<Exact<ArrayElement<ParameterType>, ArrayElement<InputType>>>
|
||||
// For Opaque types, internal details are hidden from public, so let's leave it as is.
|
||||
: ParameterType extends Opaque<infer OpaqueType, infer OpaqueToken> ? ParameterType
|
||||
: ParameterType extends object ? ExactObject<ParameterType, InputType>
|
||||
: ParameterType;
|
||||
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var toLowerCase = String.prototype.toLowerCase;
|
||||
|
||||
module.exports = function (other) {
|
||||
return toLowerCase.call(this).localeCompare(toLowerCase.call(String(other)));
|
||||
};
|
||||
@@ -0,0 +1,60 @@
|
||||
declare module 'Fraction';
|
||||
|
||||
export interface NumeratorDenominator {
|
||||
n: number;
|
||||
d: number;
|
||||
}
|
||||
|
||||
type FractionConstructor = {
|
||||
(fraction: Fraction): Fraction;
|
||||
(num: number | string): Fraction;
|
||||
(numerator: number, denominator: number): Fraction;
|
||||
(numbers: [number | string, number | string]): Fraction;
|
||||
(fraction: NumeratorDenominator): Fraction;
|
||||
(firstValue: Fraction | number | string | [number | string, number | string] | NumeratorDenominator, secondValue?: number): Fraction;
|
||||
};
|
||||
|
||||
export default class Fraction {
|
||||
constructor (fraction: Fraction);
|
||||
constructor (num: number | string);
|
||||
constructor (numerator: number, denominator: number);
|
||||
constructor (numbers: [number | string, number | string]);
|
||||
constructor (fraction: NumeratorDenominator);
|
||||
constructor (firstValue: Fraction | number | string | [number | string, number | string] | NumeratorDenominator, secondValue?: number);
|
||||
|
||||
s: number;
|
||||
n: number;
|
||||
d: number;
|
||||
|
||||
abs(): Fraction;
|
||||
neg(): Fraction;
|
||||
|
||||
add: FractionConstructor;
|
||||
sub: FractionConstructor;
|
||||
mul: FractionConstructor;
|
||||
div: FractionConstructor;
|
||||
pow: FractionConstructor;
|
||||
gcd: FractionConstructor;
|
||||
lcm: FractionConstructor;
|
||||
|
||||
mod(n?: number | string | Fraction): Fraction;
|
||||
|
||||
ceil(places?: number): Fraction;
|
||||
floor(places?: number): Fraction;
|
||||
round(places?: number): Fraction;
|
||||
|
||||
inverse(): Fraction;
|
||||
|
||||
simplify(eps?: number): Fraction;
|
||||
|
||||
equals(n: number | string | Fraction): boolean;
|
||||
compare(n: number | string | Fraction): number;
|
||||
divisible(n: number | string | Fraction): boolean;
|
||||
|
||||
valueOf(): number;
|
||||
toString(decimalPlaces?: number): string;
|
||||
toLatex(excludeWhole?: boolean): string;
|
||||
toFraction(excludeWhole?: boolean): string;
|
||||
toContinued(): number[];
|
||||
clone(): Fraction;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"GetNumberOption.d.ts","sourceRoot":"","sources":["../../../../../../packages/ecma402-abstract/GetNumberOption.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EACjE,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,MAAM,CAAA"}
|
||||
@@ -0,0 +1,27 @@
|
||||
# Integer Number
|
||||
|
||||
Integer _number_ primitive
|
||||
|
||||
## `integer/coerce`
|
||||
|
||||
Follows [`finite/coerce`](finite.md#finitecoerce) additionally stripping decimal part from the number
|
||||
|
||||
```javascript
|
||||
const coerceToInteger = require("type/integer/coerce");
|
||||
|
||||
coerceToInteger("12.95"); // 12
|
||||
coerceToInteger(Infinity); // null
|
||||
coerceToInteger(null); // null
|
||||
```
|
||||
|
||||
## `integer/ensure`
|
||||
|
||||
If given argument is an integer coercible value (via [`integer/coerce`](#integercoerce)) returns result number.
|
||||
Otherwise `TypeError` is thrown.
|
||||
|
||||
```javascript
|
||||
const ensureInteger = require("type/integer/ensure");
|
||||
|
||||
ensureInteger(12.93); // "12"
|
||||
ensureInteger(null); // Thrown TypeError: null is not an integer
|
||||
```
|
||||
@@ -0,0 +1,203 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = isEmail;
|
||||
|
||||
var _assertString = _interopRequireDefault(require("./util/assertString"));
|
||||
|
||||
var _merge = _interopRequireDefault(require("./util/merge"));
|
||||
|
||||
var _isByteLength = _interopRequireDefault(require("./isByteLength"));
|
||||
|
||||
var _isFQDN = _interopRequireDefault(require("./isFQDN"));
|
||||
|
||||
var _isIP = _interopRequireDefault(require("./isIP"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var default_email_options = {
|
||||
allow_display_name: false,
|
||||
require_display_name: false,
|
||||
allow_utf8_local_part: true,
|
||||
require_tld: true,
|
||||
blacklisted_chars: '',
|
||||
ignore_max_length: false,
|
||||
host_blacklist: [],
|
||||
host_whitelist: []
|
||||
};
|
||||
/* eslint-disable max-len */
|
||||
|
||||
/* eslint-disable no-control-regex */
|
||||
|
||||
var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)</i;
|
||||
var emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i;
|
||||
var gmailUserPart = /^[a-z\d]+$/;
|
||||
var quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i;
|
||||
var emailUserUtf8Part = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i;
|
||||
var quotedEmailUserUtf8 = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;
|
||||
var defaultMaxEmailLength = 254;
|
||||
/* eslint-enable max-len */
|
||||
|
||||
/* eslint-enable no-control-regex */
|
||||
|
||||
/**
|
||||
* Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2
|
||||
* @param {String} display_name
|
||||
*/
|
||||
|
||||
function validateDisplayName(display_name) {
|
||||
var display_name_without_quotes = display_name.replace(/^"(.+)"$/, '$1'); // display name with only spaces is not valid
|
||||
|
||||
if (!display_name_without_quotes.trim()) {
|
||||
return false;
|
||||
} // check whether display name contains illegal character
|
||||
|
||||
|
||||
var contains_illegal = /[\.";<>]/.test(display_name_without_quotes);
|
||||
|
||||
if (contains_illegal) {
|
||||
// if contains illegal characters,
|
||||
// must to be enclosed in double-quotes, otherwise it's not a valid display name
|
||||
if (display_name_without_quotes === display_name) {
|
||||
return false;
|
||||
} // the quotes in display name must start with character symbol \
|
||||
|
||||
|
||||
var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length;
|
||||
|
||||
if (!all_start_with_back_slash) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function isEmail(str, options) {
|
||||
(0, _assertString.default)(str);
|
||||
options = (0, _merge.default)(options, default_email_options);
|
||||
|
||||
if (options.require_display_name || options.allow_display_name) {
|
||||
var display_email = str.match(splitNameAddress);
|
||||
|
||||
if (display_email) {
|
||||
var display_name = display_email[1]; // Remove display name and angle brackets to get email address
|
||||
// Can be done in the regex but will introduce a ReDOS (See #1597 for more info)
|
||||
|
||||
str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name
|
||||
// because there may be a space between display name and email address
|
||||
// eg. myname <address@gmail.com>
|
||||
// the display name is `myname` instead of `myname `, so need to trim the last space
|
||||
|
||||
if (display_name.endsWith(' ')) {
|
||||
display_name = display_name.slice(0, -1);
|
||||
}
|
||||
|
||||
if (!validateDisplayName(display_name)) {
|
||||
return false;
|
||||
}
|
||||
} else if (options.require_display_name) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var parts = str.split('@');
|
||||
var domain = parts.pop();
|
||||
var lower_domain = domain.toLowerCase();
|
||||
|
||||
if (options.host_blacklist.includes(lower_domain)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (options.host_whitelist.length > 0 && !options.host_whitelist.includes(lower_domain)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var user = parts.join('@');
|
||||
|
||||
if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {
|
||||
/*
|
||||
Previously we removed dots for gmail addresses before validating.
|
||||
This was removed because it allows `multiple..dots@gmail.com`
|
||||
to be reported as valid, but it is not.
|
||||
Gmail only normalizes single dots, removing them from here is pointless,
|
||||
should be done in normalizeEmail
|
||||
*/
|
||||
user = user.toLowerCase(); // Removing sub-address from username before gmail validation
|
||||
|
||||
var username = user.split('+')[0]; // Dots are not included in gmail length restriction
|
||||
|
||||
if (!(0, _isByteLength.default)(username.replace(/\./g, ''), {
|
||||
min: 6,
|
||||
max: 30
|
||||
})) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var _user_parts = username.split('.');
|
||||
|
||||
for (var i = 0; i < _user_parts.length; i++) {
|
||||
if (!gmailUserPart.test(_user_parts[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {
|
||||
max: 64
|
||||
}) || !(0, _isByteLength.default)(domain, {
|
||||
max: 254
|
||||
}))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(0, _isFQDN.default)(domain, {
|
||||
require_tld: options.require_tld,
|
||||
ignore_max_length: options.ignore_max_length
|
||||
})) {
|
||||
if (!options.allow_ip_domain) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(0, _isIP.default)(domain)) {
|
||||
if (!domain.startsWith('[') || !domain.endsWith(']')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var noBracketdomain = domain.slice(1, -1);
|
||||
|
||||
if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (user[0] === '"') {
|
||||
user = user.slice(1, user.length - 1);
|
||||
return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);
|
||||
}
|
||||
|
||||
var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;
|
||||
var user_parts = user.split('.');
|
||||
|
||||
for (var _i = 0; _i < user_parts.length; _i++) {
|
||||
if (!pattern.test(user_parts[_i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.blacklisted_chars) {
|
||||
if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
module.exports = exports.default;
|
||||
module.exports.default = exports.default;
|
||||
@@ -0,0 +1,12 @@
|
||||
"use strict";
|
||||
|
||||
var sign = require("../math/sign")
|
||||
, abs = Math.abs
|
||||
, floor = Math.floor;
|
||||
|
||||
module.exports = function (value) {
|
||||
if (isNaN(value)) return 0;
|
||||
value = Number(value);
|
||||
if (value === 0 || !isFinite(value)) return value;
|
||||
return sign(value) * floor(abs(value));
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
export const ELEMENT_NODE = 1;
|
||||
export const DOCUMENT_NODE = 9;
|
||||
export const DOCUMENT_FRAGMENT_NODE = 11;
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"wcwidth","version":"1.0.1","files":{".npmignore":{"checkedAt":1678883669486,"integrity":"sha512-jWCdZNTj97kubLBHssQWkC9Z9ntxbPwbAw/0p0X3jiy2XKq4+jjTnPKOOZf+NczCTC5rHALeejnoIUZ73ucFYQ==","mode":420,"size":13},"LICENSE":{"checkedAt":1678883671304,"integrity":"sha512-tkbxIUxTMr89l0XIyZZn5XKH1aYIr4wa+PaoHsZ/WDzVNFTw+6NZ8cC2SIj+H6TuysW/m2h/hOYMr9WkVi4dsg==","mode":420,"size":1581},"package.json":{"checkedAt":1678883671304,"integrity":"sha512-ZkKuzuUA6D7ESfmfA6GQMVjNHVr3WCAn5ezjQ/DgLC93v3tRPlR/SaOn4r9PTYJ/qQngodktWyuDpJztJqOwdg==","mode":420,"size":852},"combining.js":{"checkedAt":1678883671304,"integrity":"sha512-ZYh+FouNKwspUYssCF61WZjKBcIL2Ha3WvgJ4QlAzEj/se0xNgCh5Nn/7U35IYqPCi7CqjivOWvXrk255zsLjg==","mode":420,"size":3078},"index.js":{"checkedAt":1678883671304,"integrity":"sha512-GdNHLuij85VzbsLxNvOO0GFxlJOIfTLudzPuNl9fkLqUhAJYcCAjY1lfwQQGf4BsDBLpGhSUC2CnA2irfzu4BQ==","mode":420,"size":3141},"Readme.md":{"checkedAt":1678883671304,"integrity":"sha512-A145oTmLKqDoouTgYYI1nhXKoQYne17OZH6BDWUktMZQTSj+ocxY45sK0+cTn0IGTW0ZyCmmrrfJ3w8MT1Avkw==","mode":420,"size":887},"docs/index.md":{"checkedAt":1678883671305,"integrity":"sha512-3tTukD2Sof05dbOyb8y1RDzK8sTCj5fizItQcwgJzDVm1eXGdIsCId2wQsWipYSGnDLuz0hoGq4aFClMjzxoPQ==","mode":420,"size":3218},"test/index.js":{"checkedAt":1678883671305,"integrity":"sha512-mL43dqIzjBa/27z5anfTM0YfcE0ugAXkJSQgSIMHD+HWRhJKrsV+96pDScF8nv7ito0EF71u19cHHEllmrNm5g==","mode":420,"size":1471}}}
|
||||
@@ -0,0 +1,100 @@
|
||||
'use strict'
|
||||
|
||||
let pico = require('picocolors')
|
||||
|
||||
let terminalHighlight = require('./terminal-highlight')
|
||||
|
||||
class CssSyntaxError extends Error {
|
||||
constructor(message, line, column, source, file, plugin) {
|
||||
super(message)
|
||||
this.name = 'CssSyntaxError'
|
||||
this.reason = message
|
||||
|
||||
if (file) {
|
||||
this.file = file
|
||||
}
|
||||
if (source) {
|
||||
this.source = source
|
||||
}
|
||||
if (plugin) {
|
||||
this.plugin = plugin
|
||||
}
|
||||
if (typeof line !== 'undefined' && typeof column !== 'undefined') {
|
||||
if (typeof line === 'number') {
|
||||
this.line = line
|
||||
this.column = column
|
||||
} else {
|
||||
this.line = line.line
|
||||
this.column = line.column
|
||||
this.endLine = column.line
|
||||
this.endColumn = column.column
|
||||
}
|
||||
}
|
||||
|
||||
this.setMessage()
|
||||
|
||||
if (Error.captureStackTrace) {
|
||||
Error.captureStackTrace(this, CssSyntaxError)
|
||||
}
|
||||
}
|
||||
|
||||
setMessage() {
|
||||
this.message = this.plugin ? this.plugin + ': ' : ''
|
||||
this.message += this.file ? this.file : '<css input>'
|
||||
if (typeof this.line !== 'undefined') {
|
||||
this.message += ':' + this.line + ':' + this.column
|
||||
}
|
||||
this.message += ': ' + this.reason
|
||||
}
|
||||
|
||||
showSourceCode(color) {
|
||||
if (!this.source) return ''
|
||||
|
||||
let css = this.source
|
||||
if (color == null) color = pico.isColorSupported
|
||||
if (terminalHighlight) {
|
||||
if (color) css = terminalHighlight(css)
|
||||
}
|
||||
|
||||
let lines = css.split(/\r?\n/)
|
||||
let start = Math.max(this.line - 3, 0)
|
||||
let end = Math.min(this.line + 2, lines.length)
|
||||
|
||||
let maxWidth = String(end).length
|
||||
|
||||
let mark, aside
|
||||
if (color) {
|
||||
let { bold, red, gray } = pico.createColors(true)
|
||||
mark = text => bold(red(text))
|
||||
aside = text => gray(text)
|
||||
} else {
|
||||
mark = aside = str => str
|
||||
}
|
||||
|
||||
return lines
|
||||
.slice(start, end)
|
||||
.map((line, index) => {
|
||||
let number = start + 1 + index
|
||||
let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '
|
||||
if (number === this.line) {
|
||||
let spacing =
|
||||
aside(gutter.replace(/\d/g, ' ')) +
|
||||
line.slice(0, this.column - 1).replace(/[^\t]/g, ' ')
|
||||
return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^')
|
||||
}
|
||||
return ' ' + aside(gutter) + line
|
||||
})
|
||||
.join('\n')
|
||||
}
|
||||
|
||||
toString() {
|
||||
let code = this.showSourceCode()
|
||||
if (code) {
|
||||
code = '\n\n' + code + '\n'
|
||||
}
|
||||
return this.name + ': ' + this.message + code
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = CssSyntaxError
|
||||
CssSyntaxError.default = CssSyntaxError
|
||||
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"name": "bl",
|
||||
"version": "5.1.0",
|
||||
"description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!",
|
||||
"license": "MIT",
|
||||
"main": "bl.js",
|
||||
"scripts": {
|
||||
"lint": "standard *.js test/*.js",
|
||||
"test": "npm run lint && npm run test:types && node test/test.js | faucet",
|
||||
"test:ci": "npm run lint && node test/test.js && npm run test:types",
|
||||
"test:types": "tsc --allowJs --noEmit test/test.js",
|
||||
"build": "true"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/rvagg/bl.git"
|
||||
},
|
||||
"homepage": "https://github.com/rvagg/bl",
|
||||
"authors": [
|
||||
"Rod Vagg <rod@vagg.org> (https://github.com/rvagg)",
|
||||
"Matteo Collina <matteo.collina@gmail.com> (https://github.com/mcollina)",
|
||||
"Jarett Cruger <jcrugzz@gmail.com> (https://github.com/jcrugzz)"
|
||||
],
|
||||
"keywords": [
|
||||
"buffer",
|
||||
"buffers",
|
||||
"stream",
|
||||
"awesomesauce"
|
||||
],
|
||||
"dependencies": {
|
||||
"buffer": "^6.0.3",
|
||||
"inherits": "^2.0.4",
|
||||
"readable-stream": "^3.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/readable-stream": "^2.3.13",
|
||||
"faucet": "~0.0.1",
|
||||
"standard": "^17.0.0",
|
||||
"tape": "^5.2.2",
|
||||
"typescript": "~4.7.3"
|
||||
},
|
||||
"release": {
|
||||
"branches": [
|
||||
"master"
|
||||
],
|
||||
"plugins": [
|
||||
[
|
||||
"@semantic-release/commit-analyzer",
|
||||
{
|
||||
"preset": "conventionalcommits",
|
||||
"releaseRules": [
|
||||
{
|
||||
"breaking": true,
|
||||
"release": "major"
|
||||
},
|
||||
{
|
||||
"revert": true,
|
||||
"release": "patch"
|
||||
},
|
||||
{
|
||||
"type": "feat",
|
||||
"release": "minor"
|
||||
},
|
||||
{
|
||||
"type": "fix",
|
||||
"release": "patch"
|
||||
},
|
||||
{
|
||||
"type": "chore",
|
||||
"release": "patch"
|
||||
},
|
||||
{
|
||||
"type": "docs",
|
||||
"release": "patch"
|
||||
},
|
||||
{
|
||||
"type": "test",
|
||||
"release": "patch"
|
||||
},
|
||||
{
|
||||
"scope": "no-release",
|
||||
"release": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"@semantic-release/release-notes-generator",
|
||||
{
|
||||
"preset": "conventionalcommits",
|
||||
"presetConfig": {
|
||||
"types": [
|
||||
{
|
||||
"type": "feat",
|
||||
"section": "Features"
|
||||
},
|
||||
{
|
||||
"type": "fix",
|
||||
"section": "Bug Fixes"
|
||||
},
|
||||
{
|
||||
"type": "chore",
|
||||
"section": "Trivial Changes"
|
||||
},
|
||||
{
|
||||
"type": "docs",
|
||||
"section": "Trivial Changes"
|
||||
},
|
||||
{
|
||||
"type": "test",
|
||||
"section": "Tests"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"@semantic-release/changelog",
|
||||
"@semantic-release/npm",
|
||||
"@semantic-release/github",
|
||||
"@semantic-release/git"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
import type {Primitive} from './primitive';
|
||||
|
||||
/**
|
||||
Returns a boolean for whether the two given types are equal.
|
||||
|
||||
@link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
|
||||
@link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
|
||||
*/
|
||||
export type IsEqual<T, U> =
|
||||
(<G>() => G extends T ? 1 : 2) extends
|
||||
(<G>() => G extends U ? 1 : 2)
|
||||
? true
|
||||
: false;
|
||||
|
||||
/**
|
||||
Infer the length of the given array `<T>`.
|
||||
|
||||
@link https://itnext.io/implementing-arithmetic-within-typescripts-type-system-a1ef140a6f6f
|
||||
*/
|
||||
type TupleLength<T extends readonly unknown[]> = T extends {readonly length: infer L} ? L : never;
|
||||
|
||||
/**
|
||||
Create a tuple type of the given length `<L>`.
|
||||
|
||||
@link https://itnext.io/implementing-arithmetic-within-typescripts-type-system-a1ef140a6f6f
|
||||
*/
|
||||
type BuildTuple<L extends number, T extends readonly unknown[] = []> = T extends {readonly length: L}
|
||||
? T
|
||||
: BuildTuple<L, [...T, unknown]>;
|
||||
|
||||
/**
|
||||
Create a tuple of length `A` and a tuple composed of two other tuples,
|
||||
the inferred tuple `U` and a tuple of length `B`, then extracts the length of tuple `U`.
|
||||
|
||||
@link https://itnext.io/implementing-arithmetic-within-typescripts-type-system-a1ef140a6f6f
|
||||
*/
|
||||
export type Subtract<A extends number, B extends number> = BuildTuple<A> extends [...(infer U), ...BuildTuple<B>]
|
||||
? TupleLength<U>
|
||||
: never;
|
||||
|
||||
/**
|
||||
Matches any primitive, `Date`, or `RegExp` value.
|
||||
*/
|
||||
export type BuiltIns = Primitive | Date | RegExp;
|
||||
|
||||
/**
|
||||
Gets keys from a type. Similar to `keyof` but this one also works for union types.
|
||||
|
||||
The reason a simple `keyof Union` does not work is because `keyof` always returns the accessible keys of a type. In the case of a union, that will only be the common keys.
|
||||
|
||||
@link https://stackoverflow.com/a/49402091
|
||||
*/
|
||||
export type KeysOfUnion<T> = T extends T ? keyof T : never;
|
||||
|
||||
export type UpperCaseCharacters = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z';
|
||||
|
||||
export type WordSeparators = '-' | '_' | ' ';
|
||||
|
||||
export type StringDigit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
||||
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Build RegExp object from an array
|
||||
* of multiple/multi-line regexp parts
|
||||
*
|
||||
* @param {string[]} parts
|
||||
* @param {string} flags
|
||||
* @return {object} - RegExp object
|
||||
*/
|
||||
export default function multilineRegexp(parts, flags) {
|
||||
var regexpAsStringLiteral = parts.join('');
|
||||
return new RegExp(regexpAsStringLiteral, flags);
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = 2147483647;
|
||||
@@ -0,0 +1,20 @@
|
||||
import { ToObject } from './262';
|
||||
import { GetOption } from './GetOption';
|
||||
import { LookupSupportedLocales } from '@formatjs/intl-localematcher';
|
||||
/**
|
||||
* https://tc39.es/ecma402/#sec-supportedlocales
|
||||
* @param availableLocales
|
||||
* @param requestedLocales
|
||||
* @param options
|
||||
*/
|
||||
export function SupportedLocales(availableLocales, requestedLocales, options) {
|
||||
var matcher = 'best fit';
|
||||
if (options !== undefined) {
|
||||
options = ToObject(options);
|
||||
matcher = GetOption(options, 'localeMatcher', 'string', ['lookup', 'best fit'], 'best fit');
|
||||
}
|
||||
if (matcher === 'best fit') {
|
||||
return LookupSupportedLocales(availableLocales, requestedLocales);
|
||||
}
|
||||
return LookupSupportedLocales(availableLocales, requestedLocales);
|
||||
}
|
||||
@@ -0,0 +1,434 @@
|
||||
import { checkPropTypes } from './check-props';
|
||||
import { options, Component } from 'preact';
|
||||
import {
|
||||
ELEMENT_NODE,
|
||||
DOCUMENT_NODE,
|
||||
DOCUMENT_FRAGMENT_NODE
|
||||
} from './constants';
|
||||
import {
|
||||
getOwnerStack,
|
||||
setupComponentStack,
|
||||
getCurrentVNode,
|
||||
getDisplayName
|
||||
} from './component-stack';
|
||||
import { assign } from './util';
|
||||
|
||||
const isWeakMapSupported = typeof WeakMap == 'function';
|
||||
|
||||
function getClosestDomNodeParent(parent) {
|
||||
if (!parent) return {};
|
||||
if (typeof parent.type == 'function') {
|
||||
return getClosestDomNodeParent(parent._parent);
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
|
||||
export function initDebug() {
|
||||
setupComponentStack();
|
||||
|
||||
let hooksAllowed = false;
|
||||
|
||||
/* eslint-disable no-console */
|
||||
let oldBeforeDiff = options._diff;
|
||||
let oldDiffed = options.diffed;
|
||||
let oldVnode = options.vnode;
|
||||
let oldCatchError = options._catchError;
|
||||
let oldRoot = options._root;
|
||||
let oldHook = options._hook;
|
||||
const warnedComponents = !isWeakMapSupported
|
||||
? null
|
||||
: {
|
||||
useEffect: new WeakMap(),
|
||||
useLayoutEffect: new WeakMap(),
|
||||
lazyPropTypes: new WeakMap()
|
||||
};
|
||||
const deprecations = [];
|
||||
|
||||
options._catchError = (error, vnode, oldVNode, errorInfo) => {
|
||||
let component = vnode && vnode._component;
|
||||
if (component && typeof error.then == 'function') {
|
||||
const promise = error;
|
||||
error = new Error(
|
||||
`Missing Suspense. The throwing component was: ${getDisplayName(vnode)}`
|
||||
);
|
||||
|
||||
let parent = vnode;
|
||||
for (; parent; parent = parent._parent) {
|
||||
if (parent._component && parent._component._childDidSuspend) {
|
||||
error = promise;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// We haven't recovered and we know at this point that there is no
|
||||
// Suspense component higher up in the tree
|
||||
if (error instanceof Error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
errorInfo = errorInfo || {};
|
||||
errorInfo.componentStack = getOwnerStack(vnode);
|
||||
oldCatchError(error, vnode, oldVNode, errorInfo);
|
||||
|
||||
// when an error was handled by an ErrorBoundary we will nonetheless emit an error
|
||||
// event on the window object. This is to make up for react compatibility in dev mode
|
||||
// and thus make the Next.js dev overlay work.
|
||||
if (typeof error.then != 'function') {
|
||||
setTimeout(() => {
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
throw e;
|
||||
}
|
||||
};
|
||||
|
||||
options._root = (vnode, parentNode) => {
|
||||
if (!parentNode) {
|
||||
throw new Error(
|
||||
'Undefined parent passed to render(), this is the second argument.\n' +
|
||||
'Check if the element is available in the DOM/has the correct id.'
|
||||
);
|
||||
}
|
||||
|
||||
let isValid;
|
||||
switch (parentNode.nodeType) {
|
||||
case ELEMENT_NODE:
|
||||
case DOCUMENT_FRAGMENT_NODE:
|
||||
case DOCUMENT_NODE:
|
||||
isValid = true;
|
||||
break;
|
||||
default:
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (!isValid) {
|
||||
let componentName = getDisplayName(vnode);
|
||||
throw new Error(
|
||||
`Expected a valid HTML node as a second argument to render. Received ${parentNode} instead: render(<${componentName} />, ${parentNode});`
|
||||
);
|
||||
}
|
||||
|
||||
if (oldRoot) oldRoot(vnode, parentNode);
|
||||
};
|
||||
|
||||
options._diff = vnode => {
|
||||
let { type, _parent: parent } = vnode;
|
||||
let parentVNode = getClosestDomNodeParent(parent);
|
||||
|
||||
hooksAllowed = true;
|
||||
|
||||
if (type === undefined) {
|
||||
throw new Error(
|
||||
'Undefined component passed to createElement()\n\n' +
|
||||
'You likely forgot to export your component or might have mixed up default and named imports' +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
} else if (type != null && typeof type == 'object') {
|
||||
if (type._children !== undefined && type._dom !== undefined) {
|
||||
throw new Error(
|
||||
`Invalid type passed to createElement(): ${type}\n\n` +
|
||||
'Did you accidentally pass a JSX literal as JSX twice?\n\n' +
|
||||
` let My${getDisplayName(vnode)} = ${serializeVNode(type)};\n` +
|
||||
` let vnode = <My${getDisplayName(vnode)} />;\n\n` +
|
||||
'This usually happens when you export a JSX literal and not the component.' +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
'Invalid type passed to createElement(): ' +
|
||||
(Array.isArray(type) ? 'array' : type)
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
(type === 'thead' || type === 'tfoot' || type === 'tbody') &&
|
||||
parentVNode.type !== 'table'
|
||||
) {
|
||||
console.error(
|
||||
'Improper nesting of table. Your <thead/tbody/tfoot> should have a <table> parent.' +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
} else if (
|
||||
type === 'tr' &&
|
||||
parentVNode.type !== 'thead' &&
|
||||
parentVNode.type !== 'tfoot' &&
|
||||
parentVNode.type !== 'tbody' &&
|
||||
parentVNode.type !== 'table'
|
||||
) {
|
||||
console.error(
|
||||
'Improper nesting of table. Your <tr> should have a <thead/tbody/tfoot/table> parent.' +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
} else if (type === 'td' && parentVNode.type !== 'tr') {
|
||||
console.error(
|
||||
'Improper nesting of table. Your <td> should have a <tr> parent.' +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
} else if (type === 'th' && parentVNode.type !== 'tr') {
|
||||
console.error(
|
||||
'Improper nesting of table. Your <th> should have a <tr>.' +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
vnode.ref !== undefined &&
|
||||
typeof vnode.ref != 'function' &&
|
||||
typeof vnode.ref != 'object' &&
|
||||
!('$$typeof' in vnode) // allow string refs when preact-compat is installed
|
||||
) {
|
||||
throw new Error(
|
||||
`Component's "ref" property should be a function, or an object created ` +
|
||||
`by createRef(), but got [${typeof vnode.ref}] instead\n` +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
}
|
||||
|
||||
if (typeof vnode.type == 'string') {
|
||||
for (const key in vnode.props) {
|
||||
if (
|
||||
key[0] === 'o' &&
|
||||
key[1] === 'n' &&
|
||||
typeof vnode.props[key] != 'function' &&
|
||||
vnode.props[key] != null
|
||||
) {
|
||||
throw new Error(
|
||||
`Component's "${key}" property should be a function, ` +
|
||||
`but got [${typeof vnode.props[key]}] instead\n` +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check prop-types if available
|
||||
if (typeof vnode.type == 'function' && vnode.type.propTypes) {
|
||||
if (
|
||||
vnode.type.displayName === 'Lazy' &&
|
||||
warnedComponents &&
|
||||
!warnedComponents.lazyPropTypes.has(vnode.type)
|
||||
) {
|
||||
const m =
|
||||
'PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ';
|
||||
try {
|
||||
const lazyVNode = vnode.type();
|
||||
warnedComponents.lazyPropTypes.set(vnode.type, true);
|
||||
console.warn(
|
||||
m + `Component wrapped in lazy() is ${getDisplayName(lazyVNode)}`
|
||||
);
|
||||
} catch (promise) {
|
||||
console.warn(
|
||||
m + "We will log the wrapped component's name once it is loaded."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
let values = vnode.props;
|
||||
if (vnode.type._forwarded) {
|
||||
values = assign({}, values);
|
||||
delete values.ref;
|
||||
}
|
||||
|
||||
checkPropTypes(
|
||||
vnode.type.propTypes,
|
||||
values,
|
||||
'prop',
|
||||
getDisplayName(vnode),
|
||||
() => getOwnerStack(vnode)
|
||||
);
|
||||
}
|
||||
|
||||
if (oldBeforeDiff) oldBeforeDiff(vnode);
|
||||
};
|
||||
|
||||
options._hook = (comp, index, type) => {
|
||||
if (!comp || !hooksAllowed) {
|
||||
throw new Error('Hook can only be invoked from render methods.');
|
||||
}
|
||||
|
||||
if (oldHook) oldHook(comp, index, type);
|
||||
};
|
||||
|
||||
// Ideally we'd want to print a warning once per component, but we
|
||||
// don't have access to the vnode that triggered it here. As a
|
||||
// compromise and to avoid flooding the console with warnings we
|
||||
// print each deprecation warning only once.
|
||||
const warn = (property, message) => ({
|
||||
get() {
|
||||
const key = 'get' + property + message;
|
||||
if (deprecations && deprecations.indexOf(key) < 0) {
|
||||
deprecations.push(key);
|
||||
console.warn(`getting vnode.${property} is deprecated, ${message}`);
|
||||
}
|
||||
},
|
||||
set() {
|
||||
const key = 'set' + property + message;
|
||||
if (deprecations && deprecations.indexOf(key) < 0) {
|
||||
deprecations.push(key);
|
||||
console.warn(`setting vnode.${property} is not allowed, ${message}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const deprecatedAttributes = {
|
||||
nodeName: warn('nodeName', 'use vnode.type'),
|
||||
attributes: warn('attributes', 'use vnode.props'),
|
||||
children: warn('children', 'use vnode.props.children')
|
||||
};
|
||||
|
||||
const deprecatedProto = Object.create({}, deprecatedAttributes);
|
||||
|
||||
options.vnode = vnode => {
|
||||
const props = vnode.props;
|
||||
if (
|
||||
vnode.type !== null &&
|
||||
props != null &&
|
||||
('__source' in props || '__self' in props)
|
||||
) {
|
||||
const newProps = (vnode.props = {});
|
||||
for (let i in props) {
|
||||
const v = props[i];
|
||||
if (i === '__source') vnode.__source = v;
|
||||
else if (i === '__self') vnode.__self = v;
|
||||
else newProps[i] = v;
|
||||
}
|
||||
}
|
||||
|
||||
// eslint-disable-next-line
|
||||
vnode.__proto__ = deprecatedProto;
|
||||
if (oldVnode) oldVnode(vnode);
|
||||
};
|
||||
|
||||
options.diffed = vnode => {
|
||||
// Check if the user passed plain objects as children. Note that we cannot
|
||||
// move this check into `options.vnode` because components can receive
|
||||
// children in any shape they want (e.g.
|
||||
// `<MyJSONFormatter>{{ foo: 123, bar: "abc" }}</MyJSONFormatter>`).
|
||||
// Putting this check in `options.diffed` ensures that
|
||||
// `vnode._children` is set and that we only validate the children
|
||||
// that were actually rendered.
|
||||
if (vnode._children) {
|
||||
vnode._children.forEach(child => {
|
||||
if (typeof child === 'object' && child && child.type === undefined) {
|
||||
const keys = Object.keys(child).join(',');
|
||||
throw new Error(
|
||||
`Objects are not valid as a child. Encountered an object with the keys {${keys}}.` +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
hooksAllowed = false;
|
||||
|
||||
if (oldDiffed) oldDiffed(vnode);
|
||||
|
||||
if (vnode._children != null) {
|
||||
const keys = [];
|
||||
for (let i = 0; i < vnode._children.length; i++) {
|
||||
const child = vnode._children[i];
|
||||
if (!child || child.key == null) continue;
|
||||
|
||||
const key = child.key;
|
||||
if (keys.indexOf(key) !== -1) {
|
||||
console.error(
|
||||
'Following component has two or more children with the ' +
|
||||
`same key attribute: "${key}". This may cause glitches and misbehavior ` +
|
||||
'in rendering process. Component: \n\n' +
|
||||
serializeVNode(vnode) +
|
||||
`\n\n${getOwnerStack(vnode)}`
|
||||
);
|
||||
|
||||
// Break early to not spam the console
|
||||
break;
|
||||
}
|
||||
|
||||
keys.push(key);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const setState = Component.prototype.setState;
|
||||
Component.prototype.setState = function(update, callback) {
|
||||
if (this._vnode == null) {
|
||||
// `this._vnode` will be `null` during componentWillMount. But it
|
||||
// is perfectly valid to call `setState` during cWM. So we
|
||||
// need an additional check to verify that we are dealing with a
|
||||
// call inside constructor.
|
||||
if (this.state == null) {
|
||||
console.warn(
|
||||
`Calling "this.setState" inside the constructor of a component is a ` +
|
||||
`no-op and might be a bug in your application. Instead, set ` +
|
||||
`"this.state = {}" directly.\n\n${getOwnerStack(getCurrentVNode())}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return setState.call(this, update, callback);
|
||||
};
|
||||
|
||||
const forceUpdate = Component.prototype.forceUpdate;
|
||||
Component.prototype.forceUpdate = function(callback) {
|
||||
if (this._vnode == null) {
|
||||
console.warn(
|
||||
`Calling "this.forceUpdate" inside the constructor of a component is a ` +
|
||||
`no-op and might be a bug in your application.\n\n${getOwnerStack(
|
||||
getCurrentVNode()
|
||||
)}`
|
||||
);
|
||||
} else if (this._parentDom == null) {
|
||||
console.warn(
|
||||
`Can't call "this.forceUpdate" on an unmounted component. This is a no-op, ` +
|
||||
`but it indicates a memory leak in your application. To fix, cancel all ` +
|
||||
`subscriptions and asynchronous tasks in the componentWillUnmount method.` +
|
||||
`\n\n${getOwnerStack(this._vnode)}`
|
||||
);
|
||||
}
|
||||
return forceUpdate.call(this, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Serialize a vnode tree to a string
|
||||
* @param {import('./internal').VNode} vnode
|
||||
* @returns {string}
|
||||
*/
|
||||
export function serializeVNode(vnode) {
|
||||
let { props } = vnode;
|
||||
let name = getDisplayName(vnode);
|
||||
|
||||
let attrs = '';
|
||||
for (let prop in props) {
|
||||
if (props.hasOwnProperty(prop) && prop !== 'children') {
|
||||
let value = props[prop];
|
||||
|
||||
// If it is an object but doesn't have toString(), use Object.toString
|
||||
if (typeof value == 'function') {
|
||||
value = `function ${value.displayName || value.name}() {}`;
|
||||
}
|
||||
|
||||
value =
|
||||
Object(value) === value && !value.toString
|
||||
? Object.prototype.toString.call(value)
|
||||
: value + '';
|
||||
|
||||
attrs += ` ${prop}=${JSON.stringify(value)}`;
|
||||
}
|
||||
}
|
||||
|
||||
let children = props.children;
|
||||
return `<${name}${attrs}${
|
||||
children && children.length ? '>..</' + name + '>' : ' />'
|
||||
}`;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
cli: ()=>cli,
|
||||
defaultConfigFile: ()=>defaultConfigFile,
|
||||
defaultPostCssConfigFile: ()=>defaultPostCssConfigFile,
|
||||
cjsConfigFile: ()=>cjsConfigFile,
|
||||
cjsPostCssConfigFile: ()=>cjsPostCssConfigFile,
|
||||
supportedConfigFiles: ()=>supportedConfigFiles,
|
||||
supportedPostCssConfigFile: ()=>supportedPostCssConfigFile,
|
||||
defaultConfigStubFile: ()=>defaultConfigStubFile,
|
||||
simpleConfigStubFile: ()=>simpleConfigStubFile,
|
||||
defaultPostCssConfigStubFile: ()=>defaultPostCssConfigStubFile
|
||||
});
|
||||
const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
||||
function _interopRequireDefault(obj) {
|
||||
return obj && obj.__esModule ? obj : {
|
||||
default: obj
|
||||
};
|
||||
}
|
||||
const cli = "tailwind";
|
||||
const defaultConfigFile = "./tailwind.config.js";
|
||||
const defaultPostCssConfigFile = "./postcss.config.js";
|
||||
const cjsConfigFile = "./tailwind.config.cjs";
|
||||
const cjsPostCssConfigFile = "./postcss.config.cjs";
|
||||
const supportedConfigFiles = [
|
||||
cjsConfigFile,
|
||||
defaultConfigFile
|
||||
];
|
||||
const supportedPostCssConfigFile = [
|
||||
cjsPostCssConfigFile,
|
||||
defaultPostCssConfigFile
|
||||
];
|
||||
const defaultConfigStubFile = _path.default.resolve(__dirname, "../stubs/defaultConfig.stub.js");
|
||||
const simpleConfigStubFile = _path.default.resolve(__dirname, "../stubs/simpleConfig.stub.js");
|
||||
const defaultPostCssConfigStubFile = _path.default.resolve(__dirname, "../stubs/defaultPostCssConfig.stub.js");
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"CC","4":"A B","8":"J D E F"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","4":"C K L G"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"DC tB EC FC"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},E:{"4":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"HC zB"},F:{"1":"F B C SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","4":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},G:{"2":"zB","4":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","4":"tC uC"},J:{"2":"D","4":"A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"4":"H"},N:{"4":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","4":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"4":"AD BD"}},B:1,C:"HTML5 form features"};
|
||||
@@ -0,0 +1,11 @@
|
||||
export type ApiRequestOptions = {
|
||||
readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH';
|
||||
readonly path: string;
|
||||
readonly cookies?: Record<string, any>;
|
||||
readonly headers?: Record<string, any>;
|
||||
readonly query?: Record<string, any>;
|
||||
readonly formData?: Record<string, any>;
|
||||
readonly body?: any;
|
||||
readonly responseHeader?: string;
|
||||
readonly errors?: Record<number, string>;
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
var baseMean = require('./_baseMean'),
|
||||
identity = require('./identity');
|
||||
|
||||
/**
|
||||
* Computes the mean of the values in `array`.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Math
|
||||
* @param {Array} array The array to iterate over.
|
||||
* @returns {number} Returns the mean.
|
||||
* @example
|
||||
*
|
||||
* _.mean([4, 2, 8, 6]);
|
||||
* // => 5
|
||||
*/
|
||||
function mean(array) {
|
||||
return baseMean(array, identity);
|
||||
}
|
||||
|
||||
module.exports = mean;
|
||||
@@ -0,0 +1,46 @@
|
||||
# DOMException
|
||||
An implementation of the DOMException class from NodeJS
|
||||
|
||||
NodeJS has DOMException built in, but it's not globally available, and you can't require/import it from somewhere.
|
||||
|
||||
This package exposes the [`DOMException`](https://developer.mozilla.org/en-US/docs/Web/API/DOMException) class that comes from NodeJS itself. (including all of the legacy codes)
|
||||
|
||||
<sub>(plz don't depend on this package in any other environment other than node >=10.5)</sub>
|
||||
|
||||
```js
|
||||
import DOMException from 'node-domexception'
|
||||
import { MessageChannel } from 'worker_threads'
|
||||
|
||||
async function hello() {
|
||||
const port = new MessageChannel().port1
|
||||
const ab = new ArrayBuffer()
|
||||
port.postMessage(ab, [ab, ab])
|
||||
}
|
||||
|
||||
hello().catch(err => {
|
||||
console.assert(err.name === 'DataCloneError')
|
||||
console.assert(err.code === 25)
|
||||
console.assert(err instanceof DOMException)
|
||||
})
|
||||
|
||||
const e1 = new DOMException('Something went wrong', 'BadThingsError')
|
||||
console.assert(e1.name === 'BadThingsError')
|
||||
console.assert(e1.code === 0)
|
||||
|
||||
const e2 = new DOMException('Another exciting error message', 'NoModificationAllowedError')
|
||||
console.assert(e2.name === 'NoModificationAllowedError')
|
||||
console.assert(e2.code === 7)
|
||||
|
||||
console.assert(DOMException.INUSE_ATTRIBUTE_ERR === 10)
|
||||
```
|
||||
|
||||
# Background
|
||||
|
||||
The only possible way is to use some web-ish tools that have been introduced into NodeJS that throws a DOMException and catch the constructor. This is exactly what this package dose for you and exposes it.<br>
|
||||
This way you will have the same class that NodeJS has and you can check if the error is a instance of DOMException.<br>
|
||||
The instanceof check would not have worked with a custom class such as the DOMException provided by domenic which also is much larger in size since it has to re-construct the hole class from the ground up.
|
||||
|
||||
The DOMException is used in many places such as the Fetch API, File & Blobs, PostMessaging and more. <br>
|
||||
Why they decided to call it **DOM**, I don't know
|
||||
|
||||
Please consider sponsoring if you find this helpful
|
||||
@@ -0,0 +1,12 @@
|
||||
import AsyncReader from '../readers/async';
|
||||
import type Settings from '../settings';
|
||||
import type { Entry, Errno } from '../types';
|
||||
export declare type AsyncCallback = (error: Errno, entries: Entry[]) => void;
|
||||
export default class AsyncProvider {
|
||||
private readonly _root;
|
||||
private readonly _settings;
|
||||
protected readonly _reader: AsyncReader;
|
||||
private readonly _storage;
|
||||
constructor(_root: string, _settings: Settings);
|
||||
read(callback: AsyncCallback): void;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
var ee = require('../');
|
||||
|
||||
module.exports = function (t) {
|
||||
var x, y;
|
||||
return {
|
||||
Any: function (a) {
|
||||
a(t(true), false, "Primitive");
|
||||
a(t({ events: [] }), false, "Other object");
|
||||
a(t(x = ee()), false, "Emitter: empty");
|
||||
|
||||
x.on('test', y = function () {});
|
||||
a(t(x), true, "Emitter: full");
|
||||
x.off('test', y);
|
||||
a(t(x), false, "Emitter: empty but touched");
|
||||
x.once('test', y = function () {});
|
||||
a(t(x), true, "Emitter: full: Once");
|
||||
x.off('test', y);
|
||||
a(t(x), false, "Emitter: empty but touched by once");
|
||||
},
|
||||
Specific: function (a) {
|
||||
a(t(true, 'test'), false, "Primitive");
|
||||
a(t({ events: [] }, 'test'), false, "Other object");
|
||||
a(t(x = ee(), 'test'), false, "Emitter: empty");
|
||||
|
||||
x.on('test', y = function () {});
|
||||
a(t(x, 'test'), true, "Emitter: full");
|
||||
a(t(x, 'foo'), false, "Emitter: full, other event");
|
||||
x.off('test', y);
|
||||
a(t(x, 'test'), false, "Emitter: empty but touched");
|
||||
a(t(x, 'foo'), false, "Emitter: empty but touched, other event");
|
||||
|
||||
x.once('test', y = function () {});
|
||||
a(t(x, 'test'), true, "Emitter: full: Once");
|
||||
a(t(x, 'foo'), false, "Emitter: full: Once, other event");
|
||||
x.off('test', y);
|
||||
a(t(x, 'test'), false, "Emitter: empty but touched by once");
|
||||
a(t(x, 'foo'), false, "Emitter: empty but touched by once, other event");
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"observable.js","sourceRoot":"","sources":["../../../../src/internal/symbol/observable.ts"],"names":[],"mappings":";;;AAMa,QAAA,UAAU,GAAoB,CAAC,cAAM,OAAA,CAAC,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,cAAc,EAArE,CAAqE,CAAC,EAAE,CAAC"}
|
||||
@@ -0,0 +1,9 @@
|
||||
"use strict";
|
||||
|
||||
var safeToString = require("../safe-to-string")
|
||||
, isPlainObject = require("./is-plain-object");
|
||||
|
||||
module.exports = function (value) {
|
||||
if (!isPlainObject(value)) throw new TypeError(safeToString(value) + " is not a plain object");
|
||||
return value;
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
Copyright (c) Bogdan Chadkin <trysound@yandex.ru>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-messageformat/src/error.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IAEnB,aAAa,kBAAkB;IAE/B,aAAa,kBAAkB;IAE/B,gBAAgB,qBAAqB;CACtC;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,IAAI,EAAE,SAAS,CAAA;IAC/B;;;;;;OAMG;IACH,SAAgB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;gBACvC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,MAAM;IAK3D,QAAQ;CAGhB;AAED,qBAAa,iBAAkB,SAAQ,WAAW;gBAE9C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,MAAM,EAAE,EACjB,eAAe,CAAC,EAAE,MAAM;CAU3B;AAED,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;CAO/D;AAED,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;CAOzD"}
|
||||
@@ -0,0 +1,11 @@
|
||||
import { EmptyError } from '../util/EmptyError';
|
||||
import { filter } from './filter';
|
||||
import { takeLast } from './takeLast';
|
||||
import { throwIfEmpty } from './throwIfEmpty';
|
||||
import { defaultIfEmpty } from './defaultIfEmpty';
|
||||
import { identity } from '../util/identity';
|
||||
export function last(predicate, defaultValue) {
|
||||
const hasDefaultValue = arguments.length >= 2;
|
||||
return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));
|
||||
}
|
||||
//# sourceMappingURL=last.js.map
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"1":"F A B","2":"CC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Document Object Model Range"};
|
||||
@@ -0,0 +1,86 @@
|
||||
import assert from './_assert.js';
|
||||
import { hmac } from './hmac.js';
|
||||
import { createView, toBytes, checkOpts, asyncLoop } from './utils.js';
|
||||
// Common prologue and epilogue for sync/async functions
|
||||
function pbkdf2Init(hash, _password, _salt, _opts) {
|
||||
assert.hash(hash);
|
||||
const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);
|
||||
const { c, dkLen, asyncTick } = opts;
|
||||
assert.number(c);
|
||||
assert.number(dkLen);
|
||||
assert.number(asyncTick);
|
||||
if (c < 1)
|
||||
throw new Error('PBKDF2: iterations (c) should be >= 1');
|
||||
const password = toBytes(_password);
|
||||
const salt = toBytes(_salt);
|
||||
// DK = PBKDF2(PRF, Password, Salt, c, dkLen);
|
||||
const DK = new Uint8Array(dkLen);
|
||||
// U1 = PRF(Password, Salt + INT_32_BE(i))
|
||||
const PRF = hmac.create(hash, password);
|
||||
const PRFSalt = PRF._cloneInto().update(salt);
|
||||
return { c, dkLen, asyncTick, DK, PRF, PRFSalt };
|
||||
}
|
||||
function pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {
|
||||
PRF.destroy();
|
||||
PRFSalt.destroy();
|
||||
if (prfW)
|
||||
prfW.destroy();
|
||||
u.fill(0);
|
||||
return DK;
|
||||
}
|
||||
/**
|
||||
* PBKDF2-HMAC: RFC 2898 key derivation function
|
||||
* @param hash - hash function that would be used e.g. sha256
|
||||
* @param password - password from which a derived key is generated
|
||||
* @param salt - cryptographic salt
|
||||
* @param opts - {c, dkLen} where c is work factor and dkLen is output message size
|
||||
*/
|
||||
export function pbkdf2(hash, password, salt, opts) {
|
||||
const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);
|
||||
let prfW; // Working copy
|
||||
const arr = new Uint8Array(4);
|
||||
const view = createView(arr);
|
||||
const u = new Uint8Array(PRF.outputLen);
|
||||
// DK = T1 + T2 + ⋯ + Tdklen/hlen
|
||||
for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {
|
||||
// Ti = F(Password, Salt, c, i)
|
||||
const Ti = DK.subarray(pos, pos + PRF.outputLen);
|
||||
view.setInt32(0, ti, false);
|
||||
// F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc
|
||||
// U1 = PRF(Password, Salt + INT_32_BE(i))
|
||||
(prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);
|
||||
Ti.set(u.subarray(0, Ti.length));
|
||||
for (let ui = 1; ui < c; ui++) {
|
||||
// Uc = PRF(Password, Uc−1)
|
||||
PRF._cloneInto(prfW).update(u).digestInto(u);
|
||||
for (let i = 0; i < Ti.length; i++)
|
||||
Ti[i] ^= u[i];
|
||||
}
|
||||
}
|
||||
return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);
|
||||
}
|
||||
export async function pbkdf2Async(hash, password, salt, opts) {
|
||||
const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);
|
||||
let prfW; // Working copy
|
||||
const arr = new Uint8Array(4);
|
||||
const view = createView(arr);
|
||||
const u = new Uint8Array(PRF.outputLen);
|
||||
// DK = T1 + T2 + ⋯ + Tdklen/hlen
|
||||
for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {
|
||||
// Ti = F(Password, Salt, c, i)
|
||||
const Ti = DK.subarray(pos, pos + PRF.outputLen);
|
||||
view.setInt32(0, ti, false);
|
||||
// F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc
|
||||
// U1 = PRF(Password, Salt + INT_32_BE(i))
|
||||
(prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);
|
||||
Ti.set(u.subarray(0, Ti.length));
|
||||
await asyncLoop(c - 1, asyncTick, (i) => {
|
||||
// Uc = PRF(Password, Uc−1)
|
||||
PRF._cloneInto(prfW).update(u).digestInto(u);
|
||||
for (let i = 0; i < Ti.length; i++)
|
||||
Ti[i] ^= u[i];
|
||||
});
|
||||
}
|
||||
return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);
|
||||
}
|
||||
//# sourceMappingURL=pbkdf2.js.map
|
||||
@@ -0,0 +1,3 @@
|
||||
import IfBlock from '../../nodes/IfBlock';
|
||||
import Renderer, { RenderOptions } from '../Renderer';
|
||||
export default function (node: IfBlock, renderer: Renderer, options: RenderOptions): void;
|
||||
@@ -0,0 +1,489 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Code coverage report for ProcessFork.ts</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="stylesheet" href="prettify.css" />
|
||||
<link rel="stylesheet" href="base.css" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style type='text/css'>
|
||||
.coverage-summary .sorter {
|
||||
background-image: url(sort-arrow-sprite.png);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class='wrapper'>
|
||||
<div class='pad1'>
|
||||
<h1>
|
||||
<a href="index.html">All files</a> ProcessFork.ts
|
||||
</h1>
|
||||
<div class='clearfix'>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">100% </span>
|
||||
<span class="quiet">Statements</span>
|
||||
<span class='fraction'>78/78</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">86.67% </span>
|
||||
<span class="quiet">Branches</span>
|
||||
<span class='fraction'>26/30</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">100% </span>
|
||||
<span class="quiet">Functions</span>
|
||||
<span class='fraction'>15/15</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">100% </span>
|
||||
<span class="quiet">Lines</span>
|
||||
<span class='fraction'>73/73</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="quiet">
|
||||
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
||||
</p>
|
||||
</div>
|
||||
<div class='status-line high'></div>
|
||||
<pre><table class="coverage">
|
||||
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
||||
<a name='L2'></a><a href='#L2'>2</a>
|
||||
<a name='L3'></a><a href='#L3'>3</a>
|
||||
<a name='L4'></a><a href='#L4'>4</a>
|
||||
<a name='L5'></a><a href='#L5'>5</a>
|
||||
<a name='L6'></a><a href='#L6'>6</a>
|
||||
<a name='L7'></a><a href='#L7'>7</a>
|
||||
<a name='L8'></a><a href='#L8'>8</a>
|
||||
<a name='L9'></a><a href='#L9'>9</a>
|
||||
<a name='L10'></a><a href='#L10'>10</a>
|
||||
<a name='L11'></a><a href='#L11'>11</a>
|
||||
<a name='L12'></a><a href='#L12'>12</a>
|
||||
<a name='L13'></a><a href='#L13'>13</a>
|
||||
<a name='L14'></a><a href='#L14'>14</a>
|
||||
<a name='L15'></a><a href='#L15'>15</a>
|
||||
<a name='L16'></a><a href='#L16'>16</a>
|
||||
<a name='L17'></a><a href='#L17'>17</a>
|
||||
<a name='L18'></a><a href='#L18'>18</a>
|
||||
<a name='L19'></a><a href='#L19'>19</a>
|
||||
<a name='L20'></a><a href='#L20'>20</a>
|
||||
<a name='L21'></a><a href='#L21'>21</a>
|
||||
<a name='L22'></a><a href='#L22'>22</a>
|
||||
<a name='L23'></a><a href='#L23'>23</a>
|
||||
<a name='L24'></a><a href='#L24'>24</a>
|
||||
<a name='L25'></a><a href='#L25'>25</a>
|
||||
<a name='L26'></a><a href='#L26'>26</a>
|
||||
<a name='L27'></a><a href='#L27'>27</a>
|
||||
<a name='L28'></a><a href='#L28'>28</a>
|
||||
<a name='L29'></a><a href='#L29'>29</a>
|
||||
<a name='L30'></a><a href='#L30'>30</a>
|
||||
<a name='L31'></a><a href='#L31'>31</a>
|
||||
<a name='L32'></a><a href='#L32'>32</a>
|
||||
<a name='L33'></a><a href='#L33'>33</a>
|
||||
<a name='L34'></a><a href='#L34'>34</a>
|
||||
<a name='L35'></a><a href='#L35'>35</a>
|
||||
<a name='L36'></a><a href='#L36'>36</a>
|
||||
<a name='L37'></a><a href='#L37'>37</a>
|
||||
<a name='L38'></a><a href='#L38'>38</a>
|
||||
<a name='L39'></a><a href='#L39'>39</a>
|
||||
<a name='L40'></a><a href='#L40'>40</a>
|
||||
<a name='L41'></a><a href='#L41'>41</a>
|
||||
<a name='L42'></a><a href='#L42'>42</a>
|
||||
<a name='L43'></a><a href='#L43'>43</a>
|
||||
<a name='L44'></a><a href='#L44'>44</a>
|
||||
<a name='L45'></a><a href='#L45'>45</a>
|
||||
<a name='L46'></a><a href='#L46'>46</a>
|
||||
<a name='L47'></a><a href='#L47'>47</a>
|
||||
<a name='L48'></a><a href='#L48'>48</a>
|
||||
<a name='L49'></a><a href='#L49'>49</a>
|
||||
<a name='L50'></a><a href='#L50'>50</a>
|
||||
<a name='L51'></a><a href='#L51'>51</a>
|
||||
<a name='L52'></a><a href='#L52'>52</a>
|
||||
<a name='L53'></a><a href='#L53'>53</a>
|
||||
<a name='L54'></a><a href='#L54'>54</a>
|
||||
<a name='L55'></a><a href='#L55'>55</a>
|
||||
<a name='L56'></a><a href='#L56'>56</a>
|
||||
<a name='L57'></a><a href='#L57'>57</a>
|
||||
<a name='L58'></a><a href='#L58'>58</a>
|
||||
<a name='L59'></a><a href='#L59'>59</a>
|
||||
<a name='L60'></a><a href='#L60'>60</a>
|
||||
<a name='L61'></a><a href='#L61'>61</a>
|
||||
<a name='L62'></a><a href='#L62'>62</a>
|
||||
<a name='L63'></a><a href='#L63'>63</a>
|
||||
<a name='L64'></a><a href='#L64'>64</a>
|
||||
<a name='L65'></a><a href='#L65'>65</a>
|
||||
<a name='L66'></a><a href='#L66'>66</a>
|
||||
<a name='L67'></a><a href='#L67'>67</a>
|
||||
<a name='L68'></a><a href='#L68'>68</a>
|
||||
<a name='L69'></a><a href='#L69'>69</a>
|
||||
<a name='L70'></a><a href='#L70'>70</a>
|
||||
<a name='L71'></a><a href='#L71'>71</a>
|
||||
<a name='L72'></a><a href='#L72'>72</a>
|
||||
<a name='L73'></a><a href='#L73'>73</a>
|
||||
<a name='L74'></a><a href='#L74'>74</a>
|
||||
<a name='L75'></a><a href='#L75'>75</a>
|
||||
<a name='L76'></a><a href='#L76'>76</a>
|
||||
<a name='L77'></a><a href='#L77'>77</a>
|
||||
<a name='L78'></a><a href='#L78'>78</a>
|
||||
<a name='L79'></a><a href='#L79'>79</a>
|
||||
<a name='L80'></a><a href='#L80'>80</a>
|
||||
<a name='L81'></a><a href='#L81'>81</a>
|
||||
<a name='L82'></a><a href='#L82'>82</a>
|
||||
<a name='L83'></a><a href='#L83'>83</a>
|
||||
<a name='L84'></a><a href='#L84'>84</a>
|
||||
<a name='L85'></a><a href='#L85'>85</a>
|
||||
<a name='L86'></a><a href='#L86'>86</a>
|
||||
<a name='L87'></a><a href='#L87'>87</a>
|
||||
<a name='L88'></a><a href='#L88'>88</a>
|
||||
<a name='L89'></a><a href='#L89'>89</a>
|
||||
<a name='L90'></a><a href='#L90'>90</a>
|
||||
<a name='L91'></a><a href='#L91'>91</a>
|
||||
<a name='L92'></a><a href='#L92'>92</a>
|
||||
<a name='L93'></a><a href='#L93'>93</a>
|
||||
<a name='L94'></a><a href='#L94'>94</a>
|
||||
<a name='L95'></a><a href='#L95'>95</a>
|
||||
<a name='L96'></a><a href='#L96'>96</a>
|
||||
<a name='L97'></a><a href='#L97'>97</a>
|
||||
<a name='L98'></a><a href='#L98'>98</a>
|
||||
<a name='L99'></a><a href='#L99'>99</a>
|
||||
<a name='L100'></a><a href='#L100'>100</a>
|
||||
<a name='L101'></a><a href='#L101'>101</a>
|
||||
<a name='L102'></a><a href='#L102'>102</a>
|
||||
<a name='L103'></a><a href='#L103'>103</a>
|
||||
<a name='L104'></a><a href='#L104'>104</a>
|
||||
<a name='L105'></a><a href='#L105'>105</a>
|
||||
<a name='L106'></a><a href='#L106'>106</a>
|
||||
<a name='L107'></a><a href='#L107'>107</a>
|
||||
<a name='L108'></a><a href='#L108'>108</a>
|
||||
<a name='L109'></a><a href='#L109'>109</a>
|
||||
<a name='L110'></a><a href='#L110'>110</a>
|
||||
<a name='L111'></a><a href='#L111'>111</a>
|
||||
<a name='L112'></a><a href='#L112'>112</a>
|
||||
<a name='L113'></a><a href='#L113'>113</a>
|
||||
<a name='L114'></a><a href='#L114'>114</a>
|
||||
<a name='L115'></a><a href='#L115'>115</a>
|
||||
<a name='L116'></a><a href='#L116'>116</a>
|
||||
<a name='L117'></a><a href='#L117'>117</a>
|
||||
<a name='L118'></a><a href='#L118'>118</a>
|
||||
<a name='L119'></a><a href='#L119'>119</a>
|
||||
<a name='L120'></a><a href='#L120'>120</a>
|
||||
<a name='L121'></a><a href='#L121'>121</a>
|
||||
<a name='L122'></a><a href='#L122'>122</a>
|
||||
<a name='L123'></a><a href='#L123'>123</a>
|
||||
<a name='L124'></a><a href='#L124'>124</a>
|
||||
<a name='L125'></a><a href='#L125'>125</a>
|
||||
<a name='L126'></a><a href='#L126'>126</a>
|
||||
<a name='L127'></a><a href='#L127'>127</a>
|
||||
<a name='L128'></a><a href='#L128'>128</a>
|
||||
<a name='L129'></a><a href='#L129'>129</a>
|
||||
<a name='L130'></a><a href='#L130'>130</a>
|
||||
<a name='L131'></a><a href='#L131'>131</a>
|
||||
<a name='L132'></a><a href='#L132'>132</a>
|
||||
<a name='L133'></a><a href='#L133'>133</a>
|
||||
<a name='L134'></a><a href='#L134'>134</a>
|
||||
<a name='L135'></a><a href='#L135'>135</a>
|
||||
<a name='L136'></a><a href='#L136'>136</a>
|
||||
<a name='L137'></a><a href='#L137'>137</a>
|
||||
<a name='L138'></a><a href='#L138'>138</a>
|
||||
<a name='L139'></a><a href='#L139'>139</a>
|
||||
<a name='L140'></a><a href='#L140'>140</a>
|
||||
<a name='L141'></a><a href='#L141'>141</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">3x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">145x</span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-yes">108x</span>
|
||||
<span class="cline-any cline-yes">36x</span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">72x</span>
|
||||
<span class="cline-any cline-yes">36x</span>
|
||||
<span class="cline-any cline-yes">4x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">36x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">36x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">37x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">121x</span>
|
||||
<span class="cline-any cline-yes">121x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">121x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-yes">3x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2883x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2886x</span>
|
||||
<span class="cline-any cline-yes">13554x</span>
|
||||
<span class="cline-any cline-yes">13554x</span>
|
||||
<span class="cline-any cline-yes">2883x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">10671x</span>
|
||||
<span class="cline-any cline-yes">10671x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">10671x</span>
|
||||
<span class="cline-any cline-yes">10671x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">85x</span>
|
||||
<span class="cline-any cline-yes">85x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">85x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">85x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">85x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span></td><td class="text"><pre class="prettyprint lang-js">import { Processor, ProcessLineResult } from "./Processor";
|
||||
import P from "bluebird"
|
||||
import { Converter } from "./Converter";
|
||||
import { ChildProcess } from "child_process";
|
||||
import { CSVParseParam, mergeParams } from "./Parameters";
|
||||
import { ParseRuntime } from "./ParseRuntime";
|
||||
import { Readable, Writable } from "stream";
|
||||
import { bufFromString, emptyBuffer } from "./util";
|
||||
import CSVError from "./CSVError";
|
||||
|
||||
export class ProcessorFork extends Processor {
|
||||
flush(): P<ProcessLineResult[]> {
|
||||
return new P((resolve, reject) => {
|
||||
// console.log("flush");
|
||||
this.finalChunk = true;
|
||||
this.next = resolve;
|
||||
this.childProcess.stdin.end();
|
||||
});
|
||||
}
|
||||
destroy(): P<void> {
|
||||
this.childProcess.kill();
|
||||
return P.resolve();
|
||||
}
|
||||
childProcess: ChildProcess;
|
||||
inited: boolean = false;
|
||||
private resultBuf: ProcessLineResult[] = [];
|
||||
private leftChunk: string = "";
|
||||
private finalChunk: boolean = false;
|
||||
private next?: (result: ProcessLineResult[]) => any;
|
||||
constructor(protected converter: Converter) {
|
||||
super(converter);
|
||||
this.childProcess = require("child_process").spawn(process.execPath, [__dirname + "/../v2/worker.js"], {
|
||||
stdio: ["pipe", "pipe", "pipe", "ipc"]
|
||||
});
|
||||
this.initWorker();
|
||||
}
|
||||
private prepareParam(param:CSVParseParam):any{
|
||||
const clone:any=mergeParams(param);
|
||||
if (clone.ignoreColumns){
|
||||
clone.ignoreColumns={
|
||||
source:clone.ignoreColumns.source,
|
||||
flags:clone.ignoreColumns.flags
|
||||
}
|
||||
}
|
||||
if (clone.includeColumns){
|
||||
clone.includeColumns={
|
||||
source:clone.includeColumns.source,
|
||||
flags:clone.includeColumns.flags
|
||||
}
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
private initWorker() {
|
||||
this.childProcess.send({
|
||||
cmd: "init",
|
||||
params: this.prepareParam(this.converter.parseParam)
|
||||
} as InitMessage);
|
||||
this.childProcess.on("message", (msg: Message) => {
|
||||
if (msg.cmd === "inited") {
|
||||
this.inited = true;
|
||||
} else if (msg.cmd === "eol") {
|
||||
if (this.converter.listeners("eol").length > 0){
|
||||
this.converter.emit("eol",(msg as StringMessage).value);
|
||||
}
|
||||
}else if (msg.cmd === "header") {
|
||||
if (this.converter.listeners("header").length > 0){
|
||||
this.converter.emit("header",(msg as StringMessage).value);
|
||||
}
|
||||
}else <span class="missing-if-branch" title="else path not taken" >E</span>if (msg.cmd === "done"){
|
||||
|
||||
this.flushResult();
|
||||
}
|
||||
|
||||
});
|
||||
this.childProcess.stdout.on("data", (data) => {
|
||||
// console.log("stdout", data.toString());
|
||||
const res = data.toString();
|
||||
this.appendBuf(res);
|
||||
|
||||
});
|
||||
this.childProcess.stderr.on("data", (data) => {
|
||||
// console.log("stderr", data.toString());
|
||||
this.converter.emit("error", CSVError.fromJSON(JSON.parse(data.toString())));
|
||||
});
|
||||
|
||||
}
|
||||
private flushResult() {
|
||||
// console.log("flush result", this.resultBuf.length);
|
||||
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.next) {
|
||||
this.next(this.resultBuf);
|
||||
}
|
||||
this.resultBuf = [];
|
||||
}
|
||||
private appendBuf(data: string) {
|
||||
const res = this.leftChunk + data;
|
||||
const list = res.split("\n");
|
||||
let counter = 0;
|
||||
const lastBit = list[list.length - 1];
|
||||
if (lastBit !== "") {
|
||||
this.leftChunk = list.pop() || <span class="branch-1 cbranch-no" title="branch not covered" >"";</span>
|
||||
} else {
|
||||
this.leftChunk = "";
|
||||
}
|
||||
|
||||
while (list.length) {
|
||||
let item = list.shift() || "";
|
||||
if (item.length === 0 ) {
|
||||
continue;
|
||||
}
|
||||
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.params.output !== "line") {
|
||||
item = JSON.parse(item);
|
||||
}
|
||||
this.resultBuf.push(item);
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
process(chunk: Buffer): P<ProcessLineResult[]> {
|
||||
return new P((resolve, reject) => {
|
||||
// console.log("chunk", chunk.length);
|
||||
this.next = resolve;
|
||||
// this.appendReadBuf(chunk);
|
||||
this.childProcess.stdin.write(chunk, () => {
|
||||
// console.log("chunk callback");
|
||||
this.flushResult();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export interface Message {
|
||||
cmd: string
|
||||
}
|
||||
|
||||
export interface InitMessage extends Message {
|
||||
params: any;
|
||||
}
|
||||
export interface StringMessage extends Message {
|
||||
value: string
|
||||
}
|
||||
export const EOM = "\x03";</pre></td></tr>
|
||||
</table></pre>
|
||||
<div class='push'></div><!-- for sticky footer -->
|
||||
</div><!-- /wrapper -->
|
||||
<div class='footer quiet pad2 space-top1 center small'>
|
||||
Code coverage
|
||||
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Thu May 17 2018 01:25:26 GMT+0100 (IST)
|
||||
</div>
|
||||
</div>
|
||||
<script src="prettify.js"></script>
|
||||
<script>
|
||||
window.onload = function () {
|
||||
if (typeof prettyPrint === 'function') {
|
||||
prettyPrint();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script src="sorter.js"></script>
|
||||
<script src="block-navigation.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
MIT License Copyright (c) 2020-2022 ODIT.Services (info@odit.services)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = isEthereumAddress;
|
||||
|
||||
var _assertString = _interopRequireDefault(require("./util/assertString"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var eth = /^(0x)[0-9a-f]{40}$/i;
|
||||
|
||||
function isEthereumAddress(str) {
|
||||
(0, _assertString.default)(str);
|
||||
return eth.test(str);
|
||||
}
|
||||
|
||||
module.exports = exports.default;
|
||||
module.exports.default = exports.default;
|
||||
@@ -0,0 +1,20 @@
|
||||
import { Readable } from 'svelte/store';
|
||||
interface SpringOpts {
|
||||
stiffness?: number;
|
||||
damping?: number;
|
||||
precision?: number;
|
||||
}
|
||||
interface SpringUpdateOpts {
|
||||
hard?: any;
|
||||
soft?: string | number | boolean;
|
||||
}
|
||||
declare type Updater<T> = (target_value: T, value: T) => T;
|
||||
export interface Spring<T> extends Readable<T> {
|
||||
set: (new_value: T, opts?: SpringUpdateOpts) => Promise<void>;
|
||||
update: (fn: Updater<T>, opts?: SpringUpdateOpts) => Promise<void>;
|
||||
precision: number;
|
||||
damping: number;
|
||||
stiffness: number;
|
||||
}
|
||||
export declare function spring<T = any>(value?: T, opts?: SpringOpts): Spring<T>;
|
||||
export {};
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
|
||||
Copyright (c) 2016 Douglas Christopher Wilson <doug@somethingdoug.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC tB EC FC"},D:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB","132":"J D E F A IC JC KC LC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F B PC QC RC SC qB AC","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB","260":"C TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC WC","132":"E XC YC ZC aC bC"},H:{"260":"oC"},I:{"1":"f","16":"tB pC qC rC","132":"I sC BC tC uC"},J:{"16":"D","132":"A"},K:{"1":"h","16":"A B C qB AC","260":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","132":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:":default CSS pseudo-class"};
|
||||
@@ -0,0 +1,2 @@
|
||||
if(typeof cptable === 'undefined') cptable = {};
|
||||
cptable[872] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬€лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№ыЫзЗшШэЭщЩчЧ§■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"J D E CC","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"ch (character) unit"};
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J IC sB 6B 7B 8B 9B OC","2":"I D E F A B C K L G HC zB JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","2":"F PC QC RC"},G:{"1":"VC WC sB 6B 7B 8B 9B","2":"E zB UC BC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"B C qB AC rB","2":"h","16":"A"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"I","2":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"AD BD"}},B:1,C:"Shared Web Workers"};
|
||||
@@ -0,0 +1,507 @@
|
||||
1.52.0 / 2022-02-21
|
||||
===================
|
||||
|
||||
* Add extensions from IANA for more `image/*` types
|
||||
* Add extension `.asc` to `application/pgp-keys`
|
||||
* Add extensions to various XML types
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.51.0 / 2021-11-08
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Mark `image/vnd.microsoft.icon` as compressible
|
||||
* Mark `image/vnd.ms-dds` as compressible
|
||||
|
||||
1.50.0 / 2021-09-15
|
||||
===================
|
||||
|
||||
* Add deprecated iWorks mime types and extensions
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.49.0 / 2021-07-26
|
||||
===================
|
||||
|
||||
* Add extension `.trig` to `application/trig`
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.48.0 / 2021-05-30
|
||||
===================
|
||||
|
||||
* Add extension `.mvt` to `application/vnd.mapbox-vector-tile`
|
||||
* Add new upstream MIME types
|
||||
* Mark `text/yaml` as compressible
|
||||
|
||||
1.47.0 / 2021-04-01
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Remove ambigious extensions from IANA for `application/*+xml` types
|
||||
* Update primary extension to `.es` for `application/ecmascript`
|
||||
|
||||
1.46.0 / 2021-02-13
|
||||
===================
|
||||
|
||||
* Add extension `.amr` to `audio/amr`
|
||||
* Add extension `.m4s` to `video/iso.segment`
|
||||
* Add extension `.opus` to `audio/ogg`
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.45.0 / 2020-09-22
|
||||
===================
|
||||
|
||||
* Add `application/ubjson` with extension `.ubj`
|
||||
* Add `image/avif` with extension `.avif`
|
||||
* Add `image/ktx2` with extension `.ktx2`
|
||||
* Add extension `.dbf` to `application/vnd.dbf`
|
||||
* Add extension `.rar` to `application/vnd.rar`
|
||||
* Add extension `.td` to `application/urc-targetdesc+xml`
|
||||
* Add new upstream MIME types
|
||||
* Fix extension of `application/vnd.apple.keynote` to be `.key`
|
||||
|
||||
1.44.0 / 2020-04-22
|
||||
===================
|
||||
|
||||
* Add charsets from IANA
|
||||
* Add extension `.cjs` to `application/node`
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.43.0 / 2020-01-05
|
||||
===================
|
||||
|
||||
* Add `application/x-keepass2` with extension `.kdbx`
|
||||
* Add extension `.mxmf` to `audio/mobile-xmf`
|
||||
* Add extensions from IANA for `application/*+xml` types
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.42.0 / 2019-09-25
|
||||
===================
|
||||
|
||||
* Add `image/vnd.ms-dds` with extension `.dds`
|
||||
* Add new upstream MIME types
|
||||
* Remove compressible from `multipart/mixed`
|
||||
|
||||
1.41.0 / 2019-08-30
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Add `application/toml` with extension `.toml`
|
||||
* Mark `font/ttf` as compressible
|
||||
|
||||
1.40.0 / 2019-04-20
|
||||
===================
|
||||
|
||||
* Add extensions from IANA for `model/*` types
|
||||
* Add `text/mdx` with extension `.mdx`
|
||||
|
||||
1.39.0 / 2019-04-04
|
||||
===================
|
||||
|
||||
* Add extensions `.siv` and `.sieve` to `application/sieve`
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.38.0 / 2019-02-04
|
||||
===================
|
||||
|
||||
* Add extension `.nq` to `application/n-quads`
|
||||
* Add extension `.nt` to `application/n-triples`
|
||||
* Add new upstream MIME types
|
||||
* Mark `text/less` as compressible
|
||||
|
||||
1.37.0 / 2018-10-19
|
||||
===================
|
||||
|
||||
* Add extensions to HEIC image types
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.36.0 / 2018-08-20
|
||||
===================
|
||||
|
||||
* Add Apple file extensions from IANA
|
||||
* Add extensions from IANA for `image/*` types
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.35.0 / 2018-07-15
|
||||
===================
|
||||
|
||||
* Add extension `.owl` to `application/rdf+xml`
|
||||
* Add new upstream MIME types
|
||||
- Removes extension `.woff` from `application/font-woff`
|
||||
|
||||
1.34.0 / 2018-06-03
|
||||
===================
|
||||
|
||||
* Add extension `.csl` to `application/vnd.citationstyles.style+xml`
|
||||
* Add extension `.es` to `application/ecmascript`
|
||||
* Add new upstream MIME types
|
||||
* Add `UTF-8` as default charset for `text/turtle`
|
||||
* Mark all XML-derived types as compressible
|
||||
|
||||
1.33.0 / 2018-02-15
|
||||
===================
|
||||
|
||||
* Add extensions from IANA for `message/*` types
|
||||
* Add new upstream MIME types
|
||||
* Fix some incorrect OOXML types
|
||||
* Remove `application/font-woff2`
|
||||
|
||||
1.32.0 / 2017-11-29
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Update `text/hjson` to registered `application/hjson`
|
||||
* Add `text/shex` with extension `.shex`
|
||||
|
||||
1.31.0 / 2017-10-25
|
||||
===================
|
||||
|
||||
* Add `application/raml+yaml` with extension `.raml`
|
||||
* Add `application/wasm` with extension `.wasm`
|
||||
* Add new `font` type from IANA
|
||||
* Add new upstream font extensions
|
||||
* Add new upstream MIME types
|
||||
* Add extensions for JPEG-2000 images
|
||||
|
||||
1.30.0 / 2017-08-27
|
||||
===================
|
||||
|
||||
* Add `application/vnd.ms-outlook`
|
||||
* Add `application/x-arj`
|
||||
* Add extension `.mjs` to `application/javascript`
|
||||
* Add glTF types and extensions
|
||||
* Add new upstream MIME types
|
||||
* Add `text/x-org`
|
||||
* Add VirtualBox MIME types
|
||||
* Fix `source` records for `video/*` types that are IANA
|
||||
* Update `font/opentype` to registered `font/otf`
|
||||
|
||||
1.29.0 / 2017-07-10
|
||||
===================
|
||||
|
||||
* Add `application/fido.trusted-apps+json`
|
||||
* Add extension `.wadl` to `application/vnd.sun.wadl+xml`
|
||||
* Add new upstream MIME types
|
||||
* Add `UTF-8` as default charset for `text/css`
|
||||
|
||||
1.28.0 / 2017-05-14
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Add extension `.gz` to `application/gzip`
|
||||
* Update extensions `.md` and `.markdown` to be `text/markdown`
|
||||
|
||||
1.27.0 / 2017-03-16
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Add `image/apng` with extension `.apng`
|
||||
|
||||
1.26.0 / 2017-01-14
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Add extension `.geojson` to `application/geo+json`
|
||||
|
||||
1.25.0 / 2016-11-11
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.24.0 / 2016-09-18
|
||||
===================
|
||||
|
||||
* Add `audio/mp3`
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.23.0 / 2016-05-01
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
* Add extension `.3gpp` to `audio/3gpp`
|
||||
|
||||
1.22.0 / 2016-02-15
|
||||
===================
|
||||
|
||||
* Add `text/slim`
|
||||
* Add extension `.rng` to `application/xml`
|
||||
* Add new upstream MIME types
|
||||
* Fix extension of `application/dash+xml` to be `.mpd`
|
||||
* Update primary extension to `.m4a` for `audio/mp4`
|
||||
|
||||
1.21.0 / 2016-01-06
|
||||
===================
|
||||
|
||||
* Add Google document types
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.20.0 / 2015-11-10
|
||||
===================
|
||||
|
||||
* Add `text/x-suse-ymp`
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.19.0 / 2015-09-17
|
||||
===================
|
||||
|
||||
* Add `application/vnd.apple.pkpass`
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.18.0 / 2015-09-03
|
||||
===================
|
||||
|
||||
* Add new upstream MIME types
|
||||
|
||||
1.17.0 / 2015-08-13
|
||||
===================
|
||||
|
||||
* Add `application/x-msdos-program`
|
||||
* Add `audio/g711-0`
|
||||
* Add `image/vnd.mozilla.apng`
|
||||
* Add extension `.exe` to `application/x-msdos-program`
|
||||
|
||||
1.16.0 / 2015-07-29
|
||||
===================
|
||||
|
||||
* Add `application/vnd.uri-map`
|
||||
|
||||
1.15.0 / 2015-07-13
|
||||
===================
|
||||
|
||||
* Add `application/x-httpd-php`
|
||||
|
||||
1.14.0 / 2015-06-25
|
||||
===================
|
||||
|
||||
* Add `application/scim+json`
|
||||
* Add `application/vnd.3gpp.ussd+xml`
|
||||
* Add `application/vnd.biopax.rdf+xml`
|
||||
* Add `text/x-processing`
|
||||
|
||||
1.13.0 / 2015-06-07
|
||||
===================
|
||||
|
||||
* Add nginx as a source
|
||||
* Add `application/x-cocoa`
|
||||
* Add `application/x-java-archive-diff`
|
||||
* Add `application/x-makeself`
|
||||
* Add `application/x-perl`
|
||||
* Add `application/x-pilot`
|
||||
* Add `application/x-redhat-package-manager`
|
||||
* Add `application/x-sea`
|
||||
* Add `audio/x-m4a`
|
||||
* Add `audio/x-realaudio`
|
||||
* Add `image/x-jng`
|
||||
* Add `text/mathml`
|
||||
|
||||
1.12.0 / 2015-06-05
|
||||
===================
|
||||
|
||||
* Add `application/bdoc`
|
||||
* Add `application/vnd.hyperdrive+json`
|
||||
* Add `application/x-bdoc`
|
||||
* Add extension `.rtf` to `text/rtf`
|
||||
|
||||
1.11.0 / 2015-05-31
|
||||
===================
|
||||
|
||||
* Add `audio/wav`
|
||||
* Add `audio/wave`
|
||||
* Add extension `.litcoffee` to `text/coffeescript`
|
||||
* Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data`
|
||||
* Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install`
|
||||
|
||||
1.10.0 / 2015-05-19
|
||||
===================
|
||||
|
||||
* Add `application/vnd.balsamiq.bmpr`
|
||||
* Add `application/vnd.microsoft.portable-executable`
|
||||
* Add `application/x-ns-proxy-autoconfig`
|
||||
|
||||
1.9.1 / 2015-04-19
|
||||
==================
|
||||
|
||||
* Remove `.json` extension from `application/manifest+json`
|
||||
- This is causing bugs downstream
|
||||
|
||||
1.9.0 / 2015-04-19
|
||||
==================
|
||||
|
||||
* Add `application/manifest+json`
|
||||
* Add `application/vnd.micro+json`
|
||||
* Add `image/vnd.zbrush.pcx`
|
||||
* Add `image/x-ms-bmp`
|
||||
|
||||
1.8.0 / 2015-03-13
|
||||
==================
|
||||
|
||||
* Add `application/vnd.citationstyles.style+xml`
|
||||
* Add `application/vnd.fastcopy-disk-image`
|
||||
* Add `application/vnd.gov.sk.xmldatacontainer+xml`
|
||||
* Add extension `.jsonld` to `application/ld+json`
|
||||
|
||||
1.7.0 / 2015-02-08
|
||||
==================
|
||||
|
||||
* Add `application/vnd.gerber`
|
||||
* Add `application/vnd.msa-disk-image`
|
||||
|
||||
1.6.1 / 2015-02-05
|
||||
==================
|
||||
|
||||
* Community extensions ownership transferred from `node-mime`
|
||||
|
||||
1.6.0 / 2015-01-29
|
||||
==================
|
||||
|
||||
* Add `application/jose`
|
||||
* Add `application/jose+json`
|
||||
* Add `application/json-seq`
|
||||
* Add `application/jwk+json`
|
||||
* Add `application/jwk-set+json`
|
||||
* Add `application/jwt`
|
||||
* Add `application/rdap+json`
|
||||
* Add `application/vnd.gov.sk.e-form+xml`
|
||||
* Add `application/vnd.ims.imsccv1p3`
|
||||
|
||||
1.5.0 / 2014-12-30
|
||||
==================
|
||||
|
||||
* Add `application/vnd.oracle.resource+json`
|
||||
* Fix various invalid MIME type entries
|
||||
- `application/mbox+xml`
|
||||
- `application/oscp-response`
|
||||
- `application/vwg-multiplexed`
|
||||
- `audio/g721`
|
||||
|
||||
1.4.0 / 2014-12-21
|
||||
==================
|
||||
|
||||
* Add `application/vnd.ims.imsccv1p2`
|
||||
* Fix various invalid MIME type entries
|
||||
- `application/vnd-acucobol`
|
||||
- `application/vnd-curl`
|
||||
- `application/vnd-dart`
|
||||
- `application/vnd-dxr`
|
||||
- `application/vnd-fdf`
|
||||
- `application/vnd-mif`
|
||||
- `application/vnd-sema`
|
||||
- `application/vnd-wap-wmlc`
|
||||
- `application/vnd.adobe.flash-movie`
|
||||
- `application/vnd.dece-zip`
|
||||
- `application/vnd.dvb_service`
|
||||
- `application/vnd.micrografx-igx`
|
||||
- `application/vnd.sealed-doc`
|
||||
- `application/vnd.sealed-eml`
|
||||
- `application/vnd.sealed-mht`
|
||||
- `application/vnd.sealed-ppt`
|
||||
- `application/vnd.sealed-tiff`
|
||||
- `application/vnd.sealed-xls`
|
||||
- `application/vnd.sealedmedia.softseal-html`
|
||||
- `application/vnd.sealedmedia.softseal-pdf`
|
||||
- `application/vnd.wap-slc`
|
||||
- `application/vnd.wap-wbxml`
|
||||
- `audio/vnd.sealedmedia.softseal-mpeg`
|
||||
- `image/vnd-djvu`
|
||||
- `image/vnd-svf`
|
||||
- `image/vnd-wap-wbmp`
|
||||
- `image/vnd.sealed-png`
|
||||
- `image/vnd.sealedmedia.softseal-gif`
|
||||
- `image/vnd.sealedmedia.softseal-jpg`
|
||||
- `model/vnd-dwf`
|
||||
- `model/vnd.parasolid.transmit-binary`
|
||||
- `model/vnd.parasolid.transmit-text`
|
||||
- `text/vnd-a`
|
||||
- `text/vnd-curl`
|
||||
- `text/vnd.wap-wml`
|
||||
* Remove example template MIME types
|
||||
- `application/example`
|
||||
- `audio/example`
|
||||
- `image/example`
|
||||
- `message/example`
|
||||
- `model/example`
|
||||
- `multipart/example`
|
||||
- `text/example`
|
||||
- `video/example`
|
||||
|
||||
1.3.1 / 2014-12-16
|
||||
==================
|
||||
|
||||
* Fix missing extensions
|
||||
- `application/json5`
|
||||
- `text/hjson`
|
||||
|
||||
1.3.0 / 2014-12-07
|
||||
==================
|
||||
|
||||
* Add `application/a2l`
|
||||
* Add `application/aml`
|
||||
* Add `application/atfx`
|
||||
* Add `application/atxml`
|
||||
* Add `application/cdfx+xml`
|
||||
* Add `application/dii`
|
||||
* Add `application/json5`
|
||||
* Add `application/lxf`
|
||||
* Add `application/mf4`
|
||||
* Add `application/vnd.apache.thrift.compact`
|
||||
* Add `application/vnd.apache.thrift.json`
|
||||
* Add `application/vnd.coffeescript`
|
||||
* Add `application/vnd.enphase.envoy`
|
||||
* Add `application/vnd.ims.imsccv1p1`
|
||||
* Add `text/csv-schema`
|
||||
* Add `text/hjson`
|
||||
* Add `text/markdown`
|
||||
* Add `text/yaml`
|
||||
|
||||
1.2.0 / 2014-11-09
|
||||
==================
|
||||
|
||||
* Add `application/cea`
|
||||
* Add `application/dit`
|
||||
* Add `application/vnd.gov.sk.e-form+zip`
|
||||
* Add `application/vnd.tmd.mediaflex.api+xml`
|
||||
* Type `application/epub+zip` is now IANA-registered
|
||||
|
||||
1.1.2 / 2014-10-23
|
||||
==================
|
||||
|
||||
* Rebuild database for `application/x-www-form-urlencoded` change
|
||||
|
||||
1.1.1 / 2014-10-20
|
||||
==================
|
||||
|
||||
* Mark `application/x-www-form-urlencoded` as compressible.
|
||||
|
||||
1.1.0 / 2014-09-28
|
||||
==================
|
||||
|
||||
* Add `application/font-woff2`
|
||||
|
||||
1.0.3 / 2014-09-25
|
||||
==================
|
||||
|
||||
* Fix engine requirement in package
|
||||
|
||||
1.0.2 / 2014-09-25
|
||||
==================
|
||||
|
||||
* Add `application/coap-group+json`
|
||||
* Add `application/dcd`
|
||||
* Add `application/vnd.apache.thrift.binary`
|
||||
* Add `image/vnd.tencent.tap`
|
||||
* Mark all JSON-derived types as compressible
|
||||
* Update `text/vtt` data
|
||||
|
||||
1.0.1 / 2014-08-30
|
||||
==================
|
||||
|
||||
* Fix extension ordering
|
||||
|
||||
1.0.0 / 2014-08-30
|
||||
==================
|
||||
|
||||
* Add `application/atf`
|
||||
* Add `application/merge-patch+json`
|
||||
* Add `multipart/x-mixed-replace`
|
||||
* Add `source: 'apache'` metadata
|
||||
* Add `source: 'iana'` metadata
|
||||
* Remove badly-assumed charset data
|
||||
@@ -0,0 +1,6 @@
|
||||
import { switchMap } from './switchMap';
|
||||
import { isFunction } from '../util/isFunction';
|
||||
export function switchMapTo(innerObservable, resultSelector) {
|
||||
return isFunction(resultSelector) ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);
|
||||
}
|
||||
//# sourceMappingURL=switchMapTo.js.map
|
||||
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = function () {
|
||||
var arr = ["foo", 1], iterator, result;
|
||||
if (typeof arr.values !== "function") return false;
|
||||
iterator = arr.values();
|
||||
if (!iterator) return false;
|
||||
if (typeof iterator.next !== "function") return false;
|
||||
result = iterator.next();
|
||||
if (!result) return false;
|
||||
if (result.value !== "foo") return false;
|
||||
if (result.done !== false) return false;
|
||||
return true;
|
||||
};
|
||||
@@ -0,0 +1,2 @@
|
||||
foo
|
||||
bar\baz
|
||||
@@ -0,0 +1,44 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const tagInfo_1 = require("../modules/tagInfo");
|
||||
const utils_1 = require("../modules/utils");
|
||||
const prepareContent_1 = require("../modules/prepareContent");
|
||||
exports.default = (options) => ({
|
||||
async style(svelteFile) {
|
||||
const { transformer } = await Promise.resolve().then(() => __importStar(require('../transformers/less')));
|
||||
let { content, filename, attributes, lang, dependencies, } = await tagInfo_1.getTagInfo(svelteFile);
|
||||
content = prepareContent_1.prepareContent({ options, content });
|
||||
if (lang !== 'less') {
|
||||
return { code: content };
|
||||
}
|
||||
const transformed = await transformer({
|
||||
content,
|
||||
filename,
|
||||
attributes,
|
||||
options,
|
||||
});
|
||||
return {
|
||||
...transformed,
|
||||
dependencies: utils_1.concat(dependencies, transformed.dependencies),
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,102 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Code coverage report for csv2json/libs/core/fileline.js</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="stylesheet" href="../../../prettify.css" />
|
||||
<link rel="stylesheet" href="../../../base.css" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style type='text/css'>
|
||||
.coverage-summary .sorter {
|
||||
background-image: url(../../../sort-arrow-sprite.png);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class='wrapper'>
|
||||
<div class='pad1'>
|
||||
<h1>
|
||||
<a href="../../../index.html">All files</a> / <a href="index.html">csv2json/libs/core</a> fileline.js
|
||||
</h1>
|
||||
<div class='clearfix'>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">0% </span>
|
||||
<span class="quiet">Statements</span>
|
||||
<span class='fraction'>0/6</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">100% </span>
|
||||
<span class="quiet">Branches</span>
|
||||
<span class='fraction'>0/0</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">0% </span>
|
||||
<span class="quiet">Functions</span>
|
||||
<span class='fraction'>0/1</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">0% </span>
|
||||
<span class="quiet">Lines</span>
|
||||
<span class='fraction'>0/6</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="quiet">
|
||||
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
||||
</p>
|
||||
</div>
|
||||
<div class='status-line low'></div>
|
||||
<pre><table class="coverage">
|
||||
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
||||
<a name='L2'></a><a href='#L2'>2</a>
|
||||
<a name='L3'></a><a href='#L3'>3</a>
|
||||
<a name='L4'></a><a href='#L4'>4</a>
|
||||
<a name='L5'></a><a href='#L5'>5</a>
|
||||
<a name='L6'></a><a href='#L6'>6</a>
|
||||
<a name='L7'></a><a href='#L7'>7</a>
|
||||
<a name='L8'></a><a href='#L8'>8</a>
|
||||
<a name='L9'></a><a href='#L9'>9</a>
|
||||
<a name='L10'></a><a href='#L10'>10</a>
|
||||
<a name='L11'></a><a href='#L11'>11</a>
|
||||
<a name='L12'></a><a href='#L12'>12</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span></td><td class="text"><pre class="prettyprint lang-js">Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileline.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileline.js')
|
||||
Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileline.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileline.js')
|
||||
at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
|
||||
at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
|
||||
at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
|
||||
at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
|
||||
at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
|
||||
at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
|
||||
at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
|
||||
at Array.forEach (native)
|
||||
at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
|
||||
at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)</pre></td></tr>
|
||||
</table></pre>
|
||||
<div class='push'></div><!-- for sticky footer -->
|
||||
</div><!-- /wrapper -->
|
||||
<div class='footer quiet pad2 space-top1 center small'>
|
||||
Code coverage
|
||||
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri May 11 2018 21:36:07 GMT+0100 (IST)
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../prettify.js"></script>
|
||||
<script>
|
||||
window.onload = function () {
|
||||
if (typeof prettyPrint === 'function') {
|
||||
prettyPrint();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script src="../../../sorter.js"></script>
|
||||
<script src="../../../block-navigation.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,92 @@
|
||||
// Generated by LiveScript 1.4.0
|
||||
var split, join, lines, unlines, words, unwords, chars, unchars, reverse, repeat, capitalize, camelize, dasherize;
|
||||
split = curry$(function(sep, str){
|
||||
return str.split(sep);
|
||||
});
|
||||
join = curry$(function(sep, xs){
|
||||
return xs.join(sep);
|
||||
});
|
||||
lines = function(str){
|
||||
if (!str.length) {
|
||||
return [];
|
||||
}
|
||||
return str.split('\n');
|
||||
};
|
||||
unlines = function(it){
|
||||
return it.join('\n');
|
||||
};
|
||||
words = function(str){
|
||||
if (!str.length) {
|
||||
return [];
|
||||
}
|
||||
return str.split(/[ ]+/);
|
||||
};
|
||||
unwords = function(it){
|
||||
return it.join(' ');
|
||||
};
|
||||
chars = function(it){
|
||||
return it.split('');
|
||||
};
|
||||
unchars = function(it){
|
||||
return it.join('');
|
||||
};
|
||||
reverse = function(str){
|
||||
return str.split('').reverse().join('');
|
||||
};
|
||||
repeat = curry$(function(n, str){
|
||||
var result, i$;
|
||||
result = '';
|
||||
for (i$ = 0; i$ < n; ++i$) {
|
||||
result += str;
|
||||
}
|
||||
return result;
|
||||
});
|
||||
capitalize = function(str){
|
||||
return str.charAt(0).toUpperCase() + str.slice(1);
|
||||
};
|
||||
camelize = function(it){
|
||||
return it.replace(/[-_]+(.)?/g, function(arg$, c){
|
||||
return (c != null ? c : '').toUpperCase();
|
||||
});
|
||||
};
|
||||
dasherize = function(str){
|
||||
return str.replace(/([^-A-Z])([A-Z]+)/g, function(arg$, lower, upper){
|
||||
return lower + "-" + (upper.length > 1
|
||||
? upper
|
||||
: upper.toLowerCase());
|
||||
}).replace(/^([A-Z]+)/, function(arg$, upper){
|
||||
if (upper.length > 1) {
|
||||
return upper + "-";
|
||||
} else {
|
||||
return upper.toLowerCase();
|
||||
}
|
||||
});
|
||||
};
|
||||
module.exports = {
|
||||
split: split,
|
||||
join: join,
|
||||
lines: lines,
|
||||
unlines: unlines,
|
||||
words: words,
|
||||
unwords: unwords,
|
||||
chars: chars,
|
||||
unchars: unchars,
|
||||
reverse: reverse,
|
||||
repeat: repeat,
|
||||
capitalize: capitalize,
|
||||
camelize: camelize,
|
||||
dasherize: dasherize
|
||||
};
|
||||
function curry$(f, bound){
|
||||
var context,
|
||||
_curry = function(args) {
|
||||
return f.length > 1 ? function(){
|
||||
var params = args ? args.concat() : [];
|
||||
context = bound ? context || this : this;
|
||||
return params.push.apply(params, arguments) <
|
||||
f.length && arguments.length ?
|
||||
_curry.call(context, params) : f.apply(context, params);
|
||||
} : f;
|
||||
};
|
||||
return _curry();
|
||||
}
|
||||
Reference in New Issue
Block a user