Skip to content

Commit ee9694e

Browse files
committed
fix type issue?
1 parent 759b196 commit ee9694e

3 files changed

Lines changed: 26 additions & 14 deletions

File tree

.changeset/old-suns-kneel.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"effect-app": patch
3+
---
4+
5+
fix type issue?

packages/effect-app/src/Schema/ext.ts

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,12 @@ export function Array<ValueSchema extends S.Top>(value: ValueSchema) {
195195
/**
196196
* An annotated `S.Array` of unique items that decodes to a `ReadonlySet`.
197197
*/
198-
export const ReadonlySetFromArray = <ValueSchema extends S.Top>(value: ValueSchema) => {
198+
export const ReadonlySetFromArray = <ValueSchema extends S.Top>(value: ValueSchema): S.Codec<
199+
ReadonlySet<ValueSchema["Type"]>,
200+
readonly ValueSchema["Encoded"][],
201+
ValueSchema["DecodingServices"],
202+
ValueSchema["EncodingServices"]
203+
> => {
199204
const from = S
200205
.Array(value)
201206
.annotate({ expected: "an array of unique items that will be decoded as a ReadonlySet" })
@@ -204,9 +209,9 @@ export const ReadonlySetFromArray = <ValueSchema extends S.Top>(value: ValueSche
204209
S.decodeTo(
205210
to,
206211
SchemaTransformation.transform({
207-
decode: (arr: globalThis.Array<S.Schema.Type<ValueSchema>>) => new Set<S.Schema.Type<ValueSchema>>(arr),
208-
encode: (set: Set<S.Schema.Type<ValueSchema>>) => [...set] as globalThis.Array<S.Schema.Type<ValueSchema>>
209-
}) as any
212+
decode: (arr) => new Set(arr) as ReadonlySet<S.Schema.Type<ValueSchema>>,
213+
encode: (set) => [...set]
214+
})
210215
)
211216
)
212217
return S.revealCodec(schema)
@@ -218,7 +223,12 @@ export const ReadonlySetFromArray = <ValueSchema extends S.Top>(value: ValueSche
218223
export const ReadonlyMapFromArray = <KeySchema extends S.Top, ValueSchema extends S.Top>(pair: {
219224
readonly key: KeySchema
220225
readonly value: ValueSchema
221-
}) => {
226+
}): S.Codec<
227+
ReadonlyMap<KeySchema["Type"], S.Schema.Type<ValueSchema>>,
228+
readonly (readonly [KeySchema["Encoded"], ValueSchema["Encoded"]])[],
229+
KeySchema["DecodingServices"] | ValueSchema["DecodingServices"],
230+
KeySchema["EncodingServices"] | ValueSchema["EncodingServices"]
231+
> => {
222232
const from = S
223233
.Array(S.Tuple([pair.key, pair.value]))
224234
.annotate({ expected: "an array of key-value tuples that will be decoded as a ReadonlyMap" })
@@ -230,15 +240,12 @@ export const ReadonlyMapFromArray = <KeySchema extends S.Top, ValueSchema extend
230240
to,
231241
SchemaTransformation.transform({
232242
decode: (
233-
arr: globalThis.Array<readonly [S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>]>
234-
) => new Map<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>(arr),
243+
arr
244+
) => new Map(arr) as ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>,
235245
encode: (
236-
map: Map<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>
237-
) =>
238-
[...map.entries()] as globalThis.Array<
239-
readonly [S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>]
240-
>
241-
}) as any
246+
map
247+
) => [...map.entries()] as any // fu
248+
})
242249
)
243250
)
244251
return S.revealCodec(schema)

packages/effect-app/test/schema.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ describe("ReadonlySetFromArray", () => {
235235

236236
describe("ReadonlyMapFromArray", () => {
237237
test("decodes an array of tuples to a Map", () => {
238-
const schema = S.ReadonlyMapFromArray({ key: S.String, value: S.Finite })
238+
const schema = S.ReadonlyMap({ key: S.String, value: S.Finite })
239239
const decoded = S.decodeUnknownSync(schema)([["a", 1], ["b", 2]])
240240
expect(decoded).toEqual(new Map([["a", 1], ["b", 2]]))
241241
})

0 commit comments

Comments
 (0)