This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user