You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.1 KiB
TypeScript
88 lines
2.1 KiB
TypeScript
2 years ago
|
import _locreq from "locreq";
|
||
|
import { default as Sealious, App, LoggerMailer, SMTPMailer } from "sealious";
|
||
|
import { LoggerLevel } from "sealious/@types/src/app/logger";
|
||
|
import { collections } from "./collections/collections";
|
||
|
import { sleep } from "./util";
|
||
|
const locreq = _locreq(__dirname);
|
||
|
|
||
|
const PORT = process.env.SEALIOUS_PORT ? parseInt(process.env.SEALIOUS_PORT) : 8080;
|
||
|
const base_url = process.env.SEALIOUS_BASE_URL || `http://localhost:${PORT}`;
|
||
|
const MONGO_PORT = process.env.SEALIOUS_MONGO_PORT
|
||
|
? parseInt(process.env.SEALIOUS_MONGO_PORT)
|
||
|
: 20747;
|
||
|
const MONGO_HOST = process.env.SEALIOUS_MONGO_HOST || "127.0.0.1";
|
||
|
|
||
|
declare module "koa" {
|
||
|
interface BaseContext {
|
||
|
$context: Sealious.Context;
|
||
|
$app: TheApp;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default class TheApp extends App {
|
||
|
config = {
|
||
|
upload_path: locreq.resolve("uploaded_files"),
|
||
|
datastore_mongo: {
|
||
|
host: MONGO_HOST,
|
||
|
port: MONGO_PORT,
|
||
|
db_name: "sealious-app",
|
||
|
},
|
||
|
email: {
|
||
|
from_address: "sealious-app@example.com",
|
||
|
from_name: "sealious-app app",
|
||
|
},
|
||
|
logger: {
|
||
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||
|
level: "info" as LoggerLevel,
|
||
|
},
|
||
|
"www-server": {
|
||
|
port: PORT,
|
||
|
},
|
||
|
core: {
|
||
|
environment: <const>"production", // to send the full html emails
|
||
|
},
|
||
|
};
|
||
|
manifest = {
|
||
|
name: "sealious-app",
|
||
|
logo: locreq.resolve("assets/logo.png"),
|
||
|
version: "0.0.1",
|
||
|
default_language: "en",
|
||
|
base_url,
|
||
|
admin_email: "admin@example.com",
|
||
|
colors: {
|
||
|
primary: "#5294a1",
|
||
|
},
|
||
|
};
|
||
|
collections = collections;
|
||
|
mailer =
|
||
|
process.env.SEALIOUS_MAILER === "mailcatcher"
|
||
|
? new SMTPMailer({
|
||
|
host: "mailcatcher",
|
||
|
port: 1025,
|
||
|
user: "any",
|
||
|
password: "any",
|
||
|
})
|
||
|
: new LoggerMailer();
|
||
|
|
||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
|
|
||
|
async start() {
|
||
|
await super.start();
|
||
|
await this.collections.posts.populate();
|
||
|
}
|
||
|
|
||
|
async stop() {
|
||
|
await super.stop();
|
||
|
}
|
||
|
|
||
|
initRouter() {
|
||
|
this.HTTPServer.router.use("/", async (_, next) => {
|
||
|
const ms = parseInt(process.env.NETWORK_DELAY || "0");
|
||
|
console.log("NETWORK DELAY!", ms);
|
||
|
await sleep(ms);
|
||
|
await next();
|
||
|
});
|
||
|
super.initRouter();
|
||
|
}
|
||
|
}
|