@shivaedev/platform 0.3.7 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +46 -0
  3. package/dist/better-auth/adapter.d.ts +2 -2
  4. package/dist/better-auth/adapter.d.ts.map +1 -1
  5. package/dist/better-auth/adapter.js +39 -95
  6. package/dist/better-auth/adapter.js.map +1 -1
  7. package/dist/better-auth/relation.d.ts +7 -27
  8. package/dist/better-auth/relation.d.ts.map +1 -1
  9. package/dist/better-auth/relation.js +2 -84
  10. package/dist/better-auth/relation.js.map +1 -1
  11. package/dist/better-auth/row-adapter.d.ts +8 -0
  12. package/dist/better-auth/row-adapter.d.ts.map +1 -0
  13. package/dist/better-auth/row-adapter.js +45 -0
  14. package/dist/better-auth/row-adapter.js.map +1 -0
  15. package/dist/better-auth/where.d.ts +22 -0
  16. package/dist/better-auth/where.d.ts.map +1 -0
  17. package/dist/better-auth/where.js +93 -0
  18. package/dist/better-auth/where.js.map +1 -0
  19. package/dist/better-auth.d.ts +1 -1
  20. package/dist/errors/rejected-field.d.ts +7 -0
  21. package/dist/errors/rejected-field.d.ts.map +1 -0
  22. package/dist/errors/rejected-field.js +5 -0
  23. package/dist/errors/rejected-field.js.map +1 -0
  24. package/dist/errors/taxonomy.d.ts +40 -0
  25. package/dist/errors/taxonomy.d.ts.map +1 -0
  26. package/dist/errors/taxonomy.js +18 -0
  27. package/dist/errors/taxonomy.js.map +1 -0
  28. package/dist/errors.d.ts +3 -0
  29. package/dist/errors.d.ts.map +1 -0
  30. package/dist/errors.js +3 -0
  31. package/dist/errors.js.map +1 -0
  32. package/dist/node-http/subscription-signal.d.ts.map +1 -1
  33. package/dist/node-http/subscription-signal.js +6 -1
  34. package/dist/node-http/subscription-signal.js.map +1 -1
  35. package/dist/node-http.d.ts +1 -1
  36. package/dist/rpc/identity.d.ts +15 -0
  37. package/dist/rpc/identity.d.ts.map +1 -0
  38. package/dist/rpc/identity.js +8 -0
  39. package/dist/rpc/identity.js.map +1 -0
  40. package/dist/rpc/middleware.d.ts +15 -0
  41. package/dist/rpc/middleware.d.ts.map +1 -0
  42. package/dist/rpc/middleware.js +12 -0
  43. package/dist/rpc/middleware.js.map +1 -0
  44. package/dist/rpc-server/adapters/better-auth-sessions.d.ts +4 -0
  45. package/dist/rpc-server/adapters/better-auth-sessions.d.ts.map +1 -0
  46. package/dist/rpc-server/adapters/better-auth-sessions.js +11 -0
  47. package/dist/rpc-server/adapters/better-auth-sessions.js.map +1 -0
  48. package/dist/rpc-server/origin.d.ts +15 -0
  49. package/dist/rpc-server/origin.d.ts.map +1 -0
  50. package/dist/rpc-server/origin.js +12 -0
  51. package/dist/rpc-server/origin.js.map +1 -0
  52. package/dist/rpc-server/redact-cause.d.ts +6 -0
  53. package/dist/rpc-server/redact-cause.d.ts.map +1 -0
  54. package/dist/rpc-server/redact-cause.js +28 -0
  55. package/dist/rpc-server/redact-cause.js.map +1 -0
  56. package/dist/rpc-server/redact.d.ts +3 -0
  57. package/dist/rpc-server/redact.d.ts.map +1 -0
  58. package/dist/rpc-server/redact.js +46 -0
  59. package/dist/rpc-server/redact.js.map +1 -0
  60. package/dist/rpc-server/sensitive.d.ts +5 -0
  61. package/dist/rpc-server/sensitive.d.ts.map +1 -0
  62. package/dist/rpc-server/sensitive.js +49 -0
  63. package/dist/rpc-server/sensitive.js.map +1 -0
  64. package/dist/rpc-server/session.d.ts +21 -0
  65. package/dist/rpc-server/session.d.ts.map +1 -0
  66. package/dist/rpc-server/session.js +28 -0
  67. package/dist/rpc-server/session.js.map +1 -0
  68. package/dist/rpc-server/tracing.d.ts +9 -0
  69. package/dist/rpc-server/tracing.d.ts.map +1 -0
  70. package/dist/rpc-server/tracing.js +32 -0
  71. package/dist/rpc-server/tracing.js.map +1 -0
  72. package/dist/rpc-server/transport.d.ts +4 -0
  73. package/dist/rpc-server/transport.d.ts.map +1 -0
  74. package/dist/rpc-server/transport.js +4 -0
  75. package/dist/rpc-server/transport.js.map +1 -0
  76. package/dist/rpc-server.d.ts +9 -0
  77. package/dist/rpc-server.d.ts.map +1 -0
  78. package/dist/rpc-server.js +9 -0
  79. package/dist/rpc-server.js.map +1 -0
  80. package/dist/rpc.d.ts +3 -0
  81. package/dist/rpc.d.ts.map +1 -0
  82. package/dist/rpc.js +3 -0
  83. package/dist/rpc.js.map +1 -0
  84. package/dist/runtime/make.d.ts +1 -1
  85. package/dist/runtime/make.d.ts.map +1 -1
  86. package/dist/runtime/make.js +10 -9
  87. package/dist/runtime/make.js.map +1 -1
  88. package/dist/runtime/types.d.ts.map +1 -1
  89. package/dist/runtime.d.ts +2 -2
  90. package/dist/testing/types.d.ts.map +1 -1
  91. package/dist/testing/vitest.d.ts +1 -1
  92. package/dist/testing/vitest.d.ts.map +1 -1
  93. package/dist/testing/vitest.js +7 -9
  94. package/dist/testing/vitest.js.map +1 -1
  95. package/dist/testing.d.ts +2 -2
  96. package/package.json +38 -6
  97. package/src/better-auth/adapter.ts +50 -190
  98. package/src/better-auth/relation.ts +21 -163
  99. package/src/better-auth/row-adapter.ts +78 -0
  100. package/src/better-auth/where.ts +118 -0
  101. package/src/better-auth.ts +1 -1
  102. package/src/errors/rejected-field.ts +13 -0
  103. package/src/errors/taxonomy.ts +18 -0
  104. package/src/errors.ts +2 -0
  105. package/src/node-http/subscription-signal.ts +10 -15
  106. package/src/node-http.ts +1 -1
  107. package/src/rpc/identity.ts +11 -0
  108. package/src/rpc/middleware.ts +15 -0
  109. package/src/rpc-server/adapters/better-auth-sessions.ts +22 -0
  110. package/src/rpc-server/origin.ts +29 -0
  111. package/src/rpc-server/redact-cause.ts +41 -0
  112. package/src/rpc-server/redact.ts +42 -0
  113. package/src/rpc-server/sensitive.ts +60 -0
  114. package/src/rpc-server/session.ts +54 -0
  115. package/src/rpc-server/tracing.ts +56 -0
  116. package/src/rpc-server/transport.ts +8 -0
  117. package/src/rpc-server.ts +15 -0
  118. package/src/rpc.ts +2 -0
  119. package/src/runtime/make.ts +20 -27
  120. package/src/runtime/types.ts +3 -12
  121. package/src/runtime.ts +2 -2
  122. package/src/testing/types.ts +7 -32
  123. package/src/testing/vitest.ts +59 -89
  124. package/src/testing.ts +2 -2
