@shivaedev/contract 0.17.0 → 0.19.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.
- package/CHANGELOG.md +34 -0
- package/README.md +68 -32
- package/dist/automaticLive.d.ts +2 -2
- package/dist/automaticLive.d.ts.map +1 -1
- package/dist/automaticLive.js +4 -3
- package/dist/automaticLive.js.map +1 -1
- package/dist/bind.d.ts +11 -2
- package/dist/bind.d.ts.map +1 -1
- package/dist/bind.js +9 -0
- package/dist/bind.js.map +1 -1
- package/dist/clientOptions.d.ts +23 -0
- package/dist/clientOptions.d.ts.map +1 -0
- package/dist/clientOptions.js +2 -0
- package/dist/clientOptions.js.map +1 -0
- package/dist/contract.d.ts +4 -2
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +6 -5
- package/dist/contract.js.map +1 -1
- package/dist/internal/bindingOwner.d.ts +1 -1
- package/dist/internal/bindingOwner.d.ts.map +1 -1
- package/dist/internal/clientOperations.d.ts.map +1 -1
- package/dist/internal/clientOperations.js +26 -7
- package/dist/internal/clientOperations.js.map +1 -1
- package/dist/internal/httpClient.d.ts +21 -0
- package/dist/internal/httpClient.d.ts.map +1 -0
- package/dist/internal/httpClient.js +13 -0
- package/dist/internal/httpClient.js.map +1 -0
- package/dist/internal/operationDeclaration.d.ts +19 -0
- package/dist/internal/operationDeclaration.d.ts.map +1 -0
- package/dist/internal/operationDeclaration.js +20 -0
- package/dist/internal/operationDeclaration.js.map +1 -0
- package/dist/internal/queryHints.d.ts +8 -0
- package/dist/internal/queryHints.d.ts.map +1 -0
- package/dist/internal/queryHints.js +34 -0
- package/dist/internal/queryHints.js.map +1 -0
- package/dist/live.d.ts +7 -1
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +2 -2
- package/dist/live.js.map +1 -1
- package/dist/makeLiveServer.d.ts +27 -1
- package/dist/makeLiveServer.d.ts.map +1 -1
- package/dist/makeLiveServer.js +15 -8
- package/dist/makeLiveServer.js.map +1 -1
- package/dist/operation.d.ts +13 -9
- package/dist/operation.d.ts.map +1 -1
- package/dist/operation.js +5 -19
- package/dist/operation.js.map +1 -1
- package/dist/publicConfig.d.ts +9 -3
- package/dist/publicConfig.d.ts.map +1 -1
- package/dist/publicConfig.js +2 -1
- package/dist/publicConfig.js.map +1 -1
- package/dist/querySubscription.d.ts +15 -0
- package/dist/querySubscription.d.ts.map +1 -0
- package/dist/querySubscription.js +10 -0
- package/dist/querySubscription.js.map +1 -0
- package/dist/readPolicy.d.ts +11 -6
- package/dist/readPolicy.d.ts.map +1 -1
- package/dist/readPolicy.js +16 -19
- package/dist/readPolicy.js.map +1 -1
- package/dist/readPolicyErrors.d.ts +13 -0
- package/dist/readPolicyErrors.d.ts.map +1 -0
- package/dist/readPolicyErrors.js +6 -0
- package/dist/readPolicyErrors.js.map +1 -0
- package/dist/serverMetadata.d.ts +29 -11
- package/dist/serverMetadata.d.ts.map +1 -1
- package/dist/serverMetadata.js +19 -12
- package/dist/serverMetadata.js.map +1 -1
- package/dist/testing.d.ts +51 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +17 -0
- package/dist/testing.js.map +1 -0
- package/package.json +6 -5
- package/src/automaticLive.ts +8 -3
- package/src/bind.ts +45 -3
- package/src/clientOptions.ts +35 -0
- package/src/contract.ts +11 -6
- package/src/internal/bindingOwner.ts +1 -1
- package/src/internal/clientOperations.ts +30 -11
- package/src/internal/httpClient.ts +21 -0
- package/src/internal/operationDeclaration.ts +28 -0
- package/src/internal/queryHints.ts +38 -0
- package/src/live.ts +2 -2
- package/src/makeLiveServer.ts +18 -12
- package/src/operation.ts +27 -37
- package/src/publicConfig.ts +2 -2
- package/src/querySubscription.ts +21 -0
- package/src/readPolicy.ts +23 -23
- package/src/readPolicyErrors.ts +4 -0
- package/src/serverMetadata.ts +35 -19
- package/src/testing.ts +41 -0
- package/dist/internal/makeHintPolicy.d.ts +0 -4
- package/dist/internal/makeHintPolicy.d.ts.map +0 -1
- package/dist/internal/makeHintPolicy.js +0 -25
- package/dist/internal/makeHintPolicy.js.map +0 -1
- package/dist/keys.d.ts +0 -34
- package/dist/keys.d.ts.map +0 -1
- package/dist/keys.js +0 -25
- package/dist/keys.js.map +0 -1
- package/src/internal/makeHintPolicy.ts +0 -40
- package/src/keys.ts +0 -62
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { Effect, Stream } from "effect";
|
|
1
|
+
import { Effect, Option, Stream } from "effect";
|
|
2
2
|
import * as AtomRegistry from "effect/reactivity/AtomRegistry";
|
|
3
3
|
import * as Reactivity from "effect/reactivity/Reactivity";
|
|
4
|
-
import { invalidationKeys, readKeys } from "
|
|
4
|
+
import { invalidationKeys, readKeys } from "@shivaedev/changes/keys.ts";
|
|
5
|
+
import { MissingReadPolicy } from "#readPolicyErrors.ts";
|
|
5
6
|
import { queryReactivity } from "./queryReactivity.js";
|
|
7
|
+
const queryIds = new WeakMap();
|
|
8
|
+
let nextQueryId = 0;
|
|
6
9
|
function run(service, effect, owner) {
|
|
7
10
|
return owner === undefined ? effect : Effect.suspend(() => AtomRegistry.getResult(owner.registry, service.runtime.atom(effect)));
|
|
8
11
|
}
|
|
@@ -10,22 +13,38 @@ export function boundQuery(service, tag, query, track, owner) {
|
|
|
10
13
|
const reactive = queryReactivity(service.runtime);
|
|
11
14
|
return {
|
|
12
15
|
query: (payload, options = {}) => {
|
|
16
|
+
if (query.readPolicy === undefined) {
|
|
17
|
+
return service.runtime.atom(Effect.fail(new MissingReadPolicy({ message: `Declare a readPolicy on query ${query.name} before running it live or subscribing` })));
|
|
18
|
+
}
|
|
13
19
|
const atom = service.query(tag, payload, options);
|
|
14
|
-
|
|
20
|
+
let id = queryIds.get(atom);
|
|
21
|
+
if (id === undefined) {
|
|
22
|
+
id = nextQueryId;
|
|
23
|
+
nextQueryId += 1;
|
|
24
|
+
queryIds.set(atom, id);
|
|
25
|
+
}
|
|
26
|
+
const local = query.reads(payload, Option.none());
|
|
27
|
+
const keys = [...local, { _tag: "List", collection: `@query/${tag}/${id}` }];
|
|
28
|
+
const dependencies = local.length === 0 ? [...keys, { _tag: "List", collection: `@query/${tag.slice(0, tag.lastIndexOf("."))}` }] : keys;
|
|
15
29
|
const reference = { payload, query: query.name };
|
|
16
30
|
if (owner === undefined) {
|
|
17
31
|
track(undefined, reference, keys);
|
|
18
32
|
}
|
|
19
|
-
return reactive(atom, readKeys(
|
|
33
|
+
return reactive(atom, readKeys(dependencies, owner?.context), (registry) => (owner === undefined ? () => undefined : track(registry, reference, keys)), owner?.registry);
|
|
20
34
|
},
|
|
21
35
|
run: (payload) => run(service, service.use((client) => client(tag, payload)), owner),
|
|
22
36
|
};
|
|
23
37
|
}
|
|
24
38
|
export function boundCommand(service, tag, command, owner) {
|
|
39
|
+
function invalidate(payload, result) {
|
|
40
|
+
const keys = [
|
|
41
|
+
...command.invalidates(payload, result),
|
|
42
|
+
{ _tag: "List", collection: `@query/${tag.slice(0, tag.lastIndexOf("."))}` },
|
|
43
|
+
];
|
|
44
|
+
return Reactivity.invalidate(invalidationKeys(keys, owner?.context));
|
|
45
|
+
}
|
|
25
46
|
return {
|
|
26
|
-
run: (payload) => run(service, service
|
|
27
|
-
.use((client) => client(tag, payload))
|
|
28
|
-
.pipe(Effect.tap((result) => Reactivity.invalidate(invalidationKeys(command.invalidates(payload, result), owner?.context)))), owner),
|
|
47
|
+
run: (payload) => run(service, service.use((client) => client(tag, payload)).pipe(Effect.tap((result) => invalidate(payload, result))), owner),
|
|
29
48
|
};
|
|
30
49
|
}
|
|
31
50
|
export function boundStream(service, tag) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientOperations.js","sourceRoot":"","sources":["../../src/internal/clientOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"clientOperations.js","sourceRoot":"","sources":["../../src/internal/clientOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Context, Effect, Layer } from "effect";
|
|
2
|
+
import * as AtomRpc from "effect/reactivity/AtomRpc";
|
|
3
|
+
import { type Rpc } from "effect/rpc";
|
|
4
|
+
import type { ClientOptions } from "#clientOptions.ts";
|
|
5
|
+
export interface HttpGroup {
|
|
6
|
+
readonly annotations: Context.Context<never>;
|
|
7
|
+
readonly requests: ReadonlyMap<string, Rpc.Any>;
|
|
8
|
+
}
|
|
9
|
+
export declare function httpClient(name: string, source: HttpGroup, options: ClientOptions): Layer.Layer<unknown, never, never> & {
|
|
10
|
+
Client: AtomRpc.AtomRpcClient<unknown, `${string}/Client`, Rpc.Any>;
|
|
11
|
+
client: Effect.Effect<{
|
|
12
|
+
readonly [x: string]: <const AsQueue extends boolean = false, const Discard = false>(input: never, options?: {
|
|
13
|
+
readonly asQueue?: AsQueue | undefined;
|
|
14
|
+
readonly streamBufferSize?: number | undefined;
|
|
15
|
+
readonly headers?: import("effect/http/Headers").Input | undefined;
|
|
16
|
+
readonly context?: Context.Context<never> | undefined;
|
|
17
|
+
} | undefined) => never;
|
|
18
|
+
}, never, import("effect/Scope").Scope>;
|
|
19
|
+
runtime: import("effect/reactivity/Atom").AtomRuntime<unknown, never>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=httpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../src/internal/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAErD,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,KAAK,GAAG,EAAyC,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAChD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa;;;;;;;;;;;EASjF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect, Layer } from "effect";
|
|
2
|
+
import { FetchHttpClient } from "effect/http";
|
|
3
|
+
import * as AtomRpc from "effect/reactivity/AtomRpc";
|
|
4
|
+
import { RpcClient, RpcGroup, RpcSerialization } from "effect/rpc";
|
|
5
|
+
export function httpClient(name, source, options) {
|
|
6
|
+
const group = RpcGroup.make(...source.requests.values()).annotateMerge(source.annotations);
|
|
7
|
+
const protocol = RpcClient.layerProtocolHttp(options).pipe(Layer.provide([options.httpClient ?? FetchHttpClient.layer, options.serialization ?? RpcSerialization.layerNdjson]));
|
|
8
|
+
const Client = AtomRpc.Service()(`${name}/Client`, { group, protocol });
|
|
9
|
+
const client = RpcClient.make(group).pipe(Effect.provide(protocol));
|
|
10
|
+
const layer = Layer.effect(Client, RpcClient.make(group, { flatten: true })).pipe(Layer.provide(protocol));
|
|
11
|
+
return Object.assign(layer, { Client, client, runtime: Client.runtime });
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=httpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/internal/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAY,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAQ7E,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,MAAiB,EAAE,OAAsB;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CACzD,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CACnH,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAW,CAAC,GAAG,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3G,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import type { OperationShape } from "#operation.ts";
|
|
3
|
+
import { type RejectionSpecs } from "#rejection.ts";
|
|
4
|
+
export interface Loose {
|
|
5
|
+
readonly payload?: Schema.Top | Schema.Struct.Fields;
|
|
6
|
+
readonly rejections?: RejectionSpecs;
|
|
7
|
+
readonly success?: Schema.Top;
|
|
8
|
+
}
|
|
9
|
+
export declare function operation<TKind extends OperationShape["kind"]>(kind: TKind, name: string, declaration: Loose): {
|
|
10
|
+
error: Schema.Union<readonly never[]>;
|
|
11
|
+
Rejection: import("#rejection.ts").Rejections<RejectionSpecs>;
|
|
12
|
+
reject: import("#rejection.ts").Reject<RejectionSpecs>;
|
|
13
|
+
kind: TKind;
|
|
14
|
+
name: string;
|
|
15
|
+
payload: Schema.Top;
|
|
16
|
+
rejections: RejectionSpecs;
|
|
17
|
+
success: Schema.Top | Schema.Void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=operationDeclaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationDeclaration.d.ts","sourceRoot":"","sources":["../../src/internal/operationDeclaration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,eAAe,CAAC;AAElE,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;CAC9B;AASD,wBAAgB,SAAS,CAAC,KAAK,SAAS,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK;;;;;;;;;EAU5G"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { rejectionSet } from "#rejection.ts";
|
|
3
|
+
function payloadSchema(payload) {
|
|
4
|
+
if (payload === undefined) {
|
|
5
|
+
return Schema.Void;
|
|
6
|
+
}
|
|
7
|
+
return Schema.isSchema(payload) ? payload : Schema.Struct(payload);
|
|
8
|
+
}
|
|
9
|
+
export function operation(kind, name, declaration) {
|
|
10
|
+
const { payload, success, rejections = {} } = declaration;
|
|
11
|
+
return {
|
|
12
|
+
kind,
|
|
13
|
+
name,
|
|
14
|
+
payload: payloadSchema(payload),
|
|
15
|
+
rejections,
|
|
16
|
+
success: success ?? Schema.Void,
|
|
17
|
+
...rejectionSet(rejections),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=operationDeclaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationDeclaration.js","sourceRoot":"","sources":["../../src/internal/operationDeclaration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAuB,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlE,SAAS,aAAa,CAAC,OAAyB;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,SAAS,CAAuC,IAAW,EAAE,IAAY,EAAE,WAAkB;IAC5G,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC;IAC1D,OAAO;QACN,IAAI;QACJ,IAAI;QACJ,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;QAC/B,UAAU;QACV,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI;QAC/B,GAAG,YAAY,CAAC,UAAU,CAAC;KAC3B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Key } from "@shivaedev/changes/keys.ts";
|
|
2
|
+
import type { LiveHint } from "#live.ts";
|
|
3
|
+
export declare function localQueryKeys(keys: readonly Key[]): Key[];
|
|
4
|
+
export declare function queryHint(hint: LiveHint, tracked: readonly {
|
|
5
|
+
readonly keys: readonly Key[];
|
|
6
|
+
}[]): LiveHint;
|
|
7
|
+
export declare function changedHint(keys: readonly Key[], scopes?: readonly (readonly Key[])[]): LiveHint;
|
|
8
|
+
//# sourceMappingURL=queryHints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryHints.d.ts","sourceRoot":"","sources":["../../src/internal/queryHints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,GAAG,EAAY,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,SAElD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,EAAE,GAAG,QAAQ,CAmBzG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,QAAQ,CAShG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { invalidationKeys, readKeys } from "@shivaedev/changes/keys.ts";
|
|
2
|
+
export function localQueryKeys(keys) {
|
|
3
|
+
return keys.filter((key) => key.collection.startsWith("@query/"));
|
|
4
|
+
}
|
|
5
|
+
export function queryHint(hint, tracked) {
|
|
6
|
+
if (hint._tag === "Resync") {
|
|
7
|
+
return hint;
|
|
8
|
+
}
|
|
9
|
+
const invalidated = invalidationKeys(hint.keys);
|
|
10
|
+
return {
|
|
11
|
+
_tag: "Changed",
|
|
12
|
+
keys: [
|
|
13
|
+
...hint.keys,
|
|
14
|
+
...tracked.flatMap(({ keys }, index) => {
|
|
15
|
+
const local = keys.filter((key) => !key.collection.startsWith("@query/"));
|
|
16
|
+
const affected = hint.queryIndexes === undefined
|
|
17
|
+
? local.length === 0 || hint.keys.some((key) => key._tag === "Bucket") || readKeys(local).some((key) => invalidated.includes(key))
|
|
18
|
+
: hint.queryIndexes.includes(index);
|
|
19
|
+
return affected ? localQueryKeys(keys) : [];
|
|
20
|
+
}),
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function changedHint(keys, scopes) {
|
|
25
|
+
const changed = new Set(keys.map((key) => JSON.stringify(key)));
|
|
26
|
+
return {
|
|
27
|
+
_tag: "Changed",
|
|
28
|
+
keys,
|
|
29
|
+
...(scopes === undefined
|
|
30
|
+
? {}
|
|
31
|
+
: { queryIndexes: scopes.flatMap((scope, index) => (scope.some((key) => changed.has(JSON.stringify(key))) ? [index] : [])) }),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=queryHints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryHints.js","sourceRoot":"","sources":["../../src/internal/queryHints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAY,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGlF,MAAM,UAAU,cAAc,CAAC,IAAoB;IAClD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,OAAqD;IAC9F,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO;QACN,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1E,MAAM,QAAQ,GACb,IAAI,CAAC,YAAY,KAAK,SAAS;oBAC9B,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAClI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,CAAC,CAAC;SACF;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAoB,EAAE,MAAoC;IACrF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO;QACN,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,GAAG,CAAC,MAAM,KAAK,SAAS;YACvB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;KAC9H,CAAC;AACH,CAAC"}
|
package/dist/live.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { type Cause, Duration, Option, Schema, Stream } from "effect";
|
|
2
2
|
import * as Atom from "effect/reactivity/Atom";
|
|
3
3
|
import type * as AtomRegistry from "effect/reactivity/AtomRegistry";
|
|
4
|
-
import { Key, type KeyContext } from "
|
|
4
|
+
import { Key, type KeyContext } from "@shivaedev/changes/keys.ts";
|
|
5
5
|
export declare const LiveHint: Schema.Union<readonly [Schema.Struct<{
|
|
6
6
|
readonly _tag: Schema.Literal<"Changed">;
|
|
7
7
|
readonly keys: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
|
|
8
|
+
readonly _tag: Schema.Literal<"Bucket">;
|
|
9
|
+
readonly collection: Schema.String;
|
|
10
|
+
readonly field: Schema.String;
|
|
11
|
+
readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
|
|
12
|
+
}>, Schema.Struct<{
|
|
8
13
|
readonly _tag: Schema.Literal<"List">;
|
|
9
14
|
readonly collection: Schema.String;
|
|
10
15
|
}>, Schema.Struct<{
|
|
@@ -12,6 +17,7 @@ export declare const LiveHint: Schema.Union<readonly [Schema.Struct<{
|
|
|
12
17
|
readonly collection: Schema.String;
|
|
13
18
|
readonly id: Schema.Union<readonly [Schema.String, Schema.Number]>;
|
|
14
19
|
}>]>>;
|
|
20
|
+
readonly queryIndexes: Schema.optional<Schema.$Array<Schema.Number>>;
|
|
15
21
|
}>, Schema.Struct<{
|
|
16
22
|
readonly _tag: Schema.Literal<"Resync">;
|
|
17
23
|
}>]>;
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,KAAK,YAAY,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAoB,GAAG,EAAE,KAAK,UAAU,EAAY,MAAM,4BAA4B,CAAC;AAG9F,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;IAGnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,GAAG,cAAc,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC;IAChG,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C;AAID,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;EA4FhH"}
|
package/dist/live.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Duration, Effect, Option, Schema, Stream } from "effect";
|
|
2
2
|
import * as Atom from "effect/reactivity/Atom";
|
|
3
3
|
import * as Reactivity from "effect/reactivity/Reactivity";
|
|
4
|
+
import { invalidationKeys, Key, readKeys } from "@shivaedev/changes/keys.ts";
|
|
4
5
|
import { invalidateLive } from "#internal/liveInvalidation.ts";
|
|
5
|
-
import { invalidationKeys, Key, readKeys } from "#keys.ts";
|
|
6
6
|
export const LiveHint = Schema.Union([
|
|
7
|
-
Schema.Struct({ _tag: Schema.Literal("Changed"), keys: Schema.Array(Key) }),
|
|
7
|
+
Schema.Struct({ _tag: Schema.Literal("Changed"), keys: Schema.Array(Key), queryIndexes: Schema.optional(Schema.Array(Schema.Number)) }),
|
|
8
8
|
Schema.Struct({ _tag: Schema.Literal("Resync") }),
|
|
9
9
|
]);
|
|
10
10
|
const MAX_PENDING = 256;
|
package/dist/live.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAE/C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
package/dist/makeLiveServer.d.ts
CHANGED
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import { Effect, Stream } from "effect";
|
|
2
2
|
import * as Reactivity from "effect/reactivity/Reactivity";
|
|
3
|
-
import { type Key, type KeyContext } from "
|
|
3
|
+
import { type Key, type KeyContext } from "@shivaedev/changes/keys.ts";
|
|
4
|
+
import type { QuerySubscription } from "#querySubscription.ts";
|
|
4
5
|
export declare const makeLiveServer: Effect.Effect<{
|
|
5
6
|
resync: Effect.Effect<number, never, never>;
|
|
6
7
|
stream: (keys: readonly Key[], context?: KeyContext) => Stream.Stream<{
|
|
7
8
|
readonly _tag: "Changed";
|
|
8
9
|
readonly keys: readonly ({
|
|
10
|
+
readonly _tag: "Bucket";
|
|
11
|
+
readonly collection: string;
|
|
12
|
+
readonly field: string;
|
|
13
|
+
readonly value: string | number;
|
|
14
|
+
} | {
|
|
15
|
+
readonly _tag: "List";
|
|
16
|
+
readonly collection: string;
|
|
17
|
+
} | {
|
|
18
|
+
readonly _tag: "Item";
|
|
19
|
+
readonly collection: string;
|
|
20
|
+
readonly id: string | number;
|
|
21
|
+
})[];
|
|
22
|
+
readonly queryIndexes?: readonly number[] | undefined;
|
|
23
|
+
} | {
|
|
24
|
+
readonly _tag: "Resync";
|
|
25
|
+
}, never, never>;
|
|
26
|
+
subscribe: (subscription: QuerySubscription, context?: KeyContext) => Stream.Stream<{
|
|
27
|
+
readonly _tag: "Changed";
|
|
28
|
+
readonly keys: readonly ({
|
|
29
|
+
readonly _tag: "Bucket";
|
|
30
|
+
readonly collection: string;
|
|
31
|
+
readonly field: string;
|
|
32
|
+
readonly value: string | number;
|
|
33
|
+
} | {
|
|
9
34
|
readonly _tag: "List";
|
|
10
35
|
readonly collection: string;
|
|
11
36
|
} | {
|
|
@@ -13,6 +38,7 @@ export declare const makeLiveServer: Effect.Effect<{
|
|
|
13
38
|
readonly collection: string;
|
|
14
39
|
readonly id: string | number;
|
|
15
40
|
})[];
|
|
41
|
+
readonly queryIndexes?: readonly number[] | undefined;
|
|
16
42
|
} | {
|
|
17
43
|
readonly _tag: "Resync";
|
|
18
44
|
}, never, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeLiveServer.d.ts","sourceRoot":"","sources":["../src/makeLiveServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"makeLiveServer.d.ts","sourceRoot":"","sources":["../src/makeLiveServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,UAAU,EAAY,MAAM,4BAA4B,CAAC;AAGjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,eAAO,MAAM,cAAc;;mBAuEV,SAAS,GAAG,EAAE,YAAY,UAAU;;;;;;;;;;;;;;;;;;;8BACzB,iBAAiB,YAAY,UAAU;;;;;;;;;;;;;;;;;;;gCAEjE,CAAC"}
|
package/dist/makeLiveServer.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { Effect, Queue, Stream } from "effect";
|
|
2
2
|
import * as Reactivity from "effect/reactivity/Reactivity";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { readKeys } from "@shivaedev/changes/keys.ts";
|
|
4
|
+
import { changedHint } from "#internal/queryHints.ts";
|
|
5
5
|
export const makeLiveServer = Effect.gen(function* () {
|
|
6
6
|
const reactivity = yield* Reactivity.Reactivity;
|
|
7
7
|
let openStreams = 0;
|
|
8
8
|
const resyncKey = `@shivaedev/contract/resync/${crypto.randomUUID()}`;
|
|
9
|
-
function
|
|
9
|
+
function open(keys, context, subscription) {
|
|
10
10
|
return Stream.unwrap(Effect.gen(function* () {
|
|
11
11
|
const queue = yield* Queue.unbounded();
|
|
12
|
-
const allowedKeys = yield* makeHintPolicy(keys.length, (retryKeys) => Queue.offer(queue, { _tag: "Changed", keys: retryKeys }).pipe(Effect.asVoid));
|
|
13
12
|
const pending = new Map();
|
|
14
13
|
let scheduled = false;
|
|
15
14
|
let resync = false;
|
|
@@ -48,15 +47,23 @@ export const makeLiveServer = Effect.gen(function* () {
|
|
|
48
47
|
}
|
|
49
48
|
}));
|
|
50
49
|
yield* Queue.offer(queue, { _tag: "Resync" });
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
function authorizeHint(hint) {
|
|
51
|
+
if (hint._tag === "Resync") {
|
|
52
|
+
return Effect.succeed(hint);
|
|
53
|
+
}
|
|
54
|
+
return Effect.map(subscription?.authorized ?? Effect.succeed(true), (allowed) => changedHint(allowed ? hint.keys : [], subscription?.scopes));
|
|
55
|
+
}
|
|
56
|
+
return Stream.fromQueue(queue).pipe(Stream.mapEffect(authorizeHint), Stream.filter((hint) => hint._tag === "Resync" || hint.keys.length > 0));
|
|
54
57
|
}));
|
|
55
58
|
}
|
|
56
59
|
const resync = Effect.sync(() => {
|
|
57
60
|
reactivity.invalidateUnsafe([resyncKey]);
|
|
58
61
|
return openStreams;
|
|
59
62
|
});
|
|
60
|
-
return {
|
|
63
|
+
return {
|
|
64
|
+
resync,
|
|
65
|
+
stream: (keys, context) => open(keys, context),
|
|
66
|
+
subscribe: (subscription, context) => open(subscription.keys, context, subscription),
|
|
67
|
+
};
|
|
61
68
|
});
|
|
62
69
|
//# sourceMappingURL=makeLiveServer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeLiveServer.js","sourceRoot":"","sources":["../src/makeLiveServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"makeLiveServer.js","sourceRoot":"","sources":["../src/makeLiveServer.ts"],"names":[],"mappings":"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"}
|
package/dist/operation.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Schema } from "effect";
|
|
1
|
+
import type { Option, Schema } from "effect";
|
|
2
|
+
import type { Key } from "@shivaedev/changes/keys.ts";
|
|
2
3
|
import type { Bivariant } from "@shivaedev/types/Bivariant.ts";
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
4
|
+
import type { QueryReadPolicy, Viewer } from "#readPolicy.ts";
|
|
5
|
+
import type { MatchingTags, Reject, RejectionSpecs, Rejections, RejectionUnion } from "./rejection.ts";
|
|
5
6
|
export type PayloadSchema<TPayload extends Schema.Top | Schema.Struct.Fields> = TPayload extends Schema.Struct.Fields ? Schema.Struct<TPayload> : TPayload;
|
|
6
7
|
type NoRejections = Record<never, never>;
|
|
7
8
|
export interface OperationShape {
|
|
@@ -16,14 +17,15 @@ export interface OperationShape {
|
|
|
16
17
|
}
|
|
17
18
|
export interface QueryShape extends OperationShape {
|
|
18
19
|
readonly kind: "query";
|
|
19
|
-
|
|
20
|
+
readonly readPolicy?: Bivariant<QueryReadPolicy<unknown>>;
|
|
21
|
+
reads: Bivariant<(payload: unknown, viewer: Option.Option<Viewer>) => readonly Key[]>;
|
|
20
22
|
}
|
|
21
23
|
export interface StreamShape extends OperationShape {
|
|
22
24
|
readonly kind: "stream";
|
|
23
25
|
reads: Bivariant<(payload: unknown) => readonly Key[]>;
|
|
24
26
|
}
|
|
25
27
|
export interface CommandShape extends OperationShape {
|
|
26
|
-
invalidates: Bivariant<(payload: unknown, result: unknown) => readonly Key[]>;
|
|
28
|
+
invalidates: Bivariant<(payload: unknown, result: unknown, viewer?: Option.Option<Viewer>) => readonly Key[]>;
|
|
27
29
|
readonly kind: "command";
|
|
28
30
|
}
|
|
29
31
|
interface Operation<TName extends string, TPayload extends Schema.Top, TSuccess extends Schema.Top, TSpecs extends RejectionSpecs> extends OperationShape {
|
|
@@ -37,14 +39,15 @@ interface Operation<TName extends string, TPayload extends Schema.Top, TSuccess
|
|
|
37
39
|
}
|
|
38
40
|
export interface Query<TName extends string, TPayload extends Schema.Top, TSuccess extends Schema.Top, TSpecs extends RejectionSpecs> extends Operation<TName, TPayload, TSuccess, TSpecs> {
|
|
39
41
|
readonly kind: "query";
|
|
40
|
-
|
|
42
|
+
readonly readPolicy?: QueryReadPolicy<TPayload["Type"]>;
|
|
43
|
+
reads: (payload: TPayload["Type"], viewer: Option.Option<Viewer>) => readonly Key[];
|
|
41
44
|
}
|
|
42
45
|
export interface Streaming<TName extends string, TPayload extends Schema.Top, TSuccess extends Schema.Top, TSpecs extends RejectionSpecs> extends Operation<TName, TPayload, TSuccess, TSpecs> {
|
|
43
46
|
readonly kind: "stream";
|
|
44
47
|
reads: (payload: TPayload["Type"]) => readonly Key[];
|
|
45
48
|
}
|
|
46
49
|
export interface Command<TName extends string, TPayload extends Schema.Top, TSuccess extends Schema.Top, TSpecs extends RejectionSpecs> extends Operation<TName, TPayload, TSuccess, TSpecs> {
|
|
47
|
-
invalidates: (payload: TPayload["Type"], result: TSuccess["Type"]) => readonly Key[];
|
|
50
|
+
invalidates: (payload: TPayload["Type"], result: TSuccess["Type"], viewer?: Option.Option<Viewer>) => readonly Key[];
|
|
48
51
|
readonly kind: "command";
|
|
49
52
|
}
|
|
50
53
|
interface Declaration<TPayload extends Schema.Top | Schema.Struct.Fields, TSuccess extends Schema.Top, TSpecs extends RejectionSpecs> {
|
|
@@ -53,10 +56,11 @@ interface Declaration<TPayload extends Schema.Top | Schema.Struct.Fields, TSucce
|
|
|
53
56
|
readonly success?: TSuccess;
|
|
54
57
|
}
|
|
55
58
|
export declare function query<const TName extends string, TPayload extends Schema.Top | Schema.Struct.Fields = Schema.Void, TSuccess extends Schema.Top = Schema.Void, const TSpecs extends RejectionSpecs = NoRejections>(name: TName, declaration: Declaration<TPayload, TSuccess, TSpecs> & {
|
|
56
|
-
readonly reads: (payload: PayloadSchema<TPayload>["Type"]) => readonly Key[];
|
|
59
|
+
readonly reads: (payload: PayloadSchema<TPayload>["Type"], viewer: Option.Option<Viewer>) => readonly Key[];
|
|
60
|
+
readonly readPolicy?: QueryReadPolicy<PayloadSchema<TPayload>["Type"]>;
|
|
57
61
|
}): NoInfer<Query<TName, PayloadSchema<TPayload>, TSuccess, TSpecs>>;
|
|
58
62
|
export declare function command<const TName extends string, TPayload extends Schema.Top | Schema.Struct.Fields = Schema.Void, TSuccess extends Schema.Top = Schema.Void, const TSpecs extends RejectionSpecs = NoRejections>(name: TName, declaration: Declaration<TPayload, TSuccess, TSpecs> & {
|
|
59
|
-
readonly invalidates: (payload: PayloadSchema<TPayload>["Type"], result: TSuccess["Type"]) => readonly Key[];
|
|
63
|
+
readonly invalidates: (payload: PayloadSchema<TPayload>["Type"], result: TSuccess["Type"], viewer?: Option.Option<Viewer>) => readonly Key[];
|
|
60
64
|
}): NoInfer<Command<TName, PayloadSchema<TPayload>, TSuccess, TSpecs>>;
|
|
61
65
|
export declare function stream<const TName extends string, TPayload extends Schema.Top | Schema.Struct.Fields = Schema.Void, TSuccess extends Schema.Top = Schema.Void, const TSpecs extends RejectionSpecs = NoRejections>(name: TName, declaration: Declaration<TPayload, TSuccess, TSpecs> & {
|
|
62
66
|
readonly success: TSuccess;
|
package/dist/operation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEvG,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAClH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GACvB,QAAQ,CAAC;AAEZ,KAAK,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;CAC7B;AAED,MAAM,WAAW,UAAW,SAAQ,cAAc;IACjD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,KAAK,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc;IAClD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IACnD,WAAW,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC;IAC9G,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CACzB;AAED,UAAU,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,SAAS,cAAc,CAChI,SAAQ,cAAc;IACtB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,WAAW,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,SAAS,cAAc,CACnI,SAAQ,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,SAAS,cAAc,CACvI,SAAQ,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,SAAS,cAAc,CACrI,SAAQ,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpD,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC;IACrH,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CACzB;AAED,UAAU,WAAW,CAAC,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,SAAS,cAAc;IACnI,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAED,wBAAgB,KAAK,CACpB,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,EAChE,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,EACzC,KAAK,CAAC,MAAM,SAAS,cAAc,GAAG,YAAY,EAElD,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG;IACtD,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC;IAC5G,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CACvE,GACC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAepE,wBAAgB,OAAO,CACtB,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,EAChE,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,EACzC,KAAK,CAAC,MAAM,SAAS,cAAc,GAAG,YAAY,EAElD,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG;IACtD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC;CAC7I,GACC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAQtE,wBAAgB,MAAM,CACrB,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,EAChE,QAAQ,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,EACzC,KAAK,CAAC,MAAM,SAAS,cAAc,GAAG,YAAY,EAElD,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG;IACtD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC;CAC7E,GACC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC"}
|
package/dist/operation.js
CHANGED
|
@@ -1,25 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
function payloadSchema(payload) {
|
|
4
|
-
if (payload === undefined) {
|
|
5
|
-
return Schema.Void;
|
|
6
|
-
}
|
|
7
|
-
return Schema.isSchema(payload) ? payload : Schema.Struct(payload);
|
|
8
|
-
}
|
|
9
|
-
function operation(kind, name, declaration) {
|
|
10
|
-
const { payload, success, rejections = {} } = declaration;
|
|
1
|
+
import { operation } from "#internal/operationDeclaration.ts";
|
|
2
|
+
export function query(name, declaration) {
|
|
11
3
|
return {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
rejections,
|
|
16
|
-
success: success ?? Schema.Void,
|
|
17
|
-
...rejectionSet(rejections),
|
|
4
|
+
...operation("query", name, declaration),
|
|
5
|
+
reads: declaration.reads,
|
|
6
|
+
...(declaration.readPolicy === undefined ? {} : { readPolicy: declaration.readPolicy }),
|
|
18
7
|
};
|
|
19
8
|
}
|
|
20
|
-
export function query(name, declaration) {
|
|
21
|
-
return { ...operation("query", name, declaration), reads: declaration.reads };
|
|
22
|
-
}
|
|
23
9
|
export function command(name, declaration) {
|
|
24
10
|
return { ...operation("command", name, declaration), invalidates: declaration.invalidates };
|
|
25
11
|
}
|
package/dist/operation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAqF1E,MAAM,UAAU,KAAK,CACpB,IAAY,EACZ,WAGC;IAED,OAAO;QACN,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC;QACxC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,GAAG,CAAC,WAAW,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC;KACvF,CAAC;AACH,CAAC;AAaD,MAAM,UAAU,OAAO,CACtB,IAAY,EACZ,WAAoI;IAEpI,OAAO,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC;AAC7F,CAAC;AAcD,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,WAA6E;IACjH,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;AAChF,CAAC"}
|
package/dist/publicConfig.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export declare function publicConfig<T, E>(schema: Schema.Codec<T, E>): import("#contract.ts").Contract<"platform.publicConfig", readonly [NoInfer<import("#operation.ts").Query<"get", Schema.Void, Schema.Codec<T, E, never, never>, {}>>], readonly [], import("effect/rpc/Rpc").Rpc<"platform.publicConfig.get", Schema.Void, Schema.Codec<T, E, never, never>, Schema.Never, never, never> | import("effect/rpc/Rpc").Rpc<"platform.publicConfig.$changes", Schema.Struct<{
|
|
1
|
+
import { type Schema } from "effect";
|
|
2
|
+
export declare function publicConfig<T, E>(schema: Schema.Codec<T, E>): import("#contract.ts").Contract<"platform.publicConfig", readonly [NoInfer<import("#operation.ts").Query<"get", Schema.Void, Schema.Codec<T, E, never, never>, {}>>], readonly [], import("effect/rpc/Rpc").Rpc<"platform.publicConfig.get", Schema.Void, Schema.Codec<T, E, never, never>, Schema.Union<readonly [Schema.Never, typeof import("./readPolicyErrors.ts").QueryReadDenied]>, never, never> | import("effect/rpc/Rpc").Rpc<"platform.publicConfig.$changes", Schema.Struct<{
|
|
3
3
|
queries: Schema.$Array<Schema.Union<readonly Schema.Struct<{
|
|
4
4
|
query: Schema.Literal<"get">;
|
|
5
5
|
payload: Schema.Void;
|
|
@@ -7,6 +7,11 @@ export declare function publicConfig<T, E>(schema: Schema.Codec<T, E>): import("
|
|
|
7
7
|
}>, import("effect/rpc/RpcSchema").Stream<Schema.Union<readonly [Schema.Struct<{
|
|
8
8
|
readonly _tag: Schema.Literal<"Changed">;
|
|
9
9
|
readonly keys: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
|
|
10
|
+
readonly _tag: Schema.Literal<"Bucket">;
|
|
11
|
+
readonly collection: Schema.String;
|
|
12
|
+
readonly field: Schema.String;
|
|
13
|
+
readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
|
|
14
|
+
}>, Schema.Struct<{
|
|
10
15
|
readonly _tag: Schema.Literal<"List">;
|
|
11
16
|
readonly collection: Schema.String;
|
|
12
17
|
}>, Schema.Struct<{
|
|
@@ -14,7 +19,8 @@ export declare function publicConfig<T, E>(schema: Schema.Codec<T, E>): import("
|
|
|
14
19
|
readonly collection: Schema.String;
|
|
15
20
|
readonly id: Schema.Union<readonly [Schema.String, Schema.Number]>;
|
|
16
21
|
}>]>>;
|
|
22
|
+
readonly queryIndexes: Schema.optional<Schema.$Array<Schema.Number>>;
|
|
17
23
|
}>, Schema.Struct<{
|
|
18
24
|
readonly _tag: Schema.Literal<"Resync">;
|
|
19
|
-
}>]>, Schema.
|
|
25
|
+
}>]>, Schema.Union<readonly [typeof import("./readPolicyErrors.ts").MissingReadPolicy, typeof import("./readPolicyErrors.ts").QueryReadDenied]>>, Schema.Never, never, never>, readonly [], undefined>;
|
|
20
26
|
//# sourceMappingURL=publicConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publicConfig.d.ts","sourceRoot":"","sources":["../src/publicConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"publicConfig.d.ts","sourceRoot":"","sources":["../src/publicConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI7C,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;uMAI5D"}
|
package/dist/publicConfig.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
1
2
|
import { contract } from "#contract.ts";
|
|
2
3
|
import { query } from "#operation.ts";
|
|
3
4
|
export function publicConfig(schema) {
|
|
4
5
|
return contract("platform.publicConfig", {
|
|
5
|
-
queries: [query("get", { reads: () => [], success: schema })],
|
|
6
|
+
queries: [query("get", { readPolicy: () => Effect.succeed(true), reads: () => [], success: schema })],
|
|
6
7
|
});
|
|
7
8
|
}
|
|
8
9
|
//# sourceMappingURL=publicConfig.js.map
|