From fd264d3d4162a59635885a96bb26204b8f8b407a Mon Sep 17 00:00:00 2001 From: ModZero Date: Sat, 26 Oct 2019 21:17:52 +0200 Subject: [PATCH] Reorganize the codebase a bit for a cleaner layout --- package.json | 6 +++--- src/{ => server}/auth.ts | 4 ++-- src/{ => server}/crypto.ts | 0 src/{ => server}/custom.d.ts | 2 +- src/{ => server}/db/index.ts | 2 +- src/{ => server}/db/models.ts | 0 src/{ => server}/db/repos/index.ts | 8 ++++---- src/{ => server}/db/repos/migrations.ts | 6 +++--- src/{ => server}/db/repos/sessions.ts | 4 ++-- src/{ => server}/db/repos/tasks.ts | 4 ++-- src/{ => server}/db/repos/users.ts | 4 ++-- src/{ => server}/db/sql/index.ts | 0 src/{ => server}/index.ts | 14 +++++++------- src/{ => server}/logger.ts | 0 src/{ => server}/routes/auth.ts | 2 +- src/{ => server}/routes/bootstrap.ts | 4 ++-- src/{ => server}/routes/home.ts | 0 src/{ => server}/routes/index.ts | 0 src/{ => server}/sessions.ts | 2 +- src/server/tslint.json | 13 +++++++++++++ tslint.json | 9 +-------- 21 files changed, 45 insertions(+), 39 deletions(-) rename src/{ => server}/auth.ts (93%) rename src/{ => server}/crypto.ts (100%) rename src/{ => server}/custom.d.ts (95%) rename src/{ => server}/db/index.ts (98%) rename src/{ => server}/db/models.ts (100%) rename src/{ => server}/db/repos/index.ts (77%) rename src/{ => server}/db/repos/migrations.ts (92%) rename src/{ => server}/db/repos/sessions.ts (94%) rename src/{ => server}/db/repos/tasks.ts (94%) rename src/{ => server}/db/repos/users.ts (94%) rename src/{ => server}/db/sql/index.ts (100%) rename src/{ => server}/index.ts (87%) rename src/{ => server}/logger.ts (100%) rename src/{ => server}/routes/auth.ts (96%) rename src/{ => server}/routes/bootstrap.ts (94%) rename src/{ => server}/routes/home.ts (100%) rename src/{ => server}/routes/index.ts (100%) rename src/{ => server}/sessions.ts (98%) create mode 100644 src/server/tslint.json diff --git a/package.json b/package.json index 5fff49d..486a8ad 100644 --- a/package.json +++ b/package.json @@ -2,12 +2,12 @@ "name": "kredens", "version": "0.1.0", "description": "Where I keep my spoons", - "main": "src/index.ts", + "main": "src/server/index.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "tsc": "tsc --incremental ", - "dev": "ts-node-dev -r dotenv/config --watch src/**/*.sql -r tsconfig-paths/register --respawn --transpile-only ./src/index.ts", - "prod": "tsc --incremental && node ./dist/src/index.js", + "dev": "ts-node-dev -r dotenv/config --watch src/**/*.sql -r tsconfig-paths/register --respawn --transpile-only ./src/server/index.ts", + "prod": "tsc --incremental && node ./dist/src/server/index.js", "tslint-check": "tslint-config-prettier-check ./tslint.json", "migrate": "tsc --incremental && node ./dist/src/scripts/migrate.js" }, diff --git a/src/auth.ts b/src/server/auth.ts similarity index 93% rename from src/auth.ts rename to src/server/auth.ts index 9dad48b..cdecb5a 100644 --- a/src/auth.ts +++ b/src/server/auth.ts @@ -13,8 +13,8 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { db } from "@kredens/db"; -import { User } from "@kredens/db/models"; +import { db } from "@kredens/server/db"; +import { User } from "@kredens/server/db/models"; import express from "express"; import createHttpError from "http-errors"; import { None } from "monet"; diff --git a/src/crypto.ts b/src/server/crypto.ts similarity index 100% rename from src/crypto.ts rename to src/server/crypto.ts diff --git a/src/custom.d.ts b/src/server/custom.d.ts similarity index 95% rename from src/custom.d.ts rename to src/server/custom.d.ts index 15c4caa..1333275 100644 --- a/src/custom.d.ts +++ b/src/server/custom.d.ts @@ -13,7 +13,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { User } from "@kredens/db/models"; +import { User } from "@kredens/server/db/models"; import { Cookie } from "@holdyourwaffle/express-session"; declare global { diff --git a/src/db/index.ts b/src/server/db/index.ts similarity index 98% rename from src/db/index.ts rename to src/server/db/index.ts index 4e0e267..f564f7a 100644 --- a/src/db/index.ts +++ b/src/server/db/index.ts @@ -19,7 +19,7 @@ import { SessionRepository, TaskRepository, UserRepository -} from "@kredens/db/repos"; +} from "@kredens/server/db/repos"; import { DateTime } from "luxon"; import pg from "pg"; import pgPromise, { IDatabase, IInitOptions } from "pg-promise"; diff --git a/src/db/models.ts b/src/server/db/models.ts similarity index 100% rename from src/db/models.ts rename to src/server/db/models.ts diff --git a/src/db/repos/index.ts b/src/server/db/repos/index.ts similarity index 77% rename from src/db/repos/index.ts rename to src/server/db/repos/index.ts index d70efb2..407c2db 100644 --- a/src/db/repos/index.ts +++ b/src/server/db/repos/index.ts @@ -13,10 +13,10 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { MigrationRepository } from "@kredens/db/repos/migrations"; -import { SessionRepository } from "@kredens/db/repos/sessions"; -import { TaskRepository } from "@kredens/db/repos/tasks"; -import { UserRepository } from "@kredens/db/repos/users"; +import { MigrationRepository } from "@kredens/server/db/repos/migrations"; +import { SessionRepository } from "@kredens/server/db/repos/sessions"; +import { TaskRepository } from "@kredens/server/db/repos/tasks"; +import { UserRepository } from "@kredens/server/db/repos/users"; export interface Extensions { migrations: MigrationRepository; diff --git a/src/db/repos/migrations.ts b/src/server/db/repos/migrations.ts similarity index 92% rename from src/db/repos/migrations.ts rename to src/server/db/repos/migrations.ts index 7558573..9d521e2 100644 --- a/src/db/repos/migrations.ts +++ b/src/server/db/repos/migrations.ts @@ -13,9 +13,9 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { Migration } from "@kredens/db/models"; -import { migrations as sql } from "@kredens/db/sql"; -import logger from "@kredens/logger"; +import { Migration } from "@kredens/server/db/models"; +import { migrations as sql } from "@kredens/server/db/sql"; +import logger from "@kredens/server/logger"; import { DateTime } from "luxon"; import { IDatabase, IMain } from "pg-promise"; diff --git a/src/db/repos/sessions.ts b/src/server/db/repos/sessions.ts similarity index 94% rename from src/db/repos/sessions.ts rename to src/server/db/repos/sessions.ts index 51e1872..7667664 100644 --- a/src/db/repos/sessions.ts +++ b/src/server/db/repos/sessions.ts @@ -13,8 +13,8 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { Session } from "@kredens/db/models"; -import { sessions as sql } from "@kredens/db/sql"; +import { Session } from "@kredens/server/db/models"; +import { sessions as sql } from "@kredens/server/db/sql"; import { DateTime } from "luxon"; import { Maybe } from "monet"; import { IDatabase, IMain } from "pg-promise"; diff --git a/src/db/repos/tasks.ts b/src/server/db/repos/tasks.ts similarity index 94% rename from src/db/repos/tasks.ts rename to src/server/db/repos/tasks.ts index 0d72c62..2587efb 100644 --- a/src/db/repos/tasks.ts +++ b/src/server/db/repos/tasks.ts @@ -13,8 +13,8 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { ScheduleType, Task } from "@kredens/db/models"; -import { tasks as sql } from "@kredens/db/sql"; +import { ScheduleType, Task } from "@kredens/server/db/models"; +import { tasks as sql } from "@kredens/server/db/sql"; import { IDatabase, IMain } from "pg-promise"; function rowToTask(row: any): Task { diff --git a/src/db/repos/users.ts b/src/server/db/repos/users.ts similarity index 94% rename from src/db/repos/users.ts rename to src/server/db/repos/users.ts index 829e9b7..768e568 100644 --- a/src/db/repos/users.ts +++ b/src/server/db/repos/users.ts @@ -13,8 +13,8 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { User } from "@kredens/db/models"; -import { users as sql } from "@kredens/db/sql"; +import { User } from "@kredens/server/db/models"; +import { users as sql } from "@kredens/server/db/sql"; import argon2 from "argon2"; import { Maybe, None, Some } from "monet"; import { IDatabase, IMain } from "pg-promise"; diff --git a/src/db/sql/index.ts b/src/server/db/sql/index.ts similarity index 100% rename from src/db/sql/index.ts rename to src/server/db/sql/index.ts diff --git a/src/index.ts b/src/server/index.ts similarity index 87% rename from src/index.ts rename to src/server/index.ts index 31daaf1..998cca3 100644 --- a/src/index.ts +++ b/src/server/index.ts @@ -14,12 +14,12 @@ // along with this program. If not, see . import session, { SessionOptions } from "@holdyourwaffle/express-session"; -import { authMiddleware } from "@kredens/auth"; -import { db } from "@kredens/db"; -import logger from "@kredens/logger"; -import indexRouter from "@kredens/routes/"; -import bootstrapRouter from "@kredens/routes/bootstrap"; -import { PgStore } from "@kredens/sessions"; +import { authMiddleware } from "@kredens/server/auth"; +import { db } from "@kredens/server/db"; +import logger from "@kredens/server/logger"; +import indexRouter from "@kredens/server/routes"; +import bootstrapRouter from "@kredens/server/routes/bootstrap"; +import { PgStore } from "@kredens/server/sessions"; import cookieParser from "cookie-parser"; import csrf from "csurf"; import express from "express"; @@ -44,7 +44,7 @@ async function main() { const webpackDevMiddleware = await import("webpack-dev-middleware").then( p => p.default ); - const config = await import("../webpack.config").then(p => p.default); + const config = await import("../../webpack.config").then(p => p.default); const compiler = webpack(config); app.use( diff --git a/src/logger.ts b/src/server/logger.ts similarity index 100% rename from src/logger.ts rename to src/server/logger.ts diff --git a/src/routes/auth.ts b/src/server/routes/auth.ts similarity index 96% rename from src/routes/auth.ts rename to src/server/routes/auth.ts index 3495419..7825a4d 100644 --- a/src/routes/auth.ts +++ b/src/server/routes/auth.ts @@ -13,7 +13,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { db } from "@kredens/db"; +import { db } from "@kredens/server/db"; import express from "express"; const router = express.Router(); diff --git a/src/routes/bootstrap.ts b/src/server/routes/bootstrap.ts similarity index 94% rename from src/routes/bootstrap.ts rename to src/server/routes/bootstrap.ts index 96a1b07..307f6a3 100644 --- a/src/routes/bootstrap.ts +++ b/src/server/routes/bootstrap.ts @@ -13,8 +13,8 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import { box, unbox } from "@kredens/crypto"; -import { db } from "@kredens/db"; +import { box, unbox } from "@kredens/server/crypto"; +import { db } from "@kredens/server/db"; import express from "express"; import createHttpError from "http-errors"; import { DateTime } from "luxon"; diff --git a/src/routes/home.ts b/src/server/routes/home.ts similarity index 100% rename from src/routes/home.ts rename to src/server/routes/home.ts diff --git a/src/routes/index.ts b/src/server/routes/index.ts similarity index 100% rename from src/routes/index.ts rename to src/server/routes/index.ts diff --git a/src/sessions.ts b/src/server/sessions.ts similarity index 98% rename from src/sessions.ts rename to src/server/sessions.ts index 97cfe6e..61ea4dc 100644 --- a/src/sessions.ts +++ b/src/server/sessions.ts @@ -14,7 +14,7 @@ // along with this program. If not, see . import { Store } from "@holdyourwaffle/express-session"; -import { db } from "@kredens/db"; +import { db } from "@kredens/server/db"; import { DateTime, Duration } from "luxon"; export class PgStore extends Store { diff --git a/src/server/tslint.json b/src/server/tslint.json new file mode 100644 index 0000000..8e66533 --- /dev/null +++ b/src/server/tslint.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tslint.json", + "rules": { + "no-implicit-dependencies": [ + true, + ["@kredens/server"] + ], + "no-submodule-imports": [ + true, + "@kredens/server" + ] + } +} diff --git a/tslint.json b/tslint.json index eaed67f..cb17e93 100644 --- a/tslint.json +++ b/tslint.json @@ -4,14 +4,7 @@ "jsRules": {}, "rules": { "interface-name": [true, "never-prefix"], - "no-submodule-imports": [ - true, - "graphql/language", - "graphql/type", - "vue-loader/lib/plugin", - "@kredens" - ], - "no-implicit-dependencies": [true, ["@kredens", "@kredens/frontend"]], + "no-implicit-dependencies": [true, ["@kredens"]], "object-literal-sort-keys": [ true, "match-declaration-order-only",