Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop
This commit is contained in:
		| @@ -197,7 +197,14 @@ export async function createNote(value: string | IObject, resolver?: Resolver, s | ||||
| 	const cw = note.summary === '' ? null : note.summary; | ||||
|  | ||||
| 	// テキストのパース | ||||
| 	const text = typeof note._misskey_content !== 'undefined' ? note._misskey_content : (note.content ? htmlToMfm(note.content, note.tag) : null); | ||||
| 	let text: string | null = null; | ||||
| 	if (note.source?.mediaType === 'text/x.misskeymarkdown' && typeof note.source?.content === 'string') { | ||||
| 		text = note.source.content; | ||||
| 	} else if (typeof note._misskey_content === 'string') { | ||||
| 		text = note._misskey_content; | ||||
| 	} else if (typeof note.content === 'string') { | ||||
| 		text = htmlToMfm(note.content, note.tag); | ||||
| 	} | ||||
|  | ||||
| 	// vote | ||||
| 	if (reply && reply.hasPoll) { | ||||
|   | ||||
| @@ -138,6 +138,10 @@ export default async function renderNote(note: Note, dive = true, isTalk = false | ||||
| 		summary, | ||||
| 		content, | ||||
| 		_misskey_content: text, | ||||
| 		source: { | ||||
| 			content: text, | ||||
| 			mediaType: "text/x.misskeymarkdown", | ||||
| 		}, | ||||
| 		_misskey_quote: quote, | ||||
| 		quoteUrl: quote, | ||||
| 		published: note.createdAt.toISOString(), | ||||
|   | ||||
| @@ -106,7 +106,10 @@ export const isPost = (object: IObject): object is IPost => | ||||
|  | ||||
| export interface IPost extends IObject { | ||||
| 	type: 'Note' | 'Question' | 'Article' | 'Audio' | 'Document' | 'Image' | 'Page' | 'Video' | 'Event'; | ||||
| 	_misskey_content?: string; | ||||
| 	source?: { | ||||
| 		content: string; | ||||
| 		mediaType: string; | ||||
| 	}; | ||||
| 	_misskey_quote?: string; | ||||
| 	quoteUrl?: string; | ||||
| 	_misskey_talk: boolean; | ||||
| @@ -114,7 +117,10 @@ export interface IPost extends IObject { | ||||
|  | ||||
| export interface IQuestion extends IObject { | ||||
| 	type: 'Note' | 'Question'; | ||||
| 	_misskey_content?: string; | ||||
| 	source?: { | ||||
| 		content: string; | ||||
| 		mediaType: string; | ||||
| 	}; | ||||
| 	_misskey_quote?: string; | ||||
| 	quoteUrl?: string; | ||||
| 	oneOf?: IQuestionChoice[]; | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:drive', | ||||
|  | ||||
| 	description: 'Find the notes to which the given file is attached.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -8,6 +8,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:drive', | ||||
|  | ||||
| 	description: 'Check if a given file exists.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'boolean', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -20,6 +20,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:drive', | ||||
|  | ||||
| 	description: 'Upload a new drive file.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:drive', | ||||
|  | ||||
| 	description: 'Delete an existing drive file.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchFile: { | ||||
| 			message: 'No such file.', | ||||
|   | ||||
| @@ -8,6 +8,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:drive', | ||||
|  | ||||
| 	description: 'Search for a drive file by a hash of the contents.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:drive', | ||||
|  | ||||
| 	description: 'Search for a drive file by the given parameters.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -10,6 +10,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:drive', | ||||
|  | ||||
| 	description: 'Show the properties of a drive file.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:drive', | ||||
|  | ||||
| 	description: 'Update the properties of a drive file.', | ||||
|  | ||||
| 	errors: { | ||||
| 		invalidFileName: { | ||||
| 			message: 'Invalid file name.', | ||||
|   | ||||
| @@ -13,6 +13,8 @@ export const meta = { | ||||
| 		max: 60, | ||||
| 	}, | ||||
|  | ||||
| 	description: 'Request the server to download a new drive file from the specified URL.', | ||||
|  | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	kind: 'write:drive', | ||||
|   | ||||
| @@ -10,8 +10,12 @@ import { genId } from '@/misc/gen-id.js'; | ||||
| import { IsNull } from 'typeorm'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['reset password'], | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Request a users password to be reset.', | ||||
|  | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 3, | ||||
|   | ||||
| @@ -3,8 +3,12 @@ import { ApiError } from '../error.js'; | ||||
| import { resetDb } from '@/db/postgre.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['non-productive'], | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Only available when running with <code>NODE_ENV=testing</code>. Reset the database and flush Redis.', | ||||
|  | ||||
| 	errors: { | ||||
|  | ||||
| 	}, | ||||
|   | ||||
| @@ -5,8 +5,12 @@ import { Users, UserProfiles, PasswordResetRequests } from '@/models/index.js'; | ||||
| import { ApiError } from '../error.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['reset password'], | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Complete the password reset that was previously requested.', | ||||
|  | ||||
| 	errors: { | ||||
|  | ||||
| 	}, | ||||
|   | ||||
| @@ -8,6 +8,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	description: 'Register to receive push notifications.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -5,6 +5,8 @@ export const meta = { | ||||
| 	tags: ['account'], | ||||
|  | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	description: 'Unregister from receiving push notifications.', | ||||
| } as const; | ||||
|  | ||||
| export const paramDef = { | ||||
|   | ||||
| @@ -1,6 +1,10 @@ | ||||
| import define from '../define.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['non-productive'], | ||||
|  | ||||
| 	description: 'Endpoint for testing input validation.', | ||||
|  | ||||
| 	requireCredential: false, | ||||
| } as const; | ||||
|  | ||||
|   | ||||
| @@ -4,6 +4,18 @@ import { makePaginationQuery } from '../../common/make-pagination-query.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['users', 'clips'], | ||||
|  | ||||
| 	description: 'Show all clips this user owns.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
| 		items: { | ||||
| 			type: 'object', | ||||
| 			optional: false, nullable: false, | ||||
| 			ref: 'Clip', | ||||
| 		}, | ||||
| 	}, | ||||
| } as const; | ||||
|  | ||||
| export const paramDef = { | ||||
|   | ||||
| @@ -10,6 +10,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Show everyone that follows this user.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -10,6 +10,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Show everyone that this user is following.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -4,6 +4,18 @@ import { makePaginationQuery } from '../../../common/make-pagination-query.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['users', 'gallery'], | ||||
|  | ||||
| 	description: 'Show all gallery posts by the given user.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
| 		items: { | ||||
| 			type: 'object', | ||||
| 			optional: false, nullable: false, | ||||
| 			ref: 'GalleryPost', | ||||
| 		}, | ||||
| 	}, | ||||
| } as const; | ||||
|  | ||||
| export const paramDef = { | ||||
|   | ||||
| @@ -10,6 +10,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Get a list of other users that the specified user frequently replies to.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Create a new group.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Delete an existing group.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchGroup: { | ||||
| 			message: 'No such group.', | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Join a group the authenticated user has been invited to.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchInvitation: { | ||||
| 			message: 'No such invitation.', | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Delete an existing group invitation for the authenticated user without joining the group.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchInvitation: { | ||||
| 			message: 'No such invitation.', | ||||
|   | ||||
| @@ -13,6 +13,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Invite a user to an existing group.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchGroup: { | ||||
| 			message: 'No such group.', | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:user-groups', | ||||
|  | ||||
| 	description: 'List the groups that the authenticated user is a member of.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Leave a group. The owner of a group can not leave. They must transfer ownership or delete the group instead.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchGroup: { | ||||
| 			message: 'No such group.', | ||||
|   | ||||
| @@ -8,6 +8,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:user-groups', | ||||
|  | ||||
| 	description: 'List the groups that the authenticated user is the owner of.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -10,6 +10,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Removes a specified user from a group. The owner can not be removed.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchGroup: { | ||||
| 			message: 'No such group.', | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:user-groups', | ||||
|  | ||||
| 	description: 'Show the properties of a group.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -10,6 +10,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Transfer ownership of a group from the authenticated user to another user.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:user-groups', | ||||
|  | ||||
| 	description: 'Update the properties of a group.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -10,6 +10,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:account', | ||||
|  | ||||
| 	description: 'Create a new list of users.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:account', | ||||
|  | ||||
| 	description: 'Delete an existing list of users.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchList: { | ||||
| 			message: 'No such list.', | ||||
|   | ||||
| @@ -8,6 +8,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:account', | ||||
|  | ||||
| 	description: 'Show all lists that the authenticated user has created.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:account', | ||||
|  | ||||
| 	description: 'Remove a user from a list.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchList: { | ||||
| 			message: 'No such list.', | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:account', | ||||
|  | ||||
| 	description: 'Add a user to an existing list.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchList: { | ||||
| 			message: 'No such list.', | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:account', | ||||
|  | ||||
| 	description: 'Show the properties of a list.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:account', | ||||
|  | ||||
| 	description: 'Update the properties of a list.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -12,6 +12,8 @@ import { generateMutedInstanceQuery } from '../../common/generate-muted-instance | ||||
| export const meta = { | ||||
| 	tags: ['users', 'notes'], | ||||
|  | ||||
| 	description: 'Show all notes that this user created.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -4,6 +4,18 @@ import { makePaginationQuery } from '../../common/make-pagination-query.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['users', 'pages'], | ||||
|  | ||||
| 	description: 'Show all pages this user created.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
| 		items: { | ||||
| 			type: 'object', | ||||
| 			optional: false, nullable: false, | ||||
| 			ref: 'Page', | ||||
| 		}, | ||||
| 	}, | ||||
| } as const; | ||||
|  | ||||
| export const paramDef = { | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Show all reactions this user made.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'read:account', | ||||
|  | ||||
| 	description: 'Show users that the authenticated user might be interested to follow.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -6,6 +6,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	description: 'Show the different kinds of relations between the authenticated user and the specified user(s).', | ||||
|  | ||||
| 	res: { | ||||
| 		optional: false, nullable: false, | ||||
| 		oneOf: [ | ||||
|   | ||||
| @@ -13,6 +13,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	description: 'File a report.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchUser: { | ||||
| 			message: 'No such user.', | ||||
|   | ||||
| @@ -9,6 +9,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Search for a user by username and/or host.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -8,6 +8,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Search for users.', | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -11,6 +11,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Show the properties of a user.', | ||||
|  | ||||
| 	res: { | ||||
| 		optional: false, nullable: false, | ||||
| 		oneOf: [ | ||||
|   | ||||
| @@ -8,6 +8,8 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: false, | ||||
|  | ||||
| 	description: 'Show statistics about a user.', | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchUser: { | ||||
| 			message: 'No such user.', | ||||
| @@ -15,6 +17,94 @@ export const meta = { | ||||
| 			id: '9e638e45-3b25-4ef7-8f95-07e8498f1819', | ||||
| 		}, | ||||
| 	}, | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
| 		properties: { | ||||
| 			notesCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			repliesCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			renotesCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			repliedCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			renotedCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			pollVotesCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			pollVotedCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			localFollowingCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			remoteFollowingCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			localFollowersCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			remoteFollowersCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			followingCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			followersCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			sentReactionsCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			receivedReactionsCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			noteFavoritesCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			pageLikesCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			pageLikedCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			driveFilesCount: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 			}, | ||||
| 			driveUsage: { | ||||
| 				type: 'integer', | ||||
| 				optional: false, nullable: false, | ||||
| 				description: 'Drive usage in bytes', | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| } as const; | ||||
|  | ||||
| export const paramDef = { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo