effect-app 4.0.0-beta.21 → 4.0.0-beta.211
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 +954 -0
- package/dist/Array.d.ts +1 -1
- package/dist/Chunk.d.ts +1 -1
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Config/SecretURL.d.ts +1 -1
- package/dist/Config/SecretURL.d.ts.map +1 -1
- package/dist/Config/SecretURL.js +2 -2
- package/dist/Config/internal/configSecretURL.d.ts +1 -1
- package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
- package/dist/Config.d.ts +7 -0
- package/dist/Config.d.ts.map +1 -0
- package/dist/Config.js +6 -0
- package/dist/ConfigProvider.d.ts +39 -0
- package/dist/ConfigProvider.d.ts.map +1 -0
- package/dist/ConfigProvider.js +42 -0
- package/dist/Context.d.ts +40 -0
- package/dist/Context.d.ts.map +1 -0
- package/dist/Context.js +67 -0
- package/dist/Effect.d.ts +9 -10
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +3 -6
- package/dist/Function.d.ts +1 -1
- package/dist/Function.d.ts.map +1 -1
- package/dist/Inputify.type.d.ts +1 -1
- package/dist/Layer.d.ts +7 -6
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +1 -1
- package/dist/NonEmptySet.d.ts +1 -1
- package/dist/NonEmptySet.d.ts.map +1 -1
- package/dist/Option.d.ts +1 -1
- package/dist/Option.d.ts.map +1 -1
- package/dist/Pure.d.ts +5 -5
- package/dist/Pure.d.ts.map +1 -1
- package/dist/Pure.js +13 -13
- package/dist/Schema/Class.d.ts +66 -20
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +189 -22
- package/dist/Schema/FastCheck.d.ts +1 -1
- package/dist/Schema/FastCheck.d.ts.map +1 -1
- package/dist/Schema/Methods.d.ts +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 +33 -0
- package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
- package/dist/Schema/SpecialJsonSchema.js +122 -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 +1 -1
- package/dist/Schema/email.d.ts +1 -1
- package/dist/Schema/email.d.ts.map +1 -1
- package/dist/Schema/email.js +7 -4
- package/dist/Schema/ext.d.ts +117 -45
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +131 -42
- package/dist/Schema/moreStrings.d.ts +37 -25
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +15 -16
- package/dist/Schema/numbers.d.ts +15 -15
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/numbers.js +10 -12
- package/dist/Schema/phoneNumber.d.ts +1 -1
- package/dist/Schema/phoneNumber.d.ts.map +1 -1
- package/dist/Schema/phoneNumber.js +6 -3
- package/dist/Schema/schema.d.ts +1 -1
- package/dist/Schema/strings.d.ts +5 -5
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema/strings.js +1 -5
- package/dist/Schema.d.ts +147 -15
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +131 -16
- package/dist/Set.d.ts +1 -1
- package/dist/Set.d.ts.map +1 -1
- package/dist/TypeTest.d.ts +1 -1
- package/dist/Types.d.ts +1 -1
- package/dist/Widen.type.d.ts +1 -1
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/date.d.ts +1 -1
- package/dist/_ext/misc.d.ts +1 -1
- package/dist/_ext/ord.ext.d.ts +1 -1
- package/dist/_ext/ord.ext.d.ts.map +1 -1
- package/dist/builtin.d.ts +1 -1
- package/dist/builtin.d.ts.map +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 +20 -32
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +95 -32
- package/dist/client/clientFor.d.ts +51 -17
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/clientFor.js +9 -1
- package/dist/client/errors.d.ts +49 -25
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +43 -17
- package/dist/client/makeClient.d.ts +481 -33
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +66 -24
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/faker.d.ts +1 -1
- package/dist/faker.d.ts.map +1 -1
- package/dist/http/Request.d.ts +2 -2
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/internal/lib.d.ts +1 -1
- package/dist/http.d.ts +1 -1
- package/dist/ids.d.ts +12 -12
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +3 -2
- package/dist/index.d.ts +5 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/logger.d.ts +1 -1
- package/dist/middleware.d.ts +14 -8
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +14 -8
- package/dist/rpc/Invalidation.d.ts +402 -0
- package/dist/rpc/Invalidation.d.ts.map +1 -0
- package/dist/rpc/Invalidation.js +150 -0
- package/dist/rpc/MiddlewareMaker.d.ts +5 -4
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +57 -37
- 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 +5 -4
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +1 -1
- package/dist/rpc.d.ts +2 -2
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -2
- package/dist/transform.d.ts +1 -1
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +3 -3
- package/dist/utils/effectify.d.ts +1 -1
- package/dist/utils/extend.d.ts +1 -1
- package/dist/utils/extend.d.ts.map +1 -1
- package/dist/utils/gen.d.ts +2 -2
- 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 +3 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -3
- package/dist/utils.d.ts +31 -38
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +12 -25
- package/dist/validation/validators.d.ts +1 -1
- package/dist/validation/validators.d.ts.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/package.json +46 -24
- package/src/Config/SecretURL.ts +2 -1
- package/src/Config.ts +14 -0
- package/src/ConfigProvider.ts +48 -0
- package/src/{ServiceMap.ts → Context.ts} +52 -59
- package/src/Effect.ts +12 -14
- package/src/Layer.ts +6 -5
- package/src/Pure.ts +17 -18
- package/src/Schema/Class.ts +268 -62
- package/src/Schema/SchemaParser.ts +12 -0
- package/src/Schema/SpecialJsonSchema.ts +137 -0
- package/src/Schema/SpecialOpenApi.ts +130 -0
- package/src/Schema/brand.ts +21 -1
- package/src/Schema/email.ts +7 -2
- package/src/Schema/ext.ts +204 -72
- package/src/Schema/moreStrings.ts +40 -37
- package/src/Schema/numbers.ts +14 -16
- package/src/Schema/phoneNumber.ts +5 -1
- package/src/Schema/strings.ts +4 -8
- package/src/Schema.ts +314 -20
- package/src/client/InvalidationKeys.ts +50 -0
- package/src/client/apiClientFactory.ts +223 -129
- package/src/client/clientFor.ts +95 -29
- package/src/client/errors.ts +52 -26
- package/src/client/makeClient.ts +572 -71
- package/src/client.ts +1 -0
- package/src/ids.ts +3 -2
- package/src/index.ts +5 -10
- package/src/middleware.ts +13 -9
- package/src/rpc/Invalidation.ts +226 -0
- package/src/rpc/MiddlewareMaker.ts +65 -60
- package/src/rpc/README.md +2 -2
- package/src/rpc/RpcContextMap.ts +6 -5
- package/src/rpc/RpcMiddleware.ts +5 -4
- package/src/rpc.ts +1 -1
- package/src/transform.ts +2 -2
- package/src/utils/gen.ts +1 -1
- package/src/utils/logger.ts +2 -2
- package/src/utils.ts +50 -132
- 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/dist/stream-error.types.d.ts +2 -0
- package/test/dist/stream-error.types.d.ts.map +1 -0
- package/test/dist/stream-error.types.js +27 -0
- package/test/rpc.test.ts +45 -6
- package/test/schema.test.ts +581 -7
- package/test/secretURL.test.ts +157 -0
- package/test/special.test.ts +1023 -0
- package/test/utils.test.ts +6 -6
- package/tsconfig.base.json +3 -4
- package/tsconfig.json +0 -1
- package/tsconfig.json.bak +2 -2
- 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 +0 -44
- 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/src/utils/logger.ts
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
|
|
4
4
|
import { Effect, type LogLevel } from "effect"
|
|
5
|
-
import * as
|
|
5
|
+
import * as Context from "../Context.js"
|
|
6
6
|
|
|
7
7
|
type Levels = "info" | "debug" | "warn" | "error"
|
|
8
8
|
|
|
9
|
-
export class LogLevels extends
|
|
9
|
+
export class LogLevels extends Context.Reference("LogLevels", {
|
|
10
10
|
defaultValue: () => new Map<string, Levels>()
|
|
11
11
|
}) {}
|
|
12
12
|
|
package/src/utils.ts
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-redundant-type-constituents */
|
|
4
4
|
import { Cause, Effect, Exit, Fiber, Option, Record } from "effect"
|
|
5
5
|
import { dual } from "effect/Function"
|
|
6
|
-
import { isFunction
|
|
6
|
+
import { isFunction } from "effect/Predicate"
|
|
7
7
|
import * as Result from "effect/Result"
|
|
8
|
-
import type { GetFieldType, NumericDictionary, PropertyPath } from "lodash"
|
|
9
8
|
import { identity, pipe } from "./Function.js"
|
|
10
9
|
import type { DeepMutable, Equals, Mutable } from "./Types.js"
|
|
11
10
|
|
|
@@ -24,121 +23,6 @@ export interface Clone {
|
|
|
24
23
|
[cloneTrait](this: this, that: any): this
|
|
25
24
|
}
|
|
26
25
|
|
|
27
|
-
function get<TObject extends object, TKey extends keyof TObject>(object: TObject, path: TKey | [TKey]): TObject[TKey]
|
|
28
|
-
function get<TObject extends object, TKey extends keyof TObject>(
|
|
29
|
-
object: TObject | null | undefined,
|
|
30
|
-
path: TKey | [TKey]
|
|
31
|
-
): TObject[TKey] | undefined
|
|
32
|
-
function get<TObject extends object, TKey extends keyof TObject, TDefault>(
|
|
33
|
-
object: TObject | null | undefined,
|
|
34
|
-
path: TKey | [TKey],
|
|
35
|
-
defaultValue: TDefault
|
|
36
|
-
): Exclude<TObject[TKey], undefined> | TDefault
|
|
37
|
-
function get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1]>(
|
|
38
|
-
object: TObject,
|
|
39
|
-
path: [TKey1, TKey2]
|
|
40
|
-
): TObject[TKey1][TKey2]
|
|
41
|
-
function get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1]>(
|
|
42
|
-
object: TObject | null | undefined,
|
|
43
|
-
path: [TKey1, TKey2]
|
|
44
|
-
): TObject[TKey1][TKey2] | undefined
|
|
45
|
-
function get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TDefault>(
|
|
46
|
-
object: TObject | null | undefined,
|
|
47
|
-
path: [TKey1, TKey2],
|
|
48
|
-
defaultValue: TDefault
|
|
49
|
-
): Exclude<TObject[TKey1][TKey2], undefined> | TDefault
|
|
50
|
-
function get<
|
|
51
|
-
TObject extends object,
|
|
52
|
-
TKey1 extends keyof TObject,
|
|
53
|
-
TKey2 extends keyof TObject[TKey1],
|
|
54
|
-
TKey3 extends keyof TObject[TKey1][TKey2]
|
|
55
|
-
>(object: TObject, path: [TKey1, TKey2, TKey3]): TObject[TKey1][TKey2][TKey3]
|
|
56
|
-
function get<
|
|
57
|
-
TObject extends object,
|
|
58
|
-
TKey1 extends keyof TObject,
|
|
59
|
-
TKey2 extends keyof TObject[TKey1],
|
|
60
|
-
TKey3 extends keyof TObject[TKey1][TKey2]
|
|
61
|
-
>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3]): TObject[TKey1][TKey2][TKey3] | undefined
|
|
62
|
-
function get<
|
|
63
|
-
TObject extends object,
|
|
64
|
-
TKey1 extends keyof TObject,
|
|
65
|
-
TKey2 extends keyof TObject[TKey1],
|
|
66
|
-
TKey3 extends keyof TObject[TKey1][TKey2],
|
|
67
|
-
TDefault
|
|
68
|
-
>(
|
|
69
|
-
object: TObject | null | undefined,
|
|
70
|
-
path: [TKey1, TKey2, TKey3],
|
|
71
|
-
defaultValue: TDefault
|
|
72
|
-
): Exclude<TObject[TKey1][TKey2][TKey3], undefined> | TDefault
|
|
73
|
-
function get<
|
|
74
|
-
TObject extends object,
|
|
75
|
-
TKey1 extends keyof TObject,
|
|
76
|
-
TKey2 extends keyof TObject[TKey1],
|
|
77
|
-
TKey3 extends keyof TObject[TKey1][TKey2],
|
|
78
|
-
TKey4 extends keyof TObject[TKey1][TKey2][TKey3]
|
|
79
|
-
>(object: TObject, path: [TKey1, TKey2, TKey3, TKey4]): TObject[TKey1][TKey2][TKey3][TKey4]
|
|
80
|
-
function get<
|
|
81
|
-
TObject extends object,
|
|
82
|
-
TKey1 extends keyof TObject,
|
|
83
|
-
TKey2 extends keyof TObject[TKey1],
|
|
84
|
-
TKey3 extends keyof TObject[TKey1][TKey2],
|
|
85
|
-
TKey4 extends keyof TObject[TKey1][TKey2][TKey3]
|
|
86
|
-
>(
|
|
87
|
-
object: TObject | null | undefined,
|
|
88
|
-
path: [TKey1, TKey2, TKey3, TKey4]
|
|
89
|
-
): TObject[TKey1][TKey2][TKey3][TKey4] | undefined
|
|
90
|
-
function get<
|
|
91
|
-
TObject extends object,
|
|
92
|
-
TKey1 extends keyof TObject,
|
|
93
|
-
TKey2 extends keyof TObject[TKey1],
|
|
94
|
-
TKey3 extends keyof TObject[TKey1][TKey2],
|
|
95
|
-
TKey4 extends keyof TObject[TKey1][TKey2][TKey3],
|
|
96
|
-
TDefault
|
|
97
|
-
>(
|
|
98
|
-
object: TObject | null | undefined,
|
|
99
|
-
path: [TKey1, TKey2, TKey3, TKey4],
|
|
100
|
-
defaultValue: TDefault
|
|
101
|
-
): Exclude<TObject[TKey1][TKey2][TKey3][TKey4], undefined> | TDefault
|
|
102
|
-
function get<T>(object: NumericDictionary<T>, path: number): T
|
|
103
|
-
function get<T>(object: NumericDictionary<T> | null | undefined, path: number): T | undefined
|
|
104
|
-
function get<T, TDefault>(
|
|
105
|
-
object: NumericDictionary<T> | null | undefined,
|
|
106
|
-
path: number,
|
|
107
|
-
defaultValue: TDefault
|
|
108
|
-
): T | TDefault
|
|
109
|
-
function get<TDefault>(object: null | undefined, path: PropertyPath, defaultValue: TDefault): TDefault
|
|
110
|
-
function get(object: null | undefined, path: PropertyPath): undefined
|
|
111
|
-
function get<TObject, TPath extends string>(
|
|
112
|
-
data: TObject,
|
|
113
|
-
path: TPath
|
|
114
|
-
): string extends TPath ? any : GetFieldType<TObject, TPath>
|
|
115
|
-
function get<TObject, TPath extends string, TDefault = GetFieldType<TObject, TPath>>(
|
|
116
|
-
data: TObject,
|
|
117
|
-
path: TPath,
|
|
118
|
-
defaultValue: TDefault
|
|
119
|
-
): Exclude<GetFieldType<TObject, TPath>, null | undefined> | TDefault
|
|
120
|
-
function get(object: any, path: PropertyPath, defaultValue?: any): any
|
|
121
|
-
function get(obj: any, path: any, defaultValue = undefined) {
|
|
122
|
-
// https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore?tab=readme-ov-file#_get
|
|
123
|
-
const travel = (regexp: any) =>
|
|
124
|
-
String
|
|
125
|
-
.prototype
|
|
126
|
-
.split
|
|
127
|
-
.call(path, regexp)
|
|
128
|
-
.filter(Boolean)
|
|
129
|
-
.reduce((res, key) => (res !== null && res !== undefined ? res[key] : res), obj)
|
|
130
|
-
const result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/)
|
|
131
|
-
return result === undefined || result === obj ? defaultValue : result
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// codegen:start {preset: barrel, include: ./utils/*.ts }
|
|
135
|
-
export * from "./utils/effectify.js"
|
|
136
|
-
export * from "./utils/extend.js"
|
|
137
|
-
export * from "./utils/gen.js"
|
|
138
|
-
export * from "./utils/logger.js"
|
|
139
|
-
export * from "./utils/logLevel.js"
|
|
140
|
-
// codegen:end
|
|
141
|
-
|
|
142
26
|
export const unsafeRight = <E, A>(ei: Result.Result<A, E>) => {
|
|
143
27
|
if (Result.isFailure(ei)) {
|
|
144
28
|
console.error(ei.failure)
|
|
@@ -269,7 +153,7 @@ export type EnforceNonEmptyRecord<R> = keyof R extends never ? never : R
|
|
|
269
153
|
export function intersect<AS extends unknown[] & { 0: unknown }>(
|
|
270
154
|
...as: AS
|
|
271
155
|
): UnionToIntersection<{ [k in keyof AS]: AS[k] }[number]> {
|
|
272
|
-
return as.reduce((a: any, b: any) => (
|
|
156
|
+
return as.reduce((a: any, b: any) => Object.assign(a, b), {}) as any
|
|
273
157
|
}
|
|
274
158
|
|
|
275
159
|
export type IsEqualTo<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
|
|
@@ -280,8 +164,7 @@ export type IsEqualTo<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
|
|
|
280
164
|
export const unifyIndex = Symbol()
|
|
281
165
|
export type unifyIndex = typeof unifyIndex
|
|
282
166
|
|
|
283
|
-
|
|
284
|
-
export interface UnifiableIndexed<X> {}
|
|
167
|
+
export interface UnifiableIndexed<_X> {}
|
|
285
168
|
export type UnifiableIndexedURI = keyof UnifiableIndexed<any>
|
|
286
169
|
|
|
287
170
|
export interface Unifiable<X> {
|
|
@@ -313,9 +196,7 @@ function decorateNew(
|
|
|
313
196
|
if (out.descriptor) {
|
|
314
197
|
out.descriptor = Object.assign({}, out.descriptor)
|
|
315
198
|
}
|
|
316
|
-
const actualDesc: PropertyDescriptor =
|
|
317
|
-
out.descriptor || /* istanbul ignore next */ out
|
|
318
|
-
)
|
|
199
|
+
const actualDesc: PropertyDescriptor = out.descriptor || /* istanbul ignore next */ out
|
|
319
200
|
|
|
320
201
|
const originalMethod = validateAndExtractMethodFromDescriptor(actualDesc)
|
|
321
202
|
const isStatic = inp.placement === "static"
|
|
@@ -684,7 +565,7 @@ export type OptPromise<T extends () => any> = (
|
|
|
684
565
|
) => Promise<ReturnType<T>> | ReturnType<T>
|
|
685
566
|
|
|
686
567
|
export function access<T extends string, T2>(t: Record<T, T2>) {
|
|
687
|
-
return (key: T) => t[key]
|
|
568
|
+
return (key: T) => t[key]
|
|
688
569
|
}
|
|
689
570
|
|
|
690
571
|
export function todayAtUTCNoon() {
|
|
@@ -736,25 +617,64 @@ export const copy = dual<
|
|
|
736
617
|
}
|
|
737
618
|
>(2, <A>(self: A, f: Partial<A> | ((a: A) => Partial<A>)) => clone(self, { ...self, ...(isFunction(f) ? f(self) : f) }))
|
|
738
619
|
|
|
739
|
-
type CopyOriginU<U, Ctor extends new(...args: any[]) => any> =
|
|
620
|
+
export type CopyOriginU<U, Ctor extends new(...args: any[]) => any> =
|
|
740
621
|
& {
|
|
741
622
|
[K in keyof U & keyof InstanceType<Ctor>]?: U[K]
|
|
742
623
|
}
|
|
743
624
|
& {}
|
|
744
625
|
|
|
745
|
-
type CopyOriginRet<A, U> =
|
|
626
|
+
export type CopyOriginRet<A, U> =
|
|
746
627
|
& {
|
|
747
628
|
[K in keyof A | keyof U]: K extends keyof U ? U[K] : A[K & keyof A]
|
|
748
629
|
}
|
|
749
630
|
& {}
|
|
750
631
|
|
|
751
|
-
type CopyOriginSelf<A, U> = Equals<{}, U> extends true
|
|
632
|
+
export type CopyOriginSelf<A, U> = Equals<{}, U> extends true
|
|
752
633
|
? Equals<keyof {}, keyof U> extends true ? `updates argument is empty or contains only extra properties`
|
|
753
634
|
: A
|
|
754
635
|
: A
|
|
755
636
|
|
|
637
|
+
export interface StructuralCopyOrigin<Self extends object> {
|
|
638
|
+
<A extends Self, U extends Partial<Self>>(
|
|
639
|
+
f: (a: A) =>
|
|
640
|
+
& {
|
|
641
|
+
[K in keyof U & keyof Self]?: U[K]
|
|
642
|
+
}
|
|
643
|
+
& {}
|
|
644
|
+
): (self: CopyOriginSelf<A, U>) => CopyOriginRet<A, U>
|
|
645
|
+
<A extends Self, U extends Partial<Self>>(
|
|
646
|
+
updates:
|
|
647
|
+
& {
|
|
648
|
+
[K in keyof U & keyof Self]?: U[K]
|
|
649
|
+
}
|
|
650
|
+
& {}
|
|
651
|
+
): (self: CopyOriginSelf<A, U>) => CopyOriginRet<A, U>
|
|
652
|
+
<A extends Self, U extends Partial<Self>>(
|
|
653
|
+
self: CopyOriginSelf<A, U>,
|
|
654
|
+
f: (a: A) =>
|
|
655
|
+
& {
|
|
656
|
+
[K in keyof U & keyof Self]?: U[K]
|
|
657
|
+
}
|
|
658
|
+
& {}
|
|
659
|
+
): CopyOriginRet<A, U>
|
|
660
|
+
<A extends Self, U extends Partial<Self>>(
|
|
661
|
+
self: CopyOriginSelf<A, U>,
|
|
662
|
+
updates:
|
|
663
|
+
& {
|
|
664
|
+
[K in keyof U & keyof Self]?: U[K]
|
|
665
|
+
}
|
|
666
|
+
& {}
|
|
667
|
+
): CopyOriginRet<A, U>
|
|
668
|
+
}
|
|
669
|
+
|
|
756
670
|
// just one input param: the convention is that the ctor takes an object
|
|
757
|
-
// containing the properties of the
|
|
671
|
+
// containing the properties of the value (I can't put object there as type because of contravariance)
|
|
672
|
+
/**
|
|
673
|
+
* By design this does not return `Self` directly.
|
|
674
|
+
*
|
|
675
|
+
* The return type is computed from `Self` and the update payload so callers can
|
|
676
|
+
* expose an explicit structural return type that remains assignable to `Self`.
|
|
677
|
+
*/
|
|
758
678
|
export const copyOrigin = <Ctor extends new(_: any) => any>(ctor: Ctor) =>
|
|
759
679
|
dual<
|
|
760
680
|
{
|
|
@@ -883,8 +803,6 @@ export function setMoveElDropUndefined<T>(el: T, newIndex: number) {
|
|
|
883
803
|
pipe([...arrInput], arMoveElDropUndefined(el, newIndex), Option.map((ar) => new Set(ar)))
|
|
884
804
|
}
|
|
885
805
|
|
|
886
|
-
export { get }
|
|
887
|
-
|
|
888
806
|
type RemoveNonArray<T> = T extends readonly any[] ? T : never
|
|
889
807
|
export function isNativeTuple<A>(a: A): a is RemoveNonArray<A> {
|
|
890
808
|
return Array.isArray(a)
|
|
@@ -970,5 +888,5 @@ const genConstructor = (function*() {}).constructor
|
|
|
970
888
|
* @category predicates
|
|
971
889
|
* @since 3.11.0
|
|
972
890
|
*/
|
|
973
|
-
export const isGeneratorFunction = (u: unknown): u is (...args: Array<any>) => Generator<any
|
|
974
|
-
|
|
891
|
+
export const isGeneratorFunction = (u: unknown): u is (...args: Array<any>) => Generator<any> =>
|
|
892
|
+
isFunction(u) && u.constructor === genConstructor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.test.d.ts","sourceRoot":"","sources":["../rpc.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc.test.d.ts","sourceRoot":"","sources":["../rpc.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAErF,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAE7C,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAI0B,KAAK;;;;AAKpC,qBAAa,KAAM,SAAQ,UAQzB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretURL.test.d.ts","sourceRoot":"","sources":["../secretURL.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"special.test.d.ts","sourceRoot":"","sources":["../special.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-error.types.d.ts","sourceRoot":"","sources":["../stream-error.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { S } from "effect-app";
|
|
2
|
+
import { makeRpcClient } from "effect-app/client";
|
|
3
|
+
class GeneralError extends S.TaggedError("GeneralError")("GeneralError", {
|
|
4
|
+
message: S.String
|
|
5
|
+
}) {
|
|
6
|
+
}
|
|
7
|
+
class CustomError extends S.TaggedError("CustomError")("CustomError", {
|
|
8
|
+
reason: S.String
|
|
9
|
+
}) {
|
|
10
|
+
}
|
|
11
|
+
const { TaggedRequestFor } = makeRpcClient({ config: {} }, GeneralError);
|
|
12
|
+
const Req = TaggedRequestFor("Test");
|
|
13
|
+
class StreamWithError extends Req.Stream()("StreamWithError", {}, {
|
|
14
|
+
success: S.Number,
|
|
15
|
+
error: CustomError
|
|
16
|
+
}) {
|
|
17
|
+
}
|
|
18
|
+
const _check = true;
|
|
19
|
+
const _check2 = true;
|
|
20
|
+
class StreamNoError extends Req.Stream()("StreamNoError", {}, {
|
|
21
|
+
success: S.Number
|
|
22
|
+
}) {
|
|
23
|
+
}
|
|
24
|
+
const _check3 = true;
|
|
25
|
+
const _check4 = true;
|
|
26
|
+
console.log("ok");
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWVycm9yLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3RyZWFtLWVycm9yLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWpELE1BQU0sWUFBYSxTQUFRLENBQUMsQ0FBQyxXQUFXLENBQWUsY0FBYyxDQUFDLENBQUMsY0FBYyxFQUFFO0lBQ3JGLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTTtDQUNsQixDQUFDO0NBQUc7QUFFTCxNQUFNLFdBQVksU0FBUSxDQUFDLENBQUMsV0FBVyxDQUFjLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRTtJQUNqRixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDakIsQ0FBQztDQUFHO0FBRUwsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQVMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFBO0FBQy9FLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBRXBDLE1BQU0sZUFBZ0IsU0FBUSxHQUFHLENBQUMsTUFBTSxFQUFtQixDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFBRTtJQUNqRixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDakIsS0FBSyxFQUFFLFdBQVc7Q0FDbkIsQ0FBQztDQUFHO0FBR0wsTUFBTSxNQUFNLEdBQXdELElBQUksQ0FBQTtBQUN4RSxNQUFNLE9BQU8sR0FBd0QsSUFBSSxDQUFBO0FBRXpFLE1BQU0sYUFBYyxTQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQWlCLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRTtJQUMzRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDbEIsQ0FBQztDQUFHO0FBRUwsTUFBTSxPQUFPLEdBQTJDLElBQUksQ0FBQTtBQUM1RCxNQUFNLE9BQU8sR0FBMkMsSUFBSSxDQUFBO0FBRTVELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUEifQ==
|
package/test/rpc.test.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { type Effect, type Option } from "effect"
|
|
2
|
+
import { expect, test } from "vitest"
|
|
1
3
|
import { makeRpcClient, NotLoggedInError, UnauthorizedError } from "../src/client.js"
|
|
4
|
+
import { ForceVoid } from "../src/client/makeClient.js"
|
|
2
5
|
import { S } from "../src/index.js"
|
|
3
6
|
import { RpcContextMap } from "../src/rpc.js"
|
|
4
7
|
|
|
@@ -8,16 +11,52 @@ export class RequestContextMap extends RpcContextMap.makeMap({
|
|
|
8
11
|
test: RpcContextMap.make()(S.Never)
|
|
9
12
|
}) {}
|
|
10
13
|
|
|
11
|
-
const
|
|
14
|
+
const stubMiddleware = {
|
|
15
|
+
requestContextMap: RequestContextMap.config,
|
|
16
|
+
requestContext: undefined as never
|
|
17
|
+
}
|
|
18
|
+
const { TaggedRequestFor } = makeRpcClient(stubMiddleware)
|
|
19
|
+
const TaggedRequest = TaggedRequestFor("Test").Query
|
|
12
20
|
|
|
13
21
|
export class Stats extends TaggedRequest<Stats>()("Stats", {}, {
|
|
14
22
|
allowedRoles: ["manager"],
|
|
15
23
|
success: {
|
|
16
|
-
usersActive24Hours: S.
|
|
17
|
-
usersActiveLastWeek: S.
|
|
18
|
-
newUsersLast24Hours: S.
|
|
19
|
-
newUsersLastWeek: S.
|
|
24
|
+
usersActive24Hours: S.Finite,
|
|
25
|
+
usersActiveLastWeek: S.Finite,
|
|
26
|
+
newUsersLast24Hours: S.Finite,
|
|
27
|
+
newUsersLastWeek: S.Finite
|
|
20
28
|
}
|
|
21
29
|
}) {}
|
|
22
30
|
|
|
23
|
-
declare const _stats: typeof Stats.
|
|
31
|
+
declare const _stats: typeof Stats.Type
|
|
32
|
+
declare const _statsSuccess: typeof Stats.success.Type
|
|
33
|
+
declare const _statsError: typeof Stats.error.Type
|
|
34
|
+
declare const _statsRequestType: typeof Stats.type
|
|
35
|
+
|
|
36
|
+
test("ForceVoid decodes and encodes as void", () => {
|
|
37
|
+
const statsFromMake = Stats.make({})
|
|
38
|
+
const statsFromMakeOption = Stats.makeOption({})
|
|
39
|
+
const statsFromMakeEffect = Stats.makeEffect({})
|
|
40
|
+
|
|
41
|
+
expect(S.decodeUnknownSync(ForceVoid)(undefined)).toBe(undefined)
|
|
42
|
+
expect(S.is(ForceVoid)(undefined)).toBe(true)
|
|
43
|
+
expect(S.decodeUnknownSync(ForceVoid)("test")).toBe(undefined)
|
|
44
|
+
expect(S.is(ForceVoid)("test")).toBe(true)
|
|
45
|
+
expect(S.encodeUnknownSync(ForceVoid)("test")).toBe(undefined)
|
|
46
|
+
expect(S.encodeUnknownSync(S.toCodecJson(ForceVoid))("test")).toBe(null)
|
|
47
|
+
expectTypeOf<typeof _stats>().toEqualTypeOf<Stats>()
|
|
48
|
+
expectTypeOf<typeof _statsSuccess>().toEqualTypeOf<{
|
|
49
|
+
readonly usersActive24Hours: number
|
|
50
|
+
readonly usersActiveLastWeek: number
|
|
51
|
+
readonly newUsersLast24Hours: number
|
|
52
|
+
readonly newUsersLastWeek: number
|
|
53
|
+
}>()
|
|
54
|
+
// Resource error carries only `config.error` (and optional `generalErrors`); rcm-derived
|
|
55
|
+
// middleware errors no longer leak into `resource.error` — they reach the wire via the
|
|
56
|
+
// middleware tag attached to the rpc group (`rpc.middlewares[*].error` failure-union).
|
|
57
|
+
expectTypeOf<typeof _statsError>().toEqualTypeOf<never>()
|
|
58
|
+
expectTypeOf<typeof _statsRequestType>().toEqualTypeOf<"query">()
|
|
59
|
+
expectTypeOf(statsFromMake).toEqualTypeOf<Stats>()
|
|
60
|
+
expectTypeOf(statsFromMakeOption).toEqualTypeOf<Option.Option<Stats>>()
|
|
61
|
+
expectTypeOf(statsFromMakeEffect).toEqualTypeOf<Effect.Effect<Stats, S.SchemaError>>()
|
|
62
|
+
})
|