@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.
Files changed (177) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +361 -112
  3. package/dist/errors/rejectedField.d.ts +7 -0
  4. package/dist/errors/rejectedField.d.ts.map +1 -0
  5. package/dist/errors/{rejected-field.js → rejectedField.js} +4 -2
  6. package/dist/errors/rejectedField.js.map +1 -0
  7. package/dist/errors/taxonomy.d.ts +10 -0
  8. package/dist/errors/taxonomy.d.ts.map +1 -1
  9. package/dist/errors/taxonomy.js +4 -0
  10. package/dist/errors/taxonomy.js.map +1 -1
  11. package/dist/rpc/identity.d.ts.map +1 -1
  12. package/dist/rpc/identity.js.map +1 -1
  13. package/dist/rpc/middleware.d.ts.map +1 -1
  14. package/dist/rpc/middleware.js.map +1 -1
  15. package/dist/server/appHost.d.ts +56 -0
  16. package/dist/server/appHost.d.ts.map +1 -0
  17. package/dist/server/appHost.js +55 -0
  18. package/dist/server/appHost.js.map +1 -0
  19. package/dist/{better-auth → server/better-auth}/adapter.d.ts +1 -1
  20. package/dist/server/better-auth/adapter.d.ts.map +1 -0
  21. package/dist/{better-auth → server/better-auth}/adapter.js +26 -14
  22. package/dist/server/better-auth/adapter.js.map +1 -0
  23. package/dist/{better-auth → server/better-auth}/relation.d.ts +15 -15
  24. package/dist/server/better-auth/relation.d.ts.map +1 -0
  25. package/dist/{better-auth → server/better-auth}/relation.js +2 -2
  26. package/dist/server/better-auth/relation.js.map +1 -0
  27. package/dist/server/better-auth/rowAdapter.d.ts +8 -0
  28. package/dist/server/better-auth/rowAdapter.d.ts.map +1 -0
  29. package/dist/server/better-auth/rowAdapter.js +52 -0
  30. package/dist/server/better-auth/rowAdapter.js.map +1 -0
  31. package/dist/{better-auth → server/better-auth}/where.d.ts +1 -1
  32. package/dist/server/better-auth/where.d.ts.map +1 -0
  33. package/dist/{better-auth → server/better-auth}/where.js +22 -18
  34. package/dist/server/better-auth/where.js.map +1 -0
  35. package/dist/{node-http/subscription-signal.d.ts → server/node-http/subscriptionSignal.d.ts} +2 -2
  36. package/dist/server/node-http/subscriptionSignal.d.ts.map +1 -0
  37. package/dist/{node-http/subscription-signal.js → server/node-http/subscriptionSignal.js} +20 -13
  38. package/dist/server/node-http/subscriptionSignal.js.map +1 -0
  39. package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts +4 -0
  40. package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts.map +1 -0
  41. package/dist/server/rpc-server/adapters/betterAuthSessions.js +14 -0
  42. package/dist/server/rpc-server/adapters/betterAuthSessions.js.map +1 -0
  43. package/dist/server/rpc-server/boundary.d.ts +9 -0
  44. package/dist/server/rpc-server/boundary.d.ts.map +1 -0
  45. package/dist/server/rpc-server/boundary.js +18 -0
  46. package/dist/server/rpc-server/boundary.js.map +1 -0
  47. package/dist/server/rpc-server/local.d.ts +7 -0
  48. package/dist/server/rpc-server/local.d.ts.map +1 -0
  49. package/dist/server/rpc-server/local.js +66 -0
  50. package/dist/server/rpc-server/local.js.map +1 -0
  51. package/dist/{rpc-server → server/rpc-server}/origin.d.ts +2 -2
  52. package/dist/server/rpc-server/origin.d.ts.map +1 -0
  53. package/dist/server/rpc-server/origin.js +16 -0
  54. package/dist/server/rpc-server/origin.js.map +1 -0
  55. package/dist/server/rpc-server/redact.d.ts +3 -0
  56. package/dist/server/rpc-server/redact.d.ts.map +1 -0
  57. package/dist/{rpc-server → server/rpc-server}/redact.js +9 -7
  58. package/dist/server/rpc-server/redact.js.map +1 -0
  59. package/dist/server/rpc-server/redactCause.d.ts +6 -0
  60. package/dist/server/rpc-server/redactCause.d.ts.map +1 -0
  61. package/dist/server/rpc-server/redactCause.js +36 -0
  62. package/dist/server/rpc-server/redactCause.js.map +1 -0
  63. package/dist/server/rpc-server/sensitive.d.ts +5 -0
  64. package/dist/server/rpc-server/sensitive.d.ts.map +1 -0
  65. package/dist/{rpc-server → server/rpc-server}/sensitive.js +21 -17
  66. package/dist/server/rpc-server/sensitive.js.map +1 -0
  67. package/dist/server/rpc-server/session.d.ts +21 -0
  68. package/dist/server/rpc-server/session.d.ts.map +1 -0
  69. package/dist/server/rpc-server/session.js +37 -0
  70. package/dist/server/rpc-server/session.js.map +1 -0
  71. package/dist/{rpc-server → server/rpc-server}/tracing.d.ts +1 -1
  72. package/dist/server/rpc-server/tracing.d.ts.map +1 -0
  73. package/dist/server/rpc-server/tracing.js +42 -0
  74. package/dist/server/rpc-server/tracing.js.map +1 -0
  75. package/dist/server/rpc-server/transportHeaders.d.ts +4 -0
  76. package/dist/server/rpc-server/transportHeaders.d.ts.map +1 -0
  77. package/dist/server/rpc-server/transportHeaders.js +6 -0
  78. package/dist/server/rpc-server/transportHeaders.js.map +1 -0
  79. package/dist/server/runtime/makePlatform.d.ts +4 -0
  80. package/dist/server/runtime/makePlatform.d.ts.map +1 -0
  81. package/dist/{runtime/make.js → server/runtime/makePlatform.js} +10 -8
  82. package/dist/server/runtime/makePlatform.js.map +1 -0
  83. package/dist/server/runtime/types.d.ts +19 -0
  84. package/dist/server/runtime/types.d.ts.map +1 -0
  85. package/dist/{runtime → server/runtime}/types.js.map +1 -1
  86. package/dist/server/testing/makePlatformIt.d.ts +8 -0
  87. package/dist/server/testing/makePlatformIt.d.ts.map +1 -0
  88. package/dist/{testing/vitest.js → server/testing/makePlatformIt.js} +7 -3
  89. package/dist/server/testing/makePlatformIt.js.map +1 -0
  90. package/dist/server/testing/types.d.ts +28 -0
  91. package/dist/server/testing/types.d.ts.map +1 -0
  92. package/dist/{testing → server/testing}/types.js.map +1 -1
  93. package/docs/north-star.md +36 -0
  94. package/docs/roadmap.md +30 -0
  95. package/package.json +317 -16
  96. package/src/errors/{rejected-field.ts → rejectedField.ts} +3 -6
  97. package/src/errors/taxonomy.ts +2 -8
  98. package/src/rpc/identity.ts +0 -4
  99. package/src/rpc/middleware.ts +18 -9
  100. package/src/server/appHost.ts +134 -0
  101. package/src/{better-auth → server/better-auth}/adapter.ts +26 -30
  102. package/src/{better-auth → server/better-auth}/relation.ts +17 -19
  103. package/src/{better-auth/row-adapter.ts → server/better-auth/rowAdapter.ts} +19 -21
  104. package/src/{better-auth → server/better-auth}/where.ts +22 -32
  105. package/src/{node-http/subscription-signal.ts → server/node-http/subscriptionSignal.ts} +19 -22
  106. package/src/{rpc-server/adapters/better-auth-sessions.ts → server/rpc-server/adapters/betterAuthSessions.ts} +9 -10
  107. package/src/server/rpc-server/boundary.ts +26 -0
  108. package/src/server/rpc-server/local.ts +70 -0
  109. package/src/{rpc-server → server/rpc-server}/origin.ts +10 -13
  110. package/src/{rpc-server → server/rpc-server}/redact.ts +9 -11
  111. package/src/server/rpc-server/redactCause.ts +40 -0
  112. package/src/{rpc-server → server/rpc-server}/sensitive.ts +17 -22
  113. package/src/{rpc-server → server/rpc-server}/session.ts +22 -23
  114. package/src/{rpc-server → server/rpc-server}/tracing.ts +15 -18
  115. package/src/{rpc-server/transport.ts → server/rpc-server/transportHeaders.ts} +3 -3
  116. package/src/{runtime/make.ts → server/runtime/makePlatform.ts} +18 -26
  117. package/src/server/runtime/types.ts +24 -0
  118. package/src/{testing/vitest.ts → server/testing/makePlatformIt.ts} +27 -23
  119. package/src/server/testing/types.ts +38 -0
  120. package/dist/better-auth/adapter.d.ts.map +0 -1
  121. package/dist/better-auth/adapter.js.map +0 -1
  122. package/dist/better-auth/relation.d.ts.map +0 -1
  123. package/dist/better-auth/relation.js.map +0 -1
  124. package/dist/better-auth/row-adapter.d.ts +0 -8
  125. package/dist/better-auth/row-adapter.d.ts.map +0 -1
  126. package/dist/better-auth/row-adapter.js +0 -46
  127. package/dist/better-auth/row-adapter.js.map +0 -1
  128. package/dist/better-auth/where.d.ts.map +0 -1
  129. package/dist/better-auth/where.js.map +0 -1
  130. package/dist/errors/rejected-field.d.ts +0 -7
  131. package/dist/errors/rejected-field.d.ts.map +0 -1
  132. package/dist/errors/rejected-field.js.map +0 -1
  133. package/dist/node-http/subscription-signal.d.ts.map +0 -1
  134. package/dist/node-http/subscription-signal.js.map +0 -1
  135. package/dist/rpc-server/adapters/better-auth-sessions.d.ts +0 -4
  136. package/dist/rpc-server/adapters/better-auth-sessions.d.ts.map +0 -1
  137. package/dist/rpc-server/adapters/better-auth-sessions.js +0 -11
  138. package/dist/rpc-server/adapters/better-auth-sessions.js.map +0 -1
  139. package/dist/rpc-server/origin.d.ts.map +0 -1
  140. package/dist/rpc-server/origin.js +0 -12
  141. package/dist/rpc-server/origin.js.map +0 -1
  142. package/dist/rpc-server/redact-cause.d.ts +0 -6
  143. package/dist/rpc-server/redact-cause.d.ts.map +0 -1
  144. package/dist/rpc-server/redact-cause.js +0 -28
  145. package/dist/rpc-server/redact-cause.js.map +0 -1
  146. package/dist/rpc-server/redact.d.ts +0 -3
  147. package/dist/rpc-server/redact.d.ts.map +0 -1
  148. package/dist/rpc-server/redact.js.map +0 -1
  149. package/dist/rpc-server/sensitive.d.ts +0 -5
  150. package/dist/rpc-server/sensitive.d.ts.map +0 -1
  151. package/dist/rpc-server/sensitive.js.map +0 -1
  152. package/dist/rpc-server/session.d.ts +0 -21
  153. package/dist/rpc-server/session.d.ts.map +0 -1
  154. package/dist/rpc-server/session.js +0 -31
  155. package/dist/rpc-server/session.js.map +0 -1
  156. package/dist/rpc-server/tracing.d.ts.map +0 -1
  157. package/dist/rpc-server/tracing.js +0 -34
  158. package/dist/rpc-server/tracing.js.map +0 -1
  159. package/dist/rpc-server/transport.d.ts +0 -4
  160. package/dist/rpc-server/transport.d.ts.map +0 -1
  161. package/dist/rpc-server/transport.js +0 -4
  162. package/dist/rpc-server/transport.js.map +0 -1
  163. package/dist/runtime/make.d.ts +0 -4
  164. package/dist/runtime/make.d.ts.map +0 -1
  165. package/dist/runtime/make.js.map +0 -1
  166. package/dist/runtime/types.d.ts +0 -19
  167. package/dist/runtime/types.d.ts.map +0 -1
  168. package/dist/testing/types.d.ts +0 -28
  169. package/dist/testing/types.d.ts.map +0 -1
  170. package/dist/testing/vitest.d.ts +0 -8
  171. package/dist/testing/vitest.d.ts.map +0 -1
  172. package/dist/testing/vitest.js.map +0 -1
  173. package/src/rpc-server/redact-cause.ts +0 -41
  174. package/src/runtime/types.ts +0 -24
  175. package/src/testing/types.ts +0 -43
  176. /package/dist/{runtime → server/runtime}/types.js +0 -0
  177. /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
