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