effect-app 4.0.0-beta.28 → 4.0.0-beta.280
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 +1312 -0
- package/dist/Array.d.ts +2 -1
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +4 -4
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Config/SecretURL.d.ts +3 -1
- package/dist/Config/SecretURL.d.ts.map +1 -1
- package/dist/Config/SecretURL.js +3 -6
- package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
- package/dist/Config/internal/configSecretURL.js +2 -2
- package/dist/Config.d.ts +2 -0
- package/dist/Config.d.ts.map +1 -0
- package/dist/Config.js +8 -0
- package/dist/ConfigProvider.d.ts +2 -0
- package/dist/ConfigProvider.d.ts.map +1 -0
- package/dist/ConfigProvider.js +6 -0
- package/dist/{ServiceMap.d.ts → Context.d.ts} +18 -20
- package/dist/Context.d.ts.map +1 -0
- package/dist/Context.js +67 -0
- package/dist/Effect.d.ts +10 -9
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +5 -8
- package/dist/Emailer.d.ts +51 -0
- package/dist/Emailer.d.ts.map +1 -0
- package/dist/Emailer.js +7 -0
- package/dist/Function.d.ts.map +1 -1
- package/dist/Layer.d.ts +10 -6
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +3 -2
- package/dist/Model/Repository/Registry.d.ts +22 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +18 -0
- package/dist/Model/Repository/ext.d.ts +60 -0
- package/dist/Model/Repository/ext.d.ts.map +1 -0
- package/dist/Model/Repository/ext.js +122 -0
- package/dist/Model/Repository/internal/internal.d.ts +63 -0
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
- package/dist/Model/Repository/internal/internal.js +430 -0
- package/dist/Model/Repository/legacy.d.ts +21 -0
- package/dist/Model/Repository/legacy.d.ts.map +1 -0
- package/dist/Model/Repository/legacy.js +2 -0
- package/dist/Model/Repository/makeRepo.d.ts +54 -0
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
- package/dist/Model/Repository/makeRepo.js +27 -0
- package/dist/Model/Repository/service.d.ts +121 -0
- package/dist/Model/Repository/service.d.ts.map +1 -0
- package/dist/Model/Repository/service.js +2 -0
- package/dist/Model/Repository/validation.d.ts +58 -0
- package/dist/Model/Repository/validation.d.ts.map +1 -0
- package/dist/Model/Repository/validation.js +32 -0
- package/dist/Model/Repository.d.ts +7 -0
- package/dist/Model/Repository.d.ts.map +1 -0
- package/dist/Model/Repository.js +7 -0
- package/dist/Model/dsl.d.ts +33 -0
- package/dist/Model/dsl.d.ts.map +1 -0
- package/dist/Model/dsl.js +43 -0
- package/dist/Model/filter/filterApi.d.ts +30 -0
- package/dist/Model/filter/filterApi.d.ts.map +1 -0
- package/dist/Model/filter/filterApi.js +2 -0
- package/dist/Model/filter/types/errors.d.ts +29 -0
- package/dist/Model/filter/types/errors.d.ts.map +1 -0
- package/dist/Model/filter/types/errors.js +2 -0
- package/dist/Model/filter/types/fields.d.ts +15 -0
- package/dist/Model/filter/types/fields.d.ts.map +1 -0
- package/dist/Model/filter/types/fields.js +2 -0
- package/dist/Model/filter/types/path/common.d.ts +316 -0
- package/dist/Model/filter/types/path/common.d.ts.map +1 -0
- package/dist/Model/filter/types/path/common.js +2 -0
- package/dist/Model/filter/types/path/eager.d.ts +94 -0
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
- package/dist/Model/filter/types/path/eager.js +36 -0
- package/dist/Model/filter/types/path/index.d.ts +4 -0
- package/dist/Model/filter/types/path/index.d.ts.map +1 -0
- package/dist/Model/filter/types/path/index.js +3 -0
- package/dist/Model/filter/types/utils.d.ts +79 -0
- package/dist/Model/filter/types/utils.d.ts.map +1 -0
- package/dist/Model/filter/types/utils.js +2 -0
- package/dist/Model/filter/types/validator.d.ts +30 -0
- package/dist/Model/filter/types/validator.d.ts.map +1 -0
- package/dist/Model/filter/types/validator.js +2 -0
- package/dist/Model/filter/types.d.ts +5 -0
- package/dist/Model/filter/types.d.ts.map +1 -0
- package/dist/Model/filter/types.js +7 -0
- package/dist/Model/query/dsl.d.ts +493 -0
- package/dist/Model/query/dsl.d.ts.map +1 -0
- package/dist/Model/query/dsl.js +376 -0
- package/dist/Model/query/new-kid-interpreter.d.ts +136 -0
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
- package/dist/Model/query/new-kid-interpreter.js +336 -0
- package/dist/Model/query.d.ts +15 -0
- package/dist/Model/query.d.ts.map +1 -0
- package/dist/Model/query.js +3 -0
- package/dist/Model.d.ts +5 -0
- package/dist/Model.d.ts.map +1 -0
- package/dist/Model.js +5 -0
- package/dist/NonEmptySet.d.ts +3 -1
- package/dist/NonEmptySet.d.ts.map +1 -1
- package/dist/NonEmptySet.js +2 -2
- package/dist/Option.d.ts +1 -0
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +3 -1
- package/dist/Pure.d.ts +7 -5
- package/dist/Pure.d.ts.map +1 -1
- package/dist/Pure.js +7 -4
- package/dist/QueueMaker.d.ts +13 -0
- package/dist/QueueMaker.d.ts.map +1 -0
- package/dist/QueueMaker.js +4 -0
- package/dist/RequestContext.d.ts +154 -0
- package/dist/RequestContext.d.ts.map +1 -0
- package/dist/RequestContext.js +54 -0
- package/dist/Schema/Class.d.ts +188 -19
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +260 -17
- package/dist/Schema/FastCheck.d.ts.map +1 -1
- package/dist/Schema/SchemaParser.d.ts +5 -0
- package/dist/Schema/SchemaParser.d.ts.map +1 -0
- package/dist/Schema/SchemaParser.js +6 -0
- package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
- package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
- package/dist/Schema/SpecialJsonSchema.js +118 -0
- package/dist/Schema/SpecialOpenApi.d.ts +32 -0
- package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
- package/dist/Schema/SpecialOpenApi.js +123 -0
- package/dist/Schema/brand.d.ts +4 -2
- package/dist/Schema/brand.d.ts.map +1 -1
- package/dist/Schema/brand.js +3 -1
- package/dist/Schema/email.d.ts.map +1 -1
- package/dist/Schema/email.js +7 -4
- package/dist/Schema/ext.d.ts +338 -55
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +358 -53
- package/dist/Schema/moreStrings.d.ts +82 -36
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +49 -42
- package/dist/Schema/numbers.d.ts +34 -21
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/numbers.js +55 -12
- package/dist/Schema/phoneNumber.d.ts.map +1 -1
- package/dist/Schema/phoneNumber.js +6 -3
- package/dist/Schema/strings.d.ts +18 -4
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema/strings.js +1 -5
- package/dist/Schema.d.ts +213 -7
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +190 -11
- package/dist/Set.d.ts +4 -1
- package/dist/Set.d.ts.map +1 -1
- package/dist/Set.js +3 -2
- package/dist/Store.d.ts +170 -0
- package/dist/Store.d.ts.map +1 -0
- package/dist/Store.js +121 -0
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +4 -2
- package/dist/_ext/misc.d.ts +4 -1
- package/dist/_ext/misc.d.ts.map +1 -1
- package/dist/_ext/misc.js +4 -2
- package/dist/_ext/ord.ext.d.ts +2 -1
- package/dist/_ext/ord.ext.d.ts.map +1 -1
- package/dist/_ext/ord.ext.js +2 -2
- package/dist/builtin.d.ts +2 -14
- package/dist/builtin.d.ts.map +1 -1
- package/dist/builtin.js +1 -1
- package/dist/client/InvalidationKeys.d.ts +29 -0
- package/dist/client/InvalidationKeys.d.ts.map +1 -0
- package/dist/client/InvalidationKeys.js +33 -0
- package/dist/client/apiClientFactory.d.ts +19 -31
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +104 -34
- package/dist/client/clientFor.d.ts +53 -18
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/clientFor.js +9 -1
- package/dist/client/errors.d.ts +82 -27
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +75 -19
- package/dist/client/makeClient.d.ts +495 -32
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +66 -24
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/faker.d.ts.map +1 -1
- package/dist/http/Request.d.ts +1 -1
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +2 -2
- package/dist/ids.d.ts +42 -14
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +30 -5
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/middleware.d.ts +13 -7
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +14 -8
- package/dist/rpc/Invalidation.d.ts +420 -0
- package/dist/rpc/Invalidation.d.ts.map +1 -0
- package/dist/rpc/Invalidation.js +168 -0
- package/dist/rpc/MiddlewareMaker.d.ts +11 -7
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +59 -38
- package/dist/rpc/RpcContextMap.d.ts +3 -3
- package/dist/rpc/RpcContextMap.d.ts.map +1 -1
- package/dist/rpc/RpcContextMap.js +4 -4
- package/dist/rpc/RpcMiddleware.d.ts +14 -10
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +1 -1
- package/dist/rpc.d.ts +1 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -2
- package/dist/runtime.d.ts +19 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +40 -0
- package/dist/setupRequest.d.ts +19 -0
- package/dist/setupRequest.d.ts.map +1 -0
- package/dist/setupRequest.js +69 -0
- package/dist/toast.d.ts +51 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +34 -0
- package/dist/transform.d.ts +1 -1
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +4 -5
- package/dist/utils/effectify.d.ts +1 -1
- package/dist/utils/effectify.d.ts.map +1 -1
- package/dist/utils/effectify.js +2 -2
- package/dist/utils/extend.d.ts.map +1 -1
- package/dist/utils/gen.d.ts +4 -4
- package/dist/utils/gen.d.ts.map +1 -1
- package/dist/utils/logLevel.d.ts +2 -2
- package/dist/utils/logLevel.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +4 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +4 -4
- package/dist/utils.d.ts +34 -39
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +33 -37
- package/dist/validation/validators.d.ts.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/withToast.d.ts +30 -0
- package/dist/withToast.d.ts.map +1 -0
- package/dist/withToast.js +64 -0
- package/package.json +22 -251
- package/src/Array.ts +5 -5
- package/src/Chunk.ts +3 -3
- package/src/Config/SecretURL.ts +6 -3
- package/src/Config/internal/configSecretURL.ts +2 -2
- package/src/Config.ts +7 -0
- package/src/ConfigProvider.ts +5 -0
- package/src/{ServiceMap.ts → Context.ts} +56 -63
- package/src/Effect.ts +14 -16
- package/src/Emailer.ts +51 -0
- package/src/Inputify.type.ts +1 -1
- package/src/Layer.ts +11 -7
- package/src/Model/Repository/Registry.ts +35 -0
- package/src/Model/Repository/ext.ts +375 -0
- package/src/Model/Repository/internal/internal.ts +741 -0
- package/src/Model/Repository/legacy.ts +29 -0
- package/src/Model/Repository/makeRepo.ts +145 -0
- package/src/Model/Repository/service.ts +676 -0
- package/src/Model/Repository/validation.ts +31 -0
- package/src/Model/Repository.ts +6 -0
- package/src/Model/dsl.ts +129 -0
- package/src/Model/filter/filterApi.ts +60 -0
- package/src/Model/filter/types/errors.ts +47 -0
- package/src/Model/filter/types/fields.ts +50 -0
- package/src/Model/filter/types/path/common.ts +404 -0
- package/src/Model/filter/types/path/eager.ts +329 -0
- package/src/Model/filter/types/path/index.ts +4 -0
- package/src/Model/filter/types/utils.ts +128 -0
- package/src/Model/filter/types/validator.ts +46 -0
- package/src/Model/filter/types.ts +6 -0
- package/src/Model/query/dsl.ts +2694 -0
- package/src/Model/query/new-kid-interpreter.ts +484 -0
- package/src/Model/query.ts +13 -0
- package/src/Model.ts +4 -0
- package/src/NonEmptySet.ts +6 -4
- package/src/Option.ts +2 -0
- package/src/Pure.ts +10 -7
- package/src/QueueMaker.ts +19 -0
- package/src/RequestContext.ts +95 -0
- package/src/Schema/Class.ts +633 -59
- package/src/Schema/SchemaParser.ts +12 -0
- package/src/Schema/SpecialJsonSchema.ts +139 -0
- package/src/Schema/SpecialOpenApi.ts +130 -0
- package/src/Schema/brand.ts +22 -2
- package/src/Schema/email.ts +9 -4
- package/src/Schema/ext.ts +446 -91
- package/src/Schema/moreStrings.ts +147 -68
- package/src/Schema/numbers.ts +97 -28
- package/src/Schema/phoneNumber.ts +9 -5
- package/src/Schema/strings.ts +23 -14
- package/src/Schema.ts +389 -25
- package/src/Set.ts +6 -2
- package/src/Store.ts +277 -0
- package/src/_ext/Array.ts +4 -2
- package/src/_ext/misc.ts +4 -1
- package/src/_ext/ord.ext.ts +2 -1
- package/src/builtin-json.d.ts +24 -0
- package/src/builtin.ts +16 -21
- package/src/client/InvalidationKeys.ts +50 -0
- package/src/client/apiClientFactory.ts +234 -135
- package/src/client/clientFor.ts +106 -34
- package/src/client/errors.ts +100 -29
- package/src/client/makeClient.ts +593 -73
- package/src/client.ts +5 -4
- package/src/http/Request.ts +3 -3
- package/src/http.ts +1 -1
- package/src/ids.ts +33 -6
- package/src/index.ts +20 -23
- package/src/middleware.ts +13 -9
- package/src/rpc/Invalidation.ts +261 -0
- package/src/rpc/MiddlewareMaker.ts +88 -80
- package/src/rpc/README.md +2 -2
- package/src/rpc/RpcContextMap.ts +7 -6
- package/src/rpc/RpcMiddleware.ts +19 -13
- package/src/rpc.ts +4 -4
- package/src/runtime.ts +56 -0
- package/src/setupRequest.ts +134 -0
- package/src/toast.ts +54 -0
- package/src/transform.ts +4 -4
- package/src/utils/effectify.ts +1 -1
- package/src/utils/gen.ts +8 -8
- package/src/utils/logLevel.ts +1 -1
- package/src/utils/logger.ts +4 -3
- package/src/utils.ts +85 -158
- package/src/validation.ts +2 -2
- package/src/withToast.ts +133 -0
- package/test/dist/rpc.test.d.ts.map +1 -1
- package/test/dist/secretURL.test.d.ts.map +1 -0
- package/test/dist/special.test.d.ts.map +1 -0
- package/test/moreStrings.test.ts +1 -1
- package/test/rpc.test.ts +46 -6
- package/test/schema.test.ts +459 -30
- package/test/secretURL.test.ts +160 -0
- package/test/special.test.ts +1258 -0
- package/test/utils.test.ts +7 -7
- package/tsconfig.base.json +6 -5
- package/tsconfig.json +3 -1
- package/tsconfig.src.json +29 -29
- package/tsconfig.test.json +2 -2
- package/dist/Operations.d.ts +0 -123
- package/dist/Operations.d.ts.map +0 -1
- package/dist/Operations.js +0 -29
- package/dist/ServiceMap.d.ts.map +0 -1
- package/dist/ServiceMap.js +0 -91
- package/eslint.config.mjs +0 -26
- package/src/Operations.ts +0 -55
- package/tsconfig.json.bak +0 -12
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as Ref from "effect/Ref";
|
|
2
|
+
import * as Context from "../Context.js";
|
|
3
|
+
import * as Effect from "../Effect.js";
|
|
4
|
+
import type { InvalidationKey } from "../rpc/Invalidation.js";
|
|
5
|
+
export type { InvalidationKey };
|
|
6
|
+
/** Shape of the per-mutation service that accumulates server-provided invalidation keys. */
|
|
7
|
+
export interface InvalidationKeysService {
|
|
8
|
+
readonly add: (key: InvalidationKey) => Effect.Effect<void>;
|
|
9
|
+
readonly get: Effect.Effect<ReadonlyArray<InvalidationKey>>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Context.Reference that accumulates invalidation keys received from the server via the
|
|
13
|
+
* `x-invalidate` HTTP response header.
|
|
14
|
+
*
|
|
15
|
+
* The default is a no-op: when not explicitly provided (e.g. outside a mutation wrapper)
|
|
16
|
+
* all calls are ignored. The mutation wrapper in `@effect-app/vue` provides a real
|
|
17
|
+
* implementation backed by a `Ref`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const InvalidationKeysFromServer: Context.Reference<InvalidationKeysService>;
|
|
20
|
+
export type InvalidationKeysFromServer = typeof InvalidationKeysFromServer;
|
|
21
|
+
/**
|
|
22
|
+
* Creates a fresh `InvalidationKeysService` implementation backed by a `Ref`.
|
|
23
|
+
*
|
|
24
|
+
* @param ref - The `Ref` that stores the accumulated keys.
|
|
25
|
+
* @param onAdded - V3: Optional Effect run after a key is added. Use to trigger mid-stream
|
|
26
|
+
* query invalidation without waiting for the stream to complete.
|
|
27
|
+
*/
|
|
28
|
+
export declare const makeInvalidationKeysService: (ref: Ref.Ref<ReadonlyArray<InvalidationKey>>, onAdded?: (key: InvalidationKey) => Effect.Effect<void>) => InvalidationKeysService;
|
|
29
|
+
//# sourceMappingURL=InvalidationKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvalidationKeys.d.ts","sourceRoot":"","sources":["../../src/client/InvalidationKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,YAAY,EAAE,eAAe,EAAE,CAAA;AAC/B,4FAA4F;AAC5F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAA;CAC5D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,4CAQtC,CAAA;AACD,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,QACjC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,YAClC,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KACtD,uBAQD,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as Ref from "effect/Ref";
|
|
2
|
+
import * as Context from "../Context.js";
|
|
3
|
+
import * as Effect from "../Effect.js";
|
|
4
|
+
/**
|
|
5
|
+
* Context.Reference that accumulates invalidation keys received from the server via the
|
|
6
|
+
* `x-invalidate` HTTP response header.
|
|
7
|
+
*
|
|
8
|
+
* The default is a no-op: when not explicitly provided (e.g. outside a mutation wrapper)
|
|
9
|
+
* all calls are ignored. The mutation wrapper in `@effect-app/vue` provides a real
|
|
10
|
+
* implementation backed by a `Ref`.
|
|
11
|
+
*/
|
|
12
|
+
export const InvalidationKeysFromServer = Context.Reference("effect-app/client/InvalidationKeysFromServer", {
|
|
13
|
+
defaultValue: () => ({
|
|
14
|
+
add: (_key) => Effect.void,
|
|
15
|
+
get: Effect.succeed([])
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Creates a fresh `InvalidationKeysService` implementation backed by a `Ref`.
|
|
20
|
+
*
|
|
21
|
+
* @param ref - The `Ref` that stores the accumulated keys.
|
|
22
|
+
* @param onAdded - V3: Optional Effect run after a key is added. Use to trigger mid-stream
|
|
23
|
+
* query invalidation without waiting for the stream to complete.
|
|
24
|
+
*/
|
|
25
|
+
export const makeInvalidationKeysService = (ref, onAdded) => ({
|
|
26
|
+
// When onAdded is set, fire it immediately without accumulating in the ref —
|
|
27
|
+
// the key is handled on arrival and must not be re-processed at stream end.
|
|
28
|
+
add: (key) => onAdded
|
|
29
|
+
? onAdded(key)
|
|
30
|
+
: Ref.update(ref, (keys) => [...keys, key]),
|
|
31
|
+
get: Ref.get(ref)
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52YWxpZGF0aW9uS2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvSW52YWxpZGF0aW9uS2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssR0FBRyxNQUFNLFlBQVksQ0FBQTtBQUNqQyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQVV0Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FDekQsOENBQThDLEVBQzlDO0lBQ0UsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkIsR0FBRyxFQUFFLENBQUMsSUFBcUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDM0MsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBb0MsQ0FBQztLQUMxRCxDQUFDO0NBQ0gsQ0FDRixDQUFBO0FBR0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FDekMsR0FBNEMsRUFDNUMsT0FBdUQsRUFDOUIsRUFBRSxDQUFDLENBQUM7SUFDN0IsNkVBQTZFO0lBQzdFLDRFQUE0RTtJQUM1RSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNYLE9BQU87UUFDTCxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNkLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Q0FDbEIsQ0FBQyxDQUFBIn0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import * as Config from "effect/Config";
|
|
2
1
|
import * as Layer from "effect/Layer";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
3
|
import { Rpc, RpcGroup, RpcSerialization } from "effect/unstable/rpc";
|
|
4
|
+
import * as Config from "../Config.js";
|
|
5
|
+
import * as Context from "../Context.js";
|
|
4
6
|
import * as Effect from "../Effect.js";
|
|
5
7
|
import { HttpClient } from "../http.js";
|
|
6
|
-
import * as Option from "../Option.js";
|
|
7
8
|
import type * as S from "../Schema.js";
|
|
8
|
-
import
|
|
9
|
-
import type { Client, ClientForOptions, Requests, RequestsAny } from "./clientFor.js";
|
|
9
|
+
import type { ClientForOptions, ExtractModuleName, RequestsAny } from "./clientFor.js";
|
|
10
10
|
export interface ApiConfig {
|
|
11
11
|
url: string;
|
|
12
12
|
headers: Option.Option<Record<string, string>>;
|
|
@@ -18,13 +18,19 @@ export declare const DefaultApiConfig: Config.Config<{
|
|
|
18
18
|
}>;
|
|
19
19
|
}>;
|
|
20
20
|
export type Req = S.Top & {
|
|
21
|
-
|
|
21
|
+
readonly make: (...args: any[]) => any;
|
|
22
22
|
_tag: string;
|
|
23
23
|
fields: S.Struct.Fields;
|
|
24
24
|
success: S.Top;
|
|
25
25
|
error: S.Top;
|
|
26
|
+
/** Optional final-value schema for stream requests. When set, the execute effect resolves with the last stream value decoded to this type. */
|
|
27
|
+
final?: S.Top;
|
|
26
28
|
config?: Record<string, any>;
|
|
27
|
-
readonly
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly moduleName: string;
|
|
31
|
+
readonly type: "command" | "query";
|
|
32
|
+
readonly stream: boolean;
|
|
33
|
+
readonly middleware?: unknown;
|
|
28
34
|
};
|
|
29
35
|
export declare const HttpClientLayer: (config: ApiConfig) => Layer.Layer<HttpClient.HttpClient, never, HttpClient.HttpClient>;
|
|
30
36
|
export declare const HttpClientFromConfigLayer: Layer.Layer<HttpClient.HttpClient, Config.ConfigError, HttpClient.HttpClient>;
|
|
@@ -32,37 +38,19 @@ export declare const RpcSerializationLayer: (config: ApiConfig) => Layer.Layer<H
|
|
|
32
38
|
type RpcHandlers<M extends RequestsAny> = {
|
|
33
39
|
[K in keyof M]: Rpc.Rpc<M[K]["_tag"], M[K], M[K]["success"], M[K]["error"]>;
|
|
34
40
|
};
|
|
35
|
-
export declare const getMeta: <M extends
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}) => RpcGroup.RpcGroup<Rpc.Prefixed<RpcHandlers<M & {
|
|
42
|
-
meta: {
|
|
43
|
-
moduleName: ModuleName;
|
|
44
|
-
};
|
|
45
|
-
} extends infer T extends Requests ? { [K in keyof T as (M & {
|
|
46
|
-
meta: {
|
|
47
|
-
moduleName: ModuleName;
|
|
48
|
-
};
|
|
49
|
-
})[K] extends Req ? K : never]: T[K] extends Req ? T[K] : never; } : never>[keyof (M & {
|
|
50
|
-
meta: {
|
|
51
|
-
moduleName: ModuleName;
|
|
52
|
-
};
|
|
53
|
-
} extends infer T_1 extends Requests ? { [K in keyof T_1 as (M & {
|
|
54
|
-
meta: {
|
|
55
|
-
moduleName: ModuleName;
|
|
56
|
-
};
|
|
57
|
-
})[K] extends Req ? K : never]: T_1[K] extends Req ? T_1[K] : never; } : never)], `${ModuleName}.`>>;
|
|
58
|
-
declare const ApiClientFactory_base: ServiceMap.OpaqueClass<ApiClientFactory, "ApiClientFactory", (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<Client<M, M["meta"]["moduleName"]>>>;
|
|
41
|
+
export declare const getMeta: <M extends RequestsAny>(resource: M) => {
|
|
42
|
+
moduleName: ExtractModuleName<M>;
|
|
43
|
+
middleware?: unknown;
|
|
44
|
+
};
|
|
45
|
+
export declare const makeRpcGroupFromRequestsAndModuleName: <M extends RequestsAny, const ModuleName extends string>(resource: M, moduleName: ModuleName, middleware?: any) => RpcGroup.RpcGroup<Rpc.Prefixed<RpcHandlers<{ [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }>[keyof { [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }], `${ModuleName}.`>>;
|
|
46
|
+
declare const ApiClientFactory_base: Context.OpaqueClass<ApiClientFactory, "ApiClientFactory", (requestLevelLayers: Layer.Layer<never>, options?: ClientForOptions) => <M extends RequestsAny>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, M, ExtractModuleName<M>>, never, never>>;
|
|
59
47
|
/**
|
|
60
48
|
* Used to create clients for resource modules.
|
|
61
49
|
*/
|
|
62
50
|
export declare class ApiClientFactory extends ApiClientFactory_base {
|
|
63
51
|
static readonly layer: (config: ApiConfig) => Layer.Layer<ApiClientFactory, never, HttpClient.HttpClient>;
|
|
64
52
|
static readonly layerFromConfig: Layer.Layer<ApiClientFactory, Config.ConfigError, HttpClient.HttpClient>;
|
|
65
|
-
static readonly makeFor: (requestLevelLayers: Layer.Layer<never
|
|
53
|
+
static readonly makeFor: (requestLevelLayers: Layer.Layer<never>, options?: ClientForOptions) => <M extends RequestsAny>(resource: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, M, ExtractModuleName<M>>, never, ApiClientFactory>;
|
|
66
54
|
}
|
|
67
55
|
export {};
|
|
68
56
|
//# sourceMappingURL=apiClientFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,34 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import
|
|
3
|
-
import { flow } from "effect/Function";
|
|
2
|
+
import { constant, flow } from "effect/Function";
|
|
4
3
|
import * as Layer from "effect/Layer";
|
|
5
4
|
import * as ManagedRuntime from "effect/ManagedRuntime";
|
|
5
|
+
import * as Option from "effect/Option";
|
|
6
6
|
import * as Predicate from "effect/Predicate";
|
|
7
7
|
import * as Schema from "effect/Schema";
|
|
8
|
+
import * as Stream from "effect/Stream";
|
|
8
9
|
import * as Struct from "effect/Struct";
|
|
9
10
|
import { Rpc, RpcClient, RpcGroup, RpcSerialization } from "effect/unstable/rpc";
|
|
11
|
+
import * as Config from "../Config.js";
|
|
12
|
+
import * as Context from "../Context.js";
|
|
10
13
|
import * as Effect from "../Effect.js";
|
|
11
14
|
import { HttpClient, HttpClientRequest } from "../http.js";
|
|
12
|
-
import
|
|
13
|
-
import * as ServiceMap from "../ServiceMap.js";
|
|
15
|
+
import { Invalidation } from "../rpc.js";
|
|
14
16
|
import { typedKeysOf, typedValuesOf } from "../utils.js";
|
|
17
|
+
import { InvalidationKeysFromServer } from "./InvalidationKeys.js";
|
|
15
18
|
export const DefaultApiConfig = Config.all({
|
|
16
19
|
url: Config.string("apiUrl").pipe(Config.withDefault("/api")),
|
|
17
20
|
headers: Config
|
|
18
21
|
.schema(Config.Record(Schema.String, Schema.String), "headers")
|
|
19
22
|
.pipe(Config.option)
|
|
20
23
|
});
|
|
21
|
-
class RequestName extends
|
|
24
|
+
class RequestName extends Context.Reference("RequestName", {
|
|
22
25
|
defaultValue: () => ({ requestName: "Unspecified", moduleName: "Error" })
|
|
23
26
|
}) {
|
|
24
27
|
}
|
|
25
28
|
export const HttpClientLayer = (config) => Layer.effect(HttpClient.HttpClient, Effect
|
|
26
29
|
.gen(function* () {
|
|
27
30
|
const baseClient = yield* HttpClient.HttpClient;
|
|
28
|
-
const client = baseClient.pipe(HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")), HttpClient.mapRequest(HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => ({}))))), HttpClient.mapRequestEffect((req) => Effect.map(RequestName
|
|
31
|
+
const client = baseClient.pipe(HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")), HttpClient.mapRequest(HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => ({}))))), HttpClient.mapRequestEffect((req) => Effect.map(RequestName, (ctx) => flow(HttpClientRequest.appendUrlParam("action", ctx.requestName), HttpClientRequest.appendUrl("/" + ctx.moduleName))(req))));
|
|
29
32
|
return client;
|
|
30
33
|
}));
|
|
31
34
|
export const HttpClientFromConfigLayer = Layer.unwrap(Effect.gen(function* () {
|
|
@@ -45,49 +48,85 @@ const getFiltered = (resource) => {
|
|
|
45
48
|
return filtered;
|
|
46
49
|
};
|
|
47
50
|
export const getMeta = (resource) => {
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
const first = typedValuesOf(getFiltered(resource))[0];
|
|
52
|
+
if (first && "moduleName" in first)
|
|
53
|
+
return { moduleName: first.moduleName, middleware: first.middleware };
|
|
54
|
+
throw new Error("No moduleName on requests!");
|
|
52
55
|
};
|
|
53
|
-
export const makeRpcGroupFromRequestsAndModuleName = (resource, moduleName
|
|
56
|
+
export const makeRpcGroupFromRequestsAndModuleName = (resource, moduleName,
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
+
middleware) => {
|
|
54
59
|
const filtered = getFiltered(resource);
|
|
55
|
-
const
|
|
60
|
+
const baseRpcs = RpcGroup
|
|
56
61
|
.make(...typedValuesOf(filtered).map((_) => {
|
|
57
|
-
|
|
62
|
+
const r = _;
|
|
63
|
+
const isStream = r.stream;
|
|
64
|
+
const isCommand = r.type === "command";
|
|
65
|
+
return (isCommand
|
|
66
|
+
? isStream
|
|
67
|
+
? Invalidation.makeStreamRpc(r._tag, {
|
|
68
|
+
payload: r,
|
|
69
|
+
success: r.success,
|
|
70
|
+
error: r.error,
|
|
71
|
+
stream: true
|
|
72
|
+
})
|
|
73
|
+
: Invalidation.makeCommandRpc(r._tag, { payload: r, success: r.success, error: r.error })
|
|
74
|
+
: Rpc.make(r._tag, { payload: r, success: r.success, error: r.error, stream: isStream }));
|
|
58
75
|
}))
|
|
59
76
|
.prefix(`${moduleName}.`);
|
|
77
|
+
// Attach the middleware tag (schema-only on the client — no Live invoked)
|
|
78
|
+
// so its declared `error` joins the rpc failure union via
|
|
79
|
+
// `Rpc.exitSchema`'s `rpc.middlewares[*].error` walk. Required for stream
|
|
80
|
+
// rpcs whose top-level `errorSchema` is forced to `Never` by effect-rpc;
|
|
81
|
+
// without it, middleware-thrown errors fail client decode.
|
|
82
|
+
const rpcs = (middleware ? baseRpcs.middleware(middleware) : baseRpcs);
|
|
60
83
|
return rpcs;
|
|
61
84
|
};
|
|
62
|
-
|
|
63
|
-
const makeRpcTag = (resource) => {
|
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
86
|
+
const makeRpcTag = (resource, middleware) => {
|
|
64
87
|
const meta = getMeta(resource);
|
|
65
|
-
const rpcs = makeRpcGroupFromRequestsAndModuleName(resource, meta.moduleName);
|
|
88
|
+
const rpcs = makeRpcGroupFromRequestsAndModuleName(resource, meta.moduleName, middleware);
|
|
66
89
|
// Use Object.assign instead of class extension to avoid TS2509 with complex generic return types.
|
|
67
90
|
// The first type arg is `any` because this is a dynamically created tag — its identity is the string key.
|
|
68
|
-
const TheClient =
|
|
91
|
+
const TheClient = Context.Opaque()(`RpcClient.${meta.moduleName}`);
|
|
69
92
|
// Use Layer.effect directly (not TheClient.toLayer) so TypeScript properly excludes Scope
|
|
70
|
-
const layer = Layer.effect(TheClient, RpcClient.make(rpcs
|
|
93
|
+
const layer = Layer.effect(TheClient, RpcClient.make(rpcs));
|
|
71
94
|
return Object.assign(TheClient, { layer });
|
|
72
95
|
};
|
|
73
96
|
const makeApiClientFactory = Effect
|
|
74
97
|
.gen(function* () {
|
|
75
|
-
const ctx = yield* Effect.
|
|
76
|
-
const makeClientFor = (resource, requestLevelLayers = Layer.empty, options)
|
|
77
|
-
const TheClient = makeRpcTag(resource);
|
|
98
|
+
const ctx = yield* Effect.context();
|
|
99
|
+
const makeClientFor = Effect.fnUntraced(function* (resource, requestLevelLayers = Layer.empty, options) {
|
|
78
100
|
const meta = getMeta(resource);
|
|
101
|
+
const TheClient = makeRpcTag(resource, meta.middleware);
|
|
79
102
|
// TODO: somehow we need a protocol per REQUEST kind of it seems ...
|
|
80
103
|
// otherwise it locks up on the client, navigation remains empty...
|
|
81
104
|
const clientLayer = TheClient.layer.pipe(
|
|
82
105
|
// add ApiClientFactory for nested schemas
|
|
83
106
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
84
107
|
Layer.provide(Layer.succeed(ApiClientFactory, makeClientForCached)), Layer.provide(RpcClient
|
|
85
|
-
.layerProtocolHttp({
|
|
86
|
-
|
|
87
|
-
})
|
|
88
|
-
.pipe(Layer.provideMerge(Layer.succeedServices(ctx)))));
|
|
108
|
+
.layerProtocolHttp({ url: "" }) // why not here set meta.moduleName as root?
|
|
109
|
+
.pipe(Layer.provideMerge(Layer.succeedContext(ctx)))));
|
|
89
110
|
const mr = ManagedRuntime.make(clientLayer);
|
|
90
111
|
const filtered = getFiltered(resource);
|
|
112
|
+
// Unwrap `CommandResponseWithMetaData` (success) and `CommandFailureWithMetaData`
|
|
113
|
+
// (handler-thrown failure): forward accumulated invalidation keys to
|
|
114
|
+
// `InvalidationKeysFromServer` and yield the raw payload / re-fail with the raw
|
|
115
|
+
// error. Middleware-thrown failures arrive raw on the Cause already (no wrap to
|
|
116
|
+
// strip) — the `else` branch passes them through.
|
|
117
|
+
const unwrapCommand = (eff) => eff.pipe(Effect.flatMap((result) => Effect.gen(function* () {
|
|
118
|
+
const keys = result?.metadata?.invalidateQueries ?? [];
|
|
119
|
+
const invalidationKeys = yield* InvalidationKeysFromServer;
|
|
120
|
+
yield* Effect.forEach(keys, (key) => invalidationKeys.add(key), { discard: true });
|
|
121
|
+
return result.payload;
|
|
122
|
+
})), Effect.catch((result) => result?._tag === "CommandFailureWithMetaData"
|
|
123
|
+
? Effect.gen(function* () {
|
|
124
|
+
const keys = result.metadata?.invalidateQueries ?? [];
|
|
125
|
+
const invalidationKeys = yield* InvalidationKeysFromServer;
|
|
126
|
+
yield* Effect.forEach(keys, (key) => invalidationKeys.add(key), { discard: true });
|
|
127
|
+
return yield* Effect.fail(result.error);
|
|
128
|
+
})
|
|
129
|
+
: Effect.fail(result)));
|
|
91
130
|
return {
|
|
92
131
|
mr,
|
|
93
132
|
client: typedKeysOf(filtered)
|
|
@@ -108,18 +147,49 @@ const makeApiClientFactory = Effect
|
|
|
108
147
|
const layers = requestLevelLayers.pipe(Layer.provideMerge(requestNameLayer));
|
|
109
148
|
const fields = Struct.omit(Request.fields, ["_tag"]);
|
|
110
149
|
const requestAttr = `${meta.moduleName}.${h._tag}`;
|
|
150
|
+
const isCommand = h.type === "command";
|
|
151
|
+
const isStream = h.stream;
|
|
152
|
+
const buildEffect = (input) => mr.contextEffect.pipe(Effect.flatMap((svcs) => {
|
|
153
|
+
const rpcEffect = TheClient
|
|
154
|
+
.use((client) => client[requestAttr](Request.make(input)))
|
|
155
|
+
.pipe(
|
|
156
|
+
// local: true → isolate to this RPC call. `layers` is pure today
|
|
157
|
+
// (RequestName + caller-supplied requestLevelLayers), but the
|
|
158
|
+
// flag prevents a stateful caller-supplied layer from leaking
|
|
159
|
+
// across RPC calls via the ambient fiber MemoMap.
|
|
160
|
+
Effect.provide(layers, { local: true }), Effect.provide(svcs));
|
|
161
|
+
return isCommand ? unwrapCommand(rpcEffect) : rpcEffect;
|
|
162
|
+
}));
|
|
163
|
+
const buildStream = (input) => Stream.unwrap(mr.contextEffect.pipe(Effect.flatMap((svcs) => TheClient
|
|
164
|
+
.useSync((client) => {
|
|
165
|
+
const rpcStream = client[requestAttr](Request.make(input));
|
|
166
|
+
return rpcStream.pipe(
|
|
167
|
+
// Collect server invalidation keys from the "done" chunk, then discard it.
|
|
168
|
+
Stream.tap((item) => item._tag === "done" || item._tag === "metadata"
|
|
169
|
+
? InvalidationKeysFromServer.use((svc) => Effect.forEach(item.metadata.invalidateQueries, svc.add, { discard: true }))
|
|
170
|
+
: Effect.void), Stream.filter((item) => item._tag === "value"), Stream.map((item) => item.value),
|
|
171
|
+
// V2: unwrap StreamFailureChunk — forward keys from failures too,
|
|
172
|
+
// then re-fail with the original error so callers see the unmodified
|
|
173
|
+
// error type.
|
|
174
|
+
Stream.catch((err) => err?._tag === "error" && err?.metadata
|
|
175
|
+
? Stream.fromEffect(InvalidationKeysFromServer.use((svc) => Effect
|
|
176
|
+
.forEach(err.metadata.invalidateQueries, svc.add, { discard: true })
|
|
177
|
+
.pipe(Effect.flatMap(() => Effect.fail(err.error)))))
|
|
178
|
+
: Stream.fail(err)),
|
|
179
|
+
// local: true — see buildEffect above.
|
|
180
|
+
Stream.provide(layers, { local: true }), Stream.provide(svcs));
|
|
181
|
+
})
|
|
182
|
+
.pipe(Effect.provide(svcs)))));
|
|
111
183
|
// @ts-expect-error doc
|
|
112
184
|
prev[cur] = Object.keys(fields).length === 0
|
|
113
185
|
? {
|
|
114
|
-
handler:
|
|
115
|
-
.use((client) => client[requestAttr](new Request()))
|
|
116
|
-
.pipe(Effect.provide(layers), Effect.provide(svcs)))),
|
|
186
|
+
handler: isStream ? constant(buildStream({})) : constant(buildEffect({})),
|
|
117
187
|
...requestMeta
|
|
118
188
|
}
|
|
119
189
|
: {
|
|
120
|
-
handler:
|
|
121
|
-
|
|
122
|
-
|
|
190
|
+
handler: isStream
|
|
191
|
+
? (req) => buildStream(req)
|
|
192
|
+
: (req) => buildEffect(req),
|
|
123
193
|
...requestMeta
|
|
124
194
|
};
|
|
125
195
|
return prev;
|
|
@@ -135,7 +205,7 @@ const makeApiClientFactory = Effect
|
|
|
135
205
|
cache = new Map();
|
|
136
206
|
cacheL.set(requestLevelLayers, cache);
|
|
137
207
|
}
|
|
138
|
-
return
|
|
208
|
+
return Effect.fnUntraced(function* (models) {
|
|
139
209
|
const found = cache.get(models);
|
|
140
210
|
if (found) {
|
|
141
211
|
return found;
|
|
@@ -151,7 +221,7 @@ const makeApiClientFactory = Effect
|
|
|
151
221
|
/**
|
|
152
222
|
* Used to create clients for resource modules.
|
|
153
223
|
*/
|
|
154
|
-
export class ApiClientFactory extends
|
|
224
|
+
export class ApiClientFactory extends Context.Opaque()("ApiClientFactory") {
|
|
155
225
|
static layer = (config) => ApiClientFactory.toLayer(makeApiClientFactory).pipe(Layer.provide(RpcSerializationLayer(config)));
|
|
156
226
|
static layerFromConfig = Layer.unwrap(Effect.gen(function* () {
|
|
157
227
|
const config = yield* DefaultApiConfig;
|
|
@@ -162,4 +232,4 @@ export class ApiClientFactory extends ServiceMap.Opaque()("ApiClientFactory") {
|
|
|
162
232
|
return f(resource);
|
|
163
233
|
});
|
|
164
234
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFELE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBRXRDLE9BQU8sS0FBSyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFReEQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUN6QyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxPQUFPLEVBQUUsTUFBTTtTQUNaLE1BQU0sQ0FDTCxNQUFNLENBQUMsTUFBTSxDQUFD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
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssY0FBYyxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDaEYsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXhELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBT2xFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsT0FBTyxFQUFFLE1BQU07U0FDWixNQUFNLENBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFDM0MsU0FBUyxDQUNWO1NBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Q0FDdkIsQ0FBQyxDQUFBO0FBa0JGLE1BQU0sV0FBWSxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO0lBQ3pELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7Q0FDMUUsQ0FBQztDQUFHO0FBRUwsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQ25ELEtBQUssQ0FBQyxNQUFNLENBQ1YsVUFBVSxDQUFDLFVBQVUsRUFDckIsTUFBTTtLQUNILEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDWixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFBO0lBQy9DLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQzVCLFVBQVUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFDeEUsVUFBVSxDQUFDLFVBQVUsQ0FDbkIsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEYsRUFDRCxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzlCLElBQUksQ0FDRixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFDM0QsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQ2xELENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDVixDQUNGLENBQUE7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQyxDQUNMLENBQUE7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQTtJQUN0QyxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFpQixFQUFFLEVBQUUsQ0FDekQsS0FBSyxDQUFDLFFBQVEsQ0FDWixnQkFBZ0IsQ0FBQyxXQUFXLEVBQzVCLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FDeEIsQ0FBQTtBQU1ILE1BQU0sV0FBVyxHQUFHLENBQXdCLFFBQVcsRUFBRSxFQUFFO0lBSXpELHNCQUFzQjtJQUN0QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3pELElBQ0UsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7ZUFDckMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQzFCLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBcUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQVEsQ0FBQTtRQUNuRCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUE7SUFDWixDQUFDLEVBQUUsRUFBaUMsQ0FBQyxDQUFBO0lBRXJDLE9BQU8sUUFBK0IsQ0FBQTtBQUN4QyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsUUFBVyxFQUNpRCxFQUFFO0lBQzlELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyRCxJQUFJLEtBQUssSUFBSSxZQUFZLElBQUksS0FBSztRQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUcsS0FBYSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ2xILE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtBQUMvQyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUNuRCxRQUFXLEVBQ1gsVUFBc0I7QUFDdEIsOERBQThEO0FBQzlELFVBQWdCLEVBQ2hCLEVBQUU7SUFDRixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFdEMsTUFBTSxRQUFRLEdBQUcsUUFBUTtTQUN0QixJQUFJLENBQ0gsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFBO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDekIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUE7UUFDdEMsT0FBTyxDQUFDLFNBQVM7WUFDZixDQUFDLENBQUMsUUFBUTtnQkFDUixDQUFDLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO29CQUNuQyxPQUFPLEVBQUUsQ0FBQztvQkFDVixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87b0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztvQkFDZCxNQUFNLEVBQUUsSUFBYTtpQkFDdEIsQ0FBQztnQkFDRixDQUFDLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNGLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFRLENBQUE7SUFDcEcsQ0FBQyxDQUFDLENBQ0g7U0FDQSxNQUFNLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLDBFQUEwRTtJQUMxRSwwREFBMEQ7SUFDMUQsMEVBQTBFO0lBQzFFLHlFQUF5RTtJQUN6RSwyREFBMkQ7SUFDM0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FFcEUsQ0FBQTtJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxHQUFHLENBQXdCLFFBQVcsRUFBRSxVQUFnQixFQUFFLEVBQUU7SUFDMUUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzlCLE1BQU0sSUFBSSxHQUFHLHFDQUFxQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBRXpGLGtHQUFrRztJQUNsRywwR0FBMEc7SUFDMUcsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFHN0IsQ0FBQyxhQUFhLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ25DLDBGQUEwRjtJQUMxRixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUN4QixTQUFTLEVBQ1QsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDckIsQ0FBQTtJQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0FBQzVDLENBQUMsQ0FBQTtBQUVELE1BQU0sb0JBQW9CLEdBQUcsTUFBTTtLQUNoQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ1osTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBNkQsQ0FBQTtJQUM5RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUMvQyxRQUFXLEVBQ1gsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFDaEMsT0FBMEI7UUFFMUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTlCLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRXZELG9FQUFvRTtRQUNwRSxtRUFBbUU7UUFDbkUsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJO1FBQ3RDLDBDQUEwQztRQUMxQyxtRUFBbUU7UUFDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLG1CQUEwQixDQUFDLENBQUMsRUFDMUUsS0FBSyxDQUFDLE9BQU8sQ0FDWCxTQUFTO2FBQ04saUJBQWlCLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyw0Q0FBNEM7YUFDM0UsSUFBSSxDQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM5QyxDQUNKLENBQ0YsQ0FBQTtRQUNELE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFM0MsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXRDLGtGQUFrRjtRQUNsRixxRUFBcUU7UUFDckUsZ0ZBQWdGO1FBQ2hGLGdGQUFnRjtRQUNoRixrREFBa0Q7UUFDbEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFpQyxFQUFnQyxFQUFFLENBQ3hGLEdBQUcsQ0FBQyxJQUFJLENBQ04sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQzdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxHQUFnRCxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQTtZQUNuRyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDLDBCQUEwQixDQUFBO1lBQzFELEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUNsRixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQ0gsRUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FDM0IsTUFBTSxFQUFFLElBQUksS0FBSyw0QkFBNEI7WUFDM0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBZ0QsTUFBTSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUE7Z0JBQ2xHLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsMEJBQTBCLENBQUE7Z0JBQzFELEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDbEYsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN6QyxDQUFDLENBQUM7WUFDRixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDeEIsQ0FDRixDQUFBO1FBRUgsT0FBTztZQUNMLEVBQUU7WUFDRixNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQztpQkFDMUIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNwQixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFFLENBQUE7Z0JBRXhCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQTtnQkFFakIsTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQWEsRUFBRTtxQkFDN0MsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFFeEIsTUFBTSxXQUFXLEdBQUc7b0JBQ2xCLE9BQU87b0JBQ1AsRUFBRTtvQkFDRixPQUFPO2lCQUNSLENBQUE7Z0JBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtvQkFDbEQsV0FBVyxFQUFFLEdBQWE7b0JBQzFCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtpQkFDNUIsQ0FBQyxDQUFBO2dCQUVGLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtnQkFFNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFVLENBQUMsQ0FBQTtnQkFDN0QsTUFBTSxXQUFXLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDbEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUE7Z0JBQ3RDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7Z0JBRXpCLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDakMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDdEIsTUFBTSxTQUFTLEdBQUcsU0FBUzt5QkFDeEIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBRSxNQUFjLENBQUMsV0FBVyxDQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBNEIsQ0FBQzt5QkFDOUYsSUFBSTtvQkFDSCxpRUFBaUU7b0JBQ2pFLDhEQUE4RDtvQkFDOUQsOERBQThEO29CQUM5RCxrREFBa0Q7b0JBQ2xELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQ3ZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQ3JCLENBQUE7b0JBQ0gsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO2dCQUN6RCxDQUFDLENBQUMsQ0FDSCxDQUFBO2dCQUVILE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDakMsTUFBTSxDQUFDLE1BQU0sQ0FDWCxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3RCLFNBQVM7cUJBQ04sT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ2xCLE1BQU0sU0FBUyxHQUFJLE1BQWMsQ0FBQyxXQUFXLENBQUUsQ0FDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDWSxDQUFBO29CQUNqQyxPQUFPLFNBQVMsQ0FBQyxJQUFJO29CQUNuQiwyRUFBMkU7b0JBQzNFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUN2QixJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVU7d0JBQzlDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUN2QyxNQUFNLENBQUMsT0FBTyxDQUNYLElBQUksQ0FBQyxRQUF5QyxDQUFDLGlCQUFpQixFQUNqRSxHQUFHLENBQUMsR0FBRyxFQUNQLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQixDQUNGO3dCQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNoQixFQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLEVBQ25ELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQ3JDLGtFQUFrRTtvQkFDbEUscUVBQXFFO29CQUNyRSxjQUFjO29CQUNkLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUN4QixHQUFHLEVBQUUsSUFBSSxLQUFLLE9BQU8sSUFBSSxHQUFHLEVBQUUsUUFBUTt3QkFDcEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ2pCLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ3JDLE1BQU07NkJBQ0gsT0FBTyxDQUNMLEdBQUcsQ0FBQyxRQUF5QyxDQUFDLGlCQUFpQixFQUNoRSxHQUFHLENBQUMsR0FBRyxFQUNQLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQjs2QkFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3RELENBQ0Y7d0JBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ3JCO29CQUNELHVDQUF1QztvQkFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FDckIsQ0FBQTtnQkFDSCxDQUFDLENBQUM7cUJBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDOUIsQ0FDRixDQUNGLENBQUE7Z0JBRUgsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFDMUMsQ0FBQyxDQUFDO3dCQUNBLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDekUsR0FBRyxXQUFXO3FCQUNmO29CQUNELENBQUMsQ0FBQzt3QkFDQSxPQUFPLEVBQUUsUUFBUTs0QkFDZixDQUFDLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7NEJBQ2hDLENBQUMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQzt3QkFDbEMsR0FBRyxXQUFXO3FCQUNmLENBQUE7Z0JBRUgsT0FBTyxJQUFJLENBQUE7WUFDYixDQUFDLEVBQUUsRUFBcUMsQ0FBQztTQUM1QyxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixNQUFNLFFBQVEsR0FBOEMsRUFBRSxDQUFBO0lBQzlELEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFBO0lBRXBGLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFBO0lBRXpELFNBQVMsbUJBQW1CLENBQUMsa0JBQXNDLEVBQUUsT0FBMEI7UUFDN0YsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQTtZQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQXdCLE1BQVM7WUFDakUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQWdELENBQUE7WUFDOUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixPQUFPLEtBQUssQ0FBQTtZQUNkLENBQUM7WUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ25FLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUNuQixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQTtBQUM1QixDQUFDLENBQUMsQ0FBQTtBQUVKOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUNYLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBaUUsQ0FBQyxrQkFBa0IsQ0FBQztJQUUzRyxNQUFNLENBQVUsS0FBSyxHQUFHLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQzVDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuRyxNQUFNLENBQVUsZUFBZSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQzVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFBO1FBQ3RDLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZDLENBQUMsQ0FBQyxDQUNILENBQUE7SUFFRCxNQUFNLENBQVUsT0FBTyxHQUNyQixDQUFDLGtCQUFzQyxFQUFFLE9BQTBCLEVBQUUsRUFBRSxDQUN2RSxDQUNFLFFBQVcsRUFDWCxFQUFFLENBQ0YsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtRQUN4QyxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2RCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNwQixDQUFDLENBQUMsQ0FBQTtDQUNQIn0=
|
|
@@ -1,41 +1,76 @@
|
|
|
1
|
-
import type * as
|
|
1
|
+
import type * as Stream from "effect/Stream";
|
|
2
2
|
import type { Path } from "path-parser";
|
|
3
3
|
import type * as Effect from "../Effect.js";
|
|
4
4
|
import type * as S from "../Schema.js";
|
|
5
5
|
import { type Req } from "./apiClientFactory.js";
|
|
6
6
|
export declare function makePathWithQuery(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
|
|
7
7
|
export declare function makePathWithBody(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
|
|
8
|
-
export type Requests
|
|
9
|
-
meta: {
|
|
10
|
-
moduleName: ModuleName;
|
|
11
|
-
};
|
|
12
|
-
} & RequestsAny;
|
|
8
|
+
export type Requests = RequestsAny;
|
|
13
9
|
export type RequestsAny = Record<string, any>;
|
|
10
|
+
export type ExtractModuleName<M extends RequestsAny> = {
|
|
11
|
+
[K in keyof M]: M[K] extends {
|
|
12
|
+
moduleName: infer N extends string;
|
|
13
|
+
} ? N : never;
|
|
14
|
+
}[keyof M] extends infer R extends string ? R : string;
|
|
14
15
|
export type Client<M extends RequestsAny, ModuleName extends string> = RequestHandlers<never, never, M, ModuleName>;
|
|
15
|
-
export type ExtractResponse<T> = T extends S.Codec<any> ?
|
|
16
|
-
export type ExtractEResponse<T> = T extends S.Codec<any> ?
|
|
17
|
-
type IsEmpty<T> = keyof T extends never ? true : false;
|
|
18
|
-
type Cruft = "_tag" | keyof Request.Request<any, any, any>;
|
|
16
|
+
export type ExtractResponse<T> = T extends S.Codec<any> ? T["Type"] : T extends unknown ? void : never;
|
|
17
|
+
export type ExtractEResponse<T> = T extends S.Codec<any> ? T["Encoded"] : T extends unknown ? void : never;
|
|
19
18
|
export interface ClientForOptions {
|
|
20
19
|
readonly skipQueryKey?: readonly string[];
|
|
21
20
|
}
|
|
22
|
-
export
|
|
23
|
-
|
|
21
|
+
export declare const makeQueryKey: ({ id, options }: {
|
|
22
|
+
id: string;
|
|
23
|
+
options?: ClientForOptions;
|
|
24
|
+
}) => [string, ...string[]];
|
|
25
|
+
export interface RequestHandlerWithInput<I, A, E, R, Request extends Req, Id extends string> {
|
|
26
|
+
handler: (i: I) => Effect.Effect<A, E, R>;
|
|
24
27
|
id: Id;
|
|
25
28
|
options?: ClientForOptions;
|
|
26
29
|
Request: Request;
|
|
30
|
+
queryKeyProjectionHash?: string;
|
|
27
31
|
}
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
/** Type alias: a no-input handler is simply `RequestHandlerWithInput<void, …>`. */
|
|
33
|
+
export type RequestHandler<A, E, R, Request extends Req, Id extends string> = RequestHandlerWithInput<void, A, E, R, Request, Id>;
|
|
34
|
+
export interface RequestStreamHandlerWithInput<I, A, E, R, Request extends Req, Id extends string, Final = A> {
|
|
35
|
+
handler: (i: I) => Stream.Stream<A, E, R>;
|
|
30
36
|
id: Id;
|
|
31
37
|
options?: ClientForOptions;
|
|
32
38
|
Request: Request;
|
|
39
|
+
/**
|
|
40
|
+
* Phantom type property (never set at runtime) that carries the `Final` type to
|
|
41
|
+
* `StreamMutationWithExtensions`. The tilde prefix follows the Effect convention for
|
|
42
|
+
* phantom/virtual properties and prevents accidental runtime access.
|
|
43
|
+
* Stream failures bubble through the execute effect's typed error channel `E`;
|
|
44
|
+
* the reactive `AsyncResult` ref also mirrors the failure for live progress UI.
|
|
45
|
+
*/
|
|
46
|
+
readonly "~final"?: Final;
|
|
33
47
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
48
|
+
/** Type alias: a no-input stream handler is simply `RequestStreamHandlerWithInput<void, …>`. */
|
|
49
|
+
export type RequestStreamHandler<A, E, R, Request extends Req, Id extends string, Final = A> = RequestStreamHandlerWithInput<void, A, E, R, Request, Id, Final>;
|
|
50
|
+
export type RequestInputFromMake<I extends {
|
|
51
|
+
readonly make: (...args: any[]) => any;
|
|
52
|
+
}> = Parameters<I["make"]> extends [
|
|
53
|
+
] ? void : Parameters<I["make"]>[0];
|
|
54
|
+
type HasNoFields<I> = I extends {
|
|
55
|
+
readonly fields: infer F extends S.Struct.Fields;
|
|
56
|
+
} ? [Exclude<keyof F, "_tag">] extends [never] ? true : false : false;
|
|
57
|
+
type RequestInput<I extends {
|
|
58
|
+
readonly make: (...args: any[]) => any;
|
|
59
|
+
}> = Parameters<I["make"]>[0];
|
|
60
|
+
/**
|
|
61
|
+
* Caller-facing input type for a request. `void` when the request schema has no fields;
|
|
62
|
+
* otherwise `make`'s first param type.
|
|
63
|
+
*/
|
|
64
|
+
export type HandlerInput<I extends {
|
|
65
|
+
readonly make: (...args: any[]) => any;
|
|
66
|
+
}> = HasNoFields<I> extends true ? void : RequestInput<I>;
|
|
67
|
+
/** Extracts the final-value type from a stream request. Defaults to the success type when no `final` schema is set. */
|
|
68
|
+
type FinalTypeOf<T extends Req> = T extends {
|
|
69
|
+
readonly final: infer F extends S.Top;
|
|
70
|
+
} ? F["Type"] : T["success"]["Type"];
|
|
71
|
+
type RequestHandlerFor<R, E, T extends Req, Id extends string> = T["stream"] extends true ? RequestStreamHandlerWithInput<HandlerInput<T>, T["success"]["Type"], T["error"]["Type"] | E, R | T["success"]["DecodingServices"] | T["error"]["DecodingServices"], T, Id, FinalTypeOf<T>> : RequestHandlerWithInput<HandlerInput<T>, T["success"]["Type"], T["error"]["Type"] | E, R | T["success"]["DecodingServices"] | T["error"]["DecodingServices"], T, Id>;
|
|
37
72
|
export type RequestHandlers<R, E, M extends RequestsAny, ModuleName extends string> = {
|
|
38
|
-
[K in keyof M as M[K] extends Req ? K : never]:
|
|
73
|
+
[K in keyof M as M[K] extends Req ? K : never]: Extract<M[K], Req> extends infer T extends Req ? RequestHandlerFor<R, E, T, `${ModuleName}.${K & string}`> : never;
|
|
39
74
|
};
|
|
40
75
|
export {};
|
|
41
76
|
//# sourceMappingURL=clientFor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
|
package/dist/client/clientFor.js
CHANGED
|
@@ -13,4 +13,12 @@ export function makePathWithQuery(path, pars) {
|
|
|
13
13
|
export function makePathWithBody(path, pars) {
|
|
14
14
|
return path.build(pars, { ignoreSearch: true, ignoreConstraints: true });
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
// $Project/$Configuration.Index
|
|
17
|
+
// -> "$Project", "$Configuration", "Index"
|
|
18
|
+
export const makeQueryKey = ({ id, options }) => id
|
|
19
|
+
.split("/")
|
|
20
|
+
.filter((segment) => !options || !options.skipQueryKey?.includes(segment))
|
|
21
|
+
.map((segment) => "$" + segment)
|
|
22
|
+
.join(".")
|
|
23
|
+
.split(".");
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Rm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBEO0FBQzFELHVEQUF1RDtBQUV2RCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUd2QyxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFLN0IsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixJQUFVLEVBQ1YsSUFTQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQSxDQUFDLHFIQUFxSDtJQUNySSxPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO1VBQy9ELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3RCLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNSLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUFVLEVBQ1YsSUFTQztJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDMUUsQ0FBQztBQXNDRCxnQ0FBZ0M7QUFDaEMsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBOEMsRUFBRSxFQUFFLENBQzFGLEVBQUU7S0FDQyxLQUFLLENBQUMsR0FBRyxDQUFDO0tBQ1YsTUFBTSxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2pGLEdBQUcsQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQztLQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDO0tBQ1QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBIn0=
|