0.1.4 #5

Merged
Thilawyn merged 67 commits from next into master 2025-10-02 18:18:23 +02:00
Showing only changes of commit e2187077b3 - Show all commits

View File

@@ -1,37 +0,0 @@
import { Array, Function, Option, Predicate, Schema } from "effect"
import type { Simplify } from "effect/Types"
export type SchemaFromPath<S, P extends readonly any[]> = S extends Schema.Schema.Any
? P extends [infer Head, ...infer Tail]
? Head extends keyof S["Type"]
? (
S extends Schema.TupleType<infer Elements, infer Rest> ? (
Head extends keyof Elements ? SchemaFromPath<Elements[Head], Tail> :
Head extends keyof Rest ? SchemaFromPath<Rest, Tail> :
never
) :
S extends Schema.Array$<infer Value> ? SchemaFromPath<Value, Tail> :
S extends Schema.Struct<infer Fields> ? SchemaFromPath<Fields[Head], Tail> :
never
)
: never
: S
: never
const TestSchema = Schema.Struct({
allUsers: Schema.Array(Schema.Struct({
name: Schema.String
})),
admins: Schema.Tuple(
Schema.Struct({
name: Schema.Literal("Gneugneu")
}),
Schema.Struct({
name: Schema.Literal("AAAAYA")
}),
),
})
type S = SchemaFromPath<typeof TestSchema, ["admins", 0, "name"]>
type T = number extends keyof typeof TestSchema.fields.admins.elements ? true : false