Skip to content

Commit 6ea842c

Browse files
committed
Refactor config, add validation methods (multiple urls, postgres, localhost)
Signed-off-by: rockito10 <[email protected]>
1 parent dd2dc0e commit 6ea842c

File tree

8 files changed

+612
-243
lines changed

8 files changed

+612
-243
lines changed

config/schemas/env-demo.ts

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
import { v, ObjectBuilder, SchemaShape } from '../validations';
2+
3+
const envDemoSchema: ObjectBuilder<SchemaShape> = v.schema({
4+
// API_GATEWAY
5+
API_GATEWAY_PROTOCOL: v.str().protocol(),
6+
API_GATEWAY_HOST: v.str().host(),
7+
API_GATEWAY_PORT: v.str().port(),
8+
API_GATEWAY_PROTOCOL_SECURE: v.str().protocol(),
9+
API_ENDPOINT: v.str().endpoint(),
10+
11+
// FRONT_END_URL
12+
FRONT_END_URL: v.str().url(),
13+
14+
// MOBILE_APP
15+
MOBILE_APP: v.str().notEmpty(),
16+
MOBILE_APP_NAME: v.str().notEmpty(),
17+
MOBILE_APP_DOWNLOAD_URL: v.str().url(),
18+
PLAY_STORE_DOWNLOAD_LINK: v.str().url(),
19+
IOS_DOWNLOAD_LINK: v.str().url(),
20+
21+
// PLATFORM
22+
PLATFORM_NAME: v.str().notEmpty(),
23+
POWERED_BY: v.str().notEmpty(),
24+
PLATFORM_WEB_URL: v.str().url(),
25+
POWERED_BY_URL: v.str().url(),
26+
UPLOAD_LOGO_HOST: v.str().host(),
27+
BRAND_LOGO: v.str().url(),
28+
PLATFORM_ADMIN_EMAIL: v.str().email(),
29+
30+
// SOCKET
31+
SOCKET_HOST: v.str().host(),
32+
33+
// NATS
34+
NATS_HOST: v.str().host(),
35+
NATS_PORT: v.str().port(),
36+
NATS_URL: v.str().url(),
37+
38+
// REDIS
39+
REDIS_HOST: v.str().host(),
40+
REDIS_PORT: v.str().port(),
41+
42+
// SENDGRID
43+
SENDGRID_API_KEY: v.str().notEmpty(),
44+
45+
// WALLET_STORAGE
46+
WALLET_STORAGE_HOST: v.str().host(),
47+
WALLET_STORAGE_PORT: v.str().port(),
48+
WALLET_STORAGE_USER: v.str().notEmpty(),
49+
WALLET_STORAGE_PASSWORD: v.str().notEmpty(),
50+
51+
// CRYPTO
52+
CRYPTO_PRIVATE_KEY: v.str().notEmpty(),
53+
PLATFORM_URL: v.str().url(),
54+
PLATFORM_PROFILE_MODE: v.str().notEmpty(),
55+
56+
// PUBLIC_URL
57+
PUBLIC_LOCALHOST_URL: v.str().localhost(),
58+
PUBLIC_DEV_API_URL: v.str().url(),
59+
PUBLIC_QA_API_URL: v.str().url(),
60+
PUBLIC_PRODUCTION_API_URL: v.str().url(),
61+
PUBLIC_SANDBOX_API_URL: v.str().url(),
62+
PUBLIC_PLATFORM_SUPPORT_EMAIL: v.str().email(),
63+
64+
// AFJ
65+
AFJ_VERSION: v.str().notEmpty(),
66+
67+
// PLATFORM_WALLET
68+
PLATFORM_WALLET_NAME: v.str().notEmpty(),
69+
PLATFORM_WALLET_PASSWORD: v.str().notEmpty(),
70+
PLATFORM_SEED: v.str().notEmpty(),
71+
PLATFORM_ID: v.str().number(),
72+
73+
// DATABASE
74+
POOL_DATABASE_URL: v.str().postgresUrl(),
75+
DATABASE_URL: v.str().postgresUrl(),
76+
77+
// AWS (optional)
78+
AWS_ACCESS_KEY: v.str().notEmpty().optional(),
79+
AWS_SECRET_KEY: v.str().notEmpty().optional(),
80+
AWS_REGION: v.str().notEmpty().optional(),
81+
AWS_BUCKET: v.str().notEmpty().optional(),
82+
83+
// AWS_PUBLIC (optional)
84+
AWS_PUBLIC_ACCESS_KEY: v.str().notEmpty().optional(), // TODO: funciona????
85+
AWS_PUBLIC_SECRET_KEY: v.str().notEmpty().optional(),
86+
AWS_PUBLIC_REGION: v.str().notEmpty().optional(),
87+
AWS_ORG_LOGO_BUCKET_NAME: v.str().notEmpty().optional(),
88+
89+
// AWS_S3_STOREOBJECT (optional)
90+
AWS_S3_STOREOBJECT_ACCESS_KEY: v.str().notEmpty().optional(),
91+
AWS_S3_STOREOBJECT_SECRET_KEY: v.str().notEmpty().optional(),
92+
AWS_S3_STOREOBJECT_REGION: v.str().notEmpty().optional(),
93+
AWS_S3_STOREOBJECT_BUCKET: v.str().notEmpty().optional(),
94+
95+
// SHORTENED_URL_DOMAIN
96+
SHORTENED_URL_DOMAIN: v.str().url(),
97+
98+
// DEEPLINK_DOMAIN
99+
DEEPLINK_DOMAIN: v.str().notEmpty(),
100+
101+
// ENABLE_CORS_IP_LIST
102+
ENABLE_CORS_IP_LIST: v.str().multipleUrl(), // TODO: test
103+
104+
// VARIOS
105+
USER_NKEY_SEED: v.str().notEmpty(),
106+
API_GATEWAY_NKEY_SEED: v.str().notEmpty(),
107+
ORGANIZATION_NKEY_SEED: v.str().notEmpty(),
108+
AGENT_PROVISIONING_NKEY_SEED: v.str().notEmpty(),
109+
AGENT_SERVICE_NKEY_SEED: v.str().notEmpty(),
110+
VERIFICATION_NKEY_SEED: v.str().notEmpty(),
111+
LEDGER_NKEY_SEED: v.str().notEmpty(),
112+
ISSUANCE_NKEY_SEED: v.str().notEmpty(),
113+
CONNECTION_NKEY_SEED: v.str().notEmpty(),
114+
ECOSYSTEM_NKEY_SEED: v.str().notEmpty(),
115+
CREDENTAILDEFINITION_NKEY_SEED: v.str().notEmpty(),
116+
SCHEMA_NKEY_SEED: v.str().notEmpty(),
117+
UTILITIES_NKEY_SEED: v.str().notEmpty(),
118+
CLOUD_WALLET_NKEY_SEED: v.str().notEmpty(),
119+
GEOLOCATION_NKEY_SEED: v.str().notEmpty(),
120+
NOTIFICATION_NKEY_SEED: v.str().notEmpty(),
121+
122+
// KEYCLOAK
123+
KEYCLOAK_DOMAIN: v.str().domain(),
124+
KEYCLOAK_ADMIN_URL: v.str().url(),
125+
KEYCLOAK_MASTER_REALM: v.str().notEmpty(),
126+
KEYCLOAK_MANAGEMENT_CLIENT_ID: v.str().notEmpty(),
127+
KEYCLOAK_MANAGEMENT_CLIENT_SECRET: v.str().notEmpty(),
128+
KEYCLOAK_REALM: v.str().notEmpty(),
129+
130+
// SCHEMA_FILE_SERVER
131+
SCHEMA_FILE_SERVER_URL: v.str(),
132+
SCHEMA_FILE_SERVER_TOKEN: v.str().notEmpty(),
133+
134+
// SCRIPTS
135+
GEO_LOCATION_MASTER_DATA_IMPORT_SCRIPT: v.str().notEmpty(),
136+
UPDATE_CLIENT_CREDENTIAL_SCRIPT: v.str().notEmpty(),
137+
138+
// AFJ_AGENT
139+
AFJ_AGENT_TOKEN_PATH: v.str().notEmpty(),
140+
AFJ_AGENT_SPIN_UP: v.str().notEmpty(),
141+
AFJ_AGENT_ENDPOINT_PATH: v.str().notEmpty(),
142+
143+
// AGENT_PROTOCOL
144+
AGENT_PROTOCOL: v.str().protocol(),
145+
OOB_BATCH_SIZE: v.str().number(),
146+
PROOF_REQ_CONN_LIMIT: v.str().number(),
147+
MAX_ORG_LIMIT: v.str().number(),
148+
FIDO_API_ENDPOINT: v.str().endpoint(),
149+
150+
// LOGGING
151+
IS_ECOSYSTEM_ENABLE: v.str().boolean(),
152+
CONSOLE_LOG_FLAG: v.str().boolean(),
153+
ELK_LOG: v.str().boolean(),
154+
LOG_LEVEL: v.str().notEmpty(),
155+
ELK_LOG_PATH: v.str().url(),
156+
ELK_USERNAME: v.str().notEmpty(),
157+
ELK_PASSWORD: v.str().notEmpty(),
158+
159+
// ORGANIZATION
160+
ORGANIZATION: v.str().notEmpty(),
161+
CONTEXT: v.str().notEmpty(),
162+
APP: v.str().notEmpty()
163+
});
164+
165+
export default envDemoSchema;

config/validation/core.ts

Lines changed: 0 additions & 35 deletions
This file was deleted.

config/validation/validators.ts

Lines changed: 0 additions & 195 deletions
This file was deleted.

0 commit comments

Comments
 (0)