create examples | create tests | fix jsonmerger | fix imports

This commit is contained in:
lucaspalomodevelop 2021-11-10 20:05:09 +01:00
parent deb59689e3
commit 60eee82fb5
23 changed files with 1056 additions and 1612 deletions

View File

@ -1,5 +1,7 @@
# JSSTE
<include>./blub.emd</include>
![npm](https://img.shields.io/npm/v/jsste)
![NPM](https://img.shields.io/npm/l/jsste)
[![Downloads](https://img.shields.io/npm/dm/jsste)](https://www.npmjs.com/package/jsste)
@ -69,7 +71,7 @@ let result = Jsste.render(pagecode, templatecode);
```
### Special Variables
### Special Variables
- `_TEMPLATE_` -> Defines the path to the temp file
- `_STYLES_` -> Defines a list of CSS files that will be implemented
@ -109,4 +111,6 @@ let result = Jsste.render(pagecode, templatecode);
// </html>
```

56
examples/example1.js Normal file
View File

@ -0,0 +1,56 @@
let app = require("express")();
let path = require("path");
let jsste = require("../src");
jsste.__config.set("templatePath", __dirname + "/templates");
jsste.__config.set("pagePath", __dirname + "/pages");
let fs = require("fs");
//let supertest = require("supertest");
// app.set("views", path.join(__dirname)); // specify the views directory
// app.set("view engine", "jsste");
// app.engine("jsste", require("../src").expressEngine());
// app.get("/:id", function (req, res) {
// if (/\w+\.[a-z]*[A-Z]*/.test(req.params.id)) {
// res.sendFile(path.join(__dirname, "pages", req.params.id));
// } else {
// let filePath = path.join(__dirname, "pages", req.params.id + ".jsste");
// let content = jsste.renderFile(filePath);
// res.send(content);
// }
// // res.send("File Not found");
// });
function defaultUse(req, res, next) {
let regex_isAnDotfile = /\w+\.[a-z]*[A-Z]*/;
let filePath = path.join(__dirname, "pages", req.url);
if (regex_isAnDotfile.test(req.url) && !filePath.endsWith(".jsste")) {
res.sendFile(filePath);
} else if (fs.existsSync(filePath + ".jsste")) {
let content = jsste.renderFile(filePath + ".jsste");
res.send(content);
} else if (fs.lstatSync(filePath).isDirectory()) {
let content = jsste.renderFile(path.join(filePath, "index.jsste"));
res.send(content);
} else next();
}
app.use(defaultUse);
// app.use((req, res, next) => {
// if (/\w+\.[a-z]*[A-Z]*/.test(req.url)) {
// res.sendFile(path.join(__dirname, "pages", req.url));
// } else if (fs.existsSync(path.join(__dirname, "pages", req.url + ".jsste"))) {
// let filePath = path.join(__dirname, "pages", req.url + ".jsste");
// let content = jsste.renderFile(filePath);
// res.send(content);
// } else {
// next();
// }
// });
app.listen(8000, function () {
console.log("Example app listening on port 8000!");
});

View File

@ -0,0 +1,4 @@
{
"_STYLES_":["./style"],
"js$Date": "return Date.now() + ' is the TimeStemp';"
}

View File

@ -0,0 +1,3 @@
{
"b":"hallo"
}

View File

@ -0,0 +1,5 @@
{
"_IMPORTS_":["data.jsste","base.jsste"],
"a":"h1 - test",
"c":"p - test"
}

View File

@ -0,0 +1,5 @@
{
"_TEMPLATE_":"startpage"
}

View File

@ -0,0 +1,5 @@
{
"_IMPORTS_":["data2.jsste"],
"_TEMPLATE_":"page1",
"root":"root"
}

View File

@ -0,0 +1,11 @@
{
"_STYLES_":["./style"],
"_TEMPLATE_":"page1",
"_TITLE_":"Page2.2",
"root":"root",
"a":"h1 - test",
"c":"p - test",
"b":"hallo",
"js$Date": "return Date.now() + ' is the TimeStemp';"
}

3
examples/pages/style.css Normal file
View File

@ -0,0 +1,3 @@
* {
color: green;
}

View File

@ -0,0 +1,21 @@
<!--example html-->
<!--<[:startpage:]>-->
<html>
<head>
<title>Template Example</title>
</head>
<body>
<h1><[a]></h1>
<p><[c]></p>
<p><[b]></p>
<p><[js$Date]></p>
<p> root: <[root]></p>
<p><[Base_Date]></p>
<script>
let c = "<[c]>";
console.log(c);
</script>
</body>
</html>

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
StartSeite
</body>
</html>

1991
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@
"LICENSE"
],
"scripts": {
"test": "mocha",
"test": "mocha ./test/test.test.js",
"publish": "npm publish --access publish"
},
"repository": {
@ -39,6 +39,7 @@
"devDependencies": {
"assert": "^2.0.0",
"chai": "^4.3.4",
"mocha": "^8.4.0"
"mocha": "^8.4.0",
"express": "^4.17.1"
}
}

View File

@ -1,11 +1,12 @@
const fs = require("fs");
const checker = require("typechecker");
//const path = require("path");
const path = require("path");
const jsonmerger = require("./jsonMerger");
//let appdir = path.join(__dirname, "..");
let app = {};
app.__config = require("./config");
app.config = app.__config.getConfig();
// app.__config = require("./config");
// app.config = app.__config.getConfig();
function escapeRegExp(string) {
return string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
@ -35,10 +36,49 @@ app.render = function (pagecode, templatecode) {
}
//TODO
if (templatecode === null || templatecode == undefined) {
templatecode == fs.readFileSync(pagecode["_TEMPLATE_"] + ".html");
if (!templatecode) {
templatecode = fs.readFileSync(
path.join(app.config.templatePath, pagecode["_TEMPLATE_"] + ".tjsste"),
"utf-8"
);
}
let DissolveImports = function (_pagecode, imports) {
let ImportSet = new Set();
let recursive = function (importNames) {
importNames.forEach(function (importName) {
let importPath = importName.startsWith(".")
? path.join(importName)
: path.join(app.config.pagePath, importName);
let importCodeString = fs.readFileSync(importPath, "utf-8");
let importCode = JSON.parse(importCodeString);
if (importCode["_IMPORTS_"] !== undefined) {
recursive(importCode["_IMPORTS_"]);
}
ImportSet.add(importPath);
});
};
recursive(imports);
console.log(ImportSet);
let currentPagecode = _pagecode;
ImportSet.forEach(function (importPath) {
let importCodeString = fs.readFileSync(importPath, "utf-8");
let importCode = JSON.parse(importCodeString);
currentPagecode = jsonmerger.mergeJson(currentPagecode, importCode);
});
pagecode = currentPagecode;
};
//TODO Killed Root Import
app.CONST(pagecode, "_IMPORTS_", DissolveImports);
console.log(pagecode);
app.CONST(pagecode, "_STYLES_", (pagecode, value) => {
let rex = /<head>(.|\n|\t|\r)*?<\/head>/;
let header = templatecode.match(rex);
@ -56,17 +96,15 @@ app.render = function (pagecode, templatecode) {
for (let i in pagecode) {
let value = undefined;
if (new RegExp(/\d*_([A-Z]|[a-z])\w*_/g).test(i)) continue;
if (new RegExp(/js\$([A-Z]*[a-z]*)\w+/g).test(i)) {
if (new RegExp(/\d*_([A-Z]*|[a-z])\w*_/g).test(i)) continue;
if (new RegExp(/js\$([A-Z]*|[a-z]*)\w+/g).test(i)) {
let SE = require("./scriptExecuter");
pagecode[i] = SE(pagecode[i]);
}
value = pagecode[i].toString();
templatecode = replaceAll(templatecode, "<[" + i + "]>", value);
}
return templatecode.replace(new RegExp(/\d*<\[([A-Z]*[a-z]*)\w*\]>/g), "");
return templatecode.replace(new RegExp(/<\[([A-Z]*|[a-z]*)\w*\]>/g), "");
};
module.exports = app;

View File

@ -1,11 +1,48 @@
var engine = require("./engine");
const mergeJson = require("./jsonMerger");
const fs = require("fs");
const path = require("path");
var app = {};
app.config = {
templatePath: __dirname + "\\src\\templates",
pagePath: __dirname + "\\src\\pages",
};
app.render = engine.render;
app.CONST = engine.CONST;
app.renderFile = (filePath) => {
let file = fs.readFileSync(filePath, "utf8");
return engine.render(file);
};
// engine.config = app.config;
app.__config = require("./config");
app.config = app.__config.getConfig();
engine.config = app.config;
// app.expressEngine = (
// config = {
// templatePath: "templates",
// pagePath: "pages",
// }
// ) => {
// config = mergeJson.mergeJson(app.config, config);
// let hasrendered = false;
// return (filePath, options, callback) => {
// if (!hasrendered) {
// app.config.templatePath = path.join(
// options.settings.views,
// config.templatePath
// );
// app.config.pagePath = path.join(options.settings.views, config.pagePath);
// hasrendered = true;
// }
// // define the template engine
// fs.readFile(filePath, function (err, content) {
// content = content.toString();
// // content = mergeJson.mergeJson(JSON.parse(content), options);
// if (err) return callback(new Error(err));
// // this is an extremely simple template engine
// var rendered = app.render(content);
// return callback(null, rendered);
// });
// };
// };
module.exports = app;

View File

@ -19,6 +19,9 @@ function mergeJson(org, ext) {
org[key].push(item);
});
}
else {
org[key] = value;
}
} else {
org[key] = value;
}
@ -31,7 +34,7 @@ function mergeJsons(org, ...ext) {
ext.forEach((element) => {
org = mergeJson(org, element);
});
return org;
return { ...org };
}
module.exports = { mergeJson, mergeJsons };

View File

@ -8,6 +8,9 @@ function Added() {
function outLine(arg) {
outString += "\n" + arg;
}
}
function exec(script) {
@ -31,7 +34,3 @@ function exec(script) {
}
module.exports = exec;
/*
*/

View File

@ -1,14 +1,13 @@
let core_render = require("./core.render.test");
let core_scriptexec = require("./scriptexec.jsste.test");
let core_includeJSSTE = require("./includeJSSTE.test");
let core_render = require("./core.render.test");
let core_scriptexec = require("./scriptexec.jsste.test");
function test()
{
describe("JSSTE CORE", function () {
core_render();
core_scriptexec();
});
function test() {
describe("JSSTE CORE", function () {
core_render();
core_scriptexec();
core_includeJSSTE();
});
}
module.exports = test;
module.exports = test;

21
test/express.test.js Normal file
View File

@ -0,0 +1,21 @@
// //mocha chai test
// require("../src");
// var assert = require("assert");
// var express = require("express");
// var app = express();
// var chai = require("chai");
// var expect = chai.expect;
// function test() {
// describe("express engine", function () {
// it("set view-engine", async function (done) {
// app.set("view-enigne", "jsste");
// app.done();
// });
// });
// }
// module.exports = test;

13
test/includeJSSTE.test.js Normal file
View File

@ -0,0 +1,13 @@
let libfolder = "../src/";
let JSSTE_Engine = require(libfolder);
var chai = require("chai");
var expect = chai.expect;
function test() {
describe("should include JSSTE File", function () {
// JSSTE_Engine.
});
}
module.exports = test;

View File

@ -53,6 +53,24 @@ function test() {
result = JSON.stringify(result);
result.should.equal(JSON.stringify({ a: ["a", "b", "c"], b: "hallo" }));
});
it("should merge 2 jsons with array only in secound json", function () {
let json1 = {};
let json2 = { a: ["c"], b: "hallo" };
let result = jsonmerger.mergeJsons(json1, json2);
result = JSON.stringify(result);
result.should.equal(JSON.stringify({ a: ["c"], b: "hallo" }));
});
it("should merge 2 jsons with array with only in first json", function () {
let json1 = { a: ["a", "b"] };
let json2 = { b: "hallo" };
let result = jsonmerger.mergeJsons(json1, json2);
result = JSON.stringify(result);
result.should.equal(JSON.stringify({ a: ["a", "b"], b: "hallo" }));
});
});
}

View File

@ -21,6 +21,13 @@ function test() {
let result = scriptExecuter(script);
result.should.equal("\nHalloWelt\nHalloWelt");
});
// it("should return script result outLine()", function () {
// let script = "Helloworld";
// let result = scriptExecuter(script);
// result.should.equal("HalloWelt");
// });
});
}
module.exports = test;

346
yarn.lock
View File

@ -7,6 +7,14 @@
"resolved" "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz"
"version" "1.1.2"
"accepts@~1.3.7":
"integrity" "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA=="
"resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz"
"version" "1.3.7"
dependencies:
"mime-types" "~2.1.24"
"negotiator" "0.6.2"
"ansi-colors@4.1.1":
"integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
"resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz"
@ -42,6 +50,11 @@
"resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
"version" "2.0.1"
"array-flatten@1.1.1":
"integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
"resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
"version" "1.1.1"
"assert@^2.0.0":
"integrity" "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A=="
"resolved" "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz"
@ -72,6 +85,22 @@
"resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
"version" "2.2.0"
"body-parser@1.19.0":
"integrity" "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw=="
"resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz"
"version" "1.19.0"
dependencies:
"bytes" "3.1.0"
"content-type" "~1.0.4"
"debug" "2.6.9"
"depd" "~1.1.2"
"http-errors" "1.7.2"
"iconv-lite" "0.4.24"
"on-finished" "~2.3.0"
"qs" "6.7.0"
"raw-body" "2.4.0"
"type-is" "~1.6.17"
"brace-expansion@^1.1.7":
"integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
"resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
@ -92,6 +121,11 @@
"resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz"
"version" "1.3.1"
"bytes@3.1.0":
"integrity" "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
"resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz"
"version" "3.1.0"
"call-bind@^1.0.0", "call-bind@^1.0.2":
"integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
"resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
@ -171,6 +205,35 @@
"resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
"version" "0.0.1"
"content-disposition@0.5.3":
"integrity" "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g=="
"resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz"
"version" "0.5.3"
dependencies:
"safe-buffer" "5.1.2"
"content-type@~1.0.4":
"integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
"resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz"
"version" "1.0.4"
"cookie-signature@1.0.6":
"integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
"resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
"version" "1.0.6"
"cookie@0.4.0":
"integrity" "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
"resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz"
"version" "0.4.0"
"debug@2.6.9":
"integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
"resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
"version" "2.6.9"
dependencies:
"ms" "2.0.0"
"debug@4.3.1":
"integrity" "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz"
@ -197,16 +260,36 @@
dependencies:
"object-keys" "^1.0.12"
"depd@~1.1.2":
"integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
"resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
"version" "1.1.2"
"destroy@~1.0.4":
"integrity" "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
"resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz"
"version" "1.0.4"
"diff@5.0.0":
"integrity" "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w=="
"resolved" "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz"
"version" "5.0.0"
"ee-first@1.1.1":
"integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
"resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
"version" "1.1.1"
"emoji-regex@^8.0.0":
"integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
"resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
"version" "8.0.0"
"encodeurl@~1.0.2":
"integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
"resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
"version" "1.0.2"
"es-abstract@^1.18.5":
"integrity" "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA=="
"resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz"
@ -249,11 +332,57 @@
"resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
"version" "3.1.1"
"escape-html@~1.0.3":
"integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
"resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
"version" "1.0.3"
"escape-string-regexp@4.0.0":
"integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
"resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
"version" "4.0.0"
"etag@~1.8.1":
"integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
"resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
"version" "1.8.1"
"express@^4.17.1":
"integrity" "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g=="
"resolved" "https://registry.npmjs.org/express/-/express-4.17.1.tgz"
"version" "4.17.1"
dependencies:
"accepts" "~1.3.7"
"array-flatten" "1.1.1"
"body-parser" "1.19.0"
"content-disposition" "0.5.3"
"content-type" "~1.0.4"
"cookie" "0.4.0"
"cookie-signature" "1.0.6"
"debug" "2.6.9"
"depd" "~1.1.2"
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"etag" "~1.8.1"
"finalhandler" "~1.1.2"
"fresh" "0.5.2"
"merge-descriptors" "1.0.1"
"methods" "~1.1.2"
"on-finished" "~2.3.0"
"parseurl" "~1.3.3"
"path-to-regexp" "0.1.7"
"proxy-addr" "~2.0.5"
"qs" "6.7.0"
"range-parser" "~1.2.1"
"safe-buffer" "5.1.2"
"send" "0.17.1"
"serve-static" "1.14.1"
"setprototypeof" "1.1.1"
"statuses" "~1.5.0"
"type-is" "~1.6.18"
"utils-merge" "1.0.1"
"vary" "~1.1.2"
"fill-range@^7.0.1":
"integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
"resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
@ -261,6 +390,19 @@
dependencies:
"to-regex-range" "^5.0.1"
"finalhandler@~1.1.2":
"integrity" "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA=="
"resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz"
"version" "1.1.2"
dependencies:
"debug" "2.6.9"
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"on-finished" "~2.3.0"
"parseurl" "~1.3.3"
"statuses" "~1.5.0"
"unpipe" "~1.0.0"
"find-up@5.0.0":
"integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
"resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
@ -279,6 +421,16 @@
"resolved" "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz"
"version" "2.0.5"
"forwarded@0.2.0":
"integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
"resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"
"version" "0.2.0"
"fresh@0.5.2":
"integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
"resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
"version" "0.5.2"
"fs.realpath@^1.0.0":
"integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
"resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
@ -366,6 +518,24 @@
"resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
"version" "1.2.0"
"http-errors@~1.7.2", "http-errors@1.7.2":
"integrity" "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg=="
"resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz"
"version" "1.7.2"
dependencies:
"depd" "~1.1.2"
"inherits" "2.0.3"
"setprototypeof" "1.1.1"
"statuses" ">= 1.5.0 < 2"
"toidentifier" "1.0.0"
"iconv-lite@0.4.24":
"integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="
"resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
"version" "0.4.24"
dependencies:
"safer-buffer" ">= 2.1.2 < 3"
"inflight@^1.0.4":
"integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
"resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
@ -379,6 +549,11 @@
"resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
"version" "2.0.4"
"inherits@2.0.3":
"integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
"resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
"version" "2.0.3"
"internal-slot@^1.0.3":
"integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA=="
"resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz"
@ -388,6 +563,11 @@
"has" "^1.0.3"
"side-channel" "^1.0.4"
"ipaddr.js@1.9.1":
"integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
"resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
"version" "1.9.1"
"is-arguments@^1.0.4":
"integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA=="
"resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz"
@ -546,6 +726,38 @@
dependencies:
"chalk" "^4.0.0"
"media-typer@0.3.0":
"integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
"resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
"version" "0.3.0"
"merge-descriptors@1.0.1":
"integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
"resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
"version" "1.0.1"
"methods@~1.1.2":
"integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
"resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
"version" "1.1.2"
"mime-db@1.49.0":
"integrity" "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
"resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz"
"version" "1.49.0"
"mime-types@~2.1.24":
"integrity" "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A=="
"resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz"
"version" "2.1.32"
dependencies:
"mime-db" "1.49.0"
"mime@1.6.0":
"integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
"resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
"version" "1.6.0"
"minimatch@^3.0.4", "minimatch@3.0.4":
"integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="
"resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
@ -584,6 +796,16 @@
"yargs-parser" "20.2.4"
"yargs-unparser" "2.0.0"
"ms@2.0.0":
"integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
"version" "2.0.0"
"ms@2.1.1":
"integrity" "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"resolved" "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz"
"version" "2.1.1"
"ms@2.1.2":
"integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
@ -599,6 +821,11 @@
"resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz"
"version" "3.1.20"
"negotiator@0.6.2":
"integrity" "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
"resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz"
"version" "0.6.2"
"normalize-path@^3.0.0", "normalize-path@~3.0.0":
"integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
"resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
@ -632,6 +859,13 @@
"has-symbols" "^1.0.1"
"object-keys" "^1.1.1"
"on-finished@~2.3.0":
"integrity" "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
"resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"
"version" "2.3.0"
dependencies:
"ee-first" "1.1.1"
"once@^1.3.0":
"integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E="
"resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
@ -653,6 +887,11 @@
dependencies:
"p-limit" "^3.0.2"
"parseurl@~1.3.3":
"integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
"resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
"version" "1.3.3"
"path-exists@^4.0.0":
"integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
"resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
@ -663,6 +902,11 @@
"resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
"version" "1.0.1"
"path-to-regexp@0.1.7":
"integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
"resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
"version" "0.1.7"
"pathval@^1.1.1":
"integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ=="
"resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz"
@ -673,6 +917,19 @@
"resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz"
"version" "2.3.0"
"proxy-addr@~2.0.5":
"integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="
"resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
"version" "2.0.7"
dependencies:
"forwarded" "0.2.0"
"ipaddr.js" "1.9.1"
"qs@6.7.0":
"integrity" "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
"resolved" "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz"
"version" "6.7.0"
"randombytes@^2.1.0":
"integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="
"resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
@ -680,6 +937,21 @@
dependencies:
"safe-buffer" "^5.1.0"
"range-parser@~1.2.1":
"integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
"resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
"version" "1.2.1"
"raw-body@2.4.0":
"integrity" "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q=="
"resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz"
"version" "2.4.0"
dependencies:
"bytes" "3.1.0"
"http-errors" "1.7.2"
"iconv-lite" "0.4.24"
"unpipe" "1.0.0"
"readdirp@~3.5.0":
"integrity" "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ=="
"resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz"
@ -692,11 +964,35 @@
"resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
"version" "2.1.1"
"safe-buffer@^5.1.0", "safe-buffer@^5.1.2":
"safe-buffer@^5.1.0", "safe-buffer@^5.1.2", "safe-buffer@5.1.2":
"integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
"resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
"version" "5.1.2"
"safer-buffer@>= 2.1.2 < 3":
"integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
"resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
"version" "2.1.2"
"send@0.17.1":
"integrity" "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg=="
"resolved" "https://registry.npmjs.org/send/-/send-0.17.1.tgz"
"version" "0.17.1"
dependencies:
"debug" "2.6.9"
"depd" "~1.1.2"
"destroy" "~1.0.4"
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"etag" "~1.8.1"
"fresh" "0.5.2"
"http-errors" "~1.7.2"
"mime" "1.6.0"
"ms" "2.1.1"
"on-finished" "~2.3.0"
"range-parser" "~1.2.1"
"statuses" "~1.5.0"
"serialize-javascript@5.0.1":
"integrity" "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA=="
"resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz"
@ -704,6 +1000,21 @@
dependencies:
"randombytes" "^2.1.0"
"serve-static@1.14.1":
"integrity" "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg=="
"resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz"
"version" "1.14.1"
dependencies:
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"parseurl" "~1.3.3"
"send" "0.17.1"
"setprototypeof@1.1.1":
"integrity" "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
"resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz"
"version" "1.1.1"
"side-channel@^1.0.4":
"integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
"resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
@ -713,6 +1024,11 @@
"get-intrinsic" "^1.0.2"
"object-inspect" "^1.9.0"
"statuses@>= 1.5.0 < 2", "statuses@~1.5.0":
"integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
"resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
"version" "1.5.0"
"string-width@^1.0.2 || 2":
"integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="
"resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"
@ -786,11 +1102,24 @@
dependencies:
"is-number" "^7.0.0"
"toidentifier@1.0.0":
"integrity" "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
"resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz"
"version" "1.0.0"
"type-detect@^4.0.0", "type-detect@^4.0.5":
"integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
"resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
"version" "4.0.8"
"type-is@~1.6.17", "type-is@~1.6.18":
"integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="
"resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz"
"version" "1.6.18"
dependencies:
"media-typer" "0.3.0"
"mime-types" "~2.1.24"
"typechecker@^7.18.0":
"integrity" "sha512-GjwqmuBuIQOvy0VsuMyjxur1hop/mLgKby61izt4UpT3Knm/7qzXAxpQHVhLK7bgmZjIj9GtIBmh1FMnyEDVBw=="
"resolved" "https://registry.npmjs.org/typechecker/-/typechecker-7.18.0.tgz"
@ -806,6 +1135,11 @@
"has-symbols" "^1.0.2"
"which-boxed-primitive" "^1.0.2"
"unpipe@~1.0.0", "unpipe@1.0.0":
"integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
"resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
"version" "1.0.0"
"util@^0.12.0":
"integrity" "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw=="
"resolved" "https://registry.npmjs.org/util/-/util-0.12.4.tgz"
@ -818,6 +1152,16 @@
"safe-buffer" "^5.1.2"
"which-typed-array" "^1.1.2"
"utils-merge@1.0.1":
"integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
"resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
"version" "1.0.1"
"vary@~1.1.2":
"integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
"resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
"version" "1.1.2"
"which-boxed-primitive@^1.0.2":
"integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg=="
"resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"