Skip to content

Commit

Permalink
add git, node, and openapi env vars
Browse files Browse the repository at this point in the history
  • Loading branch information
DylanBulmer committed Apr 9, 2023
1 parent c539f93 commit da0424c
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 20 deletions.
58 changes: 40 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,24 +37,46 @@ app.listen(config.express.port, config.express.host, () => {

Location of environment variable is postfixed to `Config.{location}` (e.g. `Config.express.host`).

| Env var | Location | Description |
| ----------------------- | ----------------------- | --------------------------------------------------------------------------------------- |
| `ENV` | `env` | Deployment envionment - `dev`, `qa`, `stage`, `prod` |
| `AWS_REGION` | `aws.region` | AWS - deployment region |
| `AWS_SES_API_VERSION` | `aws.ses.api.version` | AWS SES - api version |
| `AWS_SES_ACCESS_KEY` | `aws.ses.access.key` | AWS SES - IAM access key id |
| `AWS_SES_ACCESS_SECRET` | `aws.ses.access.secret` | AWS SES - IAM access key secret |
| `EMAIL_FROM` | `email.from` | Email - from address |
| `EMAIL_REPLY_TO` | `email.replyto` | Email - reply to address(es) |
| `EXPRESS_HOST` | `express.host` | Express server - listener host |
| `EXPRESS_PORT` | `express.port` | Express server - listener port |
| `MONGO_URI` | `mongo.uri` | MongoDB - server URL, please include username and password to this string |
| `KAFKA_BROKERS` | `kafka.brokers` | Kafka server - comma seperated locations of the kafka brokers |
| `KAFKA_CLIENT_ID` | `kafka.clientId` | Kafka server - name of the kafka cluster |
| `KAFKA_CONSUMER_GROUP` | `kafka.consumer.group` | Kafka server - consumer group |
| `JWT_ALGORITHM` | `jwt.algorithm` | JWT - algorithm, default `HS256` |
| `JWT_SECRET` | `jwt.secret` | JWT - secret, key to decode jwt, must be the same across all services in an environment |
| `JWT_ISSUER` | `jwt.issuer` | JWT - issuer, default `codrjs.com` |
| Env var | Location | Description |
| --------------------------- | ------------------------------- | --------------------------------------------------------------------------------------- |
| `ENV` | `env` | Deployment envionment - `dev`, `qa`, `stage`, `prod` |
| `HOSTNAME` | `hostname` | Deployment docker hostname |
| `npm_package_name` | `name` | Deployment service name - example: codr-user-user |
| `npm_package_version` | `version` | Deployment version - example: v1.0.0 |
| `AWS_REGION` | `aws.region` | AWS - deployment region |
| `AWS_SES_API_VERSION` | `aws.ses.api.version` | AWS SES - api version |
| `AWS_SES_ACCESS_KEY` | `aws.ses.access.key` | AWS SES - IAM access key id |
| `AWS_SES_ACCESS_SECRET` | `aws.ses.access.secret` | AWS SES - IAM access key secret |
| `EMAIL_FROM` | `email.from` | Email - from address |
| `EMAIL_REPLY_TO` | `email.replyto` | Email - reply to address(es) |
| `EXPRESS_HOST` | `express.host` | Express server - listener host |
| `EXPRESS_PORT` | `express.port` | Express server - listener port |
| `GIT_BRANCH` | `git.brach` | Git - branch |
| `GIT_COMMIT` | `git.commit` | Git - commit sha |
| `GIT_REPO` | `git.repo` | Git - repository |
| `JWT_ALGORITHM` | `jwt.algorithm` | JWT - algorithm, default `HS256` |
| `JWT_SECRET` | `jwt.secret` | JWT - secret, key to decode jwt, must be the same across all services in an environment |
| `JWT_ISSUER` | `jwt.issuer` | JWT - issuer, default `codrjs.com` |
| `KAFKA_BROKERS` | `kafka.brokers` | Kafka server - comma seperated locations of the kafka brokers |
| `KAFKA_CLIENT_ID` | `kafka.clientId` | Kafka server - name of the kafka cluster |
| `KAFKA_CONSUMER_GROUP` | `kafka.consumer.group` | Kafka server - consumer group |
| `MONGO_URI` | `mongo.uri` | MongoDB - server URL, please include username and password to this string |
| `NODE_ENV` | `node.env` | Node environment - `development`,`production`, `testing` |
| `NODE_VERSION` | `node.verison` | Node version - example: v16.19.1 |
| N/A | `node.modules` | Node modules - string array of all dependencies |
| `YARN_VERSION` | `node.yarnVersion` | Node - package manager version |
| `OPENAPI_INFO_TITLE` | `openapi.info.title` | OpenAPI - documentation title |
| `OPENAPI_INFO_DESC` | `openapi.info.description` | OpenAPI - documentation description |
| `OPENAPI_SERVER_ONE_HOST` | `openapi.server[0].host` | OpenAPI - server one host |
| `OPENAPI_SERVER_ONE_DESC` | `openapi.server[0].description` | OpenAPI - server one description |
| `OPENAPI_SERVER_TWO_HOST` | `openapi.server[1].host` | OpenAPI - server two host |
| `OPENAPI_SERVER_TWO_DESC` | `openapi.server[1].description` | OpenAPI - server two description |
| `OPENAPI_SERVER_THREE_HOST` | `openapi.server[2].host` | OpenAPI - server three host |
| `OPENAPI_SERVER_THREE_DESC` | `openapi.server[2].description` | OpenAPI - server three description |
| `OPENAPI_SERVER_FOUR_HOST` | `openapi.server[3].host` | OpenAPI - server four host |
| `OPENAPI_SERVER_FOUR_DESC` | `openapi.server[3].description` | OpenAPI - server four description |
| `OPENAPI_SERVER_FIVE_HOST` | `openapi.server[4].host` | OpenAPI - server five host |
| `OPENAPI_SERVER_FIVE_DESC` | `openapi.server[4].description` | OpenAPI - server five description |

## TODO

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@codrjs/config",
"version": "1.0.2",
"version": "1.0.3",
"description": "Codr configuration, unified",
"main": "./cjs/index.js",
"module": "./esm/index.js",
Expand Down
9 changes: 9 additions & 0 deletions src/config/GitConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export const GitConfig: {
branch: string;
commit: string;
repo: string;
} = {
branch: process.env.GIT_BRANCH as string,
commit: process.env.GIT_COMMIT as string,
repo: process.env.GIT_REPO as string,
};
25 changes: 25 additions & 0 deletions src/config/NodeConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
export const NodeConfig: {
env: string;
version: string;
modules: string[];
yarnVersion: string;
} = {
env: process.env.NODE_ENV as string,
version: process.env.NODE_VERSION as string,
modules: Object.keys(process.env)
.filter(m => /npm_package_dependencies_/g.test(m))
.map(m => m.replace(/npm_package_dependencies_/g, ""))
.map(m =>
m
.split("_")
.map((p, idx) =>
p === ""
? "@"
: idx === m.split("_").length - 1 && m.split("_").length !== 1
? `/${p}`
: p,
)
.join(""),
),
yarnVersion: process.env.YARN_VERSION as string,
};
45 changes: 45 additions & 0 deletions src/config/OpenAPI.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
export interface IOpenAPIServer {
host: string;
description: string;
}

export const OpenAPIConfig: {
info: {
title: string;
description: string;
};
servers: [
IOpenAPIServer,
IOpenAPIServer,
IOpenAPIServer,
IOpenAPIServer,
IOpenAPIServer,
];
} = {
info: {
title: process.env.OPENAPI_TITLE as string,
description: process.env.OPENAPI_DESC as string,
},
servers: [
{
host: process.env.OPENAPI_SERVER_ONE_HOST as string,
description: process.env.OPENAPI_SERVER_ONE_DESC as string,
},
{
host: process.env.OPENAPI_SERVER_TWO_HOST as string,
description: process.env.OPENAPI_SERVER_TWO_DESC as string,
},
{
host: process.env.OPENAPI_SERVER_THREE_HOST as string,
description: process.env.OPENAPI_SERVER_THREE_DESC as string,
},
{
host: process.env.OPENAPI_SERVER_FOUR_HOST as string,
description: process.env.OPENAPI_SERVER_FOUR_DESC as string,
},
{
host: process.env.OPENAPI_SERVER_FIVE_HOST as string,
description: process.env.OPENAPI_SERVER_FIVE_DESC as string,
},
],
};
19 changes: 18 additions & 1 deletion src/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,43 @@ dotenv.config();
import { AWSConfig } from "./AWSConfig";
import { EmailConfig } from "./EmailConfig";
import { ExpressConfig } from "./ExpressConfig";
import { GitConfig } from "./GitConfig";
import { JWTConfig } from "./JWTConfig";
import { KafkaConfig } from "./KafkaConfig";
import { MonogoConfig } from "./MongoConfig";
import { NodeConfig } from "./NodeConfig";
import { OpenAPIConfig } from "./OpenAPI";

const GeneralConfig = {
env: process.env.ENV as "dev" | "qa" | "stage" | "prod",
version: process.env.npm_package_version as string,
name: process.env.npm_package_name as string,
hostname: process.env.HOSTNAME as string,
};

const Config = {
aws: AWSConfig,
email: EmailConfig,
env: process.env.ENV as "dev" | "qa" | "stage" | "prod",
express: ExpressConfig,
jwt: JWTConfig,
git: GitConfig,
kafka: KafkaConfig,
mongo: MonogoConfig,
node: NodeConfig,
openapi: OpenAPIConfig,
...GeneralConfig,
};

export {
AWSConfig,
EmailConfig,
ExpressConfig,
GitConfig,
JWTConfig,
KafkaConfig,
MonogoConfig,
NodeConfig,
OpenAPIConfig,
};

export default Config;

0 comments on commit da0424c

Please sign in to comment.