@ladjs/i18n
Advanced tools
Comparing version 0.3.2 to 1.0.0
@@ -106,5 +106,5 @@ 'use strict'; | ||
// expose api methods to `ctx.req` and `ctx.state` | ||
// expose api methods to `ctx.request` and `ctx.state` | ||
i18n.init(ctx.req, ctx.state); | ||
i18n.init(ctx.request, ctx.state); | ||
@@ -148,4 +148,4 @@ // expose a helper function to `ctx.state.l` | ||
// set the locale properly | ||
i18n.setLocale([ctx.req, ctx.state], locale); | ||
ctx.locale = ctx.req.locale; | ||
i18n.setLocale([ctx.request, ctx.state], locale); | ||
ctx.locale = ctx.request.locale; | ||
@@ -168,3 +168,3 @@ // if the locale was not available then redirect user | ||
// get the name of the current locale's language in native language | ||
ctx.state.currentLanguage = s.titleize(getLanguage(ctx.req.locale).nativeName[0]); | ||
ctx.state.currentLanguage = s.titleize(getLanguage(ctx.request.locale).nativeName[0]); | ||
@@ -178,3 +178,3 @@ // bind `ctx.translate` as a helper func | ||
args[0] = phrases[args[0]]; | ||
return ctx.req.t(...args); | ||
return ctx.request.t(...args); | ||
}; | ||
@@ -202,3 +202,3 @@ | ||
ctx.status = 302; | ||
let redirect = `/${ctx.req.locale}${ctx.url}`; | ||
let redirect = `/${ctx.request.locale}${ctx.url}`; | ||
if (!isEmpty(ctx.query)) redirect += `?${stringify(ctx.query)}`; | ||
@@ -236,2 +236,2 @@ debug('no valid locale found in URL, redirecting to %s', redirect); | ||
module.exports = I18N; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiZXh0bmFtZSIsInJlc29sdmUiLCJzdHJpbmdpZnkiLCJCb29tIiwicyIsImlzRW1wdHkiLCJzb3J0QnkiLCJldmVyeSIsImlzRnVuY3Rpb24iLCJnZXRMYW5ndWFnZSIsIm1vbWVudCIsImkxOG4iLCJsb2NhbGVzIiwiYXV0b0JpbmQiLCJkZWJ1ZyIsImJvb2xlYW4iLCJhcGkiLCJJMThOIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJPYmplY3QiLCJhc3NpZ24iLCJwaHJhc2VzIiwibG9nZ2VyIiwiY29uc29sZSIsImRpcmVjdG9yeSIsImNvb2tpZSIsImluZGVudCIsImRlZmF1bHRMb2NhbGUiLCJzeW5jRmlsZXMiLCJwcm9jZXNzIiwiZW52IiwiSTE4Tl9TWU5DX0ZJTEVTIiwiYXV0b1JlbG9hZCIsIkkxOE5fQVVUT19SRUxPQUQiLCJ1cGRhdGVGaWxlcyIsIkkxOE5fVVBEQVRFX0ZJTEVTIiwiX18iLCJfX24iLCJfX2wiLCJfX2giLCJfX21mIiwicmVnaXN0ZXIiLCJsb2dEZWJ1Z0ZuIiwibG9nV2FybkZuIiwid2FybiIsImxvZ0Vycm9yRm4iLCJlcnJvciIsImwiLCJpbmNsdWRlcyIsIkVycm9yIiwiZmlsdGVyIiwic3RyIiwiam9pbiIsImNvbmZpZ3VyZSIsInRyYW5zbGF0ZSIsImtleSIsImxvY2FsZSIsImFyZ3MiLCJrZXlzIiwiYXJndW1lbnRzIiwibWFwIiwic2xpY2UiLCJwaHJhc2UiLCJ0IiwibWlkZGxld2FyZSIsImN0eCIsIm5leHQiLCJpbml0IiwicmVxIiwic3RhdGUiLCJwYXRoIiwiZmluZCIsImluZGV4T2YiLCJwYXRoV2l0aG91dExvY2FsZSIsInN1YnN0cmluZyIsImxlbmd0aCIsImNvb2tpZXMiLCJnZXQiLCJyZXF1ZXN0IiwiYWNjZXB0c0xhbmd1YWdlcyIsInNldExvY2FsZSIsInJlZGlyZWN0IiwicXVlcnkiLCJhdmFpbGFibGVMYW5ndWFnZXMiLCJ1cmwiLCJuYW1lIiwiY3VycmVudExhbmd1YWdlIiwidGl0bGVpemUiLCJuYXRpdmVOYW1lIiwidGhyb3ciLCJiYWRSZXF1ZXN0Iiwic3BsaXQiLCJoYXNMYW5nIiwic3RhdHVzIiwic2V0Iiwic2lnbmVkIiwiTk9ERV9FTlYiLCJleHBpcmVzIiwiYWRkIiwidG9EYXRlIiwiaXNBdXRoZW50aWNhdGVkIiwidXNlciIsImxhc3RfbG9jYWxlIiwic2F2ZSIsImVyciIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7ZUFBNkJBLFFBQVEsTUFBUixDOztNQUFyQkMsTyxZQUFBQSxPO01BQVNDLE8sWUFBQUEsTzs7Z0JBQ0tGLFFBQVEsSUFBUixDOztNQUFkRyxTLGFBQUFBLFM7O0FBQ1IsTUFBTUMsT0FBT0osUUFBUSxNQUFSLENBQWI7QUFDQSxNQUFNSyxJQUFJTCxRQUFRLG1CQUFSLENBQVY7O2dCQUMrQ0EsUUFBUSxRQUFSLEM7O01BQXZDTSxPLGFBQUFBLE87TUFBU0MsTSxhQUFBQSxNO01BQVFDLEssYUFBQUEsSztNQUFPQyxVLGFBQUFBLFU7O2dCQUNSVCxRQUFRLGtCQUFSLEM7O01BQWhCVSxXLGFBQUFBLFc7O0FBQ1IsTUFBTUMsU0FBU1gsUUFBUSxRQUFSLENBQWY7QUFDQSxNQUFNWSxPQUFPWixRQUFRLE1BQVIsQ0FBYjtBQUNBLE1BQU1hLFVBQVViLFFBQVEsY0FBUixDQUFoQjtBQUNBLE1BQU1jLFdBQVdkLFFBQVEsV0FBUixDQUFqQjtBQUNBLE1BQU1lLFFBQVFmLFFBQVEsT0FBUixFQUFpQixZQUFqQixDQUFkO0FBQ0EsTUFBTWdCLFVBQVVoQixRQUFRLFNBQVIsQ0FBaEI7O0FBRUE7QUFDQVksS0FBS0ssR0FBTCxHQUFXLEVBQVg7O0FBRUEsTUFBTUMsSUFBTixDQUFXO0FBQ1RDLGNBQVlDLFNBQVMsRUFBckIsRUFBeUI7QUFDdkIsU0FBS0EsTUFBTCxHQUFjQyxPQUFPQyxNQUFQLENBQ1o7QUFDRUMsZUFBUyxFQURYO0FBRUVDLGNBQVFDLE9BRlY7QUFHRUMsaUJBQVd4QixR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aUIsS0FBZCxDQUFxQixFQUFyQztBQUN6QnJFLGNBQU0saURBQU4sRUFBeURvRSxRQUF6RDtBQUNBLGVBQU9oQixJQUFJZ0IsUUFBSixDQUFhQSxRQUFiLENBQVA7QUFDRDs7QUFFRHBFLFlBQU0sMkJBQU4sRUFBbUMyQyxNQUFuQzs7QUFFQTtBQUNBUyxVQUFJVyxPQUFKLENBQVlrQixHQUFaLENBQWdCLE1BQUs1RSxNQUFMLENBQVlPLE1BQTVCLEVBQW9DK0IsTUFBcEMsRUFBNEM7QUFDMUM7QUFDQXVDLGdCQUFRbEUsUUFBUUMsR0FBUixDQUFZa0UsUUFBWixLQUF5QixNQUZTO0FBRzFDQyxpQkFBU3hGLFNBQ055RixHQURNLENBQ0YsQ0FERSxFQUNDLE1BREQsRUFFTkMsTUFGTTtBQUhpQyxPQUE1QztBQU9BdEYsWUFBTSw2QkFBTixFQUFxQzJDLE1BQXJDOztBQUVBO0FBQ0E7QUFDQSxVQUFJakQsV0FBVzBELElBQUltQyxlQUFmLEtBQW1DbkMsSUFBSW1DLGVBQUosRUFBdkMsRUFBOEQ7QUFDNURuQyxZQUFJSSxLQUFKLENBQVVnQyxJQUFWLENBQWVDLFdBQWYsR0FBNkI5QyxNQUE3QjtBQUNBLFlBQUk7QUFDRixnQkFBTVMsSUFBSUksS0FBSixDQUFVZ0MsSUFBVixDQUFlRSxJQUFmLEVBQU47QUFDRCxTQUZELENBRUUsT0FBT0MsR0FBUCxFQUFZO0FBQ1osZ0JBQUt0RixNQUFMLENBQVlJLE1BQVosQ0FBbUJ3QixLQUFuQixDQUF5QjBELEdBQXpCO0FBQ0Q7QUFDRjs7QUFFRCxhQUFPdEMsTUFBUDtBQTNDd0I7QUE0Q3pCO0FBOU1ROztBQWlOWHVDLE9BQU9DLE9BQVAsR0FBaUIxRixJQUFqQiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgZXh0bmFtZSwgcmVzb2x2ZSB9ID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgeyBzdHJpbmdpZnkgfSA9IHJlcXVpcmUoJ3FzJyk7XG5jb25zdCBCb29tID0gcmVxdWlyZSgnYm9vbScpO1xuY29uc3QgcyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUuc3RyaW5nJyk7XG5jb25zdCB7IGlzRW1wdHksIHNvcnRCeSwgZXZlcnksIGlzRnVuY3Rpb24gfSA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuY29uc3QgeyBnZXRMYW5ndWFnZSB9ID0gcmVxdWlyZSgnY291bnRyeS1sYW5ndWFnZScpO1xuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XG5jb25zdCBpMThuID0gcmVxdWlyZSgnaTE4bicpO1xuY29uc3QgbG9jYWxlcyA9IHJlcXVpcmUoJ2kxOG4tbG9jYWxlcycpO1xuY29uc3QgYXV0b0JpbmQgPSByZXF1aXJlKCdhdXRvLWJpbmQnKTtcbmNvbnN0IGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnbGFkanM6aTE4bicpO1xuY29uc3QgYm9vbGVhbiA9IHJlcXVpcmUoJ2Jvb2xlYW4nKTtcblxuLy8gZXhwb3NlIGdsb2JhbFxuaTE4bi5hcGkgPSB7fTtcblxuY2xhc3MgSTE4TiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZyA9IHt9KSB7XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKFxuICAgICAge1xuICAgICAgICBwaHJhc2VzOiB7fSxcbiAgICAgICAgbG9nZ2VyOiBjb25zb2xlLFxuICAgICAgICBkaXJlY3Rvcnk6IHJlc29sdmUoJ2xvY2FsZXMnKSxcbiAgICAgICAgbG9jYWxlczogWydlbicsICdlcycsICd6aCddLFxuICAgICAgICBjb29raWU6ICdsb2NhbGUnLFxuICAgICAgICBpbmRlbnQ6ICcgICcsXG4gICAgICAgIGRlZmF1bHRMb2NhbGU6ICdlbicsXG4gICAgICAgIHN5bmNGaWxlczogYm9vbGVhbihwcm9jZXNzLmVudi5JMThOX1NZTkNfRklMRVMgfHwgdHJ1ZSksXG4gICAgICAgIGF1dG9SZWxvYWQ6IGJvb2xlYW4ocHJvY2Vzcy5lbnYuSTE4Tl9BVVRPX1JFTE9BRCB8fCBmYWxzZSksXG4gICAgICAgIHVwZGF0ZUZpbGVzOiBib29sZWFuKHByb2Nlc3MuZW52LkkxOE5fVVBEQVRFX0ZJTEVTIHx8IHRydWUpLFxuICAgICAgICBhcGk6IHtcbiAgICAgICAgICBfXzogJ3QnLFxuICAgICAgICAgIF9fbjogJ3RuJyxcbiAgICAgICAgICBfX2w6ICd0bCcsXG4gICAgICAgICAgX19oOiAndGgnLFxuICAgICAgICAgIF9fbWY6ICd0bWYnXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyOiBpMThuLmFwaVxuICAgICAgfSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gdGhpcy5jb25maWc7XG5cbiAgICB0aGlzLmNvbmZpZy5sb2dEZWJ1Z0ZuID0gbG9nZ2VyLmRlYnVnO1xuICAgIHRoaXMuY29uZmlnLmxvZ1dhcm5GbiA9IGxvZ2dlci53YXJuO1xuICAgIHRoaXMuY29uZmlnLmxvZ0Vycm9yRm4gPSBsb2dnZXIuZXJyb3I7XG5cbiAgICAvLyB2YWxpZGF0ZSBsb2NhbGVzIGFnYWluc3QgYXZhaWxhYmxlIG9uZXNcbiAgICBpZiAoIWV2ZXJ5KHRoaXMuY29uZmlnLmxvY2FsZXMsIGwgPT4gbG9jYWxlcy5pbmNsdWRlcyhsKSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGxvY2FsZXM6ICR7dGhpcy5jb25maWcubG9jYWxlc1xuICAgICAgICAgIC5maWx0ZXIoc3RyID0+ICFsb2NhbGVzLmluY2x1ZGVzKHN0cikpXG4gICAgICAgICAgLmpvaW4oJywgJyl9YFxuICAgICAgKTtcblxuICAgIC8vIGluaGVyaXQgaTE4biBvYmplY3RcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGkxOG4pO1xuXG4gICAgLy8gY29uZmlndXJlIGkxOG5cbiAgICB0aGlzLmNvbmZpZ3VyZSh0aGlzLmNvbmZpZyk7XG5cbiAgICBhdXRvQmluZCh0aGlzKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZShrZXksIGxvY2FsZSkge1xuICAgIGNvbnN0IHsgbG9nZ2VyLCBwaHJhc2VzIH0gPSB0aGlzLmNvbmZpZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgbGV0IGFyZ3MgPSBPYmplY3Qua2V5cyhhcmd1bWVudHMpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAubWFwKGtleSA9PiBhcmd1bWVudHNba2V5XSlcbiAgICAgIC5zbGljZSgyKTtcbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICd1bmRlZmluZWQnKSBhcmdzID0gW107XG4gICAgY29uc3QgcGhyYXNlID0gcGhyYXNlc1trZXldO1xuICAgIGlmICh0eXBlb2YgcGhyYXNlICE9PSAnc3RyaW5nJykge1xuICAgICAgbG9nZ2VyLndhcm4oYHRyYW5zbGF0aW9uIGtleSBtaXNzaW5nOiAke2tleX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXJncyA9IFt7IHBocmFzZSwgbG9jYWxlIH0sIC4uLmFyZ3NdO1xuICAgIHJldHVybiBpMThuLmFwaS50KC4uLmFyZ3MpO1xuICB9XG5cbiAgbWlkZGxld2FyZShjdHgsIG5leHQpIHtcbiAgICBjb25zdCB7IGxvY2FsZXMsIGRlZmF1bHRMb2NhbGUsIHBocmFzZXMsIGNvb2tpZSB9ID0gdGhpcy5jb25maWc7XG5cbiAgICAvLyBleHBvc2UgYXBpIG1ldGhvZHMgdG8gYGN0eC5yZXFgIGFuZCBgY3R4LnN0YXRlYFxuICAgIGkxOG4uaW5pdChjdHgucmVxLCBjdHguc3RhdGUpO1xuXG4gICAgLy8gZXhwb3NlIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGBjdHguc3RhdGUubGBcbiAgICAvLyB3aGljaCBwcmVmaXhlcyBhIGxpbmsvcGF0aCB3aXRoIHRoZSBsb2NhbGVcbiAgICBjdHguc3RhdGUubCA9IChwYXRoID0gJycpID0+IHtcbiAgICAgIHJldHVybiBgLyR7Y3R4LnN0YXRlLmxvY2FsZX0ke3BhdGh9YDtcbiAgICB9O1xuXG4gICAgLy8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIGxvY2FsZSBkZXRlY3Rpb24gd2l0aCBvdXIgb3duXG4gICAgLy8gaW4gb3JkZXIgb2YgcHJpb3JpdHk6XG4gICAgLy9cbiAgICAvLyAxLiBjaGVjayB0aGUgVVJMLCBpZiA9PT0gYC9kZWAgb3Igc3RhcnRzIHdpdGggYC9kZS9gIHRoZW4gbG9jYWxlIGlzIGBkZWBcbiAgICAvLyAyLiBjaGVjayB0aGUgY29va2llXG4gICAgLy8gMy4gY2hlY2sgQWNjZXB0LUxhbmd1YWdlIGxhc3RcbiAgICAvL1xuICAgIC8vIGFsc28gd2UgbmVlZCB0byBleHBvc2UgYGN0eC5wYXRoV2l0aG91dExvY2FsZWBcbiAgICAvLyBhcyB0aGUgcGF0aCB3aXRob3V0IGxvY2FsZVxuXG4gICAgbGV0IGxvY2FsZSA9IGxvY2FsZXMuZmluZChsID0+IHtcbiAgICAgIHJldHVybiBgLyR7bH1gID09PSBjdHgucGF0aCB8fCBjdHgucGF0aC5pbmRleE9mKGAvJHtsfS9gKSA9PT0gMDtcbiAgICB9KTtcblxuICAgIGN0eC5wYXRoV2l0aG91dExvY2FsZSA9IGxvY2FsZVxuICAgICAgPyBjdHgucGF0aC5zdWJzdHJpbmcoYC8ke2xvY2FsZX1gLmxlbmd0aClcbiAgICAgIDogY3R4LnBhdGg7XG4gICAgaWYgKGN0eC5wYXRoV2l0aG91dExvY2FsZSA9PT0gJycpIGN0eC5wYXRoV2l0aG91dExvY2FsZSA9ICcvJztcblxuICAgIGlmICghbG9jYWxlKSB7XG4gICAgICBsb2NhbGUgPSBkZWZhdWx0TG9jYWxlO1xuICAgICAgaWYgKFxuICAgICAgICBjdHguY29va2llcy5nZXQoY29va2llKSAmJlxuICAgICAgICBsb2NhbGVzLmluY2x1ZGVzKGN0eC5jb29raWVzLmdldChjb29raWUpKVxuICAgICAgKSB7XG4gICAgICAgIGxvY2FsZSA9IGN0eC5jb29raWVzLmdldChjb29raWUpO1xuICAgICAgICBkZWJ1ZygnZm91bmQgbG9jYWxlIHZpYSBjb29raWUgdXNpbmcgJXMnLCBsb2NhbGUpO1xuICAgICAgfSBlbHNlIGlmIChjdHgucmVxdWVzdC5hY2NlcHRzTGFuZ3VhZ2VzKGxvY2FsZXMpKSB7XG4gICAgICAgIGxvY2FsZSA9IGN0eC5yZXF1ZXN0LmFjY2VwdHNMYW5ndWFnZXMobG9jYWxlcyk7XG4gICAgICAgIGRlYnVnKCdmb3VuZCBsb2NhbGUgdmlhIEFjY2VwdC1MYW5ndWFnZSBoZWFkZXIgdXNpbmcgJXMnLCBsb2NhbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ3VzaW5nIGRlZmF1bHQgbG9jYWxlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHRoZSBsb2NhbGUgcHJvcGVybHlcbiAgICBpMThuLnNldExvY2FsZShbY3R4LnJlcSwgY3R4LnN0YXRlXSwgbG9jYWxlKTtcbiAgICBjdHgubG9jYWxlID0gY3R4LnJlcS5sb2NhbGU7XG5cbiAgICAvLyBpZiB0aGUgbG9jYWxlIHdhcyBub3QgYXZhaWxhYmxlIHRoZW4gcmVkaXJlY3QgdXNlclxuICAgIGlmIChsb2NhbGUgIT09IGN0eC5zdGF0ZS5sb2NhbGUpIHtcbiAgICAgIGRlYnVnKCdsb2NhbGUgd2FzIG5vdCBhdmFpbGFibGUgcmVkaXJlY3RpbmcgdXNlcicpO1xuICAgICAgcmV0dXJuIGN0eC5yZWRpcmVjdChcbiAgICAgICAgYC8ke2N0eC5zdGF0ZS5sb2NhbGV9JHtjdHgucGF0aFdpdGhvdXRMb2NhbGV9JHtcbiAgICAgICAgICBpc0VtcHR5KGN0eC5xdWVyeSkgPyAnJyA6IGA/JHtzdHJpbmdpZnkoY3R4LnF1ZXJ5KX1gXG4gICAgICAgIH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGF2YWlsYWJsZSBsYW5ndWFnZXMgZm9yIGEgZHJvcGRvd24gbWVudSB0byBjaGFuZ2UgbGFuZ3VhZ2VcbiAgICBjdHguc3RhdGUuYXZhaWxhYmxlTGFuZ3VhZ2VzID0gc29ydEJ5KFxuICAgICAgbG9jYWxlcy5tYXAobG9jYWxlID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgdXJsOiBgLyR7bG9jYWxlfSR7Y3R4LnBhdGhXaXRob3V0TG9jYWxlfSR7XG4gICAgICAgICAgICBpc0VtcHR5KGN0eC5xdWVyeSkgPyAnJyA6IGA/JHtzdHJpbmdpZnkoY3R4LnF1ZXJ5KX1gXG4gICAgICAgICAgfWAsXG4gICAgICAgICAgbmFtZTogZ2V0TGFuZ3VhZ2UobG9jYWxlKS5uYW1lWzBdXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgICduYW1lJ1xuICAgICk7XG5cbiAgICAvLyBnZXQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgbGFuZ3VhZ2UgaW4gbmF0aXZlIGxhbmd1YWdlXG4gICAgY3R4LnN0YXRlLmN1cnJlbnRMYW5ndWFnZSA9IHMudGl0bGVpemUoXG4gICAgICBnZXRMYW5ndWFnZShjdHgucmVxLmxvY2FsZSkubmF0aXZlTmFtZVswXVxuICAgICk7XG5cbiAgICAvLyBiaW5kIGBjdHgudHJhbnNsYXRlYCBhcyBhIGhlbHBlciBmdW5jXG4gICAgLy8gc28geW91IGNhbiBwYXNzIGBjdHgudHJhbnNsYXRlKCdTT01FX0tFWV9JTl9DT05GSUcnKTtgIGFuZCBpdCB3aWxsIGxvb2t1cFxuICAgIC8vIGBwaHJhc2VzWydTT01FVEhJTkcnXWAgdG8gZ2V0IGEgc3BlY2lmaWMgYW5kIGNvbnN0YW50IG1lc3NhZ2VcbiAgICAvLyBhbmQgdGhlbiBpdCB3aWxsIGNhbGwgYHRgIHRvIHRyYW5zbGF0ZSBpdCB0byB0aGUgdXNlcidzIGxvY2FsZVxuICAgIGN0eC50cmFuc2xhdGUgPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gIT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwaHJhc2VzW2FyZ3NbMF1dICE9PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIGN0eC50aHJvdyhcbiAgICAgICAgICBCb29tLmJhZFJlcXVlc3QoJ1RyYW5zbGF0aW9uIGZvciB5b3VyIGxvY2FsZSBmYWlsZWQsIHRyeSBhZ2FpbicpXG4gICAgICAgICk7XG4gICAgICBhcmdzWzBdID0gcGhyYXNlc1thcmdzWzBdXTtcbiAgICAgIHJldHVybiBjdHgucmVxLnQoLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBhc3luYyByZWRpcmVjdChjdHgsIG5leHQpIHtcbiAgICBkZWJ1ZygnYXR0ZW1wdGluZyB0byByZWRpcmVjdCcpO1xuICAgIC8vIGRvIG5vdCByZWRpcmVjdCBzdGF0aWMgcGF0aHNcbiAgICBpZiAoZXh0bmFtZShjdHgucGF0aCkgIT09ICcnKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgLy8gaW5zcGlyZWQgYnkgbm9kZWpzLm9yZyBsYW5ndWFnZSBzdXBwb3J0XG4gICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZWpzLm9yZy9jb21taXQvZDZjZGQ5NDJhOGZjMGZmZmNmNjg3OWVjYTEyNDI5NWU5NTk5MWJiYyNkaWZmLTc4YzEyZjVhZGMxODQ4ZDEzYjFjNmYwNzA1NWQ5OTZlUjU5PlxuICAgIGNvbnN0IGxvY2FsZSA9IGN0eC51cmwuc3BsaXQoJy8nKVsxXS5zcGxpdCgnPycpWzBdO1xuICAgIGNvbnN0IGhhc0xhbmcgPSB0aGlzLmNvbmZpZy5sb2NhbGVzLmluY2x1ZGVzKGxvY2FsZSk7XG5cbiAgICAvLyBpZiB0aGUgVVJMIGRpZCBub3QgaGF2ZSBhIHZhbGlkIGxhbmd1YWdlIGZvdW5kXG4gICAgLy8gdGhlbiByZWRpcmVjdCB0aGUgdXNlciB0byB0aGVpciBkZXRlY3RlZCBsb2NhbGVcbiAgICBpZiAoIWhhc0xhbmcpIHtcbiAgICAgIGN0eC5zdGF0dXMgPSAzMDI7XG4gICAgICBsZXQgcmVkaXJlY3QgPSBgLyR7Y3R4LnJlcS5sb2NhbGV9JHtjdHgudXJsfWA7XG4gICAgICBpZiAoIWlzRW1wdHkoY3R4LnF1ZXJ5KSkgcmVkaXJlY3QgKz0gYD8ke3N0cmluZ2lmeShjdHgucXVlcnkpfWA7XG4gICAgICBkZWJ1Zygnbm8gdmFsaWQgbG9jYWxlIGZvdW5kIGluIFVSTCwgcmVkaXJlY3RpbmcgdG8gJXMnLCByZWRpcmVjdCk7XG4gICAgICByZXR1cm4gY3R4LnJlZGlyZWN0KHJlZGlyZWN0KTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnZm91bmQgdmFsaWQgbGFuZ3VhZ2UgXCIlc1wiJywgbG9jYWxlKTtcblxuICAgIC8vIHNldCB0aGUgY29va2llIGZvciBmdXR1cmUgcmVxdWVzdHNcbiAgICBjdHguY29va2llcy5zZXQodGhpcy5jb25maWcuY29va2llLCBsb2NhbGUsIHtcbiAgICAgIC8vIERpc2FibGUgc2lnbmVkIGNvb2tpZXMgaW4gTk9ERV9FTlY9dGVzdFxuICAgICAgc2lnbmVkOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnLFxuICAgICAgZXhwaXJlczogbW9tZW50KClcbiAgICAgICAgLmFkZCgxLCAneWVhcicpXG4gICAgICAgIC50b0RhdGUoKVxuICAgIH0pO1xuICAgIGRlYnVnKCdzZXQgY29va2llcyBmb3IgbG9jYWxlIFwiJXNcIicsIGxvY2FsZSk7XG5cbiAgICAvLyBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4gYW5kIGN0eC5pc0F1dGhlbnRpY2F0ZWQoKSBleGlzdHMsXG4gICAgLy8gdGhlbiBzYXZlIGl0IGFzIGBsYXN0X2xvY2FsZWBcbiAgICBpZiAoaXNGdW5jdGlvbihjdHguaXNBdXRoZW50aWNhdGVkKSAmJiBjdHguaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgIGN0eC5zdGF0ZS51c2VyLmxhc3RfbG9jYWxlID0gbG9jYWxlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgY3R4LnN0YXRlLnVzZXIuc2F2ZSgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBJMThOO1xuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiZXh0bmFtZSIsInJlc29sdmUiLCJzdHJpbmdpZnkiLCJCb29tIiwicyIsImlzRW1wdHkiLCJzb3J0QnkiLCJldmVyeSIsImlzRnVuY3Rpb24iLCJnZXRMYW5ndWFnZSIsIm1vbWVudCIsImkxOG4iLCJsb2NhbGVzIiwiYXV0b0JpbmQiLCJkZWJ1ZyIsImJvb2xlYW4iLCJhcGkiLCJJMThOIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJPYmplY3QiLCJhc3NpZ24iLCJwaHJhc2VzIiwibG9nZ2VyIiwiY29uc29sZSIsImRpcmVjdG9yeSIsImNvb2tpZSIsImluZGVudCIsImRlZmF1bHRMb2NhbGUiLCJzeW5jRmlsZXMiLCJwcm9jZXNzIiwiZW52IiwiSTE4Tl9TWU5DX0ZJTEVTIiwiYXV0b1JlbG9hZCIsIkkxOE5fQVVUT19SRUxPQUQiLCJ1cGRhdGVGaWxlcyIsIkkxOE5fVVBEQVRFX0ZJTEVTIiwiX18iLCJfX24iLCJfX2wiLCJfX2giLCJfX21mIiwicmVnaXN0ZXIiLCJsb2dEZWJ1Z0ZuIiwibG9nV2FybkZuIiwid2FybiIsImxvZ0Vycm9yRm4iLCJlcnJvciIsImwiLCJpbmNsdWRlcyIsIkVycm9yIiwiZmlsdGVyIiwic3RyIiwiam9pbiIsImNvbmZpZ3VyZSIsInRyYW5zbGF0ZSIsImtleSIsImxvY2FsZSIsImFyZ3MiLCJrZXlzIiwiYXJndW1lbnRzIiwibWFwIiwic2xpY2UiLCJwaHJhc2UiLCJ0IiwibWlkZGxld2FyZSIsImN0eCIsIm5leHQiLCJpbml0IiwicmVxdWVzdCIsInN0YXRlIiwicGF0aCIsImZpbmQiLCJpbmRleE9mIiwicGF0aFdpdGhvdXRMb2NhbGUiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJjb29raWVzIiwiZ2V0IiwiYWNjZXB0c0xhbmd1YWdlcyIsInNldExvY2FsZSIsInJlZGlyZWN0IiwicXVlcnkiLCJhdmFpbGFibGVMYW5ndWFnZXMiLCJ1cmwiLCJuYW1lIiwiY3VycmVudExhbmd1YWdlIiwidGl0bGVpemUiLCJuYXRpdmVOYW1lIiwidGhyb3ciLCJiYWRSZXF1ZXN0Iiwic3BsaXQiLCJoYXNMYW5nIiwic3RhdHVzIiwic2V0Iiwic2lnbmVkIiwiTk9ERV9FTlYiLCJleHBpcmVzIiwiYWRkIiwidG9EYXRlIiwiaXNBdXRoZW50aWNhdGVkIiwidXNlciIsImxhc3RfbG9jYWxlIiwic2F2ZSIsImVyciIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7ZUFBMkJBLFFBQVEsTUFBUixDOztNQUFwQkMsTyxZQUFBQSxPO01BQVNDLE8sWUFBQUEsTzs7Z0JBQ0lGLFFBQVEsSUFBUixDOztNQUFiRyxTLGFBQUFBLFM7O0FBQ1AsTUFBTUMsT0FBT0osUUFBUSxNQUFSLENBQWI7QUFDQSxNQUFNSyxJQUFJTCxRQUFRLG1CQUFSLENBQVY7O2dCQUM2Q0EsUUFBUSxRQUFSLEM7O01BQXRDTSxPLGFBQUFBLE87TUFBU0MsTSxhQUFBQSxNO01BQVFDLEssYUFBQUEsSztNQUFPQyxVLGFBQUFBLFU7O2dCQUNUVCxRQUFRLGtCQUFSLEM7O01BQWZVLFcsYUFBQUEsVzs7QUFDUCxNQUFNQyxTQUFTWCxRQUFRLFFBQVIsQ0FBZjtBQUNBLE1BQU1ZLE9BQU9aLFFBQVEsTUFBUixDQUFiO0FBQ0EsTUFBTWEsVUFBVWIsUUFBUSxjQUFSLENBQWhCO0FBQ0EsTUFBTWMsV0FBV2QsUUFBUSxXQUFSLENBQWpCO0FBQ0EsTUFBTWUsUUFBUWYsUUFBUSxPQUFSLEVBQWlCLFlBQWpCLENBQWQ7QUFDQSxNQUFNZ0IsVUFBVWhCLFFBQVEsU0FBUixDQUFoQjs7QUFFQTtBQUNBWSxLQUFLSyxHQUFMLEdBQVcsRUFBWDs7QUFFQSxNQUFNQyxJQUFOLENBQVc7QUFDVEMsY0FBWUMsU0FBUyxFQUFyQixFQUF5QjtBQUN2QixTQUFLQSxNQUFMLEdBQWNDLE9BQU9DLE1BQVAsQ0FDWjtBQUNFQyxlQUFTLEVBRFg7QUFFRUMsY0FBUUMsT0FGVjtBQUdFQyxpQkFBV3hCLFFBQVEsU0FB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QWQsQ0FBcUIsRUFBckM7QUFDekJwRSxjQUFNLGlEQUFOLEVBQXlEbUUsUUFBekQ7QUFDQSxlQUFPZixJQUFJZSxRQUFKLENBQWFBLFFBQWIsQ0FBUDtBQUNEOztBQUVEbkUsWUFBTSwyQkFBTixFQUFtQzJDLE1BQW5DOztBQUVBO0FBQ0FTLFVBQUlXLE9BQUosQ0FBWWlCLEdBQVosQ0FBZ0IsTUFBSzNFLE1BQUwsQ0FBWU8sTUFBNUIsRUFBb0MrQixNQUFwQyxFQUE0QztBQUMxQztBQUNBc0MsZ0JBQVFqRSxRQUFRQyxHQUFSLENBQVlpRSxRQUFaLEtBQXlCLE1BRlM7QUFHMUNDLGlCQUFTdkYsU0FDTndGLEdBRE0sQ0FDRixDQURFLEVBQ0MsTUFERCxFQUVOQyxNQUZNO0FBSGlDLE9BQTVDO0FBT0FyRixZQUFNLDZCQUFOLEVBQXFDMkMsTUFBckM7O0FBRUE7QUFDQTtBQUNBLFVBQUlqRCxXQUFXMEQsSUFBSWtDLGVBQWYsS0FBbUNsQyxJQUFJa0MsZUFBSixFQUF2QyxFQUE4RDtBQUM1RGxDLFlBQUlJLEtBQUosQ0FBVStCLElBQVYsQ0FBZUMsV0FBZixHQUE2QjdDLE1BQTdCO0FBQ0EsWUFBSTtBQUNGLGdCQUFNUyxJQUFJSSxLQUFKLENBQVUrQixJQUFWLENBQWVFLElBQWYsRUFBTjtBQUNELFNBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7QUFDWixnQkFBS3JGLE1BQUwsQ0FBWUksTUFBWixDQUFtQndCLEtBQW5CLENBQXlCeUQsR0FBekI7QUFDRDtBQUNGOztBQUVELGFBQU9yQyxNQUFQO0FBM0N3QjtBQTRDekI7QUE5TVE7O0FBaU5Yc0MsT0FBT0MsT0FBUCxHQUFpQnpGLElBQWpCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qge2V4dG5hbWUsIHJlc29sdmV9ID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3Qge3N0cmluZ2lmeX0gPSByZXF1aXJlKCdxcycpO1xuY29uc3QgQm9vbSA9IHJlcXVpcmUoJ2Jvb20nKTtcbmNvbnN0IHMgPSByZXF1aXJlKCd1bmRlcnNjb3JlLnN0cmluZycpO1xuY29uc3Qge2lzRW1wdHksIHNvcnRCeSwgZXZlcnksIGlzRnVuY3Rpb259ID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5jb25zdCB7Z2V0TGFuZ3VhZ2V9ID0gcmVxdWlyZSgnY291bnRyeS1sYW5ndWFnZScpO1xuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XG5jb25zdCBpMThuID0gcmVxdWlyZSgnaTE4bicpO1xuY29uc3QgbG9jYWxlcyA9IHJlcXVpcmUoJ2kxOG4tbG9jYWxlcycpO1xuY29uc3QgYXV0b0JpbmQgPSByZXF1aXJlKCdhdXRvLWJpbmQnKTtcbmNvbnN0IGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnbGFkanM6aTE4bicpO1xuY29uc3QgYm9vbGVhbiA9IHJlcXVpcmUoJ2Jvb2xlYW4nKTtcblxuLy8gZXhwb3NlIGdsb2JhbFxuaTE4bi5hcGkgPSB7fTtcblxuY2xhc3MgSTE4TiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZyA9IHt9KSB7XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKFxuICAgICAge1xuICAgICAgICBwaHJhc2VzOiB7fSxcbiAgICAgICAgbG9nZ2VyOiBjb25zb2xlLFxuICAgICAgICBkaXJlY3Rvcnk6IHJlc29sdmUoJ2xvY2FsZXMnKSxcbiAgICAgICAgbG9jYWxlczogWydlbicsICdlcycsICd6aCddLFxuICAgICAgICBjb29raWU6ICdsb2NhbGUnLFxuICAgICAgICBpbmRlbnQ6ICcgICcsXG4gICAgICAgIGRlZmF1bHRMb2NhbGU6ICdlbicsXG4gICAgICAgIHN5bmNGaWxlczogYm9vbGVhbihwcm9jZXNzLmVudi5JMThOX1NZTkNfRklMRVMgfHwgdHJ1ZSksXG4gICAgICAgIGF1dG9SZWxvYWQ6IGJvb2xlYW4ocHJvY2Vzcy5lbnYuSTE4Tl9BVVRPX1JFTE9BRCB8fCBmYWxzZSksXG4gICAgICAgIHVwZGF0ZUZpbGVzOiBib29sZWFuKHByb2Nlc3MuZW52LkkxOE5fVVBEQVRFX0ZJTEVTIHx8IHRydWUpLFxuICAgICAgICBhcGk6IHtcbiAgICAgICAgICBfXzogJ3QnLFxuICAgICAgICAgIF9fbjogJ3RuJyxcbiAgICAgICAgICBfX2w6ICd0bCcsXG4gICAgICAgICAgX19oOiAndGgnLFxuICAgICAgICAgIF9fbWY6ICd0bWYnXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyOiBpMThuLmFwaVxuICAgICAgfSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICBjb25zdCB7bG9nZ2VyfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgdGhpcy5jb25maWcubG9nRGVidWdGbiA9IGxvZ2dlci5kZWJ1ZztcbiAgICB0aGlzLmNvbmZpZy5sb2dXYXJuRm4gPSBsb2dnZXIud2FybjtcbiAgICB0aGlzLmNvbmZpZy5sb2dFcnJvckZuID0gbG9nZ2VyLmVycm9yO1xuXG4gICAgLy8gdmFsaWRhdGUgbG9jYWxlcyBhZ2FpbnN0IGF2YWlsYWJsZSBvbmVzXG4gICAgaWYgKCFldmVyeSh0aGlzLmNvbmZpZy5sb2NhbGVzLCBsID0+IGxvY2FsZXMuaW5jbHVkZXMobCkpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBsb2NhbGVzOiAke3RoaXMuY29uZmlnLmxvY2FsZXNcbiAgICAgICAgICAuZmlsdGVyKHN0ciA9PiAhbG9jYWxlcy5pbmNsdWRlcyhzdHIpKVxuICAgICAgICAgIC5qb2luKCcsICcpfWBcbiAgICAgICk7XG5cbiAgICAvLyBpbmhlcml0IGkxOG4gb2JqZWN0XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpMThuKTtcblxuICAgIC8vIGNvbmZpZ3VyZSBpMThuXG4gICAgdGhpcy5jb25maWd1cmUodGhpcy5jb25maWcpO1xuXG4gICAgYXV0b0JpbmQodGhpcyk7XG4gIH1cblxuICB0cmFuc2xhdGUoa2V5LCBsb2NhbGUpIHtcbiAgICBjb25zdCB7bG9nZ2VyLCBwaHJhc2VzfSA9IHRoaXMuY29uZmlnO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKGFyZ3VtZW50cylcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICAgIC5tYXAoa2V5ID0+IGFyZ3VtZW50c1trZXldKVxuICAgICAgLnNsaWNlKDIpO1xuICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ3VuZGVmaW5lZCcpIGFyZ3MgPSBbXTtcbiAgICBjb25zdCBwaHJhc2UgPSBwaHJhc2VzW2tleV07XG4gICAgaWYgKHR5cGVvZiBwaHJhc2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICBsb2dnZXIud2FybihgdHJhbnNsYXRpb24ga2V5IG1pc3Npbmc6ICR7a2V5fWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhcmdzID0gW3twaHJhc2UsIGxvY2FsZX0sIC4uLmFyZ3NdO1xuICAgIHJldHVybiBpMThuLmFwaS50KC4uLmFyZ3MpO1xuICB9XG5cbiAgbWlkZGxld2FyZShjdHgsIG5leHQpIHtcbiAgICBjb25zdCB7bG9jYWxlcywgZGVmYXVsdExvY2FsZSwgcGhyYXNlcywgY29va2llfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgLy8gZXhwb3NlIGFwaSBtZXRob2RzIHRvIGBjdHgucmVxdWVzdGAgYW5kIGBjdHguc3RhdGVgXG4gICAgaTE4bi5pbml0KGN0eC5yZXF1ZXN0LCBjdHguc3RhdGUpO1xuXG4gICAgLy8gZXhwb3NlIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGBjdHguc3RhdGUubGBcbiAgICAvLyB3aGljaCBwcmVmaXhlcyBhIGxpbmsvcGF0aCB3aXRoIHRoZSBsb2NhbGVcbiAgICBjdHguc3RhdGUubCA9IChwYXRoID0gJycpID0+IHtcbiAgICAgIHJldHVybiBgLyR7Y3R4LnN0YXRlLmxvY2FsZX0ke3BhdGh9YDtcbiAgICB9O1xuXG4gICAgLy8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIGxvY2FsZSBkZXRlY3Rpb24gd2l0aCBvdXIgb3duXG4gICAgLy8gaW4gb3JkZXIgb2YgcHJpb3JpdHk6XG4gICAgLy9cbiAgICAvLyAxLiBjaGVjayB0aGUgVVJMLCBpZiA9PT0gYC9kZWAgb3Igc3RhcnRzIHdpdGggYC9kZS9gIHRoZW4gbG9jYWxlIGlzIGBkZWBcbiAgICAvLyAyLiBjaGVjayB0aGUgY29va2llXG4gICAgLy8gMy4gY2hlY2sgQWNjZXB0LUxhbmd1YWdlIGxhc3RcbiAgICAvL1xuICAgIC8vIGFsc28gd2UgbmVlZCB0byBleHBvc2UgYGN0eC5wYXRoV2l0aG91dExvY2FsZWBcbiAgICAvLyBhcyB0aGUgcGF0aCB3aXRob3V0IGxvY2FsZVxuXG4gICAgbGV0IGxvY2FsZSA9IGxvY2FsZXMuZmluZChsID0+IHtcbiAgICAgIHJldHVybiBgLyR7bH1gID09PSBjdHgucGF0aCB8fCBjdHgucGF0aC5pbmRleE9mKGAvJHtsfS9gKSA9PT0gMDtcbiAgICB9KTtcblxuICAgIGN0eC5wYXRoV2l0aG91dExvY2FsZSA9IGxvY2FsZVxuICAgICAgPyBjdHgucGF0aC5zdWJzdHJpbmcoYC8ke2xvY2FsZX1gLmxlbmd0aClcbiAgICAgIDogY3R4LnBhdGg7XG4gICAgaWYgKGN0eC5wYXRoV2l0aG91dExvY2FsZSA9PT0gJycpIGN0eC5wYXRoV2l0aG91dExvY2FsZSA9ICcvJztcblxuICAgIGlmICghbG9jYWxlKSB7XG4gICAgICBsb2NhbGUgPSBkZWZhdWx0TG9jYWxlO1xuICAgICAgaWYgKFxuICAgICAgICBjdHguY29va2llcy5nZXQoY29va2llKSAmJlxuICAgICAgICBsb2NhbGVzLmluY2x1ZGVzKGN0eC5jb29raWVzLmdldChjb29raWUpKVxuICAgICAgKSB7XG4gICAgICAgIGxvY2FsZSA9IGN0eC5jb29raWVzLmdldChjb29raWUpO1xuICAgICAgICBkZWJ1ZygnZm91bmQgbG9jYWxlIHZpYSBjb29raWUgdXNpbmcgJXMnLCBsb2NhbGUpO1xuICAgICAgfSBlbHNlIGlmIChjdHgucmVxdWVzdC5hY2NlcHRzTGFuZ3VhZ2VzKGxvY2FsZXMpKSB7XG4gICAgICAgIGxvY2FsZSA9IGN0eC5yZXF1ZXN0LmFjY2VwdHNMYW5ndWFnZXMobG9jYWxlcyk7XG4gICAgICAgIGRlYnVnKCdmb3VuZCBsb2NhbGUgdmlhIEFjY2VwdC1MYW5ndWFnZSBoZWFkZXIgdXNpbmcgJXMnLCBsb2NhbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ3VzaW5nIGRlZmF1bHQgbG9jYWxlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHRoZSBsb2NhbGUgcHJvcGVybHlcbiAgICBpMThuLnNldExvY2FsZShbY3R4LnJlcXVlc3QsIGN0eC5zdGF0ZV0sIGxvY2FsZSk7XG4gICAgY3R4LmxvY2FsZSA9IGN0eC5yZXF1ZXN0LmxvY2FsZTtcblxuICAgIC8vIGlmIHRoZSBsb2NhbGUgd2FzIG5vdCBhdmFpbGFibGUgdGhlbiByZWRpcmVjdCB1c2VyXG4gICAgaWYgKGxvY2FsZSAhPT0gY3R4LnN0YXRlLmxvY2FsZSkge1xuICAgICAgZGVidWcoJ2xvY2FsZSB3YXMgbm90IGF2YWlsYWJsZSByZWRpcmVjdGluZyB1c2VyJyk7XG4gICAgICByZXR1cm4gY3R4LnJlZGlyZWN0KFxuICAgICAgICBgLyR7Y3R4LnN0YXRlLmxvY2FsZX0ke2N0eC5wYXRoV2l0aG91dExvY2FsZX0ke1xuICAgICAgICAgIGlzRW1wdHkoY3R4LnF1ZXJ5KSA/ICcnIDogYD8ke3N0cmluZ2lmeShjdHgucXVlcnkpfWBcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gYXZhaWxhYmxlIGxhbmd1YWdlcyBmb3IgYSBkcm9wZG93biBtZW51IHRvIGNoYW5nZSBsYW5ndWFnZVxuICAgIGN0eC5zdGF0ZS5hdmFpbGFibGVMYW5ndWFnZXMgPSBzb3J0QnkoXG4gICAgICBsb2NhbGVzLm1hcChsb2NhbGUgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICB1cmw6IGAvJHtsb2NhbGV9JHtjdHgucGF0aFdpdGhvdXRMb2NhbGV9JHtcbiAgICAgICAgICAgIGlzRW1wdHkoY3R4LnF1ZXJ5KSA/ICcnIDogYD8ke3N0cmluZ2lmeShjdHgucXVlcnkpfWBcbiAgICAgICAgICB9YCxcbiAgICAgICAgICBuYW1lOiBnZXRMYW5ndWFnZShsb2NhbGUpLm5hbWVbMF1cbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgJ25hbWUnXG4gICAgKTtcblxuICAgIC8vIGdldCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBsb2NhbGUncyBsYW5ndWFnZSBpbiBuYXRpdmUgbGFuZ3VhZ2VcbiAgICBjdHguc3RhdGUuY3VycmVudExhbmd1YWdlID0gcy50aXRsZWl6ZShcbiAgICAgIGdldExhbmd1YWdlKGN0eC5yZXF1ZXN0LmxvY2FsZSkubmF0aXZlTmFtZVswXVxuICAgICk7XG5cbiAgICAvLyBiaW5kIGBjdHgudHJhbnNsYXRlYCBhcyBhIGhlbHBlciBmdW5jXG4gICAgLy8gc28geW91IGNhbiBwYXNzIGBjdHgudHJhbnNsYXRlKCdTT01FX0tFWV9JTl9DT05GSUcnKTtgIGFuZCBpdCB3aWxsIGxvb2t1cFxuICAgIC8vIGBwaHJhc2VzWydTT01FVEhJTkcnXWAgdG8gZ2V0IGEgc3BlY2lmaWMgYW5kIGNvbnN0YW50IG1lc3NhZ2VcbiAgICAvLyBhbmQgdGhlbiBpdCB3aWxsIGNhbGwgYHRgIHRvIHRyYW5zbGF0ZSBpdCB0byB0aGUgdXNlcidzIGxvY2FsZVxuICAgIGN0eC50cmFuc2xhdGUgPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gIT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwaHJhc2VzW2FyZ3NbMF1dICE9PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIGN0eC50aHJvdyhcbiAgICAgICAgICBCb29tLmJhZFJlcXVlc3QoJ1RyYW5zbGF0aW9uIGZvciB5b3VyIGxvY2FsZSBmYWlsZWQsIHRyeSBhZ2FpbicpXG4gICAgICAgICk7XG4gICAgICBhcmdzWzBdID0gcGhyYXNlc1thcmdzWzBdXTtcbiAgICAgIHJldHVybiBjdHgucmVxdWVzdC50KC4uLmFyZ3MpO1xuICAgIH07XG5cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgYXN5bmMgcmVkaXJlY3QoY3R4LCBuZXh0KSB7XG4gICAgZGVidWcoJ2F0dGVtcHRpbmcgdG8gcmVkaXJlY3QnKTtcbiAgICAvLyBkbyBub3QgcmVkaXJlY3Qgc3RhdGljIHBhdGhzXG4gICAgaWYgKGV4dG5hbWUoY3R4LnBhdGgpICE9PSAnJykgcmV0dXJuIG5leHQoKTtcblxuICAgIC8vIGluc3BpcmVkIGJ5IG5vZGVqcy5vcmcgbGFuZ3VhZ2Ugc3VwcG9ydFxuICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGVqcy5vcmcvY29tbWl0L2Q2Y2RkOTQyYThmYzBmZmZjZjY4NzllY2ExMjQyOTVlOTU5OTFiYmMjZGlmZi03OGMxMmY1YWRjMTg0OGQxM2IxYzZmMDcwNTVkOTk2ZVI1OT5cbiAgICBjb25zdCBsb2NhbGUgPSBjdHgudXJsLnNwbGl0KCcvJylbMV0uc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCBoYXNMYW5nID0gdGhpcy5jb25maWcubG9jYWxlcy5pbmNsdWRlcyhsb2NhbGUpO1xuXG4gICAgLy8gaWYgdGhlIFVSTCBkaWQgbm90IGhhdmUgYSB2YWxpZCBsYW5ndWFnZSBmb3VuZFxuICAgIC8vIHRoZW4gcmVkaXJlY3QgdGhlIHVzZXIgdG8gdGhlaXIgZGV0ZWN0ZWQgbG9jYWxlXG4gICAgaWYgKCFoYXNMYW5nKSB7XG4gICAgICBjdHguc3RhdHVzID0gMzAyO1xuICAgICAgbGV0IHJlZGlyZWN0ID0gYC8ke2N0eC5yZXF1ZXN0LmxvY2FsZX0ke2N0eC51cmx9YDtcbiAgICAgIGlmICghaXNFbXB0eShjdHgucXVlcnkpKSByZWRpcmVjdCArPSBgPyR7c3RyaW5naWZ5KGN0eC5xdWVyeSl9YDtcbiAgICAgIGRlYnVnKCdubyB2YWxpZCBsb2NhbGUgZm91bmQgaW4gVVJMLCByZWRpcmVjdGluZyB0byAlcycsIHJlZGlyZWN0KTtcbiAgICAgIHJldHVybiBjdHgucmVkaXJlY3QocmVkaXJlY3QpO1xuICAgIH1cblxuICAgIGRlYnVnKCdmb3VuZCB2YWxpZCBsYW5ndWFnZSBcIiVzXCInLCBsb2NhbGUpO1xuXG4gICAgLy8gc2V0IHRoZSBjb29raWUgZm9yIGZ1dHVyZSByZXF1ZXN0c1xuICAgIGN0eC5jb29raWVzLnNldCh0aGlzLmNvbmZpZy5jb29raWUsIGxvY2FsZSwge1xuICAgICAgLy8gRGlzYWJsZSBzaWduZWQgY29va2llcyBpbiBOT0RFX0VOVj10ZXN0XG4gICAgICBzaWduZWQ6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcsXG4gICAgICBleHBpcmVzOiBtb21lbnQoKVxuICAgICAgICAuYWRkKDEsICd5ZWFyJylcbiAgICAgICAgLnRvRGF0ZSgpXG4gICAgfSk7XG4gICAgZGVidWcoJ3NldCBjb29raWVzIGZvciBsb2NhbGUgXCIlc1wiJywgbG9jYWxlKTtcblxuICAgIC8vIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbiBhbmQgY3R4LmlzQXV0aGVudGljYXRlZCgpIGV4aXN0cyxcbiAgICAvLyB0aGVuIHNhdmUgaXQgYXMgYGxhc3RfbG9jYWxlYFxuICAgIGlmIChpc0Z1bmN0aW9uKGN0eC5pc0F1dGhlbnRpY2F0ZWQpICYmIGN0eC5pc0F1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgY3R4LnN0YXRlLnVzZXIubGFzdF9sb2NhbGUgPSBsb2NhbGU7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjdHguc3RhdGUudXNlci5zYXZlKCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyLmVycm9yKGVycik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEkxOE47XG4iXX0= |
132
package.json
{ | ||
"name": "@ladjs/i18n", | ||
"description": "i18n wrapper and Koa middleware for Lad", | ||
"version": "0.3.2", | ||
"version": "1.0.0", | ||
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com/)", | ||
"ava": { | ||
"failFast": true, | ||
"verbose": true | ||
}, | ||
"bugs": { | ||
@@ -14,34 +18,35 @@ "url": "https://github.com/ladjs/i18n/issues", | ||
"dependencies": { | ||
"auto-bind": "^1.2.0", | ||
"boolean": "^0.1.3", | ||
"boom": "5.2.0", | ||
"auto-bind": "^2.0.0", | ||
"boolean": "^0.2.0", | ||
"boom": "7.3.0", | ||
"country-language": "^0.1.7", | ||
"i18n": "^0.8.3", | ||
"i18n-locales": "^0.0.2", | ||
"lodash": "^4.17.10", | ||
"moment": "^2.22.1", | ||
"qs": "^6.5.2", | ||
"underscore.string": "^3.3.4" | ||
"lodash": "^4.17.11", | ||
"moment": "^2.23.0", | ||
"qs": "^6.6.0", | ||
"underscore.string": "^3.3.5" | ||
}, | ||
"devDependencies": { | ||
"ava": "^0.25.0", | ||
"@commitlint/cli": "^7.2.1", | ||
"@commitlint/config-conventional": "^7.1.2", | ||
"ava": "^1.0.1", | ||
"babel-cli": "^6.26.0", | ||
"babel-preset-env": "^1.7.0", | ||
"codecov": "^3.0.2", | ||
"cross-env": "^5.1.5", | ||
"debug": "^3.1.0", | ||
"eslint": "^4.19.1", | ||
"eslint-config-prettier": "^2.9.0", | ||
"eslint-plugin-prettier": "^2.6.0", | ||
"husky": "^0.14.3", | ||
"koa": "^2.5.1", | ||
"codecov": "^3.1.0", | ||
"cross-env": "^5.2.0", | ||
"debug": "^4.1.1", | ||
"eslint": "^5.12.0", | ||
"eslint-config-xo-lass": "^1.0.3", | ||
"fixpack": "^2.3.1", | ||
"husky": "^1.3.1", | ||
"koa": "^2.6.2", | ||
"koa-generic-session": "^2.0.1", | ||
"lint-staged": "^7.1.2", | ||
"nyc": "^11.8.0", | ||
"prettier": "^1.12.1", | ||
"remark-cli": "^5.0.0", | ||
"remark-preset-github": "^0.0.8", | ||
"sinon": "^5.0.7", | ||
"supertest": "^3.1.0", | ||
"xo": "^0.21.1" | ||
"lint-staged": "^8.1.0", | ||
"nyc": "^13.1.0", | ||
"remark-cli": "^6.0.1", | ||
"remark-preset-github": "^0.0.13", | ||
"sinon": "^7.2.2", | ||
"supertest": "^3.3.0", | ||
"xo": "^0.23.0" | ||
}, | ||
@@ -51,16 +56,39 @@ "engines": { | ||
}, | ||
"files": [ | ||
"lib", | ||
"locales" | ||
], | ||
"homepage": "https://github.com/ladjs/i18n", | ||
"keywords": ["@ladjs/i18n", "lass"], | ||
"husky": { | ||
"hooks": { | ||
"pre-commit": "npm test", | ||
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS" | ||
} | ||
}, | ||
"keywords": [ | ||
"@ladjs/i18n", | ||
"lass" | ||
], | ||
"license": "MIT", | ||
"lint-staged": { | ||
"*.{js,jsx,mjs,ts,tsx,css,less,scss,json,graphql}": [ | ||
"prettier --write --single-quote --trailing-comma none", | ||
"git add" | ||
], | ||
"*.md": ["remark . -qfo", "git add"] | ||
"linters": { | ||
"*.js": [ | ||
"xo --fix", | ||
"git add" | ||
], | ||
"*.md": [ | ||
"remark . -qfo", | ||
"git add" | ||
], | ||
"package.json": [ | ||
"fixpack", | ||
"git add" | ||
] | ||
} | ||
}, | ||
"main": "lib/index.js", | ||
"files": ["lib", "locales"], | ||
"remarkConfig": { | ||
"plugins": ["preset-github"] | ||
"plugins": [ | ||
"preset-github" | ||
] | ||
}, | ||
@@ -72,42 +100,16 @@ "repository": { | ||
"scripts": { | ||
"build": "node_modules/.bin/babel src --out-dir lib", | ||
"coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov", | ||
"lint": "xo && remark . -qfo", | ||
"precommit": "lint-staged && npm test", | ||
"test": "npm run build && npm run lint && npm run test-coverage", | ||
"test-coverage": "cross-env NODE_ENV=test nyc ava", | ||
"build": "node_modules/.bin/babel src --out-dir lib", | ||
"watch": "node_modules/.bin/babel src --watch --out-dir lib" | ||
}, | ||
"ava": { | ||
"failFast": true, | ||
"verbose": true | ||
}, | ||
"xo": { | ||
"extends": "prettier", | ||
"plugins": ["prettier"], | ||
"parserOptions": { | ||
"sourceType": "script" | ||
}, | ||
"rules": { | ||
"prettier/prettier": [ | ||
"error", | ||
{ | ||
"singleQuote": true, | ||
"bracketSpacing": true, | ||
"trailingComma": "none" | ||
} | ||
], | ||
"max-len": [ | ||
"error", | ||
{ | ||
"code": 80, | ||
"ignoreUrls": true | ||
} | ||
], | ||
"capitalized-comments": "off", | ||
"camelcase": "off", | ||
"no-warning-comments": "off" | ||
}, | ||
"space": true | ||
"prettier": true, | ||
"space": true, | ||
"extends": [ | ||
"xo-lass" | ||
] | ||
} | ||
} |
@@ -76,9 +76,9 @@ # [**@ladjs/i18n**](https://github.com/ladjs/i18n) | ||
* `ctx.pathWithoutLocale` - the `ctx.path` without the locale in it (this is used by [koa-meta][]) | ||
* `ctx.req` - with all of `i18n` API methods (e.g. `ctx.req.t`, `ctx.req.tn`, ...) | ||
* `ctx.locale` - set to the value of `ctx.req.locale` (the current user's locale) | ||
* `ctx.state` - with all of `i18n` API methods (e.g. `ctx.req.t`, `ctx.req.tn`, ...) | ||
* `ctx.request` - with all of `i18n` API methods (e.g. `ctx.request.t`, `ctx.request.tn`, ...) | ||
* `ctx.locale` - set to the value of `ctx.request.locale` (the current user's locale) | ||
* `ctx.state` - with all of `i18n` API methods (e.g. `ctx.request.t`, `ctx.request.tn`, ...) | ||
* `ctx.state.l` - a shorthand method that accepts a path and returns a localized path (e.g. `ctx.state.l('/contact')` will output `/en/contact` if the locale is "en") | ||
* `ctx.state.availableLanguages` (Array) - which is useful for adding a dropdown to select from an available language | ||
* `ctx.state.currentLanguage` (String) - the current locale's language in native language using [country-language][]'s `getLanguage` method. | ||
* `ctx.translate` (Function) - a helper function for calling `i18n.api.t` to translate a given phrase (same as `i18n.translate` except it throws a `ctx.throw` error using [Boom][]) | ||
* `ctx.translate` (Function) - a helper function for calling `i18n.api.t` to translate a given phrase by its property key name from the `phrases` object option (same as `i18n.translate` except it throws a `ctx.throw` error using [Boom][]) | ||
@@ -85,0 +85,0 @@ If the given locale was not available then it will redirect the user to the detected (or default/fallback) locale. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
35690
21
+ Added@types/prop-types@15.7.13(transitive)
+ Added@types/react@16.14.62(transitive)
+ Added@types/scheduler@0.16.8(transitive)
+ Addedauto-bind@2.1.1(transitive)
+ Addedboolean@0.2.0(transitive)
+ Addedboom@7.3.0(transitive)
+ Addedcsstype@3.1.3(transitive)
+ Addedhoek@6.1.3(transitive)
- Removedauto-bind@1.2.1(transitive)
- Removedboolean@0.1.3(transitive)
- Removedboom@5.2.0(transitive)
- Removedhoek@4.3.1(transitive)
Updatedauto-bind@^2.0.0
Updatedboolean@^0.2.0
Updatedboom@7.3.0
Updatedlodash@^4.17.11
Updatedmoment@^2.23.0
Updatedqs@^6.6.0
Updatedunderscore.string@^3.3.5