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 { clientDb, entries } from './db'; | ||||||
| import { fromEntries } from '../prelude/array'; |  | ||||||
| 
 | 
 | ||||||
| declare const _LANGS_: string[]; | declare const _LANGS_: string[]; | ||||||
| declare const _VERSION_: 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 wsUrl = url.replace('http://', 'ws://').replace('https://', 'wss://') + '/streaming'; | ||||||
| export const lang = localStorage.getItem('lang'); | export const lang = localStorage.getItem('lang'); | ||||||
| export const langs = _LANGS_; | 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 version = _VERSION_; | ||||||
| export const env = _ENV_; | export const env = _ENV_; | ||||||
| export const instanceName = siteName === 'Misskey' ? null : siteName; | export const instanceName = siteName === 'Misskey' ? null : siteName; | ||||||
|  |  | ||||||
|  | @ -1,13 +1,12 @@ | ||||||
| import getNoteSummary from '../../misc/get-note-summary'; | import getNoteSummary from '../../misc/get-note-summary'; | ||||||
| import getUserName from '../../misc/get-user-name'; | import getUserName from '../../misc/get-user-name'; | ||||||
| import { clientDb, get, bulkGet } from '../db'; | import { clientDb, get, bulkGet } from '../db'; | ||||||
| import { fromEntries } from '../../prelude/array'; |  | ||||||
| 
 | 
 | ||||||
| const getTranslation = (text: string): Promise<string> => get(text, clientDb.i18n); | const getTranslation = (text: string): Promise<string> => get(text, clientDb.i18n); | ||||||
| 
 | 
 | ||||||
| export default async function(type, data): Promise<[string, NotificationOptions]> { | export default async function(type, data): Promise<[string, NotificationOptions]> { | ||||||
| 	const contexts = ['deletedNote', 'invisibleNote', 'withNFiles', '_cw.poll']; | 	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) { | 	switch (type) { | ||||||
| 		case 'driveFileCreated': // TODO (Server Side)
 | 		case 'driveFileCreated': // TODO (Server Side)
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,6 @@ | ||||||
| import VueI18n from 'vue-i18n'; | import VueI18n from 'vue-i18n'; | ||||||
| import { clientDb, clear, bulkSet } from '../db'; | import { clientDb, clear, bulkSet } from '../db'; | ||||||
| import { deepEntries, delimitEntry } from 'deep-entries'; | import { deepEntries, delimitEntry } from 'deep-entries'; | ||||||
| import { fromEntries } from '../../prelude/array'; |  | ||||||
| 
 | 
 | ||||||
| export function setI18nContexts(lang: string, version: string, i18n: VueI18n, cleardb = false) { | export function setI18nContexts(lang: string, version: string, i18n: VueI18n, cleardb = false) { | ||||||
| 	return Promise.all([ | 	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][]; | 		const flatLocaleEntries = deepEntries(locale, delimitEntry) as [string, string][]; | ||||||
| 		bulkSet(flatLocaleEntries, clientDb.i18n); | 		bulkSet(flatLocaleEntries, clientDb.i18n); | ||||||
| 		i18n.locale = lang; | 		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; | 	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[] { | export function toArray<T>(x: T | T[] | undefined): T[] { | ||||||
| 	return Array.isArray(x) ? x : x != null ? [x] : []; | 	return Array.isArray(x) ? x : x != null ? [x] : []; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,7 +1,5 @@ | ||||||
| import config from '../../../config'; |  | ||||||
| import endpoints from '../endpoints'; | import endpoints from '../endpoints'; | ||||||
| import * as locale from '../../../../locales/'; | import * as locale from '../../../../locales/'; | ||||||
| import { fromEntries } from '../../../prelude/array'; |  | ||||||
| import { kinds as kindsList } from '../kinds'; | import { kinds as kindsList } from '../kinds'; | ||||||
| 
 | 
 | ||||||
| export interface IKindInfo { | export interface IKindInfo { | ||||||
|  | @ -10,16 +8,16 @@ export interface IKindInfo { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function kinds() { | export function kinds() { | ||||||
| 	const kinds = fromEntries( | 	const kinds = Object.fromEntries( | ||||||
| 		kindsList | 		kindsList | ||||||
| 			.map(k => [k, { | 			.map(k => [k, { | ||||||
| 					endpoints: [], | 					endpoints: [], | ||||||
| 					descs: fromEntries( | 					descs: Object.fromEntries( | ||||||
| 						Object.keys(locale) | 						Object.keys(locale) | ||||||
| 							.map(l => [l, locale[l]._permissions[k] as string] as [string, string]) | 							.map(l => [l, locale[l]._permissions[k] as string]) | ||||||
| 						) as { [x: string]: string; } | 						) | ||||||
| 				}] as [ string, IKindInfo ]) | 				} as IKindInfo]) | ||||||
| 			) as { [x: string]: IKindInfo; }; | 			); | ||||||
| 
 | 
 | ||||||
| 	const errors = [] as string[][]; | 	const errors = [] as string[][]; | ||||||
| 
 | 
 | ||||||
|  | @ -37,17 +35,17 @@ export function kinds() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function getDescription(lang = 'ja-JP'): string { | 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(', ')}|`) | 		.map(e => `|${e[0]}|${e[1].descs[lang]}|${e[1].endpoints.map(f => `[${f}](#operation/${f})`).join(', ')}|`) | ||||||
| 		.join('\n'); | 		.join('\n'); | ||||||
| 
 | 
 | ||||||
| 	const descriptions = { | 	const descriptions: { [x: string]: string } = { | ||||||
| 		'ja-JP': ` | 		'ja-JP': ` | ||||||
| # Permissions | # Permissions | ||||||
| |Permisson (kind)|Description|Endpoints| | |Permisson (kind)|Description|Endpoints| | ||||||
| |:--|:--|:--| | |:--|:--|:--| | ||||||
| ${permissionTable} | ${permissionTable} | ||||||
| ` | ` | ||||||
| 	} as { [x: string]: string }; | 	}; | ||||||
| 	return lang in descriptions ? descriptions[lang] : descriptions['ja-JP']; | 	return lang in descriptions ? descriptions[lang] : descriptions['ja-JP']; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -24,6 +24,9 @@ | ||||||
| 		"typeRoots": [ | 		"typeRoots": [ | ||||||
| 			"node_modules/@types", | 			"node_modules/@types", | ||||||
| 			"src/@types" | 			"src/@types" | ||||||
|  | 		], | ||||||
|  | 		"lib": [ | ||||||
|  | 			"esnext" | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
| 	"compileOnSave": false, | 	"compileOnSave": false, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue