UNPKG

6.42 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _locale = require("locale");
9
10var _fs = _interopRequireDefault(require("fs"));
11
12var _path = _interopRequireDefault(require("path"));
13
14var _fusionCore = require("fusion-core");
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18/** Copyright (c) 2018 Uber Technologies, Inc.
19 *
20 * This source code is licensed under the MIT license found in the
21 * LICENSE file in the root directory of this source tree.
22 *
23 *
24 */
25const defaultResolveLocales = ctx => ctx.headers['accept-language'];
26
27const loader = (resolveLocales = defaultResolveLocales) => {
28 const readDir = root => {
29 try {
30 return _fs.default.readdirSync(root);
31 } catch (e) {
32 return [];
33 }
34 };
35
36 const root = './translations';
37 const locales = readDir(root).filter(p => p.match(/json$/)).map(p => p.replace(/\.json$/, ''));
38 const data = locales.reduce((memo, locale) => {
39 const parsedLocale = new _locale.Locale(locale);
40 memo[parsedLocale.normalized] = JSON.parse(_fs.default.readFileSync(_path.default.join(root, locale + '.json'), 'utf8'));
41 return memo;
42 }, {});
43 const supportedLocales = new _locale.Locales(locales);
44 return {
45 from: (0, _fusionCore.memoize)(ctx => {
46 const expectedLocales = new _locale.Locales(resolveLocales(ctx));
47 const locale = expectedLocales.best(supportedLocales);
48 const translations = data[locale.normalized];
49 return {
50 translations,
51 locale
52 };
53 })
54 };
55};
56
57var _default = true ? loader : null;
58
59exports.default = _default;
60//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvYWRlci5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0UmVzb2x2ZUxvY2FsZXMiLCJjdHgiLCJoZWFkZXJzIiwibG9hZGVyIiwicmVzb2x2ZUxvY2FsZXMiLCJyZWFkRGlyIiwicm9vdCIsImZzIiwicmVhZGRpclN5bmMiLCJlIiwibG9jYWxlcyIsImZpbHRlciIsInAiLCJtYXRjaCIsIm1hcCIsInJlcGxhY2UiLCJkYXRhIiwicmVkdWNlIiwibWVtbyIsImxvY2FsZSIsInBhcnNlZExvY2FsZSIsIkxvY2FsZSIsIm5vcm1hbGl6ZWQiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJwYXRoIiwiam9pbiIsInN1cHBvcnRlZExvY2FsZXMiLCJMb2NhbGVzIiwiZnJvbSIsImV4cGVjdGVkTG9jYWxlcyIsImJlc3QiLCJ0cmFuc2xhdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQVpBOzs7Ozs7O0FBMkJBLE1BQU1BLHFCQUF5QyxHQUFHQyxHQUFHLElBQ25EQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxpQkFBWixDQURGOztBQUdBLE1BQU1DLE1BQXlCLEdBQUcsQ0FBQ0MsY0FBYyxHQUFHSixxQkFBbEIsS0FBNEM7QUFDNUUsUUFBTUssT0FBTyxHQUFHQyxJQUFJLElBQUk7QUFDdEIsUUFBSTtBQUNGLGFBQU9DLFlBQUdDLFdBQUgsQ0FBZUYsSUFBZixDQUFQO0FBQ0QsS0FGRCxDQUVFLE9BQU9HLENBQVAsRUFBVTtBQUNWLGFBQU8sRUFBUDtBQUNEO0FBQ0YsR0FORDs7QUFPQSxRQUFNSCxJQUFJLEdBQUcsZ0JBQWI7QUFDQSxRQUFNSSxPQUFPLEdBQUdMLE9BQU8sQ0FBQ0MsSUFBRCxDQUFQLENBQ2JLLE1BRGEsQ0FDTkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLEtBQUYsQ0FBUSxPQUFSLENBREMsRUFFYkMsR0FGYSxDQUVURixDQUFDLElBQUlBLENBQUMsQ0FBQ0csT0FBRixDQUFVLFNBQVYsRUFBcUIsRUFBckIsQ0FGSSxDQUFoQjtBQUdBLFFBQU1DLElBQUksR0FBR04sT0FBTyxDQUFDTyxNQUFSLENBQWUsQ0FBQ0MsSUFBRCxFQUFPQyxNQUFQLEtBQWtCO0FBQzVDLFVBQU1DLFlBQVksR0FBRyxJQUFJQyxjQUFKLENBQVdGLE1BQVgsQ0FBckI7QUFDQUQsSUFBQUEsSUFBSSxDQUFDRSxZQUFZLENBQUNFLFVBQWQsQ0FBSixHQUFnQ0MsSUFBSSxDQUFDQyxLQUFMLENBQzlCakIsWUFBR2tCLFlBQUgsQ0FBZ0JDLGNBQUtDLElBQUwsQ0FBVXJCLElBQVYsRUFBZ0JhLE1BQU0sR0FBRyxPQUF6QixDQUFoQixFQUFtRCxNQUFuRCxDQUQ4QixDQUFoQztBQUdBLFdBQU9ELElBQVA7QUFDRCxHQU5ZLEVBTVYsRUFOVSxDQUFiO0FBT0EsUUFBTVUsZ0JBQWdCLEdBQUcsSUFBSUMsZUFBSixDQUFZbkIsT0FBWixDQUF6QjtBQUVBLFNBQU87QUFDTG9CLElBQUFBLElBQUksRUFBRSx5QkFBUTdCLEdBQUcsSUFBSTtBQUNuQixZQUFNOEIsZUFBZSxHQUFHLElBQUlGLGVBQUosQ0FBWXpCLGNBQWMsQ0FBQ0gsR0FBRCxDQUExQixDQUF4QjtBQUNBLFlBQU1rQixNQUFNLEdBQUdZLGVBQWUsQ0FBQ0MsSUFBaEIsQ0FBcUJKLGdCQUFyQixDQUFmO0FBQ0EsWUFBTUssWUFBb0MsR0FBR2pCLElBQUksQ0FBQ0csTUFBTSxDQUFDRyxVQUFSLENBQWpEO0FBQ0EsYUFBTztBQUFDVyxRQUFBQSxZQUFEO0FBQWVkLFFBQUFBO0FBQWYsT0FBUDtBQUNELEtBTEs7QUFERCxHQUFQO0FBUUQsQ0E3QkQ7O2VBK0JrQixPQUFXaEIsTUFBWCxHQUFvQixJIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvcHlyaWdodCAoYykgMjAxOCBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqIEBmbG93XG4gKi9cblxuaW1wb3J0IHtMb2NhbGUsIExvY2FsZXN9IGZyb20gJ2xvY2FsZSc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7bWVtb2l6ZX0gZnJvbSAnZnVzaW9uLWNvcmUnO1xuaW1wb3J0IHR5cGUge0NvbnRleHR9IGZyb20gJ2Z1c2lvbi1jb3JlJztcblxuaW1wb3J0IHR5cGUge1RyYW5zbGF0aW9uc09iamVjdFR5cGV9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBJMThuTG9hZGVyVHlwZSA9IHtcbiAgZnJvbTogKFxuICAgIGN0eDogQ29udGV4dFxuICApID0+IHtsb2NhbGU6IHN0cmluZyB8IExvY2FsZSwgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnNPYmplY3RUeXBlfSxcbn07XG5leHBvcnQgdHlwZSBMb2NhbGVSZXNvbHZlclR5cGUgPSAoY3R4OiBDb250ZXh0KSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBMb2FkZXJGYWN0b3J5VHlwZSA9IChcbiAgcmVzb2x2ZUxvY2FsZXM/OiBMb2NhbGVSZXNvbHZlclR5cGVcbikgPT4gSTE4bkxvYWRlclR5cGU7XG5cbmNvbnN0IGRlZmF1bHRSZXNvbHZlTG9jYWxlczogTG9jYWxlUmVzb2x2ZXJUeXBlID0gY3R4ID0+XG4gIGN0eC5oZWFkZXJzWydhY2NlcHQtbGFuZ3VhZ2UnXTtcblxuY29uc3QgbG9hZGVyOiBMb2FkZXJGYWN0b3J5VHlwZSA9IChyZXNvbHZlTG9jYWxlcyA9IGRlZmF1bHRSZXNvbHZlTG9jYWxlcykgPT4ge1xuICBjb25zdCByZWFkRGlyID0gcm9vdCA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmcy5yZWFkZGlyU3luYyhyb290KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuICBjb25zdCByb290ID0gJy4vdHJhbnNsYXRpb25zJztcbiAgY29uc3QgbG9jYWxlcyA9IHJlYWREaXIocm9vdClcbiAgICAuZmlsdGVyKHAgPT4gcC5tYXRjaCgvanNvbiQvKSlcbiAgICAubWFwKHAgPT4gcC5yZXBsYWNlKC9cXC5qc29uJC8sICcnKSk7XG4gIGNvbnN0IGRhdGEgPSBsb2NhbGVzLnJlZHVjZSgobWVtbywgbG9jYWxlKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkTG9jYWxlID0gbmV3IExvY2FsZShsb2NhbGUpO1xuICAgIG1lbW9bcGFyc2VkTG9jYWxlLm5vcm1hbGl6ZWRdID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocm9vdCwgbG9jYWxlICsgJy5qc29uJyksICd1dGY4JylcbiAgICApO1xuICAgIHJldHVybiBtZW1vO1xuICB9LCB7fSk7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZXMgPSBuZXcgTG9jYWxlcyhsb2NhbGVzKTtcblxuICByZXR1cm4ge1xuICAgIGZyb206IG1lbW9pemUoY3R4ID0+IHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkTG9jYWxlcyA9IG5ldyBMb2NhbGVzKHJlc29sdmVMb2NhbGVzKGN0eCkpO1xuICAgICAgY29uc3QgbG9jYWxlID0gZXhwZWN0ZWRMb2NhbGVzLmJlc3Qoc3VwcG9ydGVkTG9jYWxlcyk7XG4gICAgICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uc09iamVjdFR5cGUgPSBkYXRhW2xvY2FsZS5ub3JtYWxpemVkXTtcbiAgICAgIHJldHVybiB7dHJhbnNsYXRpb25zLCBsb2NhbGV9O1xuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKCgoX19OT0RFX18gPyBsb2FkZXIgOiBudWxsKTogYW55KTogdHlwZW9mIGxvYWRlcik7XG4iXX0=
\No newline at end of file