Files
Modern-Password-Generator/node_modules/.vite/deps/vue-i18n.js

6109 lines
184 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
Fragment,
Text,
computed,
createVNode,
defineComponent,
effectScope,
getCurrentInstance,
h,
inject,
isRef,
onBeforeMount,
onMounted,
onUnmounted,
ref,
shallowRef,
watch
} from "./chunk-VT7FWPCL.js";
// node_modules/@intlify/shared/dist/shared.mjs
function warn(msg, err) {
if (typeof console !== "undefined") {
console.warn(`[intlify] ` + msg);
if (err) {
console.warn(err.stack);
}
}
}
var hasWarned = {};
function warnOnce(msg) {
if (!hasWarned[msg]) {
hasWarned[msg] = true;
warn(msg);
}
}
var inBrowser = typeof window !== "undefined";
var mark;
var measure;
if (true) {
const perf2 = inBrowser && window.performance;
if (perf2 && perf2.mark && perf2.measure && perf2.clearMarks && // @ts-ignore browser compat
perf2.clearMeasures) {
mark = (tag) => {
perf2.mark(tag);
};
measure = (name, startTag, endTag) => {
perf2.measure(name, startTag, endTag);
perf2.clearMarks(startTag);
perf2.clearMarks(endTag);
};
}
}
var RE_ARGS = /\{([0-9a-zA-Z]+)\}/g;
function format(message, ...args) {
if (args.length === 1 && isObject(args[0])) {
args = args[0];
}
if (!args || !args.hasOwnProperty) {
args = {};
}
return message.replace(RE_ARGS, (match, identifier) => {
return args.hasOwnProperty(identifier) ? args[identifier] : "";
});
}
var makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);
var generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });
var friendlyJSONstringify = (json) => JSON.stringify(json).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/\u0027/g, "\\u0027");
var isNumber = (val) => typeof val === "number" && isFinite(val);
var isDate = (val) => toTypeString(val) === "[object Date]";
var isRegExp = (val) => toTypeString(val) === "[object RegExp]";
var isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;
var assign = Object.assign;
var _create = Object.create;
var create = (obj = null) => _create(obj);
var _globalThis;
var getGlobalThis = () => {
return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : create());
};
function escapeHtml(rawText) {
return rawText.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/\//g, "&#x2F;").replace(/=/g, "&#x3D;");
}
function escapeAttributeValue(value) {
return value.replace(/&(?![a-zA-Z0-9#]{2,6};)/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
function sanitizeTranslatedHtml(html) {
html = html.replace(/(\w+)\s*=\s*"([^"]*)"/g, (_, attrName, attrValue) => `${attrName}="${escapeAttributeValue(attrValue)}"`);
html = html.replace(/(\w+)\s*=\s*'([^']*)'/g, (_, attrName, attrValue) => `${attrName}='${escapeAttributeValue(attrValue)}'`);
const eventHandlerPattern = /\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi;
if (eventHandlerPattern.test(html)) {
if (true) {
warn("Potentially dangerous event handlers detected in translation. Consider removing onclick, onerror, etc. from your translation messages.");
}
html = html.replace(/(\s+)(on)(\w+\s*=)/gi, "$1&#111;n$3");
}
const javascriptUrlPattern = [
// In href, src, action, formaction attributes
/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,
// In style attributes within url()
/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi
];
javascriptUrlPattern.forEach((pattern) => {
html = html.replace(pattern, "$1javascript&#58;");
});
return html;
}
var hasOwnProperty = Object.prototype.hasOwnProperty;
function hasOwn(obj, key) {
return hasOwnProperty.call(obj, key);
}
var isArray = Array.isArray;
var isFunction = (val) => typeof val === "function";
var isString = (val) => typeof val === "string";
var isBoolean = (val) => typeof val === "boolean";
var isObject = (val) => val !== null && typeof val === "object";
var isPromise = (val) => {
return isObject(val) && isFunction(val.then) && isFunction(val.catch);
};
var objectToString = Object.prototype.toString;
var toTypeString = (value) => objectToString.call(value);
var isPlainObject = (val) => {
if (!isObject(val))
return false;
const proto = Object.getPrototypeOf(val);
return proto === null || proto.constructor === Object;
};
var toDisplayString = (val) => {
return val == null ? "" : isArray(val) || isPlainObject(val) && val.toString === objectToString ? JSON.stringify(val, null, 2) : String(val);
};
function join(items, separator = "") {
return items.reduce((str, item, index) => index === 0 ? str + item : str + separator + item, "");
}
var RANGE = 2;
function generateCodeFrame(source, start = 0, end = source.length) {
const lines = source.split(/\r?\n/);
let count = 0;
const res = [];
for (let i = 0; i < lines.length; i++) {
count += lines[i].length + 1;
if (count >= start) {
for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {
if (j < 0 || j >= lines.length)
continue;
const line = j + 1;
res.push(`${line}${" ".repeat(3 - String(line).length)}| ${lines[j]}`);
const lineLength = lines[j].length;
if (j === i) {
const pad = start - (count - lineLength) + 1;
const length = Math.max(1, end > count ? lineLength - pad : end - start);
res.push(` | ` + " ".repeat(pad) + "^".repeat(length));
} else if (j > i) {
if (end > count) {
const length = Math.max(Math.min(end - count, lineLength), 1);
res.push(` | ` + "^".repeat(length));
}
count += lineLength + 1;
}
}
break;
}
}
return res.join("\n");
}
function incrementer(code3) {
let current = code3;
return () => ++current;
}
function createEmitter() {
const events = /* @__PURE__ */ 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;
}
var isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);
function deepCopy(src, des) {
if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {
throw new Error("Invalid value");
}
const stack = [{ src, des }];
while (stack.length) {
const { src: src2, des: des2 } = stack.pop();
Object.keys(src2).forEach((key) => {
if (key === "__proto__") {
return;
}
if (isObject(src2[key]) && !isObject(des2[key])) {
des2[key] = Array.isArray(src2[key]) ? [] : create();
}
if (isNotObjectOrIsArray(des2[key]) || isNotObjectOrIsArray(src2[key])) {
des2[key] = src2[key];
} else {
stack.push({ src: src2[key], des: des2[key] });
}
});
}
}
// node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js
function createPosition(line, column, offset) {
return { line, column, offset };
}
function createLocation(start, end, source) {
const loc = { start, end };
if (source != null) {
loc.source = source;
}
return loc;
}
var RE_ARGS2 = /\{([0-9a-zA-Z]+)\}/g;
function format2(message, ...args) {
if (args.length === 1 && isObject2(args[0])) {
args = args[0];
}
if (!args || !args.hasOwnProperty) {
args = {};
}
return message.replace(RE_ARGS2, (match, identifier) => {
return args.hasOwnProperty(identifier) ? args[identifier] : "";
});
}
var assign2 = Object.assign;
var isString2 = (val) => typeof val === "string";
var isObject2 = (val) => val !== null && typeof val === "object";
function join2(items, separator = "") {
return items.reduce((str, item, index) => index === 0 ? str + item : str + separator + item, "");
}
var CompileWarnCodes = {
USE_MODULO_SYNTAX: 1,
__EXTEND_POINT__: 2
};
var warnMessages = {
[CompileWarnCodes.USE_MODULO_SYNTAX]: `Use modulo before '{{0}}'.`
};
function createCompileWarn(code3, loc, ...args) {
const msg = format2(warnMessages[code3] || "", ...args || []);
const message = { message: String(msg), code: code3 };
if (loc) {
message.location = loc;
}
return message;
}
var CompileErrorCodes = {
// tokenizer error codes
EXPECTED_TOKEN: 1,
INVALID_TOKEN_IN_PLACEHOLDER: 2,
UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,
UNKNOWN_ESCAPE_SEQUENCE: 4,
INVALID_UNICODE_ESCAPE_SEQUENCE: 5,
UNBALANCED_CLOSING_BRACE: 6,
UNTERMINATED_CLOSING_BRACE: 7,
EMPTY_PLACEHOLDER: 8,
NOT_ALLOW_NEST_PLACEHOLDER: 9,
INVALID_LINKED_FORMAT: 10,
// parser error codes
MUST_HAVE_MESSAGES_IN_PLURAL: 11,
UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
UNEXPECTED_EMPTY_LINKED_KEY: 13,
UNEXPECTED_LEXICAL_ANALYSIS: 14,
// generator error codes
UNHANDLED_CODEGEN_NODE_TYPE: 15,
// minifier error codes
UNHANDLED_MINIFIER_NODE_TYPE: 16,
// Special value for higher-order compilers to pick up the last code
// to avoid collision of error codes. This should always be kept as the last
// item.
__EXTEND_POINT__: 17
};
var errorMessages = {
// tokenizer error messages
[CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,
[CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,
[CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,
[CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\{0}`,
[CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,
[CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,
[CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,
[CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,
[CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,
[CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,
// parser error messages
[CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
[CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
// generator error messages
[CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
// minimizer error messages
[CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`
};
function createCompileError(code3, loc, options = {}) {
const { domain, messages, args } = options;
const msg = format2((messages || errorMessages)[code3] || "", ...args || []);
const error = new SyntaxError(String(msg));
error.code = code3;
if (loc) {
error.location = loc;
}
error.domain = domain;
return error;
}
function defaultOnError(error) {
throw error;
}
var RE_HTML_TAG = /<\/?[\w\s="/.':;#-\/]+>/;
var detectHtmlTag = (source) => RE_HTML_TAG.test(source);
var CHAR_SP = " ";
var CHAR_CR = "\r";
var CHAR_LF = "\n";
var CHAR_LS = String.fromCharCode(8232);
var CHAR_PS = String.fromCharCode(8233);
function createScanner(str) {
const _buf = str;
let _index = 0;
let _line = 1;
let _column = 1;
let _peekOffset = 0;
const isCRLF = (index2) => _buf[index2] === CHAR_CR && _buf[index2 + 1] === CHAR_LF;
const isLF = (index2) => _buf[index2] === CHAR_LF;
const isPS = (index2) => _buf[index2] === CHAR_PS;
const isLS = (index2) => _buf[index2] === CHAR_LS;
const isLineEnd = (index2) => isCRLF(index2) || isLF(index2) || isPS(index2) || isLS(index2);
const index = () => _index;
const line = () => _line;
const column = () => _column;
const peekOffset = () => _peekOffset;
const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];
const currentChar = () => charAt(_index);
const currentPeek = () => charAt(_index + _peekOffset);
function next() {
_peekOffset = 0;
if (isLineEnd(_index)) {
_line++;
_column = 0;
}
if (isCRLF(_index)) {
_index++;
}
_index++;
_column++;
return _buf[_index];
}
function peek() {
if (isCRLF(_index + _peekOffset)) {
_peekOffset++;
}
_peekOffset++;
return _buf[_index + _peekOffset];
}
function reset() {
_index = 0;
_line = 1;
_column = 1;
_peekOffset = 0;
}
function resetPeek(offset = 0) {
_peekOffset = offset;
}
function skipToPeek() {
const target = _index + _peekOffset;
while (target !== _index) {
next();
}
_peekOffset = 0;
}
return {
index,
line,
column,
peekOffset,
charAt,
currentChar,
currentPeek,
next,
peek,
reset,
resetPeek,
skipToPeek
};
}
var EOF = void 0;
var DOT = ".";
var LITERAL_DELIMITER = "'";
var ERROR_DOMAIN$3 = "tokenizer";
function createTokenizer(source, options = {}) {
const location = options.location !== false;
const _scnr = createScanner(source);
const currentOffset = () => _scnr.index();
const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());
const _initLoc = currentPosition();
const _initOffset = currentOffset();
const _context = {
currentType: 14,
offset: _initOffset,
startLoc: _initLoc,
endLoc: _initLoc,
lastType: 14,
lastOffset: _initOffset,
lastStartLoc: _initLoc,
lastEndLoc: _initLoc,
braceNest: 0,
inLinked: false,
text: ""
};
const context = () => _context;
const { onError } = options;
function emitError(code3, pos, offset, ...args) {
const ctx = context();
pos.column += offset;
pos.offset += offset;
if (onError) {
const loc = location ? createLocation(ctx.startLoc, pos) : null;
const err = createCompileError(code3, loc, {
domain: ERROR_DOMAIN$3,
args
});
onError(err);
}
}
function getToken(context2, type, value) {
context2.endLoc = currentPosition();
context2.currentType = type;
const token = { type };
if (location) {
token.loc = createLocation(context2.startLoc, context2.endLoc);
}
if (value != null) {
token.value = value;
}
return token;
}
const getEndToken = (context2) => getToken(
context2,
14
/* TokenTypes.EOF */
);
function eat(scnr, ch) {
if (scnr.currentChar() === ch) {
scnr.next();
return ch;
} else {
emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
return "";
}
}
function peekSpaces(scnr) {
let buf = "";
while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {
buf += scnr.currentPeek();
scnr.peek();
}
return buf;
}
function skipSpaces(scnr) {
const buf = peekSpaces(scnr);
scnr.skipToPeek();
return buf;
}
function isIdentifierStart(ch) {
if (ch === EOF) {
return false;
}
const cc = ch.charCodeAt(0);
return cc >= 97 && cc <= 122 || // a-z
cc >= 65 && cc <= 90 || // A-Z
cc === 95;
}
function isNumberStart(ch) {
if (ch === EOF) {
return false;
}
const cc = ch.charCodeAt(0);
return cc >= 48 && cc <= 57;
}
function isNamedIdentifierStart(scnr, context2) {
const { currentType } = context2;
if (currentType !== 2) {
return false;
}
peekSpaces(scnr);
const ret = isIdentifierStart(scnr.currentPeek());
scnr.resetPeek();
return ret;
}
function isListIdentifierStart(scnr, context2) {
const { currentType } = context2;
if (currentType !== 2) {
return false;
}
peekSpaces(scnr);
const ch = scnr.currentPeek() === "-" ? scnr.peek() : scnr.currentPeek();
const ret = isNumberStart(ch);
scnr.resetPeek();
return ret;
}
function isLiteralStart(scnr, context2) {
const { currentType } = context2;
if (currentType !== 2) {
return false;
}
peekSpaces(scnr);
const ret = scnr.currentPeek() === LITERAL_DELIMITER;
scnr.resetPeek();
return ret;
}
function isLinkedDotStart(scnr, context2) {
const { currentType } = context2;
if (currentType !== 8) {
return false;
}
peekSpaces(scnr);
const ret = scnr.currentPeek() === ".";
scnr.resetPeek();
return ret;
}
function isLinkedModifierStart(scnr, context2) {
const { currentType } = context2;
if (currentType !== 9) {
return false;
}
peekSpaces(scnr);
const ret = isIdentifierStart(scnr.currentPeek());
scnr.resetPeek();
return ret;
}
function isLinkedDelimiterStart(scnr, context2) {
const { currentType } = context2;
if (!(currentType === 8 || currentType === 12)) {
return false;
}
peekSpaces(scnr);
const ret = scnr.currentPeek() === ":";
scnr.resetPeek();
return ret;
}
function isLinkedReferStart(scnr, context2) {
const { currentType } = context2;
if (currentType !== 10) {
return false;
}
const fn = () => {
const ch = scnr.currentPeek();
if (ch === "{") {
return isIdentifierStart(scnr.peek());
} else if (ch === "@" || ch === "%" || ch === "|" || ch === ":" || ch === "." || ch === CHAR_SP || !ch) {
return false;
} else if (ch === CHAR_LF) {
scnr.peek();
return fn();
} else {
return isTextStart(scnr, false);
}
};
const ret = fn();
scnr.resetPeek();
return ret;
}
function isPluralStart(scnr) {
peekSpaces(scnr);
const ret = scnr.currentPeek() === "|";
scnr.resetPeek();
return ret;
}
function detectModuloStart(scnr) {
const spaces = peekSpaces(scnr);
const ret = scnr.currentPeek() === "%" && scnr.peek() === "{";
scnr.resetPeek();
return {
isModulo: ret,
hasSpace: spaces.length > 0
};
}
function isTextStart(scnr, reset = true) {
const fn = (hasSpace = false, prev = "", detectModulo = false) => {
const ch = scnr.currentPeek();
if (ch === "{") {
return prev === "%" ? false : hasSpace;
} else if (ch === "@" || !ch) {
return prev === "%" ? true : hasSpace;
} else if (ch === "%") {
scnr.peek();
return fn(hasSpace, "%", true);
} else if (ch === "|") {
return prev === "%" || detectModulo ? true : !(prev === CHAR_SP || prev === CHAR_LF);
} else if (ch === CHAR_SP) {
scnr.peek();
return fn(true, CHAR_SP, detectModulo);
} else if (ch === CHAR_LF) {
scnr.peek();
return fn(true, CHAR_LF, detectModulo);
} else {
return true;
}
};
const ret = fn();
reset && scnr.resetPeek();
return ret;
}
function takeChar(scnr, fn) {
const ch = scnr.currentChar();
if (ch === EOF) {
return EOF;
}
if (fn(ch)) {
scnr.next();
return ch;
}
return null;
}
function isIdentifier(ch) {
const cc = ch.charCodeAt(0);
return cc >= 97 && cc <= 122 || // a-z
cc >= 65 && cc <= 90 || // A-Z
cc >= 48 && cc <= 57 || // 0-9
cc === 95 || // _
cc === 36;
}
function takeIdentifierChar(scnr) {
return takeChar(scnr, isIdentifier);
}
function isNamedIdentifier(ch) {
const cc = ch.charCodeAt(0);
return cc >= 97 && cc <= 122 || // a-z
cc >= 65 && cc <= 90 || // A-Z
cc >= 48 && cc <= 57 || // 0-9
cc === 95 || // _
cc === 36 || // $
cc === 45;
}
function takeNamedIdentifierChar(scnr) {
return takeChar(scnr, isNamedIdentifier);
}
function isDigit(ch) {
const cc = ch.charCodeAt(0);
return cc >= 48 && cc <= 57;
}
function takeDigit(scnr) {
return takeChar(scnr, isDigit);
}
function isHexDigit(ch) {
const cc = ch.charCodeAt(0);
return cc >= 48 && cc <= 57 || // 0-9
cc >= 65 && cc <= 70 || // A-F
cc >= 97 && cc <= 102;
}
function takeHexDigit(scnr) {
return takeChar(scnr, isHexDigit);
}
function getDigits(scnr) {
let ch = "";
let num = "";
while (ch = takeDigit(scnr)) {
num += ch;
}
return num;
}
function readModulo(scnr) {
skipSpaces(scnr);
const ch = scnr.currentChar();
if (ch !== "%") {
emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
}
scnr.next();
return "%";
}
function readText(scnr) {
let buf = "";
while (true) {
const ch = scnr.currentChar();
if (ch === "{" || ch === "}" || ch === "@" || ch === "|" || !ch) {
break;
} else if (ch === "%") {
if (isTextStart(scnr)) {
buf += ch;
scnr.next();
} else {
break;
}
} else if (ch === CHAR_SP || ch === CHAR_LF) {
if (isTextStart(scnr)) {
buf += ch;
scnr.next();
} else if (isPluralStart(scnr)) {
break;
} else {
buf += ch;
scnr.next();
}
} else {
buf += ch;
scnr.next();
}
}
return buf;
}
function readNamedIdentifier(scnr) {
skipSpaces(scnr);
let ch = "";
let name = "";
while (ch = takeNamedIdentifierChar(scnr)) {
name += ch;
}
if (scnr.currentChar() === EOF) {
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
}
return name;
}
function readListIdentifier(scnr) {
skipSpaces(scnr);
let value = "";
if (scnr.currentChar() === "-") {
scnr.next();
value += `-${getDigits(scnr)}`;
} else {
value += getDigits(scnr);
}
if (scnr.currentChar() === EOF) {
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
}
return value;
}
function isLiteral2(ch) {
return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;
}
function readLiteral(scnr) {
skipSpaces(scnr);
eat(scnr, `'`);
let ch = "";
let literal = "";
while (ch = takeChar(scnr, isLiteral2)) {
if (ch === "\\") {
literal += readEscapeSequence(scnr);
} else {
literal += ch;
}
}
const current = scnr.currentChar();
if (current === CHAR_LF || current === EOF) {
emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);
if (current === CHAR_LF) {
scnr.next();
eat(scnr, `'`);
}
return literal;
}
eat(scnr, `'`);
return literal;
}
function readEscapeSequence(scnr) {
const ch = scnr.currentChar();
switch (ch) {
case "\\":
case `'`:
scnr.next();
return `\\${ch}`;
case "u":
return readUnicodeEscapeSequence(scnr, ch, 4);
case "U":
return readUnicodeEscapeSequence(scnr, ch, 6);
default:
emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);
return "";
}
}
function readUnicodeEscapeSequence(scnr, unicode, digits) {
eat(scnr, unicode);
let sequence = "";
for (let i = 0; i < digits; i++) {
const ch = takeHexDigit(scnr);
if (!ch) {
emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\${unicode}${sequence}${scnr.currentChar()}`);
break;
}
sequence += ch;
}
return `\\${unicode}${sequence}`;
}
function isInvalidIdentifier(ch) {
return ch !== "{" && ch !== "}" && ch !== CHAR_SP && ch !== CHAR_LF;
}
function readInvalidIdentifier(scnr) {
skipSpaces(scnr);
let ch = "";
let identifiers = "";
while (ch = takeChar(scnr, isInvalidIdentifier)) {
identifiers += ch;
}
return identifiers;
}
function readLinkedModifier(scnr) {
let ch = "";
let name = "";
while (ch = takeIdentifierChar(scnr)) {
name += ch;
}
return name;
}
function readLinkedRefer(scnr) {
const fn = (buf) => {
const ch = scnr.currentChar();
if (ch === "{" || ch === "%" || ch === "@" || ch === "|" || ch === "(" || ch === ")" || !ch) {
return buf;
} else if (ch === CHAR_SP) {
return buf;
} else if (ch === CHAR_LF || ch === DOT) {
buf += ch;
scnr.next();
return fn(buf);
} else {
buf += ch;
scnr.next();
return fn(buf);
}
};
return fn("");
}
function readPlural(scnr) {
skipSpaces(scnr);
const plural = eat(
scnr,
"|"
/* TokenChars.Pipe */
);
skipSpaces(scnr);
return plural;
}
function readTokenInPlaceholder(scnr, context2) {
let token = null;
const ch = scnr.currentChar();
switch (ch) {
case "{":
if (context2.braceNest >= 1) {
emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);
}
scnr.next();
token = getToken(
context2,
2,
"{"
/* TokenChars.BraceLeft */
);
skipSpaces(scnr);
context2.braceNest++;
return token;
case "}":
if (context2.braceNest > 0 && context2.currentType === 2) {
emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);
}
scnr.next();
token = getToken(
context2,
3,
"}"
/* TokenChars.BraceRight */
);
context2.braceNest--;
context2.braceNest > 0 && skipSpaces(scnr);
if (context2.inLinked && context2.braceNest === 0) {
context2.inLinked = false;
}
return token;
case "@":
if (context2.braceNest > 0) {
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
}
token = readTokenInLinked(scnr, context2) || getEndToken(context2);
context2.braceNest = 0;
return token;
default: {
let validNamedIdentifier = true;
let validListIdentifier = true;
let validLiteral = true;
if (isPluralStart(scnr)) {
if (context2.braceNest > 0) {
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
}
token = getToken(context2, 1, readPlural(scnr));
context2.braceNest = 0;
context2.inLinked = false;
return token;
}
if (context2.braceNest > 0 && (context2.currentType === 5 || context2.currentType === 6 || context2.currentType === 7)) {
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
context2.braceNest = 0;
return readToken(scnr, context2);
}
if (validNamedIdentifier = isNamedIdentifierStart(scnr, context2)) {
token = getToken(context2, 5, readNamedIdentifier(scnr));
skipSpaces(scnr);
return token;
}
if (validListIdentifier = isListIdentifierStart(scnr, context2)) {
token = getToken(context2, 6, readListIdentifier(scnr));
skipSpaces(scnr);
return token;
}
if (validLiteral = isLiteralStart(scnr, context2)) {
token = getToken(context2, 7, readLiteral(scnr));
skipSpaces(scnr);
return token;
}
if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
token = getToken(context2, 13, readInvalidIdentifier(scnr));
emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);
skipSpaces(scnr);
return token;
}
break;
}
}
return token;
}
function readTokenInLinked(scnr, context2) {
const { currentType } = context2;
let token = null;
const ch = scnr.currentChar();
if ((currentType === 8 || currentType === 9 || currentType === 12 || currentType === 10) && (ch === CHAR_LF || ch === CHAR_SP)) {
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
}
switch (ch) {
case "@":
scnr.next();
token = getToken(
context2,
8,
"@"
/* TokenChars.LinkedAlias */
);
context2.inLinked = true;
return token;
case ".":
skipSpaces(scnr);
scnr.next();
return getToken(
context2,
9,
"."
/* TokenChars.LinkedDot */
);
case ":":
skipSpaces(scnr);
scnr.next();
return getToken(
context2,
10,
":"
/* TokenChars.LinkedDelimiter */
);
default:
if (isPluralStart(scnr)) {
token = getToken(context2, 1, readPlural(scnr));
context2.braceNest = 0;
context2.inLinked = false;
return token;
}
if (isLinkedDotStart(scnr, context2) || isLinkedDelimiterStart(scnr, context2)) {
skipSpaces(scnr);
return readTokenInLinked(scnr, context2);
}
if (isLinkedModifierStart(scnr, context2)) {
skipSpaces(scnr);
return getToken(context2, 12, readLinkedModifier(scnr));
}
if (isLinkedReferStart(scnr, context2)) {
skipSpaces(scnr);
if (ch === "{") {
return readTokenInPlaceholder(scnr, context2) || token;
} else {
return getToken(context2, 11, readLinkedRefer(scnr));
}
}
if (currentType === 8) {
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
}
context2.braceNest = 0;
context2.inLinked = false;
return readToken(scnr, context2);
}
}
function readToken(scnr, context2) {
let token = {
type: 14
/* TokenTypes.EOF */
};
if (context2.braceNest > 0) {
return readTokenInPlaceholder(scnr, context2) || getEndToken(context2);
}
if (context2.inLinked) {
return readTokenInLinked(scnr, context2) || getEndToken(context2);
}
const ch = scnr.currentChar();
switch (ch) {
case "{":
return readTokenInPlaceholder(scnr, context2) || getEndToken(context2);
case "}":
emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);
scnr.next();
return getToken(
context2,
3,
"}"
/* TokenChars.BraceRight */
);
case "@":
return readTokenInLinked(scnr, context2) || getEndToken(context2);
default: {
if (isPluralStart(scnr)) {
token = getToken(context2, 1, readPlural(scnr));
context2.braceNest = 0;
context2.inLinked = false;
return token;
}
const { isModulo, hasSpace } = detectModuloStart(scnr);
if (isModulo) {
return hasSpace ? getToken(context2, 0, readText(scnr)) : getToken(context2, 4, readModulo(scnr));
}
if (isTextStart(scnr)) {
return getToken(context2, 0, readText(scnr));
}
break;
}
}
return token;
}
function nextToken() {
const { currentType, offset, startLoc, endLoc } = _context;
_context.lastType = currentType;
_context.lastOffset = offset;
_context.lastStartLoc = startLoc;
_context.lastEndLoc = endLoc;
_context.offset = currentOffset();
_context.startLoc = currentPosition();
if (_scnr.currentChar() === EOF) {
return getToken(
_context,
14
/* TokenTypes.EOF */
);
}
return readToken(_scnr, _context);
}
return {
nextToken,
currentOffset,
currentPosition,
context
};
}
var ERROR_DOMAIN$2 = "parser";
var KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
function fromEscapeSequence(match, codePoint4, codePoint6) {
switch (match) {
case `\\\\`:
return `\\`;
case `\\'`:
return `'`;
default: {
const codePoint = parseInt(codePoint4 || codePoint6, 16);
if (codePoint <= 55295 || codePoint >= 57344) {
return String.fromCodePoint(codePoint);
}
return "<22>";
}
}
}
function createParser(options = {}) {
const location = options.location !== false;
const { onError, onWarn } = options;
function emitError(tokenzer, code3, start, offset, ...args) {
const end = tokenzer.currentPosition();
end.offset += offset;
end.column += offset;
if (onError) {
const loc = location ? createLocation(start, end) : null;
const err = createCompileError(code3, loc, {
domain: ERROR_DOMAIN$2,
args
});
onError(err);
}
}
function emitWarn(tokenzer, code3, start, offset, ...args) {
const end = tokenzer.currentPosition();
end.offset += offset;
end.column += offset;
if (onWarn) {
const loc = location ? createLocation(start, end) : null;
onWarn(createCompileWarn(code3, loc, args));
}
}
function startNode(type, offset, loc) {
const node = { type };
if (location) {
node.start = offset;
node.end = offset;
node.loc = { start: loc, end: loc };
}
return node;
}
function endNode(node, offset, pos, type) {
if (type) {
node.type = type;
}
if (location) {
node.end = offset;
if (node.loc) {
node.loc.end = pos;
}
}
}
function parseText(tokenizer, value) {
const context = tokenizer.context();
const node = startNode(3, 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);
node.index = parseInt(index, 10);
tokenizer.nextToken();
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseNamed(tokenizer, key, modulo) {
const context = tokenizer.context();
const { lastOffset: offset, lastStartLoc: loc } = context;
const node = startNode(4, offset, loc);
node.key = key;
if (modulo === true) {
node.modulo = true;
}
tokenizer.nextToken();
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);
node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);
tokenizer.nextToken();
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseLinkedModifier(tokenizer) {
const token = tokenizer.nextToken();
const context = tokenizer.context();
const { lastOffset: offset, lastStartLoc: loc } = context;
const node = startNode(8, offset, loc);
if (token.type !== 12) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);
node.value = "";
endNode(node, offset, loc);
return {
nextConsumeToken: token,
node
};
}
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
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);
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);
let token = tokenizer.nextToken();
if (token.type === 9) {
const parsed = parseLinkedModifier(tokenizer);
linkedNode.modifier = parsed.node;
token = parsed.nextConsumeToken || tokenizer.nextToken();
}
if (token.type !== 10) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
token = tokenizer.nextToken();
if (token.type === 2) {
token = tokenizer.nextToken();
}
switch (token.type) {
case 11:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
linkedNode.key = parseLinkedKey(tokenizer, token.value || "");
break;
case 5:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
linkedNode.key = parseNamed(tokenizer, token.value || "");
break;
case 6:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
linkedNode.key = parseList(tokenizer, token.value || "");
break;
case 7:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
linkedNode.key = parseLiteral(tokenizer, token.value || "");
break;
default: {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);
const nextContext = tokenizer.context();
const emptyLinkedKeyNode = startNode(7, nextContext.offset, nextContext.startLoc);
emptyLinkedKeyNode.value = "";
endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);
linkedNode.key = emptyLinkedKeyNode;
endNode(linkedNode, nextContext.offset, nextContext.startLoc);
return {
nextConsumeToken: token,
node: linkedNode
};
}
}
endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());
return {
node: linkedNode
};
}
function parseMessage(tokenizer) {
const context = tokenizer.context();
const startOffset = context.currentType === 1 ? tokenizer.currentOffset() : context.offset;
const startLoc = context.currentType === 1 ? context.endLoc : context.startLoc;
const node = startNode(2, startOffset, startLoc);
node.items = [];
let nextToken = null;
let modulo = null;
do {
const token = nextToken || tokenizer.nextToken();
nextToken = null;
switch (token.type) {
case 0:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
node.items.push(parseText(tokenizer, token.value || ""));
break;
case 6:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
node.items.push(parseList(tokenizer, token.value || ""));
break;
case 4:
modulo = true;
break;
case 5:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
node.items.push(parseNamed(tokenizer, token.value || "", !!modulo));
if (modulo) {
emitWarn(tokenizer, CompileWarnCodes.USE_MODULO_SYNTAX, context.lastStartLoc, 0, getTokenCaption(token));
modulo = null;
}
break;
case 7:
if (token.value == null) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
}
node.items.push(parseLiteral(tokenizer, token.value || ""));
break;
case 8: {
const parsed = parseLinked(tokenizer);
node.items.push(parsed.node);
nextToken = parsed.nextConsumeToken || null;
break;
}
}
} while (context.currentType !== 14 && context.currentType !== 1);
const endOffset = context.currentType === 1 ? context.lastOffset : tokenizer.currentOffset();
const endLoc = context.currentType === 1 ? context.lastEndLoc : tokenizer.currentPosition();
endNode(node, endOffset, endLoc);
return node;
}
function parsePlural(tokenizer, offset, loc, msgNode) {
const context = tokenizer.context();
let hasEmptyMessage = msgNode.items.length === 0;
const node = startNode(1, offset, loc);
node.cases = [];
node.cases.push(msgNode);
do {
const msg = parseMessage(tokenizer);
if (!hasEmptyMessage) {
hasEmptyMessage = msg.items.length === 0;
}
node.cases.push(msg);
} while (context.currentType !== 14);
if (hasEmptyMessage) {
emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);
}
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
function parseResource(tokenizer) {
const context = tokenizer.context();
const { offset, startLoc } = context;
const msgNode = parseMessage(tokenizer);
if (context.currentType === 14) {
return msgNode;
} else {
return parsePlural(tokenizer, offset, startLoc, msgNode);
}
}
function parse2(source) {
const tokenizer = createTokenizer(source, assign2({}, options));
const context = tokenizer.context();
const node = startNode(0, context.offset, context.startLoc);
if (location && node.loc) {
node.loc.source = source;
}
node.body = parseResource(tokenizer);
if (options.onCacheKey) {
node.cacheKey = options.onCacheKey(source);
}
if (context.currentType !== 14) {
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || "");
}
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
return node;
}
return { parse: parse2 };
}
function getTokenCaption(token) {
if (token.type === 14) {
return "EOF";
}
const name = (token.value || "").replace(/\r?\n/gu, "\\n");
return name.length > 10 ? name.slice(0, 9) + "…" : name;
}
function createTransformer(ast, options = {}) {
const _context = {
ast,
helpers: /* @__PURE__ */ new Set()
};
const context = () => _context;
const helper = (name) => {
_context.helpers.add(name);
return name;
};
return { context, helper };
}
function traverseNodes(nodes, transformer) {
for (let i = 0; i < nodes.length; i++) {
traverseNode(nodes[i], transformer);
}
}
function traverseNode(node, transformer) {
switch (node.type) {
case 1:
traverseNodes(node.cases, transformer);
transformer.helper(
"plural"
/* HelperNameMap.PLURAL */
);
break;
case 2:
traverseNodes(node.items, transformer);
break;
case 6: {
const linked = node;
traverseNode(linked.key, transformer);
transformer.helper(
"linked"
/* HelperNameMap.LINKED */
);
transformer.helper(
"type"
/* HelperNameMap.TYPE */
);
break;
}
case 5:
transformer.helper(
"interpolate"
/* HelperNameMap.INTERPOLATE */
);
transformer.helper(
"list"
/* HelperNameMap.LIST */
);
break;
case 4:
transformer.helper(
"interpolate"
/* HelperNameMap.INTERPOLATE */
);
transformer.helper(
"named"
/* HelperNameMap.NAMED */
);
break;
}
}
function transform(ast, options = {}) {
const transformer = createTransformer(ast);
transformer.helper(
"normalize"
/* HelperNameMap.NORMALIZE */
);
ast.body && traverseNode(ast.body, transformer);
const context = transformer.context();
ast.helpers = Array.from(context.helpers);
}
function optimize(ast) {
const body = ast.body;
if (body.type === 2) {
optimizeMessageNode(body);
} else {
body.cases.forEach((c) => optimizeMessageNode(c));
}
return ast;
}
function optimizeMessageNode(message) {
if (message.items.length === 1) {
const item = message.items[0];
if (item.type === 3 || item.type === 9) {
message.static = item.value;
delete item.value;
}
} else {
const values = [];
for (let i = 0; i < message.items.length; i++) {
const item = message.items[i];
if (!(item.type === 3 || item.type === 9)) {
break;
}
if (item.value == null) {
break;
}
values.push(item.value);
}
if (values.length === message.items.length) {
message.static = join2(values);
for (let i = 0; i < message.items.length; i++) {
const item = message.items[i];
if (item.type === 3 || item.type === 9) {
delete item.value;
}
}
}
}
}
var ERROR_DOMAIN$1 = "minifier";
function minify(node) {
node.t = node.type;
switch (node.type) {
case 0: {
const resource = node;
minify(resource.body);
resource.b = resource.body;
delete resource.body;
break;
}
case 1: {
const plural = node;
const cases = plural.cases;
for (let i = 0; i < cases.length; i++) {
minify(cases[i]);
}
plural.c = cases;
delete plural.cases;
break;
}
case 2: {
const message = node;
const items = message.items;
for (let i = 0; i < items.length; i++) {
minify(items[i]);
}
message.i = items;
delete message.items;
if (message.static) {
message.s = message.static;
delete message.static;
}
break;
}
case 3:
case 9:
case 8:
case 7: {
const valueNode = node;
if (valueNode.value) {
valueNode.v = valueNode.value;
delete valueNode.value;
}
break;
}
case 6: {
const linked = node;
minify(linked.key);
linked.k = linked.key;
delete linked.key;
if (linked.modifier) {
minify(linked.modifier);
linked.m = linked.modifier;
delete linked.modifier;
}
break;
}
case 5: {
const list = node;
list.i = list.index;
delete list.index;
break;
}
case 4: {
const named = node;
named.k = named.key;
delete named.key;
break;
}
default: {
throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
domain: ERROR_DOMAIN$1,
args: [node.type]
});
}
}
delete node.type;
}
var ERROR_DOMAIN = "parser";
function createCodeGenerator(ast, options) {
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
const location = options.location !== false;
const _context = {
filename,
code: "",
column: 1,
line: 1,
offset: 0,
map: void 0,
breakLineCode,
needIndent: _needIndent,
indentLevel: 0
};
if (location && ast.loc) {
_context.source = ast.loc.source;
}
const context = () => _context;
function push(code3, node) {
_context.code += code3;
}
function _newline(n, withBreakLine = true) {
const _breakLineCode = withBreakLine ? breakLineCode : "";
push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);
}
function indent(withNewLine = true) {
const level = ++_context.indentLevel;
withNewLine && _newline(level);
}
function deindent(withNewLine = true) {
const level = --_context.indentLevel;
withNewLine && _newline(level);
}
function newline() {
_newline(_context.indentLevel);
}
const helper = (key) => `_${key}`;
const needIndent = () => _context.needIndent;
return {
context,
push,
indent,
deindent,
newline,
helper,
needIndent
};
}
function generateLinkedNode(generator, node) {
const { helper } = generator;
generator.push(`${helper(
"linked"
/* HelperNameMap.LINKED */
)}(`);
generateNode(generator, node.key);
if (node.modifier) {
generator.push(`, `);
generateNode(generator, node.modifier);
generator.push(`, _type`);
} else {
generator.push(`, undefined, _type`);
}
generator.push(`)`);
}
function generateMessageNode(generator, node) {
const { helper, needIndent } = generator;
generator.push(`${helper(
"normalize"
/* HelperNameMap.NORMALIZE */
)}([`);
generator.indent(needIndent());
const length = node.items.length;
for (let i = 0; i < length; i++) {
generateNode(generator, node.items[i]);
if (i === length - 1) {
break;
}
generator.push(", ");
}
generator.deindent(needIndent());
generator.push("])");
}
function generatePluralNode(generator, node) {
const { helper, needIndent } = generator;
if (node.cases.length > 1) {
generator.push(`${helper(
"plural"
/* HelperNameMap.PLURAL */
)}([`);
generator.indent(needIndent());
const length = node.cases.length;
for (let i = 0; i < length; i++) {
generateNode(generator, node.cases[i]);
if (i === length - 1) {
break;
}
generator.push(", ");
}
generator.deindent(needIndent());
generator.push(`])`);
}
}
function generateResource(generator, node) {
if (node.body) {
generateNode(generator, node.body);
} else {
generator.push("null");
}
}
function generateNode(generator, node) {
const { helper } = generator;
switch (node.type) {
case 0:
generateResource(generator, node);
break;
case 1:
generatePluralNode(generator, node);
break;
case 2:
generateMessageNode(generator, node);
break;
case 6:
generateLinkedNode(generator, node);
break;
case 8:
generator.push(JSON.stringify(node.value), node);
break;
case 7:
generator.push(JSON.stringify(node.value), node);
break;
case 5:
generator.push(`${helper(
"interpolate"
/* HelperNameMap.INTERPOLATE */
)}(${helper(
"list"
/* HelperNameMap.LIST */
)}(${node.index}))`, node);
break;
case 4:
generator.push(`${helper(
"interpolate"
/* HelperNameMap.INTERPOLATE */
)}(${helper(
"named"
/* HelperNameMap.NAMED */
)}(${JSON.stringify(node.key)}))`, node);
break;
case 9:
generator.push(JSON.stringify(node.value), node);
break;
case 3:
generator.push(JSON.stringify(node.value), node);
break;
default: {
throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {
domain: ERROR_DOMAIN,
args: [node.type]
});
}
}
}
var generate = (ast, options = {}) => {
const mode = isString2(options.mode) ? options.mode : "normal";
const filename = isString2(options.filename) ? options.filename : "message.intl";
const sourceMap = !!options.sourceMap;
const breakLineCode = options.breakLineCode != null ? options.breakLineCode : mode === "arrow" ? ";" : "\n";
const needIndent = options.needIndent ? options.needIndent : mode !== "arrow";
const helpers = ast.helpers || [];
const generator = createCodeGenerator(ast, {
mode,
filename,
sourceMap,
breakLineCode,
needIndent
});
generator.push(mode === "normal" ? `function __msg__ (ctx) {` : `(ctx) => {`);
generator.indent(needIndent);
if (helpers.length > 0) {
generator.push(`const { ${join2(helpers.map((s) => `${s}: _${s}`), ", ")} } = ctx`);
generator.newline();
}
generator.push(`return `);
generateNode(generator, ast);
generator.deindent(needIndent);
generator.push(`}`);
delete ast.helpers;
const { code: code3, map } = generator.context();
return {
ast,
code: code3,
map: map ? map.toJSON() : void 0
// eslint-disable-line @typescript-eslint/no-explicit-any
};
};
function baseCompile(source, options = {}) {
const assignedOptions = assign2({}, options);
const jit = !!assignedOptions.jit;
const enalbeMinify = !!assignedOptions.minify;
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
const parser = createParser(assignedOptions);
const ast = parser.parse(source);
if (!jit) {
transform(ast, assignedOptions);
return generate(ast, assignedOptions);
} else {
enambeOptimize && optimize(ast);
enalbeMinify && minify(ast);
return { ast, code: "" };
}
}
// node_modules/@intlify/core-base/dist/core-base.mjs
function initFeatureFlags() {
if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;
}
if (typeof __INTLIFY_JIT_COMPILATION__ !== "boolean") {
getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;
}
if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== "boolean") {
getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;
}
}
function isMessageAST(val) {
return isObject(val) && resolveType(val) === 0 && (hasOwn(val, "b") || hasOwn(val, "body"));
}
var PROPS_BODY = ["b", "body"];
function resolveBody(node) {
return resolveProps(node, PROPS_BODY);
}
var PROPS_CASES = ["c", "cases"];
function resolveCases(node) {
return resolveProps(node, PROPS_CASES, []);
}
var PROPS_STATIC = ["s", "static"];
function resolveStatic(node) {
return resolveProps(node, PROPS_STATIC);
}
var PROPS_ITEMS = ["i", "items"];
function resolveItems(node) {
return resolveProps(node, PROPS_ITEMS, []);
}
var PROPS_TYPE = ["t", "type"];
function resolveType(node) {
return resolveProps(node, PROPS_TYPE);
}
var PROPS_VALUE = ["v", "value"];
function resolveValue$1(node, type) {
const resolved = resolveProps(node, PROPS_VALUE);
if (resolved != null) {
return resolved;
} else {
throw createUnhandleNodeError(type);
}
}
var PROPS_MODIFIER = ["m", "modifier"];
function resolveLinkedModifier(node) {
return resolveProps(node, PROPS_MODIFIER);
}
var PROPS_KEY = ["k", "key"];
function resolveLinkedKey(node) {
const resolved = resolveProps(node, PROPS_KEY);
if (resolved) {
return resolved;
} else {
throw createUnhandleNodeError(
6
/* NodeTypes.Linked */
);
}
}
function resolveProps(node, props, defaultValue) {
for (let i = 0; i < props.length; i++) {
const prop = props[i];
if (hasOwn(node, prop) && node[prop] != null) {
return node[prop];
}
}
return defaultValue;
}
var AST_NODE_PROPS_KEYS = [
...PROPS_BODY,
...PROPS_CASES,
...PROPS_STATIC,
...PROPS_ITEMS,
...PROPS_KEY,
...PROPS_MODIFIER,
...PROPS_VALUE,
...PROPS_TYPE
];
function createUnhandleNodeError(type) {
return new Error(`unhandled node type: ${type}`);
}
var pathStateMachine = [];
pathStateMachine[
0
/* States.BEFORE_PATH */
] = {
[
"w"
/* PathCharTypes.WORKSPACE */
]: [
0
/* States.BEFORE_PATH */
],
[
"i"
/* PathCharTypes.IDENT */
]: [
3,
0
/* Actions.APPEND */
],
[
"["
/* PathCharTypes.LEFT_BRACKET */
]: [
4
/* States.IN_SUB_PATH */
],
[
"o"
/* PathCharTypes.END_OF_FAIL */
]: [
7
/* States.AFTER_PATH */
]
};
pathStateMachine[
1
/* States.IN_PATH */
] = {
[
"w"
/* PathCharTypes.WORKSPACE */
]: [
1
/* States.IN_PATH */
],
[
"."
/* PathCharTypes.DOT */
]: [
2
/* States.BEFORE_IDENT */
],
[
"["
/* PathCharTypes.LEFT_BRACKET */
]: [
4
/* States.IN_SUB_PATH */
],
[
"o"
/* PathCharTypes.END_OF_FAIL */
]: [
7
/* States.AFTER_PATH */
]
};
pathStateMachine[
2
/* States.BEFORE_IDENT */
] = {
[
"w"
/* PathCharTypes.WORKSPACE */
]: [
2
/* States.BEFORE_IDENT */
],
[
"i"
/* PathCharTypes.IDENT */
]: [
3,
0
/* Actions.APPEND */
],
[
"0"
/* PathCharTypes.ZERO */
]: [
3,
0
/* Actions.APPEND */
]
};
pathStateMachine[
3
/* States.IN_IDENT */
] = {
[
"i"
/* PathCharTypes.IDENT */
]: [
3,
0
/* Actions.APPEND */
],
[
"0"
/* PathCharTypes.ZERO */
]: [
3,
0
/* Actions.APPEND */
],
[
"w"
/* PathCharTypes.WORKSPACE */
]: [
1,
1
/* Actions.PUSH */
],
[
"."
/* PathCharTypes.DOT */
]: [
2,
1
/* Actions.PUSH */
],
[
"["
/* PathCharTypes.LEFT_BRACKET */
]: [
4,
1
/* Actions.PUSH */
],
[
"o"
/* PathCharTypes.END_OF_FAIL */
]: [
7,
1
/* Actions.PUSH */
]
};
pathStateMachine[
4
/* States.IN_SUB_PATH */
] = {
[
"'"
/* PathCharTypes.SINGLE_QUOTE */
]: [
5,
0
/* Actions.APPEND */
],
[
'"'
/* PathCharTypes.DOUBLE_QUOTE */
]: [
6,
0
/* Actions.APPEND */
],
[
"["
/* PathCharTypes.LEFT_BRACKET */
]: [
4,
2
/* Actions.INC_SUB_PATH_DEPTH */
],
[
"]"
/* PathCharTypes.RIGHT_BRACKET */
]: [
1,
3
/* Actions.PUSH_SUB_PATH */
],
[
"o"
/* PathCharTypes.END_OF_FAIL */
]: 8,
[
"l"
/* PathCharTypes.ELSE */
]: [
4,
0
/* Actions.APPEND */
]
};
pathStateMachine[
5
/* States.IN_SINGLE_QUOTE */
] = {
[
"'"
/* PathCharTypes.SINGLE_QUOTE */
]: [
4,
0
/* Actions.APPEND */
],
[
"o"
/* PathCharTypes.END_OF_FAIL */
]: 8,
[
"l"
/* PathCharTypes.ELSE */
]: [
5,
0
/* Actions.APPEND */
]
};
pathStateMachine[
6
/* States.IN_DOUBLE_QUOTE */
] = {
[
'"'
/* PathCharTypes.DOUBLE_QUOTE */
]: [
4,
0
/* Actions.APPEND */
],
[
"o"
/* PathCharTypes.END_OF_FAIL */
]: 8,
[
"l"
/* PathCharTypes.ELSE */
]: [
6,
0
/* Actions.APPEND */
]
};
var literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
function isLiteral(exp) {
return literalValueRE.test(exp);
}
function stripQuotes(str) {
const a = str.charCodeAt(0);
const b = str.charCodeAt(str.length - 1);
return a === b && (a === 34 || a === 39) ? str.slice(1, -1) : str;
}
function getPathCharType(ch) {
if (ch === void 0 || ch === null) {
return "o";
}
const code3 = ch.charCodeAt(0);
switch (code3) {
case 91:
case 93:
case 46:
case 34:
case 39:
return ch;
case 95:
case 36:
case 45:
return "i";
case 9:
case 10:
case 13:
case 160:
case 65279:
case 8232:
case 8233:
return "w";
}
return "i";
}
function formatSubPath(path) {
const trimmed = path.trim();
if (path.charAt(0) === "0" && isNaN(parseInt(path))) {
return false;
}
return isLiteral(trimmed) ? stripQuotes(trimmed) : "*" + trimmed;
}
function parse(path) {
const keys = [];
let index = -1;
let mode = 0;
let subPathDepth = 0;
let c;
let key;
let newChar;
let type;
let transition;
let action;
let typeMap;
const actions = [];
actions[
0
/* Actions.APPEND */
] = () => {
if (key === void 0) {
key = newChar;
} else {
key += newChar;
}
};
actions[
1
/* Actions.PUSH */
] = () => {
if (key !== void 0) {
keys.push(key);
key = void 0;
}
};
actions[
2
/* Actions.INC_SUB_PATH_DEPTH */
] = () => {
actions[
0
/* Actions.APPEND */
]();
subPathDepth++;
};
actions[
3
/* Actions.PUSH_SUB_PATH */
] = () => {
if (subPathDepth > 0) {
subPathDepth--;
mode = 4;
actions[
0
/* Actions.APPEND */
]();
} else {
subPathDepth = 0;
if (key === void 0) {
return false;
}
key = formatSubPath(key);
if (key === false) {
return false;
} else {
actions[
1
/* Actions.PUSH */
]();
}
}
};
function maybeUnescapeQuote() {
const nextChar = path[index + 1];
if (mode === 5 && nextChar === "'" || mode === 6 && nextChar === '"') {
index++;
newChar = "\\" + nextChar;
actions[
0
/* Actions.APPEND */
]();
return true;
}
}
while (mode !== null) {
index++;
c = path[index];
if (c === "\\" && maybeUnescapeQuote()) {
continue;
}
type = getPathCharType(c);
typeMap = pathStateMachine[mode];
transition = typeMap[type] || typeMap[
"l"
/* PathCharTypes.ELSE */
] || 8;
if (transition === 8) {
return;
}
mode = transition[0];
if (transition[1] !== void 0) {
action = actions[transition[1]];
if (action) {
newChar = c;
if (action() === false) {
return;
}
}
}
if (mode === 7) {
return keys;
}
}
}
var cache = /* @__PURE__ */ new Map();
function resolveWithKeyValue(obj, path) {
return isObject(obj) ? obj[path] : null;
}
function resolveValue(obj, path) {
if (!isObject(obj)) {
return null;
}
let hit = cache.get(path);
if (!hit) {
hit = parse(path);
if (hit) {
cache.set(path, hit);
}
}
if (!hit) {
return null;
}
const len = hit.length;
let last = obj;
let i = 0;
while (i < len) {
const key = hit[i];
if (AST_NODE_PROPS_KEYS.includes(key) && isMessageAST(last)) {
return null;
}
const val = last[key];
if (val === void 0) {
return null;
}
if (isFunction(last)) {
return null;
}
last = val;
i++;
}
return last;
}
var DEFAULT_MODIFIER = (str) => str;
var DEFAULT_MESSAGE = (ctx) => "";
var DEFAULT_MESSAGE_DATA_TYPE = "text";
var DEFAULT_NORMALIZE = (values) => values.length === 0 ? "" : join(values);
var DEFAULT_INTERPOLATE = toDisplayString;
function pluralDefault(choice, choicesLength) {
choice = Math.abs(choice);
if (choicesLength === 2) {
return choice ? choice > 1 ? 1 : 0 : 1;
}
return choice ? Math.min(choice, 2) : 0;
}
function getPluralIndex(options) {
const index = isNumber(options.pluralIndex) ? options.pluralIndex : -1;
return options.named && (isNumber(options.named.count) || isNumber(options.named.n)) ? isNumber(options.named.count) ? options.named.count : isNumber(options.named.n) ? options.named.n : index : index;
}
function normalizeNamed(pluralIndex, props) {
if (!props.count) {
props.count = pluralIndex;
}
if (!props.n) {
props.n = pluralIndex;
}
}
function createMessageContext(options = {}) {
const locale = options.locale;
const pluralIndex = getPluralIndex(options);
const pluralRule = isObject(options.pluralRules) && isString(locale) && isFunction(options.pluralRules[locale]) ? options.pluralRules[locale] : pluralDefault;
const orgPluralRule = isObject(options.pluralRules) && isString(locale) && isFunction(options.pluralRules[locale]) ? pluralDefault : void 0;
const plural = (messages) => {
return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];
};
const _list = options.list || [];
const list = (index) => _list[index];
const _named = options.named || create();
isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);
const named = (key) => _named[key];
function message(key) {
const msg = isFunction(options.messages) ? options.messages(key) : isObject(options.messages) ? options.messages[key] : false;
return !msg ? options.parent ? options.parent.message(key) : DEFAULT_MESSAGE : msg;
}
const _modifier = (name) => options.modifiers ? options.modifiers[name] : DEFAULT_MODIFIER;
const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize) ? options.processor.normalize : DEFAULT_NORMALIZE;
const interpolate = isPlainObject(options.processor) && isFunction(options.processor.interpolate) ? options.processor.interpolate : DEFAULT_INTERPOLATE;
const type = isPlainObject(options.processor) && isString(options.processor.type) ? options.processor.type : DEFAULT_MESSAGE_DATA_TYPE;
const linked = (key, ...args) => {
const [arg1, arg2] = args;
let type2 = "text";
let modifier = "";
if (args.length === 1) {
if (isObject(arg1)) {
modifier = arg1.modifier || modifier;
type2 = arg1.type || type2;
} else if (isString(arg1)) {
modifier = arg1 || modifier;
}
} else if (args.length === 2) {
if (isString(arg1)) {
modifier = arg1 || modifier;
}
if (isString(arg2)) {
type2 = arg2 || type2;
}
}
const ret = message(key)(ctx);
const msg = (
// The message in vnode resolved with linked are returned as an array by processor.nomalize
type2 === "vnode" && isArray(ret) && modifier ? ret[0] : ret
);
return modifier ? _modifier(modifier)(msg, type2) : msg;
};
const ctx = {
[
"list"
/* HelperNameMap.LIST */
]: list,
[
"named"
/* HelperNameMap.NAMED */
]: named,
[
"plural"
/* HelperNameMap.PLURAL */
]: plural,
[
"linked"
/* HelperNameMap.LINKED */
]: linked,
[
"message"
/* HelperNameMap.MESSAGE */
]: message,
[
"type"
/* HelperNameMap.TYPE */
]: type,
[
"interpolate"
/* HelperNameMap.INTERPOLATE */
]: interpolate,
[
"normalize"
/* HelperNameMap.NORMALIZE */
]: normalize,
[
"values"
/* HelperNameMap.VALUES */
]: assign(create(), _list, _named)
};
return ctx;
}
var devtools = null;
function setDevToolsHook(hook) {
devtools = hook;
}
function initI18nDevTools(i18n, version, meta) {
devtools && devtools.emit("i18n:init", {
timestamp: Date.now(),
i18n,
version,
meta
});
}
var translateDevTools = createDevToolsHook(
"function:translate"
/* IntlifyDevToolsHooks.FunctionTranslate */
);
function createDevToolsHook(hook) {
return (payloads) => devtools && devtools.emit(hook, payloads);
}
var code$1 = CompileWarnCodes.__EXTEND_POINT__;
var inc$1 = incrementer(code$1);
var CoreWarnCodes = {
NOT_FOUND_KEY: code$1,
// 2
FALLBACK_TO_TRANSLATE: inc$1(),
// 3
CANNOT_FORMAT_NUMBER: inc$1(),
// 4
FALLBACK_TO_NUMBER_FORMAT: inc$1(),
// 5
CANNOT_FORMAT_DATE: inc$1(),
// 6
FALLBACK_TO_DATE_FORMAT: inc$1(),
// 7
EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: inc$1(),
// 8
__EXTEND_POINT__: inc$1()
// 9
};
var warnMessages2 = {
[CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,
[CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,
[CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,
[CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,
[CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,
[CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`,
[CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.`
};
function getWarnMessage(code3, ...args) {
return format(warnMessages2[code3], ...args);
}
var code = CompileErrorCodes.__EXTEND_POINT__;
var inc = incrementer(code);
var CoreErrorCodes = {
INVALID_ARGUMENT: code,
// 17
INVALID_DATE_ARGUMENT: inc(),
// 18
INVALID_ISO_DATE_ARGUMENT: inc(),
// 19
NOT_SUPPORT_NON_STRING_MESSAGE: inc(),
// 20
NOT_SUPPORT_LOCALE_PROMISE_VALUE: inc(),
// 21
NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: inc(),
// 22
NOT_SUPPORT_LOCALE_TYPE: inc(),
// 23
__EXTEND_POINT__: inc()
// 24
};
function createCoreError(code3) {
return createCompileError(code3, null, true ? { messages: errorMessages2 } : void 0);
}
var errorMessages2 = {
[CoreErrorCodes.INVALID_ARGUMENT]: "Invalid arguments",
[CoreErrorCodes.INVALID_DATE_ARGUMENT]: "The date provided is an invalid Date object.Make sure your Date represents a valid date.",
[CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: "The argument provided is not a valid ISO date string",
[CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: "Not support non-string message",
[CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE]: "cannot support promise value",
[CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]: "cannot support async function",
[CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE]: "cannot support locale type"
};
function getLocale(context, options) {
return options.locale != null ? resolveLocale(options.locale) : resolveLocale(context.locale);
}
var _resolveLocale;
function resolveLocale(locale) {
if (isString(locale)) {
return locale;
} else {
if (isFunction(locale)) {
if (locale.resolvedOnce && _resolveLocale != null) {
return _resolveLocale;
} else if (locale.constructor.name === "Function") {
const resolve = locale();
if (isPromise(resolve)) {
throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);
}
return _resolveLocale = resolve;
} else {
throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);
}
} else {
throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);
}
}
}
function fallbackWithSimple(ctx, fallback, start) {
return [.../* @__PURE__ */ new Set([
start,
...isArray(fallback) ? fallback : isObject(fallback) ? Object.keys(fallback) : isString(fallback) ? [fallback] : [start]
])];
}
function fallbackWithLocaleChain(ctx, fallback, start) {
const startLocale = isString(start) ? start : DEFAULT_LOCALE;
const context = ctx;
if (!context.__localeChainCache) {
context.__localeChainCache = /* @__PURE__ */ new Map();
}
let chain = context.__localeChainCache.get(startLocale);
if (!chain) {
chain = [];
let block = [start];
while (isArray(block)) {
block = appendBlockToChain(chain, block, fallback);
}
const defaults = isArray(fallback) || !isPlainObject(fallback) ? fallback : fallback["default"] ? fallback["default"] : null;
block = isString(defaults) ? [defaults] : defaults;
if (isArray(block)) {
appendBlockToChain(chain, block, false);
}
context.__localeChainCache.set(startLocale, chain);
}
return chain;
}
function appendBlockToChain(chain, block, blocks) {
let follow = true;
for (let i = 0; i < block.length && isBoolean(follow); i++) {
const locale = block[i];
if (isString(locale)) {
follow = appendLocaleToChain(chain, block[i], blocks);
}
}
return follow;
}
function appendLocaleToChain(chain, locale, blocks) {
let follow;
const tokens = locale.split("-");
do {
const target = tokens.join("-");
follow = appendItemToChain(chain, target, blocks);
tokens.splice(-1, 1);
} while (tokens.length && follow === true);
return follow;
}
function appendItemToChain(chain, target, blocks) {
let follow = false;
if (!chain.includes(target)) {
follow = true;
if (target) {
follow = target[target.length - 1] !== "!";
const locale = target.replace(/!/g, "");
chain.push(locale);
if ((isArray(blocks) || isPlainObject(blocks)) && blocks[locale]) {
follow = blocks[locale];
}
}
}
return follow;
}
var VERSION = "9.14.5";
var NOT_REOSLVED = -1;
var DEFAULT_LOCALE = "en-US";
var MISSING_RESOLVE_VALUE = "";
var capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;
function getDefaultLinkedModifiers() {
return {
upper: (val, type) => {
return type === "text" && isString(val) ? val.toUpperCase() : type === "vnode" && isObject(val) && "__v_isVNode" in val ? val.children.toUpperCase() : val;
},
lower: (val, type) => {
return type === "text" && isString(val) ? val.toLowerCase() : type === "vnode" && isObject(val) && "__v_isVNode" in val ? val.children.toLowerCase() : val;
},
capitalize: (val, type) => {
return type === "text" && isString(val) ? capitalize(val) : type === "vnode" && isObject(val) && "__v_isVNode" in val ? capitalize(val.children) : val;
}
};
}
var _compiler;
function registerMessageCompiler(compiler) {
_compiler = compiler;
}
var _resolver;
function registerMessageResolver(resolver) {
_resolver = resolver;
}
var _fallbacker;
function registerLocaleFallbacker(fallbacker) {
_fallbacker = fallbacker;
}
var _additionalMeta = null;
var setAdditionalMeta = (meta) => {
_additionalMeta = meta;
};
var getAdditionalMeta = () => _additionalMeta;
var _fallbackContext = null;
var setFallbackContext = (context) => {
_fallbackContext = context;
};
var getFallbackContext = () => _fallbackContext;
var _cid = 0;
function createCoreContext(options = {}) {
const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;
const version = isString(options.version) ? options.version : VERSION;
const locale = isString(options.locale) || isFunction(options.locale) ? options.locale : DEFAULT_LOCALE;
const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale;
const fallbackLocale = isArray(options.fallbackLocale) || isPlainObject(options.fallbackLocale) || isString(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : _locale;
const messages = isPlainObject(options.messages) ? options.messages : createResources(_locale);
const datetimeFormats = isPlainObject(options.datetimeFormats) ? options.datetimeFormats : createResources(_locale);
const numberFormats = isPlainObject(options.numberFormats) ? options.numberFormats : createResources(_locale);
const modifiers = assign(create(), options.modifiers, getDefaultLinkedModifiers());
const pluralRules = options.pluralRules || create();
const missing = isFunction(options.missing) ? options.missing : null;
const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn) ? options.missingWarn : true;
const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) ? options.fallbackWarn : true;
const fallbackFormat = !!options.fallbackFormat;
const unresolving = !!options.unresolving;
const postTranslation = isFunction(options.postTranslation) ? options.postTranslation : null;
const processor = isPlainObject(options.processor) ? options.processor : null;
const warnHtmlMessage = isBoolean(options.warnHtmlMessage) ? options.warnHtmlMessage : true;
const escapeParameter = !!options.escapeParameter;
const messageCompiler = isFunction(options.messageCompiler) ? options.messageCompiler : _compiler;
if (isFunction(options.messageCompiler)) {
warnOnce(getWarnMessage(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));
}
const messageResolver = isFunction(options.messageResolver) ? options.messageResolver : _resolver || resolveWithKeyValue;
const localeFallbacker = isFunction(options.localeFallbacker) ? options.localeFallbacker : _fallbacker || fallbackWithSimple;
const fallbackContext = isObject(options.fallbackContext) ? options.fallbackContext : void 0;
const internalOptions = options;
const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : /* @__PURE__ */ new Map();
const __numberFormatters = isObject(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : /* @__PURE__ */ new Map();
const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};
_cid++;
const context = {
version,
cid: _cid,
locale,
fallbackLocale,
messages,
modifiers,
pluralRules,
missing,
missingWarn,
fallbackWarn,
fallbackFormat,
unresolving,
postTranslation,
processor,
warnHtmlMessage,
escapeParameter,
messageCompiler,
messageResolver,
localeFallbacker,
fallbackContext,
onWarn,
__meta
};
{
context.datetimeFormats = datetimeFormats;
context.numberFormats = numberFormats;
context.__datetimeFormatters = __datetimeFormatters;
context.__numberFormatters = __numberFormatters;
}
if (true) {
context.__v_emitter = internalOptions.__v_emitter != null ? internalOptions.__v_emitter : void 0;
}
if (true) {
initI18nDevTools(context, version, __meta);
}
return context;
}
var createResources = (locale) => ({ [locale]: create() });
function isTranslateFallbackWarn(fallback, key) {
return fallback instanceof RegExp ? fallback.test(key) : fallback;
}
function isTranslateMissingWarn(missing, key) {
return missing instanceof RegExp ? missing.test(key) : missing;
}
function handleMissing(context, key, locale, missingWarn, type) {
const { missing, onWarn } = context;
if (true) {
const emitter = context.__v_emitter;
if (emitter) {
emitter.emit("missing", {
locale,
key,
type,
groupId: `${type}:${key}`
});
}
}
if (missing !== null) {
const ret = missing(context, locale, key, type);
return isString(ret) ? ret : key;
} else {
if (isTranslateMissingWarn(missingWarn, key)) {
onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));
}
return key;
}
}
function updateFallbackLocale(ctx, locale, fallback) {
const context = ctx;
context.__localeChainCache = /* @__PURE__ */ new Map();
ctx.localeFallbacker(ctx, fallback, locale);
}
function isAlmostSameLocale(locale, compareLocale) {
if (locale === compareLocale)
return false;
return locale.split("-")[0] === compareLocale.split("-")[0];
}
function isImplicitFallback(targetLocale, locales) {
const index = locales.indexOf(targetLocale);
if (index === -1) {
return false;
}
for (let i = index + 1; i < locales.length; i++) {
if (isAlmostSameLocale(targetLocale, locales[i])) {
return true;
}
}
return false;
}
function format3(ast) {
const msg = (ctx) => formatParts(ctx, ast);
return msg;
}
function formatParts(ctx, ast) {
const body = resolveBody(ast);
if (body == null) {
throw createUnhandleNodeError(
0
/* NodeTypes.Resource */
);
}
const type = resolveType(body);
if (type === 1) {
const plural = body;
const cases = resolveCases(plural);
return ctx.plural(cases.reduce((messages, c) => [
...messages,
formatMessageParts(ctx, c)
], []));
} else {
return formatMessageParts(ctx, body);
}
}
function formatMessageParts(ctx, node) {
const static_ = resolveStatic(node);
if (static_ != null) {
return ctx.type === "text" ? static_ : ctx.normalize([static_]);
} else {
const messages = resolveItems(node).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);
return ctx.normalize(messages);
}
}
function formatMessagePart(ctx, node) {
const type = resolveType(node);
switch (type) {
case 3: {
return resolveValue$1(node, type);
}
case 9: {
return resolveValue$1(node, type);
}
case 4: {
const named = node;
if (hasOwn(named, "k") && named.k) {
return ctx.interpolate(ctx.named(named.k));
}
if (hasOwn(named, "key") && named.key) {
return ctx.interpolate(ctx.named(named.key));
}
throw createUnhandleNodeError(type);
}
case 5: {
const list = node;
if (hasOwn(list, "i") && isNumber(list.i)) {
return ctx.interpolate(ctx.list(list.i));
}
if (hasOwn(list, "index") && isNumber(list.index)) {
return ctx.interpolate(ctx.list(list.index));
}
throw createUnhandleNodeError(type);
}
case 6: {
const linked = node;
const modifier = resolveLinkedModifier(linked);
const key = resolveLinkedKey(linked);
return ctx.linked(formatMessagePart(ctx, key), modifier ? formatMessagePart(ctx, modifier) : void 0, ctx.type);
}
case 7: {
return resolveValue$1(node, type);
}
case 8: {
return resolveValue$1(node, type);
}
default:
throw new Error(`unhandled node on format message part: ${type}`);
}
}
var WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;
function checkHtmlMessage(source, warnHtmlMessage) {
if (warnHtmlMessage && detectHtmlTag(source)) {
warn(format(WARN_MESSAGE, { source }));
}
}
var defaultOnCacheKey = (message) => message;
var compileCache = create();
function onCompileWarn(_warn) {
if (_warn.code === CompileWarnCodes.USE_MODULO_SYNTAX) {
warn(`The use of named interpolation with modulo syntax is deprecated. It will be removed in v10.
reference: https://vue-i18n.intlify.dev/guide/essentials/syntax#rails-i18n-format
(message compiler warning message: ${_warn.message})`);
}
}
function baseCompile2(message, options = {}) {
let detectError = false;
const onError = options.onError || defaultOnError;
options.onError = (err) => {
detectError = true;
onError(err);
};
return { ...baseCompile(message, options), detectError };
}
var compileToFunction = (message, context) => {
if (!isString(message)) {
throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE);
}
if (true) {
context.onWarn = onCompileWarn;
}
{
const warnHtmlMessage = isBoolean(context.warnHtmlMessage) ? context.warnHtmlMessage : true;
checkHtmlMessage(message, warnHtmlMessage);
const onCacheKey = context.onCacheKey || defaultOnCacheKey;
const cacheKey = onCacheKey(message);
const cached = compileCache[cacheKey];
if (cached) {
return cached;
}
const { code: code3, detectError } = baseCompile2(message, context);
const msg = new Function(`return ${code3}`)();
return !detectError ? compileCache[cacheKey] = msg : msg;
}
};
function compile(message, context) {
if (true) {
context.onWarn = onCompileWarn;
}
if (__INTLIFY_JIT_COMPILATION__ && !__INTLIFY_DROP_MESSAGE_COMPILER__ && isString(message)) {
const warnHtmlMessage = isBoolean(context.warnHtmlMessage) ? context.warnHtmlMessage : true;
checkHtmlMessage(message, warnHtmlMessage);
const onCacheKey = context.onCacheKey || defaultOnCacheKey;
const cacheKey = onCacheKey(message);
const cached = compileCache[cacheKey];
if (cached) {
return cached;
}
const { ast, detectError } = baseCompile2(message, {
...context,
location: true,
jit: true
});
const msg = format3(ast);
return !detectError ? compileCache[cacheKey] = msg : msg;
} else {
if (!isMessageAST(message)) {
warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`);
return () => message;
}
const cacheKey = message.cacheKey;
if (cacheKey) {
const cached = compileCache[cacheKey];
if (cached) {
return cached;
}
return compileCache[cacheKey] = format3(message);
} else {
return format3(message);
}
}
}
var NOOP_MESSAGE_FUNCTION = () => "";
var isMessageFunction = (val) => isFunction(val);
function translate(context, ...args) {
const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;
const [key, options] = parseTranslateArgs(...args);
const missingWarn = isBoolean(options.missingWarn) ? options.missingWarn : context.missingWarn;
const fallbackWarn = isBoolean(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;
const escapeParameter = isBoolean(options.escapeParameter) ? options.escapeParameter : context.escapeParameter;
const resolvedMessage = !!options.resolvedMessage;
const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) ? !isBoolean(options.default) ? options.default : !messageCompiler ? () => key : key : fallbackFormat ? !messageCompiler ? () => key : key : "";
const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== "";
const locale = getLocale(context, options);
escapeParameter && escapeParams(options);
let [formatScope, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [
key,
locale,
messages[locale] || create()
];
let format4 = formatScope;
let cacheBaseKey = key;
if (!resolvedMessage && !(isString(format4) || isMessageAST(format4) || isMessageFunction(format4))) {
if (enableDefaultMsg) {
format4 = defaultMsgOrKey;
cacheBaseKey = format4;
}
}
if (!resolvedMessage && (!(isString(format4) || isMessageAST(format4) || isMessageFunction(format4)) || !isString(targetLocale))) {
return unresolving ? NOT_REOSLVED : key;
}
if (isString(format4) && context.messageCompiler == null) {
warn(`The message format compilation is not supported in this build. Because message compiler isn't included. You need to pre-compilation all message format. So translate function return '${key}'.`);
return key;
}
let occurred = false;
const onError = () => {
occurred = true;
};
const msg = !isMessageFunction(format4) ? compileMessageFormat(context, key, targetLocale, format4, cacheBaseKey, onError) : format4;
if (occurred) {
return format4;
}
const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);
const msgContext = createMessageContext(ctxOptions);
const messaged = evaluateMessage(context, msg, msgContext);
let ret = postTranslation ? postTranslation(messaged, key) : messaged;
if (escapeParameter && isString(ret)) {
ret = sanitizeTranslatedHtml(ret);
}
if (true) {
const payloads = {
timestamp: Date.now(),
key: isString(key) ? key : isMessageFunction(format4) ? format4.key : "",
locale: targetLocale || (isMessageFunction(format4) ? format4.locale : ""),
format: isString(format4) ? format4 : isMessageFunction(format4) ? format4.source : "",
message: ret
};
payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});
translateDevTools(payloads);
}
return ret;
}
function escapeParams(options) {
if (isArray(options.list)) {
options.list = options.list.map((item) => isString(item) ? escapeHtml(item) : item);
} else if (isObject(options.named)) {
Object.keys(options.named).forEach((key) => {
if (isString(options.named[key])) {
options.named[key] = escapeHtml(options.named[key]);
}
});
}
}
function resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {
const { messages, onWarn, messageResolver: resolveValue2, localeFallbacker } = context;
const locales = localeFallbacker(context, fallbackLocale, locale);
let message = create();
let targetLocale;
let format4 = null;
let from = locale;
let to = null;
const type = "translate";
for (let i = 0; i < locales.length; i++) {
targetLocale = to = locales[i];
if (locale !== targetLocale && !isAlmostSameLocale(locale, targetLocale) && isTranslateFallbackWarn(fallbackWarn, key)) {
onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {
key,
target: targetLocale
}));
}
if (locale !== targetLocale) {
const emitter = context.__v_emitter;
if (emitter) {
emitter.emit("fallback", {
type,
key,
from,
to,
groupId: `${type}:${key}`
});
}
}
message = messages[targetLocale] || create();
let start = null;
let startTag;
let endTag;
if (inBrowser) {
start = window.performance.now();
startTag = "intlify-message-resolve-start";
endTag = "intlify-message-resolve-end";
mark && mark(startTag);
}
if ((format4 = resolveValue2(message, key)) === null) {
format4 = message[key];
}
if (inBrowser) {
const end = window.performance.now();
const emitter = context.__v_emitter;
if (emitter && start && format4) {
emitter.emit("message-resolve", {
type: "message-resolve",
key,
message: format4,
time: end - start,
groupId: `${type}:${key}`
});
}
if (startTag && endTag && mark && measure) {
mark(endTag);
measure("intlify message resolve", startTag, endTag);
}
}
if (isString(format4) || isMessageAST(format4) || isMessageFunction(format4)) {
break;
}
if (!isImplicitFallback(targetLocale, locales)) {
const missingRet = handleMissing(
context,
// eslint-disable-line @typescript-eslint/no-explicit-any
key,
targetLocale,
missingWarn,
type
);
if (missingRet !== key) {
format4 = missingRet;
}
}
from = to;
}
return [format4, targetLocale, message];
}
function compileMessageFormat(context, key, targetLocale, format4, cacheBaseKey, onError) {
const { messageCompiler, warnHtmlMessage } = context;
if (isMessageFunction(format4)) {
const msg2 = format4;
msg2.locale = msg2.locale || targetLocale;
msg2.key = msg2.key || key;
return msg2;
}
if (messageCompiler == null) {
const msg2 = () => format4;
msg2.locale = targetLocale;
msg2.key = key;
return msg2;
}
let start = null;
let startTag;
let endTag;
if (inBrowser) {
start = window.performance.now();
startTag = "intlify-message-compilation-start";
endTag = "intlify-message-compilation-end";
mark && mark(startTag);
}
const msg = messageCompiler(format4, getCompileContext(context, targetLocale, cacheBaseKey, format4, warnHtmlMessage, onError));
if (inBrowser) {
const end = window.performance.now();
const emitter = context.__v_emitter;
if (emitter && start) {
emitter.emit("message-compilation", {
type: "message-compilation",
message: format4,
time: end - start,
groupId: `${"translate"}:${key}`
});
}
if (startTag && endTag && mark && measure) {
mark(endTag);
measure("intlify message compilation", startTag, endTag);
}
}
msg.locale = targetLocale;
msg.key = key;
msg.source = format4;
return msg;
}
function evaluateMessage(context, msg, msgCtx) {
let start = null;
let startTag;
let endTag;
if (inBrowser) {
start = window.performance.now();
startTag = "intlify-message-evaluation-start";
endTag = "intlify-message-evaluation-end";
mark && mark(startTag);
}
const messaged = msg(msgCtx);
if (inBrowser) {
const end = window.performance.now();
const emitter = context.__v_emitter;
if (emitter && start) {
emitter.emit("message-evaluation", {
type: "message-evaluation",
value: messaged,
time: end - start,
groupId: `${"translate"}:${msg.key}`
});
}
if (startTag && endTag && mark && measure) {
mark(endTag);
measure("intlify message evaluation", startTag, endTag);
}
}
return messaged;
}
function parseTranslateArgs(...args) {
const [arg1, arg2, arg3] = args;
const options = create();
if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1) && !isMessageAST(arg1)) {
throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
}
const key = isNumber(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1;
if (isNumber(arg2)) {
options.plural = arg2;
} else if (isString(arg2)) {
options.default = arg2;
} else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {
options.named = arg2;
} else if (isArray(arg2)) {
options.list = arg2;
}
if (isNumber(arg3)) {
options.plural = arg3;
} else if (isString(arg3)) {
options.default = arg3;
} else if (isPlainObject(arg3)) {
assign(options, arg3);
}
return [key, options];
}
function getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {
return {
locale,
key,
warnHtmlMessage,
onError: (err) => {
onError && onError(err);
if (true) {
const _source = getSourceForCodeFrame(source);
const message = `Message compilation error: ${err.message}`;
const codeFrame = err.location && _source && generateCodeFrame(_source, err.location.start.offset, err.location.end.offset);
const emitter = context.__v_emitter;
if (emitter && _source) {
emitter.emit("compile-error", {
message: _source,
error: err.message,
start: err.location && err.location.start.offset,
end: err.location && err.location.end.offset,
groupId: `${"translate"}:${key}`
});
}
console.error(codeFrame ? `${message}
${codeFrame}` : message);
} else {
throw err;
}
},
onCacheKey: (source2) => generateFormatCacheKey(locale, key, source2)
};
}
function getSourceForCodeFrame(source) {
if (isString(source)) {
return source;
} else {
if (source.loc && source.loc.source) {
return source.loc.source;
}
}
}
function getMessageContextOptions(context, locale, message, options) {
const { modifiers, pluralRules, messageResolver: resolveValue2, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;
const resolveMessage = (key) => {
let val = resolveValue2(message, key);
if (val == null && fallbackContext) {
const [, , message2] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);
val = resolveValue2(message2, key);
}
if (isString(val) || isMessageAST(val)) {
let occurred = false;
const onError = () => {
occurred = true;
};
const msg = compileMessageFormat(context, key, locale, val, key, onError);
return !occurred ? msg : NOOP_MESSAGE_FUNCTION;
} else if (isMessageFunction(val)) {
return val;
} else {
return NOOP_MESSAGE_FUNCTION;
}
};
const ctxOptions = {
locale,
modifiers,
pluralRules,
messages: resolveMessage
};
if (context.processor) {
ctxOptions.processor = context.processor;
}
if (options.list) {
ctxOptions.list = options.list;
}
if (options.named) {
ctxOptions.named = options.named;
}
if (isNumber(options.plural)) {
ctxOptions.pluralIndex = options.plural;
}
return ctxOptions;
}
var intlDefined = typeof Intl !== "undefined";
var Availabilities = {
dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== "undefined",
numberFormat: intlDefined && typeof Intl.NumberFormat !== "undefined"
};
function datetime(context, ...args) {
const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;
const { __datetimeFormatters } = context;
if (!Availabilities.dateTimeFormat) {
onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));
return MISSING_RESOLVE_VALUE;
}
const [key, value, options, overrides] = parseDateTimeArgs(...args);
const missingWarn = isBoolean(options.missingWarn) ? options.missingWarn : context.missingWarn;
const fallbackWarn = isBoolean(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;
const part = !!options.part;
const locale = getLocale(context, options);
const locales = localeFallbacker(
context,
// eslint-disable-line @typescript-eslint/no-explicit-any
fallbackLocale,
locale
);
if (!isString(key) || key === "") {
return new Intl.DateTimeFormat(locale, overrides).format(value);
}
let datetimeFormat = {};
let targetLocale;
let format4 = null;
let from = locale;
let to = null;
const type = "datetime format";
for (let i = 0; i < locales.length; i++) {
targetLocale = to = locales[i];
if (locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) {
onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {
key,
target: targetLocale
}));
}
if (locale !== targetLocale) {
const emitter = context.__v_emitter;
if (emitter) {
emitter.emit("fallback", {
type,
key,
from,
to,
groupId: `${type}:${key}`
});
}
}
datetimeFormat = datetimeFormats[targetLocale] || {};
format4 = datetimeFormat[key];
if (isPlainObject(format4))
break;
handleMissing(context, key, targetLocale, missingWarn, type);
from = to;
}
if (!isPlainObject(format4) || !isString(targetLocale)) {
return unresolving ? NOT_REOSLVED : key;
}
let id = `${targetLocale}__${key}`;
if (!isEmptyObject(overrides)) {
id = `${id}__${JSON.stringify(overrides)}`;
}
let formatter = __datetimeFormatters.get(id);
if (!formatter) {
formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format4, overrides));
__datetimeFormatters.set(id, formatter);
}
return !part ? formatter.format(value) : formatter.formatToParts(value);
}
var DATETIME_FORMAT_OPTIONS_KEYS = [
"localeMatcher",
"weekday",
"era",
"year",
"month",
"day",
"hour",
"minute",
"second",
"timeZoneName",
"formatMatcher",
"hour12",
"timeZone",
"dateStyle",
"timeStyle",
"calendar",
"dayPeriod",
"numberingSystem",
"hourCycle",
"fractionalSecondDigits"
];
function parseDateTimeArgs(...args) {
const [arg1, arg2, arg3, arg4] = args;
const options = create();
let overrides = create();
let value;
if (isString(arg1)) {
const matches = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);
if (!matches) {
throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
}
const dateTime = matches[3] ? matches[3].trim().startsWith("T") ? `${matches[1].trim()}${matches[3].trim()}` : `${matches[1].trim()}T${matches[3].trim()}` : matches[1].trim();
value = new Date(dateTime);
try {
value.toISOString();
} catch (e) {
throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
}
} else if (isDate(arg1)) {
if (isNaN(arg1.getTime())) {
throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);
}
value = arg1;
} else if (isNumber(arg1)) {
value = arg1;
} else {
throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
}
if (isString(arg2)) {
options.key = arg2;
} else if (isPlainObject(arg2)) {
Object.keys(arg2).forEach((key) => {
if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {
overrides[key] = arg2[key];
} else {
options[key] = arg2[key];
}
});
}
if (isString(arg3)) {
options.locale = arg3;
} else if (isPlainObject(arg3)) {
overrides = arg3;
}
if (isPlainObject(arg4)) {
overrides = arg4;
}
return [options.key || "", value, options, overrides];
}
function clearDateTimeFormat(ctx, locale, format4) {
const context = ctx;
for (const key in format4) {
const id = `${locale}__${key}`;
if (!context.__datetimeFormatters.has(id)) {
continue;
}
context.__datetimeFormatters.delete(id);
}
}
function number(context, ...args) {
const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;
const { __numberFormatters } = context;
if (!Availabilities.numberFormat) {
onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));
return MISSING_RESOLVE_VALUE;
}
const [key, value, options, overrides] = parseNumberArgs(...args);
const missingWarn = isBoolean(options.missingWarn) ? options.missingWarn : context.missingWarn;
const fallbackWarn = isBoolean(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;
const part = !!options.part;
const locale = getLocale(context, options);
const locales = localeFallbacker(
context,
// eslint-disable-line @typescript-eslint/no-explicit-any
fallbackLocale,
locale
);
if (!isString(key) || key === "") {
return new Intl.NumberFormat(locale, overrides).format(value);
}
let numberFormat = {};
let targetLocale;
let format4 = null;
let from = locale;
let to = null;
const type = "number format";
for (let i = 0; i < locales.length; i++) {
targetLocale = to = locales[i];
if (locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) {
onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {
key,
target: targetLocale
}));
}
if (locale !== targetLocale) {
const emitter = context.__v_emitter;
if (emitter) {
emitter.emit("fallback", {
type,
key,
from,
to,
groupId: `${type}:${key}`
});
}
}
numberFormat = numberFormats[targetLocale] || {};
format4 = numberFormat[key];
if (isPlainObject(format4))
break;
handleMissing(context, key, targetLocale, missingWarn, type);
from = to;
}
if (!isPlainObject(format4) || !isString(targetLocale)) {
return unresolving ? NOT_REOSLVED : key;
}
let id = `${targetLocale}__${key}`;
if (!isEmptyObject(overrides)) {
id = `${id}__${JSON.stringify(overrides)}`;
}
let formatter = __numberFormatters.get(id);
if (!formatter) {
formatter = new Intl.NumberFormat(targetLocale, assign({}, format4, overrides));
__numberFormatters.set(id, formatter);
}
return !part ? formatter.format(value) : formatter.formatToParts(value);
}
var NUMBER_FORMAT_OPTIONS_KEYS = [
"localeMatcher",
"style",
"currency",
"currencyDisplay",
"currencySign",
"useGrouping",
"minimumIntegerDigits",
"minimumFractionDigits",
"maximumFractionDigits",
"minimumSignificantDigits",
"maximumSignificantDigits",
"compactDisplay",
"notation",
"signDisplay",
"unit",
"unitDisplay",
"roundingMode",
"roundingPriority",
"roundingIncrement",
"trailingZeroDisplay"
];
function parseNumberArgs(...args) {
const [arg1, arg2, arg3, arg4] = args;
const options = create();
let overrides = create();
if (!isNumber(arg1)) {
throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
}
const value = arg1;
if (isString(arg2)) {
options.key = arg2;
} else if (isPlainObject(arg2)) {
Object.keys(arg2).forEach((key) => {
if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {
overrides[key] = arg2[key];
} else {
options[key] = arg2[key];
}
});
}
if (isString(arg3)) {
options.locale = arg3;
} else if (isPlainObject(arg3)) {
overrides = arg3;
}
if (isPlainObject(arg4)) {
overrides = arg4;
}
return [options.key || "", value, options, overrides];
}
function clearNumberFormat(ctx, locale, format4) {
const context = ctx;
for (const key in format4) {
const id = `${locale}__${key}`;
if (!context.__numberFormatters.has(id)) {
continue;
}
context.__numberFormatters.delete(id);
}
}
{
initFeatureFlags();
}
// node_modules/@vue/devtools-api/lib/esm/env.js
function getDevtoolsGlobalHook() {
return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
}
function getTarget() {
return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : {};
}
var isProxyAvailable = typeof Proxy === "function";
// node_modules/@vue/devtools-api/lib/esm/const.js
var HOOK_SETUP = "devtools-plugin:setup";
var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
// node_modules/@vue/devtools-api/lib/esm/time.js
var supported;
var perf;
function isPerformanceSupported() {
var _a;
if (supported !== void 0) {
return supported;
}
if (typeof window !== "undefined" && window.performance) {
supported = true;
perf = window.performance;
} else if (typeof globalThis !== "undefined" && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {
supported = true;
perf = globalThis.perf_hooks.performance;
} else {
supported = false;
}
return supported;
}
function now() {
return isPerformanceSupported() ? perf.now() : Date.now();
}
// node_modules/@vue/devtools-api/lib/esm/proxy.js
var ApiProxy = class {
constructor(plugin, hook) {
this.target = null;
this.targetQueue = [];
this.onQueue = [];
this.plugin = plugin;
this.hook = hook;
const defaultSettings = {};
if (plugin.settings) {
for (const id in plugin.settings) {
const item = plugin.settings[id];
defaultSettings[id] = item.defaultValue;
}
}
const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
let currentSettings = Object.assign({}, defaultSettings);
try {
const raw = localStorage.getItem(localSettingsSaveId);
const data = JSON.parse(raw);
Object.assign(currentSettings, data);
} catch (e) {
}
this.fallbacks = {
getSettings() {
return currentSettings;
},
setSettings(value) {
try {
localStorage.setItem(localSettingsSaveId, JSON.stringify(value));
} catch (e) {
}
currentSettings = value;
},
now() {
return now();
}
};
if (hook) {
hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {
if (pluginId === this.plugin.id) {
this.fallbacks.setSettings(value);
}
});
}
this.proxiedOn = new Proxy({}, {
get: (_target, prop) => {
if (this.target) {
return this.target.on[prop];
} else {
return (...args) => {
this.onQueue.push({
method: prop,
args
});
};
}
}
});
this.proxiedTarget = new Proxy({}, {
get: (_target, prop) => {
if (this.target) {
return this.target[prop];
} else if (prop === "on") {
return this.proxiedOn;
} else if (Object.keys(this.fallbacks).includes(prop)) {
return (...args) => {
this.targetQueue.push({
method: prop,
args,
resolve: () => {
}
});
return this.fallbacks[prop](...args);
};
} else {
return (...args) => {
return new Promise((resolve) => {
this.targetQueue.push({
method: prop,
args,
resolve
});
});
};
}
}
});
}
async setRealTarget(target) {
this.target = target;
for (const item of this.onQueue) {
this.target.on[item.method](...item.args);
}
for (const item of this.targetQueue) {
item.resolve(await this.target[item.method](...item.args));
}
}
};
// node_modules/@vue/devtools-api/lib/esm/index.js
function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
const descriptor = pluginDescriptor;
const target = getTarget();
const hook = getDevtoolsGlobalHook();
const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;
if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);
} else {
const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;
const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
list.push({
pluginDescriptor: descriptor,
setupFn,
proxy
});
if (proxy) {
setupFn(proxy.proxiedTarget);
}
}
}
// node_modules/vue-i18n/dist/vue-i18n.mjs
var VERSION2 = "9.14.5";
function initFeatureFlags2() {
if (typeof __VUE_I18N_FULL_INSTALL__ !== "boolean") {
getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;
}
if (typeof __VUE_I18N_LEGACY_API__ !== "boolean") {
getGlobalThis().__VUE_I18N_LEGACY_API__ = true;
}
if (typeof __INTLIFY_JIT_COMPILATION__ !== "boolean") {
getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;
}
if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== "boolean") {
getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;
}
if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;
}
}
var code$12 = CoreWarnCodes.__EXTEND_POINT__;
var inc$12 = incrementer(code$12);
var I18nWarnCodes = {
FALLBACK_TO_ROOT: code$12,
// 9
NOT_SUPPORTED_PRESERVE: inc$12(),
// 10
NOT_SUPPORTED_FORMATTER: inc$12(),
// 11
NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$12(),
// 12
NOT_SUPPORTED_GET_CHOICE_INDEX: inc$12(),
// 13
COMPONENT_NAME_LEGACY_COMPATIBLE: inc$12(),
// 14
NOT_FOUND_PARENT_SCOPE: inc$12(),
// 15
IGNORE_OBJ_FLATTEN: inc$12(),
// 16
NOTICE_DROP_ALLOW_COMPOSITION: inc$12(),
// 17
NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG: inc$12()
// 18
};
var warnMessages3 = {
[I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,
[I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,
[I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,
[I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,
[I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,
[I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,
[I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,
[I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`,
[I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION]: `'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze`,
[I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG]: `'translateExistCompatible' option will be dropped in the next major version.`
};
function getWarnMessage2(code3, ...args) {
return format(warnMessages3[code3], ...args);
}
var code2 = CoreErrorCodes.__EXTEND_POINT__;
var inc2 = incrementer(code2);
var I18nErrorCodes = {
// composer module errors
UNEXPECTED_RETURN_TYPE: code2,
// 24
// legacy module errors
INVALID_ARGUMENT: inc2(),
// 25
// i18n module errors
MUST_BE_CALL_SETUP_TOP: inc2(),
// 26
NOT_INSTALLED: inc2(),
// 27
NOT_AVAILABLE_IN_LEGACY_MODE: inc2(),
// 28
// directive module errors
REQUIRED_VALUE: inc2(),
// 29
INVALID_VALUE: inc2(),
// 30
// vue-devtools errors
CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc2(),
// 31
NOT_INSTALLED_WITH_PROVIDE: inc2(),
// 32
// unexpected error
UNEXPECTED_ERROR: inc2(),
// 33
// not compatible legacy vue-i18n constructor
NOT_COMPATIBLE_LEGACY_VUE_I18N: inc2(),
// 34
// bridge support vue 2.x only
BRIDGE_SUPPORT_VUE_2_ONLY: inc2(),
// 35
// need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``
MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc2(),
// 36
// Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly
NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc2(),
// 37
// for enhancement
__EXTEND_POINT__: inc2()
// 38
};
function createI18nError(code3, ...args) {
return createCompileError(code3, null, true ? { messages: errorMessages3, args } : void 0);
}
var errorMessages3 = {
[I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: "Unexpected return type in composer",
[I18nErrorCodes.INVALID_ARGUMENT]: "Invalid argument",
[I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: "Must be called at the top of a `setup` function",
[I18nErrorCodes.NOT_INSTALLED]: "Need to install with `app.use` function",
[I18nErrorCodes.UNEXPECTED_ERROR]: "Unexpected error",
[I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: "Not available in legacy mode",
[I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,
[I18nErrorCodes.INVALID_VALUE]: `Invalid value`,
[I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,
[I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: "Need to install with `provide` function",
[I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: "Not compatible legacy VueI18n.",
[I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: "vue-i18n-bridge support Vue 2.x only",
[I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: "Must define i18n option or custom block in Composition API with using local scope in Legacy API mode",
[I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: "Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly"
};
var TranslateVNodeSymbol = makeSymbol("__translateVNode");
var DatetimePartsSymbol = makeSymbol("__datetimeParts");
var NumberPartsSymbol = makeSymbol("__numberParts");
var EnableEmitter = makeSymbol("__enableEmitter");
var DisableEmitter = makeSymbol("__disableEmitter");
var SetPluralRulesSymbol = makeSymbol("__setPluralRules");
makeSymbol("__intlifyMeta");
var InejctWithOptionSymbol = makeSymbol("__injectWithOption");
var DisposeSymbol = makeSymbol("__dispose");
var __VUE_I18N_BRIDGE__ = "__VUE_I18N_BRIDGE__";
function handleFlatJson(obj) {
if (!isObject(obj)) {
return obj;
}
if (isMessageAST(obj)) {
return obj;
}
for (const key in obj) {
if (!hasOwn(obj, key)) {
continue;
}
if (!key.includes(".")) {
if (isObject(obj[key])) {
handleFlatJson(obj[key]);
}
} else {
const subKeys = key.split(".");
const lastIndex = subKeys.length - 1;
let currentObj = obj;
let hasStringValue = false;
for (let i = 0; i < lastIndex; i++) {
if (subKeys[i] === "__proto__") {
throw new Error(`unsafe key: ${subKeys[i]}`);
}
if (!(subKeys[i] in currentObj)) {
currentObj[subKeys[i]] = create();
}
if (!isObject(currentObj[subKeys[i]])) {
warn(getWarnMessage2(I18nWarnCodes.IGNORE_OBJ_FLATTEN, {
key: subKeys[i]
}));
hasStringValue = true;
break;
}
currentObj = currentObj[subKeys[i]];
}
if (!hasStringValue) {
if (!isMessageAST(currentObj)) {
currentObj[subKeys[lastIndex]] = obj[key];
delete obj[key];
} else {
if (!AST_NODE_PROPS_KEYS.includes(subKeys[lastIndex])) {
delete obj[key];
}
}
}
if (!isMessageAST(currentObj)) {
const target = currentObj[subKeys[lastIndex]];
if (isObject(target)) {
handleFlatJson(target);
}
}
}
}
return obj;
}
function getLocaleMessages(locale, options) {
const { messages, __i18n, messageResolver, flatJson } = options;
const ret = isPlainObject(messages) ? messages : isArray(__i18n) ? create() : { [locale]: create() };
if (isArray(__i18n)) {
__i18n.forEach((custom) => {
if ("locale" in custom && "resource" in custom) {
const { locale: locale2, resource } = custom;
if (locale2) {
ret[locale2] = ret[locale2] || create();
deepCopy(resource, ret[locale2]);
} else {
deepCopy(resource, ret);
}
} else {
isString(custom) && deepCopy(JSON.parse(custom), ret);
}
});
}
if (messageResolver == null && flatJson) {
for (const key in ret) {
if (hasOwn(ret, key)) {
handleFlatJson(ret[key]);
}
}
}
return ret;
}
function getComponentOptions(instance) {
return instance.type;
}
function adjustI18nResources(gl, options, componentOptions) {
let messages = isObject(options.messages) ? options.messages : create();
if ("__i18nGlobal" in componentOptions) {
messages = getLocaleMessages(gl.locale.value, {
messages,
__i18n: componentOptions.__i18nGlobal
});
}
const locales = Object.keys(messages);
if (locales.length) {
locales.forEach((locale) => {
gl.mergeLocaleMessage(locale, messages[locale]);
});
}
{
if (isObject(options.datetimeFormats)) {
const locales2 = Object.keys(options.datetimeFormats);
if (locales2.length) {
locales2.forEach((locale) => {
gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);
});
}
}
if (isObject(options.numberFormats)) {
const locales2 = Object.keys(options.numberFormats);
if (locales2.length) {
locales2.forEach((locale) => {
gl.mergeNumberFormat(locale, options.numberFormats[locale]);
});
}
}
}
}
function createTextNode(key) {
return createVNode(Text, null, key, 0);
}
var DEVTOOLS_META = "__INTLIFY_META__";
var NOOP_RETURN_ARRAY = () => [];
var NOOP_RETURN_FALSE = () => false;
var composerID = 0;
function defineCoreMissingHandler(missing) {
return (ctx, locale, key, type) => {
return missing(locale, key, getCurrentInstance() || void 0, type);
};
}
var getMetaInfo = () => {
const instance = getCurrentInstance();
let meta = null;
return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META]) ? { [DEVTOOLS_META]: meta } : null;
};
function createComposer(options = {}, VueI18nLegacy) {
const { __root, __injectWithOption } = options;
const _isGlobal = __root === void 0;
const flatJson = options.flatJson;
const _ref = inBrowser ? ref : shallowRef;
const translateExistCompatible = !!options.translateExistCompatible;
if (true) {
if (translateExistCompatible && true) {
warnOnce(getWarnMessage2(I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG));
}
}
let _inheritLocale = isBoolean(options.inheritLocale) ? options.inheritLocale : true;
const _locale = _ref(
// prettier-ignore
__root && _inheritLocale ? __root.locale.value : isString(options.locale) ? options.locale : DEFAULT_LOCALE
);
const _fallbackLocale = _ref(
// prettier-ignore
__root && _inheritLocale ? __root.fallbackLocale.value : isString(options.fallbackLocale) || isArray(options.fallbackLocale) || isPlainObject(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : _locale.value
);
const _messages = _ref(getLocaleMessages(_locale.value, options));
const _datetimeFormats = _ref(isPlainObject(options.datetimeFormats) ? options.datetimeFormats : { [_locale.value]: {} });
const _numberFormats = _ref(isPlainObject(options.numberFormats) ? options.numberFormats : { [_locale.value]: {} });
let _missingWarn = __root ? __root.missingWarn : isBoolean(options.missingWarn) || isRegExp(options.missingWarn) ? options.missingWarn : true;
let _fallbackWarn = __root ? __root.fallbackWarn : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) ? options.fallbackWarn : true;
let _fallbackRoot = __root ? __root.fallbackRoot : isBoolean(options.fallbackRoot) ? options.fallbackRoot : true;
let _fallbackFormat = !!options.fallbackFormat;
let _missing = isFunction(options.missing) ? options.missing : null;
let _runtimeMissing = isFunction(options.missing) ? defineCoreMissingHandler(options.missing) : null;
let _postTranslation = isFunction(options.postTranslation) ? options.postTranslation : null;
let _warnHtmlMessage = __root ? __root.warnHtmlMessage : isBoolean(options.warnHtmlMessage) ? options.warnHtmlMessage : true;
let _escapeParameter = !!options.escapeParameter;
const _modifiers = __root ? __root.modifiers : isPlainObject(options.modifiers) ? options.modifiers : {};
let _pluralRules = options.pluralRules || __root && __root.pluralRules;
let _context;
const getCoreContext = () => {
_isGlobal && setFallbackContext(null);
const ctxOptions = {
version: VERSION2,
locale: _locale.value,
fallbackLocale: _fallbackLocale.value,
messages: _messages.value,
modifiers: _modifiers,
pluralRules: _pluralRules,
missing: _runtimeMissing === null ? void 0 : _runtimeMissing,
missingWarn: _missingWarn,
fallbackWarn: _fallbackWarn,
fallbackFormat: _fallbackFormat,
unresolving: true,
postTranslation: _postTranslation === null ? void 0 : _postTranslation,
warnHtmlMessage: _warnHtmlMessage,
escapeParameter: _escapeParameter,
messageResolver: options.messageResolver,
messageCompiler: options.messageCompiler,
__meta: { framework: "vue" }
};
{
ctxOptions.datetimeFormats = _datetimeFormats.value;
ctxOptions.numberFormats = _numberFormats.value;
ctxOptions.__datetimeFormatters = isPlainObject(_context) ? _context.__datetimeFormatters : void 0;
ctxOptions.__numberFormatters = isPlainObject(_context) ? _context.__numberFormatters : void 0;
}
if (true) {
ctxOptions.__v_emitter = isPlainObject(_context) ? _context.__v_emitter : void 0;
}
const ctx = createCoreContext(ctxOptions);
_isGlobal && setFallbackContext(ctx);
return ctx;
};
_context = getCoreContext();
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
function trackReactivityValues() {
return [
_locale.value,
_fallbackLocale.value,
_messages.value,
_datetimeFormats.value,
_numberFormats.value
];
}
const locale = computed({
get: () => _locale.value,
set: (val) => {
_locale.value = val;
_context.locale = _locale.value;
}
});
const fallbackLocale = computed({
get: () => _fallbackLocale.value,
set: (val) => {
_fallbackLocale.value = val;
_context.fallbackLocale = _fallbackLocale.value;
updateFallbackLocale(_context, _locale.value, val);
}
});
const messages = computed(() => _messages.value);
const datetimeFormats = computed(() => _datetimeFormats.value);
const numberFormats = computed(() => _numberFormats.value);
function getPostTranslationHandler() {
return isFunction(_postTranslation) ? _postTranslation : null;
}
function setPostTranslationHandler(handler) {
_postTranslation = handler;
_context.postTranslation = handler;
}
function getMissingHandler() {
return _missing;
}
function setMissingHandler(handler) {
if (handler !== null) {
_runtimeMissing = defineCoreMissingHandler(handler);
}
_missing = handler;
_context.missing = _runtimeMissing;
}
function isResolvedTranslateMessage(type, arg) {
return type !== "translate" || !arg.resolvedMessage;
}
const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {
trackReactivityValues();
let ret;
try {
if (true) {
setAdditionalMeta(getMetaInfo());
}
if (!_isGlobal) {
_context.fallbackContext = __root ? getFallbackContext() : void 0;
}
ret = fn(_context);
} finally {
if (true) {
setAdditionalMeta(null);
}
if (!_isGlobal) {
_context.fallbackContext = void 0;
}
}
if (warnType !== "translate exists" && // for not `te` (e.g `t`)
isNumber(ret) && ret === NOT_REOSLVED || warnType === "translate exists" && !ret) {
const [key, arg2] = argumentParser();
if (__root && isString(key) && isResolvedTranslateMessage(warnType, arg2)) {
if (_fallbackRoot && (isTranslateFallbackWarn(_fallbackWarn, key) || isTranslateMissingWarn(_missingWarn, key))) {
warn(getWarnMessage2(I18nWarnCodes.FALLBACK_TO_ROOT, {
key,
type: warnType
}));
}
if (true) {
const { __v_emitter: emitter } = _context;
if (emitter && _fallbackRoot) {
emitter.emit("fallback", {
type: warnType,
key,
to: "global",
groupId: `${warnType}:${key}`
});
}
}
}
return __root && _fallbackRoot ? fallbackSuccess(__root) : fallbackFail(key);
} else if (successCondition(ret)) {
return ret;
} else {
throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);
}
};
function t(...args) {
return wrapWithDeps((context) => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), "translate", (root) => Reflect.apply(root.t, root, [...args]), (key) => key, (val) => isString(val));
}
function rt(...args) {
const [arg1, arg2, arg3] = args;
if (arg3 && !isObject(arg3)) {
throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);
}
return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);
}
function d(...args) {
return wrapWithDeps((context) => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root) => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString(val));
}
function n(...args) {
return wrapWithDeps((context) => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), "number format", (root) => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString(val));
}
function normalize(values) {
return values.map((val) => isString(val) || isNumber(val) || isBoolean(val) ? createTextNode(String(val)) : val);
}
const interpolate = (val) => val;
const processor = {
normalize,
interpolate,
type: "vnode"
};
function translateVNode(...args) {
return wrapWithDeps(
(context) => {
let ret;
const _context2 = context;
try {
_context2.processor = processor;
ret = Reflect.apply(translate, null, [_context2, ...args]);
} finally {
_context2.processor = null;
}
return ret;
},
() => parseTranslateArgs(...args),
"translate",
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(root) => root[TranslateVNodeSymbol](...args),
(key) => [createTextNode(key)],
(val) => isArray(val)
);
}
function numberParts(...args) {
return wrapWithDeps(
(context) => Reflect.apply(number, null, [context, ...args]),
() => parseNumberArgs(...args),
"number format",
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(root) => root[NumberPartsSymbol](...args),
NOOP_RETURN_ARRAY,
(val) => isString(val) || isArray(val)
);
}
function datetimeParts(...args) {
return wrapWithDeps(
(context) => Reflect.apply(datetime, null, [context, ...args]),
() => parseDateTimeArgs(...args),
"datetime format",
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(root) => root[DatetimePartsSymbol](...args),
NOOP_RETURN_ARRAY,
(val) => isString(val) || isArray(val)
);
}
function setPluralRules(rules) {
_pluralRules = rules;
_context.pluralRules = _pluralRules;
}
function te(key, locale2) {
return wrapWithDeps(() => {
if (!key) {
return false;
}
const targetLocale = isString(locale2) ? locale2 : _locale.value;
const message = getLocaleMessage(targetLocale);
const resolved = _context.messageResolver(message, key);
return !translateExistCompatible ? isMessageAST(resolved) || isMessageFunction(resolved) || isString(resolved) : resolved != null;
}, () => [key], "translate exists", (root) => {
return Reflect.apply(root.te, root, [key, locale2]);
}, NOOP_RETURN_FALSE, (val) => isBoolean(val));
}
function resolveMessages(key) {
let messages2 = null;
const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);
for (let i = 0; i < locales.length; i++) {
const targetLocaleMessages = _messages.value[locales[i]] || {};
const messageValue = _context.messageResolver(targetLocaleMessages, key);
if (messageValue != null) {
messages2 = messageValue;
break;
}
}
return messages2;
}
function tm(key) {
const messages2 = resolveMessages(key);
return messages2 != null ? messages2 : __root ? __root.tm(key) || {} : {};
}
function getLocaleMessage(locale2) {
return _messages.value[locale2] || {};
}
function setLocaleMessage(locale2, message) {
if (flatJson) {
const _message = { [locale2]: message };
for (const key in _message) {
if (hasOwn(_message, key)) {
handleFlatJson(_message[key]);
}
}
message = _message[locale2];
}
_messages.value[locale2] = message;
_context.messages = _messages.value;
}
function mergeLocaleMessage(locale2, message) {
_messages.value[locale2] = _messages.value[locale2] || {};
const _message = { [locale2]: message };
if (flatJson) {
for (const key in _message) {
if (hasOwn(_message, key)) {
handleFlatJson(_message[key]);
}
}
}
message = _message[locale2];
deepCopy(message, _messages.value[locale2]);
_context.messages = _messages.value;
}
function getDateTimeFormat(locale2) {
return _datetimeFormats.value[locale2] || {};
}
function setDateTimeFormat(locale2, format4) {
_datetimeFormats.value[locale2] = format4;
_context.datetimeFormats = _datetimeFormats.value;
clearDateTimeFormat(_context, locale2, format4);
}
function mergeDateTimeFormat(locale2, format4) {
_datetimeFormats.value[locale2] = assign(_datetimeFormats.value[locale2] || {}, format4);
_context.datetimeFormats = _datetimeFormats.value;
clearDateTimeFormat(_context, locale2, format4);
}
function getNumberFormat(locale2) {
return _numberFormats.value[locale2] || {};
}
function setNumberFormat(locale2, format4) {
_numberFormats.value[locale2] = format4;
_context.numberFormats = _numberFormats.value;
clearNumberFormat(_context, locale2, format4);
}
function mergeNumberFormat(locale2, format4) {
_numberFormats.value[locale2] = assign(_numberFormats.value[locale2] || {}, format4);
_context.numberFormats = _numberFormats.value;
clearNumberFormat(_context, locale2, format4);
}
composerID++;
if (__root && inBrowser) {
watch(__root.locale, (val) => {
if (_inheritLocale) {
_locale.value = val;
_context.locale = val;
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
}
});
watch(__root.fallbackLocale, (val) => {
if (_inheritLocale) {
_fallbackLocale.value = val;
_context.fallbackLocale = val;
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
}
});
}
const composer = {
id: composerID,
locale,
fallbackLocale,
get inheritLocale() {
return _inheritLocale;
},
set inheritLocale(val) {
_inheritLocale = val;
if (val && __root) {
_locale.value = __root.locale.value;
_fallbackLocale.value = __root.fallbackLocale.value;
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
}
},
get availableLocales() {
return Object.keys(_messages.value).sort();
},
messages,
get modifiers() {
return _modifiers;
},
get pluralRules() {
return _pluralRules || {};
},
get isGlobal() {
return _isGlobal;
},
get missingWarn() {
return _missingWarn;
},
set missingWarn(val) {
_missingWarn = val;
_context.missingWarn = _missingWarn;
},
get fallbackWarn() {
return _fallbackWarn;
},
set fallbackWarn(val) {
_fallbackWarn = val;
_context.fallbackWarn = _fallbackWarn;
},
get fallbackRoot() {
return _fallbackRoot;
},
set fallbackRoot(val) {
_fallbackRoot = val;
},
get fallbackFormat() {
return _fallbackFormat;
},
set fallbackFormat(val) {
_fallbackFormat = val;
_context.fallbackFormat = _fallbackFormat;
},
get warnHtmlMessage() {
return _warnHtmlMessage;
},
set warnHtmlMessage(val) {
_warnHtmlMessage = val;
_context.warnHtmlMessage = val;
},
get escapeParameter() {
return _escapeParameter;
},
set escapeParameter(val) {
_escapeParameter = val;
_context.escapeParameter = val;
},
t,
getLocaleMessage,
setLocaleMessage,
mergeLocaleMessage,
getPostTranslationHandler,
setPostTranslationHandler,
getMissingHandler,
setMissingHandler,
[SetPluralRulesSymbol]: setPluralRules
};
{
composer.datetimeFormats = datetimeFormats;
composer.numberFormats = numberFormats;
composer.rt = rt;
composer.te = te;
composer.tm = tm;
composer.d = d;
composer.n = n;
composer.getDateTimeFormat = getDateTimeFormat;
composer.setDateTimeFormat = setDateTimeFormat;
composer.mergeDateTimeFormat = mergeDateTimeFormat;
composer.getNumberFormat = getNumberFormat;
composer.setNumberFormat = setNumberFormat;
composer.mergeNumberFormat = mergeNumberFormat;
composer[InejctWithOptionSymbol] = __injectWithOption;
composer[TranslateVNodeSymbol] = translateVNode;
composer[DatetimePartsSymbol] = datetimeParts;
composer[NumberPartsSymbol] = numberParts;
}
if (true) {
composer[EnableEmitter] = (emitter) => {
_context.__v_emitter = emitter;
};
composer[DisableEmitter] = () => {
_context.__v_emitter = void 0;
};
}
return composer;
}
function convertComposerOptions(options) {
const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;
const fallbackLocale = isString(options.fallbackLocale) || isArray(options.fallbackLocale) || isPlainObject(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : locale;
const missing = isFunction(options.missing) ? options.missing : void 0;
const missingWarn = isBoolean(options.silentTranslationWarn) || isRegExp(options.silentTranslationWarn) ? !options.silentTranslationWarn : true;
const fallbackWarn = isBoolean(options.silentFallbackWarn) || isRegExp(options.silentFallbackWarn) ? !options.silentFallbackWarn : true;
const fallbackRoot = isBoolean(options.fallbackRoot) ? options.fallbackRoot : true;
const fallbackFormat = !!options.formatFallbackMessages;
const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};
const pluralizationRules = options.pluralizationRules;
const postTranslation = isFunction(options.postTranslation) ? options.postTranslation : void 0;
const warnHtmlMessage = isString(options.warnHtmlInMessage) ? options.warnHtmlInMessage !== "off" : true;
const escapeParameter = !!options.escapeParameterHtml;
const inheritLocale = isBoolean(options.sync) ? options.sync : true;
if (options.formatter) {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));
}
if (options.preserveDirectiveContent) {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));
}
let messages = options.messages;
if (isPlainObject(options.sharedMessages)) {
const sharedMessages = options.sharedMessages;
const locales = Object.keys(sharedMessages);
messages = locales.reduce((messages2, locale2) => {
const message = messages2[locale2] || (messages2[locale2] = {});
assign(message, sharedMessages[locale2]);
return messages2;
}, messages || {});
}
const { __i18n, __root, __injectWithOption } = options;
const datetimeFormats = options.datetimeFormats;
const numberFormats = options.numberFormats;
const flatJson = options.flatJson;
const translateExistCompatible = options.translateExistCompatible;
return {
locale,
fallbackLocale,
messages,
flatJson,
datetimeFormats,
numberFormats,
missing,
missingWarn,
fallbackWarn,
fallbackRoot,
fallbackFormat,
modifiers,
pluralRules: pluralizationRules,
postTranslation,
warnHtmlMessage,
escapeParameter,
messageResolver: options.messageResolver,
inheritLocale,
translateExistCompatible,
__i18n,
__root,
__injectWithOption
};
}
function createVueI18n(options = {}, VueI18nLegacy) {
{
const composer = createComposer(convertComposerOptions(options));
const { __extender } = options;
const vueI18n = {
// 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() {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));
return {
interpolate() {
return [];
}
};
},
set formatter(val) {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));
},
// missing
get missing() {
return composer.getMissingHandler();
},
set missing(handler) {
composer.setMissingHandler(handler);
},
// silentTranslationWarn
get silentTranslationWarn() {
return isBoolean(composer.missingWarn) ? !composer.missingWarn : composer.missingWarn;
},
set silentTranslationWarn(val) {
composer.missingWarn = isBoolean(val) ? !val : val;
},
// silentFallbackWarn
get silentFallbackWarn() {
return isBoolean(composer.fallbackWarn) ? !composer.fallbackWarn : composer.fallbackWarn;
},
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() {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));
return true;
},
set preserveDirectiveContent(val) {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));
},
// pluralizationRules
get pluralizationRules() {
return composer.pluralRules || {};
},
// for internal
__composer: composer,
// t
t(...args) {
const [arg1, arg2, arg3] = args;
const options2 = {};
let list = null;
let named = null;
if (!isString(arg1)) {
throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);
}
const key = arg1;
if (isString(arg2)) {
options2.locale = arg2;
} else if (isArray(arg2)) {
list = arg2;
} else if (isPlainObject(arg2)) {
named = arg2;
}
if (isArray(arg3)) {
list = arg3;
} else if (isPlainObject(arg3)) {
named = arg3;
}
return Reflect.apply(composer.t, composer, [
key,
list || named || {},
options2
]);
},
rt(...args) {
return Reflect.apply(composer.rt, composer, [...args]);
},
// tc
tc(...args) {
const [arg1, arg2, arg3] = args;
const options2 = { plural: 1 };
let list = null;
let named = null;
if (!isString(arg1)) {
throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);
}
const key = arg1;
if (isString(arg2)) {
options2.locale = arg2;
} else if (isNumber(arg2)) {
options2.plural = arg2;
} else if (isArray(arg2)) {
list = arg2;
} else if (isPlainObject(arg2)) {
named = arg2;
}
if (isString(arg3)) {
options2.locale = arg3;
} else if (isArray(arg3)) {
list = arg3;
} else if (isPlainObject(arg3)) {
named = arg3;
}
return Reflect.apply(composer.t, composer, [
key,
list || named || {},
options2
]);
},
// te
te(key, locale) {
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);
},
// mergeLocaleMessage
mergeLocaleMessage(locale, message) {
composer.mergeLocaleMessage(locale, message);
},
// d
d(...args) {
return Reflect.apply(composer.d, composer, [...args]);
},
// getDateTimeFormat
getDateTimeFormat(locale) {
return composer.getDateTimeFormat(locale);
},
// setDateTimeFormat
setDateTimeFormat(locale, format4) {
composer.setDateTimeFormat(locale, format4);
},
// mergeDateTimeFormat
mergeDateTimeFormat(locale, format4) {
composer.mergeDateTimeFormat(locale, format4);
},
// n
n(...args) {
return Reflect.apply(composer.n, composer, [...args]);
},
// getNumberFormat
getNumberFormat(locale) {
return composer.getNumberFormat(locale);
},
// setNumberFormat
setNumberFormat(locale, format4) {
composer.setNumberFormat(locale, format4);
},
// mergeNumberFormat
mergeNumberFormat(locale, format4) {
composer.mergeNumberFormat(locale, format4);
},
// getChoiceIndex
// eslint-disable-next-line @typescript-eslint/no-unused-vars
getChoiceIndex(choice, choicesLength) {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));
return -1;
}
};
vueI18n.__extender = __extender;
if (true) {
vueI18n.__enableEmitter = (emitter) => {
const __composer = composer;
__composer[EnableEmitter] && __composer[EnableEmitter](emitter);
};
vueI18n.__disableEmitter = () => {
const __composer = composer;
__composer[DisableEmitter] && __composer[DisableEmitter]();
};
}
return vueI18n;
}
}
var baseFormatProps = {
tag: {
type: [String, Object]
},
locale: {
type: String
},
scope: {
type: String,
// NOTE: avoid https://github.com/microsoft/rushstack/issues/1050
validator: (val) => val === "parent" || val === "global",
default: "parent"
/* ComponentI18nScope */
},
i18n: {
type: Object
}
};
function getInterpolateArg({ slots }, keys) {
if (keys.length === 1 && keys[0] === "default") {
const ret = slots.default ? slots.default() : [];
return ret.reduce((slot, current) => {
return [
...slot,
// prettier-ignore
...current.type === Fragment ? current.children : [current]
];
}, []);
} else {
return keys.reduce((arg, key) => {
const slot = slots[key];
if (slot) {
arg[key] = slot();
}
return arg;
}, create());
}
}
function getFragmentableTag(tag) {
return Fragment;
}
var TranslationImpl = defineComponent({
/* eslint-disable */
name: "i18n-t",
props: assign({
keypath: {
type: String,
required: true
},
plural: {
type: [Number, String],
// eslint-disable-next-line @typescript-eslint/no-explicit-any
validator: (val) => isNumber(val) || !isNaN(val)
}
}, baseFormatProps),
/* eslint-enable */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
setup(props, context) {
const { slots, attrs } = context;
const i18n = props.i18n || useI18n({
useScope: props.scope,
__useComponent: true
});
return () => {
const keys = Object.keys(slots).filter((key) => key !== "_");
const options = create();
if (props.locale) {
options.locale = props.locale;
}
if (props.plural !== void 0) {
options.plural = isString(props.plural) ? +props.plural : props.plural;
}
const arg = getInterpolateArg(context, keys);
const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options);
const assignedAttrs = assign(create(), attrs);
const tag = isString(props.tag) || isObject(props.tag) ? props.tag : getFragmentableTag();
return h(tag, assignedAttrs, children);
};
}
});
var Translation = TranslationImpl;
var I18nT = Translation;
function isVNode(target) {
return isArray(target) && !isString(target[0]);
}
function renderFormatter(props, context, slotKeys, partFormatter) {
const { slots, attrs } = context;
return () => {
const options = { part: true };
let overrides = create();
if (props.locale) {
options.locale = props.locale;
}
if (isString(props.format)) {
options.key = props.format;
} else if (isObject(props.format)) {
if (isString(props.format.key)) {
options.key = props.format.key;
}
overrides = Object.keys(props.format).reduce((options2, prop) => {
return slotKeys.includes(prop) ? assign(create(), options2, { [prop]: props.format[prop] }) : options2;
}, create());
}
const parts = partFormatter(...[props.value, options, overrides]);
let children = [options.key];
if (isArray(parts)) {
children = parts.map((part, index) => {
const slot = slots[part.type];
const node = slot ? slot({ [part.type]: part.value, index, parts }) : [part.value];
if (isVNode(node)) {
node[0].key = `${part.type}-${index}`;
}
return node;
});
} else if (isString(parts)) {
children = [parts];
}
const assignedAttrs = assign(create(), attrs);
const tag = isString(props.tag) || isObject(props.tag) ? props.tag : getFragmentableTag();
return h(tag, assignedAttrs, children);
};
}
var NumberFormatImpl = defineComponent({
/* eslint-disable */
name: "i18n-n",
props: assign({
value: {
type: Number,
required: true
},
format: {
type: [String, Object]
}
}, baseFormatProps),
/* eslint-enable */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
setup(props, context) {
const i18n = props.i18n || useI18n({
useScope: props.scope,
__useComponent: true
});
return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
i18n[NumberPartsSymbol](...args)
));
}
});
var NumberFormat = NumberFormatImpl;
var I18nN = NumberFormat;
var DatetimeFormatImpl = defineComponent({
/* eslint-disable */
name: "i18n-d",
props: assign({
value: {
type: [Number, Date],
required: true
},
format: {
type: [String, Object]
}
}, baseFormatProps),
/* eslint-enable */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
setup(props, context) {
const i18n = props.i18n || useI18n({
useScope: props.scope,
__useComponent: true
});
return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
i18n[DatetimePartsSymbol](...args)
));
}
});
var DatetimeFormat = DatetimeFormatImpl;
var I18nD = DatetimeFormat;
function getComposer$2(i18n, instance) {
const i18nInternal = i18n;
if (i18n.mode === "composition") {
return i18nInternal.__getInstance(instance) || i18n.global;
} else {
const vueI18n = i18nInternal.__getInstance(instance);
return vueI18n != null ? vueI18n.__composer : i18n.global.__composer;
}
}
function vTDirective(i18n) {
const _process = (binding) => {
const { instance, modifiers, value } = binding;
if (!instance || !instance.$) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
}
const composer = getComposer$2(i18n, instance.$);
if (modifiers.preserve) {
warn(getWarnMessage2(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));
}
const parsedValue = parseValue(value);
return [
Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),
composer
];
};
const register = (el, binding) => {
const [textContent, composer] = _process(binding);
if (inBrowser && i18n.global === composer) {
el.__i18nWatcher = watch(composer.locale, () => {
binding.instance && binding.instance.$forceUpdate();
});
}
el.__composer = composer;
el.textContent = textContent;
};
const unregister = (el) => {
if (inBrowser && el.__i18nWatcher) {
el.__i18nWatcher();
el.__i18nWatcher = void 0;
delete el.__i18nWatcher;
}
if (el.__composer) {
el.__composer = void 0;
delete el.__composer;
}
};
const update = (el, { value }) => {
if (el.__composer) {
const composer = el.__composer;
const parsedValue = parseValue(value);
el.textContent = Reflect.apply(composer.t, composer, [
...makeParams(parsedValue)
]);
}
};
const getSSRProps = (binding) => {
const [textContent] = _process(binding);
return { textContent };
};
return {
created: register,
unmounted: unregister,
beforeUpdate: update,
getSSRProps
};
}
function parseValue(value) {
if (isString(value)) {
return { path: value };
} else if (isPlainObject(value)) {
if (!("path" in value)) {
throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, "path");
}
return value;
} else {
throw createI18nError(I18nErrorCodes.INVALID_VALUE);
}
}
function makeParams(value) {
const { path, locale, args, choice, plural } = value;
const options = {};
const named = args || {};
if (isString(locale)) {
options.locale = locale;
}
if (isNumber(choice)) {
options.plural = choice;
}
if (isNumber(plural)) {
options.plural = plural;
}
return [path, named, options];
}
function apply(app, i18n, ...options) {
const pluginOptions = isPlainObject(options[0]) ? options[0] : {};
const useI18nComponentName = !!pluginOptions.useI18nComponentName;
const globalInstall = isBoolean(pluginOptions.globalInstall) ? pluginOptions.globalInstall : true;
if (globalInstall && useI18nComponentName) {
warn(getWarnMessage2(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {
name: Translation.name
}));
}
if (globalInstall) {
[!useI18nComponentName ? Translation.name : "i18n", "I18nT"].forEach((name) => app.component(name, Translation));
[NumberFormat.name, "I18nN"].forEach((name) => app.component(name, NumberFormat));
[DatetimeFormat.name, "I18nD"].forEach((name) => app.component(name, DatetimeFormat));
}
{
app.directive("t", vTDirective(i18n));
}
}
var VueDevToolsLabels = {
[
"vue-devtools-plugin-vue-i18n"
/* VueDevToolsIDs.PLUGIN */
]: "Vue I18n devtools",
[
"vue-i18n-resource-inspector"
/* VueDevToolsIDs.CUSTOM_INSPECTOR */
]: "I18n Resources",
[
"vue-i18n-timeline"
/* VueDevToolsIDs.TIMELINE */
]: "Vue I18n"
};
var VueDevToolsPlaceholders = {
[
"vue-i18n-resource-inspector"
/* VueDevToolsIDs.CUSTOM_INSPECTOR */
]: "Search for scopes ..."
};
var VueDevToolsTimelineColors = {
[
"vue-i18n-timeline"
/* VueDevToolsIDs.TIMELINE */
]: 16764185
};
var VUE_I18N_COMPONENT_TYPES = "vue-i18n: composer properties";
var devtoolsApi;
async function enableDevTools(app, i18n) {
return new Promise((resolve, reject) => {
try {
setupDevtoolsPlugin({
id: "vue-devtools-plugin-vue-i18n",
label: VueDevToolsLabels[
"vue-devtools-plugin-vue-i18n"
/* VueDevToolsIDs.PLUGIN */
],
packageName: "vue-i18n",
homepage: "https://vue-i18n.intlify.dev",
logo: "https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png",
componentStateTypes: [VUE_I18N_COMPONENT_TYPES],
app
// eslint-disable-line @typescript-eslint/no-explicit-any
}, (api) => {
devtoolsApi = api;
api.on.visitComponentTree(({ componentInstance, treeNode }) => {
updateComponentTreeTags(componentInstance, treeNode, i18n);
});
api.on.inspectComponent(({ componentInstance, instanceData }) => {
if (componentInstance.vnode.el && componentInstance.vnode.el.__VUE_I18N__ && instanceData) {
if (i18n.mode === "legacy") {
if (componentInstance.vnode.el.__VUE_I18N__ !== i18n.global.__composer) {
inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);
}
} else {
inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);
}
}
});
api.addInspector({
id: "vue-i18n-resource-inspector",
label: VueDevToolsLabels[
"vue-i18n-resource-inspector"
/* VueDevToolsIDs.CUSTOM_INSPECTOR */
],
icon: "language",
treeFilterPlaceholder: VueDevToolsPlaceholders[
"vue-i18n-resource-inspector"
/* VueDevToolsIDs.CUSTOM_INSPECTOR */
]
});
api.on.getInspectorTree((payload) => {
if (payload.app === app && payload.inspectorId === "vue-i18n-resource-inspector") {
registerScope(payload, i18n);
}
});
const roots = /* @__PURE__ */ new Map();
api.on.getInspectorState(async (payload) => {
if (payload.app === app && payload.inspectorId === "vue-i18n-resource-inspector") {
api.unhighlightElement();
inspectScope(payload, i18n);
if (payload.nodeId === "global") {
if (!roots.has(payload.app)) {
const [root] = await api.getComponentInstances(payload.app);
roots.set(payload.app, root);
}
api.highlightElement(roots.get(payload.app));
} else {
const instance = getComponentInstance(payload.nodeId, i18n);
instance && api.highlightElement(instance);
}
}
});
api.on.editInspectorState((payload) => {
if (payload.app === app && payload.inspectorId === "vue-i18n-resource-inspector") {
editScope(payload, i18n);
}
});
api.addTimelineLayer({
id: "vue-i18n-timeline",
label: VueDevToolsLabels[
"vue-i18n-timeline"
/* VueDevToolsIDs.TIMELINE */
],
color: VueDevToolsTimelineColors[
"vue-i18n-timeline"
/* VueDevToolsIDs.TIMELINE */
]
});
resolve(true);
});
} catch (e) {
console.error(e);
reject(false);
}
});
}
function getI18nScopeLable(instance) {
return instance.type.name || instance.type.displayName || instance.type.__file || "Anonymous";
}
function updateComponentTreeTags(instance, treeNode, i18n) {
const global2 = i18n.mode === "composition" ? i18n.global : i18n.global.__composer;
if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {
if (instance.vnode.el.__VUE_I18N__ !== global2) {
const tag = {
label: `i18n (${getI18nScopeLable(instance)} Scope)`,
textColor: 0,
backgroundColor: 16764185
};
treeNode.tags.push(tag);
}
}
}
function inspectComposer(instanceData, composer) {
const type = VUE_I18N_COMPONENT_TYPES;
instanceData.state.push({
type,
key: "locale",
editable: true,
value: composer.locale.value
});
instanceData.state.push({
type,
key: "availableLocales",
editable: false,
value: composer.availableLocales
});
instanceData.state.push({
type,
key: "fallbackLocale",
editable: true,
value: composer.fallbackLocale.value
});
instanceData.state.push({
type,
key: "inheritLocale",
editable: true,
value: composer.inheritLocale
});
instanceData.state.push({
type,
key: "messages",
editable: false,
value: getLocaleMessageValue(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 getLocaleMessageValue(messages) {
const value = {};
Object.keys(messages).forEach((key) => {
const v = messages[key];
if (isFunction(v) && "source" in v) {
value[key] = getMessageFunctionDetails(v);
} else if (isMessageAST(v) && v.loc && v.loc.source) {
value[key] = v.loc.source;
} else if (isObject(v)) {
value[key] = getLocaleMessageValue(v);
} else {
value[key] = v;
}
});
return value;
}
var ESC = {
"<": "&lt;",
">": "&gt;",
'"': "&quot;",
"&": "&amp;"
};
function escape(s) {
return s.replace(/[<>"&]/g, escapeChar);
}
function escapeChar(a) {
return ESC[a] || a;
}
function getMessageFunctionDetails(func) {
const argString = func.source ? `("${escape(func.source)}")` : `(?)`;
return {
_custom: {
type: "function",
display: `<span>ƒ</span> ${argString}`
}
};
}
function registerScope(payload, i18n) {
payload.rootNodes.push({
id: "global",
label: "Global Scope"
});
const global2 = i18n.mode === "composition" ? i18n.global : i18n.global.__composer;
for (const [keyInstance, instance] of i18n.__instances) {
const composer = i18n.mode === "composition" ? instance : instance.__composer;
if (global2 === composer) {
continue;
}
payload.rootNodes.push({
id: composer.id.toString(),
label: `${getI18nScopeLable(keyInstance)} Scope`
});
}
}
function getComponentInstance(nodeId, i18n) {
let instance = null;
if (nodeId !== "global") {
for (const [component, composer] of i18n.__instances.entries()) {
if (composer.id.toString() === nodeId) {
instance = component;
break;
}
}
}
return instance;
}
function getComposer$1(nodeId, i18n) {
if (nodeId === "global") {
return i18n.mode === "composition" ? i18n.global : i18n.global.__composer;
} else {
const instance = Array.from(i18n.__instances.values()).find((item) => item.id.toString() === nodeId);
if (instance) {
return i18n.mode === "composition" ? instance : instance.__composer;
} else {
return null;
}
}
}
function inspectScope(payload, i18n) {
const composer = getComposer$1(payload.nodeId, i18n);
if (composer) {
payload.state = makeScopeInspectState(composer);
}
return null;
}
function makeScopeInspectState(composer) {
const state = {};
const localeType = "Locale related info";
const localeStates = [
{
type: localeType,
key: "locale",
editable: true,
value: composer.locale.value
},
{
type: localeType,
key: "fallbackLocale",
editable: true,
value: composer.fallbackLocale.value
},
{
type: localeType,
key: "availableLocales",
editable: false,
value: composer.availableLocales
},
{
type: localeType,
key: "inheritLocale",
editable: true,
value: composer.inheritLocale
}
];
state[localeType] = localeStates;
const localeMessagesType = "Locale messages info";
const localeMessagesStates = [
{
type: localeMessagesType,
key: "messages",
editable: false,
value: getLocaleMessageValue(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) {
let groupId;
if (payload && "groupId" in payload) {
groupId = payload.groupId;
delete payload.groupId;
}
devtoolsApi.addTimelineEvent({
layerId: "vue-i18n-timeline",
event: {
title: event,
groupId,
time: Date.now(),
meta: {},
data: payload || {},
logType: event === "compile-error" ? "error" : event === "fallback" || event === "missing" ? "warning" : "default"
}
});
}
}
function editScope(payload, i18n) {
const composer = getComposer$1(payload.nodeId, i18n);
if (composer) {
const [field] = payload.path;
if (field === "locale" && isString(payload.state.value)) {
composer.locale.value = payload.state.value;
} else if (field === "fallbackLocale" && (isString(payload.state.value) || isArray(payload.state.value) || isObject(payload.state.value))) {
composer.fallbackLocale.value = payload.state.value;
} else if (field === "inheritLocale" && isBoolean(payload.state.value)) {
composer.inheritLocale = payload.state.value;
}
}
}
function defineMixin(vuei18n, composer, i18n) {
return {
beforeCreate() {
const instance = getCurrentInstance();
if (!instance) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
}
const options = this.$options;
if (options.i18n) {
const optionsI18n = options.i18n;
if (options.__i18n) {
optionsI18n.__i18n = options.__i18n;
}
optionsI18n.__root = composer;
if (this === this.$root) {
this.$i18n = mergeToGlobal(vuei18n, optionsI18n);
} else {
optionsI18n.__injectWithOption = true;
optionsI18n.__extender = i18n.__vueI18nExtend;
this.$i18n = createVueI18n(optionsI18n);
const _vueI18n = this.$i18n;
if (_vueI18n.__extender) {
_vueI18n.__disposer = _vueI18n.__extender(this.$i18n);
}
}
} else if (options.__i18n) {
if (this === this.$root) {
this.$i18n = mergeToGlobal(vuei18n, options);
} else {
this.$i18n = createVueI18n({
__i18n: options.__i18n,
__injectWithOption: true,
__extender: i18n.__vueI18nExtend,
__root: composer
});
const _vueI18n = this.$i18n;
if (_vueI18n.__extender) {
_vueI18n.__disposer = _vueI18n.__extender(this.$i18n);
}
}
} else {
this.$i18n = vuei18n;
}
if (options.__i18nGlobal) {
adjustI18nResources(composer, options, options);
}
this.$t = (...args) => this.$i18n.t(...args);
this.$rt = (...args) => this.$i18n.rt(...args);
this.$tc = (...args) => this.$i18n.tc(...args);
this.$te = (key, locale) => this.$i18n.te(key, locale);
this.$d = (...args) => this.$i18n.d(...args);
this.$n = (...args) => this.$i18n.n(...args);
this.$tm = (key) => this.$i18n.tm(key);
i18n.__setInstance(instance, this.$i18n);
},
mounted() {
if (this.$el && this.$i18n) {
const _vueI18n = this.$i18n;
this.$el.__VUE_I18N__ = _vueI18n.__composer;
const emitter = this.__v_emitter = createEmitter();
_vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);
emitter.on("*", addTimelineEvent);
}
},
unmounted() {
const instance = getCurrentInstance();
if (!instance) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
}
const _vueI18n = this.$i18n;
if (this.$el && this.$el.__VUE_I18N__) {
if (this.__v_emitter) {
this.__v_emitter.off("*", addTimelineEvent);
delete this.__v_emitter;
}
if (this.$i18n) {
_vueI18n.__disableEmitter && _vueI18n.__disableEmitter();
delete this.$el.__VUE_I18N__;
}
}
delete this.$t;
delete this.$rt;
delete this.$tc;
delete this.$te;
delete this.$d;
delete this.$n;
delete this.$tm;
if (_vueI18n.__disposer) {
_vueI18n.__disposer();
delete _vueI18n.__disposer;
delete _vueI18n.__extender;
}
i18n.__deleteInstance(instance);
delete this.$i18n;
}
};
}
function mergeToGlobal(g, options) {
g.locale = options.locale || g.locale;
g.fallbackLocale = options.fallbackLocale || g.fallbackLocale;
g.missing = options.missing || g.missing;
g.silentTranslationWarn = options.silentTranslationWarn || g.silentFallbackWarn;
g.silentFallbackWarn = options.silentFallbackWarn || g.silentFallbackWarn;
g.formatFallbackMessages = options.formatFallbackMessages || g.formatFallbackMessages;
g.postTranslation = options.postTranslation || g.postTranslation;
g.warnHtmlInMessage = options.warnHtmlInMessage || g.warnHtmlInMessage;
g.escapeParameterHtml = options.escapeParameterHtml || g.escapeParameterHtml;
g.sync = options.sync || g.sync;
g.__composer[SetPluralRulesSymbol](options.pluralizationRules || g.pluralizationRules);
const messages = getLocaleMessages(g.locale, {
messages: options.messages,
__i18n: options.__i18n
});
Object.keys(messages).forEach((locale) => g.mergeLocaleMessage(locale, messages[locale]));
if (options.datetimeFormats) {
Object.keys(options.datetimeFormats).forEach((locale) => g.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));
}
if (options.numberFormats) {
Object.keys(options.numberFormats).forEach((locale) => g.mergeNumberFormat(locale, options.numberFormats[locale]));
}
return g;
}
var I18nInjectionKey = makeSymbol("global-vue-i18n");
function createI18n(options = {}, VueI18nLegacy) {
const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy) ? options.legacy : __VUE_I18N_LEGACY_API__;
const __globalInjection = isBoolean(options.globalInjection) ? options.globalInjection : true;
const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode ? !!options.allowComposition : true;
const __instances = /* @__PURE__ */ new Map();
const [globalScope, __global] = createGlobal(options, __legacyMode);
const symbol = makeSymbol(true ? "vue-i18n" : "");
if (true) {
if (__legacyMode && __allowComposition && true) {
warn(getWarnMessage2(I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION));
}
}
function __getInstance(component) {
return __instances.get(component) || null;
}
function __setInstance(component, instance) {
__instances.set(component, instance);
}
function __deleteInstance(component) {
__instances.delete(component);
}
{
const i18n = {
// mode
get mode() {
return __VUE_I18N_LEGACY_API__ && __legacyMode ? "legacy" : "composition";
},
// allowComposition
get allowComposition() {
return __allowComposition;
},
// install plugin
async install(app, ...options2) {
if (true) {
app.__VUE_I18N__ = i18n;
}
app.__VUE_I18N_SYMBOL__ = symbol;
app.provide(app.__VUE_I18N_SYMBOL__, i18n);
if (isPlainObject(options2[0])) {
const opts = options2[0];
i18n.__composerExtend = opts.__composerExtend;
i18n.__vueI18nExtend = opts.__vueI18nExtend;
}
let globalReleaseHandler = null;
if (!__legacyMode && __globalInjection) {
globalReleaseHandler = injectGlobalFields(app, i18n.global);
}
if (__VUE_I18N_FULL_INSTALL__) {
apply(app, i18n, ...options2);
}
if (__VUE_I18N_LEGACY_API__ && __legacyMode) {
app.mixin(defineMixin(__global, __global.__composer, i18n));
}
const unmountApp = app.unmount;
app.unmount = () => {
globalReleaseHandler && globalReleaseHandler();
i18n.dispose();
unmountApp();
};
if (true) {
const ret = await enableDevTools(app, i18n);
if (!ret) {
throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);
}
const emitter = createEmitter();
if (__legacyMode) {
const _vueI18n = __global;
_vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);
} else {
const _composer = __global;
_composer[EnableEmitter] && _composer[EnableEmitter](emitter);
}
emitter.on("*", addTimelineEvent);
}
},
// global accessor
get global() {
return __global;
},
dispose() {
globalScope.stop();
},
// @internal
__instances,
// @internal
__getInstance,
// @internal
__setInstance,
// @internal
__deleteInstance
};
return i18n;
}
}
function useI18n(options = {}) {
const instance = getCurrentInstance();
if (instance == null) {
throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);
}
if (!instance.isCE && instance.appContext.app != null && !instance.appContext.app.__VUE_I18N_SYMBOL__) {
throw createI18nError(I18nErrorCodes.NOT_INSTALLED);
}
const i18n = getI18nInstance(instance);
const gl = getGlobalComposer(i18n);
const componentOptions = getComponentOptions(instance);
const scope = getScope(options, componentOptions);
if (__VUE_I18N_LEGACY_API__) {
if (i18n.mode === "legacy" && !options.__useComponent) {
if (!i18n.allowComposition) {
throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);
}
return useI18nForLegacy(instance, scope, gl, options);
}
}
if (scope === "global") {
adjustI18nResources(gl, options, componentOptions);
return gl;
}
if (scope === "parent") {
let composer2 = getComposer(i18n, instance, options.__useComponent);
if (composer2 == null) {
if (true) {
warn(getWarnMessage2(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));
}
composer2 = gl;
}
return composer2;
}
const i18nInternal = i18n;
let composer = i18nInternal.__getInstance(instance);
if (composer == null) {
const composerOptions = assign({}, options);
if ("__i18n" in componentOptions) {
composerOptions.__i18n = componentOptions.__i18n;
}
if (gl) {
composerOptions.__root = gl;
}
composer = createComposer(composerOptions);
if (i18nInternal.__composerExtend) {
composer[DisposeSymbol] = i18nInternal.__composerExtend(composer);
}
setupLifeCycle(i18nInternal, instance, composer);
i18nInternal.__setInstance(instance, composer);
}
return composer;
}
var castToVueI18n = (i18n) => {
if (!(__VUE_I18N_BRIDGE__ in i18n)) {
throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);
}
return i18n;
};
function createGlobal(options, legacyMode, VueI18nLegacy) {
const scope = effectScope();
{
const obj = __VUE_I18N_LEGACY_API__ && legacyMode ? scope.run(() => createVueI18n(options)) : scope.run(() => createComposer(options));
if (obj == null) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
}
return [scope, obj];
}
}
function getI18nInstance(instance) {
{
const i18n = inject(!instance.isCE ? instance.appContext.app.__VUE_I18N_SYMBOL__ : I18nInjectionKey);
if (!i18n) {
throw createI18nError(!instance.isCE ? I18nErrorCodes.UNEXPECTED_ERROR : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE);
}
return i18n;
}
}
function getScope(options, componentOptions) {
return isEmptyObject(options) ? "__i18n" in componentOptions ? "local" : "global" : !options.useScope ? "local" : options.useScope;
}
function getGlobalComposer(i18n) {
return i18n.mode === "composition" ? i18n.global : i18n.global.__composer;
}
function getComposer(i18n, target, useComponent = false) {
let composer = null;
const root = target.root;
let current = getParentComponentInstance(target, useComponent);
while (current != null) {
const i18nInternal = i18n;
if (i18n.mode === "composition") {
composer = i18nInternal.__getInstance(current);
} else {
if (__VUE_I18N_LEGACY_API__) {
const vueI18n = i18nInternal.__getInstance(current);
if (vueI18n != null) {
composer = vueI18n.__composer;
if (useComponent && composer && !composer[InejctWithOptionSymbol]) {
composer = null;
}
}
}
}
if (composer != null) {
break;
}
if (root === current) {
break;
}
current = current.parent;
}
return composer;
}
function getParentComponentInstance(target, useComponent = false) {
if (target == null) {
return null;
}
{
return !useComponent ? target.parent : target.vnode.ctx || target.parent;
}
}
function setupLifeCycle(i18n, target, composer) {
let emitter = null;
{
onMounted(() => {
if (target.vnode.el) {
target.vnode.el.__VUE_I18N__ = composer;
emitter = createEmitter();
const _composer = composer;
_composer[EnableEmitter] && _composer[EnableEmitter](emitter);
emitter.on("*", addTimelineEvent);
}
}, target);
onUnmounted(() => {
const _composer = composer;
if (target.vnode.el && target.vnode.el.__VUE_I18N__) {
emitter && emitter.off("*", addTimelineEvent);
_composer[DisableEmitter] && _composer[DisableEmitter]();
delete target.vnode.el.__VUE_I18N__;
}
i18n.__deleteInstance(target);
const dispose = _composer[DisposeSymbol];
if (dispose) {
dispose();
delete _composer[DisposeSymbol];
}
}, target);
}
}
function useI18nForLegacy(instance, scope, root, options = {}) {
const isLocalScope = scope === "local";
const _composer = shallowRef(null);
if (isLocalScope && instance.proxy && !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {
throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);
}
const _inheritLocale = isBoolean(options.inheritLocale) ? options.inheritLocale : !isString(options.locale);
const _locale = ref(
// prettier-ignore
!isLocalScope || _inheritLocale ? root.locale.value : isString(options.locale) ? options.locale : DEFAULT_LOCALE
);
const _fallbackLocale = ref(
// prettier-ignore
!isLocalScope || _inheritLocale ? root.fallbackLocale.value : isString(options.fallbackLocale) || isArray(options.fallbackLocale) || isPlainObject(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : _locale.value
);
const _messages = ref(getLocaleMessages(_locale.value, options));
const _datetimeFormats = ref(isPlainObject(options.datetimeFormats) ? options.datetimeFormats : { [_locale.value]: {} });
const _numberFormats = ref(isPlainObject(options.numberFormats) ? options.numberFormats : { [_locale.value]: {} });
const _missingWarn = isLocalScope ? root.missingWarn : isBoolean(options.missingWarn) || isRegExp(options.missingWarn) ? options.missingWarn : true;
const _fallbackWarn = isLocalScope ? root.fallbackWarn : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) ? options.fallbackWarn : true;
const _fallbackRoot = isLocalScope ? root.fallbackRoot : isBoolean(options.fallbackRoot) ? options.fallbackRoot : true;
const _fallbackFormat = !!options.fallbackFormat;
const _missing = isFunction(options.missing) ? options.missing : null;
const _postTranslation = isFunction(options.postTranslation) ? options.postTranslation : null;
const _warnHtmlMessage = isLocalScope ? root.warnHtmlMessage : isBoolean(options.warnHtmlMessage) ? options.warnHtmlMessage : true;
const _escapeParameter = !!options.escapeParameter;
const _modifiers = isLocalScope ? root.modifiers : isPlainObject(options.modifiers) ? options.modifiers : {};
const _pluralRules = options.pluralRules || isLocalScope && root.pluralRules;
function trackReactivityValues() {
return [
_locale.value,
_fallbackLocale.value,
_messages.value,
_datetimeFormats.value,
_numberFormats.value
];
}
const locale = computed({
get: () => {
return _composer.value ? _composer.value.locale.value : _locale.value;
},
set: (val) => {
if (_composer.value) {
_composer.value.locale.value = val;
}
_locale.value = val;
}
});
const fallbackLocale = computed({
get: () => {
return _composer.value ? _composer.value.fallbackLocale.value : _fallbackLocale.value;
},
set: (val) => {
if (_composer.value) {
_composer.value.fallbackLocale.value = val;
}
_fallbackLocale.value = val;
}
});
const messages = computed(() => {
if (_composer.value) {
return _composer.value.messages.value;
} else {
return _messages.value;
}
});
const datetimeFormats = computed(() => _datetimeFormats.value);
const numberFormats = computed(() => _numberFormats.value);
function getPostTranslationHandler() {
return _composer.value ? _composer.value.getPostTranslationHandler() : _postTranslation;
}
function setPostTranslationHandler(handler) {
if (_composer.value) {
_composer.value.setPostTranslationHandler(handler);
}
}
function getMissingHandler() {
return _composer.value ? _composer.value.getMissingHandler() : _missing;
}
function setMissingHandler(handler) {
if (_composer.value) {
_composer.value.setMissingHandler(handler);
}
}
function warpWithDeps(fn) {
trackReactivityValues();
return fn();
}
function t(...args) {
return _composer.value ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args])) : warpWithDeps(() => "");
}
function rt(...args) {
return _composer.value ? Reflect.apply(_composer.value.rt, null, [...args]) : "";
}
function d(...args) {
return _composer.value ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args])) : warpWithDeps(() => "");
}
function n(...args) {
return _composer.value ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args])) : warpWithDeps(() => "");
}
function tm(key) {
return _composer.value ? _composer.value.tm(key) : {};
}
function te(key, locale2) {
return _composer.value ? _composer.value.te(key, locale2) : false;
}
function getLocaleMessage(locale2) {
return _composer.value ? _composer.value.getLocaleMessage(locale2) : {};
}
function setLocaleMessage(locale2, message) {
if (_composer.value) {
_composer.value.setLocaleMessage(locale2, message);
_messages.value[locale2] = message;
}
}
function mergeLocaleMessage(locale2, message) {
if (_composer.value) {
_composer.value.mergeLocaleMessage(locale2, message);
}
}
function getDateTimeFormat(locale2) {
return _composer.value ? _composer.value.getDateTimeFormat(locale2) : {};
}
function setDateTimeFormat(locale2, format4) {
if (_composer.value) {
_composer.value.setDateTimeFormat(locale2, format4);
_datetimeFormats.value[locale2] = format4;
}
}
function mergeDateTimeFormat(locale2, format4) {
if (_composer.value) {
_composer.value.mergeDateTimeFormat(locale2, format4);
}
}
function getNumberFormat(locale2) {
return _composer.value ? _composer.value.getNumberFormat(locale2) : {};
}
function setNumberFormat(locale2, format4) {
if (_composer.value) {
_composer.value.setNumberFormat(locale2, format4);
_numberFormats.value[locale2] = format4;
}
}
function mergeNumberFormat(locale2, format4) {
if (_composer.value) {
_composer.value.mergeNumberFormat(locale2, format4);
}
}
const wrapper = {
get id() {
return _composer.value ? _composer.value.id : -1;
},
locale,
fallbackLocale,
messages,
datetimeFormats,
numberFormats,
get inheritLocale() {
return _composer.value ? _composer.value.inheritLocale : _inheritLocale;
},
set inheritLocale(val) {
if (_composer.value) {
_composer.value.inheritLocale = val;
}
},
get availableLocales() {
return _composer.value ? _composer.value.availableLocales : Object.keys(_messages.value);
},
get modifiers() {
return _composer.value ? _composer.value.modifiers : _modifiers;
},
get pluralRules() {
return _composer.value ? _composer.value.pluralRules : _pluralRules;
},
get isGlobal() {
return _composer.value ? _composer.value.isGlobal : false;
},
get missingWarn() {
return _composer.value ? _composer.value.missingWarn : _missingWarn;
},
set missingWarn(val) {
if (_composer.value) {
_composer.value.missingWarn = val;
}
},
get fallbackWarn() {
return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;
},
set fallbackWarn(val) {
if (_composer.value) {
_composer.value.missingWarn = val;
}
},
get fallbackRoot() {
return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;
},
set fallbackRoot(val) {
if (_composer.value) {
_composer.value.fallbackRoot = val;
}
},
get fallbackFormat() {
return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;
},
set fallbackFormat(val) {
if (_composer.value) {
_composer.value.fallbackFormat = val;
}
},
get warnHtmlMessage() {
return _composer.value ? _composer.value.warnHtmlMessage : _warnHtmlMessage;
},
set warnHtmlMessage(val) {
if (_composer.value) {
_composer.value.warnHtmlMessage = val;
}
},
get escapeParameter() {
return _composer.value ? _composer.value.escapeParameter : _escapeParameter;
},
set escapeParameter(val) {
if (_composer.value) {
_composer.value.escapeParameter = val;
}
},
t,
getPostTranslationHandler,
setPostTranslationHandler,
getMissingHandler,
setMissingHandler,
rt,
d,
n,
tm,
te,
getLocaleMessage,
setLocaleMessage,
mergeLocaleMessage,
getDateTimeFormat,
setDateTimeFormat,
mergeDateTimeFormat,
getNumberFormat,
setNumberFormat,
mergeNumberFormat
};
function sync(composer) {
composer.locale.value = _locale.value;
composer.fallbackLocale.value = _fallbackLocale.value;
Object.keys(_messages.value).forEach((locale2) => {
composer.mergeLocaleMessage(locale2, _messages.value[locale2]);
});
Object.keys(_datetimeFormats.value).forEach((locale2) => {
composer.mergeDateTimeFormat(locale2, _datetimeFormats.value[locale2]);
});
Object.keys(_numberFormats.value).forEach((locale2) => {
composer.mergeNumberFormat(locale2, _numberFormats.value[locale2]);
});
composer.escapeParameter = _escapeParameter;
composer.fallbackFormat = _fallbackFormat;
composer.fallbackRoot = _fallbackRoot;
composer.fallbackWarn = _fallbackWarn;
composer.missingWarn = _missingWarn;
composer.warnHtmlMessage = _warnHtmlMessage;
}
onBeforeMount(() => {
if (instance.proxy == null || instance.proxy.$i18n == null) {
throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);
}
const composer = _composer.value = instance.proxy.$i18n.__composer;
if (scope === "global") {
_locale.value = composer.locale.value;
_fallbackLocale.value = composer.fallbackLocale.value;
_messages.value = composer.messages.value;
_datetimeFormats.value = composer.datetimeFormats.value;
_numberFormats.value = composer.numberFormats.value;
} else if (isLocalScope) {
sync(composer);
}
});
return wrapper;
}
var globalExportProps = [
"locale",
"fallbackLocale",
"availableLocales"
];
var globalExportMethods = ["t", "rt", "d", "n", "tm", "te"];
function injectGlobalFields(app, composer) {
const i18n = /* @__PURE__ */ Object.create(null);
globalExportProps.forEach((prop) => {
const desc = Object.getOwnPropertyDescriptor(composer, prop);
if (!desc) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
}
const wrap = isRef(desc.value) ? {
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 || !desc.value) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
}
Object.defineProperty(app.config.globalProperties, `$${method}`, desc);
});
const dispose = () => {
delete app.config.globalProperties.$i18n;
globalExportMethods.forEach((method) => {
delete app.config.globalProperties[`$${method}`];
});
};
return dispose;
}
{
initFeatureFlags2();
}
if (__INTLIFY_JIT_COMPILATION__) {
registerMessageCompiler(compile);
} else {
registerMessageCompiler(compileToFunction);
}
registerMessageResolver(resolveValue);
registerLocaleFallbacker(fallbackWithLocaleChain);
if (true) {
const target = getGlobalThis();
target.__INTLIFY__ = true;
setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);
}
if (true)
;
export {
DatetimeFormat,
I18nD,
I18nInjectionKey,
I18nN,
I18nT,
NumberFormat,
Translation,
VERSION2 as VERSION,
castToVueI18n,
createI18n,
useI18n,
vTDirective
};
/*! Bundled license information:
@intlify/shared/dist/shared.mjs:
(*!
* shared v9.14.5
* (c) 2025 kazuya kawaguchi
* Released under the MIT License.
*)
@intlify/message-compiler/dist/message-compiler.esm-browser.js:
(*!
* message-compiler v9.14.5
* (c) 2025 kazuya kawaguchi
* Released under the MIT License.
*)
@intlify/core-base/dist/core-base.mjs:
(*!
* core-base v9.14.5
* (c) 2025 kazuya kawaguchi
* Released under the MIT License.
*)
vue-i18n/dist/vue-i18n.mjs:
(*!
* vue-i18n v9.14.5
* (c) 2025 kazuya kawaguchi
* Released under the MIT License.
*)
*/
//# sourceMappingURL=vue-i18n.js.map