Tonne of debugging - getting ready for the production builds
This commit is contained in:
6
api/dist/config/database.d.ts
vendored
Normal file
6
api/dist/config/database.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
declare const prisma: PrismaClient<{
|
||||
log: ("error" | "query" | "warn")[];
|
||||
}, "error" | "query" | "warn", import("@prisma/client/runtime/library").DefaultArgs>;
|
||||
export { prisma };
|
||||
//# sourceMappingURL=database.d.ts.map
|
||||
1
api/dist/config/database.d.ts.map
vendored
Normal file
1
api/dist/config/database.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,QAAA,MAAM,MAAM;;oFAEV,CAAC;AAEH,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
||||
10
api/dist/config/database.js
vendored
Normal file
10
api/dist/config/database.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.prisma = void 0;
|
||||
const client_1 = require("@prisma/client");
|
||||
const env_1 = require("./env");
|
||||
const prisma = new client_1.PrismaClient({
|
||||
log: env_1.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'],
|
||||
});
|
||||
exports.prisma = prisma;
|
||||
//# sourceMappingURL=database.js.map
|
||||
1
api/dist/config/database.js.map
vendored
Normal file
1
api/dist/config/database.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAC9C,+BAA4B;AAE5B,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC;IAC9B,GAAG,EAAE,SAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAC7E,CAAC,CAAC;AAEM,wBAAM"}
|
||||
394
api/dist/config/env.d.ts
vendored
Normal file
394
api/dist/config/env.d.ts
vendored
Normal file
@@ -0,0 +1,394 @@
|
||||
import { z } from 'zod';
|
||||
declare const envSchema: z.ZodObject<{
|
||||
NODE_ENV: z.ZodDefault<z.ZodEnum<["development", "production", "test"]>>;
|
||||
PORT: z.ZodDefault<z.ZodNumber>;
|
||||
API_URL: z.ZodDefault<z.ZodString>;
|
||||
ADMIN_URL: z.ZodDefault<z.ZodString>;
|
||||
DOMAIN: z.ZodDefault<z.ZodString>;
|
||||
DATABASE_URL: z.ZodString;
|
||||
REDIS_URL: z.ZodDefault<z.ZodString>;
|
||||
JWT_ACCESS_SECRET: z.ZodString;
|
||||
JWT_REFRESH_SECRET: z.ZodString;
|
||||
JWT_ACCESS_EXPIRY: z.ZodDefault<z.ZodString>;
|
||||
JWT_REFRESH_EXPIRY: z.ZodDefault<z.ZodString>;
|
||||
ENCRYPTION_KEY: z.ZodOptional<z.ZodString>;
|
||||
INITIAL_ADMIN_EMAIL: z.ZodDefault<z.ZodString>;
|
||||
INITIAL_ADMIN_PASSWORD: z.ZodDefault<z.ZodString>;
|
||||
SMTP_HOST: z.ZodDefault<z.ZodString>;
|
||||
SMTP_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
SMTP_USER: z.ZodDefault<z.ZodString>;
|
||||
SMTP_PASS: z.ZodDefault<z.ZodString>;
|
||||
SMTP_FROM: z.ZodDefault<z.ZodString>;
|
||||
SMTP_FROM_NAME: z.ZodDefault<z.ZodString>;
|
||||
EMAIL_TEST_MODE: z.ZodDefault<z.ZodString>;
|
||||
TEST_EMAIL_RECIPIENT: z.ZodDefault<z.ZodString>;
|
||||
LISTMONK_URL: z.ZodDefault<z.ZodString>;
|
||||
LISTMONK_ADMIN_USER: z.ZodDefault<z.ZodString>;
|
||||
LISTMONK_ADMIN_PASSWORD: z.ZodDefault<z.ZodString>;
|
||||
LISTMONK_SYNC_ENABLED: z.ZodDefault<z.ZodString>;
|
||||
LISTMONK_PROXY_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
REPRESENT_API_URL: z.ZodDefault<z.ZodString>;
|
||||
CORS_ORIGINS: z.ZodDefault<z.ZodString>;
|
||||
RATE_LIMIT_WINDOW_MS: z.ZodDefault<z.ZodNumber>;
|
||||
RATE_LIMIT_MAX: z.ZodDefault<z.ZodNumber>;
|
||||
MAPBOX_API_KEY: z.ZodOptional<z.ZodString>;
|
||||
GEOCODING_RATE_LIMIT_MS: z.ZodDefault<z.ZodNumber>;
|
||||
GEOCODING_CACHE_ENABLED: z.ZodDefault<z.ZodString>;
|
||||
GEOCODING_CACHE_TTL_HOURS: z.ZodDefault<z.ZodNumber>;
|
||||
GOOGLE_MAPS_API_KEY: z.ZodOptional<z.ZodString>;
|
||||
GOOGLE_MAPS_ENABLED: z.ZodDefault<z.ZodString>;
|
||||
GEOCODING_PARALLEL_ENABLED: z.ZodDefault<z.ZodString>;
|
||||
GEOCODING_BATCH_SIZE: z.ZodDefault<z.ZodNumber>;
|
||||
BULK_GEOCODE_ENABLED: z.ZodDefault<z.ZodString>;
|
||||
BULK_GEOCODE_MAX_BATCH: z.ZodDefault<z.ZodNumber>;
|
||||
NOCODB_URL: z.ZodDefault<z.ZodString>;
|
||||
NOCODB_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
NOCODB_EMBED_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
N8N_URL: z.ZodDefault<z.ZodString>;
|
||||
N8N_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
N8N_EMBED_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
GITEA_URL: z.ZodDefault<z.ZodString>;
|
||||
GITEA_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
GITEA_EMBED_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
MAILHOG_URL: z.ZodDefault<z.ZodString>;
|
||||
MAILHOG_EMBED_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
MINI_QR_URL: z.ZodDefault<z.ZodString>;
|
||||
MINI_QR_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
MINI_QR_EMBED_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
EXCALIDRAW_URL: z.ZodDefault<z.ZodString>;
|
||||
EXCALIDRAW_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
EXCALIDRAW_EMBED_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
PANGOLIN_API_URL: z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>;
|
||||
PANGOLIN_API_KEY: z.ZodDefault<z.ZodString>;
|
||||
PANGOLIN_ORG_ID: z.ZodDefault<z.ZodString>;
|
||||
PANGOLIN_SITE_ID: z.ZodDefault<z.ZodString>;
|
||||
PANGOLIN_ENDPOINT: z.ZodDefault<z.ZodString>;
|
||||
PANGOLIN_NEWT_ID: z.ZodDefault<z.ZodString>;
|
||||
PANGOLIN_NEWT_SECRET: z.ZodDefault<z.ZodString>;
|
||||
NAR_DATA_DIR: z.ZodDefault<z.ZodString>;
|
||||
ENABLE_MEDIA_FEATURES: z.ZodDefault<z.ZodString>;
|
||||
MEDIA_API_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
MEDIA_API_PUBLIC_URL: z.ZodDefault<z.ZodString>;
|
||||
MEDIA_ROOT: z.ZodDefault<z.ZodString>;
|
||||
MEDIA_UPLOADS: z.ZodDefault<z.ZodString>;
|
||||
MAX_UPLOAD_SIZE_GB: z.ZodDefault<z.ZodNumber>;
|
||||
PUBLIC_MEDIA_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
CODE_SERVER_URL: z.ZodDefault<z.ZodString>;
|
||||
CODE_SERVER_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
MKDOCS_PREVIEW_URL: z.ZodDefault<z.ZodString>;
|
||||
MKDOCS_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
MKDOCS_DOCS_PATH: z.ZodDefault<z.ZodString>;
|
||||
MKDOCS_CONFIG_PATH: z.ZodDefault<z.ZodString>;
|
||||
MKDOCS_CONTAINER_NAME: z.ZodDefault<z.ZodString>;
|
||||
MKDOCS_SITE_SERVER_URL: z.ZodDefault<z.ZodString>;
|
||||
MKDOCS_SITE_SERVER_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
PROMETHEUS_URL: z.ZodDefault<z.ZodString>;
|
||||
PROMETHEUS_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
GRAFANA_URL: z.ZodDefault<z.ZodString>;
|
||||
GRAFANA_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
ALERTMANAGER_URL: z.ZodDefault<z.ZodString>;
|
||||
ALERTMANAGER_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
CADVISOR_URL: z.ZodDefault<z.ZodString>;
|
||||
CADVISOR_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
NODE_EXPORTER_URL: z.ZodDefault<z.ZodString>;
|
||||
NODE_EXPORTER_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
REDIS_EXPORTER_URL: z.ZodDefault<z.ZodString>;
|
||||
REDIS_EXPORTER_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
GOTIFY_URL: z.ZodDefault<z.ZodString>;
|
||||
GOTIFY_PORT: z.ZodDefault<z.ZodNumber>;
|
||||
}, "strip", z.ZodTypeAny, {
|
||||
NODE_ENV: "development" | "production" | "test";
|
||||
PORT: number;
|
||||
API_URL: string;
|
||||
ADMIN_URL: string;
|
||||
DOMAIN: string;
|
||||
DATABASE_URL: string;
|
||||
REDIS_URL: string;
|
||||
JWT_ACCESS_SECRET: string;
|
||||
JWT_REFRESH_SECRET: string;
|
||||
JWT_ACCESS_EXPIRY: string;
|
||||
JWT_REFRESH_EXPIRY: string;
|
||||
INITIAL_ADMIN_EMAIL: string;
|
||||
INITIAL_ADMIN_PASSWORD: string;
|
||||
SMTP_HOST: string;
|
||||
SMTP_PORT: number;
|
||||
SMTP_USER: string;
|
||||
SMTP_PASS: string;
|
||||
SMTP_FROM: string;
|
||||
SMTP_FROM_NAME: string;
|
||||
EMAIL_TEST_MODE: string;
|
||||
TEST_EMAIL_RECIPIENT: string;
|
||||
LISTMONK_URL: string;
|
||||
LISTMONK_ADMIN_USER: string;
|
||||
LISTMONK_ADMIN_PASSWORD: string;
|
||||
LISTMONK_SYNC_ENABLED: string;
|
||||
LISTMONK_PROXY_PORT: number;
|
||||
REPRESENT_API_URL: string;
|
||||
CORS_ORIGINS: string;
|
||||
RATE_LIMIT_WINDOW_MS: number;
|
||||
RATE_LIMIT_MAX: number;
|
||||
GEOCODING_RATE_LIMIT_MS: number;
|
||||
GEOCODING_CACHE_ENABLED: string;
|
||||
GEOCODING_CACHE_TTL_HOURS: number;
|
||||
GOOGLE_MAPS_ENABLED: string;
|
||||
GEOCODING_PARALLEL_ENABLED: string;
|
||||
GEOCODING_BATCH_SIZE: number;
|
||||
BULK_GEOCODE_ENABLED: string;
|
||||
BULK_GEOCODE_MAX_BATCH: number;
|
||||
NOCODB_URL: string;
|
||||
NOCODB_PORT: number;
|
||||
NOCODB_EMBED_PORT: number;
|
||||
N8N_URL: string;
|
||||
N8N_PORT: number;
|
||||
N8N_EMBED_PORT: number;
|
||||
GITEA_URL: string;
|
||||
GITEA_PORT: number;
|
||||
GITEA_EMBED_PORT: number;
|
||||
MAILHOG_URL: string;
|
||||
MAILHOG_EMBED_PORT: number;
|
||||
MINI_QR_URL: string;
|
||||
MINI_QR_PORT: number;
|
||||
MINI_QR_EMBED_PORT: number;
|
||||
EXCALIDRAW_URL: string;
|
||||
EXCALIDRAW_PORT: number;
|
||||
EXCALIDRAW_EMBED_PORT: number;
|
||||
PANGOLIN_API_URL: string;
|
||||
PANGOLIN_API_KEY: string;
|
||||
PANGOLIN_ORG_ID: string;
|
||||
PANGOLIN_SITE_ID: string;
|
||||
PANGOLIN_ENDPOINT: string;
|
||||
PANGOLIN_NEWT_ID: string;
|
||||
PANGOLIN_NEWT_SECRET: string;
|
||||
NAR_DATA_DIR: string;
|
||||
ENABLE_MEDIA_FEATURES: string;
|
||||
MEDIA_API_PORT: number;
|
||||
MEDIA_API_PUBLIC_URL: string;
|
||||
MEDIA_ROOT: string;
|
||||
MEDIA_UPLOADS: string;
|
||||
MAX_UPLOAD_SIZE_GB: number;
|
||||
PUBLIC_MEDIA_PORT: number;
|
||||
CODE_SERVER_URL: string;
|
||||
CODE_SERVER_PORT: number;
|
||||
MKDOCS_PREVIEW_URL: string;
|
||||
MKDOCS_PORT: number;
|
||||
MKDOCS_DOCS_PATH: string;
|
||||
MKDOCS_CONFIG_PATH: string;
|
||||
MKDOCS_CONTAINER_NAME: string;
|
||||
MKDOCS_SITE_SERVER_URL: string;
|
||||
MKDOCS_SITE_SERVER_PORT: number;
|
||||
PROMETHEUS_URL: string;
|
||||
PROMETHEUS_PORT: number;
|
||||
GRAFANA_URL: string;
|
||||
GRAFANA_PORT: number;
|
||||
ALERTMANAGER_URL: string;
|
||||
ALERTMANAGER_PORT: number;
|
||||
CADVISOR_URL: string;
|
||||
CADVISOR_PORT: number;
|
||||
NODE_EXPORTER_URL: string;
|
||||
NODE_EXPORTER_PORT: number;
|
||||
REDIS_EXPORTER_URL: string;
|
||||
REDIS_EXPORTER_PORT: number;
|
||||
GOTIFY_URL: string;
|
||||
GOTIFY_PORT: number;
|
||||
ENCRYPTION_KEY?: string | undefined;
|
||||
MAPBOX_API_KEY?: string | undefined;
|
||||
GOOGLE_MAPS_API_KEY?: string | undefined;
|
||||
}, {
|
||||
DATABASE_URL: string;
|
||||
JWT_ACCESS_SECRET: string;
|
||||
JWT_REFRESH_SECRET: string;
|
||||
NODE_ENV?: "development" | "production" | "test" | undefined;
|
||||
PORT?: number | undefined;
|
||||
API_URL?: string | undefined;
|
||||
ADMIN_URL?: string | undefined;
|
||||
DOMAIN?: string | undefined;
|
||||
REDIS_URL?: string | undefined;
|
||||
JWT_ACCESS_EXPIRY?: string | undefined;
|
||||
JWT_REFRESH_EXPIRY?: string | undefined;
|
||||
ENCRYPTION_KEY?: string | undefined;
|
||||
INITIAL_ADMIN_EMAIL?: string | undefined;
|
||||
INITIAL_ADMIN_PASSWORD?: string | undefined;
|
||||
SMTP_HOST?: string | undefined;
|
||||
SMTP_PORT?: number | undefined;
|
||||
SMTP_USER?: string | undefined;
|
||||
SMTP_PASS?: string | undefined;
|
||||
SMTP_FROM?: string | undefined;
|
||||
SMTP_FROM_NAME?: string | undefined;
|
||||
EMAIL_TEST_MODE?: string | undefined;
|
||||
TEST_EMAIL_RECIPIENT?: string | undefined;
|
||||
LISTMONK_URL?: string | undefined;
|
||||
LISTMONK_ADMIN_USER?: string | undefined;
|
||||
LISTMONK_ADMIN_PASSWORD?: string | undefined;
|
||||
LISTMONK_SYNC_ENABLED?: string | undefined;
|
||||
LISTMONK_PROXY_PORT?: number | undefined;
|
||||
REPRESENT_API_URL?: string | undefined;
|
||||
CORS_ORIGINS?: string | undefined;
|
||||
RATE_LIMIT_WINDOW_MS?: number | undefined;
|
||||
RATE_LIMIT_MAX?: number | undefined;
|
||||
MAPBOX_API_KEY?: string | undefined;
|
||||
GEOCODING_RATE_LIMIT_MS?: number | undefined;
|
||||
GEOCODING_CACHE_ENABLED?: string | undefined;
|
||||
GEOCODING_CACHE_TTL_HOURS?: number | undefined;
|
||||
GOOGLE_MAPS_API_KEY?: string | undefined;
|
||||
GOOGLE_MAPS_ENABLED?: string | undefined;
|
||||
GEOCODING_PARALLEL_ENABLED?: string | undefined;
|
||||
GEOCODING_BATCH_SIZE?: number | undefined;
|
||||
BULK_GEOCODE_ENABLED?: string | undefined;
|
||||
BULK_GEOCODE_MAX_BATCH?: number | undefined;
|
||||
NOCODB_URL?: string | undefined;
|
||||
NOCODB_PORT?: number | undefined;
|
||||
NOCODB_EMBED_PORT?: number | undefined;
|
||||
N8N_URL?: string | undefined;
|
||||
N8N_PORT?: number | undefined;
|
||||
N8N_EMBED_PORT?: number | undefined;
|
||||
GITEA_URL?: string | undefined;
|
||||
GITEA_PORT?: number | undefined;
|
||||
GITEA_EMBED_PORT?: number | undefined;
|
||||
MAILHOG_URL?: string | undefined;
|
||||
MAILHOG_EMBED_PORT?: number | undefined;
|
||||
MINI_QR_URL?: string | undefined;
|
||||
MINI_QR_PORT?: number | undefined;
|
||||
MINI_QR_EMBED_PORT?: number | undefined;
|
||||
EXCALIDRAW_URL?: string | undefined;
|
||||
EXCALIDRAW_PORT?: number | undefined;
|
||||
EXCALIDRAW_EMBED_PORT?: number | undefined;
|
||||
PANGOLIN_API_URL?: string | undefined;
|
||||
PANGOLIN_API_KEY?: string | undefined;
|
||||
PANGOLIN_ORG_ID?: string | undefined;
|
||||
PANGOLIN_SITE_ID?: string | undefined;
|
||||
PANGOLIN_ENDPOINT?: string | undefined;
|
||||
PANGOLIN_NEWT_ID?: string | undefined;
|
||||
PANGOLIN_NEWT_SECRET?: string | undefined;
|
||||
NAR_DATA_DIR?: string | undefined;
|
||||
ENABLE_MEDIA_FEATURES?: string | undefined;
|
||||
MEDIA_API_PORT?: number | undefined;
|
||||
MEDIA_API_PUBLIC_URL?: string | undefined;
|
||||
MEDIA_ROOT?: string | undefined;
|
||||
MEDIA_UPLOADS?: string | undefined;
|
||||
MAX_UPLOAD_SIZE_GB?: number | undefined;
|
||||
PUBLIC_MEDIA_PORT?: number | undefined;
|
||||
CODE_SERVER_URL?: string | undefined;
|
||||
CODE_SERVER_PORT?: number | undefined;
|
||||
MKDOCS_PREVIEW_URL?: string | undefined;
|
||||
MKDOCS_PORT?: number | undefined;
|
||||
MKDOCS_DOCS_PATH?: string | undefined;
|
||||
MKDOCS_CONFIG_PATH?: string | undefined;
|
||||
MKDOCS_CONTAINER_NAME?: string | undefined;
|
||||
MKDOCS_SITE_SERVER_URL?: string | undefined;
|
||||
MKDOCS_SITE_SERVER_PORT?: number | undefined;
|
||||
PROMETHEUS_URL?: string | undefined;
|
||||
PROMETHEUS_PORT?: number | undefined;
|
||||
GRAFANA_URL?: string | undefined;
|
||||
GRAFANA_PORT?: number | undefined;
|
||||
ALERTMANAGER_URL?: string | undefined;
|
||||
ALERTMANAGER_PORT?: number | undefined;
|
||||
CADVISOR_URL?: string | undefined;
|
||||
CADVISOR_PORT?: number | undefined;
|
||||
NODE_EXPORTER_URL?: string | undefined;
|
||||
NODE_EXPORTER_PORT?: number | undefined;
|
||||
REDIS_EXPORTER_URL?: string | undefined;
|
||||
REDIS_EXPORTER_PORT?: number | undefined;
|
||||
GOTIFY_URL?: string | undefined;
|
||||
GOTIFY_PORT?: number | undefined;
|
||||
}>;
|
||||
export type Env = z.infer<typeof envSchema>;
|
||||
export declare const env: {
|
||||
NODE_ENV: "development" | "production" | "test";
|
||||
PORT: number;
|
||||
API_URL: string;
|
||||
ADMIN_URL: string;
|
||||
DOMAIN: string;
|
||||
DATABASE_URL: string;
|
||||
REDIS_URL: string;
|
||||
JWT_ACCESS_SECRET: string;
|
||||
JWT_REFRESH_SECRET: string;
|
||||
JWT_ACCESS_EXPIRY: string;
|
||||
JWT_REFRESH_EXPIRY: string;
|
||||
INITIAL_ADMIN_EMAIL: string;
|
||||
INITIAL_ADMIN_PASSWORD: string;
|
||||
SMTP_HOST: string;
|
||||
SMTP_PORT: number;
|
||||
SMTP_USER: string;
|
||||
SMTP_PASS: string;
|
||||
SMTP_FROM: string;
|
||||
SMTP_FROM_NAME: string;
|
||||
EMAIL_TEST_MODE: string;
|
||||
TEST_EMAIL_RECIPIENT: string;
|
||||
LISTMONK_URL: string;
|
||||
LISTMONK_ADMIN_USER: string;
|
||||
LISTMONK_ADMIN_PASSWORD: string;
|
||||
LISTMONK_SYNC_ENABLED: string;
|
||||
LISTMONK_PROXY_PORT: number;
|
||||
REPRESENT_API_URL: string;
|
||||
CORS_ORIGINS: string;
|
||||
RATE_LIMIT_WINDOW_MS: number;
|
||||
RATE_LIMIT_MAX: number;
|
||||
GEOCODING_RATE_LIMIT_MS: number;
|
||||
GEOCODING_CACHE_ENABLED: string;
|
||||
GEOCODING_CACHE_TTL_HOURS: number;
|
||||
GOOGLE_MAPS_ENABLED: string;
|
||||
GEOCODING_PARALLEL_ENABLED: string;
|
||||
GEOCODING_BATCH_SIZE: number;
|
||||
BULK_GEOCODE_ENABLED: string;
|
||||
BULK_GEOCODE_MAX_BATCH: number;
|
||||
NOCODB_URL: string;
|
||||
NOCODB_PORT: number;
|
||||
NOCODB_EMBED_PORT: number;
|
||||
N8N_URL: string;
|
||||
N8N_PORT: number;
|
||||
N8N_EMBED_PORT: number;
|
||||
GITEA_URL: string;
|
||||
GITEA_PORT: number;
|
||||
GITEA_EMBED_PORT: number;
|
||||
MAILHOG_URL: string;
|
||||
MAILHOG_EMBED_PORT: number;
|
||||
MINI_QR_URL: string;
|
||||
MINI_QR_PORT: number;
|
||||
MINI_QR_EMBED_PORT: number;
|
||||
EXCALIDRAW_URL: string;
|
||||
EXCALIDRAW_PORT: number;
|
||||
EXCALIDRAW_EMBED_PORT: number;
|
||||
PANGOLIN_API_URL: string;
|
||||
PANGOLIN_API_KEY: string;
|
||||
PANGOLIN_ORG_ID: string;
|
||||
PANGOLIN_SITE_ID: string;
|
||||
PANGOLIN_ENDPOINT: string;
|
||||
PANGOLIN_NEWT_ID: string;
|
||||
PANGOLIN_NEWT_SECRET: string;
|
||||
NAR_DATA_DIR: string;
|
||||
ENABLE_MEDIA_FEATURES: string;
|
||||
MEDIA_API_PORT: number;
|
||||
MEDIA_API_PUBLIC_URL: string;
|
||||
MEDIA_ROOT: string;
|
||||
MEDIA_UPLOADS: string;
|
||||
MAX_UPLOAD_SIZE_GB: number;
|
||||
PUBLIC_MEDIA_PORT: number;
|
||||
CODE_SERVER_URL: string;
|
||||
CODE_SERVER_PORT: number;
|
||||
MKDOCS_PREVIEW_URL: string;
|
||||
MKDOCS_PORT: number;
|
||||
MKDOCS_DOCS_PATH: string;
|
||||
MKDOCS_CONFIG_PATH: string;
|
||||
MKDOCS_CONTAINER_NAME: string;
|
||||
MKDOCS_SITE_SERVER_URL: string;
|
||||
MKDOCS_SITE_SERVER_PORT: number;
|
||||
PROMETHEUS_URL: string;
|
||||
PROMETHEUS_PORT: number;
|
||||
GRAFANA_URL: string;
|
||||
GRAFANA_PORT: number;
|
||||
ALERTMANAGER_URL: string;
|
||||
ALERTMANAGER_PORT: number;
|
||||
CADVISOR_URL: string;
|
||||
CADVISOR_PORT: number;
|
||||
NODE_EXPORTER_URL: string;
|
||||
NODE_EXPORTER_PORT: number;
|
||||
REDIS_EXPORTER_URL: string;
|
||||
REDIS_EXPORTER_PORT: number;
|
||||
GOTIFY_URL: string;
|
||||
GOTIFY_PORT: number;
|
||||
ENCRYPTION_KEY?: string | undefined;
|
||||
MAPBOX_API_KEY?: string | undefined;
|
||||
GOOGLE_MAPS_API_KEY?: string | undefined;
|
||||
};
|
||||
export {};
|
||||
//# sourceMappingURL=env.d.ts.map
|
||||
1
api/dist/config/env.d.ts.map
vendored
Normal file
1
api/dist/config/env.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkJb,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAY5C,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgB,CAAC"}
|
||||
143
api/dist/config/env.js
vendored
Normal file
143
api/dist/config/env.js
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.env = void 0;
|
||||
const dotenv_1 = __importDefault(require("dotenv"));
|
||||
const zod_1 = require("zod");
|
||||
dotenv_1.default.config();
|
||||
const envSchema = zod_1.z.object({
|
||||
// Server
|
||||
NODE_ENV: zod_1.z.enum(['development', 'production', 'test']).default('development'),
|
||||
PORT: zod_1.z.coerce.number().default(4000),
|
||||
API_URL: zod_1.z.string().default('http://localhost:4000'),
|
||||
ADMIN_URL: zod_1.z.string().default('http://localhost:3000'),
|
||||
DOMAIN: zod_1.z.string().default('cmlite.org'),
|
||||
// Database
|
||||
DATABASE_URL: zod_1.z.string(),
|
||||
// Redis
|
||||
REDIS_URL: zod_1.z.string().default('redis://redis-changemaker:6379'),
|
||||
// JWT
|
||||
JWT_ACCESS_SECRET: zod_1.z.string().min(32),
|
||||
JWT_REFRESH_SECRET: zod_1.z.string().min(32),
|
||||
JWT_ACCESS_EXPIRY: zod_1.z.string().default('15m'),
|
||||
JWT_REFRESH_EXPIRY: zod_1.z.string().default('7d'),
|
||||
// Encryption (for DB-stored secrets like SMTP password; falls back to JWT_ACCESS_SECRET)
|
||||
ENCRYPTION_KEY: zod_1.z.string().optional(),
|
||||
// Initial Super Admin (auto-created during database seeding)
|
||||
INITIAL_ADMIN_EMAIL: zod_1.z.string().email().default('admin@cmlite.org'),
|
||||
INITIAL_ADMIN_PASSWORD: zod_1.z.string().min(12).default('REQUIRED_STRONG_PASSWORD_CHANGE_THIS'),
|
||||
// SMTP
|
||||
SMTP_HOST: zod_1.z.string().default('mailhog-changemaker'),
|
||||
SMTP_PORT: zod_1.z.coerce.number().default(1025),
|
||||
SMTP_USER: zod_1.z.string().default(''),
|
||||
SMTP_PASS: zod_1.z.string().default(''),
|
||||
SMTP_FROM: zod_1.z.string().default('noreply@cmlite.org'),
|
||||
SMTP_FROM_NAME: zod_1.z.string().default('Changemaker Lite'),
|
||||
EMAIL_TEST_MODE: zod_1.z.string().default('true'),
|
||||
TEST_EMAIL_RECIPIENT: zod_1.z.string().default('admin@cmlite.org'),
|
||||
// Listmonk
|
||||
LISTMONK_URL: zod_1.z.string().default('http://listmonk-app:9000'),
|
||||
LISTMONK_ADMIN_USER: zod_1.z.string().default('admin'),
|
||||
LISTMONK_ADMIN_PASSWORD: zod_1.z.string().default(''),
|
||||
LISTMONK_SYNC_ENABLED: zod_1.z.string().default('false'),
|
||||
LISTMONK_PROXY_PORT: zod_1.z.coerce.number().default(9002),
|
||||
// Represent API (Canadian electoral data)
|
||||
REPRESENT_API_URL: zod_1.z.string().default('https://represent.opennorth.ca'),
|
||||
// CORS
|
||||
CORS_ORIGINS: zod_1.z.string().default('http://localhost:3000'),
|
||||
// Rate Limiting
|
||||
RATE_LIMIT_WINDOW_MS: zod_1.z.coerce.number().default(15 * 60 * 1000),
|
||||
RATE_LIMIT_MAX: zod_1.z.coerce.number().default(500),
|
||||
// Geocoding
|
||||
MAPBOX_API_KEY: zod_1.z.string().optional(),
|
||||
GEOCODING_RATE_LIMIT_MS: zod_1.z.coerce.number().default(1100),
|
||||
GEOCODING_CACHE_ENABLED: zod_1.z.string().default('true'),
|
||||
GEOCODING_CACHE_TTL_HOURS: zod_1.z.coerce.number().default(24),
|
||||
// Phase 2: Performance & Accuracy
|
||||
GOOGLE_MAPS_API_KEY: zod_1.z.string().optional(),
|
||||
GOOGLE_MAPS_ENABLED: zod_1.z.string().default('false'),
|
||||
GEOCODING_PARALLEL_ENABLED: zod_1.z.string().default('true'),
|
||||
GEOCODING_BATCH_SIZE: zod_1.z.coerce.number().default(10),
|
||||
// Bulk Re-Geocoding (Phase 3)
|
||||
BULK_GEOCODE_ENABLED: zod_1.z.string().default('true'),
|
||||
BULK_GEOCODE_MAX_BATCH: zod_1.z.coerce.number().default(5000),
|
||||
// Platform Services (NocoDB, n8n, Gitea)
|
||||
NOCODB_URL: zod_1.z.string().default('http://changemaker-v2-nocodb:8080'),
|
||||
NOCODB_PORT: zod_1.z.coerce.number().default(8091),
|
||||
NOCODB_EMBED_PORT: zod_1.z.coerce.number().default(8881),
|
||||
N8N_URL: zod_1.z.string().default('http://n8n-changemaker:5678'),
|
||||
N8N_PORT: zod_1.z.coerce.number().default(5678),
|
||||
N8N_EMBED_PORT: zod_1.z.coerce.number().default(8882),
|
||||
GITEA_URL: zod_1.z.string().default('http://gitea-changemaker:3000'),
|
||||
GITEA_PORT: zod_1.z.coerce.number().default(3030),
|
||||
GITEA_EMBED_PORT: zod_1.z.coerce.number().default(8883),
|
||||
// MailHog (email testing UI)
|
||||
MAILHOG_URL: zod_1.z.string().default('http://mailhog-changemaker:8025'),
|
||||
MAILHOG_EMBED_PORT: zod_1.z.coerce.number().default(8884),
|
||||
// Mini QR (QR code generator)
|
||||
MINI_QR_URL: zod_1.z.string().default('http://mini-qr:8080'),
|
||||
MINI_QR_PORT: zod_1.z.coerce.number().default(8089),
|
||||
MINI_QR_EMBED_PORT: zod_1.z.coerce.number().default(8885),
|
||||
// Excalidraw (collaborative whiteboard)
|
||||
EXCALIDRAW_URL: zod_1.z.string().default('http://excalidraw-changemaker:80'),
|
||||
EXCALIDRAW_PORT: zod_1.z.coerce.number().default(8090),
|
||||
EXCALIDRAW_EMBED_PORT: zod_1.z.coerce.number().default(8886),
|
||||
// Pangolin (tunnel / reverse proxy)
|
||||
PANGOLIN_API_URL: zod_1.z.string()
|
||||
.default('')
|
||||
.refine((url) => !url || url.startsWith('https://'), { message: 'PANGOLIN_API_URL must use HTTPS for secure credential transmission' }),
|
||||
PANGOLIN_API_KEY: zod_1.z.string().default(''),
|
||||
PANGOLIN_ORG_ID: zod_1.z.string().default(''),
|
||||
PANGOLIN_SITE_ID: zod_1.z.string().default(''),
|
||||
PANGOLIN_ENDPOINT: zod_1.z.string().default(''),
|
||||
PANGOLIN_NEWT_ID: zod_1.z.string().default(''),
|
||||
PANGOLIN_NEWT_SECRET: zod_1.z.string().default(''),
|
||||
// NAR (National Address Register)
|
||||
NAR_DATA_DIR: zod_1.z.string().default('/data'),
|
||||
// Media Management
|
||||
ENABLE_MEDIA_FEATURES: zod_1.z.string().default('false'),
|
||||
MEDIA_API_PORT: zod_1.z.coerce.number().default(4100),
|
||||
MEDIA_API_PUBLIC_URL: zod_1.z.string().default('http://media-api:4100'),
|
||||
MEDIA_ROOT: zod_1.z.string().default('/media/library'),
|
||||
MEDIA_UPLOADS: zod_1.z.string().default('/media/uploads'),
|
||||
MAX_UPLOAD_SIZE_GB: zod_1.z.coerce.number().default(10),
|
||||
PUBLIC_MEDIA_PORT: zod_1.z.coerce.number().default(3100),
|
||||
// Docs / Code Server
|
||||
CODE_SERVER_URL: zod_1.z.string().default('http://code-server-changemaker:8080'),
|
||||
CODE_SERVER_PORT: zod_1.z.coerce.number().default(8888),
|
||||
MKDOCS_PREVIEW_URL: zod_1.z.string().default('http://mkdocs-changemaker:8000'),
|
||||
MKDOCS_PORT: zod_1.z.coerce.number().default(4003),
|
||||
MKDOCS_DOCS_PATH: zod_1.z.string().default('/mkdocs/docs'),
|
||||
MKDOCS_CONFIG_PATH: zod_1.z.string().default('/mkdocs/mkdocs.yml'),
|
||||
MKDOCS_CONTAINER_NAME: zod_1.z.string().default('mkdocs-changemaker'),
|
||||
MKDOCS_SITE_SERVER_URL: zod_1.z.string().default('http://mkdocs-site-server-changemaker:80'),
|
||||
MKDOCS_SITE_SERVER_PORT: zod_1.z.coerce.number().default(4004),
|
||||
// Monitoring Services (behind 'monitoring' profile)
|
||||
PROMETHEUS_URL: zod_1.z.string().default('http://prometheus-changemaker:9090'),
|
||||
PROMETHEUS_PORT: zod_1.z.coerce.number().default(9090),
|
||||
GRAFANA_URL: zod_1.z.string().default('http://grafana-changemaker:3000'),
|
||||
GRAFANA_PORT: zod_1.z.coerce.number().default(3005),
|
||||
ALERTMANAGER_URL: zod_1.z.string().default('http://alertmanager-changemaker:9093'),
|
||||
ALERTMANAGER_PORT: zod_1.z.coerce.number().default(9093),
|
||||
CADVISOR_URL: zod_1.z.string().default('http://cadvisor-changemaker:8080'),
|
||||
CADVISOR_PORT: zod_1.z.coerce.number().default(8086),
|
||||
NODE_EXPORTER_URL: zod_1.z.string().default('http://node-exporter-changemaker:9100'),
|
||||
NODE_EXPORTER_PORT: zod_1.z.coerce.number().default(9100),
|
||||
REDIS_EXPORTER_URL: zod_1.z.string().default('http://redis-exporter-changemaker:9121'),
|
||||
REDIS_EXPORTER_PORT: zod_1.z.coerce.number().default(9121),
|
||||
GOTIFY_URL: zod_1.z.string().default('http://gotify-changemaker:80'),
|
||||
GOTIFY_PORT: zod_1.z.coerce.number().default(8889),
|
||||
});
|
||||
function validateEnv() {
|
||||
const result = envSchema.safeParse(process.env);
|
||||
if (!result.success) {
|
||||
console.error('Invalid environment variables:');
|
||||
console.error(result.error.flatten().fieldErrors);
|
||||
process.exit(1);
|
||||
}
|
||||
return result.data;
|
||||
}
|
||||
exports.env = validateEnv();
|
||||
//# sourceMappingURL=env.js.map
|
||||
1
api/dist/config/env.js.map
vendored
Normal file
1
api/dist/config/env.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
3
api/dist/config/redis.d.ts
vendored
Normal file
3
api/dist/config/redis.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import Redis from 'ioredis';
|
||||
export declare const redis: Redis;
|
||||
//# sourceMappingURL=redis.d.ts.map
|
||||
1
api/dist/config/redis.d.ts.map
vendored
Normal file
1
api/dist/config/redis.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/config/redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAI5B,eAAO,MAAM,KAAK,OAOhB,CAAC"}
|
||||
24
api/dist/config/redis.js
vendored
Normal file
24
api/dist/config/redis.js
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.redis = void 0;
|
||||
const ioredis_1 = __importDefault(require("ioredis"));
|
||||
const env_1 = require("./env");
|
||||
const logger_1 = require("../utils/logger");
|
||||
exports.redis = new ioredis_1.default(env_1.env.REDIS_URL, {
|
||||
maxRetriesPerRequest: null,
|
||||
enableReadyCheck: true,
|
||||
retryStrategy(times) {
|
||||
const delay = Math.min(times * 50, 2000);
|
||||
return delay;
|
||||
},
|
||||
});
|
||||
exports.redis.on('connect', () => {
|
||||
logger_1.logger.info('Redis connected');
|
||||
});
|
||||
exports.redis.on('error', (err) => {
|
||||
logger_1.logger.error('Redis connection error:', err);
|
||||
});
|
||||
//# sourceMappingURL=redis.js.map
|
||||
1
api/dist/config/redis.js.map
vendored
Normal file
1
api/dist/config/redis.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/config/redis.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA4B;AAC5B,+BAA4B;AAC5B,4CAAyC;AAE5B,QAAA,KAAK,GAAG,IAAI,iBAAK,CAAC,SAAG,CAAC,SAAS,EAAE;IAC5C,oBAAoB,EAAE,IAAI;IAC1B,gBAAgB,EAAE,IAAI;IACtB,aAAa,CAAC,KAAK;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC;AAEH,aAAK,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,eAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,aAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;IACxB,eAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
|
||||
Reference in New Issue
Block a user