@shivaedev/platform 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/README.md +361 -112
- package/dist/errors/rejectedField.d.ts +7 -0
- package/dist/errors/rejectedField.d.ts.map +1 -0
- package/dist/errors/{rejected-field.js → rejectedField.js} +4 -2
- package/dist/errors/rejectedField.js.map +1 -0
- package/dist/errors/taxonomy.d.ts +10 -0
- package/dist/errors/taxonomy.d.ts.map +1 -1
- package/dist/errors/taxonomy.js +4 -0
- package/dist/errors/taxonomy.js.map +1 -1
- package/dist/rpc/identity.d.ts.map +1 -1
- package/dist/rpc/identity.js.map +1 -1
- package/dist/rpc/middleware.d.ts.map +1 -1
- package/dist/rpc/middleware.js.map +1 -1
- package/dist/server/appHost.d.ts +56 -0
- package/dist/server/appHost.d.ts.map +1 -0
- package/dist/server/appHost.js +55 -0
- package/dist/server/appHost.js.map +1 -0
- package/dist/{better-auth → server/better-auth}/adapter.d.ts +1 -1
- package/dist/server/better-auth/adapter.d.ts.map +1 -0
- package/dist/{better-auth → server/better-auth}/adapter.js +26 -14
- package/dist/server/better-auth/adapter.js.map +1 -0
- package/dist/{better-auth → server/better-auth}/relation.d.ts +15 -15
- package/dist/server/better-auth/relation.d.ts.map +1 -0
- package/dist/{better-auth → server/better-auth}/relation.js +2 -2
- package/dist/server/better-auth/relation.js.map +1 -0
- package/dist/server/better-auth/rowAdapter.d.ts +8 -0
- package/dist/server/better-auth/rowAdapter.d.ts.map +1 -0
- package/dist/server/better-auth/rowAdapter.js +52 -0
- package/dist/server/better-auth/rowAdapter.js.map +1 -0
- package/dist/{better-auth → server/better-auth}/where.d.ts +1 -1
- package/dist/server/better-auth/where.d.ts.map +1 -0
- package/dist/{better-auth → server/better-auth}/where.js +22 -18
- package/dist/server/better-auth/where.js.map +1 -0
- package/dist/{node-http/subscription-signal.d.ts → server/node-http/subscriptionSignal.d.ts} +2 -2
- package/dist/server/node-http/subscriptionSignal.d.ts.map +1 -0
- package/dist/{node-http/subscription-signal.js → server/node-http/subscriptionSignal.js} +20 -13
- package/dist/server/node-http/subscriptionSignal.js.map +1 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts +4 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts.map +1 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.js +14 -0
- package/dist/server/rpc-server/adapters/betterAuthSessions.js.map +1 -0
- package/dist/server/rpc-server/boundary.d.ts +9 -0
- package/dist/server/rpc-server/boundary.d.ts.map +1 -0
- package/dist/server/rpc-server/boundary.js +18 -0
- package/dist/server/rpc-server/boundary.js.map +1 -0
- package/dist/server/rpc-server/local.d.ts +7 -0
- package/dist/server/rpc-server/local.d.ts.map +1 -0
- package/dist/server/rpc-server/local.js +66 -0
- package/dist/server/rpc-server/local.js.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/origin.d.ts +2 -2
- package/dist/server/rpc-server/origin.d.ts.map +1 -0
- package/dist/server/rpc-server/origin.js +16 -0
- package/dist/server/rpc-server/origin.js.map +1 -0
- package/dist/server/rpc-server/redact.d.ts +3 -0
- package/dist/server/rpc-server/redact.d.ts.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/redact.js +9 -7
- package/dist/server/rpc-server/redact.js.map +1 -0
- package/dist/server/rpc-server/redactCause.d.ts +6 -0
- package/dist/server/rpc-server/redactCause.d.ts.map +1 -0
- package/dist/server/rpc-server/redactCause.js +36 -0
- package/dist/server/rpc-server/redactCause.js.map +1 -0
- package/dist/server/rpc-server/sensitive.d.ts +5 -0
- package/dist/server/rpc-server/sensitive.d.ts.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/sensitive.js +21 -17
- package/dist/server/rpc-server/sensitive.js.map +1 -0
- package/dist/server/rpc-server/session.d.ts +21 -0
- package/dist/server/rpc-server/session.d.ts.map +1 -0
- package/dist/server/rpc-server/session.js +37 -0
- package/dist/server/rpc-server/session.js.map +1 -0
- package/dist/{rpc-server → server/rpc-server}/tracing.d.ts +1 -1
- package/dist/server/rpc-server/tracing.d.ts.map +1 -0
- package/dist/server/rpc-server/tracing.js +42 -0
- package/dist/server/rpc-server/tracing.js.map +1 -0
- package/dist/server/rpc-server/transportHeaders.d.ts +4 -0
- package/dist/server/rpc-server/transportHeaders.d.ts.map +1 -0
- package/dist/server/rpc-server/transportHeaders.js +6 -0
- package/dist/server/rpc-server/transportHeaders.js.map +1 -0
- package/dist/server/runtime/makePlatform.d.ts +4 -0
- package/dist/server/runtime/makePlatform.d.ts.map +1 -0
- package/dist/{runtime/make.js → server/runtime/makePlatform.js} +10 -8
- package/dist/server/runtime/makePlatform.js.map +1 -0
- package/dist/server/runtime/types.d.ts +19 -0
- package/dist/server/runtime/types.d.ts.map +1 -0
- package/dist/{runtime → server/runtime}/types.js.map +1 -1
- package/dist/server/testing/makePlatformIt.d.ts +8 -0
- package/dist/server/testing/makePlatformIt.d.ts.map +1 -0
- package/dist/{testing/vitest.js → server/testing/makePlatformIt.js} +7 -3
- package/dist/server/testing/makePlatformIt.js.map +1 -0
- package/dist/server/testing/types.d.ts +28 -0
- package/dist/server/testing/types.d.ts.map +1 -0
- package/dist/{testing → server/testing}/types.js.map +1 -1
- package/docs/north-star.md +36 -0
- package/docs/roadmap.md +30 -0
- package/package.json +317 -16
- package/src/errors/{rejected-field.ts → rejectedField.ts} +3 -6
- package/src/errors/taxonomy.ts +2 -8
- package/src/rpc/identity.ts +0 -4
- package/src/rpc/middleware.ts +18 -9
- package/src/server/appHost.ts +134 -0
- package/src/{better-auth → server/better-auth}/adapter.ts +26 -30
- package/src/{better-auth → server/better-auth}/relation.ts +17 -19
- package/src/{better-auth/row-adapter.ts → server/better-auth/rowAdapter.ts} +19 -21
- package/src/{better-auth → server/better-auth}/where.ts +22 -32
- package/src/{node-http/subscription-signal.ts → server/node-http/subscriptionSignal.ts} +19 -22
- package/src/{rpc-server/adapters/better-auth-sessions.ts → server/rpc-server/adapters/betterAuthSessions.ts} +9 -10
- package/src/server/rpc-server/boundary.ts +26 -0
- package/src/server/rpc-server/local.ts +70 -0
- package/src/{rpc-server → server/rpc-server}/origin.ts +10 -13
- package/src/{rpc-server → server/rpc-server}/redact.ts +9 -11
- package/src/server/rpc-server/redactCause.ts +40 -0
- package/src/{rpc-server → server/rpc-server}/sensitive.ts +17 -22
- package/src/{rpc-server → server/rpc-server}/session.ts +22 -23
- package/src/{rpc-server → server/rpc-server}/tracing.ts +15 -18
- package/src/{rpc-server/transport.ts → server/rpc-server/transportHeaders.ts} +3 -3
- package/src/{runtime/make.ts → server/runtime/makePlatform.ts} +18 -26
- package/src/server/runtime/types.ts +24 -0
- package/src/{testing/vitest.ts → server/testing/makePlatformIt.ts} +27 -23
- package/src/server/testing/types.ts +38 -0
- package/dist/better-auth/adapter.d.ts.map +0 -1
- package/dist/better-auth/adapter.js.map +0 -1
- package/dist/better-auth/relation.d.ts.map +0 -1
- package/dist/better-auth/relation.js.map +0 -1
- package/dist/better-auth/row-adapter.d.ts +0 -8
- package/dist/better-auth/row-adapter.d.ts.map +0 -1
- package/dist/better-auth/row-adapter.js +0 -46
- package/dist/better-auth/row-adapter.js.map +0 -1
- package/dist/better-auth/where.d.ts.map +0 -1
- package/dist/better-auth/where.js.map +0 -1
- package/dist/errors/rejected-field.d.ts +0 -7
- package/dist/errors/rejected-field.d.ts.map +0 -1
- package/dist/errors/rejected-field.js.map +0 -1
- package/dist/node-http/subscription-signal.d.ts.map +0 -1
- package/dist/node-http/subscription-signal.js.map +0 -1
- package/dist/rpc-server/adapters/better-auth-sessions.d.ts +0 -4
- package/dist/rpc-server/adapters/better-auth-sessions.d.ts.map +0 -1
- package/dist/rpc-server/adapters/better-auth-sessions.js +0 -11
- package/dist/rpc-server/adapters/better-auth-sessions.js.map +0 -1
- package/dist/rpc-server/origin.d.ts.map +0 -1
- package/dist/rpc-server/origin.js +0 -12
- package/dist/rpc-server/origin.js.map +0 -1
- package/dist/rpc-server/redact-cause.d.ts +0 -6
- package/dist/rpc-server/redact-cause.d.ts.map +0 -1
- package/dist/rpc-server/redact-cause.js +0 -28
- package/dist/rpc-server/redact-cause.js.map +0 -1
- package/dist/rpc-server/redact.d.ts +0 -3
- package/dist/rpc-server/redact.d.ts.map +0 -1
- package/dist/rpc-server/redact.js.map +0 -1
- package/dist/rpc-server/sensitive.d.ts +0 -5
- package/dist/rpc-server/sensitive.d.ts.map +0 -1
- package/dist/rpc-server/sensitive.js.map +0 -1
- package/dist/rpc-server/session.d.ts +0 -21
- package/dist/rpc-server/session.d.ts.map +0 -1
- package/dist/rpc-server/session.js +0 -31
- package/dist/rpc-server/session.js.map +0 -1
- package/dist/rpc-server/tracing.d.ts.map +0 -1
- package/dist/rpc-server/tracing.js +0 -34
- package/dist/rpc-server/tracing.js.map +0 -1
- package/dist/rpc-server/transport.d.ts +0 -4
- package/dist/rpc-server/transport.d.ts.map +0 -1
- package/dist/rpc-server/transport.js +0 -4
- package/dist/rpc-server/transport.js.map +0 -1
- package/dist/runtime/make.d.ts +0 -4
- package/dist/runtime/make.d.ts.map +0 -1
- package/dist/runtime/make.js.map +0 -1
- package/dist/runtime/types.d.ts +0 -19
- package/dist/runtime/types.d.ts.map +0 -1
- package/dist/testing/types.d.ts +0 -28
- package/dist/testing/types.d.ts.map +0 -1
- package/dist/testing/vitest.d.ts +0 -8
- package/dist/testing/vitest.d.ts.map +0 -1
- package/dist/testing/vitest.js.map +0 -1
- package/src/rpc-server/redact-cause.ts +0 -41
- package/src/runtime/types.ts +0 -24
- package/src/testing/types.ts +0 -43
- /package/dist/{runtime → server/runtime}/types.js +0 -0
- /package/dist/{testing → server/testing}/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/errors/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7C,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/errors/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7C,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACtF,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,WAAW,EAAY,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AACtF,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,EAAgB,CAAC,cAAc,EAAE,SAAS,CAAC;CAAG;AAClG,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,WAAW,EAAa,CAAC,WAAW,EAAE,SAAS,CAAC;CAAG;AACzF,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,WAAW,EAAc,CAAC,YAAY,EAAE,QAAQ,CAAC;CAAG;AAC3F,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,WAAW,EAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;CAAG;AACrF,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAAC,oBAAoB,EAAE,SAAS,CAAC;CAAG;AACpH,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE,SAAS,CAAC;CAAG;AAC3G,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE,SAAS,CAAC;CAAG;AAC3G,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,EAAuB,CAAC,qBAAqB,EAAE,SAAS,CAAC;CAAG;AACvH,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAAC,oBAAoB,EAAE,SAAS,CAAC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/rpc/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;;
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/rpc/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;;AAC9C,qBAAa,SAAU,SAAQ,cAAyE;CAAG;AAC3G,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACpB;;AACD,qBAAa,QAAS,SAAQ,aAA8E;CAAG;;AAC/G,qBAAa,gBAAiB,SAAQ,qBAA6G;CAAG"}
|
package/dist/rpc/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/rpc/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/rpc/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,OAAO,EAAqB,CAAC,mCAAmC,CAAC;CAAG;AAI3G,MAAM,OAAO,QAAS,SAAQ,OAAO,CAAC,OAAO,EAA2B,CAAC,kCAAkC,CAAC;CAAG;AAC/G,MAAM,OAAO,gBAAiB,SAAQ,OAAO,CAAC,OAAO,EAAkD,CAAC,0CAA0C,CAAC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/rpc/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/rpc/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;AAC3E,qBAAa,cAAe,SAAQ,mBAKS;CAAG;;AAChD,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;AACL,qBAAa,kBAAmB,SAAQ,uBAKgE;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/rpc/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/rpc/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,OAAO,cAAe,SAAQ,aAAa,CAAC,OAAO,EAKtD,CAAC,wCAAwC,CAAC;CAAG;AAChD,MAAM,OAAO,aAAc,SAAQ,aAAa,CAAC,OAAO,EAKrD,CAAC,uCAAuC,EAAE;IAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;CAC/D,CAAC;CAAG;AACL,MAAM,OAAO,kBAAmB,SAAQ,aAAa,CAAC,OAAO,EAK1D,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;CAAG"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { NodeServices } from "@effect/platform-node";
|
|
2
|
+
import * as PgClient from "@effect/sql-pg/PgClient";
|
|
3
|
+
import { Config, Context, type Duration, Effect, Layer, type Redacted } from "effect";
|
|
4
|
+
import { HttpRouter } from "effect/unstable/http";
|
|
5
|
+
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
6
|
+
import { type Rpc, type RpcGroup, RpcSerialization } from "effect/unstable/rpc";
|
|
7
|
+
import type { Migrator } from "effect/unstable/sql";
|
|
8
|
+
import { type PostgresChangesOptions } from "@shivaedev/effect-sql/postgresChanges.ts";
|
|
9
|
+
import type { Authenticated, MaybeAuthenticated, RequestTracing } from "#rpc/middleware.ts";
|
|
10
|
+
import { type SessionPolicy, type SessionShape } from "#rpc-server/session.ts";
|
|
11
|
+
declare const AppChanges_base: Context.ServiceClass<AppChanges, "@shivaedev/platform/AppChanges", {
|
|
12
|
+
resync: Effect.Effect<void, never, never>;
|
|
13
|
+
stream: (keys: readonly import("@shivaedev/effect-contract/keys.ts").Key[]) => import("effect/Stream").Stream<{
|
|
14
|
+
readonly _tag: "Changed";
|
|
15
|
+
readonly keys: readonly ({
|
|
16
|
+
readonly _tag: "List";
|
|
17
|
+
readonly collection: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly _tag: "Item";
|
|
20
|
+
readonly collection: string;
|
|
21
|
+
readonly id: string | number;
|
|
22
|
+
})[];
|
|
23
|
+
} | {
|
|
24
|
+
readonly _tag: "Resync";
|
|
25
|
+
}, never, never>;
|
|
26
|
+
}>;
|
|
27
|
+
export declare class AppChanges extends AppChanges_base {
|
|
28
|
+
}
|
|
29
|
+
export interface AppDatabaseOptions<R = never> {
|
|
30
|
+
readonly config?: {
|
|
31
|
+
readonly databaseUrl?: Redacted.Redacted<string>;
|
|
32
|
+
readonly applicationName?: string;
|
|
33
|
+
readonly changes?: Omit<PostgresChangesOptions, "client" | "resync">;
|
|
34
|
+
};
|
|
35
|
+
readonly migrations: {
|
|
36
|
+
readonly loader: Migrator.Loader<R>;
|
|
37
|
+
readonly table?: string;
|
|
38
|
+
readonly lockTimeout?: Duration.Input;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export declare function appDatabase<R>(options: AppDatabaseOptions<R>): Layer.Layer<AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient, Config.ConfigError | Migrator.MigrationError | import("effect/unstable/sql/SqlError").SqlError, Exclude<Exclude<R, import("effect/Scope").Scope>, PgClient.PgClient | import("effect/unstable/sql/SqlClient").SqlClient>>;
|
|
42
|
+
export interface AppHostOptions<TRpcs extends Rpc.Any, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations, TSession extends SessionShape> extends AppDatabaseOptions<TMigrations> {
|
|
43
|
+
readonly assets?: string;
|
|
44
|
+
readonly config?: AppDatabaseOptions<TMigrations>["config"] & {
|
|
45
|
+
readonly port?: number;
|
|
46
|
+
readonly host?: string;
|
|
47
|
+
readonly trustedProxy?: string;
|
|
48
|
+
};
|
|
49
|
+
readonly group: RpcGroup.RpcGroup<TRpcs>;
|
|
50
|
+
readonly handlers: Layer.Layer<THandlers, THandlerError, THandlerRequirements>;
|
|
51
|
+
readonly services: Layer.Layer<TServices, TServiceError, TServiceRequirements>;
|
|
52
|
+
readonly sessions: SessionPolicy<TSession>;
|
|
53
|
+
}
|
|
54
|
+
export declare function appHost<TRpcs extends Rpc.Any, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations, TSession extends SessionShape>(options: AppHostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations, TSession>): Layer.Layer<TServices | AppChanges | import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient | NodeServices.NodeServices, TServiceError | Config.ConfigError | Migrator.MigrationError | import("effect/PlatformError").PlatformError | import("effect/unstable/http/HttpServerError").ServeError | import("effect/unstable/sql/SqlError").SqlError | HttpRouter.Request.Without<THandlerError>, Exclude<Exclude<Exclude<TServiceRequirements, AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<import("effect/FileSystem").FileSystem, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<import("effect/unstable/http/HttpPlatform").HttpPlatform, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<import("effect/unstable/http/HttpServer").HttpServer, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<import("effect/Path").Path, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<TMigrations, import("effect/Scope").Scope>, PgClient.PgClient | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"GlobalRequires", Exclude<THandlerRequirements, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"GlobalRequires", Exclude<Exclude<HttpRouter.HttpRouter, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"GlobalRequires", Exclude<Exclude<RpcSerialization.RpcSerialization, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"GlobalRequires", Exclude<Exclude<Exclude<Rpc.ServicesServer<TRpcs>, import("effect/Scope").Scope>, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"GlobalRequires", Exclude<Exclude<Exclude<Rpc.ToHandler<TRpcs>, import("effect/Scope").Scope>, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"Requires", Exclude<THandlerRequirements, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"Requires", Exclude<Exclude<HttpRouter.HttpRouter, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"Requires", Exclude<Exclude<RpcSerialization.RpcSerialization, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"Requires", Exclude<Exclude<Exclude<Rpc.ServicesServer<TRpcs>, import("effect/Scope").Scope>, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Only<"Requires", Exclude<Exclude<Exclude<Rpc.ToHandler<TRpcs>, import("effect/Scope").Scope>, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.GlobalProvided>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Without<Exclude<THandlerRequirements, RpcSerialization.RpcSerialization>>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Without<Exclude<Exclude<HttpRouter.HttpRouter, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Without<Exclude<Exclude<RpcSerialization.RpcSerialization, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Without<Exclude<Exclude<Exclude<Rpc.ServicesServer<TRpcs>, import("effect/Scope").Scope>, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices> | Exclude<Exclude<Exclude<Exclude<HttpRouter.Request.Without<Exclude<Exclude<Exclude<Rpc.ToHandler<TRpcs>, import("effect/Scope").Scope>, THandlers | Authenticated | MaybeAuthenticated | RequestTracing>, RpcSerialization.RpcSerialization>>, HttpRouter.HttpRouter>, TServices | AppChanges | PgClient.PgClient | Reactivity.Reactivity | import("effect/unstable/sql/SqlClient").SqlClient>, import("effect/unstable/http/Etag").Generator | import("effect/unstable/http/HttpPlatform").HttpPlatform | import("effect/unstable/http/HttpServer").HttpServer | NodeServices.NodeServices>, NodeServices.NodeServices>>;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=appHost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appHost.d.ts","sourceRoot":"","sources":["../../src/server/appHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { NodeHttpServer, NodeServices } from "@effect/platform-node";
|
|
3
|
+
import * as PgClient from "@effect/sql-pg/PgClient";
|
|
4
|
+
import { Config, Context, Effect, Layer, Option } from "effect";
|
|
5
|
+
import { HttpRouter, HttpServerRequest, HttpStaticServer } from "effect/unstable/http";
|
|
6
|
+
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
7
|
+
import { RpcSerialization, RpcServer } from "effect/unstable/rpc";
|
|
8
|
+
import { makeLiveServer } from "@shivaedev/effect-contract/makeLiveServer.ts";
|
|
9
|
+
import { migratePostgres } from "@shivaedev/effect-sql/migrations.ts";
|
|
10
|
+
import { postgresChanges } from "@shivaedev/effect-sql/postgresChanges.ts";
|
|
11
|
+
import { localRpcGuard } from "#rpc-server/local.ts";
|
|
12
|
+
import { authenticatedLayer, maybeAuthenticatedLayer } from "#rpc-server/session.ts";
|
|
13
|
+
import { requestTracingLayer } from "#rpc-server/tracing.ts";
|
|
14
|
+
export class AppChanges extends Context.Service()("@shivaedev/platform/AppChanges") {
|
|
15
|
+
}
|
|
16
|
+
export function appDatabase(options) {
|
|
17
|
+
const pool = Layer.unwrap(Effect.gen(function* () {
|
|
18
|
+
const url = options.config?.databaseUrl ?? (yield* Config.redacted("DATABASE_URL"));
|
|
19
|
+
return PgClient.layer({
|
|
20
|
+
url,
|
|
21
|
+
...(options.config?.applicationName === undefined ? {} : { applicationName: options.config.applicationName }),
|
|
22
|
+
});
|
|
23
|
+
}));
|
|
24
|
+
const migrated = Layer.effectDiscard(migratePostgres({ ...options.migrations, lockTimeout: options.migrations.lockTimeout ?? "5 seconds" })).pipe(Layer.provideMerge(pool));
|
|
25
|
+
const live = Layer.effect(AppChanges, makeLiveServer).pipe(Layer.provideMerge(Reactivity.layer));
|
|
26
|
+
const base = Layer.merge(migrated, live);
|
|
27
|
+
const changes = options.config?.changes;
|
|
28
|
+
if (changes === undefined) {
|
|
29
|
+
return base;
|
|
30
|
+
}
|
|
31
|
+
return Layer.unwrap(Effect.gen(function* () {
|
|
32
|
+
const client = yield* PgClient.PgClient;
|
|
33
|
+
const hints = yield* AppChanges;
|
|
34
|
+
return postgresChanges({ ...changes, client, resync: hints.resync });
|
|
35
|
+
})).pipe(Layer.provideMerge(base));
|
|
36
|
+
}
|
|
37
|
+
export function appHost(options) {
|
|
38
|
+
// Named middleware types keep NodeNext declarations on the package aliases.
|
|
39
|
+
const middleware = Layer.mergeAll(authenticatedLayer(options.sessions), maybeAuthenticatedLayer(options.sessions), requestTracingLayer());
|
|
40
|
+
const routes = HttpRouter.use((router) => Effect.gen(function* () {
|
|
41
|
+
const trustedProxy = options.config?.trustedProxy ?? Option.getOrUndefined(yield* Config.string("TRUSTED_PROXY").pipe(Config.option));
|
|
42
|
+
const wire = yield* RpcSerialization.RpcSerialization;
|
|
43
|
+
const handler = yield* RpcServer.toHttpEffect(options.group);
|
|
44
|
+
yield* router.add("POST", "/rpc", (request) => localRpcGuard(handler, trustedProxy).pipe(Effect.provideService(HttpServerRequest.HttpServerRequest, request), Effect.provideService(RpcSerialization.RpcSerialization, wire)));
|
|
45
|
+
})).pipe(Layer.provide(Layer.merge(options.handlers, middleware)), Layer.provide(RpcSerialization.layerNdjson));
|
|
46
|
+
const assets = options.assets === undefined ? Layer.empty : HttpStaticServer.layer({ root: options.assets });
|
|
47
|
+
const application = options.services.pipe(Layer.provideMerge(appDatabase(options)));
|
|
48
|
+
const server = Layer.unwrap(Effect.gen(function* () {
|
|
49
|
+
const port = options.config?.port ?? (yield* Config.int("PORT").pipe(Config.withDefault(3000)));
|
|
50
|
+
const host = options.config?.host ?? (yield* Config.string("HOST").pipe(Config.withDefault("127.0.0.1")));
|
|
51
|
+
return NodeHttpServer.layer(createServer, { host, port });
|
|
52
|
+
}));
|
|
53
|
+
return HttpRouter.serve(Layer.merge(routes, assets), { disableLogger: true }).pipe(Layer.provideMerge(application), Layer.provideMerge(server), Layer.provide(NodeServices.layer));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=appHost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appHost.js","sourceRoot":"","sources":["../../src/server/appHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@ export interface EffectPrismaAdapterOptions {
|
|
|
6
6
|
readonly modelName?: (model: string) => string;
|
|
7
7
|
readonly usePlural?: boolean;
|
|
8
8
|
}
|
|
9
|
-
export declare function effectPrismaAdapter<
|
|
9
|
+
export declare function effectPrismaAdapter<TDatabase extends AnyDatabase, TServices, TBuildError>(databaseTag: TDatabase, runtime: PlatformRuntime<TServices, TBuildError>, adapterOptions?: EffectPrismaAdapterOptions): DBAdapterInstance;
|
|
10
10
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/server/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;AAGzD,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,SAAS,SAAS,WAAW,EAAE,SAAS,EAAE,WAAW,EACxF,WAAW,EAAE,SAAS,EACtB,OAAO,EAAE,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,EAChD,cAAc,CAAC,EAAE,0BAA0B,GACzC,iBAAiB,CAAC"}
|
|
@@ -1,28 +1,40 @@
|
|
|
1
1
|
import { createAdapterFactory } from "better-auth/adapters";
|
|
2
2
|
import { Effect } from "effect";
|
|
3
3
|
import { refineRelation } from "./relation.js";
|
|
4
|
-
import { makeRowAdapter } from "./
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { makeRowAdapter } from "./rowAdapter.js";
|
|
5
|
+
function isFunction(value, key) {
|
|
6
|
+
return ((typeof value === "object" && value !== null) || typeof value === "function") && typeof Reflect.get(value, key) === "function";
|
|
7
|
+
}
|
|
8
|
+
function isDynamicDatabase(value) {
|
|
9
|
+
return isFunction(value, "transaction");
|
|
10
|
+
}
|
|
11
|
+
function isDynamicRelation(value) {
|
|
12
|
+
return isFunction(value, "where") && isFunction(value, "select");
|
|
13
|
+
}
|
|
14
|
+
function modelRelation(database, model) {
|
|
9
15
|
const relation = Reflect.get(database, model);
|
|
10
16
|
if (!isDynamicRelation(relation)) {
|
|
11
17
|
throw new TypeError(`Unknown database model: ${model}`);
|
|
12
18
|
}
|
|
13
19
|
return relation;
|
|
14
|
-
}
|
|
15
|
-
|
|
20
|
+
}
|
|
21
|
+
function defaultModelName(model) {
|
|
22
|
+
return model.length === 0 ? model : `${model[0]?.toUpperCase()}${model.slice(1)}`;
|
|
23
|
+
}
|
|
16
24
|
export function effectPrismaAdapter(databaseTag, runtime, adapterOptions = {}) {
|
|
17
25
|
return (authOptions) => {
|
|
18
26
|
const mapModelName = adapterOptions.modelName ?? defaultModelName;
|
|
19
27
|
const databaseEffect = Effect.flatMap(databaseTag, (database) => isDynamicDatabase(database) ? Effect.succeed(database) : Effect.die(new TypeError("The database service has no transaction")));
|
|
20
|
-
|
|
28
|
+
function run(operation) {
|
|
29
|
+
return runtime.runPromise(Effect.flatMap(databaseEffect, operation));
|
|
30
|
+
}
|
|
21
31
|
const query = (model, refinement, use) => run((database) => use(refineRelation(modelRelation(database, mapModelName(model)), refinement)));
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
32
|
+
function inTransaction(callback) {
|
|
33
|
+
return Effect.flatMap(Effect.context(), (services) => Effect.tryPromise({
|
|
34
|
+
catch: (error) => error,
|
|
35
|
+
try: () => runtime.runWithServices(services, callback),
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
26
38
|
let factory;
|
|
27
39
|
factory = createAdapterFactory({
|
|
28
40
|
adapter: makeRowAdapter(query, adapterOptions.usePlural ?? false),
|
|
@@ -33,9 +45,9 @@ export function effectPrismaAdapter(databaseTag, runtime, adapterOptions = {}) {
|
|
|
33
45
|
supportsArrays: true,
|
|
34
46
|
supportsBooleans: true,
|
|
35
47
|
supportsDates: true,
|
|
36
|
-
supportsJSON: true,
|
|
48
|
+
"supportsJSON": true,
|
|
37
49
|
supportsNumericIds: true,
|
|
38
|
-
supportsUUIDs: true,
|
|
50
|
+
"supportsUUIDs": true,
|
|
39
51
|
transaction: (callback) => run((database) => database.transaction(inTransaction(() => callback(factory(authOptions))))),
|
|
40
52
|
},
|
|
41
53
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/server/better-auth/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import type { Effect, Option } from "effect";
|
|
2
2
|
import { type CleanedWhere, type DynamicField, type Expression } from "./where.ts";
|
|
3
|
-
export interface DynamicRelation<
|
|
4
|
-
count: () => Effect.Effect<number, unknown,
|
|
5
|
-
create: (data: Record<string, unknown>) => Effect.Effect<Record<string, unknown>, unknown,
|
|
6
|
-
delete: () => Effect.Effect<Record<string, unknown> | null, unknown,
|
|
7
|
-
deleteAll: () => Effect.Effect<readonly Record<string, unknown>[], unknown,
|
|
8
|
-
first: () => Effect.Effect<Option.Option<Record<string, unknown>>, unknown,
|
|
9
|
-
orderBy: (ordering: (fields: Record<string, DynamicField>) => unknown) => DynamicRelation<
|
|
10
|
-
select: (...fields: readonly string[]) => DynamicRelation<
|
|
11
|
-
skip: (count: number) => DynamicRelation<
|
|
12
|
-
take: (count: number) => DynamicRelation<
|
|
13
|
-
update: (data: Record<string, unknown>) => Effect.Effect<Record<string, unknown> | null, unknown,
|
|
14
|
-
updateAll: (data: Record<string, unknown>) => Effect.Effect<readonly Record<string, unknown>[], unknown,
|
|
15
|
-
where: (predicate: (fields: Record<string, DynamicField>) => Expression) => DynamicRelation<
|
|
3
|
+
export interface DynamicRelation<TRequirements> extends Effect.Effect<readonly Record<string, unknown>[], unknown, TRequirements> {
|
|
4
|
+
count: () => Effect.Effect<number, unknown, TRequirements>;
|
|
5
|
+
create: (data: Record<string, unknown>) => Effect.Effect<Record<string, unknown>, unknown, TRequirements>;
|
|
6
|
+
delete: () => Effect.Effect<Record<string, unknown> | null, unknown, TRequirements>;
|
|
7
|
+
deleteAll: () => Effect.Effect<readonly Record<string, unknown>[], unknown, TRequirements>;
|
|
8
|
+
first: () => Effect.Effect<Option.Option<Record<string, unknown>>, unknown, TRequirements>;
|
|
9
|
+
orderBy: (ordering: (fields: Record<string, DynamicField>) => unknown) => DynamicRelation<TRequirements>;
|
|
10
|
+
select: (...fields: readonly string[]) => DynamicRelation<TRequirements>;
|
|
11
|
+
skip: (count: number) => DynamicRelation<TRequirements>;
|
|
12
|
+
take: (count: number) => DynamicRelation<TRequirements>;
|
|
13
|
+
update: (data: Record<string, unknown>) => Effect.Effect<Record<string, unknown> | null, unknown, TRequirements>;
|
|
14
|
+
updateAll: (data: Record<string, unknown>) => Effect.Effect<readonly Record<string, unknown>[], unknown, TRequirements>;
|
|
15
|
+
where: (predicate: (fields: Record<string, DynamicField>) => Expression) => DynamicRelation<TRequirements>;
|
|
16
16
|
}
|
|
17
|
-
export declare
|
|
17
|
+
export declare function refineRelation<TRequirements>(relation: DynamicRelation<TRequirements>, options: {
|
|
18
18
|
readonly where?: readonly CleanedWhere[] | undefined;
|
|
19
19
|
readonly select?: readonly string[] | undefined;
|
|
20
20
|
readonly limit?: number | undefined;
|
|
@@ -23,5 +23,5 @@ export declare const refineRelation: <Requirements>(relation: DynamicRelation<Re
|
|
|
23
23
|
readonly direction: "asc" | "desc";
|
|
24
24
|
readonly field: string;
|
|
25
25
|
} | undefined;
|
|
26
|
-
})
|
|
26
|
+
}): DynamicRelation<TRequirements>;
|
|
27
27
|
//# sourceMappingURL=relation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../../src/server/better-auth/relation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { all } from "@prisma-next/sql-orm-client";
|
|
2
2
|
import { whereExpression } from "./where.js";
|
|
3
|
-
export
|
|
3
|
+
export function refineRelation(relation, options) {
|
|
4
4
|
let refined = relation;
|
|
5
5
|
if (options.where !== undefined) {
|
|
6
6
|
refined = refined.where((fields) => {
|
|
@@ -27,5 +27,5 @@ export const refineRelation = (relation, options) => {
|
|
|
27
27
|
refined = refined.select(...options.select);
|
|
28
28
|
}
|
|
29
29
|
return refined;
|
|
30
|
-
}
|
|
30
|
+
}
|
|
31
31
|
//# sourceMappingURL=relation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../../src/server/better-auth/relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD,OAAO,EAAyD,eAAe,EAAE,MAAM,YAAY,CAAC;AAepG,MAAM,UAAU,cAAc,CAC7B,QAAwC,EACxC,OAWC;IAED,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"}
|
|
@@ -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 = <TValue>(model: string, refinement: Refinement, use: (relation: DynamicRelation<unknown>) => Effect.Effect<TValue, unknown, unknown>) => Promise<TValue>;
|
|
6
|
+
export declare function makeRowAdapter(query: RelationQuery, usePlural: boolean): AdapterFactoryCustomizeAdapterCreator;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=rowAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowAdapter.d.ts","sourceRoot":"","sources":["../../../src/server/better-auth/rowAdapter.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;AAOvD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAClC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAChF,OAAO,CAAC,MAAM,CAAC,CAAC;AAcrB,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,GAAG,qCAAqC,CA0C9G"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Effect, Option } from "effect";
|
|
2
|
+
function rowTyped(adapter) {
|
|
3
|
+
return adapter;
|
|
4
|
+
}
|
|
5
|
+
function 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
|
+
function namesId(condition) {
|
|
11
|
+
return condition.connector !== "OR" && condition.field === "id" && condition.operator === "eq";
|
|
12
|
+
}
|
|
13
|
+
export function makeRowAdapter(query, usePlural) {
|
|
14
|
+
return ({ debugLog, getFieldAttributes }) => {
|
|
15
|
+
function isUnique(model, condition) {
|
|
16
|
+
return (condition.connector !== "OR"
|
|
17
|
+
&& condition.operator === "eq"
|
|
18
|
+
&& condition.mode !== "insensitive"
|
|
19
|
+
&& (condition.field === "id" || getFieldAttributes({ field: condition.field, model }).unique === true));
|
|
20
|
+
}
|
|
21
|
+
return rowTyped({
|
|
22
|
+
count: ({ model, where }) => query(model, { where }, (relation) => relation.count()),
|
|
23
|
+
create: ({ data, model, select }) => {
|
|
24
|
+
debugLog("create", { model });
|
|
25
|
+
return query(model, { select }, (relation) => relation.create(data));
|
|
26
|
+
},
|
|
27
|
+
delete: ({ model, where }) => {
|
|
28
|
+
const byId = where.some(namesId);
|
|
29
|
+
return query(model, { where }, (relation) => (byId ? Effect.asVoid(relation.delete()) : Effect.asVoid(relation.deleteAll())));
|
|
30
|
+
},
|
|
31
|
+
deleteMany: ({ model, where }) => query(model, { where }, (relation) => Effect.map(relation.deleteAll(), (rows) => rows.length)),
|
|
32
|
+
findMany: ({ join, limit, model, offset, select, sortBy, where }) => {
|
|
33
|
+
rejectJoin(join);
|
|
34
|
+
return query(model, { limit, offset, select, sortBy, where }, (relation) => relation);
|
|
35
|
+
},
|
|
36
|
+
findOne: ({ join, model, select, where }) => {
|
|
37
|
+
rejectJoin(join);
|
|
38
|
+
return query(model, { select, where }, (relation) => Effect.map(relation.first(), Option.getOrNull));
|
|
39
|
+
},
|
|
40
|
+
options: { usePlural },
|
|
41
|
+
update: ({ model, update, where }) => {
|
|
42
|
+
if (where.length === 0) {
|
|
43
|
+
return Promise.resolve(null);
|
|
44
|
+
}
|
|
45
|
+
const unique = where.some((condition) => isUnique(model, condition));
|
|
46
|
+
return query(model, { where }, (relation) => unique ? relation.update(update) : Effect.map(relation.updateAll(update), (rows) => rows[0] ?? null));
|
|
47
|
+
},
|
|
48
|
+
updateMany: ({ model, update, where }) => query(model, { where }, (relation) => Effect.map(relation.updateAll(update), (rows) => rows.length)),
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=rowAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowAdapter.js","sourceRoot":"","sources":["../../../src/server/better-auth/rowAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,5 +18,5 @@ export interface DynamicField {
|
|
|
18
18
|
neq: (value: unknown) => Expression;
|
|
19
19
|
notIn: (value: readonly unknown[]) => Expression;
|
|
20
20
|
}
|
|
21
|
-
export declare
|
|
21
|
+
export declare function whereExpression(fields: Record<string, DynamicField>, where: readonly CleanedWhere[]): Expression | undefined;
|
|
22
22
|
//# sourceMappingURL=where.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where.d.ts","sourceRoot":"","sources":["../../../src/server/better-auth/where.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAW,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACxD,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;AAkFD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,UAAU,GAAG,SAAS,CAqB5H"}
|
|
@@ -1,43 +1,47 @@
|
|
|
1
1
|
import { all, and, not, or } from "@prisma-next/sql-orm-client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
function escapeLike(value) {
|
|
3
|
+
return value.replaceAll("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_");
|
|
4
|
+
}
|
|
5
|
+
function nonNullValues(value) {
|
|
6
|
+
return (Array.isArray(value) ? value : [value]).filter((item) => item !== null);
|
|
7
|
+
}
|
|
8
|
+
function insensitiveStrings(field, where, values) {
|
|
5
9
|
const ilike = field.ilike;
|
|
6
10
|
if (where.mode !== "insensitive" || ilike === undefined || !values.every((item) => typeof item === "string")) {
|
|
7
11
|
return undefined;
|
|
8
12
|
}
|
|
9
13
|
return values.map((item) => ilike(escapeLike(String(item))));
|
|
10
|
-
}
|
|
11
|
-
|
|
14
|
+
}
|
|
15
|
+
function membership(field, where) {
|
|
12
16
|
const values = nonNullValues(where.value);
|
|
13
17
|
if (values.length === 0) {
|
|
14
18
|
return and(field.isNull(), field.isNotNull());
|
|
15
19
|
}
|
|
16
20
|
const matches = insensitiveStrings(field, where, values);
|
|
17
21
|
return matches === undefined ? field.in(values) : or(...matches);
|
|
18
|
-
}
|
|
19
|
-
|
|
22
|
+
}
|
|
23
|
+
function exclusion(field, where) {
|
|
20
24
|
const values = nonNullValues(where.value);
|
|
21
25
|
if (values.length === 0) {
|
|
22
26
|
return undefined;
|
|
23
27
|
}
|
|
24
28
|
const matches = insensitiveStrings(field, where, values);
|
|
25
29
|
return matches === undefined ? field.notIn(values) : and(...matches.map((match) => not(match)));
|
|
26
|
-
}
|
|
27
|
-
|
|
30
|
+
}
|
|
31
|
+
function likePattern(operator, escaped) {
|
|
28
32
|
if (operator === "contains") {
|
|
29
33
|
return `%${escaped}%`;
|
|
30
34
|
}
|
|
31
35
|
return operator === "starts_with" ? `${escaped}%` : `%${escaped}`;
|
|
32
|
-
}
|
|
33
|
-
|
|
36
|
+
}
|
|
37
|
+
function pattern(field, where) {
|
|
34
38
|
if (typeof where.value !== "string") {
|
|
35
39
|
throw new TypeError(`${where.operator} requires a string value`);
|
|
36
40
|
}
|
|
37
41
|
const text = likePattern(where.operator, escapeLike(where.value));
|
|
38
42
|
return where.mode === "insensitive" && field.ilike !== undefined ? field.ilike(text) : field.like(text);
|
|
39
|
-
}
|
|
40
|
-
|
|
43
|
+
}
|
|
44
|
+
function insensitiveEquality(field, where) {
|
|
41
45
|
const value = where.value;
|
|
42
46
|
const operator = where.operator ?? "eq";
|
|
43
47
|
if (where.mode !== "insensitive" || typeof value !== "string" || field.ilike === undefined) {
|
|
@@ -50,8 +54,8 @@ const insensitiveEquality = (field, where) => {
|
|
|
50
54
|
return not(field.ilike(escapeLike(value)));
|
|
51
55
|
}
|
|
52
56
|
return undefined;
|
|
53
|
-
}
|
|
54
|
-
|
|
57
|
+
}
|
|
58
|
+
function comparison(field, where) {
|
|
55
59
|
const value = where.value;
|
|
56
60
|
switch (where.operator ?? "eq") {
|
|
57
61
|
case "eq":
|
|
@@ -75,8 +79,8 @@ const comparison = (field, where) => {
|
|
|
75
79
|
case "ends_with":
|
|
76
80
|
return pattern(field, where);
|
|
77
81
|
}
|
|
78
|
-
}
|
|
79
|
-
export
|
|
82
|
+
}
|
|
83
|
+
export function whereExpression(fields, where) {
|
|
80
84
|
const conjunctions = [];
|
|
81
85
|
const disjunctions = [];
|
|
82
86
|
for (const condition of where) {
|
|
@@ -97,5 +101,5 @@ export const whereExpression = (fields, where) => {
|
|
|
97
101
|
return all();
|
|
98
102
|
}
|
|
99
103
|
return conjunctions.length === 1 ? conjunctions[0] : and(...conjunctions);
|
|
100
|
-
}
|
|
104
|
+
}
|
|
101
105
|
//# sourceMappingURL=where.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../../src/server/better-auth/where.ts"],"names":[],"mappings":"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"}
|
package/dist/{node-http/subscription-signal.d.ts → server/node-http/subscriptionSignal.d.ts}
RENAMED
|
@@ -8,5 +8,5 @@ export interface NodeSubscriptionSignal {
|
|
|
8
8
|
readonly dispose: () => void;
|
|
9
9
|
readonly signal: AbortSignal;
|
|
10
10
|
}
|
|
11
|
-
export declare
|
|
12
|
-
//# sourceMappingURL=
|
|
11
|
+
export declare function nodeSubscriptionSignal(options: NodeSubscriptionSignalOptions): NodeSubscriptionSignal;
|
|
12
|
+
//# sourceMappingURL=subscriptionSignal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptionSignal.d.ts","sourceRoot":"","sources":["../../../src/server/node-http/subscriptionSignal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,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;AACD,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC7B;AAYD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB,CA0CrG"}
|