- const wordsOf = (key: string): string[] =>
30
- key
31
- .replaceAll(/([a-z0-9])([A-Z])/gu, "$1 $2")
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 const isSensitiveKey: SensitiveKey = (key) => {
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 = /(\/\/[^:/\s@]+:)[^@/\s]+@/gu;
48
- const ASSIGNMENT = /([A-Za-z][\w.-]*)(["']?\s*[=:]\s*["']?)([^\s"'&,;]+)/gu;
49
-
50
- const scrub = (text: string, sensitive: SensitiveKey): string =>
51
- text
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, `$1${REDACTED}@`)
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 const redactText = (text: string, sensitive: SensitiveKey): string => {
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 "./transport.ts";
8
-
7
+ import { transportHeaders } from "./transportHeaders.ts";
9
8
  export interface SessionShape {
10
- readonly user: { readonly id: string };
9
+ readonly user: {
10
+ readonly id: string;
11
+ };
11
12
  }
12
-
13
- export interface SessionProvider<Session extends SessionShape> {
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<Session>;
18
+ readonly provider: SessionProvider<TSession>;
20
19
  }
21
-
22
- export const resolveSession: <Session extends SessionShape>(
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<Session>, AuthUnavailable | Forbidden> = Effect.fn("PlatformRpc.resolveSession")(function* <
27
- Session extends SessionShape,
28
- >(policy: SessionPolicy<Session>, headers: Headers.Headers, rpc: string) {
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
- const identified = (id: string) => Effect.andThen(Effect.annotateCurrentSpan("user.id", id), Effect.succeed(id));
37
-
38
- export const authenticatedLayer = <Session extends SessionShape>(policy: SessionPolicy<Session>): Layer.Layer<Authenticated> =>
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 const maybeAuthenticatedLayer = <Session extends SessionShape>(policy: SessionPolicy<Session>): Layer.Layer<MaybeAuthenticated> =>
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 "./redact-cause.ts";
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
- const hex = (byte: number): string => byte.toString(16).padStart(2, "0");
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
- const requestIdOf = (headers: Headers.Headers, header: string): Effect.Effect<string> =>
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
- const failureTag = (cause: Cause.Cause<unknown>): string =>
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
- const logFailure = (cause: Cause.Cause<unknown>, payload: unknown, sensitive: SensitiveKey | undefined): Effect.Effect<void> => {
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
- export const requestTracingLayer = (options: RequestTracingOptions = {}): Layer.Layer<RequestTracing> =>
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
- export const transportHeaders = (rpcHeaders: Headers.Headers): Effect.Effect<Headers.Headers> =>
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<Services, BuildError>(runtime: unknown): PlatformRuntime<Services, BuildError>;
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
- const currentServices = () => services.getStore();
22
- const withAmbient = <A, E, Requirements extends Services>(
23
- effect: Effect.Effect<A, E, Requirements>,
24
- ): Effect.Effect<A, E | BuildError, Requirements> => {
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
- export const makePlatformRuntime = <Services, BuildError>(
58
- layer: Layer.Layer<Services, BuildError>,
51
+ export function makePlatformRuntime<TServices, TBuildError>(
52
+ layer: Layer.Layer<TServices, TBuildError>,
59
53
  options: PlatformRuntimeOptions = {},
60
- ): PlatformRuntime<Services, BuildError> => {
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<Services, BuildError>(cached);
61
+ return cachedEntry<TServices, TBuildError>(cached);
69
62
  }
70
-
71
63
  const runtime = make(layer);
72
- const cachedRuntime: PlatformRuntime<Services, BuildError> = {
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: { readonly db: unknown; readonly trpc: EffectCallerFactory<unknown, object> },
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
- Database extends AnyDatabase,
26
- CreateCaller extends (...arguments_: never[]) => object,
27
- Provided,
28
- LayerError,
29
- Extension extends object,
27
+ TDatabase extends AnyDatabase,
28
+ TCreateCaller extends (...arguments_: never[]) => object,
29
+ TProvided,
30
+ TLayerError,
31
+ TExtension extends object,
30
32
  >(
31
- database: Database,
32
- options: MakePlatformItOptions<Database, CreateCaller, Provided, LayerError, Extension> & {
33
- readonly layer: Layer.Layer<Provided | Effect.Services<Database>, LayerError>;
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<PlatformHarness<Database, CallerOptions<CreateCaller>, CallerResult<CreateCaller>, Extension>, Provided | Effect.Services<Database>>;
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
- const promise = <Value>(evaluate: () => Promise<Value>) => Effect.tryPromise(() => options.adapter.runWithServices(services, evaluate));
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
- export const makePlatformIt =
63
- <const Database extends AnyDatabase>(database: Database) =>
64
- <CreateCaller extends (...arguments_: never[]) => object, Provided, LayerError, Extension extends object = Record<never, never>>(
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<Database, CallerOptions<CreateCaller>, CallerResult<CreateCaller>, Extension>,
70
- Provided | Effect.Services<Database>
71
- > =>
72
- platformIt(database, options);
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":"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"}
@@ -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,7 +0,0 @@
1
- import { Option } from "effect";
2
- export interface RejectedField {
3
- readonly field: string;
4
- readonly message: string;
5
- }
6
- export declare const rejectedField: (error: unknown) => Option.Option<RejectedField>;
7
- //# sourceMappingURL=rejected-field.d.ts.map
@@ -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"}