forked from mirrors/misskey
* feat: split entry file by locale name
* chore: とりあえず transform hook で雑に分割
* chore: とりあえず transform 結果をいい感じに
* chore: concurrent buildで高速化
* chore: vite ではローケルのないものをビルドして後処理でどうにかするように
* chore: 後処理のためにi18n.jを単体になるように切り出す
* chore: use typescript
* chore: remove unref(i18n) in vite build process
* chore: inline variable
* fix: build error
* fix: i18n.ts.something.replaceAll() become error
* chore: ignore export specifier from error
* chore: support i18n.tsx as object
* chore: process literal for all files
* chore: split config and locale
* chore: inline locale name
* chore: remove updating locale in boot common
* chore: use top-level await to load locales
* chore: inline locale
* chore: remove loading locale from boot.js
* chore: remove loading locale from boot.js
* コメント追加
* fix test; fetchに失敗する
* import削除ログをdebugレベルに
* fix: watch pug
* chore: use hash for entry files
* chore: remove es-module-lexer from dependencies
* chore: move to frontend-builder
* chore: use inline locale in embed
* chore: refetch json on hot reload
* feat: store localization related to boot.js in backend in bootloaderLocales localstorage
* 応急処置を戻す
* fix spex
* fix `Using i18n identifier "e" directly. Skipping inlining.` warning
* refactor: use scriptsDir parameter
* chore: remove i18n from depmap
* chore: make build crash if errors
* error -> warn few conditions
* use inline object
* update localstorage keys
* remove accessing locale localstorage
* fix: failed to process i18n.tsx.aaa({x:i18n.bbb})
67 lines
1.4 KiB
TypeScript
67 lines
1.4 KiB
TypeScript
const debug = false;
|
|
|
|
export interface Logger {
|
|
debug(message: string): void;
|
|
|
|
warn(message: string): void;
|
|
|
|
error(message: string): void;
|
|
|
|
info(message: string): void;
|
|
|
|
prefixed(newPrefix: string): Logger;
|
|
}
|
|
|
|
interface RootLogger extends Logger {
|
|
warningCount: number;
|
|
errorCount: number;
|
|
}
|
|
|
|
export function createLogger(): RootLogger {
|
|
return loggerFactory('', {
|
|
warningCount: 0,
|
|
errorCount: 0,
|
|
});
|
|
}
|
|
|
|
type LogContext = {
|
|
warningCount: number;
|
|
errorCount: number;
|
|
}
|
|
|
|
function loggerFactory(prefix: string, context: LogContext): RootLogger {
|
|
return {
|
|
debug: (message: string) => {
|
|
if (debug) console.log(`[DBG] ${prefix}${message}`);
|
|
},
|
|
warn: (message: string) => {
|
|
context.warningCount++;
|
|
console.log(`${debug ? '[WRN]' : 'w:'} ${prefix}${message}`);
|
|
},
|
|
error: (message: string) => {
|
|
context.errorCount++;
|
|
console.error(`${debug ? '[ERR]' : 'e:'} ${prefix}${message}`);
|
|
},
|
|
info: (message: string) => {
|
|
console.error(`${debug ? '[INF]' : 'i:'} ${prefix}${message}`);
|
|
},
|
|
prefixed: (newPrefix: string) => {
|
|
return loggerFactory(`${prefix}${newPrefix}`, context);
|
|
},
|
|
get warningCount() {
|
|
return context.warningCount;
|
|
},
|
|
get errorCount() {
|
|
return context.errorCount;
|
|
},
|
|
};
|
|
}
|
|
|
|
export const blankLogger: Logger = {
|
|
debug: () => void 0,
|
|
warn: () => void 0,
|
|
error: () => void 0,
|
|
info: () => void 0,
|
|
prefixed: () => blankLogger,
|
|
}
|