@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/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmR/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecurityConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.SecurityConfigSchema = zod_1.z.object({
6
+ jwt: zod_1.z
7
+ .object({
8
+ secret: zod_1.z.string().min(32),
9
+ expiresIn: zod_1.z.string().optional().default("24h"),
10
+ refreshExpiresIn: zod_1.z.string().optional().default("7d"),
11
+ issuer: zod_1.z.string().optional().default("planecloud"),
12
+ audience: zod_1.z.string().optional().default("planecloud-users"),
13
+ algorithm: zod_1.z
14
+ .enum([
15
+ "HS256",
16
+ "HS384",
17
+ "HS512",
18
+ "RS256",
19
+ "RS384",
20
+ "RS512",
21
+ "ES256",
22
+ "ES384",
23
+ "ES512",
24
+ ])
25
+ .optional()
26
+ .default("HS256"),
27
+ publicKey: zod_1.z.string().optional(),
28
+ privateKey: zod_1.z.string().optional(),
29
+ passphrase: zod_1.z.string().optional(),
30
+ })
31
+ .optional(),
32
+ password: zod_1.z
33
+ .object({
34
+ minLength: zod_1.z.number().int().min(6).optional().default(8),
35
+ maxLength: zod_1.z.number().int().min(6).optional().default(128),
36
+ requireUppercase: zod_1.z.boolean().optional().default(true),
37
+ requireLowercase: zod_1.z.boolean().optional().default(true),
38
+ requireNumbers: zod_1.z.boolean().optional().default(true),
39
+ requireSpecialChars: zod_1.z.boolean().optional().default(true),
40
+ saltRounds: zod_1.z.number().int().min(8).max(16).optional().default(12),
41
+ pepper: zod_1.z.string().optional(),
42
+ })
43
+ .optional(),
44
+ session: zod_1.z
45
+ .object({
46
+ secret: zod_1.z.string().min(32),
47
+ resave: zod_1.z.boolean().optional().default(false),
48
+ saveUninitialized: zod_1.z.boolean().optional().default(false),
49
+ rolling: zod_1.z.boolean().optional().default(true),
50
+ name: zod_1.z.string().optional().default("planecloud.sid"),
51
+ cookie: zod_1.z
52
+ .object({
53
+ secure: zod_1.z.boolean().optional().default(false),
54
+ httpOnly: zod_1.z.boolean().optional().default(true),
55
+ maxAge: zod_1.z.number().int().min(1000).optional().default(86400000), // 24 hours
56
+ sameSite: zod_1.z.enum(["lax", "strict", "none"]).optional().default("lax"),
57
+ domain: zod_1.z.string().optional(),
58
+ path: zod_1.z.string().optional().default("/"),
59
+ })
60
+ .optional(),
61
+ store: zod_1.z
62
+ .enum(["memory", "redis", "database"])
63
+ .optional()
64
+ .default("memory"),
65
+ redis: zod_1.z
66
+ .object({
67
+ host: zod_1.z.string().min(1),
68
+ port: zod_1.z.number().int().min(1).max(65535).optional().default(6379),
69
+ password: zod_1.z.string().optional(),
70
+ db: zod_1.z.number().int().min(0).max(15).optional().default(0),
71
+ prefix: zod_1.z.string().optional().default("sess:"),
72
+ ttl: zod_1.z.number().int().min(1000).optional().default(86400000), // 24 hours
73
+ })
74
+ .optional(),
75
+ })
76
+ .optional(),
77
+ encryption: zod_1.z
78
+ .object({
79
+ algorithm: zod_1.z
80
+ .enum(["aes-256-gcm", "aes-256-cbc", "aes-192-gcm", "aes-192-cbc"])
81
+ .optional()
82
+ .default("aes-256-gcm"),
83
+ key: zod_1.z.string().min(32),
84
+ ivLength: zod_1.z.number().int().min(16).max(16).optional().default(16),
85
+ tagLength: zod_1.z.number().int().min(16).max(16).optional().default(16),
86
+ })
87
+ .optional(),
88
+ apiKeys: zod_1.z
89
+ .object({
90
+ headerName: zod_1.z.string().optional().default("x-api-key"),
91
+ queryParam: zod_1.z.string().optional().default("api_key"),
92
+ length: zod_1.z.number().int().min(16).max(64).optional().default(32),
93
+ prefix: zod_1.z.string().optional().default("pc_"),
94
+ hashing: zod_1.z.enum(["sha256", "sha512"]).optional().default("sha256"),
95
+ })
96
+ .optional(),
97
+ rateLimit: zod_1.z
98
+ .object({
99
+ windowMs: zod_1.z.number().int().min(1000).optional().default(900000), // 15 minutes
100
+ max: zod_1.z.number().int().min(1).optional().default(100),
101
+ message: zod_1.z.string().optional().default("Too many requests"),
102
+ standardHeaders: zod_1.z.boolean().optional().default(true),
103
+ legacyHeaders: zod_1.z.boolean().optional().default(false),
104
+ skipSuccessfulRequests: zod_1.z.boolean().optional().default(false),
105
+ skipFailedRequests: zod_1.z.boolean().optional().default(false),
106
+ keyGenerator: zod_1.z.string().optional(), // function name
107
+ skip: zod_1.z.string().optional(), // function name
108
+ onLimitReached: zod_1.z.string().optional(), // function name
109
+ })
110
+ .optional(),
111
+ cors: zod_1.z
112
+ .object({
113
+ origin: zod_1.z
114
+ .union([zod_1.z.string(), zod_1.z.array(zod_1.z.string()), zod_1.z.boolean()])
115
+ .optional()
116
+ .default("*"),
117
+ credentials: zod_1.z.boolean().optional().default(true),
118
+ methods: zod_1.z
119
+ .array(zod_1.z.string())
120
+ .optional()
121
+ .default(["GET", "POST", "PUT", "DELETE", "OPTIONS"]),
122
+ allowedHeaders: zod_1.z
123
+ .array(zod_1.z.string())
124
+ .optional()
125
+ .default(["Content-Type", "Authorization"]),
126
+ exposedHeaders: zod_1.z.array(zod_1.z.string()).optional(),
127
+ maxAge: zod_1.z.number().int().min(0).optional().default(86400), // 24 hours
128
+ preflightContinue: zod_1.z.boolean().optional().default(false),
129
+ optionsSuccessStatus: zod_1.z
130
+ .number()
131
+ .int()
132
+ .min(200)
133
+ .max(299)
134
+ .optional()
135
+ .default(204),
136
+ })
137
+ .optional(),
138
+ helmet: zod_1.z
139
+ .object({
140
+ contentSecurityPolicy: zod_1.z
141
+ .union([
142
+ zod_1.z.boolean(),
143
+ zod_1.z.object({
144
+ directives: zod_1.z
145
+ .record(zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]))
146
+ .optional(),
147
+ reportOnly: zod_1.z.boolean().optional(),
148
+ }),
149
+ ])
150
+ .optional()
151
+ .default(true),
152
+ crossOriginEmbedderPolicy: zod_1.z.boolean().optional().default(true),
153
+ crossOriginOpenerPolicy: zod_1.z.boolean().optional().default(true),
154
+ crossOriginResourcePolicy: zod_1.z.boolean().optional().default(true),
155
+ dnsPrefetchControl: zod_1.z.boolean().optional().default(true),
156
+ frameguard: zod_1.z
157
+ .union([
158
+ zod_1.z.boolean(),
159
+ zod_1.z.object({
160
+ action: zod_1.z.enum(["deny", "sameorigin", "allow-from"]),
161
+ domain: zod_1.z.string().optional(),
162
+ }),
163
+ ])
164
+ .optional()
165
+ .default(true),
166
+ hidePoweredBy: zod_1.z.boolean().optional().default(true),
167
+ hsts: zod_1.z
168
+ .union([
169
+ zod_1.z.boolean(),
170
+ zod_1.z.object({
171
+ maxAge: zod_1.z.number().int().min(0).optional(),
172
+ includeSubDomains: zod_1.z.boolean().optional(),
173
+ preload: zod_1.z.boolean().optional(),
174
+ }),
175
+ ])
176
+ .optional()
177
+ .default(true),
178
+ ieNoOpen: zod_1.z.boolean().optional().default(true),
179
+ noSniff: zod_1.z.boolean().optional().default(true),
180
+ originAgentCluster: zod_1.z.boolean().optional().default(true),
181
+ permittedCrossDomainPolicies: zod_1.z.boolean().optional().default(true),
182
+ referrerPolicy: zod_1.z
183
+ .union([
184
+ zod_1.z.boolean(),
185
+ zod_1.z.object({
186
+ policy: zod_1.z
187
+ .enum([
188
+ "no-referrer",
189
+ "no-referrer-when-downgrade",
190
+ "origin",
191
+ "origin-when-cross-origin",
192
+ "same-origin",
193
+ "strict-origin",
194
+ "strict-origin-when-cross-origin",
195
+ "unsafe-url",
196
+ ])
197
+ .optional(),
198
+ }),
199
+ ])
200
+ .optional()
201
+ .default(true),
202
+ xssFilter: zod_1.z.boolean().optional().default(true),
203
+ })
204
+ .optional(),
205
+ audit: zod_1.z
206
+ .object({
207
+ enabled: zod_1.z.boolean().optional().default(false),
208
+ logLevel: zod_1.z.enum(["info", "warn", "error"]).optional().default("info"),
209
+ events: zod_1.z
210
+ .array(zod_1.z.enum([
211
+ "login",
212
+ "logout",
213
+ "password_change",
214
+ "profile_update",
215
+ "api_access",
216
+ "admin_action",
217
+ "security_violation",
218
+ "data_access",
219
+ "permission_change",
220
+ ]))
221
+ .optional()
222
+ .default(["login", "logout", "admin_action", "security_violation"]),
223
+ storage: zod_1.z
224
+ .enum(["file", "database", "elasticsearch"])
225
+ .optional()
226
+ .default("database"),
227
+ file: zod_1.z
228
+ .object({
229
+ path: zod_1.z.string().min(1),
230
+ rotation: zod_1.z
231
+ .enum(["daily", "weekly", "monthly"])
232
+ .optional()
233
+ .default("daily"),
234
+ maxFiles: zod_1.z.number().int().min(1).optional().default(30),
235
+ maxSize: zod_1.z.string().optional().default("100MB"),
236
+ })
237
+ .optional(),
238
+ retention: zod_1.z
239
+ .object({
240
+ days: zod_1.z.number().int().min(1).optional().default(90),
241
+ maxSize: zod_1.z.string().optional().default("1GB"),
242
+ })
243
+ .optional(),
244
+ })
245
+ .optional(),
246
+ authentication: zod_1.z
247
+ .object({
248
+ providers: zod_1.z
249
+ .array(zod_1.z.object({
250
+ name: zod_1.z.string().min(1),
251
+ type: zod_1.z.enum(["local", "oauth2", "saml", "ldap"]),
252
+ enabled: zod_1.z.boolean().optional().default(true),
253
+ config: zod_1.z.record(zod_1.z.any()),
254
+ }))
255
+ .optional(),
256
+ twoFactor: zod_1.z
257
+ .object({
258
+ enabled: zod_1.z.boolean().optional().default(false),
259
+ issuer: zod_1.z.string().optional().default("PlaneCloud"),
260
+ window: zod_1.z.number().int().min(0).optional().default(1),
261
+ providers: zod_1.z
262
+ .array(zod_1.z.enum(["totp", "sms", "email"]))
263
+ .optional()
264
+ .default(["totp"]),
265
+ backupCodes: zod_1.z
266
+ .object({
267
+ enabled: zod_1.z.boolean().optional().default(true),
268
+ count: zod_1.z.number().int().min(1).optional().default(10),
269
+ length: zod_1.z.number().int().min(8).optional().default(8),
270
+ })
271
+ .optional(),
272
+ })
273
+ .optional(),
274
+ })
275
+ .optional(),
276
+ });
277
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"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"}