ngx-translate-messageformat-compiler
Advanced tools
Comparing version 4.3.0 to 4.4.0
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@ngx-translate/core'), require('messageformat')) : | ||
typeof define === 'function' && define.amd ? define('ngx-translate-messageformat-compiler', ['exports', '@angular/core', '@ngx-translate/core', 'messageformat'], factory) : | ||
(factory((global['ngx-translate-messageformat-compiler'] = {}),global.ng.core,global.core$1,global.messageformat)); | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@ngx-translate/core'), require('messageformat')) : | ||
typeof define === 'function' && define.amd ? define('ngx-translate-messageformat-compiler', ['exports', '@angular/core', '@ngx-translate/core', 'messageformat'], factory) : | ||
(factory((global['ngx-translate-messageformat-compiler'] = {}),global.ng.core,global.core$1,global.messageformat)); | ||
}(this, (function (exports,core,core$1,MessageFormat) { 'use strict'; | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
function __rest(s, e) { | ||
var t = {}; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) | ||
t[p] = s[p]; | ||
if (s != null && typeof Object.getOwnPropertySymbols === "function") | ||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) | ||
t[p[i]] = s[p[i]]; | ||
return t; | ||
} | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
function __read(o, n) { | ||
var m = typeof Symbol === "function" && o[Symbol.iterator]; | ||
if (!m) return o; | ||
var i = m.call(o), r, ar = [], e; | ||
try { | ||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = function (d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) | ||
if (b.hasOwnProperty(p)) | ||
d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
catch (error) { e = { error: error }; } | ||
finally { | ||
var __assign = function () { | ||
__assign = Object.assign || function __assign(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) | ||
if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
function __rest(s, e) { | ||
var t = {}; | ||
for (var p in s) | ||
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) | ||
t[p] = s[p]; | ||
if (s != null && typeof Object.getOwnPropertySymbols === "function") | ||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) | ||
if (e.indexOf(p[i]) < 0) | ||
t[p[i]] = s[p[i]]; | ||
return t; | ||
} | ||
function __read(o, n) { | ||
var m = typeof Symbol === "function" && o[Symbol.iterator]; | ||
if (!m) | ||
return o; | ||
var i = m.call(o), r, ar = [], e; | ||
try { | ||
if (r && !r.done && (m = i["return"])) m.call(i); | ||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) | ||
ar.push(r.value); | ||
} | ||
finally { if (e) throw e.error; } | ||
catch (error) { | ||
e = { error: error }; | ||
} | ||
finally { | ||
try { | ||
if (r && !r.done && (m = i["return"])) | ||
m.call(i); | ||
} | ||
finally { | ||
if (e) | ||
throw e.error; | ||
} | ||
} | ||
return ar; | ||
} | ||
return ar; | ||
} | ||
function __spread() { | ||
for (var ar = [], i = 0; i < arguments.length; i++) | ||
ar = ar.concat(__read(arguments[i])); | ||
return ar; | ||
} | ||
function __spread() { | ||
for (var ar = [], i = 0; i < arguments.length; i++) | ||
ar = ar.concat(__read(arguments[i])); | ||
return ar; | ||
} | ||
var MESSAGE_FORMAT_CONFIG = new core.InjectionToken("MESSAGE_FORMAT_CONFIG"); | ||
var defaultConfig = { | ||
biDiSupport: false, | ||
formatters: undefined, | ||
locales: undefined, | ||
strictNumberSign: false | ||
}; | ||
var TranslateMessageFormatCompiler = /** @class */ (function (_super) { | ||
__extends(TranslateMessageFormatCompiler, _super); | ||
function TranslateMessageFormatCompiler(config) { | ||
var _this = _super.call(this) || this; | ||
config = Object.assign({}, defaultConfig, config); | ||
_this.messageFormat = new MessageFormat(config.locales) | ||
.addFormatters(config.formatters) | ||
.setBiDiSupport(config.biDiSupport) | ||
.setStrictNumberSign(config.strictNumberSign); | ||
return _this; | ||
} | ||
TranslateMessageFormatCompiler.prototype.compile = function (value, lang) { | ||
return this.messageFormat.compile(value, lang); | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
/** @type {?} */ | ||
var MESSAGE_FORMAT_CONFIG = new core.InjectionToken("MESSAGE_FORMAT_CONFIG"); | ||
/** @type {?} */ | ||
var defaultConfig = { | ||
biDiSupport: false, | ||
formatters: undefined, | ||
locales: undefined, | ||
strictNumberSign: false | ||
}; | ||
TranslateMessageFormatCompiler.prototype.compileTranslations = function (translations, lang) { | ||
return this.messageFormat.compile(translations, lang); | ||
}; | ||
return TranslateMessageFormatCompiler; | ||
}(core$1.TranslateCompiler)); | ||
TranslateMessageFormatCompiler.ctorParameters = function () { return [ | ||
{ type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MESSAGE_FORMAT_CONFIG,] },] }, | ||
]; }; | ||
var log = function () { | ||
var message = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
message[_i] = arguments[_i]; | ||
} | ||
return console.log.apply(console, __spread([tag], message)); | ||
}; | ||
var tag = "[TranslateMessageFormatCompiler]"; | ||
var TranslateMessageFormatDebugCompiler = /** @class */ (function (_super) { | ||
__extends(TranslateMessageFormatDebugCompiler, _super); | ||
function TranslateMessageFormatDebugCompiler() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
} | ||
TranslateMessageFormatDebugCompiler.prototype.compile = function (value, lang) { | ||
log("COMPILE (" + lang + ")", value); | ||
var interpolationFn = _super.prototype.compile.call(this, value, lang); | ||
return this.wrap(interpolationFn, value); | ||
}; | ||
TranslateMessageFormatDebugCompiler.prototype.compileTranslations = function (value, lang) { | ||
log("COMPILE (" + lang + ")", value); | ||
var _a = _super.prototype.compileTranslations.call(this, value, lang), toString = _a.toString, interpolationFns = __rest(_a, ["toString"]); | ||
return Object.assign({ toString: toString }, this.wrapRecursively(interpolationFns, value)); | ||
}; | ||
TranslateMessageFormatDebugCompiler.prototype.wrap = function (fn, reference) { | ||
return function (params) { | ||
log("INTERPOLATE", reference, params); | ||
return fn(params); | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
/** | ||
* This compiler expects ICU syntax and compiles the expressions with messageformat.js | ||
*/ | ||
var TranslateMessageFormatCompiler = /** @class */ (function (_super) { | ||
__extends(TranslateMessageFormatCompiler, _super); | ||
function TranslateMessageFormatCompiler(config) { | ||
var _this = _super.call(this) || this; | ||
config = __assign({}, defaultConfig, config); | ||
_this.messageFormat = new MessageFormat(config.locales) | ||
.addFormatters(config.formatters) | ||
.setBiDiSupport(config.biDiSupport) | ||
.setStrictNumberSign(config.strictNumberSign); | ||
return _this; | ||
} | ||
/** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
TranslateMessageFormatCompiler.prototype.compile = /** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
function (value, lang) { | ||
return this.messageFormat.compile(value, lang); | ||
}; | ||
/** | ||
* @param {?} translations | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
TranslateMessageFormatCompiler.prototype.compileTranslations = /** | ||
* @param {?} translations | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
function (translations, lang) { | ||
return this.messageFormat.compile(translations, lang); | ||
}; | ||
/** @nocollapse */ | ||
TranslateMessageFormatCompiler.ctorParameters = function () { | ||
return [ | ||
{ type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MESSAGE_FORMAT_CONFIG,] }] } | ||
]; | ||
}; | ||
return TranslateMessageFormatCompiler; | ||
}(core$1.TranslateCompiler)); | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
/* tslint:disable-next-line no-console */ | ||
/** @type {?} */ | ||
var log = function () { | ||
var message = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
message[_i] = arguments[_i]; | ||
} | ||
return console.log.apply(console, __spread([tag], message)); | ||
}; | ||
TranslateMessageFormatDebugCompiler.prototype.wrapRecursively = function (obj, referenceObj) { | ||
var _this = this; | ||
return Object.keys(obj).reduce(function (acc, key) { | ||
var value = obj[key]; | ||
var referenceValue = referenceObj[key]; | ||
return typeof value === "function" | ||
? Object.assign({}, acc, (_b = {}, _b[key] = _this.wrap(value, referenceValue), _b)) : Object.assign({}, acc, (_c = {}, _c[key] = _this.wrapRecursively(value, referenceValue), _c)); | ||
var _b, _c; | ||
}, {}); | ||
}; | ||
return TranslateMessageFormatDebugCompiler; | ||
}(TranslateMessageFormatCompiler)); | ||
/** @type {?} */ | ||
var tag = "[TranslateMessageFormatCompiler]"; | ||
var TranslateMessageFormatDebugCompiler = /** @class */ (function (_super) { | ||
__extends(TranslateMessageFormatDebugCompiler, _super); | ||
function TranslateMessageFormatDebugCompiler() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
} | ||
/** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
TranslateMessageFormatDebugCompiler.prototype.compile = /** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
function (value, lang) { | ||
log("COMPILE (" + lang + ")", value); | ||
/** @type {?} */ | ||
var interpolationFn = _super.prototype.compile.call(this, value, lang); | ||
return this.wrap(interpolationFn, value); | ||
}; | ||
/** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
TranslateMessageFormatDebugCompiler.prototype.compileTranslations = /** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
function (value, lang) { | ||
log("COMPILE (" + lang + ")", value); | ||
var _a = _super.prototype.compileTranslations.call(this, value, lang), toString = _a.toString, interpolationFns = __rest(_a, ["toString"]); | ||
return __assign({ toString: toString }, this.wrapRecursively(interpolationFns, value)); | ||
}; | ||
/** | ||
* @param {?} fn | ||
* @param {?} reference | ||
* @return {?} | ||
*/ | ||
TranslateMessageFormatDebugCompiler.prototype.wrap = /** | ||
* @param {?} fn | ||
* @param {?} reference | ||
* @return {?} | ||
*/ | ||
function (fn, reference) { | ||
return function (params) { | ||
log("INTERPOLATE", reference, params); | ||
return fn(params); | ||
}; | ||
}; | ||
/** | ||
* @param {?} obj | ||
* @param {?} referenceObj | ||
* @return {?} | ||
*/ | ||
TranslateMessageFormatDebugCompiler.prototype.wrapRecursively = /** | ||
* @param {?} obj | ||
* @param {?} referenceObj | ||
* @return {?} | ||
*/ | ||
function (obj, referenceObj) { | ||
var _this = this; | ||
return Object.keys(obj).reduce(function (acc, key) { | ||
var _a, _b; | ||
/** @type {?} */ | ||
var value = obj[key]; | ||
/** @type {?} */ | ||
var referenceValue = referenceObj[key]; | ||
return typeof value === "function" | ||
? __assign({}, acc, (_a = {}, _a[key] = _this.wrap(value, referenceValue), _a)) : __assign({}, acc, (_b = {}, _b[key] = _this.wrapRecursively(value, referenceValue), _b)); | ||
}, {}); | ||
}; | ||
return TranslateMessageFormatDebugCompiler; | ||
}(TranslateMessageFormatCompiler)); | ||
exports.TranslateMessageFormatCompiler = TranslateMessageFormatCompiler; | ||
exports.TranslateMessageFormatDebugCompiler = TranslateMessageFormatDebugCompiler; | ||
exports.MESSAGE_FORMAT_CONFIG = MESSAGE_FORMAT_CONFIG; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
exports.TranslateMessageFormatCompiler = TranslateMessageFormatCompiler; | ||
exports.TranslateMessageFormatDebugCompiler = TranslateMessageFormatDebugCompiler; | ||
exports.MESSAGE_FORMAT_CONFIG = MESSAGE_FORMAT_CONFIG; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
}))); | ||
//# sourceMappingURL=ngx-translate-messageformat-compiler.umd.js.map | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRyYW5zbGF0ZS1tZXNzYWdlZm9ybWF0LWNvbXBpbGVyLnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCJuZzovL25neC10cmFuc2xhdGUtbWVzc2FnZWZvcm1hdC1jb21waWxlci9tZXNzYWdlLWZvcm1hdC1jb25maWcudHMiLCJuZzovL25neC10cmFuc2xhdGUtbWVzc2FnZWZvcm1hdC1jb21waWxlci90cmFuc2xhdGUtbWVzc2FnZS1mb3JtYXQtY29tcGlsZXIudHMiLCJuZzovL25neC10cmFuc2xhdGUtbWVzc2FnZWZvcm1hdC1jb21waWxlci90cmFuc2xhdGUtbWVzc2FnZS1mb3JtYXQtZGVidWctY29tcGlsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcclxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcclxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcclxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxyXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxyXG5cclxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXHJcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIGlmIChlLmluZGV4T2YocFtpXSkgPCAwKVxyXG4gICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHJlc3VsdC52YWx1ZSk7IH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIGV4cG9ydHMpIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xyXG4gICAgcmVzdWx0LmRlZmF1bHQgPSBtb2Q7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG4iLCJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0ZPUk1BVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWVzc2FnZUZvcm1hdENvbmZpZz4oXG4gIFwiTUVTU0FHRV9GT1JNQVRfQ09ORklHXCJcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZvcm1hdENvbmZpZyB7XG4gIGJpRGlTdXBwb3J0PzogYm9vbGVhbjtcbiAgZm9ybWF0dGVycz86IHtcbiAgICBbbmFtZTogc3RyaW5nXTogKHZhbDogYW55LCBsYzogc3RyaW5nLCBhcmc/OiBzdHJpbmcpID0+IHN0cmluZztcbiAgfTtcbiAgbG9jYWxlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzdHJpY3ROdW1iZXJTaWduPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWc6IE1lc3NhZ2VGb3JtYXRDb25maWcgPSB7XG4gIGJpRGlTdXBwb3J0OiBmYWxzZSxcbiAgZm9ybWF0dGVyczogdW5kZWZpbmVkLFxuICBsb2NhbGVzOiB1bmRlZmluZWQsXG4gIHN0cmljdE51bWJlclNpZ246IGZhbHNlXG59O1xuIiwiaW1wb3J0IHsgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVDb21waWxlciB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgKiBhcyBNZXNzYWdlRm9ybWF0IGZyb20gXCJtZXNzYWdlZm9ybWF0XCI7XG5cbmltcG9ydCB7XG4gIGRlZmF1bHRDb25maWcsXG4gIE1FU1NBR0VfRk9STUFUX0NPTkZJRyxcbiAgTWVzc2FnZUZvcm1hdENvbmZpZ1xufSBmcm9tIFwiLi9tZXNzYWdlLWZvcm1hdC1jb25maWdcIjtcblxuLyoqXG4gKiBUaGlzIGNvbXBpbGVyIGV4cGVjdHMgSUNVIHN5bnRheCBhbmQgY29tcGlsZXMgdGhlIGV4cHJlc3Npb25zIHdpdGggbWVzc2FnZWZvcm1hdC5qc1xuICovXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTWVzc2FnZUZvcm1hdENvbXBpbGVyIGV4dGVuZHMgVHJhbnNsYXRlQ29tcGlsZXIge1xuICBwcml2YXRlIG1lc3NhZ2VGb3JtYXQ6IE1lc3NhZ2VGb3JtYXQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1FU1NBR0VfRk9STUFUX0NPTkZJRylcbiAgICBjb25maWc/OiBNZXNzYWdlRm9ybWF0Q29uZmlnXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25maWcgPSB7IC4uLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xuXG4gICAgdGhpcy5tZXNzYWdlRm9ybWF0ID0gbmV3IE1lc3NhZ2VGb3JtYXQoY29uZmlnLmxvY2FsZXMpXG4gICAgICAuYWRkRm9ybWF0dGVycyhjb25maWcuZm9ybWF0dGVycylcbiAgICAgIC5zZXRCaURpU3VwcG9ydChjb25maWcuYmlEaVN1cHBvcnQpXG4gICAgICAuc2V0U3RyaWN0TnVtYmVyU2lnbihjb25maWcuc3RyaWN0TnVtYmVyU2lnbik7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSh2YWx1ZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiAocGFyYW1zOiBhbnkpID0+IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHZhbHVlLCBsYW5nKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21waWxlVHJhbnNsYXRpb25zKHRyYW5zbGF0aW9uczogYW55LCBsYW5nOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0cmFuc2xhdGlvbnMsIGxhbmcpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBUcmFuc2xhdGVNZXNzYWdlRm9ybWF0Q29tcGlsZXIgfSBmcm9tIFwiLi90cmFuc2xhdGUtbWVzc2FnZS1mb3JtYXQtY29tcGlsZXJcIjtcblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgKi9cbmNvbnN0IGxvZyA9ICguLi5tZXNzYWdlOiBzdHJpbmdbXSkgPT4gY29uc29sZS5sb2codGFnLCAuLi5tZXNzYWdlKTtcbmNvbnN0IHRhZyA9IFwiW1RyYW5zbGF0ZU1lc3NhZ2VGb3JtYXRDb21waWxlcl1cIjtcblxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZU1lc3NhZ2VGb3JtYXREZWJ1Z0NvbXBpbGVyIGV4dGVuZHMgVHJhbnNsYXRlTWVzc2FnZUZvcm1hdENvbXBpbGVyIHtcbiAgcHVibGljIGNvbXBpbGUodmFsdWU6IHN0cmluZywgbGFuZzogc3RyaW5nKTogKHBhcmFtczogYW55KSA9PiBzdHJpbmcge1xuICAgIGxvZyhgQ09NUElMRSAoJHtsYW5nfSlgLCB2YWx1ZSk7XG4gICAgY29uc3QgaW50ZXJwb2xhdGlvbkZuID0gc3VwZXIuY29tcGlsZSh2YWx1ZSwgbGFuZyk7XG5cbiAgICByZXR1cm4gdGhpcy53cmFwKGludGVycG9sYXRpb25GbiwgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGVUcmFuc2xhdGlvbnModmFsdWU6IGFueSwgbGFuZzogc3RyaW5nKTogYW55IHtcbiAgICBsb2coYENPTVBJTEUgKCR7bGFuZ30pYCwgdmFsdWUpO1xuICAgIGNvbnN0IHsgdG9TdHJpbmcsIC4uLmludGVycG9sYXRpb25GbnMgfSA9IHN1cGVyLmNvbXBpbGVUcmFuc2xhdGlvbnMoXG4gICAgICB2YWx1ZSxcbiAgICAgIGxhbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgdG9TdHJpbmcsIC4uLnRoaXMud3JhcFJlY3Vyc2l2ZWx5KGludGVycG9sYXRpb25GbnMsIHZhbHVlKSB9O1xuICB9XG5cbiAgcHJpdmF0ZSB3cmFwKFxuICAgIGZuOiAocGFyYW1zOiBhbnkpID0+IHN0cmluZyxcbiAgICByZWZlcmVuY2U6IHN0cmluZ1xuICApOiAocGFyYW1zOiBhbnkpID0+IHN0cmluZyB7XG4gICAgcmV0dXJuIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgbG9nKFwiSU5URVJQT0xBVEVcIiwgcmVmZXJlbmNlLCBwYXJhbXMpO1xuICAgICAgcmV0dXJuIGZuKHBhcmFtcyk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgd3JhcFJlY3Vyc2l2ZWx5KG9iajogYW55LCByZWZlcmVuY2VPYmo6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgICBjb25zdCByZWZlcmVuY2VWYWx1ZSA9IHJlZmVyZW5jZU9ialtrZXldO1xuXG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgPyB7IC4uLmFjYywgW2tleV06IHRoaXMud3JhcCh2YWx1ZSwgcmVmZXJlbmNlVmFsdWUpIH1cbiAgICAgICAgOiB7IC4uLmFjYywgW2tleV06IHRoaXMud3JhcFJlY3Vyc2l2ZWx5KHZhbHVlLCByZWZlcmVuY2VWYWx1ZSkgfTtcbiAgICB9LCB7fSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJJbmplY3Rpb25Ub2tlbiIsInRzbGliXzEuX19leHRlbmRzIiwiT3B0aW9uYWwiLCJJbmplY3QiLCJUcmFuc2xhdGVDb21waWxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7O0lBY0E7SUFFQSxJQUFJLGFBQWEsR0FBRyxVQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYzthQUNoQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RSxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQUUsQ0FBQyxDQUFDLENBQUMs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 |
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@ngx-translate/core"),require("messageformat")):"function"==typeof define&&define.amd?define("ngx-translate-messageformat-compiler",["exports","@angular/core","@ngx-translate/core","messageformat"],e):e(t["ngx-translate-messageformat-compiler"]={},t.ng.core,t.core$1,t.messageformat)}(this,function(t,e,r,o){"use strict";var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};function i(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}function a(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var o,n,a=r.call(t),i=[];try{for(;(void 0===e||0<e--)&&!(o=a.next()).done;)i.push(o.value)}catch(s){n={error:s}}finally{try{o&&!o.done&&(r=a["return"])&&r.call(a)}finally{if(n)throw n.error}}return i}var s=new e.InjectionToken("MESSAGE_FORMAT_CONFIG"),c={biDiSupport:!1,formatters:undefined,locales:undefined,strictNumberSign:!1},p=function(r){function t(t){var e=r.call(this)||this;return t=Object.assign({},c,t),e.messageFormat=new o(t.locales).addFormatters(t.formatters).setBiDiSupport(t.biDiSupport).setStrictNumberSign(t.strictNumberSign),e}return i(t,r),t.prototype.compile=function(t,e){return this.messageFormat.compile(t,e)},t.prototype.compileTranslations=function(t,e){return this.messageFormat.compile(t,e)},t}(r.TranslateCompiler);p.ctorParameters=function(){return[{type:undefined,decorators:[{type:e.Optional},{type:e.Inject,args:[s]}]}]};var u=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return console.log.apply(console,function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t}([l],t))},l="[TranslateMessageFormatCompiler]",f=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return i(t,a),t.prototype.compile=function(t,e){u("COMPILE ("+e+")",t);var r=a.prototype.compile.call(this,t,e);return this.wrap(r,t)},t.prototype.compileTranslations=function(t,e){u("COMPILE ("+e+")",t);var r=a.prototype.compileTranslations.call(this,t,e),o=r.toString,n=function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(t);n<o.length;n++)e.indexOf(o[n])<0&&(r[o[n]]=t[o[n]])}return r}(r,["toString"]);return Object.assign({toString:o},this.wrapRecursively(n,t))},t.prototype.wrap=function(e,r){return function(t){return u("INTERPOLATE",r,t),e(t)}},t.prototype.wrapRecursively=function(i,s){var c=this;return Object.keys(i).reduce(function(t,e){var r,o,n=i[e],a=s[e];return"function"==typeof n?Object.assign({},t,((r={})[e]=c.wrap(n,a),r)):Object.assign({},t,((o={})[e]=c.wrapRecursively(n,a),o))},{})},t}(p);t.TranslateMessageFormatCompiler=p,t.TranslateMessageFormatDebugCompiler=f,t.MESSAGE_FORMAT_CONFIG=s,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=ngx-translate-messageformat-compiler.umd.min.js.map | ||
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/core"),require("@ngx-translate/core"),require("messageformat")):"function"==typeof define&&define.amd?define("ngx-translate-messageformat-compiler",["exports","@angular/core","@ngx-translate/core","messageformat"],r):r(t["ngx-translate-messageformat-compiler"]={},t.ng.core,t.core$1,t.messageformat)}(this,function(t,r,e,o){"use strict";var n=function(t,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)r.hasOwnProperty(e)&&(t[e]=r[e])})(t,r)};function a(t,r){function e(){this.constructor=t}n(t,r),t.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}var u=function(){return(u=Object.assign||function(t){for(var r,e=1,o=arguments.length;e<o;e++)for(var n in r=arguments[e])Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}).apply(this,arguments)};function i(t,r){var e="function"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var o,n,a=e.call(t),i=[];try{for(;(void 0===r||0<r--)&&!(o=a.next()).done;)i.push(o.value)}catch(c){n={error:c}}finally{try{o&&!o.done&&(e=a["return"])&&e.call(a)}finally{if(n)throw n.error}}return i}var c=new r.InjectionToken("MESSAGE_FORMAT_CONFIG"),s={biDiSupport:!1,formatters:undefined,locales:undefined,strictNumberSign:!1},p=function(e){function t(t){var r=e.call(this)||this;return t=u({},s,t),r.messageFormat=new o(t.locales).addFormatters(t.formatters).setBiDiSupport(t.biDiSupport).setStrictNumberSign(t.strictNumberSign),r}return a(t,e),t.prototype.compile=function(t,r){return this.messageFormat.compile(t,r)},t.prototype.compileTranslations=function(t,r){return this.messageFormat.compile(t,r)},t.ctorParameters=function(){return[{type:undefined,decorators:[{type:r.Optional},{type:r.Inject,args:[c]}]}]},t}(e.TranslateCompiler),l=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return console.log.apply(console,function e(){for(var t=[],r=0;r<arguments.length;r++)t=t.concat(i(arguments[r]));return t}([f],t))},f="[TranslateMessageFormatCompiler]",m=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return a(t,i),t.prototype.compile=function(t,r){l("COMPILE ("+r+")",t);var e=i.prototype.compile.call(this,t,r);return this.wrap(e,t)},t.prototype.compileTranslations=function(t,r){l("COMPILE ("+r+")",t);var e=i.prototype.compileTranslations.call(this,t,r),o=e.toString,n=function a(t,r){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&r.indexOf(o)<0&&(e[o]=t[o]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(t);n<o.length;n++)r.indexOf(o[n])<0&&(e[o[n]]=t[o[n]])}return e}(e,["toString"]);return u({toString:o},this.wrapRecursively(n,t))},t.prototype.wrap=function(r,e){return function(t){return l("INTERPOLATE",e,t),r(t)}},t.prototype.wrapRecursively=function(i,c){var s=this;return Object.keys(i).reduce(function(t,r){var e,o,n=i[r],a=c[r];return u({},t,"function"==typeof n?((e={})[r]=s.wrap(n,a),e):((o={})[r]=s.wrapRecursively(n,a),o))},{})},t}(p);t.TranslateMessageFormatCompiler=p,t.TranslateMessageFormatDebugCompiler=m,t.MESSAGE_FORMAT_CONFIG=c,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=ngx-translate-messageformat-compiler.umd.min.js.map |
@@ -1,131 +0,9 @@ | ||
import { InjectionToken, Inject, Optional } from '@angular/core'; | ||
import { TranslateCompiler } from '@ngx-translate/core'; | ||
import * as MessageFormat from 'messageformat'; | ||
import { __rest } from 'tslib'; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
const MESSAGE_FORMAT_CONFIG = new InjectionToken("MESSAGE_FORMAT_CONFIG"); | ||
/** | ||
* @record | ||
*/ | ||
const defaultConfig = { | ||
biDiSupport: false, | ||
formatters: undefined, | ||
locales: undefined, | ||
strictNumberSign: false | ||
}; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
*/ | ||
/** | ||
* This compiler expects ICU syntax and compiles the expressions with messageformat.js | ||
*/ | ||
class TranslateMessageFormatCompiler extends TranslateCompiler { | ||
/** | ||
* @param {?=} config | ||
*/ | ||
constructor(config) { | ||
super(); | ||
config = Object.assign({}, defaultConfig, config); | ||
this.messageFormat = new MessageFormat(config.locales) | ||
.addFormatters(config.formatters) | ||
.setBiDiSupport(config.biDiSupport) | ||
.setStrictNumberSign(config.strictNumberSign); | ||
} | ||
/** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
compile(value, lang) { | ||
return this.messageFormat.compile(value, lang); | ||
} | ||
/** | ||
* @param {?} translations | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
compileTranslations(translations, lang) { | ||
return this.messageFormat.compile(translations, lang); | ||
} | ||
} | ||
/** @nocollapse */ | ||
TranslateMessageFormatCompiler.ctorParameters = () => [ | ||
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MESSAGE_FORMAT_CONFIG,] },] }, | ||
]; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
*/ | ||
/* tslint:disable-next-line no-console */ | ||
const log = (...message) => console.log(tag, ...message); | ||
const tag = "[TranslateMessageFormatCompiler]"; | ||
class TranslateMessageFormatDebugCompiler extends TranslateMessageFormatCompiler { | ||
/** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
compile(value, lang) { | ||
log(`COMPILE (${lang})`, value); | ||
const /** @type {?} */ interpolationFn = super.compile(value, lang); | ||
return this.wrap(interpolationFn, value); | ||
} | ||
/** | ||
* @param {?} value | ||
* @param {?} lang | ||
* @return {?} | ||
*/ | ||
compileTranslations(value, lang) { | ||
log(`COMPILE (${lang})`, value); | ||
const _a = super.compileTranslations(value, lang), { toString } = _a, interpolationFns = __rest(_a, ["toString"]); | ||
return Object.assign({ toString }, this.wrapRecursively(interpolationFns, value)); | ||
} | ||
/** | ||
* @param {?} fn | ||
* @param {?} reference | ||
* @return {?} | ||
*/ | ||
wrap(fn, reference) { | ||
return (params) => { | ||
log("INTERPOLATE", reference, params); | ||
return fn(params); | ||
}; | ||
} | ||
/** | ||
* @param {?} obj | ||
* @param {?} referenceObj | ||
* @return {?} | ||
*/ | ||
wrapRecursively(obj, referenceObj) { | ||
return Object.keys(obj).reduce((acc, key) => { | ||
const /** @type {?} */ value = obj[key]; | ||
const /** @type {?} */ referenceValue = referenceObj[key]; | ||
return typeof value === "function" | ||
? Object.assign({}, acc, { [key]: this.wrap(value, referenceValue) }) : Object.assign({}, acc, { [key]: this.wrapRecursively(value, referenceValue) }); | ||
}, {}); | ||
} | ||
} | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
*/ | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
*/ | ||
/** | ||
* Generated bundle index. Do not edit. | ||
*/ | ||
export { TranslateMessageFormatCompiler, TranslateMessageFormatDebugCompiler, MESSAGE_FORMAT_CONFIG }; | ||
//# sourceMappingURL=ngx-translate-messageformat-compiler.js.map | ||
export { TranslateMessageFormatCompiler, TranslateMessageFormatDebugCompiler, MESSAGE_FORMAT_CONFIG } from './index'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRyYW5zbGF0ZS1tZXNzYWdlZm9ybWF0LWNvbXBpbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXRyYW5zbGF0ZS1tZXNzYWdlZm9ybWF0LWNvbXBpbGVyLyIsInNvdXJjZXMiOlsibmd4LXRyYW5zbGF0ZS1tZXNzYWdlZm9ybWF0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwyR0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19 |
@@ -1,78 +0,9 @@ | ||
import { __rest, __extends, __spread } from 'tslib'; | ||
import { InjectionToken, Inject, Optional } from '@angular/core'; | ||
import { TranslateCompiler } from '@ngx-translate/core'; | ||
import * as MessageFormat from 'messageformat'; | ||
var MESSAGE_FORMAT_CONFIG = new InjectionToken("MESSAGE_FORMAT_CONFIG"); | ||
var defaultConfig = { | ||
biDiSupport: false, | ||
formatters: undefined, | ||
locales: undefined, | ||
strictNumberSign: false | ||
}; | ||
var TranslateMessageFormatCompiler = /** @class */ (function (_super) { | ||
__extends(TranslateMessageFormatCompiler, _super); | ||
function TranslateMessageFormatCompiler(config) { | ||
var _this = _super.call(this) || this; | ||
config = Object.assign({}, defaultConfig, config); | ||
_this.messageFormat = new MessageFormat(config.locales) | ||
.addFormatters(config.formatters) | ||
.setBiDiSupport(config.biDiSupport) | ||
.setStrictNumberSign(config.strictNumberSign); | ||
return _this; | ||
} | ||
TranslateMessageFormatCompiler.prototype.compile = function (value, lang) { | ||
return this.messageFormat.compile(value, lang); | ||
}; | ||
TranslateMessageFormatCompiler.prototype.compileTranslations = function (translations, lang) { | ||
return this.messageFormat.compile(translations, lang); | ||
}; | ||
return TranslateMessageFormatCompiler; | ||
}(TranslateCompiler)); | ||
TranslateMessageFormatCompiler.ctorParameters = function () { return [ | ||
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MESSAGE_FORMAT_CONFIG,] },] }, | ||
]; }; | ||
var log = function () { | ||
var message = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
message[_i] = arguments[_i]; | ||
} | ||
return console.log.apply(console, __spread([tag], message)); | ||
}; | ||
var tag = "[TranslateMessageFormatCompiler]"; | ||
var TranslateMessageFormatDebugCompiler = /** @class */ (function (_super) { | ||
__extends(TranslateMessageFormatDebugCompiler, _super); | ||
function TranslateMessageFormatDebugCompiler() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
} | ||
TranslateMessageFormatDebugCompiler.prototype.compile = function (value, lang) { | ||
log("COMPILE (" + lang + ")", value); | ||
var interpolationFn = _super.prototype.compile.call(this, value, lang); | ||
return this.wrap(interpolationFn, value); | ||
}; | ||
TranslateMessageFormatDebugCompiler.prototype.compileTranslations = function (value, lang) { | ||
log("COMPILE (" + lang + ")", value); | ||
var _a = _super.prototype.compileTranslations.call(this, value, lang), toString = _a.toString, interpolationFns = __rest(_a, ["toString"]); | ||
return Object.assign({ toString: toString }, this.wrapRecursively(interpolationFns, value)); | ||
}; | ||
TranslateMessageFormatDebugCompiler.prototype.wrap = function (fn, reference) { | ||
return function (params) { | ||
log("INTERPOLATE", reference, params); | ||
return fn(params); | ||
}; | ||
}; | ||
TranslateMessageFormatDebugCompiler.prototype.wrapRecursively = function (obj, referenceObj) { | ||
var _this = this; | ||
return Object.keys(obj).reduce(function (acc, key) { | ||
var value = obj[key]; | ||
var referenceValue = referenceObj[key]; | ||
return typeof value === "function" | ||
? Object.assign({}, acc, (_b = {}, _b[key] = _this.wrap(value, referenceValue), _b)) : Object.assign({}, acc, (_c = {}, _c[key] = _this.wrapRecursively(value, referenceValue), _c)); | ||
var _b, _c; | ||
}, {}); | ||
}; | ||
return TranslateMessageFormatDebugCompiler; | ||
}(TranslateMessageFormatCompiler)); | ||
export { TranslateMessageFormatCompiler, TranslateMessageFormatDebugCompiler, MESSAGE_FORMAT_CONFIG }; | ||
//# sourceMappingURL=ngx-translate-messageformat-compiler.js.map | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
/** | ||
* Generated bundle index. Do not edit. | ||
*/ | ||
export { TranslateMessageFormatCompiler, TranslateMessageFormatDebugCompiler, MESSAGE_FORMAT_CONFIG } from './index'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRyYW5zbGF0ZS1tZXNzYWdlZm9ybWF0LWNvbXBpbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXRyYW5zbGF0ZS1tZXNzYWdlZm9ybWF0LWNvbXBpbGVyLyIsInNvdXJjZXMiOlsibmd4LXRyYW5zbGF0ZS1tZXNzYWdlZm9ybWF0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwyR0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19 |
{ | ||
"$schema": "./node_modules/ng-packagr/package.schema.json", | ||
"name": "ngx-translate-messageformat-compiler", | ||
"version": "4.3.0", | ||
"version": "4.4.0", | ||
"description": "Compiler for ngx-translate that uses messageformat.js to compile translations using ICU syntax for handling pluralization and gender", | ||
@@ -29,41 +29,45 @@ "repository": { | ||
"main": "bundles/ngx-translate-messageformat-compiler.umd.js", | ||
"module": "esm5/ngx-translate-messageformat-compiler.js", | ||
"module": "fesm5/ngx-translate-messageformat-compiler.js", | ||
"typings": "ngx-translate-messageformat-compiler.d.ts", | ||
"peerDependencies": { | ||
"@angular/core": "^6.0.0", | ||
"@ngx-translate/core": "^10.0.0", | ||
"messageformat": "^2.0.0" | ||
"@angular/core": "^6.0.0 || ^7.0.0", | ||
"@ngx-translate/core": "^10.0.0 || ^11.0.0", | ||
"messageformat": ">=2.0.0 <=2.0.2 || >2.0.4 <3.0.0" | ||
}, | ||
"devDependencies": { | ||
"@angular/compiler": "^6.0.0", | ||
"@angular/compiler-cli": "^6.0.0", | ||
"@angular/core": "^6.0.0", | ||
"@ngx-translate/core": "^10.0.0", | ||
"@types/jasmine": "2.8.7", | ||
"jasmine-core": "^3.1.0", | ||
"karma": "^2.0.2", | ||
"@angular/compiler": "^7.0.0", | ||
"@angular/compiler-cli": "^7.0.0", | ||
"@angular/core": "^7.0.0", | ||
"@ngx-translate/core": "^11.0.0", | ||
"@types/jasmine": "2.8.9", | ||
"jasmine-core": "^3.2.1", | ||
"karma": "^3.0.0", | ||
"karma-chrome-launcher": "^2.2.0", | ||
"karma-jasmine": "^1.1.0", | ||
"karma-webpack": "^3.0.0", | ||
"messageformat": "^2.0.2", | ||
"ng-packagr": "^2.4.2", | ||
"karma-webpack": ">=4.0.0-rc.0 <=5.0.0", | ||
"messageformat": "2.0.2", | ||
"ng-packagr": "^4.4.0", | ||
"npm-run-all": "^4.1.3", | ||
"prettier": "^1.12.1", | ||
"prettier": "^1.14.3", | ||
"reflect-metadata": "^0.1.10", | ||
"rimraf": "^2.6.2", | ||
"rxjs": "^6.1.0", | ||
"rxjs": "^6.3.3", | ||
"tar": "^4.4.6", | ||
"ts-loader": "^4.2.0", | ||
"tsickle": "^0.27.5", | ||
"tslib": "^1.9.0", | ||
"tslint": "^5.7.0", | ||
"tslint-config-prettier": "^1.12.0", | ||
"tslint-loader": "^3.5.3", | ||
"typescript": "~2.7.0", | ||
"webpack": "^4.6.0", | ||
"webpack-cli": "^2.1.2", | ||
"ts-loader": "^5.2.2", | ||
"tsickle": "^0.33.0", | ||
"tslib": "^1.9.3", | ||
"tslint": "^5.11.0", | ||
"tslint-config-prettier": "^1.15.0", | ||
"typescript": "~3.1.1", | ||
"webpack": "^4.22.0", | ||
"webpack-cli": "^3.1.2", | ||
"zone.js": "^0.8.17" | ||
}, | ||
"es2015": "esm2015/ngx-translate-messageformat-compiler.js", | ||
"es2015": "fesm2015/ngx-translate-messageformat-compiler.js", | ||
"esm5": "esm5/ngx-translate-messageformat-compiler.js", | ||
"esm2015": "esm2015/ngx-translate-messageformat-compiler.js", | ||
"fesm5": "fesm5/ngx-translate-messageformat-compiler.js", | ||
"fesm2015": "fesm2015/ngx-translate-messageformat-compiler.js", | ||
"metadata": "ngx-translate-messageformat-compiler.metadata.json", | ||
"sideEffects": false, | ||
"dependencies": { | ||
@@ -70,0 +74,0 @@ "tslib": "^1.9.0" |
@@ -5,2 +5,6 @@ # ngx-translate-messageformat-compiler | ||
**[Example App](https://stackblitz.com/edit/ngx-translate-messageformat-compiler-example)** (StackBlitz) | ||
## Table of Contents | ||
* [Installation](#installation) | ||
@@ -24,2 +28,4 @@ * [Setup](#setup) | ||
Something to be aware of if you deploy to strict production environments: [Fundamentally, messageformat is a compiler that turns ICU MessageFormat input into JavaScript.](https://messageformat.github.io/messageformat/page-build) This means it uses `new Function` under the hood which necessicates allowing `unsafe-eval` for the [`script-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src) Content Security Policy (CSP). | ||
## Setup | ||
@@ -72,2 +78,3 @@ | ||
biDiSupport: false, | ||
formatters: undefined, | ||
locales: undefined, | ||
@@ -74,0 +81,0 @@ strictNumberSign: false |
@@ -5,4 +5,4 @@ import { TranslateMessageFormatCompiler } from "./translate-message-format-compiler"; | ||
compileTranslations(value: any, lang: string): any; | ||
private wrap(fn, reference); | ||
private wrapRecursively(obj, referenceObj); | ||
private wrap; | ||
private wrapRecursively; | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
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
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
155068
27
27
944
187