@shivaedev/platform 0.6.0 → 0.6.1
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 +23 -0
- package/README.md +361 -112
- package/dist/errors/rejectedField.d.ts +7 -0
- package/dist/errors/rejectedField.d.ts.map +1 -0
- package/dist/errors/{rejected-field.js → rejectedField.js} +4 -2
- package/dist/errors/rejectedField.js.map +1 -0
- package/dist/errors/taxonomy.d.ts +10 -0
- package/dist/errors/taxonomy.d.ts.map +1 -1
- package/dist/errors/taxonomy.js +4 -0
- package/dist/errors/taxonomy.js.map +1 -1
- package/dist/rpc/identity.d.ts.map +1 -1
- package/dist/rpc/identity.js.map +1 -1
- package/dist/rpc/middleware.d.ts.map +1 -1
- package/dist/rpc/middleware.js.map +1 -1
- package/dist/server/appHost.d.ts +56 -0
- package/dist/server/appHost.d.ts.map +1 -0
- package/dist/server/appHost.js +55 -0
- package/dist/server/appHost.js.map +1 -0
- package/dist/{better-auth → server/better-auth}/adapter.d.ts +1 -1
- package/dist/server/better-auth/adapter.d.ts.map +1 -0
- package/dist/{better-auth → server/better-auth}/adapter.js +26 -14
- package/dist/server/better-auth/adapter.js.map +1 -0
- package/dist/{better-auth → server/better-auth}/relation.d.ts +15 -15
- package/dist/server/better-auth/relation.d.ts.map +1 -0
- package/dist/{better-auth → server/better-auth}/relation.js +2 -2
- package/dist/server/better-auth/relation.js.map +1 -0
- package/dist/server/better-auth/rowAdapter.d.ts +8 -0
- package/dist/server/better-auth/rowAdapter.d.ts.map +1 -0
- package/dist/server/better-auth/rowAdapter.js +52 -0
- package/dist/server/better-auth/rowAdapter.js.map +1 -0
- package/dist/{better-auth → server/better-auth}/where.d.ts +1 -1
- package/dist/server/better-auth/where.d.ts.map +1 -0
- package/dist/{better-auth → server/better-auth}/where.js +22 -18
- package/dist/server/better-auth/where.js.map +1 -0
- package/dist/{node-http/subscription-signal.d.ts → server/node-http/subscriptionSignal.d.ts} +2 -2
- package/dist/server/node-http/subscriptionSignal.d.ts.map +1 -0
- package/dist/{node-http/subscription-signal.js → server/node-http/subscriptionSignal.js} +20 -13
- package/dist/server/node-http/subscriptionSignal.js.map +1 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts +4 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts.map +1 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.js +14 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.js.map +1 -0
- package/dist/server/rpc-server/boundary.d.ts +9 -0
- package/dist/server/rpc-server/boundary.d.ts.map +1 -0
- package/dist/server/rpc-server/boundary.js +18 -0
- package/dist/server/rpc-server/boundary.js.map +1 -0
- package/dist/server/rpc-server/local.d.ts +7 -0
- package/dist/server/rpc-server/local.d.ts.map +1 -0
- package/dist/server/rpc-server/local.js +66 -0
- package/dist/server/rpc-server/local.js.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/origin.d.ts +2 -2
- package/dist/server/rpc-server/origin.d.ts.map +1 -0
- package/dist/server/rpc-server/origin.js +16 -0
- package/dist/server/rpc-server/origin.js.map +1 -0
- package/dist/server/rpc-server/redact.d.ts +3 -0
- package/dist/server/rpc-server/redact.d.ts.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/redact.js +9 -7
- package/dist/server/rpc-server/redact.js.map +1 -0
- package/dist/server/rpc-server/redactCause.d.ts +6 -0
- package/dist/server/rpc-server/redactCause.d.ts.map +1 -0
- package/dist/server/rpc-server/redactCause.js +36 -0
- package/dist/server/rpc-server/redactCause.js.map +1 -0
- package/dist/server/rpc-server/sensitive.d.ts +5 -0
- package/dist/server/rpc-server/sensitive.d.ts.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/sensitive.js +21 -17
- package/dist/server/rpc-server/sensitive.js.map +1 -0
- package/dist/server/rpc-server/session.d.ts +21 -0
- package/dist/server/rpc-server/session.d.ts.map +1 -0
- package/dist/server/rpc-server/session.js +37 -0
- package/dist/server/rpc-server/session.js.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/tracing.d.ts +1 -1
- package/dist/server/rpc-server/tracing.d.ts.map +1 -0
- package/dist/server/rpc-server/tracing.js +42 -0
- package/dist/server/rpc-server/tracing.js.map +1 -0
- package/dist/server/rpc-server/transportHeaders.d.ts +4 -0
- package/dist/server/rpc-server/transportHeaders.d.ts.map +1 -0
- package/dist/server/rpc-server/transportHeaders.js +6 -0
- package/dist/server/rpc-server/transportHeaders.js.map +1 -0
- package/dist/server/runtime/makePlatform.d.ts +4 -0
- package/dist/server/runtime/makePlatform.d.ts.map +1 -0
- package/dist/{runtime/make.js → server/runtime/makePlatform.js} +10 -8
- package/dist/server/runtime/makePlatform.js.map +1 -0
- package/dist/server/runtime/types.d.ts +19 -0
- package/dist/server/runtime/types.d.ts.map +1 -0
- package/dist/{runtime → server/runtime}/types.js.map +1 -1
- package/dist/server/testing/makePlatformIt.d.ts +8 -0
- package/dist/server/testing/makePlatformIt.d.ts.map +1 -0
- package/dist/{testing/vitest.js → server/testing/makePlatformIt.js} +7 -3
- package/dist/server/testing/makePlatformIt.js.map +1 -0
- package/dist/server/testing/types.d.ts +28 -0
- package/dist/server/testing/types.d.ts.map +1 -0
- package/dist/{testing → server/testing}/types.js.map +1 -1
- package/docs/north-star.md +36 -0
- package/docs/roadmap.md +30 -0
- package/package.json +317 -16
- package/src/errors/{rejected-field.ts → rejectedField.ts} +3 -6
- package/src/errors/taxonomy.ts +2 -8
- package/src/rpc/identity.ts +0 -4
- package/src/rpc/middleware.ts +18 -9
- package/src/server/appHost.ts +134 -0
- package/src/{better-auth → server/better-auth}/adapter.ts +26 -30
- package/src/{better-auth → server/better-auth}/relation.ts +17 -19
- package/src/{better-auth/row-adapter.ts → server/better-auth/rowAdapter.ts} +19 -21
- package/src/{better-auth → server/better-auth}/where.ts +22 -32
- package/src/{node-http/subscription-signal.ts → server/node-http/subscriptionSignal.ts} +19 -22
- package/src/{rpc-server/adapters/better-auth-sessions.ts → server/rpc-server/adapters/betterAuthSessions.ts} +9 -10
- package/src/server/rpc-server/boundary.ts +26 -0
- package/src/server/rpc-server/local.ts +70 -0
- package/src/{rpc-server → server/rpc-server}/origin.ts +10 -13
- package/src/{rpc-server → server/rpc-server}/redact.ts +9 -11
- package/src/server/rpc-server/redactCause.ts +40 -0
- package/src/{rpc-server → server/rpc-server}/sensitive.ts +17 -22
- package/src/{rpc-server → server/rpc-server}/session.ts +22 -23
- package/src/{rpc-server → server/rpc-server}/tracing.ts +15 -18
- package/src/{rpc-server/transport.ts → server/rpc-server/transportHeaders.ts} +3 -3
- package/src/{runtime/make.ts → server/runtime/makePlatform.ts} +18 -26
- package/src/server/runtime/types.ts +24 -0
- package/src/{testing/vitest.ts → server/testing/makePlatformIt.ts} +27 -23
- package/src/server/testing/types.ts +38 -0
- package/dist/better-auth/adapter.d.ts.map +0 -1
- package/dist/better-auth/adapter.js.map +0 -1
- package/dist/better-auth/relation.d.ts.map +0 -1
- package/dist/better-auth/relation.js.map +0 -1
- package/dist/better-auth/row-adapter.d.ts +0 -8
- package/dist/better-auth/row-adapter.d.ts.map +0 -1
- package/dist/better-auth/row-adapter.js +0 -46
- package/dist/better-auth/row-adapter.js.map +0 -1
- package/dist/better-auth/where.d.ts.map +0 -1
- package/dist/better-auth/where.js.map +0 -1
- package/dist/errors/rejected-field.d.ts +0 -7
- package/dist/errors/rejected-field.d.ts.map +0 -1
- package/dist/errors/rejected-field.js.map +0 -1
- package/dist/node-http/subscription-signal.d.ts.map +0 -1
- package/dist/node-http/subscription-signal.js.map +0 -1
- package/dist/rpc-server/adapters/better-auth-sessions.d.ts +0 -4
- package/dist/rpc-server/adapters/better-auth-sessions.d.ts.map +0 -1
- package/dist/rpc-server/adapters/better-auth-sessions.js +0 -11
- package/dist/rpc-server/adapters/better-auth-sessions.js.map +0 -1
- package/dist/rpc-server/origin.d.ts.map +0 -1
- package/dist/rpc-server/origin.js +0 -12
- package/dist/rpc-server/origin.js.map +0 -1
- package/dist/rpc-server/redact-cause.d.ts +0 -6
- package/dist/rpc-server/redact-cause.d.ts.map +0 -1
- package/dist/rpc-server/redact-cause.js +0 -28
- package/dist/rpc-server/redact-cause.js.map +0 -1
- package/dist/rpc-server/redact.d.ts +0 -3
- package/dist/rpc-server/redact.d.ts.map +0 -1
- package/dist/rpc-server/redact.js.map +0 -1
- package/dist/rpc-server/sensitive.d.ts +0 -5
- package/dist/rpc-server/sensitive.d.ts.map +0 -1
- package/dist/rpc-server/sensitive.js.map +0 -1
- package/dist/rpc-server/session.d.ts +0 -21
- package/dist/rpc-server/session.d.ts.map +0 -1
- package/dist/rpc-server/session.js +0 -31
- package/dist/rpc-server/session.js.map +0 -1
- package/dist/rpc-server/tracing.d.ts.map +0 -1
- package/dist/rpc-server/tracing.js +0 -34
- package/dist/rpc-server/tracing.js.map +0 -1
- package/dist/rpc-server/transport.d.ts +0 -4
- package/dist/rpc-server/transport.d.ts.map +0 -1
- package/dist/rpc-server/transport.js +0 -4
- package/dist/rpc-server/transport.js.map +0 -1
- package/dist/runtime/make.d.ts +0 -4
- package/dist/runtime/make.d.ts.map +0 -1
- package/dist/runtime/make.js.map +0 -1
- package/dist/runtime/types.d.ts +0 -19
- package/dist/runtime/types.d.ts.map +0 -1
- package/dist/testing/types.d.ts +0 -28
- package/dist/testing/types.d.ts.map +0 -1
- package/dist/testing/vitest.d.ts +0 -8
- package/dist/testing/vitest.d.ts.map +0 -1
- package/dist/testing/vitest.js.map +0 -1
- package/src/rpc-server/redact-cause.ts +0 -41
- package/src/runtime/types.ts +0 -24
- package/src/testing/types.ts +0 -43
- /package/dist/{runtime → server/runtime}/types.js +0 -0
- /package/dist/{testing → server/testing}/types.js +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Cause, Context, ErrorReporter, Predicate } from "effect";
|
|
2
|
+
import { redact } from "./redact.ts";
|
|
3
|
+
import { isSensitiveKey, redactText, type SensitiveKey } from "./sensitive.ts";
|
|
4
|
+
|
|
5
|
+
function reporterHints(error: Error, sensitive: SensitiveKey) {
|
|
6
|
+
return {
|
|
7
|
+
...(ErrorReporter.isIgnored(error) ? { [ErrorReporter.ignore]: true } : {}),
|
|
8
|
+
...(ErrorReporter.severity in error ? { [ErrorReporter.severity]: ErrorReporter.getSeverity(error) } : {}),
|
|
9
|
+
...(ErrorReporter.attributes in error ? { [ErrorReporter.attributes]: redact(ErrorReporter.getAttributes(error), sensitive) } : {}),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function redactError(error: Error, sensitive: SensitiveKey): Error {
|
|
13
|
+
const options = error.cause === undefined ? undefined : { cause: redact(error.cause, sensitive) };
|
|
14
|
+
const copy = new Error(redactText(error.message, sensitive), options);
|
|
15
|
+
Object.defineProperty(copy, "name", { configurable: true, value: error.name, writable: true });
|
|
16
|
+
Object.defineProperty(copy, "stack", {
|
|
17
|
+
configurable: true,
|
|
18
|
+
value: error.stack === undefined ? undefined : redactText(error.stack, sensitive),
|
|
19
|
+
writable: true,
|
|
20
|
+
});
|
|
21
|
+
return Object.assign(copy, redact(Object.fromEntries(Object.entries(error)), sensitive), reporterHints(error, sensitive));
|
|
22
|
+
}
|
|
23
|
+
export function redactDefect(defect: unknown, sensitive: SensitiveKey = isSensitiveKey): unknown {
|
|
24
|
+
return Predicate.isError(defect) ? redactError(defect, sensitive) : redact(defect, sensitive);
|
|
25
|
+
}
|
|
26
|
+
export function redactCause<E>(cause: Cause.Cause<E>, sensitive: SensitiveKey = isSensitiveKey): Cause.Cause<E> {
|
|
27
|
+
return Cause.fromReasons(
|
|
28
|
+
cause.reasons.flatMap<Cause.Reason<E>>((reason) =>
|
|
29
|
+
Cause.isDieReason(reason)
|
|
30
|
+
? Cause.annotate(Cause.die(redactDefect(reason.defect, sensitive)), Context.makeUnsafe(reason.annotations)).reasons
|
|
31
|
+
: [reason],
|
|
32
|
+
),
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
export function redactingErrorReporter(reporter: ErrorReporter.ErrorReporter, sensitive: SensitiveKey = isSensitiveKey): ErrorReporter.ErrorReporter {
|
|
36
|
+
return {
|
|
37
|
+
[ErrorReporter.TypeId]: ErrorReporter.TypeId,
|
|
38
|
+
report: (options) => reporter.report({ ...options, cause: redactCause(options.cause, sensitive) }),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export const REDACTED = "<redacted>";
|
|
2
|
-
|
|
3
2
|
const MAX_STRING = 2048;
|
|
4
3
|
const SENSITIVE_PARTS = [
|
|
5
4
|
"password",
|
|
@@ -23,38 +22,34 @@ const SENSITIVE_PARTS = [
|
|
|
23
22
|
];
|
|
24
23
|
const SENSITIVE_WORDS = ["otp", "pin", "cvv", "cvc", "ssn", "iban"];
|
|
25
24
|
const SENSITIVE_NAMES = ["session", "pan"];
|
|
26
|
-
|
|
27
25
|
export type SensitiveKey = (key: string) => boolean;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
.replaceAll(/([
|
|
32
|
-
.replaceAll(/([A-Z])([A-Z][a-z])/gu, "$1 $2")
|
|
26
|
+
function wordsOf(key: string): string[] {
|
|
27
|
+
return key
|
|
28
|
+
.replaceAll(/(?<lower>[a-z0-9])(?<upper>[A-Z])/gu, "$<lower> $<upper>")
|
|
29
|
+
.replaceAll(/(?<initial>[A-Z])(?<word>[A-Z][a-z])/gu, "$<initial> $<word>")
|
|
33
30
|
.toLowerCase()
|
|
34
31
|
.split(/[\s_-]+/u);
|
|
35
|
-
|
|
36
|
-
export
|
|
32
|
+
}
|
|
33
|
+
export function isSensitiveKey(key: string): boolean {
|
|
37
34
|
const normalized = key.toLowerCase().replaceAll(/[-_]/gu, "");
|
|
38
35
|
return (
|
|
39
36
|
SENSITIVE_NAMES.includes(normalized)
|
|
40
37
|
|| SENSITIVE_PARTS.some((part) => normalized.includes(part))
|
|
41
38
|
|| wordsOf(key).some((word) => SENSITIVE_WORDS.includes(word))
|
|
42
39
|
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const AUTH_SCHEME = /\b(Bearer|Basic)\s+[A-Za-z0-9._~+/-]+=*/giu;
|
|
40
|
+
}
|
|
41
|
+
const AUTH_SCHEME = /\b(?<scheme>Bearer|Basic)\s+[A-Za-z0-9._~+/-]+=*/giu;
|
|
46
42
|
const JWT = /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*/gu;
|
|
47
|
-
const URL_PASSWORD = /(
|
|
48
|
-
const ASSIGNMENT = /([A-Za-z][\w.-]*)(["']?\s*[=:]\s*["']?)([^\s"'&,;]+)/gu;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
.replaceAll(AUTH_SCHEME, `$1 ${REDACTED}`)
|
|
43
|
+
const URL_PASSWORD = /(?<authority>\/\/[^:/\s@]+:)[^@/\s]+@/gu;
|
|
44
|
+
const ASSIGNMENT = /(?<key>[A-Za-z][\w.-]*)(?<separator>["']?\s*[=:]\s*["']?)(?<value>[^\s"'&,;]+)/gu;
|
|
45
|
+
function scrub(text: string, sensitive: SensitiveKey): string {
|
|
46
|
+
return text
|
|
47
|
+
.replaceAll(AUTH_SCHEME, `$<scheme> ${REDACTED}`)
|
|
53
48
|
.replaceAll(JWT, REDACTED)
|
|
54
|
-
.replaceAll(URL_PASSWORD,
|
|
49
|
+
.replaceAll(URL_PASSWORD, `$<authority>${REDACTED}@`)
|
|
55
50
|
.replaceAll(ASSIGNMENT, (match: string, key: string, separator: string) => (sensitive(key) ? `${key}${separator}${REDACTED}` : match));
|
|
56
|
-
|
|
57
|
-
export
|
|
51
|
+
}
|
|
52
|
+
export function redactText(text: string, sensitive: SensitiveKey): string {
|
|
58
53
|
const scrubbed = scrub(text, sensitive);
|
|
59
54
|
return scrubbed.length > MAX_STRING ? `${scrubbed.slice(0, MAX_STRING)}…<${scrubbed.length - MAX_STRING} more chars>` : scrubbed;
|
|
60
|
-
}
|
|
55
|
+
}
|
|
@@ -4,39 +4,37 @@ import { type AuthUnavailable, Forbidden, Unauthorized } from "#errors/taxonomy.
|
|
|
4
4
|
import { Identity, OptionalIdentity } from "#rpc/identity.ts";
|
|
5
5
|
import { Authenticated, MaybeAuthenticated } from "#rpc/middleware.ts";
|
|
6
6
|
import { type OriginPolicy, originRequest } from "./origin.ts";
|
|
7
|
-
import { transportHeaders } from "./
|
|
8
|
-
|
|
7
|
+
import { transportHeaders } from "./transportHeaders.ts";
|
|
9
8
|
export interface SessionShape {
|
|
10
|
-
readonly user: {
|
|
9
|
+
readonly user: {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
};
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
readonly get: (headers: Headers.Headers) => Effect.Effect<Option.Option<Session>, AuthUnavailable>;
|
|
13
|
+
export interface SessionProvider<TSession extends SessionShape> {
|
|
14
|
+
readonly get: (headers: Headers.Headers) => Effect.Effect<Option.Option<TSession>, AuthUnavailable>;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
export interface SessionPolicy<Session extends SessionShape> {
|
|
16
|
+
export interface SessionPolicy<TSession extends SessionShape> {
|
|
18
17
|
readonly origin: OriginPolicy;
|
|
19
|
-
readonly provider: SessionProvider<
|
|
18
|
+
readonly provider: SessionProvider<TSession>;
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
policy: SessionPolicy<Session>,
|
|
20
|
+
export const resolveSession: <TSession extends SessionShape>(
|
|
21
|
+
policy: SessionPolicy<TSession>,
|
|
24
22
|
headers: Headers.Headers,
|
|
25
23
|
rpc: string,
|
|
26
|
-
) => Effect.Effect<Option.Option<
|
|
27
|
-
|
|
28
|
-
>(policy: SessionPolicy<
|
|
24
|
+
) => Effect.Effect<Option.Option<TSession>, AuthUnavailable | Forbidden> = Effect.fn("PlatformRpc.resolveSession")(function* <
|
|
25
|
+
TSession extends SessionShape,
|
|
26
|
+
>(policy: SessionPolicy<TSession>, headers: Headers.Headers, rpc: string) {
|
|
29
27
|
const transport = yield* transportHeaders(headers);
|
|
30
28
|
if (!policy.origin(originRequest(transport, rpc))) {
|
|
31
29
|
return yield* new Forbidden({ message: "Origin not allowed" });
|
|
32
30
|
}
|
|
33
31
|
return yield* policy.provider.get(transport);
|
|
34
32
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
export
|
|
39
|
-
Layer.succeed(Authenticated, (effect, { headers, rpc }) =>
|
|
33
|
+
function identified(id: string) {
|
|
34
|
+
return Effect.andThen(Effect.annotateCurrentSpan("user.id", id), Effect.succeed(id));
|
|
35
|
+
}
|
|
36
|
+
export function authenticatedLayer<TSession extends SessionShape>(policy: SessionPolicy<TSession>): Layer.Layer<Authenticated> {
|
|
37
|
+
return Layer.succeed(Authenticated, (effect, { headers, rpc }) =>
|
|
40
38
|
Effect.gen(function* () {
|
|
41
39
|
const session = yield* resolveSession(policy, headers, rpc._tag);
|
|
42
40
|
if (Option.isNone(session)) {
|
|
@@ -46,9 +44,9 @@ export const authenticatedLayer = <Session extends SessionShape>(policy: Session
|
|
|
46
44
|
return yield* effect.pipe(Effect.provideService(Identity, { id }), Effect.annotateLogs({ userId: id }));
|
|
47
45
|
}),
|
|
48
46
|
);
|
|
49
|
-
|
|
50
|
-
export
|
|
51
|
-
Layer.succeed(MaybeAuthenticated, (effect, { headers, rpc }) =>
|
|
47
|
+
}
|
|
48
|
+
export function maybeAuthenticatedLayer<TSession extends SessionShape>(policy: SessionPolicy<TSession>): Layer.Layer<MaybeAuthenticated> {
|
|
49
|
+
return Layer.succeed(MaybeAuthenticated, (effect, { headers, rpc }) =>
|
|
52
50
|
Effect.gen(function* () {
|
|
53
51
|
const session = yield* resolveSession(policy, headers, rpc._tag);
|
|
54
52
|
if (Option.isNone(session)) {
|
|
@@ -58,3 +56,4 @@ export const maybeAuthenticatedLayer = <Session extends SessionShape>(policy: Se
|
|
|
58
56
|
return yield* effect.pipe(Effect.provideService(OptionalIdentity, Option.some({ id })), Effect.annotateLogs({ userId: id }));
|
|
59
57
|
}),
|
|
60
58
|
);
|
|
59
|
+
}
|
|
@@ -3,36 +3,33 @@ import { Headers } from "effect/unstable/http";
|
|
|
3
3
|
import { RequestId } from "#rpc/identity.ts";
|
|
4
4
|
import { RequestTracing } from "#rpc/middleware.ts";
|
|
5
5
|
import { redact } from "./redact.ts";
|
|
6
|
-
import { redactCause } from "./
|
|
6
|
+
import { redactCause } from "./redactCause.ts";
|
|
7
7
|
import type { SensitiveKey } from "./sensitive.ts";
|
|
8
|
-
|
|
9
8
|
export interface RequestTracingOptions {
|
|
10
9
|
readonly header?: string;
|
|
11
10
|
readonly sensitive?: SensitiveKey;
|
|
12
11
|
}
|
|
13
|
-
|
|
14
12
|
const ACCEPTED_REQUEST_ID = /^[A-Za-z0-9._:-]{1,128}$/u;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
function hex(byte: number): string {
|
|
14
|
+
return byte.toString(16).padStart(2, "0");
|
|
15
|
+
}
|
|
18
16
|
const generateRequestId = Effect.map(Effect.all(Array.from({ length: 16 }, () => Random.nextIntBetween(0, 255))), (bytes) => bytes.map(hex).join(""));
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Option.match(
|
|
17
|
+
function requestIdOf(headers: Headers.Headers, header: string): Effect.Effect<string> {
|
|
18
|
+
return Option.match(
|
|
22
19
|
Option.filter(Headers.get(headers, header), (value) => ACCEPTED_REQUEST_ID.test(value)),
|
|
23
20
|
{
|
|
24
21
|
onNone: () => generateRequestId,
|
|
25
22
|
onSome: Effect.succeed,
|
|
26
23
|
},
|
|
27
24
|
);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Option.match(Cause.findErrorOption(cause), {
|
|
25
|
+
}
|
|
26
|
+
function failureTag(cause: Cause.Cause<unknown>): string {
|
|
27
|
+
return Option.match(Cause.findErrorOption(cause), {
|
|
31
28
|
onNone: () => "unknown",
|
|
32
29
|
onSome: (error) => (Predicate.hasProperty(error, "_tag") && Predicate.isString(error._tag) ? error._tag : "unknown"),
|
|
33
30
|
});
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
}
|
|
32
|
+
function logFailure(cause: Cause.Cause<unknown>, payload: unknown, sensitive: SensitiveKey | undefined): Effect.Effect<void> {
|
|
36
33
|
if (Cause.hasInterruptsOnly(cause)) {
|
|
37
34
|
return Effect.void;
|
|
38
35
|
}
|
|
@@ -42,10 +39,9 @@ const logFailure = (cause: Cause.Cause<unknown>, payload: unknown, sensitive: Se
|
|
|
42
39
|
}
|
|
43
40
|
const defects = cause.reasons.filter(Cause.isDieReason).map((reason) => redact(reason.defect, sensitive));
|
|
44
41
|
return Effect.annotateLogs(Effect.logError("RPC defect"), { ...annotations, "rpc.defect": defects });
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Layer.succeed(RequestTracing, (effect, { headers, payload, rpc }) =>
|
|
42
|
+
}
|
|
43
|
+
export function requestTracingLayer(options: RequestTracingOptions = {}): Layer.Layer<RequestTracing> {
|
|
44
|
+
return Layer.succeed(RequestTracing, (effect, { headers, payload, rpc }) =>
|
|
49
45
|
Effect.gen(function* () {
|
|
50
46
|
const requestId = yield* requestIdOf(headers, options.header ?? "x-request-id");
|
|
51
47
|
yield* Effect.annotateCurrentSpan({ "request.id": requestId, "rpc.method": rpc._tag });
|
|
@@ -58,3 +54,4 @@ export const requestTracingLayer = (options: RequestTracingOptions = {}): Layer.
|
|
|
58
54
|
);
|
|
59
55
|
}),
|
|
60
56
|
);
|
|
57
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Effect, Option } from "effect";
|
|
2
2
|
import { type Headers, HttpServerRequest } from "effect/unstable/http";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Effect.map(
|
|
3
|
+
export function transportHeaders(rpcHeaders: Headers.Headers): Effect.Effect<Headers.Headers> {
|
|
4
|
+
return Effect.map(
|
|
6
5
|
Effect.serviceOption(HttpServerRequest.HttpServerRequest),
|
|
7
6
|
Option.match({ onNone: () => rpcHeaders, onSome: (request) => request.headers }),
|
|
8
7
|
);
|
|
8
|
+
}
|
|
@@ -7,31 +7,28 @@ const RuntimeCacheKey = Symbol.for("@shivaedev/platform/runtime-cache");
|
|
|
7
7
|
const sharedCache: unknown = Reflect.get(globalThis, RuntimeCacheKey);
|
|
8
8
|
const runtimeCache: Map<string | symbol, unknown> = sharedCache instanceof Map ? sharedCache : new Map<string | symbol, unknown>();
|
|
9
9
|
Reflect.set(globalThis, RuntimeCacheKey, runtimeCache);
|
|
10
|
-
|
|
11
10
|
// One development cache key belongs to one makePlatformRuntime call site, so its entry has that site's services and build error.
|
|
12
|
-
function cachedEntry<
|
|
11
|
+
function cachedEntry<TServices, TBuildError>(runtime: unknown): PlatformRuntime<TServices, TBuildError>;
|
|
13
12
|
function cachedEntry(runtime: unknown): unknown {
|
|
14
13
|
return runtime;
|
|
15
14
|
}
|
|
16
|
-
|
|
17
|
-
const make = <Services, BuildError>(layer: Layer.Layer<Services, BuildError>): PlatformRuntime<Services, BuildError> => {
|
|
15
|
+
function make<TServices, TBuildError>(layer: Layer.Layer<TServices, TBuildError>): PlatformRuntime<TServices, TBuildError> {
|
|
18
16
|
const managed = ManagedRuntime.make(layer);
|
|
19
17
|
const services = new AsyncLocalStorage<Context.Context<never>>();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
function currentServices() {
|
|
19
|
+
return services.getStore();
|
|
20
|
+
}
|
|
21
|
+
function withAmbient<A, E, TRequirements extends TServices>(
|
|
22
|
+
effect: Effect.Effect<A, E, TRequirements>,
|
|
23
|
+
): Effect.Effect<A, E | TBuildError, TRequirements> {
|
|
25
24
|
const ambient = currentServices();
|
|
26
25
|
return ambient === undefined
|
|
27
26
|
? effect
|
|
28
27
|
: Effect.flatMap(managed.contextEffect, (base) => Effect.provideContext(effect, Context.merge(base, ambient)));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const runPromiseExit: PlatformRuntime<Services, BuildError>["runPromiseExit"] = (effect, options) =>
|
|
28
|
+
}
|
|
29
|
+
const runPromiseExit: PlatformRuntime<TServices, TBuildError>["runPromiseExit"] = (effect, options) =>
|
|
32
30
|
managed.runPromiseExit(withAmbient(effect), options);
|
|
33
|
-
|
|
34
|
-
const runtime: PlatformRuntime<Services, BuildError> = {
|
|
31
|
+
const runtime: PlatformRuntime<TServices, TBuildError> = {
|
|
35
32
|
contextEffect: Effect.map(managed.contextEffect, (base) => {
|
|
36
33
|
const ambient = currentServices();
|
|
37
34
|
return ambient === undefined ? base : Context.merge(base, ambient);
|
|
@@ -48,28 +45,23 @@ const make = <Services, BuildError>(layer: Layer.Layer<Services, BuildError>): P
|
|
|
48
45
|
runPromiseExit,
|
|
49
46
|
runWithServices: (context, evaluate) => services.run(context, evaluate),
|
|
50
47
|
};
|
|
51
|
-
|
|
52
48
|
return runtime;
|
|
53
|
-
}
|
|
54
|
-
|
|
49
|
+
}
|
|
55
50
|
const production = Effect.map(Effect.orDie(Config.string("NODE_ENV").pipe(Config.withDefault(""))), (environment) => environment === "production");
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
layer: Layer.Layer<Services, BuildError>,
|
|
51
|
+
export function makePlatformRuntime<TServices, TBuildError>(
|
|
52
|
+
layer: Layer.Layer<TServices, TBuildError>,
|
|
59
53
|
options: PlatformRuntimeOptions = {},
|
|
60
|
-
): PlatformRuntime<
|
|
54
|
+
): PlatformRuntime<TServices, TBuildError> {
|
|
61
55
|
const key = Effect.runSync(production) ? undefined : options.developmentCacheKey;
|
|
62
56
|
if (key === undefined) {
|
|
63
57
|
return make(layer);
|
|
64
58
|
}
|
|
65
|
-
|
|
66
59
|
const cached = runtimeCache.get(key);
|
|
67
60
|
if (cached !== undefined) {
|
|
68
|
-
return cachedEntry<
|
|
61
|
+
return cachedEntry<TServices, TBuildError>(cached);
|
|
69
62
|
}
|
|
70
|
-
|
|
71
63
|
const runtime = make(layer);
|
|
72
|
-
const cachedRuntime: PlatformRuntime<
|
|
64
|
+
const cachedRuntime: PlatformRuntime<TServices, TBuildError> = {
|
|
73
65
|
...runtime,
|
|
74
66
|
dispose: async () => {
|
|
75
67
|
if (runtimeCache.get(key) === cachedRuntime) {
|
|
@@ -80,4 +72,4 @@ export const makePlatformRuntime = <Services, BuildError>(
|
|
|
80
72
|
};
|
|
81
73
|
runtimeCache.set(key, cachedRuntime);
|
|
82
74
|
return cachedRuntime;
|
|
83
|
-
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Context, Effect, Exit } from "effect";
|
|
2
|
+
export interface PlatformRuntimeOptions {
|
|
3
|
+
readonly developmentCacheKey?: string | symbol;
|
|
4
|
+
}
|
|
5
|
+
export interface PlatformRuntime<TServices, TBuildError> {
|
|
6
|
+
readonly contextEffect: Effect.Effect<Context.Context<TServices>, TBuildError>;
|
|
7
|
+
readonly currentServices: () => Context.Context<never> | undefined;
|
|
8
|
+
readonly dispose: () => Promise<void>;
|
|
9
|
+
readonly runPromise: <A, E, TRequirements extends TServices>(
|
|
10
|
+
effect: Effect.Effect<A, E, TRequirements>,
|
|
11
|
+
options?: {
|
|
12
|
+
readonly signal?: AbortSignal;
|
|
13
|
+
},
|
|
14
|
+
) => Promise<A>;
|
|
15
|
+
readonly runPromiseExit: <A, E, TRequirements extends TServices>(
|
|
16
|
+
effect: Effect.Effect<A, E, TRequirements>,
|
|
17
|
+
options?: {
|
|
18
|
+
readonly signal?: AbortSignal;
|
|
19
|
+
},
|
|
20
|
+
) => Promise<Exit.Exit<A, E | TBuildError>>;
|
|
21
|
+
readonly runWithServices: <TProvided, TValue>(services: Context.Context<TProvided>, evaluate: () => TValue) => TValue;
|
|
22
|
+
}
|
|
23
|
+
export type PlatformRuntimeServices<TRuntime> = TRuntime extends PlatformRuntime<infer TServices, infer _TBuildError> ? TServices : never;
|
|
24
|
+
export type PlatformRuntimeBuildError<TRuntime> = TRuntime extends PlatformRuntime<infer _TServices, infer TBuildError> ? TBuildError : never;
|
|
@@ -14,25 +14,30 @@ interface LooseOptions {
|
|
|
14
14
|
readonly createCaller: (options?: unknown) => object;
|
|
15
15
|
extend?: Bivariant<
|
|
16
16
|
(
|
|
17
|
-
base: {
|
|
17
|
+
base: {
|
|
18
|
+
readonly db: unknown;
|
|
19
|
+
readonly trpc: EffectCallerFactory<unknown, object>;
|
|
20
|
+
},
|
|
18
21
|
context: TestContext,
|
|
19
22
|
) => Effect.Effect<object, unknown, unknown>
|
|
20
23
|
>;
|
|
21
24
|
readonly layer: Layer.Layer<unknown, unknown>;
|
|
22
25
|
}
|
|
23
|
-
|
|
24
26
|
function platformIt<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
TDatabase extends AnyDatabase,
|
|
28
|
+
TCreateCaller extends (...arguments_: never[]) => object,
|
|
29
|
+
TProvided,
|
|
30
|
+
TLayerError,
|
|
31
|
+
TExtension extends object,
|
|
30
32
|
>(
|
|
31
|
-
database:
|
|
32
|
-
options: MakePlatformItOptions<
|
|
33
|
-
readonly layer: Layer.Layer<
|
|
33
|
+
database: TDatabase,
|
|
34
|
+
options: MakePlatformItOptions<TDatabase, TCreateCaller, TProvided, TLayerError, TExtension> & {
|
|
35
|
+
readonly layer: Layer.Layer<TProvided | Effect.Services<TDatabase>, TLayerError>;
|
|
34
36
|
},
|
|
35
|
-
): PlatformIt<
|
|
37
|
+
): PlatformIt<
|
|
38
|
+
PlatformHarness<TDatabase, CallerOptions<TCreateCaller>, CallerResult<TCreateCaller>, TExtension>,
|
|
39
|
+
TProvided | Effect.Services<TDatabase>
|
|
40
|
+
>;
|
|
36
41
|
function platformIt(database: AnyDatabase, options: LooseOptions): unknown {
|
|
37
42
|
const trpcIt = makeTrpcHarnessIt({
|
|
38
43
|
adapter: options.adapter,
|
|
@@ -44,11 +49,12 @@ function platformIt(database: AnyDatabase, options: LooseOptions): unknown {
|
|
|
44
49
|
const services = yield* Effect.context<unknown>();
|
|
45
50
|
const db = yield* database;
|
|
46
51
|
const extension = options.extend ? yield* options.extend({ db, trpc }, context) : {};
|
|
47
|
-
|
|
52
|
+
function promise<TValue>(evaluate: () => Promise<TValue>) {
|
|
53
|
+
return Effect.tryPromise(() => options.adapter.runWithServices(services, evaluate));
|
|
54
|
+
}
|
|
48
55
|
return { ...extension, db, promise, trpc };
|
|
49
56
|
}),
|
|
50
57
|
});
|
|
51
|
-
|
|
52
58
|
return new Proxy(trpcIt, {
|
|
53
59
|
get(target, property, receiver) {
|
|
54
60
|
if (property === "effectApp") {
|
|
@@ -58,15 +64,13 @@ function platformIt(database: AnyDatabase, options: LooseOptions): unknown {
|
|
|
58
64
|
},
|
|
59
65
|
});
|
|
60
66
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
options: MakePlatformItOptions<Database, CreateCaller, Provided, LayerError, Extension> & {
|
|
66
|
-
readonly layer: Layer.Layer<Provided | Effect.Services<Database>, LayerError>;
|
|
67
|
+
export function makePlatformIt<const TDatabase extends AnyDatabase>(database: TDatabase) {
|
|
68
|
+
return <TCreateCaller extends (...arguments_: never[]) => object, TProvided, TLayerError, TExtension extends object = Record<never, never>>(
|
|
69
|
+
options: MakePlatformItOptions<TDatabase, TCreateCaller, TProvided, TLayerError, TExtension> & {
|
|
70
|
+
readonly layer: Layer.Layer<TProvided | Effect.Services<TDatabase>, TLayerError>;
|
|
67
71
|
},
|
|
68
72
|
): PlatformIt<
|
|
69
|
-
PlatformHarness<
|
|
70
|
-
|
|
71
|
-
> =>
|
|
72
|
-
|
|
73
|
+
PlatformHarness<TDatabase, CallerOptions<TCreateCaller>, CallerResult<TCreateCaller>, TExtension>,
|
|
74
|
+
TProvided | Effect.Services<TDatabase>
|
|
75
|
+
> => platformIt(database, options);
|
|
76
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { TestContext, Vitest } from "@effect/vitest";
|
|
2
|
+
import type { Effect, Layer } from "effect";
|
|
3
|
+
import type { AnyDatabase } from "@shivaedev/effect-prisma/databaseTypes.ts";
|
|
4
|
+
import type { DatabaseService } from "@shivaedev/effect-prisma/testing/types.ts";
|
|
5
|
+
import type { EffectTRPCAdapter } from "@shivaedev/effect-trpc/adapter.ts";
|
|
6
|
+
import type { EffectCallerFactory } from "@shivaedev/effect-trpc/testing/caller.ts";
|
|
7
|
+
import type { CallerOptions, CallerResult, TrpcHarnessTest, TrpcHarnessTester } from "@shivaedev/effect-trpc/testing/types.ts";
|
|
8
|
+
export type PlatformHarness<TDatabase extends AnyDatabase, TOptions, TCaller, TExtension> = Readonly<{
|
|
9
|
+
db: DatabaseService<TDatabase>;
|
|
10
|
+
trpc: EffectCallerFactory<TOptions, TCaller>;
|
|
11
|
+
}> &
|
|
12
|
+
Readonly<{
|
|
13
|
+
promise: <TValue>(evaluate: () => Promise<TValue>) => Effect.Effect<TValue, unknown>;
|
|
14
|
+
}> &
|
|
15
|
+
Omit<TExtension, "db" | "promise" | "trpc">;
|
|
16
|
+
export type PlatformTest<THarness, TProvided> = TrpcHarnessTest<THarness, TProvided>;
|
|
17
|
+
export type PlatformTester<THarness, TProvided> = TrpcHarnessTester<THarness, TProvided>;
|
|
18
|
+
export type PlatformIt<THarness, TProvided> = Vitest.Methods & {
|
|
19
|
+
readonly effectApp: PlatformTester<THarness, TProvided>;
|
|
20
|
+
};
|
|
21
|
+
export interface MakePlatformItOptions<
|
|
22
|
+
TDatabase extends AnyDatabase,
|
|
23
|
+
TCreateCaller extends (...arguments_: never[]) => object,
|
|
24
|
+
TProvided,
|
|
25
|
+
TLayerError,
|
|
26
|
+
TExtension,
|
|
27
|
+
> {
|
|
28
|
+
readonly adapter: Pick<EffectTRPCAdapter<never>, "runWithServices">;
|
|
29
|
+
readonly createCaller: TCreateCaller;
|
|
30
|
+
readonly extend?: (
|
|
31
|
+
base: Readonly<{
|
|
32
|
+
db: DatabaseService<TDatabase>;
|
|
33
|
+
trpc: EffectCallerFactory<CallerOptions<NoInfer<TCreateCaller>>, CallerResult<NoInfer<TCreateCaller>>>;
|
|
34
|
+
}>,
|
|
35
|
+
context: TestContext,
|
|
36
|
+
) => Effect.Effect<TExtension, unknown, TProvided | Effect.Services<TDatabase>>;
|
|
37
|
+
readonly layer: Layer.Layer<TProvided, TLayerError>;
|
|
38
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/better-auth/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B;AAuBD,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,WAAW,EAAE,QAAQ,EAAE,UAAU,EACrF,WAAW,EAAE,QAAQ,EACrB,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,EAC9C,cAAc,CAAC,EAAE,0BAA0B,GACzC,iBAAiB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/better-auth/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/better-auth/relation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAmB,MAAM,YAAY,CAAC;AAEpG,MAAM,WAAW,eAAe,CAAC,YAAY,CAAE,SAAQ,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC;IAC9H,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACzG,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACnF,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1F,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1F,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,OAAO,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;IACxG,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;IACxE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAChH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACvH,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,UAAU,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;CAC1G;AAED,eAAO,MAAM,cAAc,GAAI,YAAY,EAC1C,UAAU,eAAe,CAAC,YAAY,CAAC,EACvC,SAAS;IACR,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EACb;QACA,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;QACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACtB,GACD,SAAS,CAAC;CACb,KACC,eAAe,CAAC,YAAY,CA2B9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/better-auth/relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD,OAAO,EAAyD,eAAe,EAAE,MAAM,YAAY,CAAC;AAiBpG,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,QAAuC,EACvC,OAWC,EAC+B,EAAE;IAClC,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;YAClC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAChE,OAAO,UAAU,IAAI,GAAG,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,SAAS,CAAC,2BAA2B,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1E,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { AdapterFactoryCustomizeAdapterCreator } from "better-auth/adapters";
|
|
2
|
-
import { Effect } from "effect";
|
|
3
|
-
import type { DynamicRelation, refineRelation } from "./relation.ts";
|
|
4
|
-
type Refinement = Parameters<typeof refineRelation>[1];
|
|
5
|
-
export type RelationQuery = <Value>(model: string, refinement: Refinement, use: (relation: DynamicRelation<unknown>) => Effect.Effect<Value, unknown, unknown>) => Promise<Value>;
|
|
6
|
-
export declare const makeRowAdapter: (query: RelationQuery, usePlural: boolean) => AdapterFactoryCustomizeAdapterCreator;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=row-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"row-adapter.d.ts","sourceRoot":"","sources":["../../src/better-auth/row-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qCAAqC,EAAiB,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAOrE,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AASvD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAC/E,OAAO,CAAC,KAAK,CAAC,CAAC;AAgBpB,eAAO,MAAM,cAAc,GACzB,OAAO,aAAa,EAAE,WAAW,OAAO,KAAG,qCAuC3C,CAAC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Effect, Option } from "effect";
|
|
2
|
-
function rowTyped(adapter) {
|
|
3
|
-
return adapter;
|
|
4
|
-
}
|
|
5
|
-
const rejectJoin = (join) => {
|
|
6
|
-
if (join !== undefined) {
|
|
7
|
-
throw new TypeError("The Effect Prisma Better Auth adapter does not support experimental native joins");
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
const namesId = (condition) => condition.connector !== "OR" && condition.field === "id" && condition.operator === "eq";
|
|
11
|
-
export const makeRowAdapter = (query, usePlural) => ({ debugLog, getFieldAttributes }) => {
|
|
12
|
-
const isUnique = (model, condition) => condition.connector !== "OR"
|
|
13
|
-
&& condition.operator === "eq"
|
|
14
|
-
&& condition.mode !== "insensitive"
|
|
15
|
-
&& (condition.field === "id" || getFieldAttributes({ field: condition.field, model }).unique === true);
|
|
16
|
-
return rowTyped({
|
|
17
|
-
count: ({ model, where }) => query(model, { where }, (relation) => relation.count()),
|
|
18
|
-
create: ({ data, model, select }) => {
|
|
19
|
-
debugLog("create", { model });
|
|
20
|
-
return query(model, { select }, (relation) => relation.create(data));
|
|
21
|
-
},
|
|
22
|
-
delete: ({ model, where }) => {
|
|
23
|
-
const byId = where.some(namesId);
|
|
24
|
-
return query(model, { where }, (relation) => (byId ? Effect.asVoid(relation.delete()) : Effect.asVoid(relation.deleteAll())));
|
|
25
|
-
},
|
|
26
|
-
deleteMany: ({ model, where }) => query(model, { where }, (relation) => Effect.map(relation.deleteAll(), (rows) => rows.length)),
|
|
27
|
-
findMany: ({ join, limit, model, offset, select, sortBy, where }) => {
|
|
28
|
-
rejectJoin(join);
|
|
29
|
-
return query(model, { limit, offset, select, sortBy, where }, (relation) => relation);
|
|
30
|
-
},
|
|
31
|
-
findOne: ({ join, model, select, where }) => {
|
|
32
|
-
rejectJoin(join);
|
|
33
|
-
return query(model, { select, where }, (relation) => Effect.map(relation.first(), Option.getOrNull));
|
|
34
|
-
},
|
|
35
|
-
options: { usePlural },
|
|
36
|
-
update: ({ model, update, where }) => {
|
|
37
|
-
if (where.length === 0) {
|
|
38
|
-
return Promise.resolve(null);
|
|
39
|
-
}
|
|
40
|
-
const unique = where.some((condition) => isUnique(model, condition));
|
|
41
|
-
return query(model, { where }, (relation) => unique ? relation.update(update) : Effect.map(relation.updateAll(update), (rows) => rows[0] ?? null));
|
|
42
|
-
},
|
|
43
|
-
updateMany: ({ model, update, where }) => query(model, { where }, (relation) => Effect.map(relation.updateAll(update), (rows) => rows.length)),
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=row-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"row-adapter.js","sourceRoot":"","sources":["../../src/better-auth/row-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"where.d.ts","sourceRoot":"","sources":["../../src/better-auth/where.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAW,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,OAAO,CAAC;IACpB,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;IACnC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;IACnC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;IACtC,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,KAAK,UAAU,CAAC;IAC9C,SAAS,EAAE,MAAM,UAAU,CAAC;IAC5B,MAAM,EAAE,MAAM,UAAU,CAAC;IACzB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;IACpC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;IACnC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;IACpC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;IACpC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,KAAK,UAAU,CAAC;CACjD;AAwFD,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,SAAS,YAAY,EAAE,KAAG,UAAU,GAAG,SAuBnH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../src/better-auth/where.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rejected-field.d.ts","sourceRoot":"","sources":["../../src/errors/rejected-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAExC,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAMD,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rejected-field.js","sourceRoot":"","sources":["../../src/errors/rejected-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAEtG,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAgC,EAAE,CAC7E,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-signal.d.ts","sourceRoot":"","sources":["../../src/node-http/subscription-signal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC7B;AAaD,eAAO,MAAM,sBAAsB,GAAI,SAAS,6BAA6B,KAAG,sBA0C/E,CAAC"}
|