@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/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4K1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0C/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EndpointConfigSchema = exports.ApiConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.ApiConfigSchema = zod_1.z.object({
6
+ port: zod_1.z.number().int().min(1).max(65535).optional().default(3000),
7
+ host: zod_1.z.string().optional().default("0.0.0.0"),
8
+ cors: zod_1.z
9
+ .object({
10
+ enabled: zod_1.z.boolean().optional().default(true),
11
+ origin: zod_1.z
12
+ .union([zod_1.z.string(), zod_1.z.array(zod_1.z.string()), zod_1.z.boolean()])
13
+ .optional()
14
+ .default("*"),
15
+ credentials: zod_1.z.boolean().optional().default(true),
16
+ methods: zod_1.z
17
+ .array(zod_1.z.string())
18
+ .optional()
19
+ .default(["GET", "POST", "PUT", "DELETE", "OPTIONS"]),
20
+ allowedHeaders: zod_1.z
21
+ .array(zod_1.z.string())
22
+ .optional()
23
+ .default(["Content-Type", "Authorization"]),
24
+ exposedHeaders: zod_1.z.array(zod_1.z.string()).optional(),
25
+ maxAge: zod_1.z.number().int().min(0).optional().default(86400), // 24 hours
26
+ })
27
+ .optional(),
28
+ rateLimit: zod_1.z
29
+ .object({
30
+ enabled: zod_1.z.boolean().optional().default(true),
31
+ windowMs: zod_1.z.number().int().min(1000).optional().default(900000), // 15 minutes
32
+ max: zod_1.z.number().int().min(1).optional().default(100),
33
+ message: zod_1.z.string().optional().default("Too many requests from this IP"),
34
+ standardHeaders: zod_1.z.boolean().optional().default(true),
35
+ legacyHeaders: zod_1.z.boolean().optional().default(false),
36
+ skipSuccessfulRequests: zod_1.z.boolean().optional().default(false),
37
+ skipFailedRequests: zod_1.z.boolean().optional().default(false),
38
+ })
39
+ .optional(),
40
+ compression: zod_1.z
41
+ .object({
42
+ enabled: zod_1.z.boolean().optional().default(true),
43
+ level: zod_1.z.number().int().min(-1).max(9).optional().default(6),
44
+ threshold: zod_1.z.number().int().min(0).optional().default(1024), // 1KB
45
+ })
46
+ .optional(),
47
+ helmet: zod_1.z
48
+ .object({
49
+ enabled: zod_1.z.boolean().optional().default(true),
50
+ contentSecurityPolicy: zod_1.z.boolean().optional().default(true),
51
+ crossOriginEmbedderPolicy: zod_1.z.boolean().optional().default(true),
52
+ crossOriginOpenerPolicy: zod_1.z.boolean().optional().default(true),
53
+ crossOriginResourcePolicy: zod_1.z.boolean().optional().default(true),
54
+ dnsPrefetchControl: zod_1.z.boolean().optional().default(true),
55
+ frameguard: zod_1.z.boolean().optional().default(true),
56
+ hidePoweredBy: zod_1.z.boolean().optional().default(true),
57
+ hsts: zod_1.z.boolean().optional().default(true),
58
+ ieNoOpen: zod_1.z.boolean().optional().default(true),
59
+ noSniff: zod_1.z.boolean().optional().default(true),
60
+ originAgentCluster: zod_1.z.boolean().optional().default(true),
61
+ permittedCrossDomainPolicies: zod_1.z.boolean().optional().default(true),
62
+ referrerPolicy: zod_1.z.boolean().optional().default(true),
63
+ xssFilter: zod_1.z.boolean().optional().default(true),
64
+ })
65
+ .optional(),
66
+ logging: zod_1.z
67
+ .object({
68
+ enabled: zod_1.z.boolean().optional().default(true),
69
+ level: zod_1.z
70
+ .enum(["fatal", "error", "warn", "info", "debug", "trace"])
71
+ .optional()
72
+ .default("info"),
73
+ format: zod_1.z.enum(["json", "pretty"]).optional().default("json"),
74
+ colorize: zod_1.z.boolean().optional().default(false),
75
+ timestamp: zod_1.z.boolean().optional().default(true),
76
+ prettyPrint: zod_1.z.boolean().optional().default(false),
77
+ })
78
+ .optional(),
79
+ health: zod_1.z
80
+ .object({
81
+ enabled: zod_1.z.boolean().optional().default(true),
82
+ path: zod_1.z.string().optional().default("/health"),
83
+ detailed: zod_1.z.boolean().optional().default(false),
84
+ checks: zod_1.z
85
+ .array(zod_1.z.object({
86
+ name: zod_1.z.string().min(1),
87
+ type: zod_1.z.enum(["http", "tcp", "database", "redis", "custom"]),
88
+ target: zod_1.z.string().min(1),
89
+ timeout: zod_1.z.number().int().min(1000).optional().default(5000),
90
+ interval: zod_1.z.number().int().min(1000).optional().default(30000),
91
+ retries: zod_1.z.number().int().min(0).optional().default(3),
92
+ critical: zod_1.z.boolean().optional().default(true),
93
+ }))
94
+ .optional(),
95
+ })
96
+ .optional(),
97
+ metrics: zod_1.z
98
+ .object({
99
+ enabled: zod_1.z.boolean().optional().default(false),
100
+ path: zod_1.z.string().optional().default("/metrics"),
101
+ port: zod_1.z.number().int().min(1).max(65535).optional(),
102
+ labels: zod_1.z.record(zod_1.z.string()).optional(),
103
+ includeDefaultMetrics: zod_1.z.boolean().optional().default(true),
104
+ prefix: zod_1.z.string().optional().default("planecloud_"),
105
+ })
106
+ .optional(),
107
+ swagger: zod_1.z
108
+ .object({
109
+ enabled: zod_1.z.boolean().optional().default(false),
110
+ path: zod_1.z.string().optional().default("/api/docs"),
111
+ title: zod_1.z.string().optional().default("PlaneCloud API"),
112
+ description: zod_1.z
113
+ .string()
114
+ .optional()
115
+ .default("PlaneCloud Platform API Documentation"),
116
+ version: zod_1.z.string().optional().default("1.0.0"),
117
+ servers: zod_1.z
118
+ .array(zod_1.z.object({
119
+ url: zod_1.z.string().min(1),
120
+ description: zod_1.z.string().optional(),
121
+ }))
122
+ .optional(),
123
+ security: zod_1.z
124
+ .array(zod_1.z.object({
125
+ type: zod_1.z.string().min(1),
126
+ scheme: zod_1.z.string().min(1),
127
+ bearerFormat: zod_1.z.string().optional(),
128
+ }))
129
+ .optional(),
130
+ })
131
+ .optional(),
132
+ middleware: zod_1.z
133
+ .array(zod_1.z.object({
134
+ name: zod_1.z.string().min(1),
135
+ path: zod_1.z.string().optional(),
136
+ options: zod_1.z.record(zod_1.z.any()).optional(),
137
+ enabled: zod_1.z.boolean().optional().default(true),
138
+ }))
139
+ .optional(),
140
+ static: zod_1.z
141
+ .array(zod_1.z.object({
142
+ path: zod_1.z.string().min(1),
143
+ directory: zod_1.z.string().min(1),
144
+ options: zod_1.z
145
+ .object({
146
+ maxAge: zod_1.z.number().int().min(0).optional(),
147
+ immutable: zod_1.z.boolean().optional(),
148
+ extensions: zod_1.z.array(zod_1.z.string()).optional(),
149
+ setHeaders: zod_1.z.function().optional(),
150
+ })
151
+ .optional(),
152
+ }))
153
+ .optional(),
154
+ proxy: zod_1.z
155
+ .array(zod_1.z.object({
156
+ path: zod_1.z.string().min(1),
157
+ target: zod_1.z.string().min(1),
158
+ changeOrigin: zod_1.z.boolean().optional().default(true),
159
+ secure: zod_1.z.boolean().optional().default(false),
160
+ ws: zod_1.z.boolean().optional().default(false),
161
+ pathRewrite: zod_1.z.record(zod_1.z.string()).optional(),
162
+ headers: zod_1.z.record(zod_1.z.string()).optional(),
163
+ }))
164
+ .optional(),
165
+ });
166
+ exports.EndpointConfigSchema = zod_1.z.object({
167
+ path: zod_1.z.string().min(1),
168
+ method: zod_1.z.enum(["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]),
169
+ handler: zod_1.z.string().min(1),
170
+ middleware: zod_1.z.array(zod_1.z.string()).optional(),
171
+ validation: zod_1.z
172
+ .object({
173
+ body: zod_1.z.string().optional(),
174
+ query: zod_1.z.string().optional(),
175
+ params: zod_1.z.string().optional(),
176
+ headers: zod_1.z.string().optional(),
177
+ })
178
+ .optional(),
179
+ auth: zod_1.z
180
+ .object({
181
+ required: zod_1.z.boolean().optional().default(false),
182
+ roles: zod_1.z.array(zod_1.z.string()).optional(),
183
+ permissions: zod_1.z.array(zod_1.z.string()).optional(),
184
+ })
185
+ .optional(),
186
+ rateLimit: zod_1.z
187
+ .object({
188
+ enabled: zod_1.z.boolean().optional(),
189
+ max: zod_1.z.number().int().min(1).optional(),
190
+ windowMs: zod_1.z.number().int().min(1000).optional(),
191
+ })
192
+ .optional(),
193
+ cache: zod_1.z
194
+ .object({
195
+ enabled: zod_1.z.boolean().optional(),
196
+ ttl: zod_1.z.number().int().min(1000).optional(),
197
+ key: zod_1.z.string().optional(),
198
+ })
199
+ .optional(),
200
+ documentation: zod_1.z
201
+ .object({
202
+ summary: zod_1.z.string().optional(),
203
+ description: zod_1.z.string().optional(),
204
+ tags: zod_1.z.array(zod_1.z.string()).optional(),
205
+ responses: zod_1.z.record(zod_1.z.any()).optional(),
206
+ })
207
+ .optional(),
208
+ });
209
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}