import { IdSchema } from './schemas/id.js'; import { packedUserLiteSchema, packedUserDetailedNotMeOnlySchema, packedMeDetailedOnlySchema, packedUserDetailedNotMeSchema, packedMeDetailedSchema, packedUserDetailedSchema, packedUserSchema, } from './schemas/user.js'; import { notificationTypeSchema, packedNotificationSchema, packedNotificationStrictSchema, } from './schemas/notification.js'; import { packedNoteSchema } from './schemas/note.js'; import { packedUserListSchema } from './schemas/user-list.js'; import { packedAppSchema } from './schemas/app.js'; import { packedDriveFileSchema } from './schemas/drive-file.js'; import { packedDriveFolderSchema } from './schemas/drive-folder.js'; import { packedFollowingSchema } from './schemas/following.js'; import { packedMutingSchema } from './schemas/muting.js'; import { packedRenoteMutingSchema } from './schemas/renote-muting.js'; import { packedBlockingSchema } from './schemas/blocking.js'; import { packedNoteReactionSchema } from './schemas/note-reaction.js'; import { packedHashtagSchema } from './schemas/hashtag.js'; import { packedPageSchema } from './schemas/page.js'; import { packedNoteFavoriteSchema } from './schemas/note-favorite.js'; import { packedChannelSchema } from './schemas/channel.js'; import { packedAntennaSchema } from './schemas/antenna.js'; import { packedClipSchema } from './schemas/clip.js'; import { packedFederationInstanceSchema } from './schemas/federation-instance.js'; import { packedQueueCountSchema } from './schemas/queue.js'; import { packedGalleryPostSchema } from './schemas/gallery-post.js'; import { packedEmojiDetailedSchema, packedEmojiSimpleSchema } from './schemas/emoji.js'; import { packedFlashSchema } from './schemas/flash.js'; import { packedAdSchema } from './schemas/ad.js'; import { packedAnnouncementSchema } from './schemas/announcement.js'; import { packedRelaySchema } from './schemas/relay.js'; import { packedAbuseUserReportSchema } from './schemas/abuse-user-report.js'; import { packedRoleSchema, packedRoleAssignSchema, packedRolePolicySchema, packedRoleCondFormulaSchema, } from './schemas/role.js'; import { InstanceMetaSharedSchema, InstanceMetaAdminSchema, } from './schemas/instance-meta.js'; import { ServerInfoSchema, ServerInfoAdminSchema, } from './schemas/server-info.js'; import { SignInSchema, } from './schemas/sign-in.js'; import { packedModerationLogSchema } from './schemas/moderation-log.js'; import { packedAuthSessionSchema } from './schemas/auth-session.js'; import { Error, ApiError } from './schemas/error.js'; import type { JSONSchema7, JSONSchema7Definition, GetDef, GetRefs, GetKeys, UnionToArray, Serialized, Projected } from 'schema-type'; export const refs = { Id: IdSchema, UserLite: packedUserLiteSchema, UserDetailedNotMeOnly: packedUserDetailedNotMeOnlySchema, MeDetailedOnly: packedMeDetailedOnlySchema, UserDetailedNotMe: packedUserDetailedNotMeSchema, MeDetailed: packedMeDetailedSchema, UserDetailed: packedUserDetailedSchema, User: packedUserSchema, UserList: packedUserListSchema, App: packedAppSchema, Note: packedNoteSchema, NoteReaction: packedNoteReactionSchema, NoteFavorite: packedNoteFavoriteSchema, NotificationType: notificationTypeSchema, Notification: packedNotificationSchema, NotificationStrict: packedNotificationStrictSchema, DriveFile: packedDriveFileSchema, DriveFolder: packedDriveFolderSchema, Following: packedFollowingSchema, Muting: packedMutingSchema, RenoteMuting: packedRenoteMutingSchema, Blocking: packedBlockingSchema, Hashtag: packedHashtagSchema, Page: packedPageSchema, Channel: packedChannelSchema, QueueCount: packedQueueCountSchema, Antenna: packedAntennaSchema, Clip: packedClipSchema, FederationInstance: packedFederationInstanceSchema, GalleryPost: packedGalleryPostSchema, EmojiSimple: packedEmojiSimpleSchema, EmojiDetailed: packedEmojiDetailedSchema, Flash: packedFlashSchema, Ad: packedAdSchema, Announcement: packedAnnouncementSchema, Relay: packedRelaySchema, Role: packedRoleSchema, RoleAssign: packedRoleAssignSchema, RolePolicy: packedRolePolicySchema, RoleCondFormula: packedRoleCondFormulaSchema, AbuseUserReport: packedAbuseUserReportSchema, InstanceMetaShared: InstanceMetaSharedSchema, InstanceMetaAdmin: InstanceMetaAdminSchema, ServerInfo: ServerInfoSchema, ServerInfoAdmin: ServerInfoAdminSchema, ModerationLog: packedModerationLogSchema, SignIn: SignInSchema, AuthSession: packedAuthSessionSchema, Error: Error, ApiError: ApiError, } as const satisfies { [x: string]: JSONSchema7Definition }; export type References = GetRefs; export type Packed> = Serialized>; export type Def> = GetDef; //#reginon Chart export type ChartSchema = Record; range?: 'big' | 'small' | 'medium'; // previousな値を引き継ぐかどうか accumulate?: boolean; }>; export type ChartResult = { [P in keyof T]: number[]; }; type UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never; type UnflattenSingleton = K extends `${infer A}.${infer B}` ? { [_ in A]: UnflattenSingleton; } : { [_ in K]: V; }; export type Unflatten> = Projected]: UnflattenSingleton; }[Extract] >>; type ToJsonSchema = { type: 'object'; properties: { [K in keyof S]: S[K] extends number[] ? { type: 'array'; items: { type: 'number'; }; } : ToJsonSchema; }, required: (keyof S)[]; }; export function getJsonSchema(schema: S): ToJsonSchema>> { const jsonSchema = { type: 'object', properties: {} as Record, required: [], }; for (const k in schema) { jsonSchema.properties[k] = { type: 'array', items: { type: 'number' }, }; } return jsonSchema as ToJsonSchema>>; } //#endregion