diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2023-02-26 11:28:05 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-26 11:28:05 +0900 |
| commit | 18dbcfa0b09715a234a4eca0288e17d5cbf7622c (patch) | |
| tree | efd9e83b3e11919926fd80790ad272d1d9e7bda6 /packages/backend/src/misc | |
| parent | Simplify search.vue (remove dead code) (#10088) (diff) | |
| download | misskey-18dbcfa0b09715a234a4eca0288e17d5cbf7622c.tar.gz misskey-18dbcfa0b09715a234a4eca0288e17d5cbf7622c.tar.bz2 misskey-18dbcfa0b09715a234a4eca0288e17d5cbf7622c.zip | |
test(server): add validation test of api:notes/create (#10090)
* fix(server): notes/createのバリデーションが効いていない
Fix #10079
Co-Authored-By: mei23 <m@m544.net>
* anyOf内にバリデーションを書いても最初の一つしかチェックされない
* :v:
* wip
* wip
* :v:
* RequiredProp
* Revert "RequiredProp"
This reverts commit 74693900119a590263106fa3adefd008d69ce80c.
* add api:notes/create
* fix lint
* text
* :v:
* improve readability
---------
Co-authored-by: mei23 <m@m544.net>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'packages/backend/src/misc')
| -rw-r--r-- | packages/backend/src/misc/schema.ts | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/packages/backend/src/misc/schema.ts b/packages/backend/src/misc/schema.ts index 7fc4a3e654..6a0802f8a4 100644 --- a/packages/backend/src/misc/schema.ts +++ b/packages/backend/src/misc/schema.ts @@ -116,10 +116,10 @@ export type Obj = Record<string, Schema>; // https://github.com/misskey-dev/misskey/issues/8535 // To avoid excessive stack depth error, // deceive TypeScript with UnionToIntersection (or more precisely, `infer` expression within it). -export type ObjType<s extends Obj, RequiredProps extends keyof s> = +export type ObjType<s extends Obj, RequiredProps extends ReadonlyArray<keyof s>> = UnionToIntersection< { -readonly [R in RequiredPropertyNames<s>]-?: SchemaType<s[R]> } & - { -readonly [R in RequiredProps]-?: SchemaType<s[R]> } & + { -readonly [R in RequiredProps[number]]-?: SchemaType<s[R]> } & { -readonly [P in keyof s]?: SchemaType<s[P]> } >; @@ -136,18 +136,19 @@ type PartialIntersection<T> = Partial<UnionToIntersection<T>>; // https://github.com/misskey-dev/misskey/pull/8144#discussion_r785287552 // To get union, we use `Foo extends any ? Hoge<Foo> : never` type UnionSchemaType<a extends readonly any[], X extends Schema = a[number]> = X extends any ? SchemaType<X> : never; -type UnionObjectSchemaType<a extends readonly any[], X extends Schema = a[number]> = X extends any ? ObjectSchemaType<X> : never; +//type UnionObjectSchemaType<a extends readonly any[], X extends Schema = a[number]> = X extends any ? ObjectSchemaType<X> : never; +type UnionObjType<s extends Obj, a extends readonly any[], X extends ReadonlyArray<keyof s> = a[number]> = X extends any ? ObjType<s, X> : never; type ArrayUnion<T> = T extends any ? Array<T> : never; type ObjectSchemaTypeDef<p extends Schema> = p['ref'] extends keyof typeof refs ? Packed<p['ref']> : p['properties'] extends NonNullable<Obj> ? - p['anyOf'] extends ReadonlyArray<Schema> ? - ObjType<p['properties'], NonNullable<p['required']>[number]> & UnionObjectSchemaType<p['anyOf']> & PartialIntersection<UnionObjectSchemaType<p['anyOf']>> - : - ObjType<p['properties'], NonNullable<p['required']>[number]> + p['anyOf'] extends ReadonlyArray<Schema> ? p['anyOf'][number]['required'] extends ReadonlyArray<keyof p['properties']> ? + UnionObjType<p['properties'], NonNullable<p['anyOf'][number]['required']>> & ObjType<p['properties'], NonNullable<p['required']>> + : never + : ObjType<p['properties'], NonNullable<p['required']>> : - p['anyOf'] extends ReadonlyArray<Schema> ? UnionObjectSchemaType<p['anyOf']> & PartialIntersection<UnionObjectSchemaType<p['anyOf']>> : + p['anyOf'] extends ReadonlyArray<Schema> ? never : // see CONTRIBUTING.md p['allOf'] extends ReadonlyArray<Schema> ? UnionToIntersection<UnionSchemaType<p['allOf']>> : any |