effect-app 4.0.0-beta.264 → 4.0.0-beta.266
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 +21 -0
- package/dist/Model/filter/types/path/eager.d.ts +35 -8
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
- package/dist/Model/filter/types/path/eager.js +7 -1
- package/dist/Model/query/new-kid-interpreter.d.ts +4 -4
- package/package.json +2 -2
- package/src/Model/filter/types/path/eager.ts +38 -8
- package/test/special.test.ts +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @effect-app/prelude
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.266
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- bbaa67e: Fix `TS2589: Type instantiation is excessively deep and possibly infinite` when querying models that embed `Schema.Defect()` (or any field encoded as `Json`).
|
|
8
|
+
|
|
9
|
+
The query path type `Path<T>` (used by `Q.where`/`Q.and`/`Q.order` to type dotted field paths) recursed through object types with no termination for self-referential ones. Under effect `4.0.0-beta.83`, `Schema.Defect()` encodes as `Json`, whose `JsonObject = { readonly [x: string]: Json }` index signature made `Path` descend forever, blowing past TypeScript's instantiation limit on any model with such a field (e.g. carrier-error states carrying `raw: Schema.Defect()`).
|
|
10
|
+
|
|
11
|
+
`Path` now threads a `Seen` set of already-entered object types and stops before re-entering one, so self-referential types terminate (the field itself stays a valid leaf path; only the unbounded descent is cut). Finite models are unaffected.
|
|
12
|
+
|
|
13
|
+
## 4.0.0-beta.265
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- 3e855bc: Update Effect packages to `4.0.0-beta.83` (from `beta.74`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/sql-sqlite-node`, `@effect/atom-vue`, `@effect/vitest`.
|
|
18
|
+
|
|
19
|
+
Adapt the infra workflow engines to beta.83 API changes:
|
|
20
|
+
|
|
21
|
+
- `Schema.Defect` is now a constructor function — use `S.Defect()` when building the deferred-exit codec (the bare constant no longer produces a usable schema and crashed `toType`).
|
|
22
|
+
- `Workflow` exposes its name as `_tag` instead of `name`. `WorkflowEngineSqlite`/`WorkflowEngineCosmos` now key the registry, codec caches, and persisted `workflow_name` off `workflow._tag`, fixing crash-recovery (stale-lease re-drive previously registered under an `undefined` key and never matched).
|
|
23
|
+
|
|
3
24
|
## 4.0.0-beta.264
|
|
4
25
|
|
|
5
26
|
## 4.0.0-beta.263
|
|
@@ -3,26 +3,53 @@ import type { BrowserNativeObject, Equals, IsLiteral, IsNever, Primitive } from
|
|
|
3
3
|
import type { ArrayKey, IsTuple, TupleKeys } from "./common.js";
|
|
4
4
|
/**
|
|
5
5
|
* Helper type for recursively constructing paths through a type.
|
|
6
|
-
*
|
|
6
|
+
* `Seen` carries the set of object types already entered on this branch so
|
|
7
|
+
* recursion terminates on self-referential types (see {@link Path}).
|
|
7
8
|
*/
|
|
8
|
-
type PathImpl<K extends string | number, V> = V extends Primitive | BrowserNativeObject ? `${K}` : `${K}` | `${K}.${Path<V>}`;
|
|
9
|
+
type PathImpl<K extends string | number, V, Seen> = V extends Primitive | BrowserNativeObject ? `${K}` : [V] extends [Seen] ? `${K}` : `${K}` | `${K}.${Path<V, Seen | V>}`;
|
|
9
10
|
/**
|
|
10
11
|
* Type which eagerly collects all paths through a type
|
|
11
|
-
* @typeParam T
|
|
12
|
+
* @typeParam T - type which should be introspected
|
|
13
|
+
* @typeParam Seen - object types already entered on this recursion branch;
|
|
14
|
+
* used to terminate on self-referential types
|
|
12
15
|
* @example
|
|
13
16
|
* ```
|
|
14
17
|
* Path<{foo: {bar: string}}> = 'foo' | 'foo.bar'
|
|
15
18
|
* ```
|
|
16
19
|
*/
|
|
17
|
-
export type Path<T> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
|
18
|
-
[K in TupleKeys<T>]-?: PathImpl<K & string, T[K]> | "length";
|
|
19
|
-
}[TupleKeys<T>] : PathImpl<ArrayKey, V> | "length" : {
|
|
20
|
-
[K in keyof T]-?: PathImpl<K & string, T[K]>;
|
|
20
|
+
export type Path<T, Seen = never> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
|
21
|
+
[K in TupleKeys<T>]-?: PathImpl<K & string, T[K], Seen> | "length";
|
|
22
|
+
}[TupleKeys<T>] : PathImpl<ArrayKey, V, Seen | T> | "length" : {
|
|
23
|
+
[K in keyof T]-?: PathImpl<K & string, T[K], Seen | T>;
|
|
21
24
|
}[keyof T];
|
|
22
25
|
/**
|
|
23
26
|
* See {@link Path}
|
|
24
27
|
*/
|
|
25
28
|
export type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>;
|
|
29
|
+
export declare namespace PathRecursionTests {
|
|
30
|
+
type JsonLike = string | number | boolean | null | ReadonlyArray<JsonLike> | {
|
|
31
|
+
readonly [x: string]: JsonLike;
|
|
32
|
+
};
|
|
33
|
+
export type _RawDefect = Path<{
|
|
34
|
+
id: string;
|
|
35
|
+
raw: JsonLike;
|
|
36
|
+
}>;
|
|
37
|
+
export type _NestedDefect = Path<{
|
|
38
|
+
a: {
|
|
39
|
+
b: {
|
|
40
|
+
error: {
|
|
41
|
+
raw: JsonLike;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
export type _ArrayOfDefect = Path<{
|
|
47
|
+
items: ReadonlyArray<{
|
|
48
|
+
raw: JsonLike;
|
|
49
|
+
}>;
|
|
50
|
+
}>;
|
|
51
|
+
export {};
|
|
52
|
+
}
|
|
26
53
|
/**
|
|
27
54
|
* Type to evaluate the type which the given path points to.
|
|
28
55
|
* @typeParam T - deeply nested type which is indexed by the path
|
|
@@ -92,4 +119,4 @@ export type FieldPathByValue<TFieldValues extends FieldValues, TValue> = {
|
|
|
92
119
|
[Key in FieldPath<TFieldValues>]: FieldPathValue<TFieldValues, Key> extends TValue ? Key : never;
|
|
93
120
|
}[FieldPath<TFieldValues>];
|
|
94
121
|
export {};
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFnZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Nb2RlbC9maWx0ZXIvdHlwZXMvcGF0aC9lYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDL0MsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTdGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRS9EOzs7O0dBSUc7QUFDSCxLQUFLLFFBQVEsQ0FBQyxDQUFDLFNBQVMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FDakQsU0FBUyxHQUNULG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBTTVCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUMzQixHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFFeEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFNBQVMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksR0FBRztLQUMxRixDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsUUFBUTtDQUNu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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eager.d.ts","sourceRoot":"","sources":["../../../../../src/Model/filter/types/path/eager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE7F,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE/D
|
|
1
|
+
{"version":3,"file":"eager.d.ts","sourceRoot":"","sources":["../../../../../src/Model/filter/types/path/eager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { expectTypeOf } from "@effect/vitest";
|
|
3
|
+
export var PathRecursionTests;
|
|
4
|
+
(function (PathRecursionTests) {
|
|
5
|
+
// finite paths are still produced
|
|
6
|
+
expectTypeOf().toExtend();
|
|
7
|
+
expectTypeOf().toExtend();
|
|
8
|
+
})(PathRecursionTests || (PathRecursionTests = {}));
|
|
3
9
|
export var RefinePathValueTests;
|
|
4
10
|
(function (RefinePathValueTests) {
|
|
5
11
|
expectTypeOf().toEqualTypeOf();
|
|
@@ -28,4 +34,4 @@ export var SetFieldPathValueTests;
|
|
|
28
34
|
expectTypeOf().toEqualTypeOf();
|
|
29
35
|
expectTypeOf().toEqualTypeOf();
|
|
30
36
|
})(SetFieldPathValueTests || (SetFieldPathValueTests = {}));
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvTW9kZWwvZmlsdGVyL3R5cGVzL3BhdGgvZWFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQTZDN0MsTUFBTSxLQUFXLGtCQUFrQixDQW1CbEM7QUFuQkQsV0FBaUIsa0JBQWtCO0lBZ0JqQyxrQ0FBa0M7SUFDbEMsWUFBWSxFQUFRLENBQUMsUUFBUSxFQUFjLENBQUE7SUFDM0MsWUFBWSxFQUFTLENBQUMsUUFBUSxFQUFjLENBQUE7QUFDOUMsQ0FBQyxFQW5CZ0Isa0JBQWtCLEtBQWxCLGtCQUFrQixRQW1CbEM7QUFnSUQsTUFBTSxLQUFXLG9CQUFvQixDQWtFcEM7QUFsRUQsV0FBaUIsb0JBQW9CO0lBRW5DLFlBQVksRUFBUyxDQUFDLGFBQWEsRUFBb0MsQ0FBQTtJQUd2RSxZQUFZLEVBQVMsQ0FBQyxhQUFhLEVBQTZCLENBQUE7SUFHaEUsWUFBWSxFQUFTLENBQUMsYUFBYSxFQUFpQixDQUFBO0lBR3BELFlBQVksRUFBUyxDQUFDLGFBQWEsRUFBbUIsQ0FBQTtJQUd0RCxZQUFZLEVBQVMsQ0FBQyxhQUFhLEVBQThCLENBQUE7SUFPakUsWUFBWSxFQUFTLENBQUMsYUFBYSxFQUFvQyxDQUFBO0lBR3ZFLFlBQVksRUFBUyxDQUFDLGFBQWEsRUFBaUIsQ0FBQTtJQUdwRCxZQUFZLEVBQVMsQ0FBQyxhQUFhLEVBQWUsQ0FBQTtJQUdsRCxZQUFZLEVBQVUsQ0FBQyxhQUFhLEVBQW9DLENBQUE7SUFHeEUsWUFBWSxFQUFVLENBQUMsYUFBYSxFQUE2QixDQUFBO0lBR2pFLFlBQVksRUFBVSxDQUFDLGFBQWEsRUFBMEIsQ0FBQTtJQUc5RCxZQUFZLEVBQVUsQ0FBQyxhQUFhLEVBQW1CLENBQUE7SUFHdkQsWUFBWSxFQUFVLENBQUMsYUFBYSxFQUE4QixDQUFBO0lBUWxFLFlBQVksRUFBVSxDQUFDLGFBQWEsRUFBb0MsQ0FBQTtJQVN4RSxZQUFZLEVBQVUsQ0FBQyxhQUFhLEVBTWhDLENBQUE7QUFDTixDQUFDLEVBbEVnQixvQkFBb0IsS0FBcEIsb0JBQW9CLFFBa0VwQztBQUVELE1BQU0sS0FBVyxzQkFBc0IsQ0F5QnRDO0FBekJELFdBQWlCLHNCQUFzQjtJQUVyQyxZQUFZLEVBQVMsQ0FBQyxhQUFhLEVBQTZCLENBQUE7SUFHaEUsWUFBWSxFQUFVLENBQUMsYUFBYSxFQUFzQyxDQUFBO0lBRzFFLFlBQVksRUFBUyxDQUFDLGFBQWEsRUFBK0IsQ0FBQTtJQUdsRSxZQUFZLEVBQVUsQ0FBQyxhQUFhLEVBQTBELENBQUE7SUFPOUYsWUFBWSxFQUFVLENBQUMsYUFBYSxFQUFtRSxDQUFBO0lBR3ZHLFlBQVksRUFBUyxDQUFDLGFBQWEsRUFBMkIsQ0FBQTtJQUc5RCxZQUFZLEVBQVUsQ0FBQyxhQUFhLEVBQWtDLENBQUE7QUFDeEUsQ0FBQyxFQXpCZ0Isc0JBQXNCLEtBQXRCLHNCQUFzQixRQXlCdEMifQ==
|
|
@@ -94,10 +94,10 @@ export declare const toFilter: <TFieldValues extends FieldValues, A, R, TFieldVa
|
|
|
94
94
|
schema: S.Codec<any, TFieldValues, any, never>;
|
|
95
95
|
computed: never;
|
|
96
96
|
order: readonly [{
|
|
97
|
-
key: import("../filter/types/path/eager.js").Path<TFieldValues>;
|
|
97
|
+
key: import("../filter/types/path/eager.js").Path<TFieldValues, never>;
|
|
98
98
|
direction: "ASC" | "DESC";
|
|
99
99
|
}, ...{
|
|
100
|
-
key: import("../filter/types/path/eager.js").Path<TFieldValues>;
|
|
100
|
+
key: import("../filter/types/path/eager.js").Path<TFieldValues, never>;
|
|
101
101
|
direction: "ASC" | "DESC";
|
|
102
102
|
}[]];
|
|
103
103
|
ttype: "count" | "many" | "one";
|
|
@@ -123,10 +123,10 @@ export declare const toFilter: <TFieldValues extends FieldValues, A, R, TFieldVa
|
|
|
123
123
|
schema: S.Codec<any, TFieldValues, any, never>;
|
|
124
124
|
computed: Record<string, ComputedProjectionIrExpression>;
|
|
125
125
|
order: readonly [{
|
|
126
|
-
key: import("../filter/types/path/eager.js").Path<TFieldValues>;
|
|
126
|
+
key: import("../filter/types/path/eager.js").Path<TFieldValues, never>;
|
|
127
127
|
direction: "ASC" | "DESC";
|
|
128
128
|
}, ...{
|
|
129
|
-
key: import("../filter/types/path/eager.js").Path<TFieldValues>;
|
|
129
|
+
key: import("../filter/types/path/eager.js").Path<TFieldValues, never>;
|
|
130
130
|
direction: "ASC" | "DESC";
|
|
131
131
|
}[]];
|
|
132
132
|
ttype: "count" | "many" | "one";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-app",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.266",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"vitest": "^4.1.7"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"effect": "^4.0.0-beta.
|
|
27
|
+
"effect": "^4.0.0-beta.83"
|
|
28
28
|
},
|
|
29
29
|
"typesVersions": {
|
|
30
30
|
"*": {
|
|
@@ -7,27 +7,36 @@ import type { ArrayKey, IsTuple, TupleKeys } from "./common.js"
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Helper type for recursively constructing paths through a type.
|
|
10
|
-
*
|
|
10
|
+
* `Seen` carries the set of object types already entered on this branch so
|
|
11
|
+
* recursion terminates on self-referential types (see {@link Path}).
|
|
11
12
|
*/
|
|
12
|
-
type PathImpl<K extends string | number, V> = V extends
|
|
13
|
+
type PathImpl<K extends string | number, V, Seen> = V extends
|
|
13
14
|
| Primitive
|
|
14
15
|
| BrowserNativeObject ? `${K}`
|
|
15
|
-
|
|
16
|
+
// Stop before re-entering a type already on this branch. Recursive types
|
|
17
|
+
// (notably `Json`, the encoded form of `Schema.Defect()`:
|
|
18
|
+
// `JsonObject = { [x: string]: Json }`) would otherwise descend forever and
|
|
19
|
+
// blow past TS's instantiation limit => TS2589. The key itself stays a valid
|
|
20
|
+
// leaf path; only the unbounded descent is cut.
|
|
21
|
+
: [V] extends [Seen] ? `${K}`
|
|
22
|
+
: `${K}` | `${K}.${Path<V, Seen | V>}`
|
|
16
23
|
|
|
17
24
|
/**
|
|
18
25
|
* Type which eagerly collects all paths through a type
|
|
19
|
-
* @typeParam T
|
|
26
|
+
* @typeParam T - type which should be introspected
|
|
27
|
+
* @typeParam Seen - object types already entered on this recursion branch;
|
|
28
|
+
* used to terminate on self-referential types
|
|
20
29
|
* @example
|
|
21
30
|
* ```
|
|
22
31
|
* Path<{foo: {bar: string}}> = 'foo' | 'foo.bar'
|
|
23
32
|
* ```
|
|
24
33
|
*/
|
|
25
|
-
export type Path<T> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
|
26
|
-
[K in TupleKeys<T>]-?: PathImpl<K & string, T[K]> | "length"
|
|
34
|
+
export type Path<T, Seen = never> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
|
35
|
+
[K in TupleKeys<T>]-?: PathImpl<K & string, T[K], Seen> | "length"
|
|
27
36
|
}[TupleKeys<T>]
|
|
28
|
-
: PathImpl<ArrayKey, V> | "length"
|
|
37
|
+
: PathImpl<ArrayKey, V, Seen | T> | "length"
|
|
29
38
|
: {
|
|
30
|
-
[K in keyof T]-?: PathImpl<K & string, T[K]>
|
|
39
|
+
[K in keyof T]-?: PathImpl<K & string, T[K], Seen | T>
|
|
31
40
|
}[keyof T]
|
|
32
41
|
|
|
33
42
|
/**
|
|
@@ -35,6 +44,27 @@ export type Path<T> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true
|
|
|
35
44
|
*/
|
|
36
45
|
export type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>
|
|
37
46
|
|
|
47
|
+
export namespace PathRecursionTests {
|
|
48
|
+
// Regression: self-referential types must terminate instead of blowing past
|
|
49
|
+
// TS's instantiation limit (TS2589). `JsonLike` mirrors effect's `Json` — the
|
|
50
|
+
// encoded form of `Schema.Defect()` — whose `{ [x: string]: Json }` index
|
|
51
|
+
// signature previously made `Path` recurse forever. These aliases failing to
|
|
52
|
+
// compile (rather than resolving to a string union) signals the regression.
|
|
53
|
+
type JsonLike =
|
|
54
|
+
| string
|
|
55
|
+
| number
|
|
56
|
+
| boolean
|
|
57
|
+
| null
|
|
58
|
+
| ReadonlyArray<JsonLike>
|
|
59
|
+
| { readonly [x: string]: JsonLike }
|
|
60
|
+
export type _RawDefect = Path<{ id: string; raw: JsonLike }>
|
|
61
|
+
export type _NestedDefect = Path<{ a: { b: { error: { raw: JsonLike } } } }>
|
|
62
|
+
export type _ArrayOfDefect = Path<{ items: ReadonlyArray<{ raw: JsonLike }> }>
|
|
63
|
+
// finite paths are still produced
|
|
64
|
+
expectTypeOf<"id">().toExtend<_RawDefect>()
|
|
65
|
+
expectTypeOf<"raw">().toExtend<_RawDefect>()
|
|
66
|
+
}
|
|
67
|
+
|
|
38
68
|
/**
|
|
39
69
|
* Type to evaluate the type which the given path points to.
|
|
40
70
|
* @typeParam T - deeply nested type which is indexed by the path
|
package/test/special.test.ts
CHANGED
|
@@ -33,7 +33,7 @@ describe("Class", () => {
|
|
|
33
33
|
|
|
34
34
|
const decoded = S.decodeUnknownSync(A)({ a: "hello" })
|
|
35
35
|
expect(decoded).toBeInstanceOf(A)
|
|
36
|
-
expect(
|
|
36
|
+
expect(decoded.a).toBe("hello")
|
|
37
37
|
|
|
38
38
|
expect(() => S.decodeUnknownSync(A)(null)).toThrow()
|
|
39
39
|
expect(() => S.decodeUnknownSync(A)({ a: 1 })).toThrow()
|
|
@@ -119,7 +119,7 @@ describe("Class constructor", () => {
|
|
|
119
119
|
|
|
120
120
|
const decoded = S.decodeUnknownSync(A)({ a: "hello" })
|
|
121
121
|
expect(decoded).toBeInstanceOf(A)
|
|
122
|
-
expect(
|
|
122
|
+
expect(decoded.a).toBe("hello")
|
|
123
123
|
|
|
124
124
|
expect(() => S.decodeUnknownSync(A)({ a: 1 })).toThrow()
|
|
125
125
|
})
|
|
@@ -176,8 +176,8 @@ describe("TaggedStruct constructor", () => {
|
|
|
176
176
|
S.decodeSync(S.toType(X))({ _tag: "X", n: "a" /* not length 3 */ })
|
|
177
177
|
expect.fail("expected decode to fail with a SchemaError")
|
|
178
178
|
} catch (error) {
|
|
179
|
-
expect(error).
|
|
180
|
-
if (error
|
|
179
|
+
expect(S.isSchemaError(error)).toBe(true)
|
|
180
|
+
if (S.isSchemaError(error)) {
|
|
181
181
|
expect(error.message).toContain("n")
|
|
182
182
|
expect(error.message.toLowerCase()).toContain("length")
|
|
183
183
|
}
|
|
@@ -435,7 +435,7 @@ describe("SpecialJsonSchema", () => {
|
|
|
435
435
|
const structFromNullOr = Schema.Struct({ status: fromNullOr })
|
|
436
436
|
|
|
437
437
|
const encode = Schema.encodeUnknownSync(structFromNullOr as any)
|
|
438
|
-
const encodedNull = encode({ status: null })
|
|
438
|
+
const encodedNull = encode({ status: null })
|
|
439
439
|
expect("status" in encodedNull).toBe(false)
|
|
440
440
|
expect(encode({ status: "test" })).toStrictEqual({ status: "test" })
|
|
441
441
|
|