@kavtuai/guildgate 0.1.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.
Files changed (133) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +399 -0
  4. package/README.tr.md +397 -0
  5. package/SECURITY.md +36 -0
  6. package/TEST_REPORT.md +50 -0
  7. package/bin/guildgate-doctor.mjs +91 -0
  8. package/bin/guildgate-writing-check.mjs +73 -0
  9. package/dist/action.d.ts +65 -0
  10. package/dist/action.d.ts.map +1 -0
  11. package/dist/action.js +4 -0
  12. package/dist/action.js.map +1 -0
  13. package/dist/cache.d.ts +23 -0
  14. package/dist/cache.d.ts.map +1 -0
  15. package/dist/cache.js +53 -0
  16. package/dist/cache.js.map +1 -0
  17. package/dist/crypto.d.ts +15 -0
  18. package/dist/crypto.d.ts.map +1 -0
  19. package/dist/crypto.js +87 -0
  20. package/dist/crypto.js.map +1 -0
  21. package/dist/discord/authorizer.d.ts +41 -0
  22. package/dist/discord/authorizer.d.ts.map +1 -0
  23. package/dist/discord/authorizer.js +101 -0
  24. package/dist/discord/authorizer.js.map +1 -0
  25. package/dist/discord/oauth.d.ts +64 -0
  26. package/dist/discord/oauth.d.ts.map +1 -0
  27. package/dist/discord/oauth.js +226 -0
  28. package/dist/discord/oauth.js.map +1 -0
  29. package/dist/discord/permissions.d.ts +85 -0
  30. package/dist/discord/permissions.d.ts.map +1 -0
  31. package/dist/discord/permissions.js +99 -0
  32. package/dist/discord/permissions.js.map +1 -0
  33. package/dist/discord.d.ts +4 -0
  34. package/dist/discord.d.ts.map +1 -0
  35. package/dist/discord.js +4 -0
  36. package/dist/discord.js.map +1 -0
  37. package/dist/errors.d.ts +43 -0
  38. package/dist/errors.d.ts.map +1 -0
  39. package/dist/errors.js +57 -0
  40. package/dist/errors.js.map +1 -0
  41. package/dist/express.d.ts +3 -0
  42. package/dist/express.d.ts.map +1 -0
  43. package/dist/express.js +3 -0
  44. package/dist/express.js.map +1 -0
  45. package/dist/fastify.d.ts +3 -0
  46. package/dist/fastify.d.ts.map +1 -0
  47. package/dist/fastify.js +3 -0
  48. package/dist/fastify.js.map +1 -0
  49. package/dist/http/express.d.ts +24 -0
  50. package/dist/http/express.d.ts.map +1 -0
  51. package/dist/http/express.js +60 -0
  52. package/dist/http/express.js.map +1 -0
  53. package/dist/http/fastify.d.ts +25 -0
  54. package/dist/http/fastify.d.ts.map +1 -0
  55. package/dist/http/fastify.js +57 -0
  56. package/dist/http/fastify.js.map +1 -0
  57. package/dist/i18n.d.ts +5 -0
  58. package/dist/i18n.d.ts.map +1 -0
  59. package/dist/i18n.js +66 -0
  60. package/dist/i18n.js.map +1 -0
  61. package/dist/index.d.ts +13 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +13 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/kernel.d.ts +83 -0
  66. package/dist/kernel.d.ts.map +1 -0
  67. package/dist/kernel.js +395 -0
  68. package/dist/kernel.js.map +1 -0
  69. package/dist/memory-store.d.ts +13 -0
  70. package/dist/memory-store.d.ts.map +1 -0
  71. package/dist/memory-store.js +261 -0
  72. package/dist/memory-store.js.map +1 -0
  73. package/dist/realtime/hub.d.ts +42 -0
  74. package/dist/realtime/hub.d.ts.map +1 -0
  75. package/dist/realtime/hub.js +152 -0
  76. package/dist/realtime/hub.js.map +1 -0
  77. package/dist/realtime/outbox.d.ts +12 -0
  78. package/dist/realtime/outbox.d.ts.map +1 -0
  79. package/dist/realtime/outbox.js +18 -0
  80. package/dist/realtime/outbox.js.map +1 -0
  81. package/dist/realtime.d.ts +3 -0
  82. package/dist/realtime.d.ts.map +1 -0
  83. package/dist/realtime.js +3 -0
  84. package/dist/realtime.js.map +1 -0
  85. package/dist/redis.d.ts +49 -0
  86. package/dist/redis.d.ts.map +1 -0
  87. package/dist/redis.js +233 -0
  88. package/dist/redis.js.map +1 -0
  89. package/dist/resilience.d.ts +23 -0
  90. package/dist/resilience.d.ts.map +1 -0
  91. package/dist/resilience.js +85 -0
  92. package/dist/resilience.js.map +1 -0
  93. package/dist/security.d.ts +21 -0
  94. package/dist/security.d.ts.map +1 -0
  95. package/dist/security.js +94 -0
  96. package/dist/security.js.map +1 -0
  97. package/dist/session.d.ts +32 -0
  98. package/dist/session.d.ts.map +1 -0
  99. package/dist/session.js +97 -0
  100. package/dist/session.js.map +1 -0
  101. package/dist/stores.d.ts +73 -0
  102. package/dist/stores.d.ts.map +1 -0
  103. package/dist/stores.js +4 -0
  104. package/dist/stores.js.map +1 -0
  105. package/dist/testing.d.ts +32 -0
  106. package/dist/testing.d.ts.map +1 -0
  107. package/dist/testing.js +60 -0
  108. package/dist/testing.js.map +1 -0
  109. package/dist/types.d.ts +183 -0
  110. package/dist/types.d.ts.map +1 -0
  111. package/dist/types.js +4 -0
  112. package/dist/types.js.map +1 -0
  113. package/docs/WRITING_STYLE.md +118 -0
  114. package/docs/architecture.md +83 -0
  115. package/docs/custom-stores.md +111 -0
  116. package/docs/owner-management.md +44 -0
  117. package/docs/research-notes.md +61 -0
  118. package/docs/setup.md +104 -0
  119. package/docs/threat-model.md +79 -0
  120. package/docs/tr/arastirma-notlari.md +41 -0
  121. package/docs/tr/guvenlik-bildirimi.md +7 -0
  122. package/docs/tr/kurulum.md +63 -0
  123. package/docs/tr/mimari.md +59 -0
  124. package/docs/tr/sahip-yonetimi.md +7 -0
  125. package/docs/tr/tehdit-modeli.md +39 -0
  126. package/docs/tr/veritabani-suruculeri.md +23 -0
  127. package/docs/tr/yazim-kilavuzu.md +116 -0
  128. package/docs/uml/action-sequence.mmd +39 -0
  129. package/docs/uml/components.mmd +84 -0
  130. package/docs/uml/deployment.mmd +19 -0
  131. package/docs/uml/oauth-sequence.mmd +30 -0
  132. package/docs/uml/realtime-sequence.mmd +28 -0
  133. package/package.json +90 -0