package/CHANGELOG.md CHANGED
@@ -1,6 +1,34 @@
1
1
  # Changelog
2
2
 
3
- ## Unreleased
3
+ ## 0.4.0 - 2026-09-26
4
+
5
+ ### Added
6
+
7
+ - `@shivaedev/platform/errors`: browser-safe Schema error classes shared by native
8
+ RPC contracts, effect-contract rejections and form field rejections.
9
+ - `@shivaedev/platform/rpc`: browser-safe request id and identity services plus
10
+ the `RequestTracing`, `Authenticated` and `MaybeAuthenticated` middleware tags.
11
+ - `@shivaedev/platform/rpc-server`: middleware layers for request ids, log and
12
+ span annotation, redacted failure logging, Better Auth sessions and an explicit
13
+ Origin policy. The Origin policy and session provider see only the transport
14
+ request's headers, not headers set inside RPC messages; `transportHeaders`
15
+ gives application middleware the same view.
16
+
17
+ ### Changed
18
+
19
+ - Require Effect Prisma 0.6.4 and Effect tRPC 0.4.0, which adds declared
20
+ rejections to tRPC error data.
21
+
22
+ ## 0.3.8 - 2026-09-26
23
+
24
+ ### Changed
25
+
26
+ - Require only Effect. Effect Prisma, Effect tRPC, tRPC server, and Effect
27
+ Vitest are now optional peers, so applications that import only the
28
+ `runtime` and `node-http` entries no longer install Prisma Next, tRPC, or
29
+ Vitest. The `better-auth` entry still requires Effect Prisma, and the
30
+ `testing` entry requires all four.
31
+ - Accept any Better Auth 1.x release from 1.6.25 instead of exactly 1.6.25.
4
32
 
5
33
  ## 0.3.7 - 2026-09-04
6
34
 
package/README.md CHANGED
@@ -7,6 +7,14 @@ database, transport, and test framework.
7
7
  Generic Prisma and tRPC integrations remain available separately from
8
8
  `@shivaedev/effect-prisma` and `@shivaedev/effect-trpc`.
9
9
 
10
+ `effect` is the only required peer. The `runtime`, `node-http`, `errors`, `rpc`
11
+ and `rpc-server` entries need nothing else. Install the optional peers for the
12
+ entries that use them:
13
+
14
+ - `better-auth`: `better-auth` and `@shivaedev/effect-prisma`
15
+ - `testing`: `@shivaedev/effect-prisma`, `@shivaedev/effect-trpc`,
16
+ `@trpc/server`, and `@effect/vitest`
17
+
10
18
  ## Runtime
11
19
 
12
20
  Build one managed runtime for the application and share it with integrations:
@@ -68,6 +76,44 @@ session policy, and authorization remain application configuration. Native
68
76
  experimental Better Auth joins are not supported; the standard adapter join
69
77
  fallback remains available.
70
78
 
79
+ ## Errors and native RPC request context
80
+
81
+ `@shivaedev/platform/errors` exports browser-safe `Schema.TaggedError` classes:
82
+ `NotFound`, `Unauthorized`, `Forbidden`, `BadRequest` and `Conflict` (both with an
83
+ optional `field`), `PreconditionFailed` and `AuthUnavailable`. Use them as native
84
+ RPC error schemas or effect-contract rejections. `rejectedField(error)` extracts
85
+ `{ field, message }` from any field rejection so a form can show it.
86
+
87
+ `@shivaedev/platform/rpc` declares the `RequestTracing`, `Authenticated` and
88
+ `MaybeAuthenticated` middleware and the `RequestId`, `Identity` and
89
+ `OptionalIdentity` services they provide. It is browser-safe, so shared `RpcGroup`
90
+ declarations can use it. Implement the middleware on the server with
91
+ `@shivaedev/platform/rpc-server`:
92
+
93
+ ```ts
94
+ import { Authenticated, RequestTracing } from "@shivaedev/platform/rpc"
95
+ import { authenticatedLayer, betterAuthSessions, requestTracingLayer, trustedOrigins } from "@shivaedev/platform/rpc-server"
96
+
97
+ const Api = RpcGroup.make(/* ... */).middleware(Authenticated).middleware(RequestTracing)
98
+
99
+ const Middleware = Layer.mergeAll(
100
+ requestTracingLayer(),
101
+ authenticatedLayer({
102
+ provider: betterAuthSessions((headers) => auth.api.getSession({ headers })),
103
+ origin: trustedOrigins({ allow: ["https://app.example"], missing: "reject" }),
104
+ }),
105
+ )
106
+ ```
107
+
108
+ Each RPC gets its own request id and resolves its own session. The Origin check
109
+ and session lookup read the HTTP request's own headers, never header pairs a
110
+ client puts inside an RPC message. An outage of the
111
+ session provider fails with `AuthUnavailable`, never as a signed-out user.
112
+ Failures log once with a redacted payload. The Origin policy is a function the
113
+ application supplies; see the
114
+ [request context guide](../../docs/framework/request-context.md) for the
115
+ trade-offs between browsers and native clients.
116
+
71
117
  ## Testing
72
118
 
73
119
  Configure the application database, tRPC caller, and test Layer once:
@@ -1,11 +1,11 @@
1
1
  import type { AnyDatabase } from "@shivaedev/effect-prisma";
2
2
  import type { DBAdapterInstance } from "better-auth";
3
- import type { PlatformRuntime } from "../runtime/types.js";
3
+ import type { PlatformRuntime } from "../runtime/types.ts";
4
4
  export interface EffectPrismaAdapterOptions {
5
5
  readonly debugLogs?: boolean;
6
6
  /** Map Better Auth model names to Prisma contract model names. */
7
7
  readonly modelName?: (model: string) => string;
8
8
  readonly usePlural?: boolean;
9
9
  }
10
- export declare const effectPrismaAdapter: <Database extends AnyDatabase, Services, BuildError>(databaseTag: Database, runtime: PlatformRuntime<Services, BuildError>, adapterOptions?: EffectPrismaAdapterOptions) => DBAdapterInstance;
10
+ export declare function effectPrismaAdapter<Database extends AnyDatabase, Services, BuildError>(databaseTag: Database, runtime: PlatformRuntime<Services, BuildError>, adapterOptions?: EffectPrismaAdapterOptions): DBAdapterInstance;
11
11
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/better-auth/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAqB,iBAAiB,EAAS,MAAM,aAAa,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAY3D,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B;AA2BD,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,SAAS,WAAW,EAAE,QAAQ,EAAE,UAAU,EAClD,aAAa,QAAQ,EACrB,SAAS,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,EAC9C,iBAAgB,0BAA+B,KAC7C,iBA4KF,CAAC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/better-auth/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI3D,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,kEAAkE;IAClE,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,101 +1,45 @@
1
1
  import { createAdapterFactory } from "better-auth/adapters";
2
- import { Effect, Option } from "effect";
2
+ import { Effect } from "effect";
3
3
  import { refineRelation } from "./relation.js";
4
- const modelRelation = (database, model, mapModelName) => Reflect.get(database, mapModelName(model));
5
- const defaultModelName = (model) => model.length === 0 ? model : `${model[0]?.toUpperCase()}${model.slice(1)}`;
6
- const rejectJoin = (join) => {
7
- if (join !== undefined) {
8
- throw new TypeError("The Effect Prisma Better Auth adapter does not support experimental native joins");
4
+ import { makeRowAdapter } from "./row-adapter.js";
5
+ const isFunction = (value, key) => ((typeof value === "object" && value !== null) || typeof value === "function") && typeof Reflect.get(value, key) === "function";
6
+ const isDynamicDatabase = (value) => isFunction(value, "transaction");
7
+ const isDynamicRelation = (value) => isFunction(value, "where") && isFunction(value, "select");
8
+ const modelRelation = (database, model) => {
9
+ const relation = Reflect.get(database, model);
10
+ if (!isDynamicRelation(relation)) {
11
+ throw new TypeError(`Unknown database model: ${model}`);
9
12
  }
13
+ return relation;
10
14
  };
11
- export const effectPrismaAdapter = (databaseTag, runtime, adapterOptions = {}) => (authOptions) => {
12
- const mapModelName = adapterOptions.modelName ?? defaultModelName;
13
- const databaseEffect = databaseTag;
14
- const run = (operation) => runtime.runPromise(Effect.flatMap(databaseEffect, (database) => operation(database)));
15
- let factory;
16
- factory = createAdapterFactory({
17
- config: {
18
- adapterId: "effect-prisma",
19
- adapterName: "Effect Prisma",
20
- debugLogs: adapterOptions.debugLogs ?? false,
21
- supportsArrays: true,
22
- supportsBooleans: true,
23
- supportsDates: true,
24
- supportsJSON: true,
25
- supportsNumericIds: true,
26
- supportsUUIDs: true,
27
- transaction: (callback) => run((database) => database.transaction(Effect.flatMap(Effect.context(), (services) => Effect.tryPromise({
28
- try: () => runtime.runWithServices(services, () => callback(factory(authOptions))),
29
- catch: (error) => error,
30
- })))),
31
- },
32
- adapter: ({ debugLog, getFieldAttributes }) => ({
33
- create: async ({ data, model, select }) => {
34
- debugLog("create", { model });
35
- return (await run((database) => refineRelation(modelRelation(database, model, mapModelName), {
36
- select,
37
- }).create(data)));
15
+ const defaultModelName = (model) => (model.length === 0 ? model : `${model[0]?.toUpperCase()}${model.slice(1)}`);
16
+ export function effectPrismaAdapter(databaseTag, runtime, adapterOptions = {}) {
17
+ return (authOptions) => {
18
+ const mapModelName = adapterOptions.modelName ?? defaultModelName;
19
+ const databaseEffect = Effect.flatMap(databaseTag, (database) => isDynamicDatabase(database) ? Effect.succeed(database) : Effect.die(new TypeError("The database service has no transaction")));
20
+ const run = (operation) => runtime.runPromise(Effect.flatMap(databaseEffect, operation));
21
+ const query = (model, refinement, use) => run((database) => use(refineRelation(modelRelation(database, mapModelName(model)), refinement)));
22
+ const inTransaction = (callback) => Effect.flatMap(Effect.context(), (services) => Effect.tryPromise({
23
+ try: () => runtime.runWithServices(services, callback),
24
+ catch: (error) => error,
25
+ }));
26
+ let factory;
27
+ factory = createAdapterFactory({
28
+ config: {
29
+ adapterId: "effect-prisma",
30
+ adapterName: "Effect Prisma",
31
+ debugLogs: adapterOptions.debugLogs ?? false,
32
+ supportsArrays: true,
33
+ supportsBooleans: true,
34
+ supportsDates: true,
35
+ supportsJSON: true,
36
+ supportsNumericIds: true,
37
+ supportsUUIDs: true,
38
+ transaction: (callback) => run((database) => database.transaction(inTransaction(() => callback(factory(authOptions))))),
38
39
  },
39
- findOne: async ({ join, model, select, where, }) => {
40
- rejectJoin(join);
41
- return (await run((database) => Effect.map(refineRelation(modelRelation(database, model, mapModelName), {
42
- select,
43
- where,
44
- }).first(), Option.getOrNull)));
45
- },
46
- findMany: async ({ join, limit, model, offset, select, sortBy, where, }) => {
47
- rejectJoin(join);
48
- return (await run((database) => refineRelation(modelRelation(database, model, mapModelName), {
49
- limit,
50
- offset,
51
- select,
52
- sortBy,
53
- where,
54
- })));
55
- },
56
- update: async ({ model, update, where }) => {
57
- if (where.length === 0)
58
- return null;
59
- const hasUniqueCondition = where.some((condition) => condition.connector !== "OR" &&
60
- condition.operator === "eq" &&
61
- condition.mode !== "insensitive" &&
62
- (condition.field === "id" ||
63
- getFieldAttributes({
64
- field: condition.field,
65
- model,
66
- }).unique === true));
67
- return (await run((database) => {
68
- const relation = refineRelation(modelRelation(database, model, mapModelName), { where });
69
- return hasUniqueCondition
70
- ? relation.update(update)
71
- : Effect.map(relation.updateAll(update), (rows) => rows[0] ?? null);
72
- }));
73
- },
74
- updateMany: ({ model, update, where }) => run((database) => Effect.map(refineRelation(modelRelation(database, model, mapModelName), {
75
- where,
76
- }).updateAll(update), (rows) => rows.length)),
77
- delete: ({ model, where }) => {
78
- const hasId = where.some((condition) => condition.connector !== "OR" &&
79
- condition.field === "id" &&
80
- condition.operator === "eq");
81
- return run((database) => {
82
- const relation = refineRelation(modelRelation(database, model, mapModelName), { where });
83
- return hasId
84
- ? Effect.asVoid(relation.delete())
85
- : Effect.asVoid(relation.deleteAll());
86
- });
87
- },
88
- deleteMany: ({ model, where }) => run((database) => Effect.map(refineRelation(modelRelation(database, model, mapModelName), {
89
- where,
90
- }).deleteAll(), (rows) => rows.length)),
91
- count: ({ model, where }) => run((database) => refineRelation(modelRelation(database, model, mapModelName), {
92
- where: where,
93
- }).count()),
94
- options: {
95
- usePlural: adapterOptions.usePlural ?? false,
96
- },
97
- }),
98
- });
99
- return factory(authOptions);
100
- };
40
+ adapter: makeRowAdapter(query, adapterOptions.usePlural ?? false),
41
+ });
42
+ return factory(authOptions);
43
+ };
44
+ }
101
45
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/better-auth/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/better-auth/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,6 @@
1
- import { and } from "@shivaedev/effect-prisma";
2
- import type { Where } from "better-auth";
3
1
  import type { Effect, Option } from "effect";
4
- type CleanedWhere = Required<Where>;
5
- type Expression = Parameters<typeof and>[number];
6
- interface DynamicField {
7
- eq(value: unknown): Expression;
8
- neq(value: unknown): Expression;
9
- gt(value: unknown): Expression;
10
- gte(value: unknown): Expression;
11
- lt(value: unknown): Expression;
12
- lte(value: unknown): Expression;
13
- in(value: ReadonlyArray<unknown>): Expression;
14
- notIn(value: ReadonlyArray<unknown>): Expression;
15
- like(value: string): Expression;
16
- ilike?(value: string): Expression;
17
- isNull(): Expression;
18
- isNotNull(): Expression;
19
- asc(): unknown;
20
- desc(): unknown;
21
- }
22
- export interface DynamicRelation<Requirements> {
2
+ import { type CleanedWhere, type DynamicField, type Expression } from "./where.ts";
3
+ export interface DynamicRelation<Requirements> extends Effect.Effect<ReadonlyArray<Record<string, unknown>>, unknown, Requirements> {
23
4
  where(predicate: (fields: Record<string, DynamicField>) => Expression): DynamicRelation<Requirements>;
24
5
  orderBy(ordering: (fields: Record<string, DynamicField>) => unknown): DynamicRelation<Requirements>;
25
6
  take(count: number): DynamicRelation<Requirements>;
@@ -34,14 +15,13 @@ export interface DynamicRelation<Requirements> {
34
15
  deleteAll(): Effect.Effect<ReadonlyArray<Record<string, unknown>>, unknown, Requirements>;
35
16
  }
36
17
  export declare const refineRelation: <Requirements>(relation: DynamicRelation<Requirements>, options: {
37
- readonly where?: ReadonlyArray<CleanedWhere>;
38
- readonly select?: ReadonlyArray<string>;
39
- readonly limit?: number;
40
- readonly offset?: number;
18
+ readonly where?: ReadonlyArray<CleanedWhere> | undefined;
19
+ readonly select?: ReadonlyArray<string> | undefined;
20
+ readonly limit?: number | undefined;
21
+ readonly offset?: number | undefined;
41
22
  readonly sortBy?: {
42
23
  readonly direction: "asc" | "desc";
43
24
  readonly field: string;
44
- };
25
+ } | undefined;
45
26
  }) => DynamicRelation<Requirements>;
46
- export {};
47
27
  //# sourceMappingURL=relation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/better-auth/relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/better-auth/relation.ts"],"names":[],"mappings":"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"}
@@ -1,87 +1,5 @@
1
- import { all, and, not, or } from "@shivaedev/effect-prisma";
2
- const escapeLike = (value) => value.replaceAll("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_");
3
- const comparison = (field, where) => {
4
- const value = where.value;
5
- if (where.mode === "insensitive" &&
6
- typeof value === "string" &&
7
- field.ilike !== undefined) {
8
- if (where.operator === "eq")
9
- return field.ilike(escapeLike(value));
10
- if (where.operator === "ne")
11
- return not(field.ilike(escapeLike(value)));
12
- }
13
- switch (where.operator) {
14
- case "eq":
15
- return value === null ? field.isNull() : field.eq(value);
16
- case "ne":
17
- return value === null ? field.isNotNull() : field.neq(value);
18
- case "lt":
19
- return field.lt(value);
20
- case "lte":
21
- return field.lte(value);
22
- case "gt":
23
- return field.gt(value);
24
- case "gte":
25
- return field.gte(value);
26
- case "in": {
27
- const values = (Array.isArray(value) ? value : [value]).filter((item) => item !== null);
28
- const ilike = field.ilike;
29
- return values.length === 0
30
- ? and(field.isNull(), field.isNotNull())
31
- : where.mode === "insensitive" &&
32
- ilike !== undefined &&
33
- values.every((item) => typeof item === "string")
34
- ? or(...values.map((item) => ilike(escapeLike(String(item)))))
35
- : field.in(values);
36
- }
37
- case "not_in": {
38
- const values = (Array.isArray(value) ? value : [value]).filter((item) => item !== null);
39
- if (values.length === 0)
40
- return undefined;
41
- const ilike = field.ilike;
42
- return where.mode === "insensitive" &&
43
- ilike !== undefined &&
44
- values.every((item) => typeof item === "string")
45
- ? and(...values.map((item) => not(ilike(escapeLike(String(item))))))
46
- : field.notIn(values);
47
- }
48
- case "contains":
49
- case "starts_with":
50
- case "ends_with": {
51
- if (typeof value !== "string") {
52
- throw new TypeError(`${where.operator} requires a string value`);
53
- }
54
- const escaped = escapeLike(value);
55
- const pattern = where.operator === "contains"
56
- ? `%${escaped}%`
57
- : where.operator === "starts_with"
58
- ? `${escaped}%`
59
- : `%${escaped}`;
60
- return where.mode === "insensitive" && field.ilike !== undefined
61
- ? field.ilike(pattern)
62
- : field.like(pattern);
63
- }
64
- }
65
- };
66
- const whereExpression = (fields, where) => {
67
- const conjunctions = [];
68
- const disjunctions = [];
69
- for (const condition of where) {
70
- const field = fields[condition.field];
71
- if (field === undefined) {
72
- throw new TypeError(`Unknown database field: ${condition.field}`);
73
- }
74
- const expression = comparison(field, condition);
75
- if (expression === undefined)
76
- continue;
77
- (condition.connector === "OR" ? disjunctions : conjunctions).push(expression);
78
- }
79
- if (disjunctions.length > 0)
80
- conjunctions.push(or(...disjunctions));
81
- if (conjunctions.length === 0)
82
- return all();
83
- return conjunctions.length === 1 ? conjunctions[0] : and(...conjunctions);
84
- };
1
+ import { all } from "@shivaedev/effect-prisma";
2
+ import { whereExpression } from "./where.js";
85
3
  export const refineRelation = (relation, options) => {
86
4
  let refined = relation;
87
5
  if (options.where !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/better-auth/relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/better-auth/relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE/C,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;QAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvE,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"}
@@ -0,0 +1,8 @@
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
@@ -0,0 +1 @@
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,qCAqC3C,CAAC"}
@@ -0,0 +1,45 @@
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
+ create: ({ data, model, select }) => {
18
+ debugLog("create", { model });
19
+ return query(model, { select }, (relation) => relation.create(data));
20
+ },
21
+ findOne: ({ join, model, select, where }) => {
22
+ rejectJoin(join);
23
+ return query(model, { select, where }, (relation) => Effect.map(relation.first(), Option.getOrNull));
24
+ },
25
+ findMany: ({ join, limit, model, offset, select, sortBy, where }) => {
26
+ rejectJoin(join);
27
+ return query(model, { limit, offset, select, sortBy, where }, (relation) => relation);
28
+ },
29
+ update: ({ model, update, where }) => {
30
+ if (where.length === 0)
31
+ return Promise.resolve(null);
32
+ const unique = where.some((condition) => isUnique(model, condition));
33
+ return query(model, { where }, (relation) => unique ? relation.update(update) : Effect.map(relation.updateAll(update), (rows) => rows[0] ?? null));
34
+ },
35
+ updateMany: ({ model, update, where }) => query(model, { where }, (relation) => Effect.map(relation.updateAll(update), (rows) => rows.length)),
36
+ delete: ({ model, where }) => {
37
+ const byId = where.some(namesId);
38
+ return query(model, { where }, (relation) => (byId ? Effect.asVoid(relation.delete()) : Effect.asVoid(relation.deleteAll())));
39
+ },
40
+ deleteMany: ({ model, where }) => query(model, { where }, (relation) => Effect.map(relation.deleteAll(), (rows) => rows.length)),
41
+ count: ({ model, where }) => query(model, { where }, (relation) => relation.count()),
42
+ options: { usePlural },
43
+ });
44
+ };
45
+ //# sourceMappingURL=row-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-adapter.js","sourceRoot":"","sources":["../../src/better-auth/row-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAyBxC,SAAS,QAAQ,CAAC,OAAgB;IACjC,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAa,EAAQ,EAAE;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,kFAAkF,CAAC,CAAC;IACzG,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,SAAuB,EAAW,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC;AAE9I,MAAM,CAAC,MAAM,cAAc,GAC1B,CAAC,KAAoB,EAAE,SAAkB,EAAyC,EAAE,CACpF,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAE;IACpC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,SAAuB,EAAW,EAAE,CACpE,SAAS,CAAC,SAAS,KAAK,IAAI;QAC5B,SAAS,CAAC,QAAQ,KAAK,IAAI;QAC3B,SAAS,CAAC,IAAI,KAAK,aAAa;QAChC,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAErG,OAAO,QAAQ,CAAC;QACf,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YACnC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9B,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACtG,CAAC;QACD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YACnE,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC3C,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CACpG,CAAC;QACH,CAAC;QACD,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9I,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/H,CAAC;QACD,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChI,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpF,OAAO,EAAE,EAAE,SAAS,EAAE;KACtB,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { and } from "@shivaedev/effect-prisma";
2
+ import type { Where } from "better-auth";
3
+ export type CleanedWhere = Required<Where>;
4
+ export type Expression = Parameters<typeof and>[number];
5
+ export interface DynamicField {
6
+ eq(value: unknown): Expression;
7
+ neq(value: unknown): Expression;
8
+ gt(value: unknown): Expression;
9
+ gte(value: unknown): Expression;
10
+ lt(value: unknown): Expression;
11
+ lte(value: unknown): Expression;
12
+ in(value: ReadonlyArray<unknown>): Expression;
13
+ notIn(value: ReadonlyArray<unknown>): Expression;
14
+ like(value: string): Expression;
15
+ ilike?(value: string): Expression;
16
+ isNull(): Expression;
17
+ isNotNull(): Expression;
18
+ asc(): unknown;
19
+ desc(): unknown;
20
+ }
21
+ export declare const whereExpression: (fields: Record<string, DynamicField>, where: ReadonlyArray<CleanedWhere>) => Expression | undefined;
22
+ //# sourceMappingURL=where.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where.d.ts","sourceRoot":"","sources":["../../src/better-auth/where.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAW,MAAM,0BAA0B,CAAC;AAC7D,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,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IAC/B,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IAC/B,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IAC/B,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;IAC9C,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;IACjD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,MAAM,IAAI,UAAU,CAAC;IACrB,SAAS,IAAI,UAAU,CAAC;IACxB,GAAG,IAAI,OAAO,CAAC;IACf,IAAI,IAAI,OAAO,CAAC;CAChB;AA+ED,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,aAAa,CAAC,YAAY,CAAC,KAAG,UAAU,GAAG,SAiBvH,CAAC"}