wip
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
			
		||||
export const notificationTypes = ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'pollEnded', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app'] as const;
 | 
			
		||||
export const notificationTypes = ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollEnded', 'receiveFollowRequest', 'followRequestAccepted', 'achievementEarned', 'app'] as const;
 | 
			
		||||
export const obsoleteNotificationTypes = ['pollVote', 'groupInvited'] as const;
 | 
			
		||||
 | 
			
		||||
export const noteVisibilities = ['public', 'home', 'followers', 'specified'] as const;
 | 
			
		||||
 | 
			
		||||
@@ -40,3 +41,80 @@ export const permissions = [
 | 
			
		||||
	'read:gallery-likes',
 | 
			
		||||
	'write:gallery-likes',
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export const ACHIEVEMENT_TYPES = [
 | 
			
		||||
	'notes1',
 | 
			
		||||
	'notes10',
 | 
			
		||||
	'notes100',
 | 
			
		||||
	'notes500',
 | 
			
		||||
	'notes1000',
 | 
			
		||||
	'notes5000',
 | 
			
		||||
	'notes10000',
 | 
			
		||||
	'notes20000',
 | 
			
		||||
	'notes30000',
 | 
			
		||||
	'notes40000',
 | 
			
		||||
	'notes50000',
 | 
			
		||||
	'notes60000',
 | 
			
		||||
	'notes70000',
 | 
			
		||||
	'notes80000',
 | 
			
		||||
	'notes90000',
 | 
			
		||||
	'notes100000',
 | 
			
		||||
	'login3',
 | 
			
		||||
	'login7',
 | 
			
		||||
	'login15',
 | 
			
		||||
	'login30',
 | 
			
		||||
	'login60',
 | 
			
		||||
	'login100',
 | 
			
		||||
	'login200',
 | 
			
		||||
	'login300',
 | 
			
		||||
	'login400',
 | 
			
		||||
	'login500',
 | 
			
		||||
	'login600',
 | 
			
		||||
	'login700',
 | 
			
		||||
	'login800',
 | 
			
		||||
	'login900',
 | 
			
		||||
	'login1000',
 | 
			
		||||
	'passedSinceAccountCreated1',
 | 
			
		||||
	'passedSinceAccountCreated2',
 | 
			
		||||
	'passedSinceAccountCreated3',
 | 
			
		||||
	'loggedInOnBirthday',
 | 
			
		||||
	'loggedInOnNewYearsDay',
 | 
			
		||||
	'noteClipped1',
 | 
			
		||||
	'noteFavorited1',
 | 
			
		||||
	'myNoteFavorited1',
 | 
			
		||||
	'profileFilled',
 | 
			
		||||
	'markedAsCat',
 | 
			
		||||
	'following1',
 | 
			
		||||
	'following10',
 | 
			
		||||
	'following50',
 | 
			
		||||
	'following100',
 | 
			
		||||
	'following300',
 | 
			
		||||
	'followers1',
 | 
			
		||||
	'followers10',
 | 
			
		||||
	'followers50',
 | 
			
		||||
	'followers100',
 | 
			
		||||
	'followers300',
 | 
			
		||||
	'followers500',
 | 
			
		||||
	'followers1000',
 | 
			
		||||
	'collectAchievements30',
 | 
			
		||||
	'viewAchievements3min',
 | 
			
		||||
	'iLoveMisskey',
 | 
			
		||||
	'foundTreasure',
 | 
			
		||||
	'client30min',
 | 
			
		||||
	'client60min',
 | 
			
		||||
	'noteDeletedWithin1min',
 | 
			
		||||
	'postedAtLateNight',
 | 
			
		||||
	'postedAt0min0sec',
 | 
			
		||||
	'selfQuote',
 | 
			
		||||
	'htl20npm',
 | 
			
		||||
	'viewInstanceChart',
 | 
			
		||||
	'outputHelloWorldOnScratchpad',
 | 
			
		||||
	'open3windows',
 | 
			
		||||
	'driveFolderCircularReference',
 | 
			
		||||
	'reactWithoutRead',
 | 
			
		||||
	'clickedClickHere',
 | 
			
		||||
	'justPlainLucky',
 | 
			
		||||
	'setNameToSyuilo',
 | 
			
		||||
	'cookieClicked',
 | 
			
		||||
	'brainDiver',
 | 
			
		||||
] as const;
 | 
			
		||||
 
 | 
			
		||||
@@ -14,9 +14,11 @@ export {
 | 
			
		||||
 | 
			
		||||
export const permissions = consts.permissions;
 | 
			
		||||
export const notificationTypes = consts.notificationTypes;
 | 
			
		||||
export const obsoleteNotificationTypes = consts.obsoleteNotificationTypes;
 | 
			
		||||
export const noteVisibilities = consts.noteVisibilities;
 | 
			
		||||
export const mutedNoteReasons = consts.mutedNoteReasons;
 | 
			
		||||
export const ffVisibility = consts.ffVisibility;
 | 
			
		||||
export const ACHIEVEMENT_TYPES = consts.ACHIEVEMENT_TYPES;
 | 
			
		||||
 | 
			
		||||
// api extractor not supported yet
 | 
			
		||||
//export * as api from './api.js';
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@ export const refs = {
 | 
			
		||||
	EmojiSimple: packedEmojiSimpleSchema,
 | 
			
		||||
	EmojiDetailed: packedEmojiDetailedSchema,
 | 
			
		||||
	Flash: packedFlashSchema,
 | 
			
		||||
} as const satisfies { [x: string]: JSONSchema7Definition };
 | 
			
		||||
} as const /*satisfies { [x: string]: JSONSchema7Definition }*/;
 | 
			
		||||
 | 
			
		||||
type Refs = typeof packedAntennaSchema | typeof packedNoteSchema; // TODO: typeof refs[keyof typeof refs];
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,25 +1,24 @@
 | 
			
		||||
import type { JSONSchema7Definition } from 'schema-type';
 | 
			
		||||
 | 
			
		||||
export const packedNoteReactionSchema = {
 | 
			
		||||
	$id: 'https://misskey-hub.net/api/schemas/NoteReaction',
 | 
			
		||||
 | 
			
		||||
	type: 'object',
 | 
			
		||||
	properties: {
 | 
			
		||||
		id: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: false, nullable: false,
 | 
			
		||||
			format: 'id',
 | 
			
		||||
			example: 'xxxxxxxxxx',
 | 
			
		||||
		},
 | 
			
		||||
		id: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
		createdAt: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: false, nullable: false,
 | 
			
		||||
			format: 'date-time',
 | 
			
		||||
		},
 | 
			
		||||
		user: {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			optional: false, nullable: false,
 | 
			
		||||
			ref: 'UserLite',
 | 
			
		||||
		},
 | 
			
		||||
		user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
		type: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: false, nullable: false,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
} as const;
 | 
			
		||||
	required: [
 | 
			
		||||
		'id',
 | 
			
		||||
		'createdAt',
 | 
			
		||||
		'user',
 | 
			
		||||
		'type',
 | 
			
		||||
	],
 | 
			
		||||
} as const satisfies JSONSchema7Definition;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,62 +1,117 @@
 | 
			
		||||
