diff --git a/package-lock.json b/package-lock.json index e069fc7..1f4e6fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "sealious-playground", "version": "1.0.1", "license": "ISC", "dependencies": { @@ -13,7 +14,7 @@ "@koa/router": "^10.0.0", "multiple-scripts-tmux": "^1.0.4", "nodemon": "^2.0.7", - "sealious": "^0.13.38", + "sealious": "^0.13.52", "stimulus": "^2.0.0", "tempstream": "^0.0.7" }, @@ -1666,51 +1667,37 @@ } }, "node_modules/ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dependencies": { - "string-width": "^3.0.0" + "string-width": "^4.1.0" } }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/ansi-align/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "ansi-regex": "^4.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/ansi-colors": { @@ -1722,9 +1709,9 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } @@ -3006,7 +2993,8 @@ "node_modules/emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, "node_modules/emojis-list": { "version": "3.0.0", @@ -6625,9 +6613,9 @@ } }, "node_modules/nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dependencies": { "boolbase": "^1.0.0" }, @@ -7887,9 +7875,9 @@ } }, "node_modules/sealious": { - "version": "0.13.43", - "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.13.43.tgz", - "integrity": "sha512-qarucHxBzmK0uyar5/LGmJOMtOK+RRUklGpTrcpCN3L16sX+JnLUSnWcXm1RX9dbhUt/E3xWJgkZ/Xoqoe5uNQ==", + "version": "0.13.52", + "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.13.52.tgz", + "integrity": "sha512-u40mqaI1F7V9ZAobDGq9avKuL4XgdBN00LZ9uC9mQDdYkCqPLHR+n665vTlkM/Y/THzm+L3HPvaY47jaTmCefg==", "dependencies": { "@babel/polyfill": "^7.0.0", "@koa/router": "^10.0.0", @@ -8493,11 +8481,11 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -11257,39 +11245,31 @@ "dev": true }, "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "requires": { - "string-width": "^3.0.0" + "string-width": "^4.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { - "ansi-regex": "^4.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } } } @@ -11300,9 +11280,9 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -12271,7 +12251,8 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, "emojis-list": { "version": "3.0.0", @@ -15042,9 +15023,9 @@ } }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "requires": { "boolbase": "^1.0.0" } @@ -15983,9 +15964,9 @@ } }, "sealious": { - "version": "0.13.43", - "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.13.43.tgz", - "integrity": "sha512-qarucHxBzmK0uyar5/LGmJOMtOK+RRUklGpTrcpCN3L16sX+JnLUSnWcXm1RX9dbhUt/E3xWJgkZ/Xoqoe5uNQ==", + "version": "0.13.52", + "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.13.52.tgz", + "integrity": "sha512-u40mqaI1F7V9ZAobDGq9avKuL4XgdBN00LZ9uC9mQDdYkCqPLHR+n665vTlkM/Y/THzm+L3HPvaY47jaTmCefg==", "requires": { "@babel/polyfill": "^7.0.0", "@koa/router": "^10.0.0", @@ -16480,11 +16461,11 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { diff --git a/package.json b/package.json index 42b6708..4989847 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@koa/router": "^10.0.0", "multiple-scripts-tmux": "^1.0.4", "nodemon": "^2.0.7", - "sealious": "^0.13.38", + "sealious": "^0.13.52", "stimulus": "^2.0.0", "tempstream": "^0.0.7" }, diff --git a/src/back/index.ts b/src/back/index.ts index a4b494b..e05fa01 100644 --- a/src/back/index.ts +++ b/src/back/index.ts @@ -1,9 +1,6 @@ import _locreq from "locreq"; import Sealious from "sealious"; import TheApp from "./app"; -import homepage from "./routes/homepage"; -import tasks from "./routes/tasks"; -import login from "./routes/login"; const locreq = _locreq(__dirname); declare module "koa" { @@ -14,7 +11,7 @@ declare module "koa" { } } -const app = new TheApp(); +export const app = new TheApp(); void app .start() .then(() => { @@ -32,9 +29,7 @@ void app } }); -const router = app.HTTPServer.router; -router.use("/", homepage.routes()); -router.use("/tasks", tasks.routes()); -router.use("/login", login.routes()); +export const router = app.HTTPServer.router; +require("./routes/index"); app.HTTPServer.addStaticRoute("/", locreq.resolve("public")); diff --git a/src/back/routes/homepage.ts b/src/back/routes/index.ts similarity index 50% rename from src/back/routes/homepage.ts rename to src/back/routes/index.ts index 571b108..af20522 100644 --- a/src/back/routes/homepage.ts +++ b/src/back/routes/index.ts @@ -1,19 +1,18 @@ -import Router from "@koa/router"; -import { Context, Middlewares } from "sealious"; +import { Middlewares } from "sealious"; import html from "../html"; import { NewTask, TaskList } from "../views/tasks"; import { BaseContext } from "koa"; import { Readable } from "stream"; +import { tempstream } from "tempstream"; +import { router } from ".."; -const router = new Router(); - -export async function MainView(ctx: BaseContext): Promise { +export function MainView(ctx: BaseContext): Readable { return html( ctx, - /* HTML */ ` My ToDo App + /* HTML */ tempstream` My ToDo App

My ToDo App

- ${await TaskList(ctx.$context)} ${NewTask()} + ${TaskList(ctx.$context)} ${NewTask()} ` ); } @@ -22,4 +21,5 @@ router.get("/", Middlewares.extractContext(), async (ctx) => { ctx.body = MainView(ctx); }); -export default router; +require("./login/index"); +require("./tasks/index"); diff --git a/src/back/routes/login.ts b/src/back/routes/login/index.ts similarity index 88% rename from src/back/routes/login.ts rename to src/back/routes/login/index.ts index 12095d4..c287562 100644 --- a/src/back/routes/login.ts +++ b/src/back/routes/login/index.ts @@ -1,16 +1,13 @@ -import Router from "@koa/router"; import { Middlewares } from "sealious"; +import { router } from "../.."; +import html from "../../html"; -import html from "../html"; - -const router = new Router(); - -router.get("/", Middlewares.extractContext(), async (ctx) => { +router.get("/login", Middlewares.extractContext(), async (ctx) => { ctx.body = html(ctx, LoginForm()); }); router.post( - "/", + "/login", Middlewares.extractContext(), Middlewares.parseBody(), async (ctx) => { @@ -35,8 +32,6 @@ router.post( } ); -export default router; - function LoginForm(username = "", error_message?: string): string { if (error_message) { error_message = diff --git a/src/back/routes/tasks.ts b/src/back/routes/tasks/index.ts similarity index 68% rename from src/back/routes/tasks.ts rename to src/back/routes/tasks/index.ts index b655b0d..1fab081 100644 --- a/src/back/routes/tasks.ts +++ b/src/back/routes/tasks/index.ts @@ -1,11 +1,9 @@ -import Router from "@koa/router"; import { Middlewares } from "sealious"; -import { MainView } from "./homepage"; - -const router = new Router(); +import { MainView } from ".."; +import { router } from "../.."; router.post( - "/", + "/tasks", Middlewares.extractContext(), Middlewares.parseBody(), async (ctx) => { @@ -19,7 +17,7 @@ router.post( } ); -router.delete("/:task_id", Middlewares.extractContext(), async (ctx) => { +router.delete("/tasks/:task_id", Middlewares.extractContext(), async (ctx) => { const task = await ctx.$app.collections.tasks.getByID( ctx.$context, ctx.params.task_id @@ -27,5 +25,3 @@ router.delete("/:task_id", Middlewares.extractContext(), async (ctx) => { await task.remove(ctx.$context); ctx.body = MainView(ctx); }); - -export default router;