refactor: use Object.fromEntries() instead of in-house implementation (#6401)
* refactor: use Object.fromEntries() instead of in-house implementation * Remove extra type assertions
This commit is contained in:
		
							parent
							
								
									4df5ec82ce
								
							
						
					
					
						commit
						abc296cdcc
					
				
					 6 changed files with 15 additions and 32 deletions
				
			
		|  | @ -1,5 +1,4 @@ | |||
| import { clientDb, entries } from './db'; | ||||
| import { fromEntries } from '../prelude/array'; | ||||
| 
 | ||||
| declare const _LANGS_: string[]; | ||||
| declare const _VERSION_: string; | ||||
|  | @ -15,7 +14,7 @@ export const apiUrl = url + '/api'; | |||
| export const wsUrl = url.replace('http://', 'ws://').replace('https://', 'wss://') + '/streaming'; | ||||
| export const lang = localStorage.getItem('lang'); | ||||
| export const langs = _LANGS_; | ||||
| export const getLocale = async () => fromEntries((await entries(clientDb.i18n)) as [string, string][]); | ||||
| export const getLocale = async () => Object.fromEntries((await entries(clientDb.i18n)) as [string, string][]); | ||||
| export const version = _VERSION_; | ||||
| export const env = _ENV_; | ||||
| export const instanceName = siteName === 'Misskey' ? null : siteName; | ||||
|  |  | |||
|  | @ -1,13 +1,12 @@ | |||
| import getNoteSummary from '../../misc/get-note-summary'; | ||||
| import getUserName from '../../misc/get-user-name'; | ||||
| import { clientDb, get, bulkGet } from '../db'; | ||||
| import { fromEntries } from '../../prelude/array'; | ||||
| 
 | ||||
| const getTranslation = (text: string): Promise<string> => get(text, clientDb.i18n); | ||||
| 
 | ||||
| export default async function(type, data): Promise<[string, NotificationOptions]> { | ||||
| 	const contexts = ['deletedNote', 'invisibleNote', 'withNFiles', '_cw.poll']; | ||||
| 	const locale = fromEntries(await bulkGet(contexts, clientDb.i18n) as [string, string][]); | ||||
| 	const locale = Object.fromEntries(await bulkGet(contexts, clientDb.i18n) as [string, string][]); | ||||
| 
 | ||||
| 	switch (type) { | ||||
| 		case 'driveFileCreated': // TODO (Server Side)
 | ||||
|  |  | |||
|  | @ -1,7 +1,6 @@ | |||
| import VueI18n from 'vue-i18n'; | ||||
| import { clientDb, clear, bulkSet } from '../db'; | ||||
| import { deepEntries, delimitEntry } from 'deep-entries'; | ||||
| import { fromEntries } from '../../prelude/array'; | ||||
| 
 | ||||
| export function setI18nContexts(lang: string, version: string, i18n: VueI18n, cleardb = false) { | ||||
| 	return Promise.all([ | ||||
|  | @ -13,6 +12,6 @@ export function setI18nContexts(lang: string, version: string, i18n: VueI18n, cl | |||
| 		const flatLocaleEntries = deepEntries(locale, delimitEntry) as [string, string][]; | ||||
| 		bulkSet(flatLocaleEntries, clientDb.i18n); | ||||
| 		i18n.locale = lang; | ||||
| 		i18n.setLocaleMessage(lang, fromEntries(flatLocaleEntries)); | ||||
| 		i18n.setLocaleMessage(lang, Object.fromEntries(flatLocaleEntries)); | ||||
| 	}); | ||||
| } | ||||
|  |  | |||
|  | @ -129,21 +129,6 @@ export function cumulativeSum(xs: number[]): number[] { | |||
| 	return ys; | ||||
| } | ||||
| 
 | ||||
| // Object.fromEntries()
 | ||||
| export function fromEntries<T extends readonly (readonly [PropertyKey, any])[]>(xs: T): | ||||
| 	T[number] extends infer U | ||||
| 		? | ||||
| 			( | ||||
| 				U extends readonly any[] | ||||
| 					? (x: { [_ in U[0]]: U[1] }) => any | ||||
| 					: never | ||||
| 			) extends (x: infer V) => any | ||||
| 				? V | ||||
| 				: never | ||||
| 		: never { | ||||
| 	return xs.reduce((obj, [k, v]) => Object.assign(obj, { [k]: v }), {} as { [x: string]: any; }); | ||||
| } | ||||
| 
 | ||||
| export function toArray<T>(x: T | T[] | undefined): T[] { | ||||
| 	return Array.isArray(x) ? x : x != null ? [x] : []; | ||||
| } | ||||
|  |  | |||
|  | @ -1,7 +1,5 @@ | |||
| import config from '../../../config'; | ||||
| import endpoints from '../endpoints'; | ||||
| import * as locale from '../../../../locales/'; | ||||
| import { fromEntries } from '../../../prelude/array'; | ||||
| import { kinds as kindsList } from '../kinds'; | ||||
| 
 | ||||
| export interface IKindInfo { | ||||
|  | @ -10,16 +8,16 @@ export interface IKindInfo { | |||
| } | ||||
| 
 | ||||
| export function kinds() { | ||||
| 	const kinds = fromEntries( | ||||
| 	const kinds = Object.fromEntries( | ||||
| 		kindsList | ||||
| 			.map(k => [k, { | ||||
| 					endpoints: [], | ||||
| 					descs: fromEntries( | ||||
| 					descs: Object.fromEntries( | ||||
| 						Object.keys(locale) | ||||
| 							.map(l => [l, locale[l]._permissions[k] as string] as [string, string]) | ||||
| 						) as { [x: string]: string; } | ||||
| 				}] as [ string, IKindInfo ]) | ||||
| 			) as { [x: string]: IKindInfo; }; | ||||
| 							.map(l => [l, locale[l]._permissions[k] as string]) | ||||
| 						) | ||||
| 				} as IKindInfo]) | ||||
| 			); | ||||
| 
 | ||||
| 	const errors = [] as string[][]; | ||||
| 
 | ||||
|  | @ -37,17 +35,17 @@ export function kinds() { | |||
| } | ||||
| 
 | ||||
| export function getDescription(lang = 'ja-JP'): string { | ||||
| 	const permissionTable = (Object.entries(kinds()) as [string, IKindInfo][]) | ||||
| 	const permissionTable = Object.entries(kinds()) | ||||
| 		.map(e => `|${e[0]}|${e[1].descs[lang]}|${e[1].endpoints.map(f => `[${f}](#operation/${f})`).join(', ')}|`) | ||||
| 		.join('\n'); | ||||
| 
 | ||||
| 	const descriptions = { | ||||
| 	const descriptions: { [x: string]: string } = { | ||||
| 		'ja-JP': ` | ||||
| # Permissions | ||||
| |Permisson (kind)|Description|Endpoints| | ||||
| |:--|:--|:--| | ||||
| ${permissionTable} | ||||
| ` | ||||
| 	} as { [x: string]: string }; | ||||
| 	}; | ||||
| 	return lang in descriptions ? descriptions[lang] : descriptions['ja-JP']; | ||||
| } | ||||
|  |  | |||
|  | @ -24,6 +24,9 @@ | |||
| 		"typeRoots": [ | ||||
| 			"node_modules/@types", | ||||
| 			"src/@types" | ||||
| 		], | ||||
| 		"lib": [ | ||||
| 			"esnext" | ||||
| 		] | ||||
| 	}, | ||||
| 	"compileOnSave": false, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue