@shivaedev/platform 0.3.8 → 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 +18 -1
  2. package/README.md +41 -2
  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 +25 -5
  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
@@ -1,96 +1,66 @@
1
- import type { Vitest } from "@effect/vitest";
2
- import {
3
- type AnyDatabase,
4
- type DatabaseService,
5
- withTestTransaction,
6
- } from "@shivaedev/effect-prisma/testing";
7
- import {
8
- type CallerOptions,
9
- type CallerResult,
10
- type EffectCallerFactory,
11
- makeTrpcHarnessIt,
12
- } from "@shivaedev/effect-trpc/testing";
1
+ import type { TestContext } from "@effect/vitest";
2
+ import { type AnyDatabase, withTestTransaction } from "@shivaedev/effect-prisma/testing";
3
+ import type { EffectTRPCAdapter } from "@shivaedev/effect-trpc";
4
+ import { type CallerOptions, type CallerResult, type EffectCallerFactory, makeTrpcHarnessIt } from "@shivaedev/effect-trpc/testing";
13
5
  import { Effect, type Layer } from "effect";
14
- import type {
15
- MakePlatformItOptions,
16
- PlatformHarness,
17
- PlatformIt,
18
- } from "./types.js";
6
+ import type { MakePlatformItOptions, PlatformHarness, PlatformIt } from "./types.ts";
7
+
8
+ interface LooseOptions {
9
+ readonly adapter: Pick<EffectTRPCAdapter<never>, "runWithServices">;
10
+ readonly createCaller: (options?: unknown) => object;
11
+ extend?(
12
+ base: { readonly db: unknown; readonly trpc: EffectCallerFactory<unknown, object> },
13
+ context: TestContext,
14
+ ): Effect.Effect<object, unknown, unknown>;
15
+ readonly layer: Layer.Layer<unknown, unknown>;
16
+ }
17
+
18
+ function platformIt<
19
+ Database extends AnyDatabase,
20
+ CreateCaller extends (...arguments_: never[]) => object,
21
+ Provided,
22
+ LayerError,
23
+ Extension extends object,
24
+ >(
25
+ database: Database,
26
+ options: MakePlatformItOptions<Database, CreateCaller, Provided, LayerError, Extension> & {
27
+ readonly layer: Layer.Layer<Provided | Effect.Services<Database>, LayerError>;
28
+ },
29
+ ): PlatformIt<PlatformHarness<Database, CallerOptions<CreateCaller>, CallerResult<CreateCaller>, Extension>, Provided | Effect.Services<Database>>;
30
+ function platformIt(database: AnyDatabase, options: LooseOptions): unknown {
31
+ const trpcIt = makeTrpcHarnessIt({
32
+ adapter: options.adapter,
33
+ createCaller: options.createCaller,
34
+ layer: options.layer,
35
+ around: (effect) => withTestTransaction(database, effect),
36
+ makeHarness: (trpc, context) =>
37
+ Effect.gen(function* () {
38
+ const services = yield* Effect.context<unknown>();
39
+ const db = yield* database;
40
+ const extension = options.extend ? yield* options.extend({ db, trpc }, context) : {};
41
+ const promise = <Value>(evaluate: () => Promise<Value>) => Effect.tryPromise(() => options.adapter.runWithServices(services, evaluate));
42
+ return { ...extension, db, promise, trpc };
43
+ }),
44
+ });
45
+
46
+ return new Proxy(trpcIt, {
47
+ get(target, property, receiver) {
48
+ if (property === "effectApp") {
49
+ return trpcIt.effectTRPC;
50
+ }
51
+ return Reflect.get(target, property, receiver);
52
+ },
53
+ });
54
+ }
19
55
 
20
56
  export const makePlatformIt =
21
57
  <const Database extends AnyDatabase>(database: Database) =>
22
- <
23
- CreateCaller extends (...arguments_: never[]) => object,
24
- Provided,
25
- LayerError,
26
- Extension extends object = Record<never, never>,
27
- >(
28
- options: MakePlatformItOptions<
29
- Database,
30
- CreateCaller,
31
- Provided,
32
- LayerError,
33
- Extension
34
- > & {
35
- readonly layer: Layer.Layer<
36
- Provided | Effect.Services<Database>,
37
- LayerError
38
- >;
58
+ <CreateCaller extends (...arguments_: never[]) => object, Provided, LayerError, Extension extends object = Record<never, never>>(
59
+ options: MakePlatformItOptions<Database, CreateCaller, Provided, LayerError, Extension> & {
60
+ readonly layer: Layer.Layer<Provided | Effect.Services<Database>, LayerError>;
39
61
  },
40
62
  ): PlatformIt<
41
- PlatformHarness<
42
- Database,
43
- CallerOptions<CreateCaller>,
44
- CallerResult<CreateCaller>,
45
- Extension
46
- >,
63
+ PlatformHarness<Database, CallerOptions<CreateCaller>, CallerResult<CreateCaller>, Extension>,
47
64
  Provided | Effect.Services<Database>
48
- > => {
49
- type Options = CallerOptions<CreateCaller>;
50
- type Caller = CallerResult<CreateCaller>;
51
- type Services = Provided | Effect.Services<Database>;
52
- type Harness = PlatformHarness<Database, Options, Caller, Extension>;
53
-
54
- const trpcIt = makeTrpcHarnessIt<
55
- CreateCaller,
56
- Layer.Layer<Services, LayerError>,
57
- Harness
58
- >({
59
- adapter: options.adapter,
60
- createCaller: options.createCaller,
61
- layer: options.layer,
62
- around: (effect) => withTestTransaction(database, effect),
63
- makeHarness: (
64
- trpc: EffectCallerFactory<Options, Caller>,
65
- context,
66
- ): Effect.Effect<Harness, unknown, Services> =>
67
- Effect.gen(function* () {
68
- const services = yield* Effect.context<Services>();
69
- const databaseEffect = database as unknown as Effect.Effect<
70
- DatabaseService<Database>,
71
- never,
72
- Effect.Services<Database>
73
- >;
74
- const db = yield* databaseEffect;
75
- const extension = options.extend
76
- ? yield* options.extend({ db, trpc }, context)
77
- : ({} as Extension);
78
- const promise = <Value>(evaluate: () => Promise<Value>) =>
79
- Effect.tryPromise(() =>
80
- options.adapter.runWithServices(services, evaluate),
81
- );
82
- return { ...extension, db, promise, trpc } as Harness;
83
- }) as Effect.Effect<Harness, unknown, Services>,
84
- });
85
-
86
- return new Proxy(trpcIt, {
87
- get(target, property, receiver) {
88
- if (property === "effectApp") {
89
- return trpcIt.effectTRPC;
90
- }
91
- return Reflect.get(target, property, receiver);
92
- },
93
- }) as unknown as Vitest.Methods & {
94
- readonly effectApp: typeof trpcIt.effectTRPC;
95
- } as PlatformIt<Harness, Services>;
96
- };
65
+ > =>
66
+ platformIt(database, options);
package/src/testing.ts CHANGED
@@ -4,5 +4,5 @@ export type {
4
4
  PlatformIt,
5
5
  PlatformTest,
6
6
  PlatformTester,
7
- } from "./testing/types.js";
8
- export { makePlatformIt } from "./testing/vitest.js";
7
+ } from "./testing/types.ts";
8
+ export { makePlatformIt } from "./testing/vitest.ts";