@shivaedev/platform 0.3.8 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -1
- package/README.md +41 -2
- package/dist/better-auth/adapter.d.ts +2 -2
- package/dist/better-auth/adapter.d.ts.map +1 -1
- package/dist/better-auth/adapter.js +39 -95
- package/dist/better-auth/adapter.js.map +1 -1
- package/dist/better-auth/relation.d.ts +7 -27
- package/dist/better-auth/relation.d.ts.map +1 -1
- package/dist/better-auth/relation.js +2 -84
- package/dist/better-auth/relation.js.map +1 -1
- package/dist/better-auth/row-adapter.d.ts +8 -0
- package/dist/better-auth/row-adapter.d.ts.map +1 -0
- package/dist/better-auth/row-adapter.js +45 -0
- package/dist/better-auth/row-adapter.js.map +1 -0
- package/dist/better-auth/where.d.ts +22 -0
- package/dist/better-auth/where.d.ts.map +1 -0
- package/dist/better-auth/where.js +93 -0
- package/dist/better-auth/where.js.map +1 -0
- package/dist/better-auth.d.ts +1 -1
- package/dist/errors/rejected-field.d.ts +7 -0
- package/dist/errors/rejected-field.d.ts.map +1 -0
- package/dist/errors/rejected-field.js +5 -0
- package/dist/errors/rejected-field.js.map +1 -0
- package/dist/errors/taxonomy.d.ts +40 -0
- package/dist/errors/taxonomy.d.ts.map +1 -0
- package/dist/errors/taxonomy.js +18 -0
- package/dist/errors/taxonomy.js.map +1 -0
- package/dist/errors.d.ts +3 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +3 -0
- package/dist/errors.js.map +1 -0
- package/dist/node-http/subscription-signal.d.ts.map +1 -1
- package/dist/node-http/subscription-signal.js +6 -1
- package/dist/node-http/subscription-signal.js.map +1 -1
- package/dist/node-http.d.ts +1 -1
- package/dist/rpc/identity.d.ts +15 -0
- package/dist/rpc/identity.d.ts.map +1 -0
- package/dist/rpc/identity.js +8 -0
- package/dist/rpc/identity.js.map +1 -0
- package/dist/rpc/middleware.d.ts +15 -0
- package/dist/rpc/middleware.d.ts.map +1 -0
- package/dist/rpc/middleware.js +12 -0
- package/dist/rpc/middleware.js.map +1 -0
- package/dist/rpc-server/adapters/better-auth-sessions.d.ts +4 -0
- package/dist/rpc-server/adapters/better-auth-sessions.d.ts.map +1 -0
- package/dist/rpc-server/adapters/better-auth-sessions.js +11 -0
- package/dist/rpc-server/adapters/better-auth-sessions.js.map +1 -0
- package/dist/rpc-server/origin.d.ts +15 -0
- package/dist/rpc-server/origin.d.ts.map +1 -0
- package/dist/rpc-server/origin.js +12 -0
- package/dist/rpc-server/origin.js.map +1 -0
- package/dist/rpc-server/redact-cause.d.ts +6 -0
- package/dist/rpc-server/redact-cause.d.ts.map +1 -0
- package/dist/rpc-server/redact-cause.js +28 -0
- package/dist/rpc-server/redact-cause.js.map +1 -0
- package/dist/rpc-server/redact.d.ts +3 -0
- package/dist/rpc-server/redact.d.ts.map +1 -0
- package/dist/rpc-server/redact.js +46 -0
- package/dist/rpc-server/redact.js.map +1 -0
- package/dist/rpc-server/sensitive.d.ts +5 -0
- package/dist/rpc-server/sensitive.d.ts.map +1 -0
- package/dist/rpc-server/sensitive.js +49 -0
- package/dist/rpc-server/sensitive.js.map +1 -0
- package/dist/rpc-server/session.d.ts +21 -0
- package/dist/rpc-server/session.d.ts.map +1 -0
- package/dist/rpc-server/session.js +28 -0
- package/dist/rpc-server/session.js.map +1 -0
- package/dist/rpc-server/tracing.d.ts +9 -0
- package/dist/rpc-server/tracing.d.ts.map +1 -0
- package/dist/rpc-server/tracing.js +32 -0
- package/dist/rpc-server/tracing.js.map +1 -0
- package/dist/rpc-server/transport.d.ts +4 -0
- package/dist/rpc-server/transport.d.ts.map +1 -0
- package/dist/rpc-server/transport.js +4 -0
- package/dist/rpc-server/transport.js.map +1 -0
- package/dist/rpc-server.d.ts +9 -0
- package/dist/rpc-server.d.ts.map +1 -0
- package/dist/rpc-server.js +9 -0
- package/dist/rpc-server.js.map +1 -0
- package/dist/rpc.d.ts +3 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +3 -0
- package/dist/rpc.js.map +1 -0
- package/dist/runtime/make.d.ts +1 -1
- package/dist/runtime/make.d.ts.map +1 -1
- package/dist/runtime/make.js +10 -9
- package/dist/runtime/make.js.map +1 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime.d.ts +2 -2
- package/dist/testing/types.d.ts.map +1 -1
- package/dist/testing/vitest.d.ts +1 -1
- package/dist/testing/vitest.d.ts.map +1 -1
- package/dist/testing/vitest.js +7 -9
- package/dist/testing/vitest.js.map +1 -1
- package/dist/testing.d.ts +2 -2
- package/package.json +28 -8
- package/src/better-auth/adapter.ts +50 -190
- package/src/better-auth/relation.ts +21 -163
- package/src/better-auth/row-adapter.ts +78 -0
- package/src/better-auth/where.ts +118 -0
- package/src/better-auth.ts +1 -1
- package/src/errors/rejected-field.ts +13 -0
- package/src/errors/taxonomy.ts +18 -0
- package/src/errors.ts +2 -0
- package/src/node-http/subscription-signal.ts +10 -15
- package/src/node-http.ts +1 -1
- package/src/rpc/identity.ts +11 -0
- package/src/rpc/middleware.ts +15 -0
- package/src/rpc-server/adapters/better-auth-sessions.ts +22 -0
- package/src/rpc-server/origin.ts +29 -0
- package/src/rpc-server/redact-cause.ts +41 -0
- package/src/rpc-server/redact.ts +42 -0
- package/src/rpc-server/sensitive.ts +60 -0
- package/src/rpc-server/session.ts +54 -0
- package/src/rpc-server/tracing.ts +56 -0
- package/src/rpc-server/transport.ts +8 -0
- package/src/rpc-server.ts +15 -0
- package/src/rpc.ts +2 -0
- package/src/runtime/make.ts +20 -27
- package/src/runtime/types.ts +3 -12
- package/src/runtime.ts +2 -2
- package/src/testing/types.ts +7 -32
- package/src/testing/vitest.ts +59 -89
- package/src/testing.ts +2 -2
package/src/testing/vitest.ts
CHANGED
|
@@ -1,96 +1,66 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
24
|
-
|
|
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
|
-
|
|
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