diff --git a/package-lock.json b/package-lock.json index 8ba472b..755f765 100644 --- a/package-lock.json +++ b/package-lock.json @@ -235,6 +235,12 @@ "integrity": "sha512-mzJX3tIbtadNZQIDbfA9eW+mAjww7GY7WYcfKDGB5SSXMAzI8KD+5fvyX5FqcKtns346+WGwAJJ8cPsDxMz0lw==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/keygrip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.1.tgz", @@ -1492,6 +1498,15 @@ "esprima": "^4.0.0" } }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", @@ -2504,6 +2519,26 @@ } } }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", diff --git a/package.json b/package.json index f949fd4..ae3b22c 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "tsc": "tsc", - "dev": "ts-node-dev -r dotenv/config --respawn --transpile-only ./src/index.ts", + "dev": "ts-node-dev -r dotenv/config -r tsconfig-paths/register --respawn --transpile-only ./src/index.ts", "prod": "tsc && node ./dist/index.js", "tslint-check": "tslint-config-prettier-check ./tslint.json" }, @@ -43,6 +43,7 @@ "@types/pino": "^5.8.10", "pino-pretty": "^3.2.1", "ts-node-dev": "^1.0.0-pre.43", + "tsconfig-paths": "^3.9.0", "tslint": "^5.20.0", "tslint-config-prettier": "^1.18.0", "typescript": "^3.6.3" diff --git a/src/graphql.ts b/src/api.ts similarity index 98% rename from src/graphql.ts rename to src/api.ts index 47d55f3..14a2508 100644 --- a/src/graphql.ts +++ b/src/api.ts @@ -13,13 +13,12 @@ // 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 { ApolloServer, gql } from "apollo-server-express"; import { Kind } from "graphql/language"; import { GraphQLScalarType, GraphQLScalarTypeConfig } from "graphql/type"; import { DateTime } from "luxon"; -import { db } from "./db"; - const typeDefs = gql` type Query { "A simple type for getting started" diff --git a/src/db/index.ts b/src/db/index.ts index 557650e..805fea7 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -13,8 +13,12 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +import { + Extensions, + MigrationRepository, + UserRepository +} from "@kredens/db/repos"; import pgPromise, { IDatabase, IInitOptions } from "pg-promise"; -import { Extensions, MigrationRepository, UserRepository } from "./repos"; type ExtendedProtocol = IDatabase & Extensions; diff --git a/src/db/repos/index.ts b/src/db/repos/index.ts index 522b81a..ae7f553 100644 --- a/src/db/repos/index.ts +++ b/src/db/repos/index.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 { MigrationRepository } from "./migrations"; -import { UserRepository } from "./users"; +import { MigrationRepository } from "@kredens/db/repos/migrations"; +import { UserRepository } from "@kredens/db/repos/users"; export interface Extensions { migrations: MigrationRepository; diff --git a/src/db/repos/migrations.ts b/src/db/repos/migrations.ts index 06649cd..001e520 100644 --- a/src/db/repos/migrations.ts +++ b/src/db/repos/migrations.ts @@ -13,11 +13,11 @@ // 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 { DateTime } from "luxon"; import { IDatabase, IMain } from "pg-promise"; -import logger from "../../logger"; -import { Migration } from "../models"; -import { migrations as sql } from "../sql"; export class MigrationRepository { private db: IDatabase; diff --git a/src/db/repos/users.ts b/src/db/repos/users.ts index bcfceb0..e10db52 100644 --- a/src/db/repos/users.ts +++ b/src/db/repos/users.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 { users as sql } from "@kredens/db/sql"; import argon2 from "argon2"; import { Maybe, None, Some } from "monet"; import { IDatabase, IMain } from "pg-promise"; -import { users as sql } from "../sql"; export class UserRepository { private db: IDatabase; diff --git a/src/index.ts b/src/index.ts index 626ae25..db82041 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,16 +13,16 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +import { server as graphqlServer } from "@kredens/api"; +import { db } from "@kredens/db"; +import logger from "@kredens/logger"; +import authRouter from "@kredens/routes/auth"; +import indexRouter from "@kredens/routes/index"; import cookieParser from "cookie-parser"; import express from "express"; import pinoExpress from "express-pino-logger"; import helmet from "helmet"; import createHttpError from "http-errors"; -import { db } from "./db"; -import { server as graphqlServer } from "./graphql"; -import logger from "./logger"; -import authRouter from "./routes/auth"; -import indexRouter from "./routes/index"; async function main() { await db.tx(async t => { diff --git a/src/routes/auth.ts b/src/routes/auth.ts index 360ba97..04e1b62 100644 --- a/src/routes/auth.ts +++ b/src/routes/auth.ts @@ -13,11 +13,11 @@ // 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 express from "express"; import createHttpError from "http-errors"; import { DateTime } from "luxon"; -import { box, unbox } from "../crypto"; -import { db } from "../db"; const router = express.Router(); diff --git a/tsconfig.json b/tsconfig.json index d0798aa..9e56bba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,6 +6,11 @@ "outDir": "./dist", "moduleResolution": "node", "baseUrl": "./src", + "paths": { + "@kredens/*": [ + "*" + ] + }, "esModuleInterop": true }, "include": [ diff --git a/tslint.json b/tslint.json index 79ff264..2028204 100644 --- a/tslint.json +++ b/tslint.json @@ -7,7 +7,8 @@ "jsRules": {}, "rules": { "interface-name": [ true, "never-prefix"], - "no-submodule-imports": [true, "graphql/language", "graphql/type"] + "no-submodule-imports": [true, "graphql/language", "graphql/type", "@kredens"], + "no-implicit-dependencies": [true, ["@kredens"]] }, "rulesDirectory": [] } \ No newline at end of file