package/dist/kernel.js ADDED
@@ -0,0 +1,395 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { CacheManager } from "./cache.js";
3
+ import { randomToken, redactValue, sha256, stableStringify } from "./crypto.js";
4
+ import { asGuildGateError, errors, GuildGateError } from "./errors.js";
5
+ import { messageFor, resolveLocale } from "./i18n.js";
6
+ import { runWithDeadline } from "./resilience.js";
7
+ import { assertAllowedOrigin, createCsrfService, isUnsafeMethod, serializeClearedCookie, serializeSessionCookie, validateAllowedOrigins, validateCookieConfig, } from "./security.js";
8
+ import { SessionManager } from "./session.js";
9
+ import { systemClock } from "./types.js";
10
+ export function createGuildGate(config) {
11
+ validateConfig(config);
12
+ const clock = config.clock ?? systemClock;
13
+ const owners = new Set(config.owners ?? []);
14
+ const defaultLocale = config.locale?.default ?? "en";
15
+ const origins = validateAllowedOrigins(config.security.allowedOrigins, config.app.environment);
16
+ const csrf = createCsrfService(config.security.csrfSecret);
17
+ const cache = new CacheManager(config.stores.cache, config.stores.locks);
18
+ const cookie = {
19
+ name: config.security.cookie?.name ?? (config.app.environment === "production" ? "__Host-guildgate.sid" : "guildgate.sid"),
20
+ path: config.security.cookie?.path ?? "/",
21
+ secure: config.security.cookie?.secure ?? config.app.environment === "production",
22
+ sameSite: config.security.cookie?.sameSite ?? "Lax",
23
+ maxAgeSeconds: config.security.cookie?.maxAgeSeconds ?? Math.floor(config.security.session.ttlMs / 1000),
24
+ };
25
+ validateCookieConfig(cookie);
26
+ const sessions = new SessionManager({ store: config.stores.sessions, clock, ...config.security.session });
27
+ const sensitiveKeys = new Set([
28
+ "authorization",
29
+ "cookie",
30
+ "set-cookie",
31
+ "token",
32
+ "accesstoken",
33
+ "refreshtoken",
34
+ "bottoken",
35
+ "clientsecret",
36
+ "csrftoken",
37
+ ...(config.audit?.redactKeys ?? []).map((key) => key.toLowerCase()),
38
+ ]);
39
+ const auditFailClosed = new Set(config.audit?.failClosedActions ?? []);
40
+ async function executeAction(action, request) {
41
+ const definition = action.definition;
42
+ const requestId = request.requestId ?? randomUUID();
43
+ const locale = resolveLocale(request.locale, defaultLocale);
44
+ const startedAt = Date.now();
45
+ let session = null;
46
+ let replacementSessionToken;
47
+ let replacementCsrfToken;
48
+ let clearSessionCookie = false;
49
+ let resource;
50
+ let parsedInput;
51
+ let rateLimitMeta;
52
+ let lockKey;
53
+ let lockToken;
54
+ let idempotencyStoreKey;
55
+ let idempotencyCompleted = false;
56
+ const postCommitIssues = [];
57
+ let contextBase;
58
+ const meta = () => ({
59
+ requestId,
60
+ locale,
61
+ rateLimit: rateLimitMeta,
62
+ replacementSessionToken,
63
+ replacementCsrfToken,
64
+ clearSessionCookie,
65
+ postCommitIssues: postCommitIssues.length ? [...postCommitIssues] : undefined,
66
+ });
67
+ try {
68
+ const authMode = definition.authentication ?? "required";
69
+ if (authMode !== "none") {
70
+ const resolution = await sessions.resolve(request.sessionToken ?? request.cookies?.[cookie.name]);
71
+ session = resolution.session;
72
+ replacementSessionToken = resolution.replacementToken;
73
+ clearSessionCookie = resolution.clearCookie ?? false;
74
+ if (replacementSessionToken && session)
75
+ replacementCsrfToken = csrf.issue(session.idHash);
76
+ if (authMode === "required" && !session)
77
+ throw errors.authenticationRequired();
78
+ }
79
+ if (isUnsafeMethod(request.method)) {
80
+ assertAllowedOrigin(request.origin ?? firstHeader(request.headers, "origin"), origins);
81
+ const csrfMode = definition.csrf ?? (authMode === "none" ? "disabled" : "required");
82
+ const csrfToken = request.csrfToken ?? firstHeader(request.headers, "x-csrf-token");
83
+ if (csrfMode === "required" && (!session || !csrf.verify(session.idHash, csrfToken))) {
84
+ throw errors.csrfInvalid();
85
+ }
86
+ }
87
+ try {
88
+ parsedInput = definition.parse ? definition.parse(request.input) : request.input;
89
+ }
90
+ catch (error) {
91
+ throw errors.inputInvalid({ cause: error instanceof Error ? error.message : String(error) });
92
+ }
93
+ resource = definition.resource?.(parsedInput);
94
+ contextBase = {
95
+ requestId,
96
+ request,
97
+ locale,
98
+ session,
99
+ userId: session?.userId,
100
+ isOwner: session ? owners.has(session.userId) : false,
101
+ stores: config.stores,
102
+ cache,
103
+ now: clock.now(),
104
+ };
105
+ await enforcePolicies(contextBase, resource);
106
+ if (definition.rateLimit) {
107
+ const subject = definition.rateLimit.key?.(contextBase, parsedInput)
108
+ ?? `${definition.name}:${session?.userId ?? request.ip ?? "anonymous"}`;
109
+ rateLimitMeta = await config.stores.rateLimits.hit({
110
+ key: `guildgate:rate:${subject}`,
111
+ limit: definition.rateLimit.limit,
112
+ windowMs: definition.rateLimit.windowMs,
113
+ cost: definition.rateLimit.cost,
114
+ nowMs: clock.now().getTime(),
115
+ });
116
+ if (!rateLimitMeta.allowed)
117
+ throw errors.rateLimited(rateLimitMeta.retryAfterMs);
118
+ }
119
+ const decision = await definition.authorize?.(contextBase, parsedInput);
120
+ if (decision && !decision.allowed) {
121
+ throw new GuildGateError({
122
+ code: decision.code ?? "GUILD_ACCESS_DENIED",
123
+ status: 403,
124
+ details: decision.details,
125
+ });
126
+ }
127
+ if (definition.idempotency) {
128
+ const key = request.idempotencyKey ?? firstHeader(request.headers, "idempotency-key");
129
+ if (definition.idempotency.required !== false && !key)
130
+ throw errors.idempotencyRequired();
131
+ if (key) {
132
+ const scope = definition.idempotency.scope?.(contextBase, parsedInput)
133
+ ?? `${session?.userId ?? request.ip ?? "anonymous"}:${definition.name}`;
134
+ idempotencyStoreKey = `guildgate:idempotency:${scope}:${key}`;
135
+ const nowMs = clock.now().getTime();
136
+ const begin = await config.stores.idempotency.begin({
137
+ key: idempotencyStoreKey,
138
+ requestHash: sha256(stableStringify(parsedInput)),
139
+ state: "inflight",
140
+ createdAtMs: nowMs,
141
+ expiresAtMs: nowMs + definition.idempotency.ttlMs,
142
+ });
143
+ if (begin.status === "completed") {
144
+ return { ok: true, data: begin.response, meta: meta() };
145
+ }
146
+ if (begin.status === "conflict")
147
+ throw errors.idempotencyConflict();
148
+ if (begin.status === "inflight")
149
+ throw errors.idempotencyInflight();
150
+ }
151
+ }
152
+ if (definition.concurrency) {
153
+ lockKey = `guildgate:lock:${definition.concurrency.key(contextBase, parsedInput)}`;
154
+ lockToken = randomToken(18);
155
+ const acquired = await config.stores.locks.acquire(lockKey, lockToken, definition.concurrency.ttlMs ?? Math.max(5_000, definition.timeoutMs ?? 8_000), definition.concurrency.waitMs ?? 0);
156
+ if (!acquired)
157
+ throw errors.lockUnavailable();
158
+ }
159
+ const deadlineInput = {
160
+ timeoutMs: definition.timeoutMs ?? 8_000,
161
+ execute: (signal) => definition.execute({ ...contextBase, signal }, parsedInput),
162
+ };
163
+ if (request.signal)
164
+ deadlineInput.parentSignal = request.signal;
165
+ const result = await runWithDeadline(deadlineInput);
166
+ // Once execute() returns, the application may already have committed its write.
167
+ // Complete idempotency before non-transactional post-commit work so a retry cannot
168
+ // repeat the domain operation after cache, realtime, or general audit failure.
169
+ if (idempotencyStoreKey && definition.idempotency) {
170
+ await config.stores.idempotency.complete(idempotencyStoreKey, result, clock.now().getTime() + definition.idempotency.ttlMs);
171
+ idempotencyCompleted = true;
172
+ }
173
+ try {
174
+ const tags = definition.cache?.invalidateTags?.(result, parsedInput) ?? [];
175
+ if (tags.length)
176
+ await cache.invalidateTags(tags);
177
+ }
178
+ catch (cacheError) {
179
+ postCommitIssues.push({ stage: "cache", code: asGuildGateError(cacheError).code });
180
+ }
181
+ try {
182
+ if (definition.realtime) {
183
+ const events = definition.realtime.events(result, parsedInput).map((event) => ({
184
+ ...event,
185
+ version: 1,
186
+ id: randomUUID(),
187
+ timestamp: clock.now().toISOString(),
188
+ }));
189
+ for (const event of events) {
190
+ if (definition.realtime.delivery === "outbox") {
191
+ await config.stores.outbox.enqueue({ id: event.id, event, createdAt: event.timestamp, attempts: 0 });
192
+ }
193
+ else if (config.realtime) {
194
+ await config.realtime.publish(event);
195
+ }
196
+ }
197
+ }
198
+ }
199
+ catch (realtimeError) {
200
+ postCommitIssues.push({ stage: "realtime", code: asGuildGateError(realtimeError).code });
201
+ }
202
+ try {
203
+ await writeAudit({
204
+ definition,
205
+ context: contextBase,
206
+ resource,
207
+ result: "success",
208
+ changes: definition.audit?.changes?.(result, parsedInput),
209
+ durationMs: Date.now() - startedAt,
210
+ });
211
+ }
212
+ catch (auditError) {
213
+ postCommitIssues.push({ stage: "audit", code: asGuildGateError(auditError).code });
214
+ if (auditFailClosed.has(definition.name))
215
+ throw auditError;
216
+ }
217
+ return { ok: true, data: result, meta: meta() };
218
+ }
219
+ catch (unknownError) {
220
+ if (idempotencyStoreKey && !idempotencyCompleted) {
221
+ await config.stores.idempotency.fail(idempotencyStoreKey).catch(() => undefined);
222
+ }
223
+ const error = asGuildGateError(unknownError);
224
+ const fallbackContext = contextBase ?? {
225
+ requestId,
226
+ request,
227
+ locale,
228
+ session,
229
+ userId: session?.userId,
230
+ isOwner: session ? owners.has(session.userId) : false,
231
+ stores: config.stores,
232
+ cache,
233
+ now: clock.now(),
234
+ };
235
+ await writeAudit({
236
+ definition,
237
+ context: fallbackContext,
238
+ resource,
239
+ result: error.status === 401 || error.status === 403 ? "denied" : "failed",
240
+ reasonCode: error.code,
241
+ durationMs: Date.now() - startedAt,
242
+ }).catch(() => undefined);
243
+ return {
244
+ ok: false,
245
+ error: {
246
+ code: error.code,
247
+ message: error.expose && error.message !== error.code
248
+ ? error.message
249
+ : config.locale?.messages?.[locale]?.[error.code] ?? messageFor(error.code, locale),
250
+ status: error.status,
251
+ retryable: error.retryable,
252
+ details: error.details,
253
+ },
254
+ meta: meta(),
255
+ };
256
+ }
257
+ finally {
258
+ if (lockKey && lockToken) {
259
+ await config.stores.locks.release(lockKey, lockToken).catch(() => undefined);
260
+ }
261
+ }
262
+ }
263
+ async function enforcePolicies(context, resource) {
264
+ const maintenance = await config.stores.policies.getMaintenance();
265
+ if (maintenance.enabled && !(maintenance.allowOwners && context.isOwner)) {
266
+ throw errors.maintenance(maintenance.reason);
267
+ }
268
+ const nowIso = clock.now().toISOString();
269
+ if (context.userId) {
270
+ const block = await config.stores.policies.getBlock("user", context.userId, nowIso);
271
+ if (block)
272
+ throw errors.subjectBlocked(block.reason);
273
+ }
274
+ if (context.request.ip) {
275
+ const block = await config.stores.policies.getBlock("ip", context.request.ip, nowIso);
276
+ if (block)
277
+ throw errors.subjectBlocked(block.reason);
278
+ }
279
+ if (resource?.type === "guild") {
280
+ const block = await config.stores.policies.getBlock("guild", resource.id, nowIso);
281
+ if (block)
282
+ throw errors.subjectBlocked(block.reason);
283
+ }
284
+ }
285
+ async function writeAudit(input) {
286
+ if (config.audit?.enabled === false || input.definition.audit?.enabled === false)
287
+ return;
288
+ const policyVersion = await config.stores.policies.getPolicyVersion();
289
+ const metadata = { durationMs: input.durationMs };
290
+ if (input.context.request.ip) {
291
+ metadata.ipHash = sha256(`${config.security.auditIpSalt}:${input.context.request.ip}`);
292
+ }
293
+ if (input.context.request.userAgent)
294
+ metadata.userAgent = input.context.request.userAgent;
295
+ await config.stores.audit.write({
296
+ id: randomUUID(),
297
+ requestId: input.context.requestId,
298
+ action: input.definition.name,
299
+ actor: input.context.session
300
+ ? {
301
+ type: input.context.isOwner ? "owner" : "user",
302
+ userId: input.context.session.userId,
303
+ sessionIdHash: input.context.session.idHash,
304
+ }
305
+ : { type: "anonymous" },
306
+ resource: input.resource,
307
+ result: input.result,
308
+ reasonCode: input.reasonCode,
309
+ policyVersion,
310
+ changes: redactValue(input.changes, sensitiveKeys),
311
+ metadata,
312
+ createdAt: clock.now().toISOString(),
313
+ });
314
+ }
315
+ const kernel = {
316
+ config,
317
+ sessions,
318
+ cache,
319
+ cookie,
320
+ csrf,
321
+ action(definition) {
322
+ if (!definition.name.trim())
323
+ throw errors.configuration("Action names cannot be empty");
324
+ if (auditFailClosed.has(definition.name) && !definition.idempotency) {
325
+ throw errors.configuration(`Audit fail-closed action ${definition.name} must use idempotency`);
326
+ }
327
+ return Object.freeze({ definition });
328
+ },
329
+ execute: executeAction,
330
+ async createSession(input) {
331
+ const locale = resolveLocale(input.locale, defaultLocale);
332
+ const created = await sessions.create({
333
+ userId: input.userId,
334
+ locale,
335
+ ...(input.metadata ? { metadata: input.metadata } : {}),
336
+ });
337
+ return {
338
+ session: created.session,
339
+ sessionToken: created.token,
340
+ csrfToken: csrf.issue(created.session.idHash),
341
+ setCookie: serializeSessionCookie(created.token, cookie),
342
+ };
343
+ },
344
+ revokeSession: (token) => sessions.revokeToken(token),
345
+ revokeUserSessions: (userId) => sessions.revokeAll(userId),
346
+ sessionCookie: (token) => serializeSessionCookie(token, cookie),
347
+ clearSessionCookie: () => serializeClearedCookie(cookie),
348
+ owner: {
349
+ async setMaintenance(input) {
350
+ await config.stores.policies.setMaintenance({
351
+ enabled: input.enabled,
352
+ allowOwners: input.allowOwners ?? true,
353
+ updatedAt: clock.now().toISOString(),
354
+ ...(input.reason ? { reason: input.reason } : {}),
355
+ });
356
+ await config.stores.policies.bumpPolicyVersion();
357
+ },
358
+ async block(input) {
359
+ await config.stores.policies.putBlock({ ...input, createdAt: clock.now().toISOString() });
360
+ await config.stores.policies.bumpPolicyVersion();
361
+ },
362
+ async unblock(subjectType, subjectId) {
363
+ await config.stores.policies.removeBlock(subjectType, subjectId);
364
+ await config.stores.policies.bumpPolicyVersion();
365
+ },
366
+ },
367
+ };
368
+ return kernel;
369
+ }
370
+ function validateConfig(config) {
371
+ if (!config.app.name.trim())
372
+ throw errors.configuration("app.name is required");
373
+ const baseUrl = new URL(config.app.baseUrl);
374
+ if (config.app.environment === "production" && baseUrl.protocol !== "https:") {
375
+ throw errors.configuration("app.baseUrl must use HTTPS in production");
376
+ }
377
+ if (Buffer.byteLength(config.security.auditIpSalt) < 16) {
378
+ throw errors.configuration("auditIpSalt must contain at least 16 bytes");
379
+ }
380
+ const session = config.security.session;
381
+ if (session.ttlMs <= 0 || session.idleTimeoutMs <= 0 || session.rotateAfterMs <= 0) {
382
+ throw errors.configuration("Session timeouts must be positive");
383
+ }
384
+ if (session.maximumSessionsPerUser < 1) {
385
+ throw errors.configuration("maximumSessionsPerUser must be at least 1");
386
+ }
387
+ if (config.app.environment === "production" && config.security.cookie?.secure === false) {
388
+ throw errors.configuration("Secure session cookies cannot be disabled in production");
389
+ }
390
+ }
391
+ function firstHeader(headers, name) {
392
+ const value = headers?.[name] ?? headers?.[name.toLowerCase()] ?? headers?.[name.toUpperCase()];
393
+ return Array.isArray(value) ? value[0] : value;
394
+ }
395
+ //# sourceMappingURL=kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AuditEvent, BlockRecord, OutboxRecord, SessionRecord } from "./types.js";
2
+ import type { GuildGateStores } from "./stores.js";
3
+ export interface MemoryStoreBundle extends GuildGateStores {
4
+ inspect(): {
5
+ sessions: SessionRecord[];
6
+ audit: AuditEvent[];
7
+ outbox: OutboxRecord[];
8
+ blocks: BlockRecord[];
9
+ };
10
+ clear(): void;
11
+ }
12
+ export declare function createMemoryStoreBundle(): MemoryStoreBundle;
13
+ //# sourceMappingURL=memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAOX,YAAY,EAGZ,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAYnD,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,OAAO,IAAI;QACT,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,MAAM,EAAE,YAAY,EAAE,CAAC;QACvB,MAAM,EAAE,WAAW,EAAE,CAAC;KACvB,CAAC;IACF,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAqQ3D"}