UNPKG

actionhero

Version:

The reusable, scalable, and quick node.js API server for stateless and stateful applications

108 lines (100 loc) 4.18 kB
import * as path from "path"; import * as fs from "fs"; import { PackageJson } from "type-fest"; import { ActionheroLogLevel } from ".."; const namespace = "general"; declare module ".." { export interface ActionheroConfigInterface { [namespace]: ReturnType<(typeof DEFAULT)[typeof namespace]>; } } export const DEFAULT = { [namespace]: () => { const packageJSON: PackageJson = JSON.parse( fs .readFileSync(path.join(__dirname, "..", "..", "package.json")) .toString(), ); return { apiVersion: packageJSON.version, serverName: packageJSON.name, // you can manually set the server id (not recommended) id: undefined as string, welcomeMessage: `Welcome to the ${packageJSON.name} api`, // A unique token to your application that servers will use to authenticate to each other serverToken: "change-me", // the redis prefix for Actionhero cache objects cachePrefix: "actionhero:cache:", // the redis prefix for Actionhero cache/lock objects lockPrefix: "actionhero:lock:", // how long will a lock last before it expires (ms)? lockDuration: 1000 * 10, // 10 seconds // How many pending actions can a single connection be working on simultaneousActions: 5, // allow connections to be created without remoteIp and remotePort (they will be set to 0) enforceConnectionProperties: true, // disables the whitelisting of client params disableParamScrubbing: false, // enable action response to logger enableResponseLogging: false, // params you would like hidden from any logs. Can be an array of strings or a method that returns an array of strings. filteredParams: [] as string[] | (() => string[]), // responses you would like hidden from any logs. Can be an array of strings or a method that returns an array of strings. filteredResponse: [] as string[] | (() => string[]), // values that signify missing params missingParamChecks: [null, "", undefined], // The default filetype to server when a user requests a directory directoryFileType: "index.html", // What log-level should we use for file requests? fileRequestLogLevel: "info" as ActionheroLogLevel, // The default priority level given to middleware of all types (action, connection, say, and task) defaultMiddlewarePriority: 100, // Which channel to use on redis pub/sub for RPC communication channel: "actionhero", // How long to wait for an RPC call before considering it a failure rpcTimeout: 5000, // should CLI methods and help include internal Actionhero CLI methods? cliIncludeInternal: true, // configuration for your actionhero project structure paths: { action: [path.join(__dirname, "..", "actions")], task: [path.join(__dirname, "..", "tasks")], server: [path.join(__dirname, "..", "servers")], cli: [path.join(__dirname, "..", "bin")], initializer: [path.join(__dirname, "..", "initializers")], public: [path.join(process.cwd(), "public")], pid: [path.join(process.cwd(), "pids")], log: [path.join(process.cwd(), "log")], plugin: [path.join(process.cwd(), "node_modules")], test: [path.join(process.cwd(), "__tests__")], // for the src and dist paths, assume we are running in compiled mode from `dist` src: path.join(process.cwd(), "src"), dist: path.join(process.cwd(), "dist"), }, // hash containing chat rooms you wish to be created at server boot startingChatRooms: { // format is {roomName: {authKey, authValue}} // 'secureRoom': {authorized: true}, } as Record<string, Record<string, any>>, }; }, }; export const test = { [namespace]: () => { return { serverToken: `serverToken-${process.env.JEST_WORKER_ID || 0}`, startingChatRooms: { defaultRoom: {}, otherRoom: {}, }, rpcTimeout: 3000, }; }, }; export const production = { [namespace]: () => { return { fileRequestLogLevel: "debug", }; }, };