UNPKG

wuchale

Version:

Protobuf-like i18n from plain code

58 lines (57 loc) 2.01 kB
// $$ cd .. && npm run test import { defaultGenerateLoadID, defaultHeuristicFuncOnly } from '../adapters.js'; import { deepMergeObjects } from "../config.js"; import { Transformer } from "./transformer.js"; import { loaderPathResolver } from '../adapter-utils/index.js'; export { Transformer }; export { parseScript, scriptParseOptions, scriptParseOptionsWithComments } from './transformer.js'; export const pluralPattern = { name: 'plural', args: ['other', 'message', 'pluralFunc'], }; const defaultArgs = { files: { include: 'src/**/*.{js,ts}', ignore: '**/*.d.ts' }, localesDir: './src/locales', patterns: [pluralPattern], heuristic: defaultHeuristicFuncOnly, granularLoad: false, bundleLoad: false, generateLoadID: defaultGenerateLoadID, loader: 'vite', runtime: { useReactive: ({ nested }) => ({ init: nested ? null : false, use: false, }), plain: { wrapInit: expr => expr, wrapUse: expr => expr, } } }; const resolveLoaderPath = loaderPathResolver(import.meta.url, '../../src/adapter-vanilla/loaders', 'js'); export function getDefaultLoaderPath(loader, bundle) { if (loader === 'custom') { return null; } if (bundle) { return resolveLoaderPath('bundle'); } if (loader === 'vite') { return { client: resolveLoaderPath('vite'), server: resolveLoaderPath('vite.ssr'), }; } return resolveLoaderPath(loader); } export const adapter = (args = defaultArgs) => { const { heuristic, patterns, runtime, loader, ...rest } = deepMergeObjects(args, defaultArgs); return { transform: ({ content, filename, index, expr, matchUrl }) => new Transformer(content, filename, index, heuristic, patterns, expr, runtime, matchUrl).transform(), loaderExts: ['.js', '.ts'], defaultLoaderPath: getDefaultLoaderPath(loader, rest.bundleLoad), runtime, ...rest, }; };