@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.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +399 -0
- package/README.tr.md +397 -0
- package/SECURITY.md +36 -0
- package/TEST_REPORT.md +50 -0
- package/bin/guildgate-doctor.mjs +91 -0
- package/bin/guildgate-writing-check.mjs +73 -0
- package/dist/action.d.ts +65 -0
- package/dist/action.d.ts.map +1 -0
- package/dist/action.js +4 -0
- package/dist/action.js.map +1 -0
- package/dist/cache.d.ts +23 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +53 -0
- package/dist/cache.js.map +1 -0
- package/dist/crypto.d.ts +15 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +87 -0
- package/dist/crypto.js.map +1 -0
- package/dist/discord/authorizer.d.ts +41 -0
- package/dist/discord/authorizer.d.ts.map +1 -0
- package/dist/discord/authorizer.js +101 -0
- package/dist/discord/authorizer.js.map +1 -0
- package/dist/discord/oauth.d.ts +64 -0
- package/dist/discord/oauth.d.ts.map +1 -0
- package/dist/discord/oauth.js +226 -0
- package/dist/discord/oauth.js.map +1 -0
- package/dist/discord/permissions.d.ts +85 -0
- package/dist/discord/permissions.d.ts.map +1 -0
- package/dist/discord/permissions.js +99 -0
- package/dist/discord/permissions.js.map +1 -0
- package/dist/discord.d.ts +4 -0
- package/dist/discord.d.ts.map +1 -0
- package/dist/discord.js +4 -0
- package/dist/discord.js.map +1 -0
- package/dist/errors.d.ts +43 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +57 -0
- package/dist/errors.js.map +1 -0
- package/dist/express.d.ts +3 -0
- package/dist/express.d.ts.map +1 -0
- package/dist/express.js +3 -0
- package/dist/express.js.map +1 -0
- package/dist/fastify.d.ts +3 -0
- package/dist/fastify.d.ts.map +1 -0
- package/dist/fastify.js +3 -0
- package/dist/fastify.js.map +1 -0
- package/dist/http/express.d.ts +24 -0
- package/dist/http/express.d.ts.map +1 -0
- package/dist/http/express.js +60 -0
- package/dist/http/express.js.map +1 -0
- package/dist/http/fastify.d.ts +25 -0
- package/dist/http/fastify.d.ts.map +1 -0
- package/dist/http/fastify.js +57 -0
- package/dist/http/fastify.js.map +1 -0
- package/dist/i18n.d.ts +5 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +66 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +83 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +395 -0
- package/dist/kernel.js.map +1 -0
- package/dist/memory-store.d.ts +13 -0
- package/dist/memory-store.d.ts.map +1 -0
- package/dist/memory-store.js +261 -0
- package/dist/memory-store.js.map +1 -0
- package/dist/realtime/hub.d.ts +42 -0
- package/dist/realtime/hub.d.ts.map +1 -0
- package/dist/realtime/hub.js +152 -0
- package/dist/realtime/hub.js.map +1 -0
- package/dist/realtime/outbox.d.ts +12 -0
- package/dist/realtime/outbox.d.ts.map +1 -0
- package/dist/realtime/outbox.js +18 -0
- package/dist/realtime/outbox.js.map +1 -0
- package/dist/realtime.d.ts +3 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +3 -0
- package/dist/realtime.js.map +1 -0
- package/dist/redis.d.ts +49 -0
- package/dist/redis.d.ts.map +1 -0
- package/dist/redis.js +233 -0
- package/dist/redis.js.map +1 -0
- package/dist/resilience.d.ts +23 -0
- package/dist/resilience.d.ts.map +1 -0
- package/dist/resilience.js +85 -0
- package/dist/resilience.js.map +1 -0
- package/dist/security.d.ts +21 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +94 -0
- package/dist/security.js.map +1 -0
- package/dist/session.d.ts +32 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +97 -0
- package/dist/session.js.map +1 -0
- package/dist/stores.d.ts +73 -0
- package/dist/stores.d.ts.map +1 -0
- package/dist/stores.js +4 -0
- package/dist/stores.js.map +1 -0
- package/dist/testing.d.ts +32 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +60 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +183 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/docs/WRITING_STYLE.md +118 -0
- package/docs/architecture.md +83 -0
- package/docs/custom-stores.md +111 -0
- package/docs/owner-management.md +44 -0
- package/docs/research-notes.md +61 -0
- package/docs/setup.md +104 -0
- package/docs/threat-model.md +79 -0
- package/docs/tr/arastirma-notlari.md +41 -0
- package/docs/tr/guvenlik-bildirimi.md +7 -0
- package/docs/tr/kurulum.md +63 -0
- package/docs/tr/mimari.md +59 -0
- package/docs/tr/sahip-yonetimi.md +7 -0
- package/docs/tr/tehdit-modeli.md +39 -0
- package/docs/tr/veritabani-suruculeri.md +23 -0
- package/docs/tr/yazim-kilavuzu.md +116 -0
- package/docs/uml/action-sequence.mmd +39 -0
- package/docs/uml/components.mmd +84 -0
- package/docs/uml/deployment.mmd +19 -0
- package/docs/uml/oauth-sequence.mmd +30 -0
- package/docs/uml/realtime-sequence.mmd +28 -0
- package/package.json +90 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export function createExpressHandler(kernel, action, options) {
|
|
2
|
+
return async (request, response, next) => {
|
|
3
|
+
try {
|
|
4
|
+
const envelope = {
|
|
5
|
+
method: request.method.toUpperCase(),
|
|
6
|
+
path: request.path || request.originalUrl || "/",
|
|
7
|
+
input: options?.input?.(request) ?? request.body,
|
|
8
|
+
headers: request.headers,
|
|
9
|
+
cookies: request.cookies,
|
|
10
|
+
ip: request.ip,
|
|
11
|
+
origin: header(request.headers, "origin"),
|
|
12
|
+
userAgent: header(request.headers, "user-agent"),
|
|
13
|
+
locale: options?.locale?.(request) ?? header(request.headers, "accept-language"),
|
|
14
|
+
sessionToken: request.cookies?.[kernel.cookie.name],
|
|
15
|
+
csrfToken: header(request.headers, "x-csrf-token"),
|
|
16
|
+
idempotencyKey: header(request.headers, "idempotency-key"),
|
|
17
|
+
};
|
|
18
|
+
const result = await kernel.execute(action, envelope);
|
|
19
|
+
response.setHeader("X-Request-Id", result.meta.requestId);
|
|
20
|
+
if (result.meta.clearSessionCookie)
|
|
21
|
+
response.setHeader("Set-Cookie", kernel.clearSessionCookie());
|
|
22
|
+
if (result.meta.replacementSessionToken)
|
|
23
|
+
response.setHeader("Set-Cookie", kernel.sessionCookie(result.meta.replacementSessionToken));
|
|
24
|
+
if (result.meta.replacementCsrfToken)
|
|
25
|
+
response.setHeader("X-CSRF-Token", result.meta.replacementCsrfToken);
|
|
26
|
+
if (result.meta.postCommitIssues?.length) {
|
|
27
|
+
response.setHeader("X-GuildGate-Post-Commit-Issues", result.meta.postCommitIssues.length);
|
|
28
|
+
}
|
|
29
|
+
if (result.meta.rateLimit) {
|
|
30
|
+
response.setHeader("RateLimit-Limit", result.meta.rateLimit.limit);
|
|
31
|
+
response.setHeader("RateLimit-Remaining", result.meta.rateLimit.remaining);
|
|
32
|
+
response.setHeader("RateLimit-Reset", Math.ceil(result.meta.rateLimit.resetAtMs / 1000));
|
|
33
|
+
}
|
|
34
|
+
if (!result.ok) {
|
|
35
|
+
if (result.error.details?.retryAfterMs && typeof result.error.details.retryAfterMs === "number") {
|
|
36
|
+
response.setHeader("Retry-After", Math.max(1, Math.ceil(result.error.details.retryAfterMs / 1000)));
|
|
37
|
+
}
|
|
38
|
+
response.status(result.error.status).json({
|
|
39
|
+
error: {
|
|
40
|
+
code: result.error.code,
|
|
41
|
+
message: result.error.message,
|
|
42
|
+
retryable: result.error.retryable,
|
|
43
|
+
details: result.error.details,
|
|
44
|
+
requestId: result.meta.requestId,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
response.status(200).json({ data: result.data, requestId: result.meta.requestId });
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
next(error);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function header(headers, name) {
|
|
57
|
+
const value = headers[name] ?? headers[name.toLowerCase()];
|
|
58
|
+
return Array.isArray(value) ? value[0] : value;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=express.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/http/express.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DefinedAction } from "../action.js";
|
|
2
|
+
import type { GuildGateKernel } from "../kernel.js";
|
|
3
|
+
export interface FastifyRequestLike {
|
|
4
|
+
method: string;
|
|
5
|
+
url: string;
|
|
6
|
+
headers: Record<string, string | string[] | undefined>;
|
|
7
|
+
cookies?: Record<string, string | undefined>;
|
|
8
|
+
ip?: string;
|
|
9
|
+
body?: unknown;
|
|
10
|
+
params?: unknown;
|
|
11
|
+
query?: unknown;
|
|
12
|
+
raw?: {
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface FastifyReplyLike {
|
|
17
|
+
code(status: number): FastifyReplyLike;
|
|
18
|
+
header(name: string, value: string | number): FastifyReplyLike;
|
|
19
|
+
send(payload: unknown): unknown;
|
|
20
|
+
}
|
|
21
|
+
export declare function createFastifyHandler<I, O>(kernel: GuildGateKernel, action: DefinedAction<I, O>, options?: {
|
|
22
|
+
input?: (request: FastifyRequestLike) => unknown;
|
|
23
|
+
locale?: (request: FastifyRequestLike) => string | undefined;
|
|
24
|
+
}): (request: FastifyRequestLike, reply: FastifyReplyLike) => Promise<unknown>;
|
|
25
|
+
//# sourceMappingURL=fastify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../../src/http/fastify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EACvC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,GAAG,SAAS,CAAC;CAC9D,GACA,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAmC5E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export function createFastifyHandler(kernel, action, options) {
|
|
2
|
+
return async (request, reply) => {
|
|
3
|
+
const envelope = {
|
|
4
|
+
method: request.method.toUpperCase(),
|
|
5
|
+
path: request.url.split("?")[0] ?? request.url,
|
|
6
|
+
input: options?.input?.(request) ?? request.body,
|
|
7
|
+
headers: request.headers,
|
|
8
|
+
cookies: request.cookies,
|
|
9
|
+
ip: request.ip,
|
|
10
|
+
origin: header(request.headers, "origin"),
|
|
11
|
+
userAgent: header(request.headers, "user-agent"),
|
|
12
|
+
locale: options?.locale?.(request) ?? header(request.headers, "accept-language"),
|
|
13
|
+
sessionToken: request.cookies?.[kernel.cookie.name],
|
|
14
|
+
csrfToken: header(request.headers, "x-csrf-token"),
|
|
15
|
+
idempotencyKey: header(request.headers, "idempotency-key"),
|
|
16
|
+
signal: request.raw?.signal,
|
|
17
|
+
};
|
|
18
|
+
const result = await kernel.execute(action, envelope);
|
|
19
|
+
applyMeta(kernel, reply, result.meta);
|
|
20
|
+
if (!result.ok) {
|
|
21
|
+
if (result.error.details?.retryAfterMs && typeof result.error.details.retryAfterMs === "number") {
|
|
22
|
+
reply.header("Retry-After", Math.max(1, Math.ceil(result.error.details.retryAfterMs / 1000)));
|
|
23
|
+
}
|
|
24
|
+
return reply.code(result.error.status).send({
|
|
25
|
+
error: {
|
|
26
|
+
code: result.error.code,
|
|
27
|
+
message: result.error.message,
|
|
28
|
+
retryable: result.error.retryable,
|
|
29
|
+
details: result.error.details,
|
|
30
|
+
requestId: result.meta.requestId,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return reply.code(200).send({ data: result.data, requestId: result.meta.requestId });
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function applyMeta(kernel, reply, meta) {
|
|
38
|
+
reply.header("X-Request-Id", meta.requestId);
|
|
39
|
+
if (meta.clearSessionCookie)
|
|
40
|
+
reply.header("Set-Cookie", kernel.clearSessionCookie());
|
|
41
|
+
if (meta.replacementSessionToken)
|
|
42
|
+
reply.header("Set-Cookie", kernel.sessionCookie(meta.replacementSessionToken));
|
|
43
|
+
if (meta.replacementCsrfToken)
|
|
44
|
+
reply.header("X-CSRF-Token", meta.replacementCsrfToken);
|
|
45
|
+
if (meta.postCommitIssues?.length)
|
|
46
|
+
reply.header("X-GuildGate-Post-Commit-Issues", meta.postCommitIssues.length);
|
|
47
|
+
if (meta.rateLimit) {
|
|
48
|
+
reply.header("RateLimit-Limit", meta.rateLimit.limit);
|
|
49
|
+
reply.header("RateLimit-Remaining", meta.rateLimit.remaining);
|
|
50
|
+
reply.header("RateLimit-Reset", Math.ceil(meta.rateLimit.resetAtMs / 1000));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function header(headers, name) {
|
|
54
|
+
const value = headers[name] ?? headers[name.toLowerCase()];
|
|
55
|
+
return Array.isArray(value) ? value[0] : value;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=fastify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../src/http/fastify.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SupportedLocale } from "./types.js";
|
|
2
|
+
export declare function resolveLocale(value: string | undefined, fallback: SupportedLocale): SupportedLocale;
|
|
3
|
+
export declare function messageFor(code: string, locale: SupportedLocale): string;
|
|
4
|
+
export declare function getMessages(locale: SupportedLocale): Readonly<Record<string, string>>;
|
|
5
|
+
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyDlD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe,CAGnG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAExE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAErF"}
|
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const messages = {
|
|
2
|
+
en: {
|
|
3
|
+
AUTHENTICATION_REQUIRED: "Sign in before continuing.",
|
|
4
|
+
SESSION_EXPIRED: "Your session expired. Sign in again.",
|
|
5
|
+
SESSION_REVOKED: "This session is no longer active.",
|
|
6
|
+
CSRF_INVALID: "The request could not be verified.",
|
|
7
|
+
ORIGIN_NOT_ALLOWED: "This request came from an unapproved origin.",
|
|
8
|
+
GUILD_ACCESS_DENIED: "You cannot manage this server.",
|
|
9
|
+
USER_PERMISSION_MISSING: "Your Discord account does not have the required server permission.",
|
|
10
|
+
BOT_PERMISSION_MISSING: "The bot does not have the permission needed for this operation.",
|
|
11
|
+
BOT_NOT_IN_GUILD: "The bot is not installed in this server.",
|
|
12
|
+
RATE_LIMITED: "Too many requests were sent. Try again shortly.",
|
|
13
|
+
INPUT_INVALID: "Some submitted values are invalid.",
|
|
14
|
+
IDEMPOTENCY_KEY_REQUIRED: "This operation needs an Idempotency-Key header.",
|
|
15
|
+
IDEMPOTENCY_CONFLICT: "This idempotency key was already used with different data.",
|
|
16
|
+
IDEMPOTENCY_INFLIGHT: "The same operation is already running.",
|
|
17
|
+
REVISION_CONFLICT: "These settings changed after you opened the page. Reload and review the latest version.",
|
|
18
|
+
RESOURCE_BUSY: "Another operation is editing the same resource.",
|
|
19
|
+
UPSTREAM_TIMEOUT: "A required service did not respond in time.",
|
|
20
|
+
UPSTREAM_UNAVAILABLE: "A required service is currently unavailable.",
|
|
21
|
+
MAINTENANCE_MODE: "Dashboard changes are temporarily paused.",
|
|
22
|
+
SUBJECT_BLOCKED: "Access to this dashboard has been blocked.",
|
|
23
|
+
OAUTH_STATE_INVALID: "The Discord sign-in request expired or was already used.",
|
|
24
|
+
OAUTH_FAILED: "Discord sign-in could not be completed.",
|
|
25
|
+
CONFIGURATION_ERROR: "GuildGate is not configured correctly.",
|
|
26
|
+
INTERNAL_ERROR: "The request failed unexpectedly.",
|
|
27
|
+
},
|
|
28
|
+
tr: {
|
|
29
|
+
AUTHENTICATION_REQUIRED: "Devam etmeden önce giriş yapın.",
|
|
30
|
+
SESSION_EXPIRED: "Oturumunuz sona erdi. Yeniden giriş yapın.",
|
|
31
|
+
SESSION_REVOKED: "Bu oturum artık etkin değil.",
|
|
32
|
+
CSRF_INVALID: "İstek doğrulanamadı.",
|
|
33
|
+
ORIGIN_NOT_ALLOWED: "İstek izin verilmeyen bir kaynaktan geldi.",
|
|
34
|
+
GUILD_ACCESS_DENIED: "Bu sunucuyu yönetemezsiniz.",
|
|
35
|
+
USER_PERMISSION_MISSING: "Discord hesabınız gerekli sunucu yetkisine sahip değil.",
|
|
36
|
+
BOT_PERMISSION_MISSING: "Bot bu işlem için gereken yetkiye sahip değil.",
|
|
37
|
+
BOT_NOT_IN_GUILD: "Bot bu sunucuda kurulu değil.",
|
|
38
|
+
RATE_LIMITED: "Çok fazla istek gönderildi. Kısa süre sonra yeniden deneyin.",
|
|
39
|
+
INPUT_INVALID: "Gönderilen bazı değerler geçersiz.",
|
|
40
|
+
IDEMPOTENCY_KEY_REQUIRED: "Bu işlem Idempotency-Key başlığı gerektiriyor.",
|
|
41
|
+
IDEMPOTENCY_CONFLICT: "Bu idempotency anahtarı farklı verilerle daha önce kullanıldı.",
|
|
42
|
+
IDEMPOTENCY_INFLIGHT: "Aynı işlem şu anda çalışıyor.",
|
|
43
|
+
REVISION_CONFLICT: "Ayarlar siz sayfayı açtıktan sonra değişti. Güncel sürümü yeniden yükleyin.",
|
|
44
|
+
RESOURCE_BUSY: "Aynı kaynak üzerinde başka bir işlem çalışıyor.",
|
|
45
|
+
UPSTREAM_TIMEOUT: "Gerekli servis zamanında yanıt vermedi.",
|
|
46
|
+
UPSTREAM_UNAVAILABLE: "Gerekli servis şu anda kullanılamıyor.",
|
|
47
|
+
MAINTENANCE_MODE: "Panel değişiklikleri geçici olarak durduruldu.",
|
|
48
|
+
SUBJECT_BLOCKED: "Bu panel için erişim engellendi.",
|
|
49
|
+
OAUTH_STATE_INVALID: "Discord giriş isteğinin süresi doldu veya istek daha önce kullanıldı.",
|
|
50
|
+
OAUTH_FAILED: "Discord girişi tamamlanamadı.",
|
|
51
|
+
CONFIGURATION_ERROR: "GuildGate doğru yapılandırılmamış.",
|
|
52
|
+
INTERNAL_ERROR: "İstek beklenmeyen bir nedenle tamamlanamadı.",
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
export function resolveLocale(value, fallback) {
|
|
56
|
+
if (!value)
|
|
57
|
+
return fallback;
|
|
58
|
+
return value.toLowerCase().startsWith("tr") ? "tr" : "en";
|
|
59
|
+
}
|
|
60
|
+
export function messageFor(code, locale) {
|
|
61
|
+
return messages[locale][code] ?? messages[locale].INTERNAL_ERROR ?? "The request failed.";
|
|
62
|
+
}
|
|
63
|
+
export function getMessages(locale) {
|
|
64
|
+
return messages[locale];
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=i18n.js.map
|
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAoD;IAChE,EAAE,EAAE;QACF,uBAAuB,EAAE,4BAA4B;QACrD,eAAe,EAAE,sCAAsC;QACvD,eAAe,EAAE,mCAAmC;QACpD,YAAY,EAAE,oCAAoC;QAClD,kBAAkB,EAAE,8CAA8C;QAClE,mBAAmB,EAAE,gCAAgC;QACrD,uBAAuB,EAAE,oEAAoE;QAC7F,sBAAsB,EAAE,iEAAiE;QACzF,gBAAgB,EAAE,0CAA0C;QAC5D,YAAY,EAAE,iDAAiD;QAC/D,aAAa,EAAE,oCAAoC;QACnD,wBAAwB,EAAE,iDAAiD;QAC3E,oBAAoB,EAAE,4DAA4D;QAClF,oBAAoB,EAAE,wCAAwC;QAC9D,iBAAiB,EAAE,yFAAyF;QAC5G,aAAa,EAAE,iDAAiD;QAChE,gBAAgB,EAAE,6CAA6C;QAC/D,oBAAoB,EAAE,8CAA8C;QACpE,gBAAgB,EAAE,2CAA2C;QAC7D,eAAe,EAAE,4CAA4C;QAC7D,mBAAmB,EAAE,0DAA0D;QAC/E,YAAY,EAAE,yCAAyC;QACvD,mBAAmB,EAAE,wCAAwC;QAC7D,cAAc,EAAE,kCAAkC;KACnD;IACD,EAAE,EAAE;QACF,uBAAuB,EAAE,iCAAiC;QAC1D,eAAe,EAAE,4CAA4C;QAC7D,eAAe,EAAE,8BAA8B;QAC/C,YAAY,EAAE,sBAAsB;QACpC,kBAAkB,EAAE,4CAA4C;QAChE,mBAAmB,EAAE,6BAA6B;QAClD,uBAAuB,EAAE,yDAAyD;QAClF,sBAAsB,EAAE,gDAAgD;QACxE,gBAAgB,EAAE,+BAA+B;QACjD,YAAY,EAAE,8DAA8D;QAC5E,aAAa,EAAE,oCAAoC;QACnD,wBAAwB,EAAE,gDAAgD;QAC1E,oBAAoB,EAAE,gEAAgE;QACtF,oBAAoB,EAAE,+BAA+B;QACrD,iBAAiB,EAAE,6EAA6E;QAChG,aAAa,EAAE,iDAAiD;QAChE,gBAAgB,EAAE,yCAAyC;QAC3D,oBAAoB,EAAE,wCAAwC;QAC9D,gBAAgB,EAAE,gDAAgD;QAClE,eAAe,EAAE,kCAAkC;QACnD,mBAAmB,EAAE,uEAAuE;QAC5F,YAAY,EAAE,+BAA+B;QAC7C,mBAAmB,EAAE,oCAAoC;QACzD,cAAc,EAAE,8CAA8C;KAC/D;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAAyB,EAAE,QAAyB;IAChF,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,MAAuB;IAC9D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,cAAc,IAAI,qBAAqB,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./action.js";
|
|
2
|
+
export * from "./cache.js";
|
|
3
|
+
export * from "./crypto.js";
|
|
4
|
+
export * from "./errors.js";
|
|
5
|
+
export * from "./i18n.js";
|
|
6
|
+
export * from "./kernel.js";
|
|
7
|
+
export * from "./memory-store.js";
|
|
8
|
+
export * from "./resilience.js";
|
|
9
|
+
export * from "./security.js";
|
|
10
|
+
export * from "./session.js";
|
|
11
|
+
export * from "./stores.js";
|
|
12
|
+
export * from "./types.js";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./action.js";
|
|
2
|
+
export * from "./cache.js";
|
|
3
|
+
export * from "./crypto.js";
|
|
4
|
+
export * from "./errors.js";
|
|
5
|
+
export * from "./i18n.js";
|
|
6
|
+
export * from "./kernel.js";
|
|
7
|
+
export * from "./memory-store.js";
|
|
8
|
+
export * from "./resilience.js";
|
|
9
|
+
export * from "./security.js";
|
|
10
|
+
export * from "./session.js";
|
|
11
|
+
export * from "./stores.js";
|
|
12
|
+
export * from "./types.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
package/dist/kernel.d.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { ActionDefinition, DefinedAction } from "./action.js";
|
|
2
|
+
import { CacheManager } from "./cache.js";
|
|
3
|
+
import { type CookieConfig } from "./security.js";
|
|
4
|
+
import { SessionManager } from "./session.js";
|
|
5
|
+
import type { GuildGateStores } from "./stores.js";
|
|
6
|
+
import type { ActionExecutionResult, Clock, EnvironmentName, RealtimeEvent, RequestEnvelope, SessionRecord, SupportedLocale } from "./types.js";
|
|
7
|
+
export interface RealtimePublisher {
|
|
8
|
+
publish(event: RealtimeEvent): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export interface GuildGateConfig {
|
|
11
|
+
app: {
|
|
12
|
+
name: string;
|
|
13
|
+
environment: EnvironmentName;
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
};
|
|
16
|
+
owners?: string[];
|
|
17
|
+
locale?: {
|
|
18
|
+
default?: SupportedLocale;
|
|
19
|
+
messages?: Partial<Record<SupportedLocale, Record<string, string>>>;
|
|
20
|
+
};
|
|
21
|
+
security: {
|
|
22
|
+
allowedOrigins: string[];
|
|
23
|
+
csrfSecret: string;
|
|
24
|
+
auditIpSalt: string;
|
|
25
|
+
session: {
|
|
26
|
+
ttlMs: number;
|
|
27
|
+
idleTimeoutMs: number;
|
|
28
|
+
rotateAfterMs: number;
|
|
29
|
+
maximumSessionsPerUser: number;
|
|
30
|
+
};
|
|
31
|
+
cookie?: Partial<CookieConfig>;
|
|
32
|
+
};
|
|
33
|
+
stores: GuildGateStores;
|
|
34
|
+
realtime?: RealtimePublisher;
|
|
35
|
+
audit?: {
|
|
36
|
+
enabled?: boolean;
|
|
37
|
+
redactKeys?: string[];
|
|
38
|
+
failClosedActions?: string[];
|
|
39
|
+
};
|
|
40
|
+
clock?: Clock;
|
|
41
|
+
}
|
|
42
|
+
export interface GuildGateKernel {
|
|
43
|
+
readonly config: GuildGateConfig;
|
|
44
|
+
readonly sessions: SessionManager;
|
|
45
|
+
readonly cache: CacheManager;
|
|
46
|
+
readonly cookie: CookieConfig;
|
|
47
|
+
readonly csrf: {
|
|
48
|
+
issue(sessionIdHash: string): string;
|
|
49
|
+
verify(sessionIdHash: string, token: string | undefined): boolean;
|
|
50
|
+
};
|
|
51
|
+
action<I, O>(definition: ActionDefinition<I, O>): DefinedAction<I, O>;
|
|
52
|
+
execute<I, O>(action: DefinedAction<I, O>, request: RequestEnvelope): Promise<ActionExecutionResult<O>>;
|
|
53
|
+
createSession(input: {
|
|
54
|
+
userId: string;
|
|
55
|
+
locale?: string;
|
|
56
|
+
metadata?: Record<string, unknown>;
|
|
57
|
+
}): Promise<{
|
|
58
|
+
session: SessionRecord;
|
|
59
|
+
sessionToken: string;
|
|
60
|
+
csrfToken: string;
|
|
61
|
+
setCookie: string;
|
|
62
|
+
}>;
|
|
63
|
+
revokeSession(token: string): Promise<void>;
|
|
64
|
+
revokeUserSessions(userId: string): Promise<number>;
|
|
65
|
+
sessionCookie(token: string): string;
|
|
66
|
+
clearSessionCookie(): string;
|
|
67
|
+
owner: {
|
|
68
|
+
setMaintenance(input: {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
reason?: string;
|
|
71
|
+
allowOwners?: boolean;
|
|
72
|
+
}): Promise<void>;
|
|
73
|
+
block(input: {
|
|
74
|
+
subjectType: "user" | "guild" | "ip";
|
|
75
|
+
subjectId: string;
|
|
76
|
+
reason: string;
|
|
77
|
+
expiresAt?: string;
|
|
78
|
+
}): Promise<void>;
|
|
79
|
+
unblock(subjectType: "user" | "guild" | "ip", subjectId: string): Promise<void>;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export declare function createGuildGate(config: GuildGateConfig): GuildGateKernel;
|
|
83
|
+
//# sourceMappingURL=kernel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
|