@effect-app/vue 4.0.0-beta.18 → 4.0.0-beta.181
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 +1275 -0
- package/dist/commander.d.ts +450 -0
- package/dist/commander.d.ts.map +1 -0
- package/dist/commander.js +687 -0
- package/dist/confirm.d.ts +19 -0
- package/dist/confirm.d.ts.map +1 -0
- package/dist/confirm.js +24 -0
- package/dist/errorReporter.d.ts +4 -4
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +12 -18
- package/dist/form.d.ts +13 -4
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +41 -12
- package/dist/index.d.ts +1 -1
- package/dist/intl.d.ts +15 -0
- package/dist/intl.d.ts.map +1 -0
- package/dist/intl.js +9 -0
- package/dist/lib.d.ts +6 -8
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +34 -7
- package/dist/makeClient.d.ts +191 -290
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +231 -361
- package/dist/makeContext.d.ts +1 -1
- package/dist/makeContext.d.ts.map +1 -1
- package/dist/makeIntl.d.ts +1 -1
- package/dist/makeIntl.d.ts.map +1 -1
- package/dist/makeUseCommand.d.ts +8 -0
- package/dist/makeUseCommand.d.ts.map +1 -0
- package/dist/makeUseCommand.js +13 -0
- package/dist/mutate.d.ts +57 -25
- package/dist/mutate.d.ts.map +1 -1
- package/dist/mutate.js +160 -33
- package/dist/query.d.ts +11 -15
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +19 -27
- package/dist/routeParams.d.ts +1 -1
- package/dist/runtime.d.ts +5 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +27 -17
- package/dist/toast.d.ts +46 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +32 -0
- package/dist/withToast.d.ts +26 -0
- package/dist/withToast.d.ts.map +1 -0
- package/dist/withToast.js +49 -0
- package/eslint.config.mjs +2 -2
- package/examples/streamMutation.ts +85 -0
- package/package.json +48 -48
- package/src/{experimental/commander.ts → commander.ts} +1158 -275
- package/src/{experimental/confirm.ts → confirm.ts} +10 -14
- package/src/errorReporter.ts +62 -74
- package/src/form.ts +55 -16
- package/src/intl.ts +12 -0
- package/src/lib.ts +46 -13
- package/src/makeClient.ts +670 -1038
- package/src/{experimental/makeUseCommand.ts → makeUseCommand.ts} +4 -4
- package/src/mutate.ts +306 -72
- package/src/query.ts +39 -50
- package/src/runtime.ts +39 -18
- package/src/{experimental/toast.ts → toast.ts} +11 -25
- package/src/{experimental/withToast.ts → withToast.ts} +15 -6
- package/test/Mutation.test.ts +130 -10
- package/test/dist/form.test.d.ts.map +1 -1
- package/test/dist/lib.test.d.ts.map +1 -0
- package/test/dist/streamFinal.test.d.ts.map +1 -0
- package/test/dist/stubs.d.ts +3220 -117
- package/test/dist/stubs.d.ts.map +1 -1
- package/test/dist/stubs.js +132 -25
- package/test/form-validation-errors.test.ts +23 -19
- package/test/form.test.ts +20 -2
- package/test/lib.test.ts +240 -0
- package/test/makeClient.test.ts +240 -38
- package/test/streamFinal.test.ts +110 -0
- package/test/stubs.ts +172 -42
- package/tsconfig.examples.json +20 -0
- package/tsconfig.json +0 -1
- package/tsconfig.json.bak +5 -2
- package/tsconfig.src.json +34 -34
- package/tsconfig.test.json +2 -2
- package/vitest.config.ts +5 -5
- package/dist/experimental/commander.d.ts +0 -359
- package/dist/experimental/commander.d.ts.map +0 -1
- package/dist/experimental/commander.js +0 -557
- package/dist/experimental/confirm.d.ts +0 -19
- package/dist/experimental/confirm.d.ts.map +0 -1
- package/dist/experimental/confirm.js +0 -28
- package/dist/experimental/intl.d.ts +0 -16
- package/dist/experimental/intl.d.ts.map +0 -1
- package/dist/experimental/intl.js +0 -5
- package/dist/experimental/makeUseCommand.d.ts +0 -8
- package/dist/experimental/makeUseCommand.d.ts.map +0 -1
- package/dist/experimental/makeUseCommand.js +0 -13
- package/dist/experimental/toast.d.ts +0 -47
- package/dist/experimental/toast.d.ts.map +0 -1
- package/dist/experimental/toast.js +0 -41
- package/dist/experimental/withToast.d.ts +0 -25
- package/dist/experimental/withToast.d.ts.map +0 -1
- package/dist/experimental/withToast.js +0 -45
- package/src/experimental/intl.ts +0 -9
package/dist/makeClient.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { type InvalidateOptions, type InvalidateQueryFilters, type QueryObserverResult, type RefetchOptions, type UseQueryReturnType } from "@tanstack/vue-query";
|
|
2
|
-
import {
|
|
2
|
+
import { type Context, Effect, type Layer, type ManagedRuntime, S } from "effect-app";
|
|
3
3
|
import { type ApiClientFactory, type Req } from "effect-app/client";
|
|
4
|
-
import type { RequestHandler, RequestHandlers, RequestHandlerWithInput,
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
4
|
+
import type { ExtractModuleName, RequestHandler, RequestHandlers, RequestHandlerWithInput, RequestInputFromMake, RequestsAny, RequestStreamHandler, RequestStreamHandlerWithInput } from "effect-app/client/clientFor";
|
|
5
|
+
import type { InvalidationCallback } from "effect-app/client/makeClient";
|
|
6
|
+
import type * as ExitResult from "effect/Exit";
|
|
7
7
|
import { type Fiber } from "effect/Fiber";
|
|
8
8
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
|
|
9
|
-
import { type ComputedRef, type
|
|
10
|
-
import { type Commander } from "./
|
|
11
|
-
import { I18n } from "./
|
|
12
|
-
import { type CommanderResolved } from "./
|
|
13
|
-
import {
|
|
14
|
-
import { type MutationOptions, type MutationOptionsBase, type Res } from "./mutate.js";
|
|
9
|
+
import { type ComputedRef, type WatchSource } from "vue";
|
|
10
|
+
import { type Commander, type Progress } from "./commander.js";
|
|
11
|
+
import { type I18n } from "./intl.js";
|
|
12
|
+
import { type CommanderResolved } from "./makeUseCommand.js";
|
|
13
|
+
import { type MutationOptionsBase } from "./mutate.js";
|
|
15
14
|
import { type CustomUndefinedInitialQueryOptions, makeQuery } from "./query.js";
|
|
16
|
-
|
|
15
|
+
import { type Toast } from "./toast.js";
|
|
16
|
+
export interface CommandRequestExtensions<RT, Id extends string, I, A, E, R> {
|
|
17
17
|
/** Defines a Command based on this call, taking the `id` of the call as the `id` of the Command.
|
|
18
18
|
* The Request function will be taken as the first member of the Command, the Command required input will be the Request input.
|
|
19
19
|
* see Command.wrap for details */
|
|
@@ -23,67 +23,160 @@ export interface RequestExtensions<RT, Id extends string, I, A, E, R> {
|
|
|
23
23
|
fn: Commander.CommanderFn<RT, Id, Id, undefined>;
|
|
24
24
|
}
|
|
25
25
|
/** my other doc */
|
|
26
|
-
export interface RequestExtWithInput<RT, Id extends string, I, A, E, R> extends Commander.CommandContextLocal<Id, Id>,
|
|
26
|
+
export interface RequestExtWithInput<RT, Id extends string, I, A, E, R> extends Commander.CommandContextLocal<Id, Id>, CommandRequestExtensions<RT, Id, I, A, E, R> {
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* Send the request to the endpoint and return the raw Effect response.
|
|
29
|
+
* This does not perform query cache invalidation.
|
|
29
30
|
*/
|
|
30
|
-
(i: I)
|
|
31
|
+
request: (i: I) => Effect.Effect<A, E, R>;
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
export interface RequestExt<RT, Id extends string, A, E, R> extends Commander.CommandContextLocal<Id, Id>, Commander.CommanderWrap<RT, Id, Id, undefined, void, A, E, R>, CommandRequestExtensions<RT, Id, void, A, E, R> {
|
|
34
|
+
/**
|
|
35
|
+
* Send the request to the endpoint and return the raw Effect response.
|
|
36
|
+
* This does not perform query cache invalidation.
|
|
37
|
+
*/
|
|
38
|
+
request: Effect.Effect<A, E, R>;
|
|
39
|
+
}
|
|
40
|
+
export type CommandRequestWithExtensions<RT, Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer _Request, infer Id> ? RequestExtWithInput<RT, Id, I, A, E, R> : Req extends RequestHandler<infer A, infer E, infer R, infer _Request, infer Id> ? RequestExt<RT, Id, A, E, R> : never;
|
|
41
|
+
export interface QueryExtensionsWithInput<I, A, E, R> {
|
|
42
|
+
/**
|
|
43
|
+
* Send the request to the endpoint and return the raw Effect response.
|
|
44
|
+
* This does not set up query state tracking.
|
|
45
|
+
*/
|
|
46
|
+
request: (i: I) => Effect.Effect<A, E, R>;
|
|
36
47
|
}
|
|
37
|
-
export
|
|
48
|
+
export interface QueryExtensions<A, E, R> {
|
|
49
|
+
/**
|
|
50
|
+
* Send the request to the endpoint and return the raw Effect response.
|
|
51
|
+
* This does not set up query state tracking.
|
|
52
|
+
*/
|
|
53
|
+
request: Effect.Effect<A, E, R>;
|
|
54
|
+
}
|
|
55
|
+
export type QueryRequestWithExtensions<Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer _Request, infer _Id> ? QueryExtensionsWithInput<I, A, E, R> : Req extends RequestHandler<infer A, infer E, infer R, infer _Request, infer _Id> ? QueryExtensions<A, E, R> : never;
|
|
56
|
+
type QueryHandler<Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "query" ? RequestHandlerWithInput<I, A, E, R, Request, Id> : never : Req extends RequestHandler<infer A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "query" ? RequestHandler<A, E, R, Request, Id> : never : never;
|
|
57
|
+
type CommandHandler<Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "command" ? RequestHandlerWithInput<I, A, E, R, Request, Id> : never : Req extends RequestHandler<infer A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "command" ? RequestHandler<A, E, R, Request, Id> : never : never;
|
|
58
|
+
type StreamHandler<Req> = Req extends RequestStreamHandlerWithInput<infer I, infer A, infer E, infer R, infer Request, infer Id, infer Final> ? Request["type"] extends "stream" ? RequestStreamHandlerWithInput<I, A, E, R, Request, Id, Final> : never : Req extends RequestStreamHandler<infer A, infer E, infer R, infer Request, infer Id, infer Final> ? Request["type"] extends "stream" ? RequestStreamHandler<A, E, R, Request, Id, Final> : never : never;
|
|
38
59
|
export interface MutationExtensions<RT, Id extends string, I, A, E, R> {
|
|
39
60
|
/** Defines a Command based on this mutation, taking the `id` of the mutation as the `id` of the Command.
|
|
40
61
|
* The Mutation function will be taken as the first member of the Command, the Command required input will be the Mutation input.
|
|
41
62
|
* see Command.wrap for details */
|
|
42
63
|
wrap: Commander.CommanderWrap<RT, Id, Id, undefined, I, A, E, R>;
|
|
43
|
-
/** Defines a Command based on this mutation, taking the `id` of the mutation as the `id` of the Command.
|
|
44
|
-
* see Command.fn for details */
|
|
45
|
-
fn: Commander.CommanderFn<RT, Id, Id, undefined>;
|
|
46
64
|
}
|
|
47
65
|
/** my other doc */
|
|
48
|
-
export interface MutationExtWithInput<RT, Id extends string, I, A, E, R> extends
|
|
66
|
+
export interface MutationExtWithInput<RT, Id extends string, I, A, E, R, EA = unknown> extends MutationExtensions<RT, Id, I, A, E, R> {
|
|
49
67
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
68
|
+
* Send the request to the endpoint and return the raw Effect response.
|
|
69
|
+
* Also invalidates query caches using the request namespace by default.
|
|
70
|
+
* Namespace invalidation targets parent namespace keys
|
|
71
|
+
* (for example `$project/$configuration.get` invalidates `$project`).
|
|
72
|
+
* Override invalidation in client options via `queryInvalidation`.
|
|
73
|
+
*
|
|
74
|
+
* Pass `options` to attach a `select` Effect that runs after the mutation
|
|
75
|
+
* succeeds (its output is returned to the caller) and/or override the default
|
|
76
|
+
* `queryInvalidation`.
|
|
53
77
|
*/
|
|
54
|
-
(
|
|
78
|
+
<B = A, E2 = never, R2 = never>(input: I, options?: MutationOptionsBase<A, B, E2, R2>): Effect.Effect<B, E | E2, R | R2>;
|
|
79
|
+
project: <ProjSchema extends S.Top>(schema: EA extends ProjSchema["Encoded"] ? ProjSchema : never) => MutationExtWithInput<RT, Id, I, S.Schema.Type<ProjSchema>, E | S.SchemaError, R | S.Codec.DecodingServices<ProjSchema>, S.Codec.Encoded<ProjSchema>>;
|
|
55
80
|
}
|
|
56
81
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
82
|
+
* Send the request to the endpoint and return the raw Effect response.
|
|
83
|
+
* Also invalidates query caches using the request namespace by default.
|
|
84
|
+
* Namespace invalidation targets parent namespace keys
|
|
85
|
+
* (for example `$project/$configuration.get` invalidates `$project`).
|
|
86
|
+
* Override invalidation in client options via `queryInvalidation`.
|
|
60
87
|
*/
|
|
61
|
-
export interface MutationExt<RT, Id extends string, A, E, R
|
|
88
|
+
export interface MutationExt<RT, Id extends string, A, E, R, EA = unknown> extends MutationExtensions<RT, Id, void, A, E, R> {
|
|
89
|
+
/**
|
|
90
|
+
* Send the request to the endpoint and return the raw Effect response.
|
|
91
|
+
* Also invalidates query caches using the request namespace by default.
|
|
92
|
+
*
|
|
93
|
+
* Pass `options` to attach a `select` Effect that runs after the mutation
|
|
94
|
+
* succeeds (its output is returned to the caller) and/or override the default
|
|
95
|
+
* `queryInvalidation`.
|
|
96
|
+
*/
|
|
97
|
+
<B = A, E2 = never, R2 = never>(options?: MutationOptionsBase<A, B, E2, R2>): Effect.Effect<B, E | E2, R | R2>;
|
|
98
|
+
project: <ProjSchema extends S.Top>(schema: EA extends ProjSchema["Encoded"] ? ProjSchema : never) => MutationExt<RT, Id, S.Schema.Type<ProjSchema>, E | S.SchemaError, R | S.Codec.DecodingServices<ProjSchema>, S.Codec.Encoded<ProjSchema>>;
|
|
62
99
|
}
|
|
63
|
-
export type MutationWithExtensions<RT, Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer
|
|
100
|
+
export type MutationWithExtensions<RT, Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer Request, infer Id> ? MutationExtWithInput<RT, Id, I, A, E, R, S.Codec.Encoded<Request["success"]>> : Req extends RequestHandler<infer A, infer E, infer R, infer Request, infer Id> ? MutationExt<RT, Id, A, E, R, S.Codec.Encoded<Request["success"]>> : never;
|
|
101
|
+
/**
|
|
102
|
+
* Options for invoking a `mutateStream` factory. Supplying `progress` produces
|
|
103
|
+
* a tuple-with-id that carries `running` (the live AsyncResult ref) and
|
|
104
|
+
* `progress` (a `ComputedRef<Progress | undefined>` formatted from each value),
|
|
105
|
+
* which `Command.fn` / `Command.wrapStream` surface as the command's `running`
|
|
106
|
+
* and `progress`. When omitted, the resulting command exposes neither.
|
|
107
|
+
*/
|
|
108
|
+
export type MutateStreamCallOptions<A, E> = {
|
|
109
|
+
progress?: (result: AsyncResult.AsyncResult<A, E>) => Progress | undefined;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* The `mutateStream` factory for a stream-type request handler. Always invoke
|
|
113
|
+
* (optionally with `{ progress }`) to get a fresh `[resultRef, execute]` tuple —
|
|
114
|
+
* each call produces a new `ComputedRef` + execute pair so independent invocations
|
|
115
|
+
* don't share state. `execute` updates the ref live with each emitted value.
|
|
116
|
+
* When the request declares a `final` schema, `execute` resolves with the last
|
|
117
|
+
* emitted value typed as `Final`; otherwise it resolves with the success type.
|
|
118
|
+
* The factory itself carries the request `id` so it can be passed to
|
|
119
|
+
* `Command.fn` / `Command.wrapStream` directly.
|
|
120
|
+
*/
|
|
121
|
+
export type StreamMutationWithExtensions<Req> = Req extends RequestStreamHandlerWithInput<infer I, infer A, infer E, infer R, infer _Request, infer Id, infer Final> ? ((options?: MutateStreamCallOptions<A, E>) => readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, (input: I) => Effect.Effect<Final, never, R>] & {
|
|
122
|
+
readonly id: Id;
|
|
123
|
+
readonly running?: ComputedRef<AsyncResult.AsyncResult<A, E>>;
|
|
124
|
+
readonly progress?: ComputedRef<Progress | undefined>;
|
|
125
|
+
}) & {
|
|
126
|
+
readonly id: Id;
|
|
127
|
+
} : Req extends RequestStreamHandler<infer A, infer E, infer R, infer _Request, infer Id, infer Final> ? ((options?: MutateStreamCallOptions<A, E>) => readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, Effect.Effect<Final, never, R>] & {
|
|
128
|
+
readonly id: Id;
|
|
129
|
+
readonly running?: ComputedRef<AsyncResult.AsyncResult<A, E>>;
|
|
130
|
+
readonly progress?: ComputedRef<Progress | undefined>;
|
|
131
|
+
}) & {
|
|
132
|
+
readonly id: Id;
|
|
133
|
+
} : never;
|
|
134
|
+
/**
|
|
135
|
+
* The pre-built `wrapStream` CommanderWrap for a stream-type request handler.
|
|
136
|
+
* The command's `result` and `running` are the live stream ref.
|
|
137
|
+
* Callable like `wrap`: `client.myExport.wrapStream()` returns the CommandOut.
|
|
138
|
+
*/
|
|
139
|
+
export type StreamCommandWithExtensions<RT, Req> = Req extends RequestStreamHandlerWithInput<infer I, infer A, infer E, infer R, infer _Request, infer Id, infer _Final> ? Commander.CommanderWrap<RT, Id, Id, undefined, I, A, E, R> : Req extends RequestStreamHandler<infer A, infer E, infer R, infer _Request, infer Id, infer _Final> ? Commander.CommanderWrap<RT, Id, Id, undefined, void, A, E, R> : never;
|
|
140
|
+
/**
|
|
141
|
+
* The `fn` builder for a stream-type request handler — identical to calling
|
|
142
|
+
* `Command.fn(id)` where `id` comes from the request.
|
|
143
|
+
*/
|
|
144
|
+
export type StreamFnExtension<RT, Req> = Req extends RequestStreamHandlerWithInput<infer _I, infer _A, infer _E, infer _R, infer _Request, infer Id, infer _Final> ? Commander.CommanderFn<RT, Id, Id, undefined> : Req extends RequestStreamHandler<infer _A, infer _E, infer _R, infer _Request, infer Id, infer _Final> ? Commander.CommanderFn<RT, Id, Id, undefined> : never;
|
|
64
145
|
declare const useQuery_: QueryImpl<any>["useQuery"];
|
|
65
146
|
declare const useSuspenseQuery_: QueryImpl<any>["useSuspenseQuery"];
|
|
147
|
+
export interface ProjectResult<RT, I, B, E, R, Request extends Req, Id extends string> {
|
|
148
|
+
request: (i: I) => Effect.Effect<B, E, R>;
|
|
149
|
+
query: Exclude<R, RT> extends never ? ReturnType<typeof useQuery_<I, E, B, Request, Id>> : MissingDependencies<RT, R> & {};
|
|
150
|
+
suspense: Exclude<R, RT> extends never ? ReturnType<typeof useSuspenseQuery_<I, E, B, Request, Id>> : MissingDependencies<RT, R> & {};
|
|
151
|
+
}
|
|
152
|
+
export type QueryProjection<RT, HandlerReq> = HandlerReq extends RequestHandlerWithInput<infer I, infer _A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "query" ? {
|
|
153
|
+
project: <ProjSchema extends S.Top>(schema: S.Codec.Encoded<Request["success"]> extends ProjSchema["Encoded"] ? ProjSchema : never) => ProjectResult<RT, I, S.Schema.Type<ProjSchema>, E | S.SchemaError, R | S.Codec.DecodingServices<ProjSchema>, Request, Id>;
|
|
154
|
+
} : {} : HandlerReq extends RequestHandler<infer _A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "query" ? {
|
|
155
|
+
project: <ProjSchema extends S.Top>(schema: S.Codec.Encoded<Request["success"]> extends ProjSchema["Encoded"] ? ProjSchema : never) => ProjectResult<RT, void, S.Schema.Type<ProjSchema>, E | S.SchemaError, R | S.Codec.DecodingServices<ProjSchema>, Request, Id>;
|
|
156
|
+
} : {} : {};
|
|
66
157
|
export interface QueriesWithInput<Request extends Req, Id extends string, I, A, E> {
|
|
67
158
|
/**
|
|
68
|
-
*
|
|
159
|
+
* Read helper for query requests.
|
|
160
|
+
* Runs as a tracked Vue Query and returns reactive state.
|
|
161
|
+
* Queries read state and should not be used to mutate it.
|
|
69
162
|
*/
|
|
70
163
|
query: ReturnType<typeof useQuery_<I, E, A, Request, Id>>;
|
|
71
164
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* So that Suspense and error boundaries can be used.
|
|
165
|
+
* Like `.query`, but returns a Promise for setup-time awaiting.
|
|
166
|
+
* Use this when integrating with Vue Suspense / error boundaries.
|
|
75
167
|
*/
|
|
76
168
|
suspense: ReturnType<typeof useSuspenseQuery_<I, E, A, Request, Id>>;
|
|
77
169
|
}
|
|
78
170
|
export interface QueriesWithoutInput<Request extends Req, Id extends string, A, E> {
|
|
79
171
|
/**
|
|
80
|
-
*
|
|
172
|
+
* Read helper for query requests.
|
|
173
|
+
* Runs as a tracked Vue Query and returns reactive state.
|
|
174
|
+
* Queries read state and should not be used to mutate it.
|
|
81
175
|
*/
|
|
82
176
|
query: ReturnType<typeof useQuery_<E, A, Request, Id>>;
|
|
83
177
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* So that Suspense and error boundaries can be used.
|
|
178
|
+
* Like `.query`, but returns a Promise for setup-time awaiting.
|
|
179
|
+
* Use this when integrating with Vue Suspense / error boundaries.
|
|
87
180
|
*/
|
|
88
181
|
suspense: ReturnType<typeof useSuspenseQuery_<E, A, Request, Id>>;
|
|
89
182
|
}
|
|
@@ -91,60 +184,16 @@ export type MissingDependencies<RT, R> = {
|
|
|
91
184
|
message: "Dependencies required that are not provided by the runtime";
|
|
92
185
|
dependencies: Exclude<R, RT>;
|
|
93
186
|
};
|
|
94
|
-
export type Queries<RT, Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer Request, infer Id> ? Exclude<R, RT> extends never ? QueriesWithInput<Request, Id, I, A, E> : {
|
|
187
|
+
export type Queries<RT, Req> = Req extends RequestHandlerWithInput<infer I, infer A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "query" ? Exclude<R, RT> extends never ? QueriesWithInput<Request, Id, I, A, E> : {
|
|
95
188
|
query: MissingDependencies<RT, R> & {};
|
|
96
189
|
suspense: MissingDependencies<RT, R> & {};
|
|
97
|
-
} : Req extends RequestHandler<infer A, infer E, infer R, infer Request, infer Id> ? Exclude<R, RT> extends never ? QueriesWithoutInput<Request, Id, A, E> : {
|
|
190
|
+
} : never : Req extends RequestHandler<infer A, infer E, infer R, infer Request, infer Id> ? Request["type"] extends "query" ? Exclude<R, RT> extends never ? QueriesWithoutInput<Request, Id, A, E> : {
|
|
98
191
|
query: MissingDependencies<RT, R> & {};
|
|
99
192
|
suspense: MissingDependencies<RT, R> & {};
|
|
100
|
-
} : never;
|
|
101
|
-
declare const SuppressErrors_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
102
|
-
readonly _tag: "SuppressErrors";
|
|
103
|
-
} & Readonly<A>;
|
|
104
|
-
/**
|
|
105
|
-
* Use this after handling an error yourself, still continueing on the Error track, but the error will not be reported.
|
|
106
|
-
*/
|
|
107
|
-
export declare class SuppressErrors extends SuppressErrors_base<{}> {
|
|
108
|
-
readonly [ErrorSilenced]: true;
|
|
109
|
-
}
|
|
110
|
-
export type ResponseErrors = S.SchemaError | SupportedErrors | SuppressErrors | OperationFailure;
|
|
111
|
-
export interface Opts<A, E, R, I = void, A2 = A, E2 = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never> extends MutationOptions<A, E, R, A2, E2, R2, I> {
|
|
112
|
-
/** set to `undefined` to use default message */
|
|
113
|
-
successMessage?: ((a: A2, i: I) => Effect.Effect<string | undefined, ESuccess, RSuccess>) | undefined;
|
|
114
|
-
/** set to `undefined` to use default message */
|
|
115
|
-
failMessage?: ((e: E2, i: I) => Effect.Effect<string | undefined, EError, RError>) | undefined;
|
|
116
|
-
/** set to `undefined` to use default message */
|
|
117
|
-
defectMessage?: ((e: Cause.Cause<E2>, i: I) => Effect.Effect<string | undefined, EDefect, RDefect>) | undefined;
|
|
118
|
-
}
|
|
119
|
-
export interface LowOpts<A, E, I = void, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never> {
|
|
120
|
-
onSuccess: (a: A, i: I) => Effect.Effect<void, ESuccess, RSuccess>;
|
|
121
|
-
onFail: (e: E, i: I) => Effect.Effect<void, EError, RError>;
|
|
122
|
-
onDefect: (e: Cause.Cause<E>, i: I) => Effect.Effect<void, EDefect, RDefect>;
|
|
123
|
-
}
|
|
124
|
-
export interface LowOptsOptional<A, E, R, I = void, A2 = A, E2 = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never> extends MutationOptions<A, E, R, A2, E2, R2, I> {
|
|
125
|
-
onSuccess?: (a: A, i: I) => Effect.Effect<void, ESuccess, RSuccess>;
|
|
126
|
-
onFail?: (e: E, i: I) => Effect.Effect<void, EError, RError>;
|
|
127
|
-
onDefect?: (e: Cause.Cause<E>, i: I) => Effect.Effect<void, EDefect, RDefect>;
|
|
128
|
-
}
|
|
129
|
-
type WithAction<A> = A & {
|
|
130
|
-
action: string;
|
|
131
|
-
};
|
|
132
|
-
type Resp<I, A, E, R, V = ComputedRef<Res<A, E>>> = readonly [
|
|
133
|
-
V,
|
|
134
|
-
WithAction<(I: I) => Effect.Effect<Exit.Exit<A, E>, never, R>>
|
|
135
|
-
];
|
|
136
|
-
type ActResp<A, E, R, V = ComputedRef<Res<A, E>>> = readonly [
|
|
137
|
-
V,
|
|
138
|
-
WithAction<Effect.Effect<Exit.Exit<A, E>, never, R>>
|
|
139
|
-
];
|
|
140
|
-
export declare const suppressToast: import("effect/Function").LazyArg<Effect.Effect<undefined, never, never>>;
|
|
193
|
+
} : never : never;
|
|
141
194
|
declare const _useMutation: {
|
|
142
|
-
<I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id
|
|
143
|
-
|
|
144
|
-
};
|
|
145
|
-
<E, A, R, Request extends Req, Id extends string>(self: RequestHandler<A, E, R, Request, Id>, options?: MutationOptionsBase): Effect.Effect<A, E, R> & {
|
|
146
|
-
readonly id: Id;
|
|
147
|
-
};
|
|
195
|
+
<I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>): import("./mutate.js").MutationFnWithInput<I, A, E, R, Id>;
|
|
196
|
+
<E, A, R, Request extends Req, Id extends string>(self: RequestHandler<A, E, R, Request, Id>): import("./mutate.js").MutationFn<A, E, R, Id>;
|
|
148
197
|
};
|
|
149
198
|
/**
|
|
150
199
|
* Pass an Effect or a function that returns an Effect, e.g from a client action
|
|
@@ -158,196 +207,13 @@ export declare const useMutation: typeof _useMutation;
|
|
|
158
207
|
* adds a span with the mutation id
|
|
159
208
|
*/
|
|
160
209
|
export declare const useMutationInt: () => {
|
|
161
|
-
<I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id
|
|
162
|
-
|
|
163
|
-
};
|
|
164
|
-
<E, A, R, Request extends Req, Id extends string>(self: RequestHandler<A, E, R, Request, Id>, options?: MutationOptionsBase): Effect.Effect<A, E, R> & {
|
|
165
|
-
readonly id: Id;
|
|
166
|
-
};
|
|
210
|
+
<I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>): import("./mutate.js").MutationFnWithInput<I, A, E, R, Id>;
|
|
211
|
+
<E, A, R, Request extends Req, Id extends string>(self: RequestHandler<A, E, R, Request, Id>): import("./mutate.js").MutationFn<A, E, R, Id>;
|
|
167
212
|
};
|
|
168
|
-
export
|
|
169
|
-
private readonly getRuntime;
|
|
170
|
-
private readonly toast;
|
|
171
|
-
private readonly intl;
|
|
172
|
-
constructor(getRuntime: () => ServiceMap.ServiceMap<RT>, toast: Toast, intl: I18n);
|
|
173
|
-
/**
|
|
174
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
175
|
-
* you should use the result ref to render errors!
|
|
176
|
-
* @deprecated use `Command.fn` and friends instead
|
|
177
|
-
*/
|
|
178
|
-
readonly useSafeMutation: {
|
|
179
|
-
/**
|
|
180
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
181
|
-
* you should use the result ref to render errors!
|
|
182
|
-
* @deprecated use `Command.fn` and friends instead
|
|
183
|
-
*/
|
|
184
|
-
<I, E, A, R, Request extends Req, Name extends string, A2 = A, E2 = E, R2 = R>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>, options?: MutationOptions<A, E, R, A2, E2, R2, I>): readonly [
|
|
185
|
-
ComputedRef<AsyncResult.AsyncResult<A2, E2>>,
|
|
186
|
-
(i: I) => Effect.Effect<Exit.Exit<A2, E2>, never, R2>
|
|
187
|
-
];
|
|
188
|
-
/**
|
|
189
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
190
|
-
* you should use the result ref to render errors!
|
|
191
|
-
* @deprecated use `Command.fn` and friends instead
|
|
192
|
-
*/
|
|
193
|
-
<E, A, R, Request extends Req, Name extends string, A2 = A, E2 = E, R2 = R>(self: RequestHandler<A, E, R, Request, Name>, options?: MutationOptions<A, E, R, A2, E2, R2>): readonly [
|
|
194
|
-
ComputedRef<AsyncResult.AsyncResult<A2, E2>>,
|
|
195
|
-
Effect.Effect<Exit.Exit<A2, E2>, never, R2>
|
|
196
|
-
];
|
|
197
|
-
};
|
|
198
|
-
/** handles errors as toasts and reports defects
|
|
199
|
-
* @deprecated use `Command.fn` and friends instead
|
|
200
|
-
*/
|
|
201
|
-
readonly useHandleRequestWithToast: () => <A, E extends ResponseErrors, R, I = void, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(f: Effect.Effect<Exit.Exit<A2, E2>, never, R2> | ((i: I) => Effect.Effect<Exit.Exit<A2, E2>, never, R2>), id: string, action: string, options?: Opts<A, E, R, I, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>) => (Effect.Effect<Exit.Exit<A2, E2>, ESuccess | EError | EDefect, Exclude<R2, import("effect/Tracer").ParentSpan> | Exclude<RSuccess, import("effect/Tracer").ParentSpan> | Exclude<RError, import("effect/Tracer").ParentSpan> | Exclude<RDefect, import("effect/Tracer").ParentSpan>> | ((i: any) => Effect.Effect<Exit.Exit<A2, E2>, ESuccess | EError | EDefect, Exclude<R2, import("effect/Tracer").ParentSpan> | Exclude<RSuccess, import("effect/Tracer").ParentSpan> | Exclude<RError, import("effect/Tracer").ParentSpan> | Exclude<RDefect, import("effect/Tracer").ParentSpan>>)) & {
|
|
202
|
-
action: string;
|
|
203
|
-
};
|
|
204
|
-
/**
|
|
205
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
206
|
-
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
207
|
-
* @deprecated use `Command.fn` and friends instead
|
|
208
|
-
*/
|
|
209
|
-
readonly useAndHandleMutationResult: {
|
|
210
|
-
/**
|
|
211
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
212
|
-
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
213
|
-
* @deprecated use `Command.fn` and friends instead
|
|
214
|
-
*/
|
|
215
|
-
<I, E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, I, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): Resp<I, A2, E2, R2, ComputedRef<AsyncResult.AsyncResult<A2, E2>>>;
|
|
216
|
-
/**
|
|
217
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
218
|
-
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
219
|
-
* @deprecated use `Command.fn` and friends instead
|
|
220
|
-
*/
|
|
221
|
-
<E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandler<A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, void, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): ActResp<A2, E2, R2, ComputedRef<AsyncResult.AsyncResult<A2, E2>>>;
|
|
222
|
-
};
|
|
223
|
-
/**
|
|
224
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
225
|
-
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
226
|
-
*
|
|
227
|
-
* @deprecated use `Command.fn` and friends instead
|
|
228
|
-
*/
|
|
229
|
-
readonly useAndHandleMutation: {
|
|
230
|
-
/**
|
|
231
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
232
|
-
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
233
|
-
*
|
|
234
|
-
* @deprecated use `Command.fn` and friends instead
|
|
235
|
-
*/
|
|
236
|
-
<I, E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, I, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): Resp<I, A2, E2, R2>;
|
|
237
|
-
/**
|
|
238
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
239
|
-
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
240
|
-
*
|
|
241
|
-
* @deprecated use `Command.fn` and friends instead
|
|
242
|
-
*/
|
|
243
|
-
<E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandler<A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, void, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): ActResp<A2, E2, R2>;
|
|
244
|
-
};
|
|
245
|
-
/** @deprecated use `Command.fn` and friends instead */
|
|
246
|
-
readonly makeUseAndHandleMutation: (defaultOptions?: Opts<any, any, any, any, any, any, any, any, any>) => {
|
|
247
|
-
<I, E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, I, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): Resp<I, A2, E2, R2>;
|
|
248
|
-
<E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandler<A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, void, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): ActResp<A2, E2, R2>;
|
|
249
|
-
};
|
|
250
|
-
/**
|
|
251
|
-
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
252
|
-
* Messages for success, error and defect toasts can be provided in the Options.
|
|
253
|
-
* @deprecated use `Command.fn` and friends instead
|
|
254
|
-
*/
|
|
255
|
-
readonly useAndHandleMutationSilently: {
|
|
256
|
-
/**
|
|
257
|
-
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
258
|
-
* Messages for success, error and defect toasts can be provided in the Options.
|
|
259
|
-
* @deprecated use `Command.fn` and friends instead
|
|
260
|
-
*/
|
|
261
|
-
<I, E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, I, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): Resp<I, A2, E2, R>;
|
|
262
|
-
/**
|
|
263
|
-
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
264
|
-
* Messages for success, error and defect toasts can be provided in the Options.
|
|
265
|
-
* @deprecated use `Command.fn` and friends instead
|
|
266
|
-
*/
|
|
267
|
-
<E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandler<A, E, R, Request, Name>, action: string, options?: Opts<A, E, R, void, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): ActResp<void, never, R>;
|
|
268
|
-
};
|
|
269
|
-
/**
|
|
270
|
-
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
271
|
-
* Actions for success, error and defect can be provided in the Options.
|
|
272
|
-
* @deprecated use `Command.fn` and friends instead
|
|
273
|
-
*/
|
|
274
|
-
readonly useAndHandleMutationCustom: {
|
|
275
|
-
/**
|
|
276
|
-
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
277
|
-
* Actions for success, error and defect can be provided in the Options.
|
|
278
|
-
* @deprecated use `Command.fn` and friends instead
|
|
279
|
-
*/
|
|
280
|
-
<I, E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>, action: string, options?: LowOptsOptional<A, E, R, I, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): Resp<I, A2, E2, R2>;
|
|
281
|
-
/**
|
|
282
|
-
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
283
|
-
* Actions for success, error and defect can be provided in the Options.
|
|
284
|
-
* @deprecated use `Command.fn` and friends instead
|
|
285
|
-
*/
|
|
286
|
-
<E extends ResponseErrors, A, R, Request extends Req, Name extends string, A2 = A, E2 extends ResponseErrors = E, R2 = R, ESuccess = never, RSuccess = never, EError = never, RError = never, EDefect = never, RDefect = never>(self: RequestHandler<A, E, R, Request, Name>, action: string, options?: LowOptsOptional<A, E, R, void, A2, E2, R2, ESuccess, RSuccess, EError, RError, EDefect, RDefect>): ActResp<A2, E2, R2>;
|
|
287
|
-
};
|
|
288
|
-
/**
|
|
289
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
290
|
-
* you should use the result ref to render errors!
|
|
291
|
-
* @deprecated use `Command.fn` and friends instead
|
|
292
|
-
*/
|
|
293
|
-
readonly useSafeMutationWithState: {
|
|
294
|
-
/**
|
|
295
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
296
|
-
* you should use the result ref to render errors!
|
|
297
|
-
* @deprecated use `Command.fn` and friends instead
|
|
298
|
-
*/
|
|
299
|
-
<I, E, A, R, Request extends Req, Name extends string, A2 = A, E2 = E, R2 = R>(self: RequestHandlerWithInput<I, A, E, R, Request, Name>, options?: MutationOptions<A, E, R, A2, E2, R2, I>): readonly [
|
|
300
|
-
ComputedRef<Res<A, E>>,
|
|
301
|
-
(i: I) => Effect.Effect<Exit.Exit<A2, E2>, never, R2>
|
|
302
|
-
];
|
|
303
|
-
/**
|
|
304
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
305
|
-
* you should use the result ref to render errors!
|
|
306
|
-
* @deprecated use `Command.fn` and friends instead
|
|
307
|
-
*/
|
|
308
|
-
<E, A, R, Request extends Req, Name extends string, A2 = A, E2 = E, R2 = R>(self: RequestHandler<A, E, R, Request, Name>, options?: MutationOptions<A, E, R, A2, E2, R2>): readonly [
|
|
309
|
-
ComputedRef<Res<A, E>>,
|
|
310
|
-
Effect.Effect<Exit.Exit<A2, E2>, never, R2>
|
|
311
|
-
];
|
|
312
|
-
};
|
|
313
|
-
/** @deprecated use OmegaForm */
|
|
314
|
-
readonly buildFormFromSchema: <From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>, C extends Record<PropertyKey, any>, OnSubmitA>(s: S.Codec<To> & {
|
|
315
|
-
new (c: C): any;
|
|
316
|
-
extend: any;
|
|
317
|
-
fields: S.Struct.Fields;
|
|
318
|
-
}, state: Ref<Omit<From, "_tag">>, onSubmit: (a: To) => Effect.Effect<OnSubmitA, never, RT>) => {
|
|
319
|
-
fields: { [K in keyof To]-?: {
|
|
320
|
-
true: {
|
|
321
|
-
true: To[K] extends {
|
|
322
|
-
_tag: string;
|
|
323
|
-
} ? import("./form.js").DiscriminatedUnionFieldInfo<{ [P in import("./form.js").DistributiveNestedFieldInfoKey<To[K]> as P["_infoTag" & keyof P] & string]: P; }> : import("./form.js").UnionFieldInfo<import("./form.js").DistributiveNestedFieldInfoKey<To[K]>[]>;
|
|
324
|
-
false: import("./form.js").NestedFieldInfoKey<To[K]>;
|
|
325
|
-
}[`${To[K] extends object ? true : false}`];
|
|
326
|
-
false: import("./form.js").NestedFieldInfoKey<To[K]>;
|
|
327
|
-
}[`${import("effect-app/utils").IsUnion<To[K]>}`]; };
|
|
328
|
-
/** optimized for Vuetify v-form submit callback */
|
|
329
|
-
submit: <T extends Promise<{
|
|
330
|
-
valid: boolean;
|
|
331
|
-
}>>(e: T) => Promise<unknown>;
|
|
332
|
-
/** optimized for Native form submit callback or general use */
|
|
333
|
-
submitFromState: Effect.Effect<any, unknown, unknown>;
|
|
334
|
-
submitFromStatePromise: () => Promise<unknown>;
|
|
335
|
-
isDirty: Ref<boolean, boolean>;
|
|
336
|
-
isValid: Ref<boolean, boolean>;
|
|
337
|
-
isLoading: Ref<boolean, boolean>;
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
declare const LegacyMutation_base: ServiceMap.ServiceClass<LegacyMutation, "LegacyMutation", <R>(getRuntime: () => ServiceMap.ServiceMap<R>) => LegacyMutationImpl<R>> & {
|
|
341
|
-
readonly make: Effect.Effect<(<R>(getRuntime: () => ServiceMap.ServiceMap<R>) => LegacyMutationImpl<R>), never, I18n | Toast>;
|
|
342
|
-
};
|
|
343
|
-
export declare class LegacyMutation extends LegacyMutation_base {
|
|
344
|
-
static readonly DefaultWithoutDependencies: Layer.Layer<LegacyMutation, never, I18n | Toast>;
|
|
345
|
-
static readonly Default: Layer.Layer<LegacyMutation, never, I18n | Toast>;
|
|
346
|
-
}
|
|
347
|
-
export type ClientFrom<M extends Requests> = RequestHandlers<never, never, M, M["meta"]["moduleName"]>;
|
|
213
|
+
export type ClientFrom<M extends RequestsAny> = RequestHandlers<never, never, M, ExtractModuleName<M>>;
|
|
348
214
|
export declare class QueryImpl<R> {
|
|
349
|
-
readonly getRuntime: () =>
|
|
350
|
-
constructor(getRuntime: () =>
|
|
215
|
+
readonly getRuntime: () => Context.Context<R>;
|
|
216
|
+
constructor(getRuntime: () => Context.Context<R>);
|
|
351
217
|
/**
|
|
352
218
|
* Effect results are passed to the caller, including errors.
|
|
353
219
|
* @deprecated use client helpers instead (.query())
|
|
@@ -400,21 +266,52 @@ export declare class QueryImpl<R> {
|
|
|
400
266
|
};
|
|
401
267
|
}
|
|
402
268
|
type Base = I18n | Toast;
|
|
403
|
-
type Mix = ApiClientFactory | Commander |
|
|
269
|
+
type Mix = ApiClientFactory | Commander | Base;
|
|
270
|
+
type InvalidationResources = Record<string, Record<string, unknown>>;
|
|
271
|
+
type UnionToIntersection<U> = (U extends unknown ? (arg: U) => void : never) extends ((arg: infer I) => void) ? I : never;
|
|
272
|
+
type CommandInvalidationResources<Req> = Req extends {
|
|
273
|
+
readonly type: "command";
|
|
274
|
+
readonly "~invalidationResources"?: infer Resources;
|
|
275
|
+
} ? NonNullable<Resources> extends InvalidationResources ? NonNullable<Resources> : never : Req extends {
|
|
276
|
+
readonly type: "command";
|
|
277
|
+
readonly config?: infer Config;
|
|
278
|
+
} ? Config extends {
|
|
279
|
+
readonly invalidationResources?: infer LegacyResources;
|
|
280
|
+
} ? NonNullable<LegacyResources> extends InvalidationResources ? NonNullable<LegacyResources> : never : Config extends {
|
|
281
|
+
readonly invalidatesQueries?: InvalidationCallback<infer LegacyResources, any, any, any>;
|
|
282
|
+
} ? NonNullable<LegacyResources> extends InvalidationResources ? NonNullable<LegacyResources> : never : never : never;
|
|
283
|
+
type InvalidationResourcesForUnion<M extends RequestsAny> = {
|
|
284
|
+
[K in keyof M]: CommandInvalidationResources<M[K]>;
|
|
285
|
+
}[keyof M];
|
|
286
|
+
type InvalidationResourcesFor<M extends RequestsAny> = [InvalidationResourcesForUnion<M>] extends [never] ? never : UnionToIntersection<InvalidationResourcesForUnion<M>> extends infer R ? R extends InvalidationResources ? R : never : never;
|
|
287
|
+
type QueryInvalidationFactory<M extends RequestsAny> = (client: ClientFrom<M>) => QueryInvalidation<M>;
|
|
288
|
+
type StrictResourcesArg<Shape, Actual extends Shape = Shape> = Actual & Record<Exclude<keyof Actual, keyof Shape>, never>;
|
|
289
|
+
type ClientForArgs<M extends RequestsAny, Resources extends InvalidationResourcesFor<M> = InvalidationResourcesFor<M>> = [InvalidationResourcesFor<M>] extends [never] ? [
|
|
290
|
+
queryInvalidation?: QueryInvalidationFactory<M>,
|
|
291
|
+
invalidationResources?: StrictResourcesArg<InvalidationResourcesFor<M>, Resources>
|
|
292
|
+
] : [
|
|
293
|
+
queryInvalidation: QueryInvalidationFactory<M> | undefined,
|
|
294
|
+
invalidationResources: StrictResourcesArg<InvalidationResourcesFor<M>, Resources>
|
|
295
|
+
];
|
|
404
296
|
export declare const makeClient: <RT_, RTHooks>(getBaseMrt: () => ManagedRuntime.ManagedRuntime<RT_ | Mix, never>, clientFor_: ReturnType<(typeof ApiClientFactory)["makeFor"]>, rtHooks: Layer.Layer<RTHooks, never, Mix>) => {
|
|
405
|
-
Command: CommanderResolved<
|
|
406
|
-
useCommand: () => CommanderResolved<
|
|
407
|
-
clientFor: <M extends
|
|
408
|
-
mutate: MutationWithExtensions<RTHooks | (
|
|
409
|
-
} &
|
|
410
|
-
|
|
297
|
+
Command: CommanderResolved<RT_ | Mix, RTHooks>;
|
|
298
|
+
useCommand: () => CommanderResolved<RT_ | Mix, RTHooks>;
|
|
299
|
+
clientFor: <M extends RequestsAny, Resources extends InvalidationResourcesFor<M> = InvalidationResourcesFor<M>>(m: M, ...args: ClientForArgs<M, Resources>) => { [Key in keyof RequestHandlers<never, never, M, ExtractModuleName<M>>]: RequestHandlers<never, never, M, ExtractModuleName<M>>[Key] & (QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? {} : QueryRequestWithExtensions<QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>> & Queries<RT_ | Mix, QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>> & QueryProjection<RT_ | Mix, QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>) & (CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? {} : CommandRequestWithExtensions<RTHooks | (RT_ | Mix), CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>) & (CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? {} : {
|
|
300
|
+
mutate: MutationWithExtensions<RTHooks | (RT_ | Mix), CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>;
|
|
301
|
+
}) & (StreamHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? {} : {
|
|
302
|
+
mutateStream: StreamMutationWithExtensions<StreamHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>;
|
|
303
|
+
wrapStream: StreamCommandWithExtensions<RTHooks | (RT_ | Mix), StreamHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>;
|
|
304
|
+
fn: StreamFnExtension<RTHooks | (RT_ | Mix), StreamHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>;
|
|
305
|
+
}) & {
|
|
306
|
+
Input: RequestHandlers<never, never, M, ExtractModuleName<M>>[Key] extends RequestHandlerWithInput<infer I, any, any, any, any, any> ? I : never;
|
|
307
|
+
}; } & {
|
|
308
|
+
helpers: { [Key in keyof RequestHandlers<never, never, M, ExtractModuleName<M>> as CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? never : `${ToCamel<string & Key>}Request`]: CommandRequestWithExtensions<RTHooks | (RT_ | Mix), CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>; } & { [Key in keyof RequestHandlers<never, never, M, ExtractModuleName<M>> as CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? never : `${ToCamel<string & Key>}Mutation`]: MutationWithExtensions<RTHooks | (RT_ | Mix), CommandHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>; } & { [Key in keyof RequestHandlers<never, never, M, ExtractModuleName<M>> as StreamHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? never : `${ToCamel<string & Key>}Stream`]: StreamMutationWithExtensions<StreamHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>> & {
|
|
309
|
+
fn: StreamFnExtension<RTHooks | (RT_ | Mix), StreamHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>;
|
|
310
|
+
}; } & { [Key in keyof RequestHandlers<never, never, M, ExtractModuleName<M>> as QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? never : `${ToCamel<string & Key>}Query`]: Queries<RT_ | Mix, QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>["query"]; } & { [Key in keyof RequestHandlers<never, never, M, ExtractModuleName<M>> as QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]> extends never ? never : `${ToCamel<string & Key>}SuspenseQuery`]: Queries<RT_ | Mix, QueryHandler<RequestHandlers<never, never, M, ExtractModuleName<M>>[Key]>>["suspense"]; };
|
|
411
311
|
};
|
|
412
|
-
legacy: Legacy<Mix | RT_>;
|
|
413
312
|
};
|
|
414
|
-
export interface Legacy<R> extends Pick<QueryImpl<R>, "useQuery" | "useSuspenseQuery">, Omit<LegacyMutationImpl<R>, "getRuntime" | "toast" | "intl"> {
|
|
415
|
-
}
|
|
416
313
|
export type QueryInvalidation<M> = {
|
|
417
|
-
[K in keyof M]?: (defaultKey: string[], name: string) => {
|
|
314
|
+
[K in keyof M]?: (defaultKey: string[], name: string, input?: unknown, output?: ExitResult.Exit<unknown, unknown>) => {
|
|
418
315
|
filters?: InvalidateQueryFilters | undefined;
|
|
419
316
|
options?: InvalidateOptions | undefined;
|
|
420
317
|
}[];
|
|
@@ -427,10 +324,14 @@ export interface CommandBase<I = void, A = void> {
|
|
|
427
324
|
allowed: boolean;
|
|
428
325
|
action: string;
|
|
429
326
|
label: string;
|
|
327
|
+
/** formatted progress info for current `running` state, when `progress` was supplied */
|
|
328
|
+
progress?: Progress | undefined;
|
|
430
329
|
}
|
|
431
330
|
export interface EffectCommand<I = void, A = unknown, E = unknown> extends CommandBase<I, Fiber<A, E>> {
|
|
432
331
|
}
|
|
433
|
-
export interface CommandFromRequest<I extends
|
|
332
|
+
export interface CommandFromRequest<I extends {
|
|
333
|
+
readonly make: (...args: any[]) => any;
|
|
334
|
+
}, A = unknown, E = unknown> extends EffectCommand<RequestInputFromMake<I>, A, E> {
|
|
434
335
|
}
|
|
435
336
|
export {};
|
|
436
|
-
//# sourceMappingURL=makeClient.d.ts.map
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21ha2VDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQUUsS0FBSyxzQkFBc0IsRUFBb0IsS0FBSyxtQkFBbUIsRUFBRSxLQUFLLGNBQWMsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFbkwsT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLE1BQU0sRUFBYyxLQUFLLEtBQUssRUFBRSxLQUFLLGNBQWMsRUFBRSxDQUFDLEVBQVUsTUFBTSxZQUFZLENBQUE7QUFDekcsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3ROLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDeEUsT0FBTyxLQUFLLEtBQUssVUFBVSxNQUFNLGFBQWEsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsS0FBSyxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxLQUFLLFdBQVcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNyRSxPQUFPLEVBQVksS0FBSyxXQUFXLEVBQXdCLEtBQUssV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBbUIsS0FBSyxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQWtCLE1BQU0scUJBQXFCLENBQUE7QUFDNUUsT0FBTyxFQUFvQyxLQUFLLG1CQUFtQixFQUFtQixNQUFNLGFBQWEsQ0FBQTtBQUN6RyxPQUFPLEVBQUUsS0FBSyxrQ0FBa0MsRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFL0UsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBd0J2QyxNQUFNLFdBQVcsd0JBQXdCLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6RTs7c0NBRWtDO0lBQ2xDLElBQUksRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNoRTtvQ0FDZ0M7SUFDaEMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUE7Q0FDakQ7QUFFRCxtQkFBbUI7QUFDbkIsTUFBTSxXQUFXLG1CQUFtQixDQUNsQyxFQUFFLEVBQ0YsRUFBRSxTQUFTLE1BQU0sRUFDakIsQ0FBQyxFQUNELENBQUMsRUFDRCxDQUFDLEVBQ0QsQ0FBQyxDQUNELFNBQVEsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRjs7O09BR0c7SUFDSCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtDQUMxQztBQUVELE1BQU0sV0FBVyxVQUFVLENBQ3pCLEVBQUUsRUFDRixFQUFFLFNBQVMsTUFBTSxFQUNqQixDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsQ0FDRCxTQUNBLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQ3JDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM3RCx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUvQzs7O09BR0c7SUFDSCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0NBQ2hDO0FBRUQsTUFBTSxNQUFNLDRCQUE0QixDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxTQUNyRCx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUNuRixtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUN2QyxHQUFHLFNBQVMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDN0csS0FBSyxDQUFBO0FBRVQsTUFBTSxXQUFXLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDbEQ7OztPQUdHO0lBQ0gsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7Q0FDMUM7QUFFRCxNQUFNLFdBQVcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0Qzs7O09BR0c7SUFDSCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0NBQ2hDO0FBRUQsTUFBTSxNQUFNLDBCQUEwQixDQUFDLEdBQUcsSUFBSSxHQUFHLFNBQy9DLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQ3BGLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUNwQyxHQUFHLFNBQVMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQzNHLEtBQUssQ0FBQTtBQUVULEtBQUssWUFBWSxDQUFDLEdBQUcsSUFBSSxHQUFHLFNBQzFCLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQ2xGLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQzFGLEdBQUcsU0FBUyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FDNUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLE9BQU8sR0FBRyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FDaEYsS0FBSyxDQUFBO0FBRVQsS0FBSyxjQUFjLENBQUMsR0FBRyxJQUFJLEdBQUcsU0FDNUIsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FDbEYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FDNUYsR0FBRyxTQUFTLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUM1RSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUNsRixLQUFLLENBQUE7QUFFVCxLQUFLLGFBQWEsQ0FBQyxHQUFHLElBQUksR0FBRyxTQUMzQiw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUNyRyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsUUFBUSxHQUFHLDZCQUE2QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FDeEcsR0FBRyxTQUFTLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sS0FBSyxDQUFDLEdBQy9GLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxRQUFRLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQzlGLEtBQUssQ0FBQTtBQUVULE1BQU0sV0FBVyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ25FOztzQ0FFa0M7SUFDbEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0NBQ2pFO0FBRUQsbUJBQW1CO0FBQ25CLE1BQU0sV0FBVyxvQkFBb0IsQ0FDbkMsRUFBRSxFQUNGLEVBQUUsU0FBUyxNQUFNLEVBQ2pCLENBQUMsRUFDRCxDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFDRCxFQUFFLEdBQUcsT0FBTyxDQUNaLFNBQVEsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUM7Ozs7Ozs7Ozs7T0FVRztJQUNILENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQzVCLEtBQUssRUFBRSxDQUFDLEVBQ1IsT0FBTyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBRW5DLE9BQU8sRUFBRSxDQUFDLFVBQVUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUNoQyxNQUFNLEVBQUUsRUFBRSxTQUFTLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLEdBQUcsS0FBSyxLQUMxRCxvQkFBb0IsQ0FDdkIsRUFBRSxFQUNGLEVBQUUsRUFDRixDQUFDLEVBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUNqQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFDeEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQzVCLENBQUE7Q0FDRjtBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sV0FBVyxXQUFXLENBQzFCLEVBQUUsRUFDRixFQUFFLFNBQVMsTUFBTSxFQUNqQixDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFDRCxFQUFFLEdBQUcsT0FBTyxDQUNaLFNBQVEsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQ7Ozs7Ozs7T0FPRztJQUNILENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQzVCLE9BQU8sQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUVuQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFDaEMsTUFBTSxFQUFFLEVBQUUsU0FBUyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxHQUFHLEtBQUssS0FDMUQsV0FBVyxDQUNkLEVBQUUsRUFDRixFQUFFLEVBQ0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUNqQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFDeEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQzVCLENBQUE7Q0FDRjtBQUVELE1BQU0sTUFBTSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsU0FDL0MsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FDbEYsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FDN0UsR0FBRyxTQUFTLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUM1RSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUNuRSxLQUFLLENBQUE7QUFFVDs7Ozs7O0dBTUc7QUFDSCxNQUFNLE1BQU0sdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSTtJQUMxQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxRQUFRLEdBQUcsU0FBUyxDQUFBO0NBQzNFLENBQUE7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE1BQU0sNEJBQTRCLENBQUMsR0FBRyxJQUFJLEdBQUcsU0FDakQsNkJBQTZCLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FDcEcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FDdkMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FDbkc7SUFDQSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUNmLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM3RCxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQTtDQUN0RCxDQUFDLEdBQ0Y7SUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQTtDQUFFLEdBQ3JCLEdBQUcsU0FBUyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUM5RixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUN2QyxTQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQ3JGO0lBQ0EsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDZixRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUE7Q0FDdEQsQ0FBQyxHQUNGO0lBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUE7Q0FBRSxHQUN2QixLQUFLLENBQUE7QUFFVDs7OztHQUlHO0FBQ0gsTUFBTSxNQUFNLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxTQUNwRCw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQyxHQUN2RyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDMUQsR0FBRyxTQUFTLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLEdBQ2pHLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUMvRCxLQUFLLENBQUE7QUFFVDs7O0dBR0c7QUFDSCxNQUFNLE1BQU0saUJBQWlCLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLFNBQzFDLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLEdBQzNHLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQzVDLEdBQUcsU0FBUyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQyxHQUNwRyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxHQUM5QyxLQUFLLENBQUE7QUFJVCxPQUFPLENBQUMsTUFBTSxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBRW5ELE9BQU8sQ0FBQyxNQUFNLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0FBRW5FLE1BQU0sV0FBVyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLFNBQVMsR0FBRyxFQUFFLEVBQUUsU0FBUyxNQUFNO0lBQ25GLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQ3BGLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDbkMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUMvRixtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0NBQ3BDO0FBRUQsTUFBTSxNQUFNLGVBQWUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxJQUFJLFVBQVUsU0FDdEQsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FDbkYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLE9BQU8sR0FBRztJQUNoQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFDaEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLEdBQUcsS0FBSyxLQUMzRixhQUFhLENBQ2hCLEVBQUUsRUFDRixDQUFDLEVBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUNqQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFDeEMsT0FBTyxFQUNQLEVBQUUsQ0FDSCxDQUFBO0NBQ0YsR0FDRCxFQUFFLEdBQ0YsVUFBVSxTQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUNwRixPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsT0FBTyxHQUFHO0lBQ2hDLE9BQU8sRUFBRSxDQUFDLFVBQVUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUNoQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxLQUFLLEtBQzNGLGFBQWEsQ0FDaEIsRUFBRSxFQUNGLElBQUksRUFDSixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDekIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQ2pCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUN4QyxPQUFPLEVBQ1AsRUFBRSxDQUNILENBQUE7Q0FDRixHQUNELEVBQUUsR0FDSixFQUFFLENBQUE7QUFFTixNQUFNLFdBQVcsZ0JBQWdCLENBQUMsT0FBTyxTQUFTLEdBQUcsRUFBRSxFQUFFLFNBQVMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMvRTs7OztPQUlHO0lBQ0gsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUV6RDs7O09BR0c7SUFDSCxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7Q0FDckU7QUFDRCxNQUFNLFdBQVcsbUJBQW1CLENBQUMsT0FBTyxTQUFTLEdBQUcsRUFBRSxFQUFFLFNBQVMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQy9FOzs7O09BSUc7SUFDSCxLQUFLLEVBQUUsVUFBVSxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFdEQ7OztPQUdHO0lBQ0gsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7Q0FDbEU7QUFFRCxNQUFNLE1BQU0sbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSTtJQUN2QyxPQUFPLEVBQUUsNERBQTRELENBQUE7SUFDckUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7Q0FDN0IsQ0FBQTtBQUVELE1BQU0sTUFBTSxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLFNBQ2hDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQ2xGLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUNyRztJQUNBLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3RDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0NBQzFDLEdBQ0QsS0FBSyxHQUNMLEdBQUcsU0FBUyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FDNUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDckc7SUFBRSxLQUFLLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0NBQUUsR0FDdkYsS0FBSyxHQUNQLEtBQUssQ0FBQTtBQUVULFFBQUEsTUFBTSxZQUFZOzs7Q0FBaUIsQ0FBQTtBQVVuQzs7OztHQUlHO0FBQ0gsZUFBTyxNQUFNLFdBQVcsRUFBRSxPQUFPLFlBYXRCLENBQUE7QUFFWDs7OztHQUlHO0FBQ0gsZUFBTyxNQUFNLGNBQWM7OztDQWdCMUIsQ0FBQTtBQUVELE1BQU0sTUFBTSxVQUFVLENBQUMsQ0FBQyxTQUFTLFdBQVcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUV0RyxxQkFBYSxTQUFTLENBQUMsQ0FBQztJQUNWLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUF6RCxZQUFxQixVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUV4RDtJQUNEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFbEQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekI7Ozs7O1dBS0c7UUFDSCxDQUNFLENBQUMsRUFDRCxDQUFDLEVBQ0QsT0FBTyxTQUFTLEdBQUcsRUFDbkIsSUFBSSxTQUFTLE1BQU0sRUFFbkIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQzNDO1lBQ0Q7Ozs7ZUFJRztZQUNILENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FDN0UsU0FBUztnQkFDUCxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xCLENBQ0UsT0FBTyxDQUFDLEVBQUUsY0FBYyxLQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakQsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQzthQUM3QixDQUNGLENBQUE7U0FDRixDQUFBO1FBQ0Q7Ozs7V0FJRztRQUNILENBQ0UsR0FBRyxFQUNILENBQUMsRUFDRCxDQUFDLEVBQ0QsT0FBTyxTQUFTLEdBQUcsRUFDbkIsSUFBSSxTQUFTLE1BQU0sRUFFbkIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQ3pEO1lBQ0Q7Ozs7ZUFJRztZQUNILENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FDMUcsU0FBUztnQkFDUCxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xCLENBQ0UsT0FBTyxDQUFDLEVBQUUsY0FBYyxLQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakQsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQzthQUM3QixDQUNGLENBQUE7U0FDRixDQUFBO0tBQ0YsQ0FrREE7Q0FDRjtBQUtELEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUE7QUFDeEIsS0FBSyxHQUFHLEdBQUcsZ0JBQWdCLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQTtBQUU5QyxLQUFLLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3BFLEtBQUssbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUM3RyxLQUFLLENBQUE7QUFFVCxLQUFLLDRCQUE0QixDQUFDLEdBQUcsSUFBSSxHQUFHLFNBQVM7SUFDbkQsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUE7SUFDeEIsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsTUFBTSxTQUFTLENBQUE7Q0FDcEQsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMscUJBQXFCLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssR0FDckYsR0FBRyxTQUFTO0lBQ1osUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUE7SUFDeEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sTUFBTSxDQUFBO0NBQy9CLEdBQUcsTUFBTSxTQUFTO0lBQ2YsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxlQUFlLENBQUE7Q0FDdkQsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLFNBQVMscUJBQXFCLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEtBQUssR0FDbkcsTUFBTSxTQUFTO0lBQ2YsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsb0JBQW9CLENBQUMsTUFBTSxlQUFlLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtDQUN6RixHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxxQkFBcUIsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxHQUNuRyxLQUFLLEdBQ1AsS0FBSyxDQUFBO0FBRVQsS0FBSyw2QkFBNkIsQ0FBQyxDQUFDLFNBQVMsV0FBVyxJQUFJO0tBQ3pELENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0FBRVYsS0FBSyx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsV0FBVyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FDN0csbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMscUJBQXFCLEdBQUcsQ0FBQyxHQUN6RyxLQUFLLEdBQ1AsS0FBSyxDQUFBO0FBRVQsS0FBSyx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsV0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUV0RyxLQUFLLGtCQUFrQixDQUFDLEtBQUssRUFBRSxNQUFNLFNBQVMsS0FBSyxHQUFHLEtBQUssSUFDdkQsTUFBTSxHQUNOLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUVyRCxLQUFLLGFBQWEsQ0FDaEIsQ0FBQyxTQUFTLFdBQVcsRUFDckIsU0FBUyxTQUFTLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUN6RSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRztJQUNoRCxpQkFBaUIsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQztJQUMvQyxxQkFBcUIsQ0FBQyxFQUFFLGtCQUFrQixDQUN4Qyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsRUFDM0IsU0FBUyxDQUNWO0NBQ0YsR0FDQztJQUNBLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVM7SUFDMUQscUJBQXFCLEVBQUUsa0JBQWtCLENBQ3ZDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxFQUMzQixTQUFTLENBQ1Y7Q0FDRixDQUFBO0FBRUgsZUFBTyxNQUFNLFVBQVUsR0FBSSxHQUFHLEVBQUUsT0FBTyxjQUV6QixNQUFNLGNBQWMsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsY0FDckQsVUFBVSxDQUFDLENBQUEsT0FBTyxnQkFBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxXQUNqRCxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDOzs7Z0JBa2F2QyxDQUFDLFNBQVMsV0FBVyxFQUNyQixTQUFTLFNBQVMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLG1DQUUxQyxDQUFDLFdBQ0ssYUFBYSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsUUE5Qy9CLEdBQUc7Ozs7Ozs7aUhBaUJrRSxDQUFDOztvQkF0UnJFLEdBQUcscVZBd0RILEdBQUcsZ1ZBNERILEdBQUc7O2tCQTVKRCxHQUFHLHVUQVFILEdBQUc7O0NBOFhkLENBQUE7QUFFRCxNQUFNLE1BQU0saUJBQWlCLENBQUMsQ0FBQyxJQUFJO0tBQ2hDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDZixVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQ3BCLElBQUksRUFBRSxNQUFNLEVBQ1osS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUNmLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUN2QztRQUNILE9BQU8sQ0FBQyxFQUFFLHNCQUFzQixHQUFHLFNBQVMsQ0FBQTtRQUM1QyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsR0FBRyxTQUFTLENBQUE7S0FDeEMsRUFBRTtDQUNKLENBQUE7QUFFRCxNQUFNLE1BQU0sT0FBTyxDQUFDLENBQUMsU0FBUyxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsTUFBTSxHQUN0RSxDQUFDLFNBQVMsR0FBRyxNQUFNLElBQUksSUFBSSxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUM3RixZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQ2YsS0FBSyxDQUFBO0FBRVQsTUFBTSxXQUFXLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJO0lBQzdDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUE7SUFDaEIsT0FBTyxFQUFFLE9BQU8sQ0FBQTtJQUNoQixPQUFPLEVBQUUsT0FBTyxDQUFBO0lBQ2hCLE1BQU0sRUFBRSxNQUFNLENBQUE7SUFDZCxLQUFLLEVBQUUsTUFBTSxDQUFBO0lBQ2Isd0ZBQXdGO0lBQ3hGLFFBQVEsQ0FBQyxFQUFFLFFBQVEsR0FBRyxTQUFTLENBQUE7Q0FDaEM7QUFFRCxNQUFNLFdBQVcsYUFBYSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFFLFNBQVEsV0FBVyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQUc7QUFFekcsTUFBTSxXQUFXLGtCQUFrQixDQUFDLENBQUMsU0FBUztJQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLENBQUE7Q0FBRSxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FDaEgsU0FBUSxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNwRCJ9
|