convict-doc
Version:
converts a Convict schema into rendered documentation. At this Moment it will be rendered as a markdown table.
276 lines (275 loc) • 7.82 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("./index");
const configSchema = {
env: {
default: "TEST",
format: ["TEST", "PROD"],
},
database: {
host: {
env: "DB_HOST",
arg: "host",
default: "localhost",
format: "url",
doc: "The host of foo",
},
port: {
env: "DB_PORT",
default: 3333,
format: PortGreaterThausend,
doc: "the port of foo",
},
pw: {
default: "changeMe",
env: "DB_PW",
arg: "pw",
format: String,
sensitive: true,
doc: "the database password. Choose with care or pay the price!",
},
},
};
const otherSchema = {
env: {
doc: "The application environment.",
format: ["production", "development", "test"],
default: "development",
env: "NODE_ENV",
},
ip: {
doc: "The IP address to bind.",
format: "ipaddress",
default: "127.0.0.1",
env: "IP_ADDRESS",
},
port: {
doc: "The port to bind.",
format: "port",
default: 8080,
env: "PORT",
arg: "port",
},
db: {
host: {
doc: "Database host name/IP",
format: "*",
default: "server1.dev.test",
},
name: {
doc: "Database name",
format: String,
default: "users",
},
},
admins: {
doc: "Users with write access, or null to grant full access without login.",
format: Array,
nullable: true,
default: null,
},
};
const ssp = {
apiPrefix: {
format: String,
default: 'api',
doc: 'prefix for all controllers',
env: 'API_PREFIX',
},
apiPort: {
format: 'port',
env: 'API_PORT',
arg: 'api-port',
default: 3333,
},
maxUploadSize: {
format: Number,
default: 100024,
doc: 'max size of uploaded files in kilobytes',
env: 'MAX_UPLOAD_SIZE',
},
localDev: {
format: Boolean,
default: false,
arg: 'local-dev',
env: 'LOCAL_DEV',
},
logLevel: {
default: 'warn',
env: 'LOG_LEVEL',
format: ['log', 'error', 'warn', 'debug', 'verbose']
},
environment: {
default: 'TEST',
doc: 'if set to TEST only instances with prefix NT can be targeted',
format: ['TEST', 'INT', 'PROD', 'LOCAL'],
env: 'ENVIRONMENT',
},
configFilePath: {
format: String,
env: 'CONFIG_FILE_PATH',
arg: 'config',
default: './config.yaml',
},
database: {
host: {
format: String,
default: 'localhost',
env: 'DB_HOST',
},
user: {
default: 'postgres',
format: String,
env: 'DB_USER',
},
pw: {
default: 'Password1!',
format: String,
env: 'DB_PW',
sensitive: true,
},
name: {
default: 'SelfService',
format: String,
env: 'DB_NAME',
},
ssl: {
default: true,
format: Boolean,
env: 'DB_SSL',
},
port: {
default: 5432,
format: 'port',
env: 'DB_PORT',
},
schema: {
default: 'public',
format: String,
env: 'DB_SCHEMA',
},
synchronize: {
default: false,
format: Boolean,
env: 'DB_SYNCHRONIZE',
},
},
metadata: {
loginUrl: {
default: 'https://apphub-restart-test.app.corpintra.net/login/',
env: 'APPHUB_LOGINURL',
format: String,
},
logoutUrl: {
default: 'https://apphub-restart-test.app.corpintra.net/logout',
env: 'APPHUB_LOGOUTURL',
format: String,
},
userManualUrl: {
default: 'https://social.intra.corpintra.net/groups/datenqualit%C3%A4ts-offensive/projects/selfservice-portal/pages/home',
env: 'USER_MANUAL_URL',
format: String,
},
socialIntranetUrl: {
default: 'https://social.intra.corpintra.net/groups/app-hub/pages/home',
env: 'SOCIAL_INTRANET_URL',
format: String,
},
webTicketUrl: {
default: 'https://cism-web.es.corpintra.net/cgi-bin/webTickets/webTicket.pl?t=Autoline_AppHub_Stoerung',
env: 'WEB_TICKET_URL',
format: String,
},
authorizationTicketUrl: {
default: 'https://cism-web.es.corpintra.net/cgi-bin/webTickets/webTicket.pl?t=Autoline_AppHub_Berechtigung',
env: 'AUTHORIZATION_TICKET_URL',
format: String,
},
supportMail: {
default: 'https://cism-web.es.corpintra.net/cgi-bin/webTickets/webTicket.pl?t=Autoline_AppHub_Berechtigung',
env: 'SUPPORT_MAIL',
format: String,
}
},
applicationIdentifier: {
default: 'ssp',
env: 'APPLICATION_IDENTIFIER',
format: String,
},
roleManagementMatrix: {
kdm: {
format: Array,
default: [
'APPHUB.AppHub_SST_KDM',
'APPHUB.AppHub_SST_KDM_Truck',
],
},
accounting: {
format: Array,
default: [
'APPHUB.AppHub_SST_Accounting',
'APPHUB.AppHub_SST_Accounting_Truck',
'APPHUB.AppHub_SST_KDM',
'APPHUB.AppHub_SST_KDM_Truck',
],
},
aftersales: {
format: Array,
default: [
'APPHUB.AppHub_SST_Aftersales',
'APPHUB.AppHub_SST_Aftersales_Truck',
'APPHUB.AppHub_SST_KDM',
'APPHUB.AppHub_SST_KDM_Truck',
],
},
parts: {
format: Array,
default: [
'APPHUB.AppHub_SST_Parts',
'APPHUB.AppHub_SST_Parts_Truck',
'APPHUB.AppHub_SST_KDM',
'APPHUB.AppHub_SST_KDM_Truck',
],
},
sales: {
format: Array,
default: [
'APPHUB.AppHub_SST_Sales',
'APPHUB.AppHub_SST_Sales_Truck',
'APPHUB.AppHub_SST_KDM',
'APPHUB.AppHub_SST_KDM_Truck',
],
},
},
jwksUri: {
default: 'http://tex-service.ingress/JWKS',
format: 'url',
env: 'I3_JWKS_URI',
doc: 'The url to get all well-known keys for JWT'
},
fileCleanup: {
nameGlobs: {
format: 'Array',
default: ['transfertoautoline/**/NT[0-9][0-9]?*.*'],
doc: 'List of globs that specify which files older than the expiration period will be deleted'
},
olderThanDays: {
default: 28,
doc: 'After a duration of n days, the files selected by the globs are deleted',
format: "int",
env: 'FILE_CLEANUP_OLDER_THAN_DAYS'
},
dryRun: {
format: Boolean,
default: true,
doc: 'Run through and reports activity without writing out results',
env: 'FILE_CLEANUP_DRY_RUN',
}
}
};
console.log((0, index_1.renderDoc)(configSchema, ['name', 'doc']));
console.log((0, index_1.renderDoc)(otherSchema));
console.log((0, index_1.renderDoc)(ssp));
function PortGreaterThausend(port) {
throw new Error('not implented');
}