@planecloud/config 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqO1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,UAAU,GAAI,aAAa,MAAM,KAAG,SA0BhD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,OAAO,KAAG,SAEhD,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateConfig = exports.loadConfig = exports.AppConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const database_1 = require("./database");
6
+ const temporal_1 = require("./temporal");
7
+ const api_1 = require("./api");
8
+ const security_1 = require("./security");
9
+ exports.AppConfigSchema = zod_1.z.object({
10
+ app: zod_1.z.object({
11
+ name: zod_1.z.string().min(1),
12
+ version: zod_1.z.string().min(1),
13
+ description: zod_1.z.string().optional(),
14
+ environment: zod_1.z
15
+ .enum(["development", "staging", "production"])
16
+ .optional()
17
+ .default("development"),
18
+ debug: zod_1.z.boolean().optional().default(false),
19
+ timezone: zod_1.z.string().optional().default("UTC"),
20
+ locale: zod_1.z.string().optional().default("en-US"),
21
+ }),
22
+ server: zod_1.z.object({
23
+ port: zod_1.z.number().int().min(1).max(65535).optional().default(3000),
24
+ host: zod_1.z.string().optional().default("0.0.0.0"),
25
+ gracefulShutdownTimeout: zod_1.z
26
+ .number()
27
+ .int()
28
+ .min(1000)
29
+ .optional()
30
+ .default(30000),
31
+ keepAliveTimeout: zod_1.z.number().int().min(1000).optional().default(5000),
32
+ headersTimeout: zod_1.z.number().int().min(1000).optional().default(60000),
33
+ }),
34
+ database: database_1.AnyDatabaseConfigSchema.optional(),
35
+ redis: database_1.RedisConfigSchema.optional(),
36
+ temporal: temporal_1.TemporalConfigSchema.optional(),
37
+ api: api_1.ApiConfigSchema.optional(),
38
+ security: security_1.SecurityConfigSchema.optional(),
39
+ logging: zod_1.z.object({
40
+ level: zod_1.z
41
+ .enum(["trace", "debug", "info", "warn", "error", "fatal"])
42
+ .optional()
43
+ .default("info"),
44
+ format: zod_1.z.enum(["json", "pretty"]).optional().default("json"),
45
+ colorize: zod_1.z.boolean().optional().default(false),
46
+ timestamp: zod_1.z.boolean().optional().default(true),
47
+ prettyPrint: zod_1.z.boolean().optional().default(false),
48
+ file: zod_1.z
49
+ .object({
50
+ enabled: zod_1.z.boolean().optional().default(false),
51
+ filename: zod_1.z.string().optional().default("app.log"),
52
+ directory: zod_1.z.string().optional().default("./logs"),
53
+ maxSize: zod_1.z.string().optional().default("10MB"),
54
+ maxFiles: zod_1.z.number().int().min(1).optional().default(5),
55
+ datePattern: zod_1.z.string().optional().default("YYYY-MM-DD"),
56
+ zippedArchive: zod_1.z.boolean().optional().default(true),
57
+ })
58
+ .optional(),
59
+ console: zod_1.z
60
+ .object({
61
+ enabled: zod_1.z.boolean().optional().default(true),
62
+ level: zod_1.z
63
+ .enum(["trace", "debug", "info", "warn", "error", "fatal"])
64
+ .optional(),
65
+ })
66
+ .optional(),
67
+ }),
68
+ monitoring: zod_1.z.object({
69
+ enabled: zod_1.z.boolean().optional().default(false),
70
+ metrics: zod_1.z
71
+ .object({
72
+ enabled: zod_1.z.boolean().optional().default(false),
73
+ port: zod_1.z.number().int().min(1).max(65535).optional().default(9090),
74
+ path: zod_1.z.string().optional().default("/metrics"),
75
+ prefix: zod_1.z.string().optional().default("planecloud_"),
76
+ labels: zod_1.z.record(zod_1.z.string()).optional(),
77
+ collectDefaultMetrics: zod_1.z.boolean().optional().default(true),
78
+ })
79
+ .optional(),
80
+ tracing: zod_1.z
81
+ .object({
82
+ enabled: zod_1.z.boolean().optional().default(false),
83
+ provider: zod_1.z
84
+ .enum(["jaeger", "zipkin", "opentelemetry"])
85
+ .optional()
86
+ .default("opentelemetry"),
87
+ serviceName: zod_1.z.string().optional().default("planecloud-api"),
88
+ serviceVersion: zod_1.z.string().optional().default("1.0.0"),
89
+ jaeger: zod_1.z
90
+ .object({
91
+ endpoint: zod_1.z
92
+ .string()
93
+ .optional()
94
+ .default("http://localhost:14268/api/traces"),
95
+ })
96
+ .optional(),
97
+ zipkin: zod_1.z
98
+ .object({
99
+ url: zod_1.z
100
+ .string()
101
+ .optional()
102
+ .default("http://localhost:9411/api/v2/spans"),
103
+ })
104
+ .optional(),
105
+ opentelemetry: zod_1.z
106
+ .object({
107
+ endpoint: zod_1.z
108
+ .string()
109
+ .optional()
110
+ .default("http://localhost:4318/v1/traces"),
111
+ headers: zod_1.z.record(zod_1.z.string()).optional(),
112
+ })
113
+ .optional(),
114
+ })
115
+ .optional(),
116
+ health: zod_1.z
117
+ .object({
118
+ enabled: zod_1.z.boolean().optional().default(true),
119
+ path: zod_1.z.string().optional().default("/health"),
120
+ detailed: zod_1.z.boolean().optional().default(false),
121
+ checks: zod_1.z
122
+ .array(zod_1.z.object({
123
+ name: zod_1.z.string().min(1),
124
+ type: zod_1.z.enum(["http", "tcp", "database", "redis", "custom"]),
125
+ target: zod_1.z.string().min(1),
126
+ timeout: zod_1.z.number().int().min(1000).optional().default(5000),
127
+ interval: zod_1.z.number().int().min(1000).optional().default(30000),
128
+ retries: zod_1.z.number().int().min(0).optional().default(3),
129
+ critical: zod_1.z.boolean().optional().default(true),
130
+ }))
131
+ .optional(),
132
+ })
133
+ .optional(),
134
+ }),
135
+ storage: zod_1.z
136
+ .object({
137
+ type: zod_1.z.enum(["local", "s3", "gcs", "azure"]).optional().default("local"),
138
+ local: zod_1.z
139
+ .object({
140
+ directory: zod_1.z.string().optional().default("./uploads"),
141
+ maxFileSize: zod_1.z.number().int().min(1).optional().default(10485760), // 10MB
142
+ allowedTypes: zod_1.z
143
+ .array(zod_1.z.string())
144
+ .optional()
145
+ .default(["image/jpeg", "image/png", "application/pdf"]),
146
+ })
147
+ .optional(),
148
+ s3: zod_1.z
149
+ .object({
150
+ bucket: zod_1.z.string().min(1),
151
+ region: zod_1.z.string().min(1),
152
+ accessKeyId: zod_1.z.string().min(1),
153
+ secretAccessKey: zod_1.z.string().min(1),
154
+ endpoint: zod_1.z.string().optional(),
155
+ forcePathStyle: zod_1.z.boolean().optional().default(false),
156
+ signatureVersion: zod_1.z.enum(["v2", "v4"]).optional().default("v4"),
157
+ })
158
+ .optional(),
159
+ gcs: zod_1.z
160
+ .object({
161
+ bucket: zod_1.z.string().min(1),
162
+ projectId: zod_1.z.string().min(1),
163
+ keyFilename: zod_1.z.string().min(1),
164
+ })
165
+ .optional(),
166
+ azure: zod_1.z
167
+ .object({
168
+ account: zod_1.z.string().min(1),
169
+ container: zod_1.z.string().min(1),
170
+ sasToken: zod_1.z.string().min(1),
171
+ })
172
+ .optional(),
173
+ })
174
+ .optional(),
175
+ email: zod_1.z
176
+ .object({
177
+ provider: zod_1.z
178
+ .enum(["smtp", "sendgrid", "ses", "mailgun"])
179
+ .optional()
180
+ .default("smtp"),
181
+ smtp: zod_1.z
182
+ .object({
183
+ host: zod_1.z.string().min(1),
184
+ port: zod_1.z.number().int().min(1).max(65535).optional().default(587),
185
+ secure: zod_1.z.boolean().optional().default(false),
186
+ auth: zod_1.z.object({
187
+ user: zod_1.z.string().min(1),
188
+ pass: zod_1.z.string().min(1),
189
+ }),
190
+ })
191
+ .optional(),
192
+ sendgrid: zod_1.z
193
+ .object({
194
+ apiKey: zod_1.z.string().min(1),
195
+ })
196
+ .optional(),
197
+ ses: zod_1.z
198
+ .object({
199
+ region: zod_1.z.string().min(1),
200
+ accessKeyId: zod_1.z.string().min(1),
201
+ secretAccessKey: zod_1.z.string().min(1),
202
+ })
203
+ .optional(),
204
+ mailgun: zod_1.z
205
+ .object({
206
+ domain: zod_1.z.string().min(1),
207
+ apiKey: zod_1.z.string().min(1),
208
+ })
209
+ .optional(),
210
+ from: zod_1.z.object({
211
+ name: zod_1.z.string().min(1),
212
+ email: zod_1.z.string().email(),
213
+ }),
214
+ templates: zod_1.z.record(zod_1.z.string()).optional(),
215
+ })
216
+ .optional(),
217
+ cache: zod_1.z
218
+ .object({
219
+ type: zod_1.z.enum(["memory", "redis"]).optional().default("memory"),
220
+ memory: zod_1.z
221
+ .object({
222
+ maxSize: zod_1.z.number().int().min(1).optional().default(1000),
223
+ ttl: zod_1.z.number().int().min(1000).optional().default(300000), // 5 minutes
224
+ checkPeriod: zod_1.z.number().int().min(1000).optional().default(600000), // 10 minutes
225
+ })
226
+ .optional(),
227
+ redis: zod_1.z
228
+ .object({
229
+ keyPrefix: zod_1.z.string().optional().default("cache:"),
230
+ ttl: zod_1.z.number().int().min(1000).optional().default(300000), // 5 minutes
231
+ maxRetriesPerRequest: zod_1.z.number().int().min(0).optional().default(3),
232
+ })
233
+ .optional(),
234
+ })
235
+ .optional(),
236
+ });
237
+ const loadConfig = (configPath) => {
238
+ // Default config loading logic
239
+ const config = {
240
+ app: {
241
+ name: process.env.APP_NAME || "PlaneCloud",
242
+ version: process.env.APP_VERSION || "1.0.0",
243
+ description: process.env.APP_DESCRIPTION,
244
+ environment: process.env.NODE_ENV || "development",
245
+ debug: process.env.DEBUG === "true",
246
+ timezone: process.env.TIMEZONE || "UTC",
247
+ locale: process.env.LOCALE || "en-US",
248
+ },
249
+ server: {
250
+ port: parseInt(process.env.PORT || "3000", 10),
251
+ host: process.env.HOST || "0.0.0.0",
252
+ gracefulShutdownTimeout: parseInt(process.env.GRACEFUL_SHUTDOWN_TIMEOUT || "30000", 10),
253
+ keepAliveTimeout: parseInt(process.env.KEEP_ALIVE_TIMEOUT || "5000", 10),
254
+ headersTimeout: parseInt(process.env.HEADERS_TIMEOUT || "60000", 10),
255
+ },
256
+ // Add more config loading logic as needed
257
+ };
258
+ return exports.AppConfigSchema.parse(config);
259
+ };
260
+ exports.loadConfig = loadConfig;
261
+ const validateConfig = (config) => {
262
+ return exports.AppConfigSchema.parse(config);
263
+ };
264
+ exports.validateConfig = validateConfig;
265
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}