Remove emoji annotations code for unused languages from final build
This commit is contained in:
parent
1bdf67c08d
commit
7661bb69ff
4 changed files with 71 additions and 5 deletions
64
build/emojis_plugin.js
Normal file
64
build/emojis_plugin.js
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import { resolve } from 'node:path'
|
||||
import { access } from 'node:fs/promises'
|
||||
import { languages, langCodeToCldrName } from '../src/i18n/languages.js'
|
||||
|
||||
const annotationsImportPrefix = '@kazvmoe-infra/unicode-emoji-json/annotations/'
|
||||
const specialAnnotationsLocale = {
|
||||
ja_easy: 'ja'
|
||||
}
|
||||
|
||||
const internalToAnnotationsLocale = (internal) => specialAnnotationsLocale[internal] || internal
|
||||
|
||||
// This gets all the annotations that are accessible (whose language
|
||||
// can be chosen in the settings). Data for other languages are
|
||||
// discarded because there is no way for it to be fetched.
|
||||
const getAllAccessibleAnnotations = async (projectRoot) => {
|
||||
const imports = (await Promise.all(
|
||||
languages
|
||||
.map(async lang => {
|
||||
const destLang = internalToAnnotationsLocale(lang)
|
||||
const importModule = `${annotationsImportPrefix}${destLang}.json`
|
||||
const importFile = resolve(projectRoot, 'node_modules', importModule)
|
||||
try {
|
||||
await access(importFile)
|
||||
return `'${lang}': () => import('${importModule}')`
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
})))
|
||||
.filter(k => k)
|
||||
.join(',\n')
|
||||
|
||||
return `
|
||||
export const annotationsLoader = {
|
||||
${imports}
|
||||
}
|
||||
`
|
||||
}
|
||||
|
||||
const emojiAnnotationsId = 'virtual:pleroma-fe/emoji-annotations'
|
||||
const emojiAnnotationsIdResolved = '\0' + emojiAnnotationsId
|
||||
|
||||
const emojisPlugin = () => {
|
||||
let projectRoot
|
||||
return {
|
||||
name: 'emojis-plugin',
|
||||
configResolved (conf) {
|
||||
projectRoot = conf.root
|
||||
},
|
||||
resolveId (id) {
|
||||
if (id === emojiAnnotationsId) {
|
||||
return emojiAnnotationsIdResolved
|
||||
}
|
||||
return null
|
||||
},
|
||||
async load (id) {
|
||||
if (id === emojiAnnotationsIdResolved) {
|
||||
return await getAllAccessibleAnnotations(projectRoot)
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default emojisPlugin
|
||||
Loading…
Add table
Add a link
Reference in a new issue