import { notificationTypes } from '../consts';
 | 
			
		||||
import type { JSONSchema7Definition } from 'schema-type';
 | 
			
		||||
import { ACHIEVEMENT_TYPES } from '../consts';
 | 
			
		||||
 | 
			
		||||
export const packedNotificationSchema = {
 | 
			
		||||
	$id: 'https://misskey-hub.net/api/schemas/Notification',
 | 
			
		||||
 | 
			
		||||
	type: 'object',
 | 
			
		||||
	properties: {
 | 
			
		||||
		id: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: false, nullable: false,
 | 
			
		||||
			format: 'id',
 | 
			
		||||
			example: 'xxxxxxxxxx',
 | 
			
		||||
	allOf: [{
 | 
			
		||||
		type: 'object',
 | 
			
		||||
		properties: {
 | 
			
		||||
			id: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
			createdAt: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				format: 'date-time',
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		createdAt: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: false, nullable: false,
 | 
			
		||||
			format: 'date-time',
 | 
			
		||||
		},
 | 
			
		||||
		type: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: false, nullable: false,
 | 
			
		||||
			enum: [...notificationTypes],
 | 
			
		||||
		},
 | 
			
		||||
		user: {
 | 
			
		||||
		required: ['id', 'createdAt'],
 | 
			
		||||
	}, {
 | 
			
		||||
		oneOf: [
 | 
			
		||||
		{
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			ref: 'UserLite',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
		userId: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
			format: 'id',
 | 
			
		||||
		},
 | 
			
		||||
		note: {
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'follow' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			ref: 'Note',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
		reaction: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
		choice: {
 | 
			
		||||
			type: 'number',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
		invitation: {
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'mention' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
				note: { $ref: 'https://misskey-hub.net/api/schemas/Note' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user', 'note'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
		body: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
		header: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
		icon: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
			optional: true, nullable: true,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
} as const;
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'reply' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
				note: { $ref: 'https://misskey-hub.net/api/schemas/Note' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user', 'note'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'renote' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
				note: { $ref: 'https://misskey-hub.net/api/schemas/Note' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user', 'note'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'quote' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
				note: { $ref: 'https://misskey-hub.net/api/schemas/Note' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user', 'note'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'reaction' },
 | 
			
		||||
				reaction: { type: 'string' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
				note: { $ref: 'https://misskey-hub.net/api/schemas/Note' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'reaction', 'userId', 'user', 'note'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'pollEnded' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
				note: { $ref: 'https://misskey-hub.net/api/schemas/Note' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user', 'note'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'receiveFollowRequest' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'followRequestAccepted' },
 | 
			
		||||
				userId: { $ref: 'https://misskey-hub.net/api/schemas/Id' },
 | 
			
		||||
				user: { $ref: 'https://misskey-hub.net/api/schemas/UserLite' },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'userId', 'user'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'achievementEarned' },
 | 
			
		||||
				achievement: { enum: [...ACHIEVEMENT_TYPES] },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type', 'achievement'],
 | 
			
		||||
		}, {
 | 
			
		||||
			type: 'object',
 | 
			
		||||
			properties: {
 | 
			
		||||
				type: { const: 'app' },
 | 
			
		||||
				header: { type: ['string', 'null'] },
 | 
			
		||||
				body: { type: 'string' },
 | 
			
		||||
				icon: { type: ['string', 'null'] },
 | 
			
		||||
			},
 | 
			
		||||
			required: ['type'],
 | 
			
		||||
		}],
 | 
			
		||||
	}],
 | 
			
		||||
} as const satisfies JSONSchema7Definition;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user