+ el[key] = '';
+ el.removeAttribute(key);
+ return;
+ }
+ else if (type === 'number') {
+ // e.g.
![]()
+ el[key] = 0;
+ el.removeAttribute(key);
+ return;
}
}
+ // some properties perform value validation and throw
+ try {
+ el[key] = value;
+ }
+ catch (e) {
+ }
}
// Async edge case fix requires storing an event listener's attach timestamp.
@@ -4961,12 +5227,17 @@ const getModelAssigner = (vnode) => {
return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;
};
const vModelSelect = {
- created(el, binding, vnode) {
+ created(el, { value, modifiers: { number } }, vnode) {
+ const isSetModel = isSet(value);
addEventListener(el, 'change', () => {
const selectedVal = Array.prototype.filter
.call(el.options, (o) => o.selected)
- .map(getValue);
- el._assign(el.multiple ? selectedVal : selectedVal[0]);
+ .map((o) => number ? toNumber(getValue(o)) : getValue(o));
+ el._assign(el.multiple
+ ? isSetModel
+ ? new Set(selectedVal)
+ : selectedVal
+ : selectedVal[0]);
});
el._assign = getModelAssigner(vnode);
},
@@ -4984,14 +5255,19 @@ const vModelSelect = {
};
function setSelected(el, value) {
const isMultiple = el.multiple;
- if (isMultiple && !isArray(value)) {
+ if (isMultiple && !isArray(value) && !isSet(value)) {
return;
}
for (let i = 0, l = el.options.length; i < l; i++) {
const option = el.options[i];
const optionValue = getValue(option);
if (isMultiple) {
- option.selected = looseIndexOf(value, optionValue) > -1;
+ if (isArray(value)) {
+ option.selected = looseIndexOf(value, optionValue) > -1;
+ }
+ else {
+ option.selected = value.has(optionValue);
+ }
}
else {
if (looseEqual(getValue(option), value)) {
@@ -5045,11 +5321,16 @@ function normalizeContainer(container) {
}
/*!
- * vue-i18n v9.0.0-beta.1
+ * vue-i18n v9.0.0-beta.10
* (c) 2020 kazuya kawaguchi
* Released under the MIT License.
*/
+const hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';
+/** @internal */
+const makeSymbol = (name) => hasSymbol ? Symbol(name) : name;
+/** @internal */
const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });
+/** @internal */
const friendlyJSONstringify = (json) => JSON.stringify(json)
.replace(/\u2028/g, '\\u2028')
.replace(/\u2029/g, '\\u2029')
@@ -5061,6 +5342,7 @@ const isEmptyObject = (val) => isPlainObject$1(val) && Object.keys(val).length =
function warn$1(msg, err) {
if (typeof console !== 'undefined') {
console.warn('[vue-i18n] ' + msg);
+ /* istanbul ignore if */
if (err) {
console.warn(err.stack);
}
@@ -5068,6 +5350,7 @@ function warn$1(msg, err) {
}
let _globalThis$1;
const getGlobalThis$1 = () => {
+ // prettier-ignore
return (_globalThis$1 ||
(_globalThis$1 =
typeof globalThis !== 'undefined'
@@ -5080,14 +5363,31 @@ const getGlobalThis$1 = () => {
? global
: {}));
};
+function escapeHtml(rawText) {
+ return rawText
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''');
+}
+/* eslint-enable */
+/**
+ * Useful Utilites By Evan you
+ * Modified by kazuya kawaguchi
+ * MIT License
+ * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts
+ * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts
+ */
const isArray$1 = Array.isArray;
const isFunction$1 = (val) => typeof val === 'function';
const isString$1 = (val) => typeof val === 'string';
const isBoolean = (val) => typeof val === 'boolean';
-const isObject$1 = (val) => val !== null && typeof val === 'object';
+const isObject$1 = (val) => // eslint-disable-line
+ val !== null && typeof val === 'object';
const objectToString$1 = Object.prototype.toString;
const toTypeString$1 = (value) => objectToString$1.call(value);
const isPlainObject$1 = (val) => toTypeString$1(val) === '[object Object]';
+// for converting list and named values to displayed strings.
const toDisplayString$1 = (val) => {
return val == null
? ''
@@ -5095,7 +5395,395 @@ const toDisplayString$1 = (val) => {
? JSON.stringify(val, null, 2)
: String(val);
};
+
+var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+function createCommonjsModule(fn, basedir, module) {
+ return module = {
+ path: basedir,
+ exports: {},
+ require: function (path, base) {
+ return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
+ }
+ }, fn(module, module.exports), module.exports;
+}
+
+function commonjsRequire () {
+ throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
+}
+
+var env = createCommonjsModule(function (module, exports) {
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.hook = exports.target = exports.isBrowser = void 0;
+exports.isBrowser = typeof navigator !== 'undefined';
+exports.target = exports.isBrowser
+ ? window
+ : typeof commonjsGlobal !== 'undefined'
+ ? commonjsGlobal
+ : {};
+exports.hook = exports.target.__VUE_DEVTOOLS_GLOBAL_HOOK__;
+
+});
+
+var _const = createCommonjsModule(function (module, exports) {
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ApiHookEvents = void 0;
+var ApiHookEvents;
+(function (ApiHookEvents) {
+ ApiHookEvents["SETUP_DEVTOOLS_PLUGIN"] = "devtools-plugin:setup";
+})(ApiHookEvents = exports.ApiHookEvents || (exports.ApiHookEvents = {}));
+
+});
+
+var api = createCommonjsModule(function (module, exports) {
+Object.defineProperty(exports, "__esModule", { value: true });
+
+});
+
+var app = createCommonjsModule(function (module, exports) {
+Object.defineProperty(exports, "__esModule", { value: true });
+
+});
+
+var component = createCommonjsModule(function (module, exports) {
+Object.defineProperty(exports, "__esModule", { value: true });
+
+});
+
+var context = createCommonjsModule(function (module, exports) {
+Object.defineProperty(exports, "__esModule", { value: true });
+
+});
+
+var hooks = createCommonjsModule(function (module, exports) {
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Hooks = void 0;
+var Hooks;
+(function (Hooks) {
+ Hooks["TRANSFORM_CALL"] = "transformCall";
+ Hooks["GET_APP_RECORD_NAME"] = "getAppRecordName";
+ Hooks["GET_APP_ROOT_INSTANCE"] = "getAppRootInstance";
+ Hooks["REGISTER_APPLICATION"] = "registerApplication";
+ Hooks["WALK_COMPONENT_TREE"] = "walkComponentTree";
+ Hooks["WALK_COMPONENT_PARENTS"] = "walkComponentParents";
+ Hooks["INSPECT_COMPONENT"] = "inspectComponent";
+ Hooks["GET_COMPONENT_BOUNDS"] = "getComponentBounds";
+ Hooks["GET_COMPONENT_NAME"] = "getComponentName";
+ Hooks["GET_ELEMENT_COMPONENT"] = "getElementComponent";
+ Hooks["GET_INSPECTOR_TREE"] = "getInspectorTree";
+ Hooks["GET_INSPECTOR_STATE"] = "getInspectorState";
+})(Hooks = exports.Hooks || (exports.Hooks = {}));
+
+});
+
+var api$1 = createCommonjsModule(function (module, exports) {
+var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(api, exports);
+__exportStar(app, exports);
+__exportStar(component, exports);
+__exportStar(context, exports);
+__exportStar(hooks, exports);
+
+});
+
+var lib = createCommonjsModule(function (module, exports) {
+var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupDevtoolsPlugin = void 0;
+
+
+__exportStar(api$1, exports);
+function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
+ if (env.hook) {
+ env.hook.emit(_const.ApiHookEvents.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn);
+ }
+ else {
+ const list = env.target.__VUE_DEVTOOLS_PLUGINS__ = env.target.__VUE_DEVTOOLS_PLUGINS__ || [];
+ list.push({
+ pluginDescriptor,
+ setupFn
+ });
+ }
+}
+exports.setupDevtoolsPlugin = setupDevtoolsPlugin;
+
+});
+
+const DevToolsLabels = {
+ ["vue-devtools-plugin-vue-i18n" /* PLUGIN */]: 'Vue I18n devtools',
+ ["vue-i18n-resource-inspector" /* CUSTOM_INSPECTOR */]: 'I18n Resources',
+ ["vue-i18n-compile-error" /* TIMELINE_COMPILE_ERROR */]: 'Vue I18n: Compile Errors',
+ ["vue-i18n-missing" /* TIMELINE_MISSING */]: 'Vue I18n: Missing',
+ ["vue-i18n-fallback" /* TIMELINE_FALLBACK */]: 'Vue I18n: Fallback',
+ ["vue-i18n-performance" /* TIMELINE_PERFORMANCE */]: 'Vue I18n: Performance'
+};
+const DevToolsPlaceholders = {
+ ["vue-i18n-resource-inspector" /* CUSTOM_INSPECTOR */]: 'Search for scopes ...'
+};
+const DevToolsTimelineColors = {
+ ["vue-i18n-compile-error" /* TIMELINE_COMPILE_ERROR */]: 0xff0000,
+ ["vue-i18n-missing" /* TIMELINE_MISSING */]: 0xffcd19,
+ ["vue-i18n-fallback" /* TIMELINE_FALLBACK */]: 0xffcd19,
+ ["vue-i18n-performance" /* TIMELINE_PERFORMANCE */]: 0xffcd19
+};
+const DevToolsTimelineLayerMaps = {
+ ["compile-error" /* COMPILE_ERROR */]: "vue-i18n-compile-error" /* TIMELINE_COMPILE_ERROR */,
+ ["missing" /* MISSING */]: "vue-i18n-missing" /* TIMELINE_MISSING */,
+ ["fallback" /* FALBACK */]: "vue-i18n-fallback" /* TIMELINE_FALLBACK */,
+ ["message-resolve" /* MESSAGE_RESOLVE */]: "vue-i18n-performance" /* TIMELINE_PERFORMANCE */,
+ ["message-compilation" /* MESSAGE_COMPILATION */]: "vue-i18n-performance" /* TIMELINE_PERFORMANCE */,
+ ["message-evaluation" /* MESSAGE_EVALUATION */]: "vue-i18n-performance" /* TIMELINE_PERFORMANCE */
+};
+let devtoolsApi;
+async function enableDevTools(app, i18n) {
+ return new Promise((resolve, reject) => {
+ try {
+ lib.setupDevtoolsPlugin({
+ id: "vue-devtools-plugin-vue-i18n" /* PLUGIN */,
+ label: DevToolsLabels["vue-devtools-plugin-vue-i18n" /* PLUGIN */],
+ app
+ }, api => {
+ devtoolsApi = api;
+ api.on.inspectComponent(payload => {
+ const componentInstance = payload.componentInstance;
+ if (componentInstance.vnode.el.__INTLIFY__ &&
+ payload.instanceData) {
+ inspectComposer(payload.instanceData, componentInstance.vnode.el.__INTLIFY__);
+ }
+ });
+ api.addInspector({
+ id: "vue-i18n-resource-inspector" /* CUSTOM_INSPECTOR */,
+ label: DevToolsLabels["vue-i18n-resource-inspector" /* CUSTOM_INSPECTOR */],
+ icon: 'language',
+ treeFilterPlaceholder: DevToolsPlaceholders["vue-i18n-resource-inspector" /* CUSTOM_INSPECTOR */]
+ });
+ api.on.getInspectorTree(payload => {
+ if (payload.app === app &&
+ payload.inspectorId === "vue-i18n-resource-inspector" /* CUSTOM_INSPECTOR */) {
+ registerScope(payload, i18n);
+ }
+ });
+ api.on.getInspectorState(payload => {
+ if (payload.app === app &&
+ payload.inspectorId === "vue-i18n-resource-inspector" /* CUSTOM_INSPECTOR */) {
+ inspectScope(payload, i18n);
+ }
+ });
+ api.addTimelineLayer({
+ id: "vue-i18n-compile-error" /* TIMELINE_COMPILE_ERROR */,
+ label: DevToolsLabels["vue-i18n-compile-error" /* TIMELINE_COMPILE_ERROR */],
+ color: DevToolsTimelineColors["vue-i18n-compile-error" /* TIMELINE_COMPILE_ERROR */]
+ });
+ api.addTimelineLayer({
+ id: "vue-i18n-performance" /* TIMELINE_PERFORMANCE */,
+ label: DevToolsLabels["vue-i18n-performance" /* TIMELINE_PERFORMANCE */],
+ color: DevToolsTimelineColors["vue-i18n-performance" /* TIMELINE_PERFORMANCE */]
+ });
+ api.addTimelineLayer({
+ id: "vue-i18n-missing" /* TIMELINE_MISSING */,
+ label: DevToolsLabels["vue-i18n-missing" /* TIMELINE_MISSING */],
+ color: DevToolsTimelineColors["vue-i18n-missing" /* TIMELINE_MISSING */]
+ });
+ api.addTimelineLayer({
+ id: "vue-i18n-fallback" /* TIMELINE_FALLBACK */,
+ label: DevToolsLabels["vue-i18n-fallback" /* TIMELINE_FALLBACK */],
+ color: DevToolsTimelineColors["vue-i18n-fallback" /* TIMELINE_FALLBACK */]
+ });
+ resolve(true);
+ });
+ }
+ catch (e) {
+ console.error(e);
+ reject(false);
+ }
+ });
+}
+function inspectComposer(instanceData, composer) {
+ const type = 'vue-i18n: composer properties';
+ instanceData.state.push({
+ type,
+ key: 'locale',
+ editable: false,
+ value: composer.locale.value
+ });
+ instanceData.state.push({
+ type,
+ key: 'availableLocales',
+ editable: false,
+ value: composer.availableLocales
+ });
+ instanceData.state.push({
+ type,
+ key: 'fallbackLocale',
+ editable: false,
+ value: composer.fallbackLocale.value
+ });
+ instanceData.state.push({
+ type,
+ key: 'inheritLocale',
+ editable: false,
+ value: composer.inheritLocale
+ });
+ instanceData.state.push({
+ type,
+ key: 'messages',
+ editable: false,
+ value: composer.messages.value
+ });
+ instanceData.state.push({
+ type,
+ key: 'datetimeFormats',
+ editable: false,
+ value: composer.datetimeFormats.value
+ });
+ instanceData.state.push({
+ type,
+ key: 'numberFormats',
+ editable: false,
+ value: composer.numberFormats.value
+ });
+}
+function registerScope(payload, i18n) {
+ const children = [];
+ for (const [keyInstance, instance] of i18n.__instances) {
+ // prettier-ignore
+ const composer = i18n.mode === 'composition'
+ ? instance
+ : instance.__composer;
+ const label = keyInstance.type.name ||
+ keyInstance.type.displayName ||
+ keyInstance.type.__file;
+ children.push({
+ id: composer.id.toString(),
+ label: `${label} Scope`
+ });
+ }
+ payload.rootNodes.push({
+ id: 'global',
+ label: 'Global Scope',
+ children
+ });
+}
+function inspectScope(payload, i18n) {
+ if (payload.nodeId === 'global') {
+ payload.state = makeScopeInspectState(i18n.mode === 'composition'
+ ? i18n.global
+ : i18n.global.__composer);
+ }
+ else {
+ const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === payload.nodeId);
+ if (instance) {
+ const composer = i18n.mode === 'composition'
+ ? instance
+ : instance.__composer;
+ payload.state = makeScopeInspectState(composer);
+ }
+ }
+}
+function makeScopeInspectState(composer) {
+ const state = {};
+ const localeType = 'Locale related info';
+ const localeStates = [
+ {
+ type: localeType,
+ key: 'locale',
+ editable: false,
+ value: composer.locale.value
+ },
+ {
+ type: localeType,
+ key: 'fallbackLocale',
+ editable: false,
+ value: composer.fallbackLocale.value
+ },
+ {
+ type: localeType,
+ key: 'availableLocales',
+ editable: false,
+ value: composer.availableLocales
+ },
+ {
+ type: localeType,
+ key: 'inheritLocale',
+ editable: false,
+ value: composer.inheritLocale
+ }
+ ];
+ state[localeType] = localeStates;
+ const localeMessagesType = 'Locale messages info';
+ const localeMessagesStates = [
+ {
+ type: localeMessagesType,
+ key: 'messages',
+ editable: false,
+ value: composer.messages.value
+ }
+ ];
+ state[localeMessagesType] = localeMessagesStates;
+ const datetimeFormatsType = 'Datetime formats info';
+ const datetimeFormatsStates = [
+ {
+ type: datetimeFormatsType,
+ key: 'datetimeFormats',
+ editable: false,
+ value: composer.datetimeFormats.value
+ }
+ ];
+ state[datetimeFormatsType] = datetimeFormatsStates;
+ const numberFormatsType = 'Datetime formats info';
+ const numberFormatsStates = [
+ {
+ type: numberFormatsType,
+ key: 'numberFormats',
+ editable: false,
+ value: composer.numberFormats.value
+ }
+ ];
+ state[numberFormatsType] = numberFormatsStates;
+ return state;
+}
+function addTimelineEvent(event, payload) {
+ if (devtoolsApi) {
+ devtoolsApi.addTimelineEvent({
+ layerId: DevToolsTimelineLayerMaps[event],
+ event: {
+ time: Date.now(),
+ meta: {},
+ data: payload || {}
+ }
+ });
+ }
+}
+/**
+ * This is only called in esm-bundler builds.
+ * istanbul-ignore-next
+ */
function initFeatureFlags$1() {
+ if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {
+ getGlobalThis$1().__VUE_I18N_FULL_INSTALL__ = true;
+ }
+ if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {
+ getGlobalThis$1().__VUE_I18N_LEGACY_API__ = true;
+ }
if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {
getGlobalThis$1().__INTLIFY_PROD_DEVTOOLS__ = false;
}
@@ -5111,6 +5799,7 @@ function createLocation(start, end, source) {
}
return loc;
}
+/** @internal */
function createCompileError(code, loc, optinos = {}) {
const { domain, messages, args } = optinos;
const msg = code;
@@ -5122,6 +5811,7 @@ function createCompileError(code, loc, optinos = {}) {
error.domain = domain;
return error;
}
+/** @internal */
function defaultOnError(error) {
throw error;
}
@@ -5180,6 +5870,7 @@ function createScanner(str) {
}
function skipToPeek() {
const target = _index + _peekOffset;
+ // eslint-disable-next-line no-unmodified-loop-condition
while (target !== _index) {
next();
}
@@ -5212,11 +5903,11 @@ function createTokenizer(source, options = {}) {
const _initLoc = currentPosition();
const _initOffset = currentOffset();
const _context = {
- currentType: 14,
+ currentType: 14 /* EOF */,
offset: _initOffset,
startLoc: _initLoc,
endLoc: _initLoc,
- lastType: 14,
+ lastType: 14 /* EOF */,
lastOffset: _initOffset,
lastStartLoc: _initLoc,
lastEndLoc: _initLoc,
@@ -5251,14 +5942,14 @@ function createTokenizer(source, options = {}) {
}
return token;
}
- const getEndToken = (context) => getToken(context, 14);
+ const getEndToken = (context) => getToken(context, 14 /* EOF */);
function eat(scnr, ch) {
if (scnr.currentChar() === ch) {
scnr.next();
return ch;
}
else {
- emitError(0, currentPosition(), 0, ch);
+ emitError(0 /* EXPECTED_TOKEN */, currentPosition(), 0, ch);
return '';
}
}
@@ -5280,19 +5971,19 @@ function createTokenizer(source, options = {}) {
return false;
}
const cc = ch.charCodeAt(0);
- return ((cc >= 97 && cc <= 122) ||
- (cc >= 65 && cc <= 90));
+ return ((cc >= 97 && cc <= 122) || // a-z
+ (cc >= 65 && cc <= 90)); // A-Z
}
function isNumberStart(ch) {
if (ch === EOF) {
return false;
}
const cc = ch.charCodeAt(0);
- return cc >= 48 && cc <= 57;
+ return cc >= 48 && cc <= 57; // 0-9
}
function isNamedIdentifierStart(scnr, context) {
const { currentType } = context;
- if (currentType !== 2) {
+ if (currentType !== 2 /* BraceLeft */) {
return false;
}
peekSpaces(scnr);
@@ -5302,7 +5993,7 @@ function createTokenizer(source, options = {}) {
}
function isListIdentifierStart(scnr, context) {
const { currentType } = context;
- if (currentType !== 2) {
+ if (currentType !== 2 /* BraceLeft */) {
return false;
}
peekSpaces(scnr);
@@ -5313,7 +6004,7 @@ function createTokenizer(source, options = {}) {
}
function isLiteralStart(scnr, context) {
const { currentType } = context;
- if (currentType !== 2) {
+ if (currentType !== 2 /* BraceLeft */) {
return false;
}
peekSpaces(scnr);
@@ -5323,17 +6014,17 @@ function createTokenizer(source, options = {}) {
}
function isLinkedDotStart(scnr, context) {
const { currentType } = context;
- if (currentType !== 8) {
+ if (currentType !== 8 /* LinkedAlias */) {
return false;
}
peekSpaces(scnr);
- const ret = scnr.currentPeek() === ".";
+ const ret = scnr.currentPeek() === "." /* LinkedDot */;
scnr.resetPeek();
return ret;
}
function isLinkedModifierStart(scnr, context) {
const { currentType } = context;
- if (currentType !== 9) {
+ if (currentType !== 9 /* LinkedDot */) {
return false;
}
peekSpaces(scnr);
@@ -5343,30 +6034,30 @@ function createTokenizer(source, options = {}) {
}
function isLinkedDelimiterStart(scnr, context) {
const { currentType } = context;
- if (!(currentType === 8 ||
- currentType === 12)) {
+ if (!(currentType === 8 /* LinkedAlias */ ||
+ currentType === 12 /* LinkedModifier */)) {
return false;
}
peekSpaces(scnr);
- const ret = scnr.currentPeek() === ":";
+ const ret = scnr.currentPeek() === ":" /* LinkedDelimiter */;
scnr.resetPeek();
return ret;
}
function isLinkedReferStart(scnr, context) {
const { currentType } = context;
- if (currentType !== 10) {
+ if (currentType !== 10 /* LinkedDelimiter */) {
return false;
}
const fn = () => {
const ch = scnr.currentPeek();
- if (ch === "{") {
+ if (ch === "{" /* BraceLeft */) {
return isIdentifierStart(scnr.peek());
}
- else if (ch === "@" ||
- ch === "%" ||
- ch === "|" ||
- ch === ":" ||
- ch === "." ||
+ else if (ch === "@" /* LinkedAlias */ ||
+ ch === "%" /* Modulo */ ||
+ ch === "|" /* Pipe */ ||
+ ch === ":" /* LinkedDelimiter */ ||
+ ch === "." /* LinkedDot */ ||
ch === CHAR_SP ||
!ch) {
return false;
@@ -5376,6 +6067,7 @@ function createTokenizer(source, options = {}) {
return fn();
}
else {
+ // other charactors
return isIdentifierStart(ch);
}
};
@@ -5385,25 +6077,25 @@ function createTokenizer(source, options = {}) {
}
function isPluralStart(scnr) {
peekSpaces(scnr);
- const ret = scnr.currentPeek() === "|";
+ const ret = scnr.currentPeek() === "|" /* Pipe */;
scnr.resetPeek();
return ret;
}
function isTextStart(scnr, reset = true) {
const fn = (hasSpace = false, prev = '', detectModulo = false) => {
const ch = scnr.currentPeek();
- if (ch === "{") {
- return prev === "%" ? false : hasSpace;
+ if (ch === "{" /* BraceLeft */) {
+ return prev === "%" /* Modulo */ ? false : hasSpace;
}
- else if (ch === "@" || !ch) {
- return prev === "%" ? true : hasSpace;
+ else if (ch === "@" /* LinkedAlias */ || !ch) {
+ return prev === "%" /* Modulo */ ? true : hasSpace;
}
- else if (ch === "%") {
+ else if (ch === "%" /* Modulo */) {
scnr.peek();
- return fn(hasSpace, "%", true);
+ return fn(hasSpace, "%" /* Modulo */, true);
}
- else if (ch === "|") {
- return prev === "%" || detectModulo
+ else if (ch === "|" /* Pipe */) {
+ return prev === "%" /* Modulo */ || detectModulo
? true
: !(prev === CHAR_SP || prev === CHAR_LF);
}
@@ -5437,27 +6129,27 @@ function createTokenizer(source, options = {}) {
function takeIdentifierChar(scnr) {
const closure = (ch) => {
const cc = ch.charCodeAt(0);
- return ((cc >= 97 && cc <= 122) ||
- (cc >= 65 && cc <= 90) ||
- (cc >= 48 && cc <= 57) ||
+ return ((cc >= 97 && cc <= 122) || // a-z
+ (cc >= 65 && cc <= 90) || // A-Z
+ (cc >= 48 && cc <= 57) || // 0-9
cc === 95 ||
- cc === 36);
+ cc === 36); // _ $
};
return takeChar(scnr, closure);
}
function takeDigit(scnr) {
const closure = (ch) => {
const cc = ch.charCodeAt(0);
- return cc >= 48 && cc <= 57;
+ return cc >= 48 && cc <= 57; // 0-9
};
return takeChar(scnr, closure);
}
function takeHexDigit(scnr) {
const closure = (ch) => {
const cc = ch.charCodeAt(0);
- return ((cc >= 48 && cc <= 57) ||
- (cc >= 65 && cc <= 70) ||
- (cc >= 97 && cc <= 102));
+ return ((cc >= 48 && cc <= 57) || // 0-9
+ (cc >= 65 && cc <= 70) || // A-F
+ (cc >= 97 && cc <= 102)); // a-f
};
return takeChar(scnr, closure);
}
@@ -5472,13 +6164,13 @@ function createTokenizer(source, options = {}) {
function readText(scnr) {
const fn = (buf) => {
const ch = scnr.currentChar();
- if (ch === "{" ||
- ch === "}" ||
- ch === "@" ||
+ if (ch === "{" /* BraceLeft */ ||
+ ch === "}" /* BraceRight */ ||
+ ch === "@" /* LinkedAlias */ ||
!ch) {
return buf;
}
- else if (ch === "%") {
+ else if (ch === "%" /* Modulo */) {
if (isTextStart(scnr)) {
buf += ch;
scnr.next();
@@ -5488,7 +6180,7 @@ function createTokenizer(source, options = {}) {
return buf;
}
}
- else if (ch === "|") {
+ else if (ch === "|" /* Pipe */) {
return buf;
}
else if (ch === CHAR_SP || ch === CHAR_LF) {
@@ -5522,7 +6214,7 @@ function createTokenizer(source, options = {}) {
name += ch;
}
if (scnr.currentChar() === EOF) {
- emitError(6, currentPosition(), 0);
+ emitError(6 /* UNTERMINATED_CLOSING_BRACE */, currentPosition(), 0);
}
return name;
}
@@ -5537,7 +6229,7 @@ function createTokenizer(source, options = {}) {
value += getDigits(scnr);
}
if (scnr.currentChar() === EOF) {
- emitError(6, currentPosition(), 0);
+ emitError(6 /* UNTERMINATED_CLOSING_BRACE */, currentPosition(), 0);
}
return value;
}
@@ -5557,7 +6249,8 @@ function createTokenizer(source, options = {}) {
}
const current = scnr.currentChar();
if (current === CHAR_LF || current === EOF) {
- emitError(2, currentPosition(), 0);
+ emitError(2 /* UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER */, currentPosition(), 0);
+ // TODO: Is it correct really?
if (current === CHAR_LF) {
scnr.next();
eat(scnr, `\'`);
@@ -5579,7 +6272,7 @@ function createTokenizer(source, options = {}) {
case 'U':
return readUnicodeEscapeSequence(scnr, ch, 6);
default:
- emitError(3, currentPosition(), 0, ch);
+ emitError(3 /* UNKNOWN_ESCAPE_SEQUENCE */, currentPosition(), 0, ch);
return '';
}
}
@@ -5589,7 +6282,7 @@ function createTokenizer(source, options = {}) {
for (let i = 0; i < digits; i++) {
const ch = takeHexDigit(scnr);
if (!ch) {
- emitError(4, currentPosition(), 0, `\\${unicode}${sequence}${scnr.currentChar()}`);
+ emitError(4 /* INVALID_UNICODE_ESCAPE_SEQUENCE */, currentPosition(), 0, `\\${unicode}${sequence}${scnr.currentChar()}`);
break;
}
sequence += ch;
@@ -5600,8 +6293,8 @@ function createTokenizer(source, options = {}) {
skipSpaces(scnr);
let ch = '';
let identifiers = '';
- const closure = (ch) => ch !== "{" &&
- ch !== "}" &&
+ const closure = (ch) => ch !== "{" /* BraceLeft */ &&
+ ch !== "}" /* BraceRight */ &&
ch !== CHAR_SP &&
ch !== CHAR_LF;
while ((ch = takeChar(scnr, closure))) {
@@ -5620,10 +6313,10 @@ function createTokenizer(source, options = {}) {
function readLinkedRefer(scnr) {
const fn = (detect = false, buf) => {
const ch = scnr.currentChar();
- if (ch === "{" ||
- ch === "%" ||
- ch === "@" ||
- ch === "|" ||
+ if (ch === "{" /* BraceLeft */ ||
+ ch === "%" /* Modulo */ ||
+ ch === "@" /* LinkedAlias */ ||
+ ch === "|" /* Pipe */ ||
!ch) {
return buf;
}
@@ -5645,39 +6338,40 @@ function createTokenizer(source, options = {}) {
}
function readPlural(scnr) {
skipSpaces(scnr);
- const plural = eat(scnr, "|");
+ const plural = eat(scnr, "|" /* Pipe */);
skipSpaces(scnr);
return plural;
}
+ // TODO: We need refactoring of token parsing ...
function readTokenInPlaceholder(scnr, context) {
let token = null;
const ch = scnr.currentChar();
switch (ch) {
- case "{":
+ case "{" /* BraceLeft */:
if (context.braceNest >= 1) {
- emitError(8, currentPosition(), 0);
+ emitError(8 /* NOT_ALLOW_NEST_PLACEHOLDER */, currentPosition(), 0);
}
scnr.next();
- token = getToken(context, 2, "{");
+ token = getToken(context, 2 /* BraceLeft */, "{" /* BraceLeft */);
skipSpaces(scnr);
context.braceNest++;
return token;
- case "}":
+ case "}" /* BraceRight */:
if (context.braceNest > 0 &&
- context.currentType === 2) {
- emitError(7, currentPosition(), 0);
+ context.currentType === 2 /* BraceLeft */) {
+ emitError(7 /* EMPTY_PLACEHOLDER */, currentPosition(), 0);
}
scnr.next();
- token = getToken(context, 3, "}");
+ token = getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
context.braceNest--;
context.braceNest > 0 && skipSpaces(scnr);
if (context.inLinked && context.braceNest === 0) {
context.inLinked = false;
}
return token;
- case "@":
+ case "@" /* LinkedAlias */:
if (context.braceNest > 0) {
- emitError(6, currentPosition(), 0);
+ emitError(6 /* UNTERMINATED_CLOSING_BRACE */, currentPosition(), 0);
}
token = readTokenInLinked(scnr, context) || getEndToken(context);
context.braceNest = 0;
@@ -5688,39 +6382,41 @@ function createTokenizer(source, options = {}) {
let validLeteral = true;
if (isPluralStart(scnr)) {
if (context.braceNest > 0) {
- emitError(6, currentPosition(), 0);
+ emitError(6 /* UNTERMINATED_CLOSING_BRACE */, currentPosition(), 0);
}
- token = getToken(context, 1, readPlural(scnr));
+ token = getToken(context, 1 /* Pipe */, readPlural(scnr));
+ // reset
context.braceNest = 0;
context.inLinked = false;
return token;
}
if (context.braceNest > 0 &&
- (context.currentType === 5 ||
- context.currentType === 6 ||
- context.currentType === 7)) {
- emitError(6, currentPosition(), 0);
+ (context.currentType === 5 /* Named */ ||
+ context.currentType === 6 /* List */ ||
+ context.currentType === 7 /* Literal */)) {
+ emitError(6 /* UNTERMINATED_CLOSING_BRACE */, currentPosition(), 0);
context.braceNest = 0;
return readToken(scnr, context);
}
if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {
- token = getToken(context, 5, readNamedIdentifier(scnr));
+ token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));
skipSpaces(scnr);
return token;
}
if ((validListIdentifier = isListIdentifierStart(scnr, context))) {
- token = getToken(context, 6, readListIdentifier(scnr));
+ token = getToken(context, 6 /* List */, readListIdentifier(scnr));
skipSpaces(scnr);
return token;
}
if ((validLeteral = isLiteralStart(scnr, context))) {
- token = getToken(context, 7, readLiteral(scnr));
+ token = getToken(context, 7 /* Literal */, readLiteral(scnr));
skipSpaces(scnr);
return token;
}
if (!validNamedIdentifier && !validListIdentifier && !validLeteral) {
- token = getToken(context, 13, readInvalidIdentifier(scnr));
- emitError(1, currentPosition(), 0, token.value);
+ // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...
+ token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));
+ emitError(1 /* INVALID_TOKEN_IN_PLACEHOLDER */, currentPosition(), 0, token.value);
skipSpaces(scnr);
return token;
}
@@ -5728,34 +6424,36 @@ function createTokenizer(source, options = {}) {
}
return token;
}
+ // TODO: We need refactoring of token parsing ...
function readTokenInLinked(scnr, context) {
const { currentType } = context;
let token = null;
const ch = scnr.currentChar();
- if ((currentType === 8 ||
- currentType === 9 ||
- currentType === 12 ||
- currentType === 10) &&
+ if ((currentType === 8 /* LinkedAlias */ ||
+ currentType === 9 /* LinkedDot */ ||
+ currentType === 12 /* LinkedModifier */ ||
+ currentType === 10 /* LinkedDelimiter */) &&
(ch === CHAR_LF || ch === CHAR_SP)) {
- emitError(9, currentPosition(), 0);
+ emitError(9 /* INVALID_LINKED_FORMAT */, currentPosition(), 0);
}
switch (ch) {
- case "@":
+ case "@" /* LinkedAlias */:
scnr.next();
- token = getToken(context, 8, "@");
+ token = getToken(context, 8 /* LinkedAlias */, "@" /* LinkedAlias */);
context.inLinked = true;
return token;
- case ".":
+ case "." /* LinkedDot */:
skipSpaces(scnr);
scnr.next();
- return getToken(context, 9, ".");
- case ":":
+ return getToken(context, 9 /* LinkedDot */, "." /* LinkedDot */);
+ case ":" /* LinkedDelimiter */:
skipSpaces(scnr);
scnr.next();
- return getToken(context, 10, ":");
+ return getToken(context, 10 /* LinkedDelimiter */, ":" /* LinkedDelimiter */);
default:
if (isPluralStart(scnr)) {
- token = getToken(context, 1, readPlural(scnr));
+ token = getToken(context, 1 /* Pipe */, readPlural(scnr));
+ // reset
context.braceNest = 0;
context.inLinked = false;
return token;
@@ -5767,27 +6465,29 @@ function createTokenizer(source, options = {}) {
}
if (isLinkedModifierStart(scnr, context)) {
skipSpaces(scnr);
- return getToken(context, 12, readLinkedModifier(scnr));
+ return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));
}
if (isLinkedReferStart(scnr, context)) {
skipSpaces(scnr);
- if (ch === "{") {
+ if (ch === "{" /* BraceLeft */) {
+ // scan the placeholder
return readTokenInPlaceholder(scnr, context) || token;
}
else {
- return getToken(context, 11, readLinkedRefer(scnr));
+ return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));
}
}
- if (currentType === 8) {
- emitError(9, currentPosition(), 0);
+ if (currentType === 8 /* LinkedAlias */) {
+ emitError(9 /* INVALID_LINKED_FORMAT */, currentPosition(), 0);
}
context.braceNest = 0;
context.inLinked = false;
return readToken(scnr, context);
}
}
+ // TODO: We need refactoring of token parsing ...
function readToken(scnr, context) {
- let token = { type: 14 };
+ let token = { type: 14 /* EOF */ };
if (context.braceNest > 0) {
return readTokenInPlaceholder(scnr, context) || getEndToken(context);
}
@@ -5796,27 +6496,28 @@ function createTokenizer(source, options = {}) {
}
const ch = scnr.currentChar();
switch (ch) {
- case "{":
+ case "{" /* BraceLeft */:
return readTokenInPlaceholder(scnr, context) || getEndToken(context);
- case "}":
- emitError(5, currentPosition(), 0);
+ case "}" /* BraceRight */:
+ emitError(5 /* UNBALANCED_CLOSING_BRACE */, currentPosition(), 0);
scnr.next();
- return getToken(context, 3, "}");
- case "@":
+ return getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
+ case "@" /* LinkedAlias */:
return readTokenInLinked(scnr, context) || getEndToken(context);
default:
if (isPluralStart(scnr)) {
- token = getToken(context, 1, readPlural(scnr));
+ token = getToken(context, 1 /* Pipe */, readPlural(scnr));
+ // reset
context.braceNest = 0;
context.inLinked = false;
return token;
}
if (isTextStart(scnr)) {
- return getToken(context, 0, readText(scnr));
+ return getToken(context, 0 /* Text */, readText(scnr));
}
- if (ch === "%") {
+ if (ch === "%" /* Modulo */) {
scnr.next();
- return getToken(context, 4, "%");
+ return getToken(context, 4 /* Modulo */, "%" /* Modulo */);
}
break;
}
@@ -5831,7 +6532,7 @@ function createTokenizer(source, options = {}) {
_context.offset = currentOffset();
_context.startLoc = currentPosition();
if (_scnr.currentChar() === EOF) {
- return getToken(_context, 14);
+ return getToken(_context, 14 /* EOF */);
}
return readToken(_scnr, _context);
}
@@ -5844,6 +6545,7 @@ function createTokenizer(source, options = {}) {
}
const ERROR_DOMAIN$1 = 'parser';
+// Backslash backslash, backslash quote, uHHHH, UHHHHHH.
const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
function fromEscapeSequence(match, codePoint4, codePoint6) {
switch (match) {
@@ -5856,10 +6558,13 @@ function fromEscapeSequence(match, codePoint4, codePoint6) {
if (codePoint <= 0xd7ff || codePoint >= 0xe000) {
return String.fromCodePoint(codePoint);
}
+ // invalid ...
+ // Replace them with U+FFFD REPLACEMENT CHARACTER.
return '�';
}
}
}
+/** @internal */
function createParser(options = {}) {
const location = !options.location;
const { onError } = options;
@@ -5898,94 +6603,97 @@ function createParser(options = {}) {
}
function parseText(tokenizer, value) {
const context = tokenizer.context();
- const node = startNode(3, context.offset, context.startLoc);
+ const node = startNode(3 /* Text */, context.offset, context.startLoc);
node.value = value;
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseList(tokenizer, index) {
const context = tokenizer.context();
- const { lastOffset: offset, lastStartLoc: loc } = context;
- const node = startNode(5, offset, loc);
+ const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
+ const node = startNode(5 /* List */, offset, loc);
node.index = parseInt(index, 10);
- tokenizer.nextToken();
+ tokenizer.nextToken(); // skip brach right
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseNamed(tokenizer, key) {
const context = tokenizer.context();
- const { lastOffset: offset, lastStartLoc: loc } = context;
- const node = startNode(4, offset, loc);
+ const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
+ const node = startNode(4 /* Named */, offset, loc);
node.key = key;
- tokenizer.nextToken();
+ tokenizer.nextToken(); // skip brach right
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseLiteral(tokenizer, value) {
const context = tokenizer.context();
- const { lastOffset: offset, lastStartLoc: loc } = context;
- const node = startNode(9, offset, loc);
+ const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
+ const node = startNode(9 /* Literal */, offset, loc);
node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);
- tokenizer.nextToken();
+ tokenizer.nextToken(); // skip brach right
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseLinkedModifier(tokenizer) {
const token = tokenizer.nextToken();
const context = tokenizer.context();
+ // check token
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
- const { lastOffset: offset, lastStartLoc: loc } = context;
- const node = startNode(8, offset, loc);
+ const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc
+ const node = startNode(8 /* LinkedModifier */, offset, loc);
node.value = token.value || '';
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseLinkedKey(tokenizer, value) {
const context = tokenizer.context();
- const node = startNode(7, context.offset, context.startLoc);
+ const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);
node.value = value;
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseLinked(tokenizer) {
const context = tokenizer.context();
- const linkedNode = startNode(6, context.offset, context.startLoc);
+ const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);
let token = tokenizer.nextToken();
- if (token.type === 9) {
+ if (token.type === 9 /* LinkedDot */) {
linkedNode.modifier = parseLinkedModifier(tokenizer);
token = tokenizer.nextToken();
}
- if (token.type !== 10) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ // asset check token
+ if (token.type !== 10 /* LinkedDelimiter */) {
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
token = tokenizer.nextToken();
- if (token.type === 2) {
+ // skip brace left
+ if (token.type === 2 /* BraceLeft */) {
token = tokenizer.nextToken();
}
switch (token.type) {
- case 11:
+ case 11 /* LinkedKey */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
linkedNode.key = parseLinkedKey(tokenizer, token.value || '');
break;
- case 5:
+ case 5 /* Named */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
linkedNode.key = parseNamed(tokenizer, token.value || '');
break;
- case 6:
+ case 6 /* List */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
linkedNode.key = parseList(tokenizer, token.value || '');
break;
- case 7:
+ case 7 /* Literal */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
linkedNode.key = parseLiteral(tokenizer, token.value || '');
break;
@@ -5995,51 +6703,52 @@ function createParser(options = {}) {
}
function parseMessage(tokenizer) {
const context = tokenizer.context();
- const startOffset = context.currentType === 1
+ const startOffset = context.currentType === 1 /* Pipe */
? tokenizer.currentOffset()
: context.offset;
- const startLoc = context.currentType === 1
+ const startLoc = context.currentType === 1 /* Pipe */
? context.endLoc
: context.startLoc;
- const node = startNode(2, startOffset, startLoc);
+ const node = startNode(2 /* Message */, startOffset, startLoc);
node.items = [];
do {
const token = tokenizer.nextToken();
switch (token.type) {
- case 0:
+ case 0 /* Text */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
node.items.push(parseText(tokenizer, token.value || ''));
break;
- case 6:
+ case 6 /* List */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
node.items.push(parseList(tokenizer, token.value || ''));
break;
- case 5:
+ case 5 /* Named */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
node.items.push(parseNamed(tokenizer, token.value || ''));
break;
- case 7:
+ case 7 /* Literal */:
if (token.value == null) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, token.type);
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, token.type);
}
node.items.push(parseLiteral(tokenizer, token.value || ''));
break;
- case 8:
+ case 8 /* LinkedAlias */:
node.items.push(parseLinked(tokenizer));
break;
}
- } while (context.currentType !== 14 &&
- context.currentType !== 1);
- const endOffset = context.currentType === 1
+ } while (context.currentType !== 14 /* EOF */ &&
+ context.currentType !== 1 /* Pipe */);
+ // adjust message node loc
+ const endOffset = context.currentType === 1 /* Pipe */
? context.lastOffset
: tokenizer.currentOffset();
- const endLoc = context.currentType === 1
+ const endLoc = context.currentType === 1 /* Pipe */
? context.lastEndLoc
: tokenizer.currentPosition();
endNode(node, endOffset, endLoc);
@@ -6048,7 +6757,7 @@ function createParser(options = {}) {
function parsePlural(tokenizer, offset, loc, msgNode) {
const context = tokenizer.context();
let hasEmptyMessage = msgNode.items.length === 0;
- const node = startNode(1, offset, loc);
+ const node = startNode(1 /* Plural */, offset, loc);
node.cases = [];
node.cases.push(msgNode);
do {
@@ -6057,9 +6766,9 @@ function createParser(options = {}) {
hasEmptyMessage = msg.items.length === 0;
}
node.cases.push(msg);
- } while (context.currentType !== 14);
+ } while (context.currentType !== 14 /* EOF */);
if (hasEmptyMessage) {
- emitError(tokenizer, 10, loc, 0);
+ emitError(tokenizer, 10 /* MUST_HAVE_MESSAGES_IN_PLURAL */, loc, 0);
}
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
@@ -6068,7 +6777,7 @@ function createParser(options = {}) {
const context = tokenizer.context();
const { offset, startLoc } = context;
const msgNode = parseMessage(tokenizer);
- if (context.currentType === 14) {
+ if (context.currentType === 14 /* EOF */) {
return msgNode;
}
else {
@@ -6078,10 +6787,14 @@ function createParser(options = {}) {
function parse(source) {
const tokenizer = createTokenizer(source, { ...options });
const context = tokenizer.context();
- const node = startNode(0, context.offset, context.startLoc);
+ const node = startNode(0 /* Resource */, context.offset, context.startLoc);
+ if (location && node.loc) {
+ node.loc.source = source;
+ }
node.body = parseResource(tokenizer);
- if (context.currentType !== 14) {
- emitError(tokenizer, 11, context.lastStartLoc, 0, context.currentType);
+ // assert wheather achieved to EOF
+ if (context.currentType !== 14 /* EOF */) {
+ emitError(tokenizer, 11 /* UNEXPECTED_LEXICAL_ANALYSIS */, context.lastStartLoc, 0, context.currentType);
}
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
@@ -6089,7 +6802,8 @@ function createParser(options = {}) {
return { parse };
}
-function createTransformer(ast, options = {}) {
+function createTransformer(ast, options = {} // eslint-disable-line
+) {
const _context = {
ast,
helpers: new Set()
@@ -6107,52 +6821,57 @@ function traverseNodes(nodes, transformer) {
}
}
function traverseNode(node, transformer) {
+ // TODO: if we need pre-hook of transform, should be implemeted to here
switch (node.type) {
- case 1:
+ case 1 /* Plural */:
traverseNodes(node.cases, transformer);
- transformer.helper("pluralIndex");
- transformer.helper("pluralRule");
- transformer.helper("orgPluralRule");
+ transformer.helper("plural" /* PLURAL */);
break;
- case 2:
+ case 2 /* Message */:
traverseNodes(node.items, transformer);
break;
- case 6:
+ case 6 /* Linked */:
const linked = node;
- if (linked.modifier) {
- traverseNode(linked.modifier, transformer);
- transformer.helper("modifier");
- transformer.helper("type");
- }
traverseNode(linked.key, transformer);
- transformer.helper("message");
+ transformer.helper("linked" /* LINKED */);
break;
- case 5:
- transformer.helper("interpolate");
- transformer.helper("list");
+ case 5 /* List */:
+ transformer.helper("interpolate" /* INTERPOLATE */);
+ transformer.helper("list" /* LIST */);
break;
- case 4:
- transformer.helper("interpolate");
- transformer.helper("named");
+ case 4 /* Named */:
+ transformer.helper("interpolate" /* INTERPOLATE */);
+ transformer.helper("named" /* NAMED */);
break;
}
+ // TODO: if we need post-hook of transform, should be implemeted to here
}
-function transform(ast, options = {}) {
+// transform AST
+function transform(ast, options = {} // eslint-disable-line
+) {
const transformer = createTransformer(ast);
- transformer.helper("normalize");
+ transformer.helper("normalize" /* NORMALIZE */);
+ // traverse
ast.body && traverseNode(ast.body, transformer);
+ // set meta information
const context = transformer.context();
ast.helpers = [...context.helpers];
}
-function createCodeGenerator(source) {
+function createCodeGenerator(ast, options) {
+ const { sourceMap, filename } = options;
const _context = {
- source,
+ source: ast.loc.source,
+ filename,
code: '',
+ column: 1,
+ line: 1,
+ offset: 0,
+ map: undefined,
indentLevel: 0
};
const context = () => _context;
- function push(code) {
+ function push(code, node) {
_context.code += code;
}
function _newline(n) {
@@ -6184,21 +6903,17 @@ function createCodeGenerator(source) {
}
function generateLinkedNode(generator, node) {
const { helper } = generator;
- if (node.modifier) {
- generator.push(`${helper("modifier")}(`);
- generateNode(generator, node.modifier);
- generator.push(')(');
- }
- generator.push(`${helper("message")}(`);
+ generator.push(`${helper("linked" /* LINKED */)}(`);
generateNode(generator, node.key);
- generator.push(')(ctx)');
if (node.modifier) {
- generator.push(`, ${helper("type")})`);
+ generator.push(`, `);
+ generateNode(generator, node.modifier);
}
+ generator.push(`)`);
}
function generateMessageNode(generator, node) {
const { helper } = generator;
- generator.push(`${helper("normalize")}([`);
+ generator.push(`${helper("normalize" /* NORMALIZE */)}([`);
generator.indent();
const length = node.items.length;
for (let i = 0; i < length; i++) {
@@ -6214,7 +6929,7 @@ function generateMessageNode(generator, node) {
function generatePluralNode(generator, node) {
const { helper } = generator;
if (node.cases.length > 1) {
- generator.push('[');
+ generator.push(`${helper("plural" /* PLURAL */)}([`);
generator.indent();
const length = node.cases.length;
for (let i = 0; i < length; i++) {
@@ -6225,7 +6940,7 @@ function generatePluralNode(generator, node) {
generator.push(', ');
}
generator.deindent();
- generator.push(`][${helper("pluralRule")}(${helper("pluralIndex")}, ${length}, ${helper("orgPluralRule")})]`);
+ generator.push(`])`);
}
}
function generateResource(generator, node) {
@@ -6239,42 +6954,49 @@ function generateResource(generator, node) {
function generateNode(generator, node) {
const { helper } = generator;
switch (node.type) {
- case 0:
+ case 0 /* Resource */:
generateResource(generator, node);
break;
- case 1:
+ case 1 /* Plural */:
generatePluralNode(generator, node);
break;
- case 2:
+ case 2 /* Message */:
generateMessageNode(generator, node);
break;
- case 6:
+ case 6 /* Linked */:
generateLinkedNode(generator, node);
break;
- case 8:
- generator.push(JSON.stringify(node.value));
+ case 8 /* LinkedModifier */:
+ generator.push(JSON.stringify(node.value), node);
break;
- case 7:
- generator.push(JSON.stringify(node.value));
+ case 7 /* LinkedKey */:
+ generator.push(JSON.stringify(node.value), node);
break;
- case 5:
- generator.push(`${helper("interpolate")}(${helper("list")}(${node.index}))`);
+ case 5 /* List */:
+ generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("list" /* LIST */)}(${node.index}))`, node);
break;
- case 4:
- generator.push(`${helper("interpolate")}(${helper("named")}(${JSON.stringify(node.key)}))`);
+ case 4 /* Named */:
+ generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("named" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);
break;
- case 9:
- generator.push(JSON.stringify(node.value));
+ case 9 /* Literal */:
+ generator.push(JSON.stringify(node.value), node);
break;
- case 3:
- generator.push(JSON.stringify(node.value));
+ case 3 /* Text */:
+ generator.push(JSON.stringify(node.value), node);
break;
}
}
-const generate = (ast, options = {}) => {
+// generate code from AST
+/** @internal */
+const generate = (ast, options = {} // eslint-disable-line
+) => {
const mode = isString$1(options.mode) ? options.mode : 'normal';
+ const filename = isString$1(options.filename)
+ ? options.filename
+ : 'message.intl';
+ const sourceMap = isBoolean(options.sourceMap) ? options.sourceMap : false;
const helpers = ast.helpers || [];
- const generator = createCodeGenerator(ast.loc && ast.loc.source);
+ const generator = createCodeGenerator(ast, { mode, filename, sourceMap });
generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);
generator.indent();
if (helpers.length > 0) {
@@ -6285,47 +7007,66 @@ const generate = (ast, options = {}) => {
generateNode(generator, ast);
generator.deindent();
generator.push(`}`);
- return generator.context().code;
+ const { code, map } = generator.context();
+ return {
+ ast,
+ code,
+ map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any
+ };
};
const defaultOnCacheKey = (source) => source;
let compileCache = Object.create(null);
+/** @internal */
function baseCompile(source, options = {}) {
+ // parse source codes
const parser = createParser({ ...options });
const ast = parser.parse(source);
+ // transform ASTs
transform(ast, { ...options });
- const code = generate(ast, { ...options });
- return { ast, code };
+ // generate javascript codes
+ return generate(ast, { ...options });
}
+/** @internal */
function compile(source, options = {}) {
+ // check caches
const onCacheKey = options.onCacheKey || defaultOnCacheKey;
const key = onCacheKey(source);
const cached = compileCache[key];
if (cached) {
return cached;
}
+ // compile error detecting
let occured = false;
const onError = options.onError || defaultOnError;
options.onError = (err) => {
occured = true;
onError(err);
};
+ // compile
const { code } = baseCompile(source, options);
+ // evaluate function
const msg = new Function(`return ${code}`)();
+ // if occured compile error, don't cache
return !occured ? (compileCache[key] = msg) : msg;
}
+/** @internal */
const NOT_REOSLVED = -1;
+/** @internal */
const MISSING_RESOLVE_VALUE = '';
function getDefaultLinkedModifiers() {
return {
upper: (val) => (isString$1(val) ? val.toUpperCase() : val),
lower: (val) => (isString$1(val) ? val.toLowerCase() : val),
+ // prettier-ignore
capitalize: (val) => (isString$1(val)
? `${val.charAt(0).toLocaleUpperCase()}${val.substr(1)}`
: val)
};
}
+/** @internal */
function createRuntimeContext(options = {}) {
+ // setup options
const locale = isString$1(options.locale) ? options.locale : 'en-US';
const fallbackLocale = isArray$1(options.fallbackLocale) ||
isPlainObject$1(options.fallbackLocale) ||
@@ -6360,10 +7101,12 @@ function createRuntimeContext(options = {}) {
const warnHtmlMessage = isBoolean(options.warnHtmlMessage)
? options.warnHtmlMessage
: true;
+ const escapeParameter = !!options.escapeParameter;
const messageCompiler = isFunction$1(options.messageCompiler)
? options.messageCompiler
: compile;
const onWarn = isFunction$1(options.onWarn) ? options.onWarn : warn$1;
+ // setup internal options
const internalOptions = options;
const __datetimeFormatters = isObject$1(internalOptions.__datetimeFormatters)
? internalOptions.__datetimeFormatters
@@ -6387,6 +7130,7 @@ function createRuntimeContext(options = {}) {
postTranslation,
processor,
warnHtmlMessage,
+ escapeParameter,
messageCompiler,
onWarn,
__datetimeFormatters,
@@ -6394,6 +7138,7 @@ function createRuntimeContext(options = {}) {
};
return context;
}
+/** @internal */
function handleMissing(context, key, locale, missingWarn, type) {
const { missing, onWarn } = context;
if (missing !== null) {
@@ -6404,6 +7149,7 @@ function handleMissing(context, key, locale, missingWarn, type) {
return key;
}
}
+/** @internal */
function getLocaleChain(ctx, fallback, start = '') {
const context = ctx;
if (start === '') {
@@ -6415,10 +7161,14 @@ function getLocaleChain(ctx, fallback, start = '') {
let chain = context.__localeChainCache.get(start);
if (!chain) {
chain = [];
+ // first block defined by start
let block = [start];
+ // while any intervening block found
while (isArray$1(block)) {
block = appendBlockToChain(chain, block, fallback);
}
+ // prettier-ignore
+ // last block defined by default
const defaults = isArray$1(fallback)
? fallback
: isPlainObject$1(fallback)
@@ -6426,6 +7176,7 @@ function getLocaleChain(ctx, fallback, start = '') {
? fallback['default']
: null
: fallback;
+ // convert defaults to array
block = isString$1(defaults) ? [defaults] : defaults;
if (isArray$1(block)) {
appendBlockToChain(chain, block, false);
@@ -6463,13 +7214,16 @@ function appendItemToChain(chain, target, blocks) {
const locale = target.replace(/!/g, '');
chain.push(locale);
if ((isArray$1(blocks) || isPlainObject$1(blocks)) &&
- blocks[locale]) {
+ blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any
+ ) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
follow = blocks[locale];
}
}
}
return follow;
}
+/** @internal */
function updateFallbackLocale(ctx, locale, fallback) {
const context = ctx;
context.__localeChainCache = new Map();
@@ -6477,111 +7231,129 @@ function updateFallbackLocale(ctx, locale, fallback) {
}
const pathStateMachine = [];
-pathStateMachine[0] = {
- ["w"]: [0],
- ["i"]: [3, 0],
- ["["]: [4],
- ["o"]: [7]
+pathStateMachine[0 /* BEFORE_PATH */] = {
+ ["w" /* WORKSPACE */]: [0 /* BEFORE_PATH */],
+ ["i" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],
+ ["[" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],
+ ["o" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]
};
-pathStateMachine[1] = {
- ["w"]: [1],
- ["."]: [2],
- ["["]: [4],
- ["o"]: [7]
+pathStateMachine[1 /* IN_PATH */] = {
+ ["w" /* WORKSPACE */]: [1 /* IN_PATH */],
+ ["." /* DOT */]: [2 /* BEFORE_IDENT */],
+ ["[" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],
+ ["o" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]
};
-pathStateMachine[2] = {
- ["w"]: [2],
- ["i"]: [3, 0],
- ["0"]: [3, 0]
+pathStateMachine[2 /* BEFORE_IDENT */] = {
+ ["w" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],
+ ["i" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],
+ ["0" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]
};
-pathStateMachine[3] = {
- ["i"]: [3, 0],
- ["0"]: [3, 0],
- ["w"]: [1, 1],
- ["."]: [2, 1],
- ["["]: [4, 1],
- ["o"]: [7, 1]
+pathStateMachine[3 /* IN_IDENT */] = {
+ ["i" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],
+ ["0" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],
+ ["w" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],
+ ["." /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],
+ ["[" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],
+ ["o" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]
};
-pathStateMachine[4] = {
- ["'"]: [5, 0],
- ["\""]: [6, 0],
- ["["]: [
- 4,
- 2
+pathStateMachine[4 /* IN_SUB_PATH */] = {
+ ["'" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],
+ ["\"" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],
+ ["[" /* LEFT_BRACKET */]: [
+ 4 /* IN_SUB_PATH */,
+ 2 /* INC_SUB_PATH_DEPTH */
],
- ["]"]: [1, 3],
- ["o"]: 8,
- ["l"]: [4, 0]
+ ["]" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],
+ ["o" /* END_OF_FAIL */]: 8 /* ERROR */,
+ ["l" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]
};
-pathStateMachine[5] = {
- ["'"]: [4, 0],
- ["o"]: 8,
- ["l"]: [5, 0]
+pathStateMachine[5 /* IN_SINGLE_QUOTE */] = {
+ ["'" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],
+ ["o" /* END_OF_FAIL */]: 8 /* ERROR */,
+ ["l" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]
};
-pathStateMachine[6] = {
- ["\""]: [4, 0],
- ["o"]: 8,
- ["l"]: [6, 0]
+pathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {
+ ["\"" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],
+ ["o" /* END_OF_FAIL */]: 8 /* ERROR */,
+ ["l" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]
};
+/**
+ * Check if an expression is a literal value.
+ */
const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
function isLiteral(exp) {
return literalValueRE.test(exp);
}
+/**
+ * Strip quotes from a string
+ */
function stripQuotes(str) {
const a = str.charCodeAt(0);
const b = str.charCodeAt(str.length - 1);
return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;
}
+/**
+ * Determine the type of a character in a keypath.
+ */
function getPathCharType(ch) {
if (ch === undefined || ch === null) {
- return "o";
+ return "o" /* END_OF_FAIL */;
}
const code = ch.charCodeAt(0);
switch (code) {
- case 0x5b:
- case 0x5d:
- case 0x2e:
- case 0x22:
- case 0x27:
+ case 0x5b: // [
+ case 0x5d: // ]
+ case 0x2e: // .
+ case 0x22: // "
+ case 0x27: // '
return ch;
- case 0x5f:
- case 0x24:
- case 0x2d:
- return "i";
- case 0x09:
- case 0x0a:
- case 0x0d:
- case 0xa0:
- case 0xfeff:
- case 0x2028:
- case 0x2029:
- return "w";
- }
- return "i";
+ case 0x5f: // _
+ case 0x24: // $
+ case 0x2d: // -
+ return "i" /* IDENT */;
+ case 0x09: // Tab (HT)
+ case 0x0a: // Newline (LF)
+ case 0x0d: // Return (CR)
+ case 0xa0: // No-break space (NBSP)
+ case 0xfeff: // Byte Order Mark (BOM)
+ case 0x2028: // Line Separator (LS)
+ case 0x2029: // Paragraph Separator (PS)
+ return "w" /* WORKSPACE */;
+ }
+ return "i" /* IDENT */;
}
+/**
+ * Format a subPath, return its plain form if it is
+ * a literal string or number. Otherwise prepend the
+ * dynamic indicator (*).
+ */
function formatSubPath(path) {
const trimmed = path.trim();
+ // invalid leading 0
if (path.charAt(0) === '0' && isNaN(parseInt(path))) {
return false;
}
return isLiteral(trimmed)
? stripQuotes(trimmed)
- : "*" + trimmed;
+ : "*" /* ASTARISK */ + trimmed;
}
+/**
+ * Parse a string path into an array of segments
+ */
function parse(path) {
const keys = [];
let index = -1;
- let mode = 0;
+ let mode = 0 /* BEFORE_PATH */;
let subPathDepth = 0;
let c;
- let key;
+ let key; // eslint-disable-line
let newChar;
let type;
let transition;
let action;
let typeMap;
const actions = [];
- actions[0] = () => {
+ actions[0 /* APPEND */] = () => {
if (key === undefined) {
key = newChar;
}
@@ -6589,21 +7361,21 @@ function parse(path) {
key += newChar;
}
};
- actions[1] = () => {
+ actions[1 /* PUSH */] = () => {
if (key !== undefined) {
keys.push(key);
key = undefined;
}
};
- actions[2] = () => {
- actions[0]();
+ actions[2 /* INC_SUB_PATH_DEPTH */] = () => {
+ actions[0 /* APPEND */]();
subPathDepth++;
};
- actions[3] = () => {
+ actions[3 /* PUSH_SUB_PATH */] = () => {
if (subPathDepth > 0) {
subPathDepth--;
- mode = 4;
- actions[0]();
+ mode = 4 /* IN_SUB_PATH */;
+ actions[0 /* APPEND */]();
}
else {
subPathDepth = 0;
@@ -6615,19 +7387,19 @@ function parse(path) {
return false;
}
else {
- actions[1]();
+ actions[1 /* PUSH */]();
}
}
};
function maybeUnescapeQuote() {
const nextChar = path[index + 1];
- if ((mode === 5 &&
- nextChar === "'") ||
- (mode === 6 &&
- nextChar === "\"")) {
+ if ((mode === 5 /* IN_SINGLE_QUOTE */ &&
+ nextChar === "'" /* SINGLE_QUOTE */) ||
+ (mode === 6 /* IN_DOUBLE_QUOTE */ &&
+ nextChar === "\"" /* DOUBLE_QUOTE */)) {
index++;
newChar = '\\' + nextChar;
- actions[0]();
+ actions[0 /* APPEND */]();
return true;
}
}
@@ -6639,8 +7411,9 @@ function parse(path) {
}
type = getPathCharType(c);
typeMap = pathStateMachine[mode];
- transition = typeMap[type] || typeMap["l"] || 8;
- if (transition === 8) {
+ transition = typeMap[type] || typeMap["l" /* ELSE */] || 8 /* ERROR */;
+ // check parse error
+ if (transition === 8 /* ERROR */) {
return;
}
mode = transition[0];
@@ -6653,16 +7426,20 @@ function parse(path) {
}
}
}
- if (mode === 7) {
+ // check parse finish
+ if (mode === 7 /* AFTER_PATH */) {
return keys;
}
}
}
+// path token cache
const cache = new Map();
function resolveValue(obj, path) {
+ // check object
if (!isObject$1(obj)) {
return null;
}
+ // parse path
let hit = cache.get(path);
if (!hit) {
hit = parse(path);
@@ -6670,9 +7447,11 @@ function resolveValue(obj, path) {
cache.set(path, hit);
}
}
+ // check hit
if (!hit) {
return null;
}
+ // resolve path value
const len = hit.length;
let last = obj;
let i = 0;
@@ -6688,13 +7467,14 @@ function resolveValue(obj, path) {
}
const DEFAULT_MODIFIER = (str) => str;
-const DEFAULT_MESSAGE = (ctx) => '';
+const DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line
const DEFAULT_MESSAGE_DATA_TYPE = 'text';
const DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');
const DEFAULT_INTERPOLATE = toDisplayString$1;
function pluralDefault(choice, choicesLength) {
choice = Math.abs(choice);
if (choicesLength === 2) {
+ // prettier-ignore
return choice
? choice > 1
? 1
@@ -6704,9 +7484,11 @@ function pluralDefault(choice, choicesLength) {
return choice ? Math.min(choice, 2) : 0;
}
function getPluralIndex(options) {
+ // prettier-ignore
const index = isNumber(options.pluralIndex)
? options.pluralIndex
: -1;
+ // prettier-ignore
return options.named && (isNumber(options.named.count) || isNumber(options.named.n))
? isNumber(options.named.count)
? options.named.count
@@ -6736,29 +7518,30 @@ function createMessageContext(options = {}) {
isFunction$1(options.pluralRules[locale])
? pluralDefault
: undefined;
+ const plural = (messages) => messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];
const _list = options.list || [];
const list = (index) => _list[index];
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
const _named = options.named || {};
isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);
const named = (key) => _named[key];
- const modifier = (name) => options.modifiers
- ? options.modifiers[name]
- : DEFAULT_MODIFIER;
- function message(name) {
+ // TODO: need to design resolve message function?
+ function message(key) {
+ // prettier-ignore
const msg = isFunction$1(options.messages)
- ? options.messages(name)
+ ? options.messages(key)
: isObject$1(options.messages)
- ? options.messages[name]
+ ? options.messages[key]
: false;
return !msg
? options.parent
- ? options.parent.message(name)
+ ? options.parent.message(key) // resolve from parent messages
: DEFAULT_MESSAGE
: msg;
}
- const type = isPlainObject$1(options.processor) && isString$1(options.processor.type)
- ? options.processor.type
- : DEFAULT_MESSAGE_DATA_TYPE;
+ const _modifier = (name) => options.modifiers
+ ? options.modifiers[name]
+ : DEFAULT_MODIFIER;
const normalize = isPlainObject$1(options.processor) && isFunction$1(options.processor.normalize)
? options.processor.normalize
: DEFAULT_NORMALIZE;
@@ -6766,28 +7549,37 @@ function createMessageContext(options = {}) {
isFunction$1(options.processor.interpolate)
? options.processor.interpolate
: DEFAULT_INTERPOLATE;
- return {
- ["list"]: list,
- ["named"]: named,
- ["pluralIndex"]: pluralIndex,
- ["pluralRule"]: pluralRule,
- ["orgPluralRule"]: orgPluralRule,
- ["modifier"]: modifier,
- ["message"]: message,
- ["type"]: type,
- ["interpolate"]: interpolate,
- ["normalize"]: normalize
+ const type = isPlainObject$1(options.processor) && isString$1(options.processor.type)
+ ? options.processor.type
+ : DEFAULT_MESSAGE_DATA_TYPE;
+ const ctx = {
+ ["list" /* LIST */]: list,
+ ["named" /* NAMED */]: named,
+ ["plural" /* PLURAL */]: plural,
+ ["linked" /* LINKED */]: (key, modifier) => {
+ // TODO: should check `key`
+ const msg = message(key)(ctx);
+ return isString$1(modifier) ? _modifier(modifier)(msg) : msg;
+ },
+ ["message" /* MESSAGE */]: message,
+ ["type" /* TYPE */]: type,
+ ["interpolate" /* INTERPOLATE */]: interpolate,
+ ["normalize" /* NORMALIZE */]: normalize
};
+ return ctx;
}
+/** @internal */
function createCoreError(code) {
return createCompileError(code, null, undefined);
}
const NOOP_MESSAGE_FUNCTION = () => '';
const isMessageFunction = (val) => isFunction$1(val);
+// implementationo of `translate` function
+/** @internal */
function translate(context, ...args) {
- const { messages, fallbackFormat, postTranslation, unresolving, fallbackLocale, warnHtmlMessage, messageCompiler, onWarn } = context;
+ const { fallbackFormat, postTranslation, unresolving, fallbackLocale } = context;
const [key, options] = parseTranslateArgs(...args);
const missingWarn = isBoolean(options.missingWarn)
? options.missingWarn
@@ -6795,30 +7587,25 @@ function translate(context, ...args) {
const fallbackWarn = isBoolean(options.fallbackWarn)
? options.fallbackWarn
: context.fallbackWarn;
- const defaultMsgOrKey = isString$1(options.default) || isBoolean(options.default)
+ const escapeParameter = isBoolean(options.escapeParameter)
+ ? options.escapeParameter
+ : context.escapeParameter;
+ // prettier-ignore
+ const defaultMsgOrKey = isString$1(options.default) || isBoolean(options.default) // default by function option
? !isBoolean(options.default)
? options.default
: key
- : fallbackFormat
+ : fallbackFormat // default by `fallbackFormat` option
? key
: '';
const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';
const locale = isString$1(options.locale) ? options.locale : context.locale;
- const locales = getLocaleChain(context, fallbackLocale, locale);
- let message = {};
- let targetLocale;
- let format = null;
- for (let i = 0; i < locales.length; i++) {
- targetLocale = locales[i];
- message =
- messages[targetLocale] || {};
- if ((format = resolveValue(message, key)) === null) {
- format = message[key];
- }
- if (isString$1(format) || isFunction$1(format))
- break;
- handleMissing(context, key, targetLocale, missingWarn, 'translate');
- }
+ // escape params
+ escapeParameter && escapeParams(options);
+ // resolve message format
+ // eslint-disable-next-line prefer-const
+ let [format, targetLocale, message] = resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn);
+ // if you use default message, set it as message format!
let cacheBaseKey = key;
if (!(isString$1(format) || isMessageFunction(format))) {
if (enableDefaultMsg) {
@@ -6826,39 +7613,90 @@ function translate(context, ...args) {
cacheBaseKey = format;
}
}
+ // checking message format and target locale
if (!(isString$1(format) || isMessageFunction(format)) ||
!isString$1(targetLocale)) {
return unresolving ? NOT_REOSLVED : key;
}
+ // setup compile error detecting
let occured = false;
const errorDetector = () => {
occured = true;
};
- let msg;
- if (!isMessageFunction(format)) {
- msg = messageCompiler(format, getCompileOptions(targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));
- msg.locale = targetLocale;
- msg.key = key;
- msg.source = format;
- }
- else {
- msg = format;
- msg.locale = msg.locale || targetLocale;
- msg.key = msg.key || key;
- }
+ // compile message format
+ const msg = compileMessasgeFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector);
+ // if occured compile error, return the message format
if (occured) {
return format;
}
+ // evaluate message with context
const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);
const msgContext = createMessageContext(ctxOptions);
- const messaged = msg(msgContext);
+ const messaged = evaluateMessage(context, msg, msgContext);
+ // if use post translation option, procee it with handler
return postTranslation ? postTranslation(messaged) : messaged;
}
+function escapeParams(options) {
+ if (isArray$1(options.list)) {
+ options.list = options.list.map(item => isString$1(item) ? escapeHtml(item) : item);
+ }
+ else if (isObject$1(options.named)) {
+ Object.keys(options.named).forEach(key => {
+ if (isString$1(options.named[key])) {
+ options.named[key] = escapeHtml(options.named[key]);
+ }
+ });
+ }
+}
+function resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {
+ const { messages, onWarn } = context;
+ const locales = getLocaleChain(context, fallbackLocale, locale);
+ let message = {};
+ let targetLocale;
+ let format = null;
+ let to = null;
+ const type = 'translate';
+ for (let i = 0; i < locales.length; i++) {
+ targetLocale = to = locales[i];
+ message =
+ messages[targetLocale] || {};
+ if ((format = resolveValue(message, key)) === null) {
+ // if null, resolve with object key path
+ format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any
+ }
+ if (isString$1(format) || isFunction$1(format))
+ break;
+ const missingRet = handleMissing(context, key, targetLocale, missingWarn, type);
+ if (missingRet !== key) {
+ format = missingRet;
+ }
+ }
+ return [format, targetLocale, message];
+}
+function compileMessasgeFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {
+ const { messageCompiler, warnHtmlMessage } = context;
+ if (isMessageFunction(format)) {
+ const msg = format;
+ msg.locale = msg.locale || targetLocale;
+ msg.key = msg.key || key;
+ return msg;
+ }
+ const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));
+ msg.locale = targetLocale;
+ msg.key = key;
+ msg.source = format;
+ return msg;
+}
+function evaluateMessage(context, msg, msgCtx) {
+ const messaged = msg(msgCtx);
+ return messaged;
+}
+/** @internal */
function parseTranslateArgs(...args) {
const [arg1, arg2, arg3] = args;
const options = {};
if (!isString$1(arg1)) {
- throw createCoreError(12);
+ throw createCoreError(12 /* INVALID_ARGUMENT */);
}
const key = arg1;
if (isNumber(arg2)) {
@@ -6884,7 +7722,7 @@ function parseTranslateArgs(...args) {
}
return [key, options];
}
-function getCompileOptions(locale, key, source, warnHtmlMessage, errorDetector) {
+function getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {
return {
warnHtmlMessage,
onError: (err) => {
@@ -6897,7 +7735,7 @@ function getCompileOptions(locale, key, source, warnHtmlMessage, errorDetector)
};
}
function getMessageContextOptions(context, locale, message, options) {
- const { modifiers, pluralRules, messageCompiler } = context;
+ const { modifiers, pluralRules } = context;
const resolveMessage = (key) => {
const val = resolveValue(message, key);
if (isString$1(val)) {
@@ -6905,7 +7743,7 @@ function getMessageContextOptions(context, locale, message, options) {
const errorDetector = () => {
occured = true;
};
- const msg = messageCompiler(val, getCompileOptions(locale, key, val, context.warnHtmlMessage, errorDetector));
+ const msg = compileMessasgeFormat(context, key, locale, val, key, errorDetector);
return !occured
? msg
: NOOP_MESSAGE_FUNCTION;
@@ -6914,6 +7752,7 @@ function getMessageContextOptions(context, locale, message, options) {
return val;
}
else {
+ // TODO: should be implemented warning message
return NOOP_MESSAGE_FUNCTION;
}
};
@@ -6938,6 +7777,8 @@ function getMessageContextOptions(context, locale, message, options) {
return ctxOptions;
}
+// implementation of `datetime` function
+/** @internal */
function datetime(context, ...args) {
const { datetimeFormats, unresolving, fallbackLocale, onWarn } = context;
const { __datetimeFormatters } = context;
@@ -6954,18 +7795,22 @@ function datetime(context, ...args) {
if (!isString$1(key) || key === '') {
return new Intl.DateTimeFormat(locale).format(value);
}
+ // resolve format
let datetimeFormat = {};
let targetLocale;
let format = null;
+ let to = null;
+ const type = 'datetime format';
for (let i = 0; i < locales.length; i++) {
- targetLocale = locales[i];
+ targetLocale = to = locales[i];
datetimeFormat =
datetimeFormats[targetLocale] || {};
format = datetimeFormat[key];
if (isPlainObject$1(format))
break;
- handleMissing(context, key, targetLocale, missingWarn, 'datetime');
+ handleMissing(context, key, targetLocale, missingWarn, type);
}
+ // checking format and target locale
if (!isPlainObject$1(format) || !isString$1(targetLocale)) {
return unresolving ? NOT_REOSLVED : key;
}
@@ -6980,14 +7825,39 @@ function datetime(context, ...args) {
}
return !part ? formatter.format(value) : formatter.formatToParts(value);
}
+/** @internal */
function parseDateTimeArgs(...args) {
const [arg1, arg2, arg3, arg4] = args;
let options = {};
let orverrides = {};
- if (!(isNumber(arg1) || isDate$1(arg1))) {
- throw createCoreError(12);
+ let value;
+ if (isString$1(arg1)) {
+ // Only allow ISO strings - other date formats are often supported,
+ // but may cause different results in different browsers.
+ if (!/\d{4}-\d{2}-\d{2}(T.*)?/.test(arg1)) {
+ throw createCoreError(14 /* INVALID_ISO_DATE_ARGUMENT */);
+ }
+ value = new Date(arg1);
+ try {
+ // This will fail if the date is not valid
+ value.toISOString();
+ }
+ catch (e) {
+ throw createCoreError(14 /* INVALID_ISO_DATE_ARGUMENT */);
+ }
+ }
+ else if (isDate$1(arg1)) {
+ if (isNaN(arg1.getTime())) {
+ throw createCoreError(13 /* INVALID_DATE_ARGUMENT */);
+ }
+ value = arg1;
+ }
+ else if (isNumber(arg1)) {
+ value = arg1;
+ }
+ else {
+ throw createCoreError(12 /* INVALID_ARGUMENT */);
}
- const value = arg1;
if (isString$1(arg2)) {
options.key = arg2;
}
@@ -7005,6 +7875,7 @@ function parseDateTimeArgs(...args) {
}
return [options.key || '', value, options, orverrides];
}
+/** @internal */
function clearDateTimeFormat(ctx, locale, format) {
const context = ctx;
for (const key in format) {
@@ -7016,6 +7887,8 @@ function clearDateTimeFormat(ctx, locale, format) {
}
}
+// implementation of `number` function
+/** @internal */
function number(context, ...args) {
const { numberFormats, unresolving, fallbackLocale, onWarn } = context;
const { __numberFormatters } = context;
@@ -7032,18 +7905,22 @@ function number(context, ...args) {
if (!isString$1(key) || key === '') {
return new Intl.NumberFormat(locale).format(value);
}
+ // resolve format
let numberFormat = {};
let targetLocale;
let format = null;
+ let to = null;
+ const type = 'number format';
for (let i = 0; i < locales.length; i++) {
- targetLocale = locales[i];
+ targetLocale = to = locales[i];
numberFormat =
numberFormats[targetLocale] || {};
format = numberFormat[key];
if (isPlainObject$1(format))
break;
- handleMissing(context, key, targetLocale, missingWarn, 'number');
+ handleMissing(context, key, targetLocale, missingWarn, type);
}
+ // checking format and target locale
if (!isPlainObject$1(format) || !isString$1(targetLocale)) {
return unresolving ? NOT_REOSLVED : key;
}
@@ -7058,12 +7935,13 @@ function number(context, ...args) {
}
return !part ? formatter.format(value) : formatter.formatToParts(value);
}
+/** @internal */
function parseNumberArgs(...args) {
const [arg1, arg2, arg3, arg4] = args;
let options = {};
let orverrides = {};
if (!isNumber(arg1)) {
- throw createCoreError(12);
+ throw createCoreError(12 /* INVALID_ARGUMENT */);
}
const value = arg1;
if (isString$1(arg2)) {
@@ -7083,6 +7961,7 @@ function parseNumberArgs(...args) {
}
return [options.key || '', value, options, orverrides];
}
+/** @internal */
function clearNumberFormat(ctx, locale, format) {
const context = ctx;
for (const key in format) {
@@ -7098,22 +7977,35 @@ function createI18nError(code, ...args) {
return createCompileError(code, null, undefined);
}
+/**
+ * Composer
+ *
+ * Composer is offered composition API for Vue 3
+ * This module is offered new style vue-i18n API
+ */
+const TransrateVNodeSymbol = makeSymbol('__transrateVNode');
+const DatetimePartsSymbol = makeSymbol('__datetimeParts');
+const NumberPartsSymbol = makeSymbol('__numberParts');
+const EnableEmitter = makeSymbol('__enableEmitter');
+const DisableEmitter = makeSymbol('__disableEmitter');
let composerID = 0;
function defineRuntimeMissingHandler(missing) {
return ((ctx, locale, key, type) => {
return missing(locale, key, getCurrentInstance() || undefined, type);
});
}
-function getLocaleMessages(options, locale) {
+function getLocaleMessages(locale, options) {
const { messages, __i18n } = options;
- let ret = isPlainObject$1(messages)
+ // prettier-ignore
+ const ret = isPlainObject$1(messages)
? messages
: isArray$1(__i18n)
? {}
: { [locale]: {} };
+ // merge locale messages of i18n custom block
if (isArray$1(__i18n)) {
__i18n.forEach(raw => {
- ret = Object.assign(ret, isString$1(raw) ? JSON.parse(raw) : raw);
+ deepCopy(isString$1(raw) ? JSON.parse(raw) : raw, ret);
});
return ret;
}
@@ -7123,6 +8015,26 @@ function getLocaleMessages(options, locale) {
}
return ret;
}
+const hasOwnProperty$1 = Object.prototype.hasOwnProperty;
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+function hasOwn$1(obj, key) {
+ return hasOwnProperty$1.call(obj, key);
+}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+function deepCopy(source, destination) {
+ for (const key in source) {
+ if (hasOwn$1(source, key)) {
+ if (!isObject$1(source[key])) {
+ destination[key] = destination[key] != null ? destination[key] : {};
+ destination[key] = source[key];
+ }
+ else {
+ destination[key] = destination[key] != null ? destination[key] : {};
+ deepCopy(source[key], destination[key]);
+ }
+ }
+ }
+}
function addPreCompileMessages(messages, functions) {
const keys = Object.keys(functions);
keys.forEach(key => {
@@ -7135,7 +8047,7 @@ function addPreCompileMessages(messages, functions) {
const paths = parse(k);
if (paths != null) {
const len = paths.length;
- let last = targetLocaleMessage;
+ let last = targetLocaleMessage; // eslint-disable-line @typescript-eslint/no-explicit-any
let i = 0;
while (i < len) {
const path = paths[i];
@@ -7155,18 +8067,27 @@ function addPreCompileMessages(messages, functions) {
}
});
}
+/**
+ * Create composer interface factory
+ *
+ * @internal
+ */
function createComposer(options = {}) {
const { __root } = options;
const _isGlobal = __root === undefined;
let _inheritLocale = isBoolean(options.inheritLocale)
? options.inheritLocale
: true;
- const _locale = ref(__root && _inheritLocale
+ const _locale = ref(
+ // prettier-ignore
+ __root && _inheritLocale
? __root.locale.value
: isString$1(options.locale)
? options.locale
: 'en-US');
- const _fallbackLocale = ref(__root && _inheritLocale
+ const _fallbackLocale = ref(
+ // prettier-ignore
+ __root && _inheritLocale
? __root.fallbackLocale.value
: isString$1(options.fallbackLocale) ||
isArray$1(options.fallbackLocale) ||
@@ -7174,18 +8095,21 @@ function createComposer(options = {}) {
options.fallbackLocale === false
? options.fallbackLocale
: _locale.value);
- const _messages = ref(getLocaleMessages(options, _locale.value));
+ const _messages = ref(getLocaleMessages(_locale.value, options));
const _datetimeFormats = ref(isPlainObject$1(options.datetimeFormats)
? options.datetimeFormats
: { [_locale.value]: {} });
const _numberFormats = ref(isPlainObject$1(options.numberFormats)
? options.numberFormats
: { [_locale.value]: {} });
+ // warning suppress options
+ // prettier-ignore
let _missingWarn = __root
? __root.missingWarn
: isBoolean(options.missingWarn) || isRegExp(options.missingWarn)
? options.missingWarn
: true;
+ // prettier-ignore
let _fallbackWarn = __root
? __root.fallbackWarn
: isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)
@@ -7194,23 +8118,32 @@ function createComposer(options = {}) {
let _fallbackRoot = isBoolean(options.fallbackRoot)
? options.fallbackRoot
: true;
+ // configure fall bakck to root
let _fallbackFormat = !!options.fallbackFormat;
+ // runtime missing
let _missing = isFunction$1(options.missing) ? options.missing : null;
let _runtimeMissing = isFunction$1(options.missing)
? defineRuntimeMissingHandler(options.missing)
: null;
+ // postTranslation handler
let _postTranslation = isFunction$1(options.postTranslation)
? options.postTranslation
: null;
let _warnHtmlMessage = isBoolean(options.warnHtmlMessage)
? options.warnHtmlMessage
: true;
+ let _escapeParameter = !!options.escapeParameter;
+ // custom linked modifiers
+ // prettier-ignore
const _modifiers = __root
? __root.modifiers
: isPlainObject$1(options.modifiers)
? options.modifiers
: {};
+ // pluralRules
const _pluralRules = options.pluralRules;
+ // runtime context
+ // eslint-disable-next-line prefer-const
let _context;
function getRuntimeContext() {
return createRuntimeContext({
@@ -7228,16 +8161,24 @@ function createComposer(options = {}) {
unresolving: true,
postTranslation: _postTranslation === null ? undefined : _postTranslation,
warnHtmlMessage: _warnHtmlMessage,
+ escapeParameter: _escapeParameter,
__datetimeFormatters: isPlainObject$1(_context)
? _context.__datetimeFormatters
: undefined,
__numberFormatters: isPlainObject$1(_context)
? _context.__numberFormatters
+ : undefined,
+ __emitter: isPlainObject$1(_context)
+ ? _context.__emitter
: undefined
});
}
_context = getRuntimeContext();
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
+ /*!
+ * define properties
+ */
+ // locale
const locale = computed$1({
get: () => _locale.value,
set: val => {
@@ -7245,6 +8186,7 @@ function createComposer(options = {}) {
_context.locale = _locale.value;
}
});
+ // fallbackLocale
const fallbackLocale = computed$1({
get: () => _fallbackLocale.value,
set: val => {
@@ -7253,19 +8195,29 @@ function createComposer(options = {}) {
updateFallbackLocale(_context, _locale.value, val);
}
});
+ // messages
const messages = computed$1(() => _messages.value);
+ // datetimeFormats
const datetimeFormats = computed$1(() => _datetimeFormats.value);
+ // numberFormats
const numberFormats = computed$1(() => _numberFormats.value);
+ /**
+ * define methods
+ */
+ // getPostTranslationHandler
function getPostTranslationHandler() {
return isFunction$1(_postTranslation) ? _postTranslation : null;
}
+ // setPostTranslationHandler
function setPostTranslationHandler(handler) {
_postTranslation = handler;
_context.postTranslation = handler;
}
+ // getMissingHandler
function getMissingHandler() {
return _missing;
}
+ // setMissingHandler
function setMissingHandler(handler) {
if (handler !== null) {
_runtimeMissing = defineRuntimeMissingHandler(handler);
@@ -7274,7 +8226,8 @@ function createComposer(options = {}) {
_context.missing = _runtimeMissing;
}
function wrapWithDeps(fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) {
- const ret = fn(getRuntimeContext());
+ const context = getRuntimeContext();
+ const ret = fn(context); // track reactive dependency, see the getRuntimeContext
if (isNumber(ret) && ret === NOT_REOSLVED) {
const key = argumentParser();
return _fallbackRoot && __root
@@ -7285,31 +8238,38 @@ function createComposer(options = {}) {
return ret;
}
else {
- throw createI18nError(12);
+ /* istanbul ignore next */
+ throw createI18nError(12 /* UNEXPECTED_RETURN_TYPE */);
}
}
+ // t
function t(...args) {
return wrapWithDeps(context => translate(context, ...args), () => parseTranslateArgs(...args)[0], 'translate', root => root.t(...args), key => key, val => isString$1(val));
}
+ // d
function d(...args) {
return wrapWithDeps(context => datetime(context, ...args), () => parseDateTimeArgs(...args)[0], 'datetime format', root => root.d(...args), () => MISSING_RESOLVE_VALUE, val => isString$1(val));
}
+ // n
function n(...args) {
return wrapWithDeps(context => number(context, ...args), () => parseNumberArgs(...args)[0], 'number format', root => root.n(...args), () => MISSING_RESOLVE_VALUE, val => isString$1(val));
}
+ // for custom processor
function normalize(values) {
return values.map(val => isString$1(val) ? createVNode(Text, null, val, 0) : val);
}
const interpolate = (val) => val;
const processor = {
normalize,
- interpolate
+ interpolate,
+ type: 'vnode'
};
+ // __transrateVNode, using for `i18n-t` component
function __transrateVNode(...args) {
return wrapWithDeps(context => {
let ret;
+ const _context = context;
try {
- const _context = context;
_context.processor = processor;
ret = translate(_context, ...args);
}
@@ -7317,61 +8277,88 @@ function createComposer(options = {}) {
_context.processor = null;
}
return ret;
- }, () => parseTranslateArgs(...args)[0], 'translate', root => root.__transrateVNode(...args), key => [createVNode(Text, null, key, 0)], val => isArray$1(val));
+ }, () => parseTranslateArgs(...args)[0], 'translate',
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ root => root[TransrateVNodeSymbol](...args), key => [createVNode(Text, null, key, 0)], val => isArray$1(val));
}
+ // __numberParts, using for `i18n-n` component
function __numberParts(...args) {
- return wrapWithDeps(context => number(context, ...args), () => parseNumberArgs(...args)[0], 'number format', root => root.__numberParts(...args), () => [], val => isString$1(val) || isArray$1(val));
+ return wrapWithDeps(context => number(context, ...args), () => parseNumberArgs(...args)[0], 'number format',
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ root => root[NumberPartsSymbol](...args), () => [], val => isString$1(val) || isArray$1(val));
}
+ // __datetimeParts, using for `i18n-d` component
function __datetimeParts(...args) {
- return wrapWithDeps(context => datetime(context, ...args), () => parseDateTimeArgs(...args)[0], 'datetime format', root => root.__datetimeParts(...args), () => [], val => isString$1(val) || isArray$1(val));
+ return wrapWithDeps(context => datetime(context, ...args), () => parseDateTimeArgs(...args)[0], 'datetime format',
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ root => root[DatetimePartsSymbol](...args), () => [], val => isString$1(val) || isArray$1(val));
}
+ // te
+ function te(key, locale) {
+ const targetLocale = isString$1(locale) ? locale : _locale.value;
+ const message = getLocaleMessage(targetLocale);
+ return resolveValue(message, key) !== null;
+ }
+ // tm
function tm(key) {
const messages = _messages.value[_locale.value] || {};
const target = resolveValue(messages, key);
+ // prettier-ignore
return target != null
? target
: __root
? __root.tm(key) || {}
: {};
}
+ // getLocaleMessage
function getLocaleMessage(locale) {
return (_messages.value[locale] || {});
}
+ // setLocaleMessage
function setLocaleMessage(locale, message) {
_messages.value[locale] = message;
_context.messages = _messages.value;
}
+ // mergeLocaleMessage
function mergeLocaleMessage(locale, message) {
_messages.value[locale] = Object.assign(_messages.value[locale] || {}, message);
_context.messages = _messages.value;
}
+ // getDateTimeFormat
function getDateTimeFormat(locale) {
return _datetimeFormats.value[locale] || {};
}
+ // setDateTimeFormat
function setDateTimeFormat(locale, format) {
_datetimeFormats.value[locale] = format;
_context.datetimeFormats = _datetimeFormats.value;
clearDateTimeFormat(_context, locale, format);
}
+ // mergeDateTimeFormat
function mergeDateTimeFormat(locale, format) {
_datetimeFormats.value[locale] = Object.assign(_datetimeFormats.value[locale] || {}, format);
_context.datetimeFormats = _datetimeFormats.value;
clearDateTimeFormat(_context, locale, format);
}
+ // getNumberFormat
function getNumberFormat(locale) {
return _numberFormats.value[locale] || {};
}
+ // setNumberFormat
function setNumberFormat(locale, format) {
_numberFormats.value[locale] = format;
_context.numberFormats = _numberFormats.value;
clearNumberFormat(_context, locale, format);
}
+ // mergeNumberFormat
function mergeNumberFormat(locale, format) {
_numberFormats.value[locale] = Object.assign(_numberFormats.value[locale] || {}, format);
_context.numberFormats = _numberFormats.value;
clearNumberFormat(_context, locale, format);
}
+ // for debug
composerID++;
+ // watch root locale & fallbackLocale
if (__root) {
watch(__root.locale, (val) => {
if (_inheritLocale) {
@@ -7388,7 +8375,10 @@ function createComposer(options = {}) {
}
});
}
+ // export composition API!
const composer = {
+ // properties
+ id: composerID,
locale,
fallbackLocale,
get inheritLocale() {
@@ -7412,7 +8402,7 @@ function createComposer(options = {}) {
return _modifiers;
},
get pluralRules() {
- return _pluralRules;
+ return _pluralRules || {};
},
get isGlobal() {
return _isGlobal;
@@ -7451,10 +8441,18 @@ function createComposer(options = {}) {
_warnHtmlMessage = val;
_context.warnHtmlMessage = val;
},
- __id: composerID,
+ get escapeParameter() {
+ return _escapeParameter;
+ },
+ set escapeParameter(val) {
+ _escapeParameter = val;
+ _context.escapeParameter = val;
+ },
+ // methods
t,
d,
n,
+ te,
tm,
getLocaleMessage,
setLocaleMessage,
@@ -7469,13 +8467,23 @@ function createComposer(options = {}) {
setPostTranslationHandler,
getMissingHandler,
setMissingHandler,
- __transrateVNode,
- __numberParts,
- __datetimeParts
+ [TransrateVNodeSymbol]: __transrateVNode,
+ [NumberPartsSymbol]: __numberParts,
+ [DatetimePartsSymbol]: __datetimeParts
};
return composer;
}
+/**
+ * Legacy
+ *
+ * This module is offered legacy vue-i18n API compatibility
+ */
+/**
+ * Convert to I18n Composer Options from VueI18n Options
+ *
+ * @internal
+ */
function convertComposerOptions(options) {
const locale = isString$1(options.locale) ? options.locale : 'en-US';
const fallbackLocale = isString$1(options.fallbackLocale) ||
@@ -7497,6 +8505,7 @@ function convertComposerOptions(options) {
? options.fallbackRoot
: true;
const fallbackFormat = !!options.formatFallbackMessages;
+ const modifiers = isPlainObject$1(options.modifiers) ? options.modifiers : {};
const pluralizationRules = options.pluralizationRules;
const postTranslation = isFunction$1(options.postTranslation)
? options.postTranslation
@@ -7504,6 +8513,7 @@ function convertComposerOptions(options) {
const warnHtmlMessage = isString$1(options.warnHtmlInMessage)
? options.warnHtmlInMessage !== 'off'
: true;
+ const escapeParameter = !!options.escapeParameterHtml;
const inheritLocale = isBoolean(options.sync) ? options.sync : true;
let messages = options.messages;
if (isPlainObject$1(options.sharedMessages)) {
@@ -7529,42 +8539,63 @@ function convertComposerOptions(options) {
fallbackWarn,
fallbackRoot,
fallbackFormat,
+ modifiers,
pluralRules: pluralizationRules,
postTranslation,
warnHtmlMessage,
+ escapeParameter,
inheritLocale,
__i18n,
__root
};
}
+/**
+ * create VueI18n interface factory
+ *
+ * @internal
+ */
function createVueI18n(options = {}) {
const composer = createComposer(convertComposerOptions(options));
+ // defines VueI18n
const vueI18n = {
+ /**
+ * properties
+ */
+ // id
+ id: composer.id,
+ // locale
get locale() {
return composer.locale.value;
},
set locale(val) {
composer.locale.value = val;
},
+ // fallbackLocale
get fallbackLocale() {
return composer.fallbackLocale.value;
},
set fallbackLocale(val) {
composer.fallbackLocale.value = val;
},
+ // messages
get messages() {
return composer.messages.value;
},
+ // datetimeFormats
get datetimeFormats() {
return composer.datetimeFormats.value;
},
+ // numberFormats
get numberFormats() {
return composer.numberFormats.value;
},
+ // availableLocales
get availableLocales() {
return composer.availableLocales;
},
+ // formatter
get formatter() {
+ // dummy
return {
interpolate() {
return [];
@@ -7573,12 +8604,14 @@ function createVueI18n(options = {}) {
},
set formatter(val) {
},
+ // missing
get missing() {
return composer.getMissingHandler();
},
set missing(handler) {
composer.setMissingHandler(handler);
},
+ // silentTranslationWarn
get silentTranslationWarn() {
return isBoolean(composer.missingWarn)
? !composer.missingWarn
@@ -7587,6 +8620,7 @@ function createVueI18n(options = {}) {
set silentTranslationWarn(val) {
composer.missingWarn = isBoolean(val) ? !val : val;
},
+ // silentFallbackWarn
get silentFallbackWarn() {
return isBoolean(composer.fallbackWarn)
? !composer.fallbackWarn
@@ -7595,44 +8629,68 @@ function createVueI18n(options = {}) {
set silentFallbackWarn(val) {
composer.fallbackWarn = isBoolean(val) ? !val : val;
},
+ // modifiers
+ get modifiers() {
+ return composer.modifiers;
+ },
+ // formatFallbackMessages
get formatFallbackMessages() {
return composer.fallbackFormat;
},
set formatFallbackMessages(val) {
composer.fallbackFormat = val;
},
+ // postTranslation
get postTranslation() {
return composer.getPostTranslationHandler();
},
set postTranslation(handler) {
composer.setPostTranslationHandler(handler);
},
+ // sync
get sync() {
return composer.inheritLocale;
},
set sync(val) {
composer.inheritLocale = val;
},
+ // warnInHtmlMessage
get warnHtmlInMessage() {
return composer.warnHtmlMessage ? 'warn' : 'off';
},
set warnHtmlInMessage(val) {
composer.warnHtmlMessage = val !== 'off';
},
+ // escapeParameterHtml
+ get escapeParameterHtml() {
+ return composer.escapeParameter;
+ },
+ set escapeParameterHtml(val) {
+ composer.escapeParameter = val;
+ },
+ // preserveDirectiveContent
get preserveDirectiveContent() {
return true;
},
set preserveDirectiveContent(val) {
},
- __id: composer.__id,
+ // pluralizationRules
+ get pluralizationRules() {
+ return composer.pluralRules || {};
+ },
+ // for internal
__composer: composer,
+ /**
+ * methods
+ */
+ // t
t(...args) {
const [arg1, arg2, arg3] = args;
const options = {};
let list = null;
let named = null;
if (!isString$1(arg1)) {
- throw createI18nError(13);
+ throw createI18nError(13 /* INVALID_ARGUMENT */);
}
const key = arg1;
if (isString$1(arg2)) {
@@ -7652,13 +8710,14 @@ function createVueI18n(options = {}) {
}
return composer.t(key, list || named || {}, options);
},
+ // tc
tc(...args) {
const [arg1, arg2, arg3] = args;
const options = { plural: 1 };
let list = null;
let named = null;
if (!isString$1(arg1)) {
- throw createI18nError(13);
+ throw createI18nError(13 /* INVALID_ARGUMENT */);
}
const key = arg1;
if (isString$1(arg2)) {
@@ -7684,50 +8743,64 @@ function createVueI18n(options = {}) {
}
return composer.t(key, list || named || {}, options);
},
+ // te
te(key, locale) {
- const targetLocale = isString$1(locale) ? locale : composer.locale.value;
- const message = composer.getLocaleMessage(targetLocale);
- return resolveValue(message, key) !== null;
+ return composer.te(key, locale);
},
+ // tm
tm(key) {
return composer.tm(key);
},
+ // getLocaleMessage
getLocaleMessage(locale) {
return composer.getLocaleMessage(locale);
},
+ // setLocaleMessage
setLocaleMessage(locale, message) {
composer.setLocaleMessage(locale, message);
},
+ // mergeLocaleMessasge
mergeLocaleMessage(locale, message) {
composer.mergeLocaleMessage(locale, message);
},
+ // d
d(...args) {
return composer.d(...args);
},
+ // getDateTimeFormat
getDateTimeFormat(locale) {
return composer.getDateTimeFormat(locale);
},
+ // setDateTimeFormat
setDateTimeFormat(locale, format) {
composer.setDateTimeFormat(locale, format);
},
+ // mergeDateTimeFormat
mergeDateTimeFormat(locale, format) {
composer.mergeDateTimeFormat(locale, format);
},
+ // n
n(...args) {
return composer.n(...args);
},
+ // getNumberFormat
getNumberFormat(locale) {
return composer.getNumberFormat(locale);
},
+ // setNumberFormat
setNumberFormat(locale, format) {
composer.setNumberFormat(locale, format);
},
+ // mergeNumberFormat
mergeNumberFormat(locale, format) {
composer.mergeNumberFormat(locale, format);
},
+ // getChoiceIndex
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
getChoiceIndex(choice, choicesLength) {
return -1;
},
+ // for internal
__onComponentInstanceCreated(target) {
const { componentInstanceCreatedListener } = options;
if (componentInstanceCreatedListener) {
@@ -7752,7 +8825,57 @@ const baseFormatProps = {
}
};
+/**
+ * Translation Component
+ *
+ * @remarks
+ * See the following items for property about details
+ *
+ * @VueI18nSee [TranslationProps](component#translationprops)
+ * @VueI18nSee [BaseFormatProps](component#baseformatprops)
+ * @VueI18nSee [Component Interpolation](../advanced/component)
+ *
+ * @example
+ * ```html
+ *
+ * ```
+ * ```js
+ * import { createApp } from 'vue'
+ * import { createI18n } from 'vue-i18n'
+ *
+ * const messages = {
+ * en: {
+ * tos: 'Term of Service',
+ * term: 'I accept xxx {0}.'
+ * },
+ * ja: {
+ * tos: '利用規約',
+ * term: '私は xxx の{0}に同意します。'
+ * }
+ * }
+ *
+ * const i18n = createI18n({
+ * locale: 'en',
+ * messages
+ * })
+ *
+ * const app = createApp({
+ * data: {
+ * url: '/term'
+ * }
+ * }).use(i18n).mount('#app')
+ * ```
+ *
+ * @VueI18nComponent
+ */
const Translation = {
+ /* eslint-disable */
name: 'i18n-t',
props: {
...baseFormatProps,
@@ -7762,9 +8885,11 @@ const Translation = {
},
plural: {
type: [Number, String],
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
validator: (val) => isNumber(val) || !isNaN(val)
}
},
+ /* eslint-enable */
setup(props, context) {
const { slots, attrs } = context;
const i18n = useI18n({ useScope: props.scope });
@@ -7778,7 +8903,9 @@ const Translation = {
options.plural = isString$1(props.plural) ? +props.plural : props.plural;
}
const arg = getInterpolateArg(context, keys);
- const children = i18n.__transrateVNode(props.keypath, arg, options);
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);
+ // prettier-ignore
return isString$1(props.tag)
? h(props.tag, { ...attrs }, children)
: isObject$1(props.tag)
@@ -7789,9 +8916,11 @@ const Translation = {
};
function getInterpolateArg({ slots }, keys) {
if (keys.length === 1 && keys[0] === 'default') {
+ // default slot only
return slots.default ? slots.default() : [];
}
else {
+ // named slots
return keys.reduce((arg, key) => {
const slot = slots[key];
if (slot) {
@@ -7814,12 +8943,15 @@ function renderFormatter(props, context, slotKeys, partFormatter) {
options.key = props.format;
}
else if (isObject$1(props.format)) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
if (isString$1(props.format.key)) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
options.key = props.format.key;
}
+ // Filter out number format options only
orverrides = Object.keys(props.format).reduce((options, prop) => {
return slotKeys.includes(prop)
- ? Object.assign({}, options, { [prop]: props.format[prop] })
+ ? Object.assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any
: options;
}, {});
}
@@ -7836,6 +8968,7 @@ function renderFormatter(props, context, slotKeys, partFormatter) {
else if (isString$1(parts)) {
children = [parts];
}
+ // prettier-ignore
return isString$1(props.tag)
? h(props.tag, { ...attrs }, children)
: isObject$1(props.tag)
@@ -7861,7 +8994,25 @@ const NUMBER_FORMAT_KEYS = [
'notation',
'formatMatcher'
];
+/**
+ * Number Format Component
+ *
+ * @remarks
+ * See the following items for property about details
+ *
+ * @VueI18nSee [FormattableProps](component#formattableprops)
+ * @VueI18nSee [BaseFormatProps](component#baseformatprops)
+ * @VueI18nSee [Custom Formatting](../essentials/number#custom-formatting)
+ *
+ * @VueI18nDanger
+ * Not supported IE, due to no support `Intl.NumberForamt#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)
+ *
+ * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)
+ *
+ * @VueI18nComponent
+ */
const NumberFormat = {
+ /* eslint-disable */
name: 'i18n-n',
props: {
...baseFormatProps,
@@ -7873,9 +9024,12 @@ const NumberFormat = {
type: [String, Object]
}
},
+ /* eslint-enable */
setup(props, context) {
const i18n = useI18n({ useScope: 'parent' });
- return renderFormatter(props, context, NUMBER_FORMAT_KEYS, (...args) => i18n.__numberParts(...args));
+ return renderFormatter(props, context, NUMBER_FORMAT_KEYS, (...args) =>
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ i18n[NumberPartsSymbol](...args));
}
};
@@ -7901,7 +9055,25 @@ const DATETIME_FORMAT_KEYS = [
'second',
'timeZoneName'
];
+/**
+ * Datetime Format Component
+ *
+ * @remarks
+ * See the following items for property about details
+ *
+ * @VueI18nSee [FormattableProps](component#formattableprops)
+ * @VueI18nSee [BaseFormatProps](component#baseformatprops)
+ * @VueI18nSee [Custom Formatting](../essentials/datetime#custom-formatting)
+ *
+ * @VueI18nDanger
+ * Not supported IE, due to no support `Intl.DateTimeForamt#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)
+ *
+ * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)
+ *
+ * @VueI18nComponent
+ */
const DatetimeFormat = {
+ /* eslint-disable */
name: 'i18n-d',
props: {
...baseFormatProps,
@@ -7913,33 +9085,34 @@ const DatetimeFormat = {
type: [String, Object]
}
},
+ /* eslint-enable */
setup(props, context) {
const i18n = useI18n({ useScope: 'parent' });
- return renderFormatter(props, context, DATETIME_FORMAT_KEYS, (...args) => i18n.__datetimeParts(...args));
+ return renderFormatter(props, context, DATETIME_FORMAT_KEYS, (...args) =>
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ i18n[DatetimePartsSymbol](...args));
}
};
function getComposer(i18n, instance) {
const i18nInternal = i18n;
- if (i18n.mode === 'composable') {
+ if (i18n.mode === 'composition') {
return (i18nInternal.__getInstance(instance) || i18n.global);
}
else {
const vueI18n = i18nInternal.__getInstance(instance);
- return (vueI18n != null
+ return vueI18n != null
? vueI18n.__composer
- : i18n.global);
+ : i18n.global.__composer;
}
}
function vTDirective(i18n) {
const bind = (el, { instance, value, modifiers }) => {
+ /* istanbul ignore if */
if (!instance || !instance.$) {
- throw createI18nError(15);
+ throw createI18nError(20 /* UNEXPECTED_ERROR */);
}
const composer = getComposer(i18n, instance.$);
- if (!composer) {
- throw createI18nError(19);
- }
const parsedValue = parseValue(value);
el.textContent = composer.t(...makeParams(parsedValue));
};
@@ -7954,12 +9127,12 @@ function parseValue(value) {
}
else if (isPlainObject$1(value)) {
if (!('path' in value)) {
- throw createI18nError(17, 'path');
+ throw createI18nError(17 /* REQUIRED_VALUE */, 'path');
}
return value;
}
else {
- throw createI18nError(18);
+ throw createI18nError(18 /* INVALID_VALUE */);
}
}
function makeParams(value) {
@@ -7987,24 +9160,64 @@ function apply(app, i18n, ...options) {
? pluginOptions.globalInstall
: true;
if (globalInstall) {
+ // install components
app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);
app.component(NumberFormat.name, NumberFormat);
app.component(DatetimeFormat.name, DatetimeFormat);
}
+ // install directive
app.directive('t', vTDirective(i18n));
- if (!app.__VUE_I18N_SYMBOL__) {
- throw createI18nError(15);
- }
- app.provide(app.__VUE_I18N_SYMBOL__, i18n);
}
+/**
+ * Event emitter, forked from the below:
+ * - original repository url: https://github.com/developit/mitt
+ * - code url: https://github.com/developit/mitt/blob/master/src/index.ts
+ * - author: Jason Miller (https://github.com/developit)
+ * - license: MIT
+ */
+/**
+ * Create a event emitter
+ *
+ * @returns An event emitter
+ */
+function createEmitter() {
+ const events = new Map();
+ const emitter = {
+ events,
+ on(event, handler) {
+ const handlers = events.get(event);
+ const added = handlers && handlers.push(handler);
+ if (!added) {
+ events.set(event, [handler]);
+ }
+ },
+ off(event, handler) {
+ const handlers = events.get(event);
+ if (handlers) {
+ handlers.splice(handlers.indexOf(handler) >>> 0, 1);
+ }
+ },
+ emit(event, payload) {
+ (events.get(event) || [])
+ .slice()
+ .map(handler => handler(payload));
+ (events.get('*') || [])
+ .slice()
+ .map(handler => handler(event, payload));
+ }
+ };
+ return emitter;
+}
+
+// supports compatibility for legacy vue-i18n APIs
function defineMixin(vuei18n, composer, i18n) {
- const legacy = vuei18n;
return {
beforeCreate() {
const instance = getCurrentInstance();
+ /* istanbul ignore if */
if (!instance) {
- throw createI18nError(15);
+ throw createI18nError(20 /* UNEXPECTED_ERROR */);
}
const options = this.$options;
if (options.i18n) {
@@ -8013,21 +9226,31 @@ function defineMixin(vuei18n, composer, i18n) {
optionsI18n.__i18n = options.__i18n;
}
optionsI18n.__root = composer;
- this.$i18n = createVueI18n(optionsI18n);
- legacy.__onComponentInstanceCreated(this.$i18n);
- i18n.__setInstance(instance, this.$i18n);
+ if (this === this.$root) {
+ this.$i18n = mergeToRoot(vuei18n, optionsI18n);
+ }
+ else {
+ this.$i18n = createVueI18n(optionsI18n);
+ }
}
else if (options.__i18n) {
- this.$i18n = createVueI18n({
- __i18n: options.__i18n,
- __root: composer
- });
- legacy.__onComponentInstanceCreated(this.$i18n);
- i18n.__setInstance(instance, this.$i18n);
+ if (this === this.$root) {
+ this.$i18n = mergeToRoot(vuei18n, options);
+ }
+ else {
+ this.$i18n = createVueI18n({
+ __i18n: options.__i18n,
+ __root: composer
+ });
+ }
}
else {
- this.$i18n = legacy;
+ // set global
+ this.$i18n = vuei18n;
}
+ vuei18n.__onComponentInstanceCreated(this.$i18n);
+ i18n.__setInstance(instance, this.$i18n);
+ // defines vue-i18n legacy APIs
this.$t = (...args) => this.$i18n.t(...args);
this.$tc = (...args) => this.$i18n.tc(...args);
this.$te = (key, locale) => this.$i18n.te(key, locale);
@@ -8036,16 +9259,29 @@ function defineMixin(vuei18n, composer, i18n) {
this.$tm = (key) => this.$i18n.tm(key);
},
mounted() {
- if ( __INTLIFY_PROD_DEVTOOLS__) {
+ /* istanbul ignore if */
+ if (( __INTLIFY_PROD_DEVTOOLS__) && !false) {
this.$el.__INTLIFY__ = this.$i18n.__composer;
+ const emitter = (this.__emitter = createEmitter());
+ const _vueI18n = this.$i18n;
+ _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);
+ emitter.on('*', addTimelineEvent);
}
},
- beforeDestroy() {
+ beforeUnmount() {
const instance = getCurrentInstance();
+ /* istanbul ignore if */
if (!instance) {
- throw createI18nError(15);
+ throw createI18nError(20 /* UNEXPECTED_ERROR */);
}
- if ( __INTLIFY_PROD_DEVTOOLS__) {
+ /* istanbul ignore if */
+ if (( __INTLIFY_PROD_DEVTOOLS__) && !false) {
+ if (this.__emitter) {
+ this.__emitter.off('*', addTimelineEvent);
+ delete this.__emitter;
+ }
+ const _vueI18n = this.$i18n;
+ _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();
delete this.$el.__INTLIFY__;
}
delete this.$t;
@@ -8058,64 +9294,301 @@ function defineMixin(vuei18n, composer, i18n) {
delete this.$i18n;
}
};
+}
+function mergeToRoot(root, optoins) {
+ root.locale = optoins.locale || root.locale;
+ root.fallbackLocale = optoins.fallbackLocale || root.fallbackLocale;
+ root.missing = optoins.missing || root.missing;
+ root.silentTranslationWarn =
+ optoins.silentTranslationWarn || root.silentFallbackWarn;
+ root.silentFallbackWarn =
+ optoins.silentFallbackWarn || root.silentFallbackWarn;
+ root.formatFallbackMessages =
+ optoins.formatFallbackMessages || root.formatFallbackMessages;
+ root.postTranslation = optoins.postTranslation || root.postTranslation;
+ root.warnHtmlInMessage = optoins.warnHtmlInMessage || root.warnHtmlInMessage;
+ root.escapeParameterHtml =
+ optoins.escapeParameterHtml || root.escapeParameterHtml;
+ root.sync = optoins.sync || root.sync;
+ const messages = getLocaleMessages(root.locale, {
+ messages: optoins.messages,
+ __i18n: optoins.__i18n
+ });
+ Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));
+ if (optoins.datetimeFormats) {
+ Object.keys(optoins.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, optoins.datetimeFormats[locale]));
+ }
+ if (optoins.numberFormats) {
+ Object.keys(optoins.numberFormats).forEach(locale => root.mergeNumberFormat(locale, optoins.numberFormats[locale]));
+ }
+ return root;
}
+/**
+ * Vue I18n factory
+ *
+ * @param options - An options, see the {@link I18nOptions}
+ *
+ * @returns {@link I18n} instance
+ *
+ * @remarks
+ * If you use Legacy API mode, you need toto specify {@link VueI18nOptions} and `legacy: true` option.
+ *
+ * If you use composition API mode, you need to specify {@link ComposerOptions}.
+ *
+ * @VueI18nSee [Getting Started](../essentials/started)
+ * @VueI18nSee [Composition API](../advanced/composition)
+ *
+ * @example
+ * case: for Legacy API
+ * ```js
+ * import { createApp } from 'vue'
+ * import { createI18n } from 'vue-i18n'
+ *
+ * // call with I18n option
+ * const i18n = createI18n({
+ * locale: 'ja',
+ * messages: {
+ * en: { ... },
+ * ja: { ... }
+ * }
+ * })
+ *
+ * const App = {
+ * // ...
+ * }
+ *
+ * const app = createApp(App)
+ *
+ * // install!
+ * app.use(i18n)
+ * app.mount('#app')
+ * ```
+ *
+ * @example
+ * case: for composition API
+ * ```js
+ * import { createApp } from 'vue'
+ * import { createI18n, useI18n } from 'vue-i18n'
+ *
+ * // call with I18n option
+ * const i18n = createI18n({
+ * legacy: false, // you must specify 'lagacy: false' option
+ * locale: 'ja',
+ * messages: {
+ * en: { ... },
+ * ja: { ... }
+ * }
+ * })
+ *
+ * const App = {
+ * setup() {
+ * // ...
+ * const { t } = useI18n({ ... })
+ * return { ... , t }
+ * }
+ * }
+ *
+ * const app = createApp(App)
+ *
+ * // install!
+ * app.use(i18n)
+ * app.mount('#app')
+ * ```
+ *
+ * @VueI18nGeneral
+ */
function createI18n(options = {}) {
- const __legacyMode = !!options.legacy;
+ // prettier-ignore
+ const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)
+ ? options.legacy
+ : true;
+ const __globalInjection = !!options.globalInjection;
const __instances = new Map();
- const __global = __legacyMode
+ // prettier-ignore
+ const __global = __VUE_I18N_LEGACY_API__ && __legacyMode
? createVueI18n(options)
: createComposer(options);
- const symbol = Symbol( '');
+ const symbol = makeSymbol( '');
const i18n = {
+ // mode
get mode() {
- return __legacyMode ? 'legacy' : 'composable';
+ // prettier-ignore
+ return __VUE_I18N_LEGACY_API__
+ ? __legacyMode
+ ? 'legacy'
+ : 'composition'
+ : 'composition';
},
- install(app, ...options) {
- if ( __INTLIFY_PROD_DEVTOOLS__) {
+ // install plugin
+ async install(app, ...options) {
+ if (( __INTLIFY_PROD_DEVTOOLS__) && !false) {
app.__VUE_I18N__ = i18n;
}
+ // setup global provider
app.__VUE_I18N_SYMBOL__ = symbol;
- apply(app, i18n, ...options);
- if (__legacyMode) {
+ app.provide(app.__VUE_I18N_SYMBOL__, i18n);
+ // global method and properties injection for Composition API
+ if (!__legacyMode && __globalInjection) {
+ injectGlobalFields(app, i18n.global);
+ }
+ // install built-in components and directive
+ if (__VUE_I18N_FULL_INSTALL__) {
+ apply(app, i18n, ...options);
+ }
+ // setup mixin for Legacy API
+ if (__VUE_I18N_LEGACY_API__ && __legacyMode) {
app.mixin(defineMixin(__global, __global.__composer, i18n));
}
+ // setup vue-devtools plugin
+ if (( __INTLIFY_PROD_DEVTOOLS__) && !false) {
+ const ret = await enableDevTools(app, i18n);
+ if (!ret) {
+ throw createI18nError(19 /* CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN */);
+ }
+ const emitter = createEmitter();
+ if (__legacyMode) {
+ const _vueI18n = __global;
+ _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);
+ }
+ else {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const _composer = __global;
+ _composer[EnableEmitter] && _composer[EnableEmitter](emitter);
+ }
+ emitter.on('*', addTimelineEvent);
+ }
},
+ // global accsessor
get global() {
- return __legacyMode
- ? __global.__composer
- : __global;
+ return __global;
},
+ // @internal
__instances,
+ // @internal
__getInstance(component) {
return __instances.get(component) || null;
},
+ // @internal
__setInstance(component, instance) {
__instances.set(component, instance);
},
+ // @internal
__deleteInstance(component) {
__instances.delete(component);
}
};
- if ( __INTLIFY_PROD_DEVTOOLS__) ;
+ if (( __INTLIFY_PROD_DEVTOOLS__) && !false) ;
return i18n;
}
+/**
+ * Use Composition API for Vue I18n
+ *
+ * @param options - An options, see {@link UseI18nOptions}
+ *
+ * @returns {@link Composer} instance
+ *
+ * @remarks
+ * This function is mainly used by `setup`.
+ *
+ * If options are specified, Composer instance is created for each component and you can be localized on the component.
+ *
+ * If options are not specified, you can be localized using the global Composer.
+ *
+ * @example
+ * case: Component resource base localization
+ * ```html
+ *
+ *
+ * message: {{ t('hello') }}
+ *
+ *
+ *
+ * ```
+ *
+ * @VueI18nComposition
+ */
function useI18n(options = {}) {
const instance = getCurrentInstance();
- if (instance == null || !instance.appContext.app.__VUE_I18N_SYMBOL__) {
- throw createI18nError(15);
+ if (instance == null) {
+ throw createI18nError(14 /* MUST_BE_CALL_SETUP_TOP */);
+ }
+ if (!instance.appContext.app.__VUE_I18N_SYMBOL__) {
+ throw createI18nError(15 /* NOT_INSLALLED */);
}
const i18n = inject(instance.appContext.app.__VUE_I18N_SYMBOL__);
+ /* istanbul ignore if */
if (!i18n) {
- throw createI18nError(14);
+ throw createI18nError(20 /* UNEXPECTED_ERROR */);
}
- const global = i18n.global;
+ // prettier-ignore
+ const global = i18n.mode === 'composition'
+ ? i18n.global
+ : i18n.global.__composer;
+ // prettier-ignore
const scope = isEmptyObject(options)
- ? 'global'
+ ? ('__i18n' in instance.type)
+ ? 'local'
+ : 'global'
: !options.useScope
? 'local'
: options.useScope;
if (scope === 'global') {
+ let messages = isObject$1(options.messages) ? options.messages : {};
+ if ('__i18nGlobal' in instance.type) {
+ messages = getLocaleMessages(global.locale.value, {
+ messages,
+ __i18n: instance.type.__i18nGlobal
+ });
+ }
+ // merge locale messages
+ const locales = Object.keys(messages);
+ if (locales.length) {
+ locales.forEach(locale => {
+ global.mergeLocaleMessage(locale, messages[locale]);
+ });
+ }
+ // merge datetime formats
+ if (isObject$1(options.datetimeFormats)) {
+ const locales = Object.keys(options.datetimeFormats);
+ if (locales.length) {
+ locales.forEach(locale => {
+ global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);
+ });
+ }
+ }
+ // merge number formats
+ if (isObject$1(options.numberFormats)) {
+ const locales = Object.keys(options.numberFormats);
+ if (locales.length) {
+ locales.forEach(locale => {
+ global.mergeNumberFormat(locale, options.numberFormats[locale]);
+ });
+ }
+ }
return global;
}
if (scope === 'parent') {
@@ -8125,8 +9598,9 @@ function useI18n(options = {}) {
}
return composer;
}
+ // scope 'local' case
if (i18n.mode === 'legacy') {
- throw createI18nError(16);
+ throw createI18nError(16 /* NOT_AVAILABLE_IN_LEGACY_MODE */);
}
const i18nInternal = i18n;
let composer = i18nInternal.__getInstance(instance);
@@ -8153,7 +9627,7 @@ function getComposer$1(i18n, target) {
let current = target.parent;
while (current != null) {
const i18nInternal = i18n;
- if (i18n.mode === 'composable') {
+ if (i18n.mode === 'composition') {
composer = i18nInternal.__getInstance(current);
}
else {
@@ -8174,19 +9648,73 @@ function getComposer$1(i18n, target) {
return composer;
}
function setupLifeCycle(i18n, target, composer) {
+ let emitter = null;
onMounted(() => {
- if (( __INTLIFY_PROD_DEVTOOLS__) && target.vnode.el) {
+ // inject composer instance to DOM for intlify-devtools
+ if (( __INTLIFY_PROD_DEVTOOLS__) &&
+ !false &&
+ target.vnode.el) {
target.vnode.el.__INTLIFY__ = composer;
+ emitter = createEmitter();
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const _composer = composer;
+ _composer[EnableEmitter] && _composer[EnableEmitter](emitter);
+ emitter.on('*', addTimelineEvent);
}
}, target);
onUnmounted(() => {
+ // remove composer instance from DOM for intlify-devtools
if (( __INTLIFY_PROD_DEVTOOLS__) &&
+ !false &&
target.vnode.el &&
target.vnode.el.__INTLIFY__) {
+ emitter && emitter.off('*', addTimelineEvent);
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const _composer = composer;
+ _composer[DisableEmitter] && _composer[DisableEmitter]();
delete target.vnode.el.__INTLIFY__;
}
i18n.__deleteInstance(target);
}, target);
+}
+const globalExportProps = [
+ 'locale',
+ 'fallbackLocale',
+ 'availableLocales'
+];
+const globalExportMethods = ['t', 'd', 'n', 'tm'];
+function injectGlobalFields(app, composer) {
+ const i18n = Object.create(null);
+ globalExportProps.forEach(prop => {
+ const desc = Object.getOwnPropertyDescriptor(composer, prop);
+ if (!desc) {
+ throw createI18nError(20 /* UNEXPECTED_ERROR */);
+ }
+ const wrap = isRef(desc.value) // check computed props
+ ? {
+ get() {
+ return desc.value.value;
+ },
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ set(val) {
+ desc.value.value = val;
+ }
+ }
+ : {
+ get() {
+ return desc.get && desc.get();
+ }
+ };
+ Object.defineProperty(i18n, prop, wrap);
+ });
+ app.config.globalProperties.$i18n = i18n;
+ globalExportMethods.forEach(method => {
+ const desc = Object.getOwnPropertyDescriptor(composer, method);
+ if (!desc) {
+ throw createI18nError(20 /* UNEXPECTED_ERROR */);
+ }
+ Object.defineProperty(app.config.globalProperties, `$${method}`, desc);
+ });
}
{
@@ -8196,9 +9724,11 @@ function setupLifeCycle(i18n, target, composer) {
var script = {
name: 'App',
setup() {
- return { ...useI18n({
+ const { t, locale } = useI18n({
inheritLocale: true
- }) }
+ });
+
+ return { t, locale }
}
};
@@ -8208,17 +9738,17 @@ const _hoisted_2 = /*#__PURE__*/createVNode("option", { value: "ja" }, "ja", -1
function render(_ctx, _cache, $props, $setup, $data, $options) {
return (openBlock(), createBlock(Fragment, null, [
createVNode("form", null, [
- createVNode("label", null, toDisplayString(_ctx.t('language')), 1 /* TEXT */),
+ createVNode("label", null, toDisplayString($setup.t('language')), 1 /* TEXT */),
withDirectives(createVNode("select", {
- "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => (_ctx.locale = $event))
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => ($setup.locale = $event))
}, [
_hoisted_1,
_hoisted_2
], 512 /* NEED_PATCH */), [
- [vModelSelect, _ctx.locale]
+ [vModelSelect, $setup.locale]
])
]),
- createVNode("p", null, toDisplayString(_ctx.t('hello')), 1 /* TEXT */)
+ createVNode("p", null, toDisplayString($setup.t('hello')), 1 /* TEXT */)
], 64 /* STABLE_FRAGMENT */))
}
@@ -8234,11 +9764,12 @@ script.render = render;
script.__file = "examples/composable/App.vue";
const i18n$1 = createI18n({
+ legacy: false,
locale: 'ja',
messages: {}
});
-const app = createApp(script);
+const app$1 = createApp(script);
-app.use(i18n$1);
-app.mount('#app');
+app$1.use(i18n$1);
+app$1.mount('#app');
diff --git a/examples/composable/main.js b/examples/composable/main.js
index c6ecba4..35db3fb 100644
--- a/examples/composable/main.js
+++ b/examples/composable/main.js
@@ -3,6 +3,7 @@ import { createI18n } from 'vue-i18n'
import App from './App.vue'
const i18n = createI18n({
+ legacy: false,
locale: 'ja',
messages: {}
})
diff --git a/examples/globe/App.vue b/examples/globe/App.vue
new file mode 100644
index 0000000..93bdfd7
--- /dev/null
+++ b/examples/globe/App.vue
@@ -0,0 +1,38 @@
+
+
+ {{ t('hello') }}
+
+
+
+
+
+{
+ "en": {
+ "language": "Language",
+ "hello": "hello, world!"
+ },
+ "ja": {
+ "language": "言語",
+ "hello": "こんにちは、世界!"
+ }
+}
+
diff --git a/examples/globe/index.html b/examples/globe/index.html
new file mode 100644
index 0000000..6a39b58
--- /dev/null
+++ b/examples/globe/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
rollup-plugin-vue-i18n globe example
+
+
+
+
+
+
diff --git a/examples/globe/main.js b/examples/globe/main.js
new file mode 100644
index 0000000..35db3fb
--- /dev/null
+++ b/examples/globe/main.js
@@ -0,0 +1,14 @@
+import { createApp } from 'vue'
+import { createI18n } from 'vue-i18n'
+import App from './App.vue'
+
+const i18n = createI18n({
+ legacy: false,
+ locale: 'ja',
+ messages: {}
+})
+
+const app = createApp(App)
+
+app.use(i18n)
+app.mount('#app')
diff --git a/examples/legacy/main.js b/examples/legacy/main.js
index 79f16ff..c6ecba4 100644
--- a/examples/legacy/main.js
+++ b/examples/legacy/main.js
@@ -3,7 +3,6 @@ import { createI18n } from 'vue-i18n'
import App from './App.vue'
const i18n = createI18n({
- legacy: true,
locale: 'ja',
messages: {}
})
diff --git a/package.json b/package.json
index bf8e968..1ffcaab 100644
--- a/package.json
+++ b/package.json
@@ -25,42 +25,41 @@
},
"devDependencies": {
"@rollup/plugin-alias": "^3.1.0",
- "@rollup/plugin-commonjs": "^15.0.0",
- "@rollup/plugin-node-resolve": "^11.0.0",
- "@rollup/plugin-replace": "^2.3.2",
+ "@rollup/plugin-commonjs": "^16.0.0",
+ "@rollup/plugin-node-resolve": "^10.0.0",
+ "@rollup/plugin-replace": "^2.3.4",
"@types/debug": "^4.1.5",
- "@types/jest": "^26.0.0",
- "@types/js-yaml": "^3.12.4",
- "@types/jsdom": "^16.2.3",
+ "@types/jest": "^26.0.16",
+ "@types/js-yaml": "^3.12.5",
+ "@types/jsdom": "^16.2.5",
"@types/json5": "^0.0.30",
- "@types/node": "^13.13.4",
- "@typescript-eslint/eslint-plugin": "^4.0.0",
- "@typescript-eslint/parser": "^4.0.0",
- "@typescript-eslint/typescript-estree": "^4.0.0",
- "@vue/compiler-sfc": "^3.0.0-rc.10",
+ "@types/node": "^14.14.10",
+ "@typescript-eslint/eslint-plugin": "^4.9.0",
+ "@typescript-eslint/parser": "^4.9.0",
+ "@vue/compiler-sfc": "^3.0.4",
"debug": "^4.1.1",
- "eslint": "^7.9.0",
+ "eslint": "^7.14.0",
"eslint-config-prettier": "^6.11.0",
- "eslint-plugin-prettier": "^3.1.2",
- "eslint-plugin-vue": "^7.0.0-beta.3",
+ "eslint-plugin-prettier": "^3.1.3",
+ "eslint-plugin-vue": "^7.2.0",
"eslint-plugin-vue-libs": "^4.0.0",
- "jest": "^26.0.0",
+ "jest": "^26.6.3",
"jest-puppeteer": "^4.4.0",
"jest-watch-typeahead": "^0.6.0",
- "jsdom": "^16.2.2",
- "lerna-changelog": "^1.0.0",
+ "jsdom": "^16.4.0",
+ "lerna-changelog": "^1.0.1",
"npm-run-all": "^4.1.5",
- "opener": "^1.5.1",
+ "opener": "^1.5.2",
"puppeteer": "^2.1.1",
- "rollup": "^2.26.0",
+ "rollup": "^2.34.0",
"rollup-plugin-vue": "^6.0.0-beta.10",
- "serve": "^11.3.1",
+ "serve": "^11.3.2",
"shipjs": "^0.23.0",
- "ts-jest": "^26.0.0",
- "typescript": "^4.0.0",
- "typescript-eslint-language-service": "^4.0.0",
- "vue": "^3.0.0-rc.1",
- "vue-i18n": "^9.0.0-beta.1"
+ "ts-jest": "^26.4.0",
+ "typescript": "^4.1.2",
+ "typescript-eslint-language-service": "^4.1.2",
+ "vue": "^3.0.4",
+ "vue-i18n": "^9.0.0-beta.10"
},
"engines": {
"node": ">= 10"
@@ -84,12 +83,14 @@
"build:example": "yarn build && npm-run-all --parallel build:example:*",
"build:example:legacy": "rollup -c ./examples/rollup.config.js --environment BUILD:legacy",
"build:example:composable": "rollup -c ./examples/rollup.config.js --environment BUILD:composable",
+ "build:example:globe": "rollup -c ./examples/rollup.config.js --environment BUILD:globe",
"watch": "tsc -p . --watch",
"clean": "npm-run-all clean:*",
"clean:lib": "rm -rf ./lib/index.js",
"clean:example": "npm-run-all clean:example:*",
"clean:example:legacy": "rm -rf ./examples/legacy/index.js",
"clean:example:composable": "rm -rf ./examples/composable/index.js",
+ "clean:example:globe": "rm -rf ./examples/globe/index.js",
"clean:cache:jest": "jest --clearCache",
"clean:coverage": "rm -rf ./coverage",
"coverage": "opener coverage/lcov-report/index.html",
diff --git a/src/index.ts b/src/index.ts
index 40f0dda..8f49b64 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -31,12 +31,13 @@ export default function i18n(options: Record
): Plugin {
debug('transform id', id)
if (filter(id)) {
const query = parseVuePartRequest(id)
+ const variableName = query.global ? '__i18nGlobal' : '__i18n'
return {
code:
`export default function i18n(Component) {\n` +
` const options = typeof Component === 'function' ? Component.options : Component\n` +
- ` options.__i18n = options.__i18n || []\n` +
- ` options.__i18n.push(${stringify(
+ ` options.${variableName} = options.${variableName} || []\n` +
+ ` options.${variableName}.push(${stringify(
parse(source, query),
query
)})\n` +
diff --git a/test/__snapshots__/index.test.ts.snap b/test/__snapshots__/index.test.ts.snap
index 1358293..345ac6c 100644
--- a/test/__snapshots__/index.test.ts.snap
+++ b/test/__snapshots__/index.test.ts.snap
@@ -26,6 +26,39 @@ if (typeof window !== 'undefined') {
"
`;
+exports[`global: code 1`] = `
+"function i18n(Component) {
+ const options = typeof Component === 'function' ? Component.options : Component;
+ options.__i18nGlobal = options.__i18nGlobal || [];
+ options.__i18nGlobal.push({\\"en\\":{\\"hello\\":\\"hello global!\\"}});
+}
+
+function i18n$1(Component) {
+ const options = typeof Component === 'function' ? Component.options : Component;
+ options.__i18n = options.__i18n || [];
+ options.__i18n.push({\\"ja\\":{\\"hello\\":\\"hello local!\\"}});
+}
+
+const script = {};
+const render = () => {};
+if (typeof i18n === 'function') i18n(script);
+if (typeof i18n$1 === 'function') i18n$1(script);
+
+script.render = render;
+script.__file = \\"test/fixtures/global-mix.vue\\";
+
+var exports = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ 'default': script
+});
+
+if (typeof window !== 'undefined') {
+ window.module = script;
+ window.exports = exports;
+}
+"
+`;
+
exports[`import: code 1`] = `
"function i18n(Component) {
const options = typeof Component === 'function' ? Component.options : Component;
diff --git a/test/fixtures/global-mix.vue b/test/fixtures/global-mix.vue
new file mode 100644
index 0000000..6fde3e0
--- /dev/null
+++ b/test/fixtures/global-mix.vue
@@ -0,0 +1,13 @@
+
+{
+ "en": {
+ "hello": "hello global!"
+ }
+}
+
+
+
+{
+ "hello": "hello local!"
+}
+
diff --git a/test/index.test.ts b/test/index.test.ts
index d0bd23a..d9470df 100644
--- a/test/index.test.ts
+++ b/test/index.test.ts
@@ -117,3 +117,22 @@ test('special characters', async () => {
}
])
})
+
+test('global', async () => {
+ const { module, code } = await bundleAndRun('global-mix.vue')
+ expect(code).toMatchSnapshot('code')
+ expect(module.__i18nGlobal).toMatchObject([
+ {
+ en: {
+ hello: 'hello global!'
+ }
+ }
+ ])
+ expect(module.__i18n).toMatchObject([
+ {
+ ja: {
+ hello: 'hello local!'
+ }
+ }
+ ])
+})
diff --git a/yarn.lock b/yarn.lock
index 6a6b54a..1c7409a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -148,6 +148,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037"
integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==
+"@babel/parser@^7.12.0":
+ version "7.12.7"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056"
+ integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==
+
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
@@ -225,6 +230,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
+"@babel/plugin-syntax-top-level-await@^7.8.3":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0"
+ integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
"@babel/runtime@^7.6.3":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
@@ -265,6 +277,15 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
+"@babel/types@^7.12.0":
+ version "7.12.7"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13"
+ integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.10.4"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
@@ -278,10 +299,10 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
-"@eslint/eslintrc@^0.1.3":
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085"
- integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==
+"@eslint/eslintrc@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c"
+ integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
@@ -354,81 +375,93 @@
jest-util "^26.3.0"
slash "^3.0.0"
-"@jest/core@^26.4.2":
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.4.2.tgz#85d0894f31ac29b5bab07aa86806d03dd3d33edc"
- integrity sha512-sDva7YkeNprxJfepOctzS8cAk9TOekldh+5FhVuXS40+94SHbiicRO1VV2tSoRtgIo+POs/Cdyf8p76vPTd6dg==
+"@jest/console@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2"
+ integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==
dependencies:
- "@jest/console" "^26.3.0"
- "@jest/reporters" "^26.4.1"
- "@jest/test-result" "^26.3.0"
- "@jest/transform" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^26.6.2"
+ jest-util "^26.6.2"
+ slash "^3.0.0"
+
+"@jest/core@^26.6.3":
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad"
+ integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/reporters" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
exit "^0.1.2"
graceful-fs "^4.2.4"
- jest-changed-files "^26.3.0"
- jest-config "^26.4.2"
- jest-haste-map "^26.3.0"
- jest-message-util "^26.3.0"
+ jest-changed-files "^26.6.2"
+ jest-config "^26.6.3"
+ jest-haste-map "^26.6.2"
+ jest-message-util "^26.6.2"
jest-regex-util "^26.0.0"
- jest-resolve "^26.4.0"
- jest-resolve-dependencies "^26.4.2"
- jest-runner "^26.4.2"
- jest-runtime "^26.4.2"
- jest-snapshot "^26.4.2"
- jest-util "^26.3.0"
- jest-validate "^26.4.2"
- jest-watcher "^26.3.0"
+ jest-resolve "^26.6.2"
+ jest-resolve-dependencies "^26.6.3"
+ jest-runner "^26.6.3"
+ jest-runtime "^26.6.3"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ jest-watcher "^26.6.2"
micromatch "^4.0.2"
p-each-series "^2.1.0"
rimraf "^3.0.0"
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/environment@^26.3.0":
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.3.0.tgz#e6953ab711ae3e44754a025f838bde1a7fd236a0"
- integrity sha512-EW+MFEo0DGHahf83RAaiqQx688qpXgl99wdb8Fy67ybyzHwR1a58LHcO376xQJHfmoXTu89M09dH3J509cx2AA==
+"@jest/environment@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c"
+ integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==
dependencies:
- "@jest/fake-timers" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/node" "*"
- jest-mock "^26.3.0"
+ jest-mock "^26.6.2"
-"@jest/fake-timers@^26.3.0":
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.3.0.tgz#f515d4667a6770f60ae06ae050f4e001126c666a"
- integrity sha512-ZL9ytUiRwVP8ujfRepffokBvD2KbxbqMhrXSBhSdAhISCw3gOkuntisiSFv+A6HN0n0fF4cxzICEKZENLmW+1A==
+"@jest/fake-timers@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad"
+ integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
"@sinonjs/fake-timers" "^6.0.1"
"@types/node" "*"
- jest-message-util "^26.3.0"
- jest-mock "^26.3.0"
- jest-util "^26.3.0"
+ jest-message-util "^26.6.2"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
-"@jest/globals@^26.4.2":
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.4.2.tgz#73c2a862ac691d998889a241beb3dc9cada40d4a"
- integrity sha512-Ot5ouAlehhHLRhc+sDz2/9bmNv9p5ZWZ9LE1pXGGTCXBasmi5jnYjlgYcYt03FBwLmZXCZ7GrL29c33/XRQiow==
+"@jest/globals@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a"
+ integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==
dependencies:
- "@jest/environment" "^26.3.0"
- "@jest/types" "^26.3.0"
- expect "^26.4.2"
+ "@jest/environment" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ expect "^26.6.2"
-"@jest/reporters@^26.4.1":
- version "26.4.1"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.4.1.tgz#3b4d6faf28650f3965f8b97bc3d114077fb71795"
- integrity sha512-aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ==
+"@jest/reporters@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6"
+ integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^26.3.0"
- "@jest/test-result" "^26.3.0"
- "@jest/transform" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/console" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
chalk "^4.0.0"
collect-v8-coverage "^1.0.0"
exit "^0.1.2"
@@ -439,22 +472,22 @@
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^4.0.0"
istanbul-reports "^3.0.2"
- jest-haste-map "^26.3.0"
- jest-resolve "^26.4.0"
- jest-util "^26.3.0"
- jest-worker "^26.3.0"
+ jest-haste-map "^26.6.2"
+ jest-resolve "^26.6.2"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
slash "^3.0.0"
source-map "^0.6.0"
string-length "^4.0.1"
terminal-link "^2.0.0"
- v8-to-istanbul "^5.0.1"
+ v8-to-istanbul "^7.0.0"
optionalDependencies:
node-notifier "^8.0.0"
-"@jest/source-map@^26.3.0":
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.3.0.tgz#0e646e519883c14c551f7b5ae4ff5f1bfe4fc3d9"
- integrity sha512-hWX5IHmMDWe1kyrKl7IhFwqOuAreIwHhbe44+XH2ZRHjrKIh0LO5eLQ/vxHFeAfRwJapmxuqlGAEYLadDq6ZGQ==
+"@jest/source-map@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535"
+ integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==
dependencies:
callsites "^3.0.0"
graceful-fs "^4.2.4"
@@ -470,32 +503,42 @@
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
-"@jest/test-sequencer@^26.4.2":
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.4.2.tgz#58a3760a61eec758a2ce6080201424580d97cbba"
- integrity sha512-83DRD8N3M0tOhz9h0bn6Kl6dSp+US6DazuVF8J9m21WAp5x7CqSMaNycMP0aemC/SH/pDQQddbsfHRTBXVUgog==
+"@jest/test-result@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18"
+ integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==
dependencies:
- "@jest/test-result" "^26.3.0"
+ "@jest/console" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
+"@jest/test-sequencer@^26.6.3":
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17"
+ integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==
+ dependencies:
+ "@jest/test-result" "^26.6.2"
graceful-fs "^4.2.4"
- jest-haste-map "^26.3.0"
- jest-runner "^26.4.2"
- jest-runtime "^26.4.2"
+ jest-haste-map "^26.6.2"
+ jest-runner "^26.6.3"
+ jest-runtime "^26.6.3"
-"@jest/transform@^26.3.0":
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.3.0.tgz#c393e0e01459da8a8bfc6d2a7c2ece1a13e8ba55"
- integrity sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==
+"@jest/transform@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b"
+ integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
babel-plugin-istanbul "^6.0.0"
chalk "^4.0.0"
convert-source-map "^1.4.0"
fast-json-stable-stringify "^2.0.0"
graceful-fs "^4.2.4"
- jest-haste-map "^26.3.0"
+ jest-haste-map "^26.6.2"
jest-regex-util "^26.0.0"
- jest-util "^26.3.0"
+ jest-util "^26.6.2"
micromatch "^4.0.2"
pirates "^4.0.1"
slash "^3.0.0"
@@ -523,6 +566,17 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
+"@jest/types@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"
+ integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+
"@nodelib/fs.scandir@2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
@@ -655,10 +709,10 @@
dependencies:
slash "^3.0.0"
-"@rollup/plugin-commonjs@^15.0.0":
- version "15.0.0"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz#690d15a9d54ba829db93555bff9b98ff34e08574"
- integrity sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==
+"@rollup/plugin-commonjs@^16.0.0":
+ version "16.0.0"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f"
+ integrity sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw==
dependencies:
"@rollup/pluginutils" "^3.1.0"
commondir "^1.0.1"
@@ -668,27 +722,27 @@
magic-string "^0.25.7"
resolve "^1.17.0"
-"@rollup/plugin-node-resolve@^11.0.0":
- version "11.0.0"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.0.tgz#770458fb26691a686c5f29f37dded94832ffce59"
- integrity sha512-8Hrmwjn1pLYjUxcv7U7IPP0qfnzEJWHyHE6CaZ8jbLM+8axaarJRB1jB6JgKTDp5gNga+TpsgX6F8iuvgOerKQ==
+"@rollup/plugin-node-resolve@^10.0.0":
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8"
+ integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==
dependencies:
"@rollup/pluginutils" "^3.1.0"
"@types/resolve" "1.17.1"
builtin-modules "^3.1.0"
deepmerge "^4.2.2"
is-module "^1.0.0"
- resolve "^1.19.0"
+ resolve "^1.17.0"
-"@rollup/plugin-replace@^2.3.2":
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz#cd6bae39444de119f5d905322b91ebd4078562e7"
- integrity sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==
+"@rollup/plugin-replace@^2.3.4":
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca"
+ integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ==
dependencies:
- "@rollup/pluginutils" "^3.0.8"
- magic-string "^0.25.5"
+ "@rollup/pluginutils" "^3.1.0"
+ magic-string "^0.25.7"
-"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0":
+"@rollup/pluginutils@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
@@ -758,6 +812,13 @@
dependencies:
"@babel/types" "^7.3.0"
+"@types/babel__traverse@^7.0.4":
+ version "7.0.16"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.16.tgz#0bbbf70c7bc4193210dd27e252c51260a37cd6a7"
+ integrity sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
@@ -820,7 +881,7 @@
dependencies:
"@types/istanbul-lib-report" "*"
-"@types/jest@26.x", "@types/jest@^26.0.0":
+"@types/jest@26.x":
version "26.0.13"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.13.tgz#5a7b9d5312f5dd521a38329c38ee9d3802a0b85e"
integrity sha512-sCzjKow4z9LILc6DhBvn5AkIfmQzDZkgtVVKmGwVrs5tuid38ws281D4l+7x1kP487+FlKDh5kfMZ8WSPAdmdA==
@@ -828,15 +889,23 @@
jest-diff "^25.2.1"
pretty-format "^25.2.1"
-"@types/js-yaml@^3.12.4":
+"@types/jest@^26.0.16":
+ version "26.0.16"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.16.tgz#b47abd50f6ed0503f589db8e126fc8eb470cf87c"
+ integrity sha512-Gp12+7tmKCgv9JjtltxUXokohCAEZfpJaEW5tn871SGRp8I+bRWBonQO7vW5NHwnAHe5dd50+Q4zyKuN35i09g==
+ dependencies:
+ jest-diff "^26.0.0"
+ pretty-format "^26.0.0"
+
+"@types/js-yaml@^3.12.5":
version "3.12.5"
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.5.tgz#136d5e6a57a931e1cce6f9d8126aa98a9c92a6bb"
integrity sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==
-"@types/jsdom@^16.2.3":
- version "16.2.4"
- resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.4.tgz#527ca99943e00561ca4056b1904fd5f4facebc3b"
- integrity sha512-RssgLa5ptjVKRkHho/Ex0+DJWkVsYuV8oh2PSG3gKxFp8n/VNyB7kOrZGQkk2zgPlcBkIKOItUc/T5BXit9uhg==
+"@types/jsdom@^16.2.5":
+ version "16.2.5"
+ resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.5.tgz#74ebad438741d249ecb416c5486dcde4217eb66c"
+ integrity sha512-k/ZaTXtReAjwWu0clU0KLS53dyqZnA8mm+jwKFeFrvufXgICp+VNbskETFxKKAguv0pkaEKTax5MaRmvalM+TA==
dependencies:
"@types/node" "*"
"@types/parse5" "*"
@@ -872,10 +941,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.10.1.tgz#cc323bad8e8a533d4822f45ce4e5326f36e42177"
integrity sha512-aYNbO+FZ/3KGeQCEkNhHFRIzBOUgc7QvcVNKXbfnhDkSfwUv91JsQQa10rDgKSTSLkXZ1UIyPe4FJJNVgw1xWQ==
-"@types/node@^13.13.4":
- version "13.13.19"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.19.tgz#f4165496e66e3da37b9e136887db446795e00c5b"
- integrity sha512-IVsULCpTdafcHhBDLYEPnV5l15xV0q065zvOHC1ZmzFYaBCMzku078eXnazoSG8907vZjRgEN/EQjku7GwwFyQ==
+"@types/node@^14.14.10":
+ version "14.14.10"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785"
+ integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
@@ -904,6 +973,11 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
+"@types/stack-utils@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff"
+ integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==
+
"@types/tough-cookie@*":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d"
@@ -921,61 +995,61 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@^4.0.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.1.0.tgz#7d309f60815ff35e9627ad85e41928d7b7fd443f"
- integrity sha512-U+nRJx8XDUqJxYF0FCXbpmD9nWt/xHDDG0zsw1vrVYAmEAuD/r49iowfurjSL2uTA2JsgtpsyG7mjO7PHf2dYw==
+"@typescript-eslint/eslint-plugin@^4.9.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.9.0.tgz#8fde15743413661fdc086c9f1f5d74a80b856113"
+ integrity sha512-WrVzGMzzCrgrpnQMQm4Tnf+dk+wdl/YbgIgd5hKGa2P+lnJ2MON+nQnbwgbxtN9QDLi8HO+JAq0/krMnjQK6Cw==
dependencies:
- "@typescript-eslint/experimental-utils" "4.1.0"
- "@typescript-eslint/scope-manager" "4.1.0"
+ "@typescript-eslint/experimental-utils" "4.9.0"
+ "@typescript-eslint/scope-manager" "4.9.0"
debug "^4.1.1"
functional-red-black-tree "^1.0.1"
regexpp "^3.0.0"
semver "^7.3.2"
tsutils "^3.17.1"
-"@typescript-eslint/experimental-utils@4.1.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.1.0.tgz#263d7225645c09a411c8735eeffd417f50f49026"
- integrity sha512-paEYLA37iqRIDPeQwAmoYSiZ3PiHsaAc3igFeBTeqRHgPnHjHLJ9OGdmP6nwAkF65p2QzEsEBtpjNUBWByNWzA==
+"@typescript-eslint/experimental-utils@4.9.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.9.0.tgz#23a296b85d243afba24e75a43fd55aceda5141f0"
+ integrity sha512-0p8GnDWB3R2oGhmRXlEnCvYOtaBCijtA5uBfH5GxQKsukdSQyI4opC4NGTUb88CagsoNQ4rb/hId2JuMbzWKFQ==
dependencies:
"@types/json-schema" "^7.0.3"
- "@typescript-eslint/scope-manager" "4.1.0"
- "@typescript-eslint/types" "4.1.0"
- "@typescript-eslint/typescript-estree" "4.1.0"
+ "@typescript-eslint/scope-manager" "4.9.0"
+ "@typescript-eslint/types" "4.9.0"
+ "@typescript-eslint/typescript-estree" "4.9.0"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
-"@typescript-eslint/parser@^4.0.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.1.0.tgz#9b0409411725f14cd7faa81a664e5051225961db"
- integrity sha512-hM/WNCQTzDHgS0Ke3cR9zPndL3OTKr9OoN9CL3UqulsAjYDrglSwIIgswSmHBcSbOzLmgaMARwrQEbIumIglvQ==
+"@typescript-eslint/parser@^4.9.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.9.0.tgz#bb65f1214b5e221604996db53ef77c9d62b09249"
+ integrity sha512-QRSDAV8tGZoQye/ogp28ypb8qpsZPV6FOLD+tbN4ohKUWHD2n/u0Q2tIBnCsGwQCiD94RdtLkcqpdK4vKcLCCw==
dependencies:
- "@typescript-eslint/scope-manager" "4.1.0"
- "@typescript-eslint/types" "4.1.0"
- "@typescript-eslint/typescript-estree" "4.1.0"
+ "@typescript-eslint/scope-manager" "4.9.0"
+ "@typescript-eslint/types" "4.9.0"
+ "@typescript-eslint/typescript-estree" "4.9.0"
debug "^4.1.1"
-"@typescript-eslint/scope-manager@4.1.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.1.0.tgz#9e389745ee9cfe12252ed1e9958808abd6b3a683"
- integrity sha512-HD1/u8vFNnxwiHqlWKC/Pigdn0Mvxi84Y6GzbZ5f5sbLrFKu0al02573Er+D63Sw67IffVUXR0uR8rpdfdk+vA==
+"@typescript-eslint/scope-manager@4.9.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.9.0.tgz#5eefe305d6b71d1c85af6587b048426bfd4d3708"
+ integrity sha512-q/81jtmcDtMRE+nfFt5pWqO0R41k46gpVLnuefqVOXl4QV1GdQoBWfk5REcipoJNQH9+F5l+dwa9Li5fbALjzg==
dependencies:
- "@typescript-eslint/types" "4.1.0"
- "@typescript-eslint/visitor-keys" "4.1.0"
+ "@typescript-eslint/types" "4.9.0"
+ "@typescript-eslint/visitor-keys" "4.9.0"
-"@typescript-eslint/types@4.1.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.1.0.tgz#edbd3fec346f34e13ce7aa176b03b497a32c496a"
- integrity sha512-rkBqWsO7m01XckP9R2YHVN8mySOKKY2cophGM8K5uDK89ArCgahItQYdbg/3n8xMxzu2elss+an1TphlUpDuJw==
+"@typescript-eslint/types@4.9.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.9.0.tgz#3fe8c3632abd07095c7458f7451bd14c85d0033c"
+ integrity sha512-luzLKmowfiM/IoJL/rus1K9iZpSJK6GlOS/1ezKplb7MkORt2dDcfi8g9B0bsF6JoRGhqn0D3Va55b+vredFHA==
-"@typescript-eslint/typescript-estree@4.1.0", "@typescript-eslint/typescript-estree@^4.0.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.1.0.tgz#394046ead25164494218c0e3d6b960695ea967f6"
- integrity sha512-r6et57qqKAWU173nWyw31x7OfgmKfMEcjJl9vlJEzS+kf9uKNRr4AVTRXfTCwebr7bdiVEkfRY5xGnpPaNPe4Q==
+"@typescript-eslint/typescript-estree@4.9.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.9.0.tgz#38a98df6ee281cfd6164d6f9d91795b37d9e508c"
+ integrity sha512-rmDR++PGrIyQzAtt3pPcmKWLr7MA+u/Cmq9b/rON3//t5WofNR4m/Ybft2vOLj0WtUzjn018ekHjTsnIyBsQug==
dependencies:
- "@typescript-eslint/types" "4.1.0"
- "@typescript-eslint/visitor-keys" "4.1.0"
+ "@typescript-eslint/types" "4.9.0"
+ "@typescript-eslint/visitor-keys" "4.9.0"
debug "^4.1.1"
globby "^11.0.1"
is-glob "^4.0.1"
@@ -983,91 +1057,91 @@
semver "^7.3.2"
tsutils "^3.17.1"
-"@typescript-eslint/visitor-keys@4.1.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.1.0.tgz#b2d528c9484e7eda1aa4f86ccf0432fb16e4d545"
- integrity sha512-+taO0IZGCtCEsuNTTF2Q/5o8+fHrlml8i9YsZt2AiDCdYEJzYlsmRY991l/6f3jNXFyAWepdQj7n8Na6URiDRQ==
+"@typescript-eslint/visitor-keys@4.9.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.9.0.tgz#f284e9fac43f2d6d35094ce137473ee321f266c8"
+ integrity sha512-sV45zfdRqQo1A97pOSx3fsjR+3blmwtdCt8LDrXgCX36v4Vmz4KHrhpV6Fo2cRdXmyumxx11AHw0pNJqCNpDyg==
dependencies:
- "@typescript-eslint/types" "4.1.0"
+ "@typescript-eslint/types" "4.9.0"
eslint-visitor-keys "^2.0.0"
-"@vue/compiler-core@3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.0-rc.10.tgz#a76f713fb0462429ec0ec10a472fff1f539c5772"
- integrity sha512-kQzHzRsM0NPAWHeqSTb2J4VsHhjRkGeLTsGzeMnW+sojgTnS3T94KacwvYgVS4qeZAKiDq0bMNZoJWrHVQ3T8g==
+"@vue/compiler-core@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.4.tgz#0122aca6eada4cb28b39ed930af917444755e330"
+ integrity sha512-snpMICsbWTZqBFnPB03qr4DtiSxVYfDF3DvbDSkN9Z9NTM8Chl8E/lYhKBSsvauq91DAWAh8PU3lr9vrLyQsug==
dependencies:
- "@babel/parser" "^7.10.4"
- "@babel/types" "^7.10.4"
- "@vue/shared" "3.0.0-rc.10"
+ "@babel/parser" "^7.12.0"
+ "@babel/types" "^7.12.0"
+ "@vue/shared" "3.0.4"
estree-walker "^2.0.1"
source-map "^0.6.1"
-"@vue/compiler-dom@3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.0-rc.10.tgz#dd1380d1ee61170de76f9eb91e0d8ac7985f0ae0"
- integrity sha512-pqIUf5leZm0P9379utrRSVBMxhV8XaqJTEFFp5etCtbEa/H5ALs29EjFMtMcm9sQaVkZlKLu86mgIacbYB9Q3w==
+"@vue/compiler-dom@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.4.tgz#834fd4b15c5698cf9f4505c2bfbccca058a843eb"
+ integrity sha512-FOxbHBIkkGjYQeTz1DlXQjS1Ms8EPXQWsdTdTPeohoS0KzCz6RiOjiAG+jLtMi6Nr5GX2h0TlCvcnI8mcsicFQ==
dependencies:
- "@vue/compiler-core" "3.0.0-rc.10"
- "@vue/shared" "3.0.0-rc.10"
+ "@vue/compiler-core" "3.0.4"
+ "@vue/shared" "3.0.4"
-"@vue/compiler-sfc@^3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.0-rc.10.tgz#4351ece66cdf4d758877482f69421c43d994dbaf"
- integrity sha512-VIJ+VXqeM7WoRNgD9uYSARVb6CYq+JS2NNHfeerfNc7Uk3pjYHRv1MwEicAvN6zWFm5GLC1ZYTVD+WFg3xGAkQ==
- dependencies:
- "@babel/parser" "^7.10.4"
- "@babel/types" "^7.10.4"
- "@vue/compiler-core" "3.0.0-rc.10"
- "@vue/compiler-dom" "3.0.0-rc.10"
- "@vue/compiler-ssr" "3.0.0-rc.10"
- "@vue/shared" "3.0.0-rc.10"
- consolidate "^0.15.1"
+"@vue/compiler-sfc@^3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.4.tgz#2119fe1e68d2c268aafa20461c82c139a9adf8e0"
+ integrity sha512-brDn6HTuK6R3oBCjtMPPsIpyJEZFinlnxjtBXww/goFJOJBAU9CrsdegwyZItNnixCFUIg4CLv4Nj1Eg/eKlfg==
+ dependencies:
+ "@babel/parser" "^7.12.0"
+ "@babel/types" "^7.12.0"
+ "@vue/compiler-core" "3.0.4"
+ "@vue/compiler-dom" "3.0.4"
+ "@vue/compiler-ssr" "3.0.4"
+ "@vue/shared" "3.0.4"
+ consolidate "^0.16.0"
estree-walker "^2.0.1"
hash-sum "^2.0.0"
lru-cache "^5.1.1"
magic-string "^0.25.7"
merge-source-map "^1.1.0"
- postcss "^7.0.27"
- postcss-modules "^3.1.0"
- postcss-selector-parser "^6.0.2"
+ postcss "^7.0.32"
+ postcss-modules "^3.2.2"
+ postcss-selector-parser "^6.0.4"
source-map "^0.6.1"
-"@vue/compiler-ssr@3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.0-rc.10.tgz#95a5f6b65b19a514c94f056994ec144b3b1b03ae"
- integrity sha512-JBPil8sO5j7puB8acX2CQMRXEYB/EP8PoEur7RcF/+aqATI7C4yqWcSLC5TRJpigj6xE6ku6sx8om+j7ZHvgBw==
+"@vue/compiler-ssr@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.4.tgz#ccbd1f55734d51d1402fad825ac102002a7a07c7"
+ integrity sha512-4aYWQEL4+LS4+D44K9Z7xMOWMEjBsz4Li9nMcj2rxRQ35ewK6uFPodvs6ORP60iBDSkwUFZoldFlNemQlu1BFw==
dependencies:
- "@vue/compiler-dom" "3.0.0-rc.10"
- "@vue/shared" "3.0.0-rc.10"
+ "@vue/compiler-dom" "3.0.4"
+ "@vue/shared" "3.0.4"
-"@vue/reactivity@3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.0-rc.10.tgz#34d5f51bcc5a7c36e27d7a9c1bd7a3d25ffa7c56"
- integrity sha512-mkUZfOJlbqGZx2cARmhCs5r2+xLJPL7VFNagmlA3Fd66ZXBc3ZvTQdYsY4VUbYJFe5ByIzqu9TZiAkzXY+JVaA==
+"@vue/reactivity@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.4.tgz#b6599dd8271a745960a03f05744ccf7991ba5d8d"
+ integrity sha512-AFTABrLhUYZY2on3ea9FxeXal7w3f6qIp9gT+/oG93H7dFTL5LvVnxygCopv7tvkIl/GSGQb/yK1D1gmXx1Pww==
dependencies:
- "@vue/shared" "3.0.0-rc.10"
+ "@vue/shared" "3.0.4"
-"@vue/runtime-core@3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.0-rc.10.tgz#9055aef5113cbc328aaec29760c2151e0ed3cf40"
- integrity sha512-VK/kq4gDDoqZ45CVwdbLLpikXLYLCt6YLhdgXX3fhf20gvPqrbEZv1ZNLruNnhhTpf9cLyU4tZ18DHeaUYPziw==
+"@vue/runtime-core@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.4.tgz#a5b9a001560b1fd8c01a43f68b764c555de7836c"
+ integrity sha512-qH9e4kqU7b3u1JewvLmGmoAGY+mnuBqz7aEKb2mhpEgwa1yFv496BRuUfMXXMCix3+TndUVMJ8jt41FSdNppwg==
dependencies:
- "@vue/reactivity" "3.0.0-rc.10"
- "@vue/shared" "3.0.0-rc.10"
+ "@vue/reactivity" "3.0.4"
+ "@vue/shared" "3.0.4"
-"@vue/runtime-dom@3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.0-rc.10.tgz#50f95cb991483a4262163723320967ad17bb321f"
- integrity sha512-bH4GuneHt3FQ+/21jba5orM/CO9N1cnT7J3wtrxopFJ4/4H5cvHXyG6v+ZVTu1d733Ij/6yMRA7xbtfi9a4zJw==
+"@vue/runtime-dom@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.4.tgz#6f81aec545f24511d2c28a315aa3391420b69c68"
+ integrity sha512-BGIoiTSESzWUhN0Ofi2X/q+HN8f6IUFmUEyyBGKbmx7DTAJNZhFfjqsepfXQrM5IGeTfJLB1ZEVyroDQJNXq3g==
dependencies:
- "@vue/runtime-core" "3.0.0-rc.10"
- "@vue/shared" "3.0.0-rc.10"
+ "@vue/runtime-core" "3.0.4"
+ "@vue/shared" "3.0.4"
csstype "^2.6.8"
-"@vue/shared@3.0.0-rc.10":
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.0-rc.10.tgz#e7ab62abcabbfc738545902b96a3aa78f59f3286"
- integrity sha512-fI6gVhhgb3cAmEkY4oeVVA2hWZ2xvkgogHdBI5PL7gSvZnOB6XZ2eQGsYjC4W+7BegvEkoMBuZsFXVa4ZQ07XQ==
+"@vue/shared@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.4.tgz#6dc50f593bdfdeaa6183d1dbc15e2d45e7c6b8b3"
+ integrity sha512-Swfbz31AaMX48CpFl+YmIrqOH9MgJMTrltG9e26A4ZxYx9LjGuMV+41WnxFzS3Bc9nbrc6sDPM37G6nIT8NJSg==
"@zeit/schemas@2.6.0":
version "2.6.0"
@@ -1385,16 +1459,16 @@ babel-eslint@^10.0.1:
eslint-visitor-keys "^1.0.0"
resolve "^1.12.0"
-babel-jest@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463"
- integrity sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==
+babel-jest@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056"
+ integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==
dependencies:
- "@jest/transform" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/babel__core" "^7.1.7"
babel-plugin-istanbul "^6.0.0"
- babel-preset-jest "^26.3.0"
+ babel-preset-jest "^26.6.2"
chalk "^4.0.0"
graceful-fs "^4.2.4"
slash "^3.0.0"
@@ -1410,20 +1484,20 @@ babel-plugin-istanbul@^6.0.0:
istanbul-lib-instrument "^4.0.0"
test-exclude "^6.0.0"
-babel-plugin-jest-hoist@^26.2.0:
- version "26.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz#bdd0011df0d3d513e5e95f76bd53b51147aca2dd"
- integrity sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA==
+babel-plugin-jest-hoist@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d"
+ integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==
dependencies:
"@babel/template" "^7.3.3"
"@babel/types" "^7.3.3"
"@types/babel__core" "^7.0.0"
"@types/babel__traverse" "^7.0.6"
-babel-preset-current-node-syntax@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da"
- integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==
+babel-preset-current-node-syntax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77"
+ integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q==
dependencies:
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-syntax-bigint" "^7.8.3"
@@ -1436,14 +1510,15 @@ babel-preset-current-node-syntax@^0.1.3:
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-top-level-await" "^7.8.3"
-babel-preset-jest@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz#ed6344506225c065fd8a0b53e191986f74890776"
- integrity sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==
+babel-preset-jest@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee"
+ integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==
dependencies:
- babel-plugin-jest-hoist "^26.2.0"
- babel-preset-current-node-syntax "^0.1.3"
+ babel-plugin-jest-hoist "^26.6.2"
+ babel-preset-current-node-syntax "^1.0.0"
balanced-match@^1.0.0:
version "1.0.0"
@@ -1480,7 +1555,7 @@ big.js@^5.2.2:
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
-bluebird@^3.1.1:
+bluebird@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
@@ -1773,6 +1848,11 @@ ci-info@^2.0.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+cjs-module-lexer@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f"
+ integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==
+
class-utils@^0.3.5:
version "0.3.6"
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@@ -1966,12 +2046,12 @@ concat-stream@^1.6.2:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-consolidate@^0.15.1:
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
- integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
+consolidate@^0.16.0:
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16"
+ integrity sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==
dependencies:
- bluebird "^3.1.1"
+ bluebird "^3.7.2"
constant-case@^3.0.3:
version "3.0.3"
@@ -2304,10 +2384,10 @@ diff-sequences@^25.2.6:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
-diff-sequences@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2"
- integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig==
+diff-sequences@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
+ integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
dir-glob@^3.0.1:
version "3.0.1"
@@ -2503,10 +2583,10 @@ eslint-config-prettier@^6.11.0:
dependencies:
get-stdin "^6.0.0"
-eslint-plugin-prettier@^3.1.2:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2"
- integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==
+eslint-plugin-prettier@^3.1.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.2.0.tgz#af391b2226fa0e15c96f36c733f6e9035dbd952c"
+ integrity sha512-kOUSJnFjAUFKwVxuzy6sA5yyMx6+o9ino4gCdShzBNx4eyFRudWRYKCFolKjoM40PEiuU6Cn7wBLfq3WsGg7qg==
dependencies:
prettier-linter-helpers "^1.0.0"
@@ -2525,15 +2605,15 @@ eslint-plugin-vue@^5.1.0:
dependencies:
vue-eslint-parser "^5.0.0"
-eslint-plugin-vue@^7.0.0-beta.3:
- version "7.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.0.0-beta.3.tgz#37a4fedf46db74cdb3be268390b4541eb7a810b7"
- integrity sha512-/p23IRPN9gFNN7dzesrctt06Kvs9E3VRB8BGIAPSEaQNk5yhlKUzntPARjUpsTWW+DQg0mqglZptfkUJK4+4EQ==
+eslint-plugin-vue@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.2.0.tgz#dd8323fe7ca28fe9377ce3f5f6cf17afe2686f2a"
+ integrity sha512-4mt0yIv6rBDNtvis/g22a0ozJ12GfcdEzX77u0ICYjKlxOVtGrKGEvo0cbOObHaKDg9a9kJcoaNodqE4TPfS2A==
dependencies:
eslint-utils "^2.1.0"
natural-compare "^1.4.0"
semver "^7.3.2"
- vue-eslint-parser "^7.1.0"
+ vue-eslint-parser "^7.2.0"
eslint-scope@^4.0.0:
version "4.0.3"
@@ -2543,7 +2623,7 @@ eslint-scope@^4.0.0:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-scope@^5.0.0, eslint-scope@^5.1.0:
+eslint-scope@^5.0.0, eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@@ -2568,22 +2648,22 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-eslint@^7.9.0:
- version "7.9.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337"
- integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==
+eslint@^7.14.0:
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.14.0.tgz#2d2cac1d28174c510a97b377f122a5507958e344"
+ integrity sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==
dependencies:
"@babel/code-frame" "^7.0.0"
- "@eslint/eslintrc" "^0.1.3"
+ "@eslint/eslintrc" "^0.2.1"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.0.1"
doctrine "^3.0.0"
enquirer "^2.3.5"
- eslint-scope "^5.1.0"
+ eslint-scope "^5.1.1"
eslint-utils "^2.1.0"
- eslint-visitor-keys "^1.3.0"
+ eslint-visitor-keys "^2.0.0"
espree "^7.3.0"
esquery "^1.2.0"
esutils "^2.0.2"
@@ -2781,16 +2861,16 @@ expect-puppeteer@^4.4.0:
resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz#1c948af08acdd6c8cbdb7f90e617f44d86888886"
integrity sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA==
-expect@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.2.tgz#36db120928a5a2d7d9736643032de32f24e1b2a1"
- integrity sha512-IlJ3X52Z0lDHm7gjEp+m76uX46ldH5VpqmU0006vqDju/285twh7zaWMRhs67VpQhBwjjMchk+p5aA0VkERCAA==
+expect@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417"
+ integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
ansi-styles "^4.0.0"
jest-get-type "^26.3.0"
- jest-matcher-utils "^26.4.2"
- jest-message-util "^26.3.0"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
jest-regex-util "^26.0.0"
extend-shallow@^2.0.1:
@@ -3953,57 +4033,57 @@ jake@^10.6.1:
filelist "^1.0.1"
minimatch "^3.0.4"
-jest-changed-files@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.3.0.tgz#68fb2a7eb125f50839dab1f5a17db3607fe195b1"
- integrity sha512-1C4R4nijgPltX6fugKxM4oQ18zimS7LqQ+zTTY8lMCMFPrxqBFb7KJH0Z2fRQJvw2Slbaipsqq7s1mgX5Iot+g==
+jest-changed-files@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0"
+ integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
execa "^4.0.0"
throat "^5.0.0"
-jest-cli@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.4.2.tgz#24afc6e4dfc25cde4c7ec4226fb7db5f157c21da"
- integrity sha512-zb+lGd/SfrPvoRSC/0LWdaWCnscXc1mGYW//NP4/tmBvRPT3VntZ2jtKUONsRi59zc5JqmsSajA9ewJKFYp8Cw==
+jest-cli@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a"
+ integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==
dependencies:
- "@jest/core" "^26.4.2"
- "@jest/test-result" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/core" "^26.6.3"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
chalk "^4.0.0"
exit "^0.1.2"
graceful-fs "^4.2.4"
import-local "^3.0.2"
is-ci "^2.0.0"
- jest-config "^26.4.2"
- jest-util "^26.3.0"
- jest-validate "^26.4.2"
+ jest-config "^26.6.3"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
prompts "^2.0.1"
- yargs "^15.3.1"
+ yargs "^15.4.1"
-jest-config@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.4.2.tgz#da0cbb7dc2c131ffe831f0f7f2a36256e6086558"
- integrity sha512-QBf7YGLuToiM8PmTnJEdRxyYy3mHWLh24LJZKVdXZ2PNdizSe1B/E8bVm+HYcjbEzGuVXDv/di+EzdO/6Gq80A==
+jest-config@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349"
+ integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/test-sequencer" "^26.4.2"
- "@jest/types" "^26.3.0"
- babel-jest "^26.3.0"
+ "@jest/test-sequencer" "^26.6.3"
+ "@jest/types" "^26.6.2"
+ babel-jest "^26.6.3"
chalk "^4.0.0"
deepmerge "^4.2.2"
glob "^7.1.1"
graceful-fs "^4.2.4"
- jest-environment-jsdom "^26.3.0"
- jest-environment-node "^26.3.0"
+ jest-environment-jsdom "^26.6.2"
+ jest-environment-node "^26.6.2"
jest-get-type "^26.3.0"
- jest-jasmine2 "^26.4.2"
+ jest-jasmine2 "^26.6.3"
jest-regex-util "^26.0.0"
- jest-resolve "^26.4.0"
- jest-util "^26.3.0"
- jest-validate "^26.4.2"
+ jest-resolve "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
micromatch "^4.0.2"
- pretty-format "^26.4.2"
+ pretty-format "^26.6.2"
jest-dev-server@^4.4.0:
version "4.4.0"
@@ -4028,15 +4108,15 @@ jest-diff@^25.2.1:
jest-get-type "^25.2.6"
pretty-format "^25.5.0"
-jest-diff@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.4.2.tgz#a1b7b303bcc534aabdb3bd4a7caf594ac059f5aa"
- integrity sha512-6T1XQY8U28WH0Z5rGpQ+VqZSZz8EN8rZcBtfvXaOkbwxIEeRre6qnuZQlbY1AJ4MKDxQF8EkrCvK+hL/VkyYLQ==
+jest-diff@^26.0.0, jest-diff@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"
+ integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==
dependencies:
chalk "^4.0.0"
- diff-sequences "^26.3.0"
+ diff-sequences "^26.6.2"
jest-get-type "^26.3.0"
- pretty-format "^26.4.2"
+ pretty-format "^26.6.2"
jest-docblock@^26.0.0:
version "26.0.0"
@@ -4045,41 +4125,41 @@ jest-docblock@^26.0.0:
dependencies:
detect-newline "^3.0.0"
-jest-each@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.4.2.tgz#bb14f7f4304f2bb2e2b81f783f989449b8b6ffae"
- integrity sha512-p15rt8r8cUcRY0Mvo1fpkOGYm7iI8S6ySxgIdfh3oOIv+gHwrHTy5VWCGOecWUhDsit4Nz8avJWdT07WLpbwDA==
+jest-each@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb"
+ integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
chalk "^4.0.0"
jest-get-type "^26.3.0"
- jest-util "^26.3.0"
- pretty-format "^26.4.2"
+ jest-util "^26.6.2"
+ pretty-format "^26.6.2"
-jest-environment-jsdom@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.3.0.tgz#3b749ba0f3a78e92ba2c9ce519e16e5dd515220c"
- integrity sha512-zra8He2btIMJkAzvLaiZ9QwEPGEetbxqmjEBQwhH3CA+Hhhu0jSiEJxnJMbX28TGUvPLxBt/zyaTLrOPF4yMJA==
+jest-environment-jsdom@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e"
+ integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==
dependencies:
- "@jest/environment" "^26.3.0"
- "@jest/fake-timers" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/node" "*"
- jest-mock "^26.3.0"
- jest-util "^26.3.0"
- jsdom "^16.2.2"
-
-jest-environment-node@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.3.0.tgz#56c6cfb506d1597f94ee8d717072bda7228df849"
- integrity sha512-c9BvYoo+FGcMj5FunbBgtBnbR5qk3uky8PKyRVpSfe2/8+LrNQMiXX53z6q2kY+j15SkjQCOSL/6LHnCPLVHNw==
- dependencies:
- "@jest/environment" "^26.3.0"
- "@jest/fake-timers" "^26.3.0"
- "@jest/types" "^26.3.0"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
+ jsdom "^16.4.0"
+
+jest-environment-node@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c"
+ integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==
+ dependencies:
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/node" "*"
- jest-mock "^26.3.0"
- jest-util "^26.3.0"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
jest-environment-puppeteer@^4.4.0:
version "4.4.0"
@@ -4101,68 +4181,68 @@ jest-get-type@^26.3.0:
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==
-jest-haste-map@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.3.0.tgz#c51a3b40100d53ab777bfdad382d2e7a00e5c726"
- integrity sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==
+jest-haste-map@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa"
+ integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
"@types/graceful-fs" "^4.1.2"
"@types/node" "*"
anymatch "^3.0.3"
fb-watchman "^2.0.0"
graceful-fs "^4.2.4"
jest-regex-util "^26.0.0"
- jest-serializer "^26.3.0"
- jest-util "^26.3.0"
- jest-worker "^26.3.0"
+ jest-serializer "^26.6.2"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
micromatch "^4.0.2"
sane "^4.0.3"
walker "^1.0.7"
optionalDependencies:
fsevents "^2.1.2"
-jest-jasmine2@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz#18a9d5bec30904267ac5e9797570932aec1e2257"
- integrity sha512-z7H4EpCldHN1J8fNgsja58QftxBSL+JcwZmaXIvV9WKIM+x49F4GLHu/+BQh2kzRKHAgaN/E82od+8rTOBPyPA==
+jest-jasmine2@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd"
+ integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==
dependencies:
"@babel/traverse" "^7.1.0"
- "@jest/environment" "^26.3.0"
- "@jest/source-map" "^26.3.0"
- "@jest/test-result" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/environment" "^26.6.2"
+ "@jest/source-map" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
- expect "^26.4.2"
+ expect "^26.6.2"
is-generator-fn "^2.0.0"
- jest-each "^26.4.2"
- jest-matcher-utils "^26.4.2"
- jest-message-util "^26.3.0"
- jest-runtime "^26.4.2"
- jest-snapshot "^26.4.2"
- jest-util "^26.3.0"
- pretty-format "^26.4.2"
+ jest-each "^26.6.2"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-runtime "^26.6.3"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ pretty-format "^26.6.2"
throat "^5.0.0"
-jest-leak-detector@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz#c73e2fa8757bf905f6f66fb9e0070b70fa0f573f"
- integrity sha512-akzGcxwxtE+9ZJZRW+M2o+nTNnmQZxrHJxX/HjgDaU5+PLmY1qnQPnMjgADPGCRPhB+Yawe1iij0REe+k/aHoA==
+jest-leak-detector@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af"
+ integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==
dependencies:
jest-get-type "^26.3.0"
- pretty-format "^26.4.2"
+ pretty-format "^26.6.2"
-jest-matcher-utils@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.4.2.tgz#fa81f3693f7cb67e5fc1537317525ef3b85f4b06"
- integrity sha512-KcbNqWfWUG24R7tu9WcAOKKdiXiXCbMvQYT6iodZ9k1f7065k0keUOW6XpJMMvah+hTfqkhJhRXmA3r3zMAg0Q==
+jest-matcher-utils@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a"
+ integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==
dependencies:
chalk "^4.0.0"
- jest-diff "^26.4.2"
+ jest-diff "^26.6.2"
jest-get-type "^26.3.0"
- pretty-format "^26.4.2"
+ pretty-format "^26.6.2"
jest-message-util@^26.3.0:
version "26.3.0"
@@ -4178,12 +4258,27 @@ jest-message-util@^26.3.0:
slash "^3.0.0"
stack-utils "^2.0.2"
-jest-mock@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.3.0.tgz#ee62207c3c5ebe5f35b760e1267fee19a1cfdeba"
- integrity sha512-PeaRrg8Dc6mnS35gOo/CbZovoDPKAeB1FICZiuagAgGvbWdNNyjQjkOaGUa/3N3JtpQ/Mh9P4A2D4Fv51NnP8Q==
+jest-message-util@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07"
+ integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==
dependencies:
- "@jest/types" "^26.3.0"
+ "@babel/code-frame" "^7.0.0"
+ "@jest/types" "^26.6.2"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ micromatch "^4.0.2"
+ pretty-format "^26.6.2"
+ slash "^3.0.0"
+ stack-utils "^2.0.2"
+
+jest-mock@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302"
+ integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==
+ dependencies:
+ "@jest/types" "^26.6.2"
"@types/node" "*"
jest-pnp-resolver@^1.2.2:
@@ -4204,117 +4299,131 @@ jest-regex-util@^26.0.0:
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28"
integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==
-jest-resolve-dependencies@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.2.tgz#739bdb027c14befb2fe5aabbd03f7bab355f1dc5"
- integrity sha512-ADHaOwqEcVc71uTfySzSowA/RdxUpCxhxa2FNLiin9vWLB1uLPad3we+JSSROq5+SrL9iYPdZZF8bdKM7XABTQ==
+jest-resolve-dependencies@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6"
+ integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
jest-regex-util "^26.0.0"
- jest-snapshot "^26.4.2"
+ jest-snapshot "^26.6.2"
-jest-resolve@^26.4.0:
- version "26.4.0"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.4.0.tgz#6dc0af7fb93e65b73fec0368ca2b76f3eb59a6d7"
- integrity sha512-bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg==
+jest-resolve@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507"
+ integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
chalk "^4.0.0"
graceful-fs "^4.2.4"
jest-pnp-resolver "^1.2.2"
- jest-util "^26.3.0"
+ jest-util "^26.6.2"
read-pkg-up "^7.0.1"
- resolve "^1.17.0"
+ resolve "^1.18.1"
slash "^3.0.0"
-jest-runner@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.4.2.tgz#c3ec5482c8edd31973bd3935df5a449a45b5b853"
- integrity sha512-FgjDHeVknDjw1gRAYaoUoShe1K3XUuFMkIaXbdhEys+1O4bEJS8Avmn4lBwoMfL8O5oFTdWYKcf3tEJyyYyk8g==
+jest-runner@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159"
+ integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==
dependencies:
- "@jest/console" "^26.3.0"
- "@jest/environment" "^26.3.0"
- "@jest/test-result" "^26.3.0"
- "@jest/types" "^26.3.0"
+ "@jest/console" "^26.6.2"
+ "@jest/environment" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/node" "*"
chalk "^4.0.0"
emittery "^0.7.1"
exit "^0.1.2"
graceful-fs "^4.2.4"
- jest-config "^26.4.2"
+ jest-config "^26.6.3"
jest-docblock "^26.0.0"
- jest-haste-map "^26.3.0"
- jest-leak-detector "^26.4.2"
- jest-message-util "^26.3.0"
- jest-resolve "^26.4.0"
- jest-runtime "^26.4.2"
- jest-util "^26.3.0"
- jest-worker "^26.3.0"
+ jest-haste-map "^26.6.2"
+ jest-leak-detector "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-resolve "^26.6.2"
+ jest-runtime "^26.6.3"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
source-map-support "^0.5.6"
throat "^5.0.0"
-jest-runtime@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.4.2.tgz#94ce17890353c92e4206580c73a8f0c024c33c42"
- integrity sha512-4Pe7Uk5a80FnbHwSOk7ojNCJvz3Ks2CNQWT5Z7MJo4tX0jb3V/LThKvD9tKPNVNyeMH98J/nzGlcwc00R2dSHQ==
- dependencies:
- "@jest/console" "^26.3.0"
- "@jest/environment" "^26.3.0"
- "@jest/fake-timers" "^26.3.0"
- "@jest/globals" "^26.4.2"
- "@jest/source-map" "^26.3.0"
- "@jest/test-result" "^26.3.0"
- "@jest/transform" "^26.3.0"
- "@jest/types" "^26.3.0"
+jest-runtime@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b"
+ integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/globals" "^26.6.2"
+ "@jest/source-map" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
+ cjs-module-lexer "^0.6.0"
collect-v8-coverage "^1.0.0"
exit "^0.1.2"
glob "^7.1.3"
graceful-fs "^4.2.4"
- jest-config "^26.4.2"
- jest-haste-map "^26.3.0"
- jest-message-util "^26.3.0"
- jest-mock "^26.3.0"
+ jest-config "^26.6.3"
+ jest-haste-map "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-mock "^26.6.2"
jest-regex-util "^26.0.0"
- jest-resolve "^26.4.0"
- jest-snapshot "^26.4.2"
- jest-util "^26.3.0"
- jest-validate "^26.4.2"
+ jest-resolve "^26.6.2"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
slash "^3.0.0"
strip-bom "^4.0.0"
- yargs "^15.3.1"
+ yargs "^15.4.1"
-jest-serializer@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.3.0.tgz#1c9d5e1b74d6e5f7e7f9627080fa205d976c33ef"
- integrity sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==
+jest-serializer@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1"
+ integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==
dependencies:
"@types/node" "*"
graceful-fs "^4.2.4"
-jest-snapshot@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.4.2.tgz#87d3ac2f2bd87ea8003602fbebd8fcb9e94104f6"
- integrity sha512-N6Uub8FccKlf5SBFnL2Ri/xofbaA68Cc3MGjP/NuwgnsvWh+9hLIR/DhrxbSiKXMY9vUW5dI6EW1eHaDHqe9sg==
+jest-snapshot@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84"
+ integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==
dependencies:
"@babel/types" "^7.0.0"
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
+ "@types/babel__traverse" "^7.0.4"
"@types/prettier" "^2.0.0"
chalk "^4.0.0"
- expect "^26.4.2"
+ expect "^26.6.2"
graceful-fs "^4.2.4"
- jest-diff "^26.4.2"
+ jest-diff "^26.6.2"
jest-get-type "^26.3.0"
- jest-haste-map "^26.3.0"
- jest-matcher-utils "^26.4.2"
- jest-message-util "^26.3.0"
- jest-resolve "^26.4.0"
+ jest-haste-map "^26.6.2"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-resolve "^26.6.2"
natural-compare "^1.4.0"
- pretty-format "^26.4.2"
+ pretty-format "^26.6.2"
semver "^7.3.2"
-jest-util@26.x, jest-util@^26.3.0:
+jest-util@^26.1.0, jest-util@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1"
+ integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ is-ci "^2.0.0"
+ micromatch "^4.0.2"
+
+jest-util@^26.3.0:
version "26.3.0"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e"
integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==
@@ -4326,17 +4435,17 @@ jest-util@26.x, jest-util@^26.3.0:
is-ci "^2.0.0"
micromatch "^4.0.2"
-jest-validate@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.4.2.tgz#e871b0dfe97747133014dcf6445ee8018398f39c"
- integrity sha512-blft+xDX7XXghfhY0mrsBCYhX365n8K5wNDC4XAcNKqqjEzsRUSXP44m6PL0QJEW2crxQFLLztVnJ4j7oPlQrQ==
+jest-validate@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec"
+ integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
camelcase "^6.0.0"
chalk "^4.0.0"
jest-get-type "^26.3.0"
leven "^3.1.0"
- pretty-format "^26.4.2"
+ pretty-format "^26.6.2"
jest-watch-typeahead@^0.6.0:
version "0.6.1"
@@ -4364,23 +4473,36 @@ jest-watcher@^26.3.0:
jest-util "^26.3.0"
string-length "^4.0.1"
-jest-worker@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f"
- integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==
+jest-watcher@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975"
+ integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==
+ dependencies:
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ jest-util "^26.6.2"
+ string-length "^4.0.1"
+
+jest-worker@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^7.0.0"
-jest@^26.0.0:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/jest/-/jest-26.4.2.tgz#7e8bfb348ec33f5459adeaffc1a25d5752d9d312"
- integrity sha512-LLCjPrUh98Ik8CzW8LLVnSCfLaiY+wbK53U7VxnFSX7Q+kWC4noVeDvGWIFw0Amfq1lq2VfGm7YHWSLBV62MJw==
+jest@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef"
+ integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==
dependencies:
- "@jest/core" "^26.4.2"
+ "@jest/core" "^26.6.3"
import-local "^3.0.2"
- jest-cli "^26.4.2"
+ jest-cli "^26.6.3"
js-tokens@^4.0.0:
version "4.0.0"
@@ -4400,7 +4522,7 @@ jsbn@~0.1.0:
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-jsdom@^16.2.2:
+jsdom@^16.4.0:
version "16.4.0"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb"
integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==
@@ -4542,7 +4664,7 @@ lazy-cache@^1.0.3:
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
-lerna-changelog@^1.0.0:
+lerna-changelog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/lerna-changelog/-/lerna-changelog-1.0.1.tgz#53090ab7f047730ec88d32087762164626269d3a"
integrity sha512-E7ewsfQknBmQcUspCqd5b8Hbbp5SX768y6vEiIdXXui9pPhZS1WlrKtiAUPs0CeGd8Pv4gtIC/h3wSWIZuvqaA==
@@ -4722,7 +4844,7 @@ macos-release@^2.2.0:
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac"
integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==
-magic-string@^0.25.5, magic-string@^0.25.7:
+magic-string@^0.25.7:
version "0.25.7"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
@@ -5321,7 +5443,7 @@ open@^7.0.0:
is-docker "^2.0.0"
is-wsl "^2.1.1"
-opener@^1.5.1:
+opener@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
@@ -5680,7 +5802,7 @@ postcss-modules-values@^3.0.0:
icss-utils "^4.0.0"
postcss "^7.0.6"
-postcss-modules@^3.1.0:
+postcss-modules@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-3.2.2.tgz#ee390de0f9f18e761e1778dfb9be26685c02c51f"
integrity sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw==
@@ -5704,12 +5826,22 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
indexes-of "^1.0.1"
uniq "^1.0.1"
+postcss-selector-parser@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
+ integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
+ dependencies:
+ cssesc "^3.0.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+ util-deprecate "^1.0.2"
+
postcss-value-parser@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
-postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
+postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
version "7.0.32"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d"
integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==
@@ -5750,15 +5882,15 @@ pretty-format@^25.2.1, pretty-format@^25.5.0:
ansi-styles "^4.0.0"
react-is "^16.12.0"
-pretty-format@^26.4.2:
- version "26.4.2"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.2.tgz#d081d032b398e801e2012af2df1214ef75a81237"
- integrity sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA==
+pretty-format@^26.0.0, pretty-format@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
+ integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==
dependencies:
- "@jest/types" "^26.3.0"
+ "@jest/types" "^26.6.2"
ansi-regex "^5.0.0"
ansi-styles "^4.0.0"
- react-is "^16.12.0"
+ react-is "^17.0.1"
process-nextick-args@~2.0.0:
version "2.0.1"
@@ -5887,6 +6019,11 @@ react-is@^16.12.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+react-is@^17.0.1:
+ version "17.0.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339"
+ integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==
+
read-pkg-up@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
@@ -6137,7 +6274,7 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.3.
dependencies:
path-parse "^1.0.6"
-resolve@^1.19.0:
+resolve@^1.18.1:
version "1.19.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
@@ -6205,10 +6342,10 @@ rollup-pluginutils@^2.8.2:
dependencies:
estree-walker "^0.6.1"
-rollup@^2.26.0:
- version "2.26.11"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.11.tgz#4fc31de9c7b83d50916fc8395f8c3d24730cdaae"
- integrity sha512-xyfxxhsE6hW57xhfL1I+ixH8l2bdoIMaAecdQiWF3N7IgJEMu99JG+daBiSZQjnBpzFxa0/xZm+3pbCdAQehHw==
+rollup@^2.34.0:
+ version "2.34.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.34.1.tgz#a387230df02c58b242794a213dfb68b42de2c8fb"
+ integrity sha512-tGveB6NU5x4MS/iXaIsjfUkEv4hxzJJ4o0FRy5LO62Ndx3R2cmE1qsLYlSfRkvHUUPqWiFoxEm8pRftzh1a5HA==
optionalDependencies:
fsevents "~2.1.2"
@@ -6335,7 +6472,7 @@ serve-handler@6.1.3:
path-to-regexp "2.2.1"
range-parser "1.2.0"
-serve@^11.3.1:
+serve@^11.3.2:
version "11.3.2"
resolved "https://registry.yarnpkg.com/serve/-/serve-11.3.2.tgz#b905e980616feecd170e51c8f979a7b2374098f5"
integrity sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w==
@@ -6567,16 +6704,16 @@ source-map-url@^0.4.0:
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
source-map@^0.5.0, source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
source-map@^0.7.3:
version "0.7.3"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
@@ -7102,22 +7239,22 @@ trim-off-newlines@^1.0.0:
resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
-ts-jest@^26.0.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.3.0.tgz#6b2845045347dce394f069bb59358253bc1338a9"
- integrity sha512-Jq2uKfx6bPd9+JDpZNMBJMdMQUC3sJ08acISj8NXlVgR2d5OqslEHOR2KHMgwymu8h50+lKIm0m0xj/ioYdW2Q==
+ts-jest@^26.4.0:
+ version "26.4.4"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.4.4.tgz#61f13fb21ab400853c532270e52cc0ed7e502c49"
+ integrity sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg==
dependencies:
"@types/jest" "26.x"
bs-logger "0.x"
buffer-from "1.x"
fast-json-stable-stringify "2.x"
- jest-util "26.x"
+ jest-util "^26.1.0"
json5 "2.x"
lodash.memoize "4.x"
make-error "1.x"
mkdirp "1.x"
semver "7.x"
- yargs-parser "18.x"
+ yargs-parser "20.x"
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
version "1.13.0"
@@ -7194,17 +7331,17 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript-eslint-language-service@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/typescript-eslint-language-service/-/typescript-eslint-language-service-4.0.1.tgz#e5458eef3cdfac5086d3b6ccad11c0201ca91b05"
- integrity sha512-lMiU7Q6Kvzmh13LMCVKpSlHXja26ZtJoEgMt5KKaP8j9NdBkmfk8hsBdTHMcBILmYazoXPIUBvkRzNVRkO9+mw==
+typescript-eslint-language-service@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/typescript-eslint-language-service/-/typescript-eslint-language-service-4.1.2.tgz#df60ea6eec96e158ddd52346865f5dafc955ee9d"
+ integrity sha512-qIY6SJOqoODeAZs5d88W1lmA+ZQxiCypqK7Adxbl0G5EjE9DM1iP9FfpY7Jk4cO3ohfgOmTQ4A4r0jzyhCM7fA==
dependencies:
read-pkg-up "^7.0.0"
-typescript@^4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2"
- integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==
+typescript@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9"
+ integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==
uglify-js@^3.1.4:
version "3.10.4"
@@ -7299,7 +7436,7 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
@@ -7319,10 +7456,10 @@ v8-compile-cache@^2.0.3:
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745"
integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==
-v8-to-istanbul@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz#0608f5b49a481458625edb058488607f25498ba5"
- integrity sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q==
+v8-to-istanbul@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc"
+ integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.1"
convert-source-map "^1.6.0"
@@ -7362,10 +7499,10 @@ vue-eslint-parser@^5.0.0:
esquery "^1.0.1"
lodash "^4.17.11"
-vue-eslint-parser@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83"
- integrity sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==
+vue-eslint-parser@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.2.0.tgz#1e17ae94ca71e617025e05143c8ac5593aacb6ef"
+ integrity sha512-uVcQqe8sUNzdHGcRHMd2Z/hl6qEaWrAmglTKP92Fnq9TYU9un8xsyFgEdFJaXh/1rd7h8Aic1GaiQow5nVneow==
dependencies:
debug "^4.1.1"
eslint-scope "^5.0.0"
@@ -7374,19 +7511,21 @@ vue-eslint-parser@^7.1.0:
esquery "^1.0.1"
lodash "^4.17.15"
-vue-i18n@^9.0.0-beta.1:
- version "9.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.0.0-beta.1.tgz#50e1ef58958925c0790c51bc34b1ee4312e18b17"
- integrity sha512-AifaNUJ8dp7036nxvSZHeU/ODzBZotQIQBKl0olWTdVEeVrSy85LB/xA9vmdxlsppNDwVWWbbGtq/CtCIttnHw==
+vue-i18n@^9.0.0-beta.10:
+ version "9.0.0-beta.10"
+ resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.0.0-beta.10.tgz#6a0fff096cb63fd65b8b51b7c9bc608b94c63781"
+ integrity sha512-im8DN0ysULNMCMSn+11wFETKfqcg7f67Qxkx3J/DyPALHzt4ikYPF2I+BzYdmOAv2+Adlrj2NA/wz4jzTqtr6w==
+ dependencies:
+ source-map "0.6.1"
-vue@^3.0.0-rc.1:
- version "3.0.0-rc.10"
- resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.0-rc.10.tgz#31298a757b4fad6ee8973d0fa27c4fde8574bd01"
- integrity sha512-nRsyIQtOWLDMBb5dsPwg/WdIqznCMVWN6O6wJSzhseKC768wHlZKcJ7SPHhWPid9wi3Ykhtl9vtgvxTK/qICkw==
+vue@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.4.tgz#872c65c143f5717bd5387c61613d9f55f4cc0f43"
+ integrity sha512-2o+AiQF8sAupyhbyl3oxVCl3WCwC/n5NI7VMM+gVQ231qvSB8eI7sCBloloqDJK6yA367EEtmRSeSCf4sxCC+A==
dependencies:
- "@vue/compiler-dom" "3.0.0-rc.10"
- "@vue/runtime-dom" "3.0.0-rc.10"
- "@vue/shared" "3.0.0-rc.10"
+ "@vue/compiler-dom" "3.0.4"
+ "@vue/runtime-dom" "3.0.4"
+ "@vue/shared" "3.0.4"
w3c-hr-time@^1.0.2:
version "1.0.2"
@@ -7590,13 +7729,10 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yargs-parser@18.x, yargs-parser@^18.1.2:
- version "18.1.3"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
- integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
+yargs-parser@20.x:
+ version "20.2.4"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
+ integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
yargs-parser@^13.1.2:
version "13.1.2"
@@ -7606,6 +7742,14 @@ yargs-parser@^13.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"
+yargs-parser@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
yargs-parser@^20.2.3:
version "20.2.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26"
@@ -7627,7 +7771,7 @@ yargs@^13.0.0:
y18n "^4.0.0"
yargs-parser "^13.1.2"
-yargs@^15.0.0, yargs@^15.3.1:
+yargs@^15.0.0, yargs@^15.4.1:
version "15.4.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==