244 lines
7.8 KiB
JavaScript
244 lines
7.8 KiB
JavaScript
// 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 perf = inBrowser && window.performance;
|
|
if (perf && perf.mark && perf.measure && perf.clearMarks && // @ts-ignore browser compat
|
|
perf.clearMeasures) {
|
|
mark = (tag) => {
|
|
perf.mark(tag);
|
|
};
|
|
measure = (name, startTag, endTag) => {
|
|
perf.measure(name, startTag, endTag);
|
|
perf.clearMarks(startTag);
|
|
perf.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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\//g, "/").replace(/=/g, "=");
|
|
}
|
|
function escapeAttributeValue(value) {
|
|
return value.replace(/&(?![a-zA-Z0-9#]{2,6};)/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">");
|
|
}
|
|
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, "$1on$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:");
|
|
});
|
|
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 isSymbol = (val) => typeof val === "symbol";
|
|
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(code) {
|
|
let current = code;
|
|
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] });
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
export {
|
|
warn,
|
|
warnOnce,
|
|
inBrowser,
|
|
mark,
|
|
measure,
|
|
format,
|
|
makeSymbol,
|
|
generateFormatCacheKey,
|
|
friendlyJSONstringify,
|
|
isNumber,
|
|
isDate,
|
|
isRegExp,
|
|
isEmptyObject,
|
|
assign,
|
|
create,
|
|
getGlobalThis,
|
|
escapeHtml,
|
|
sanitizeTranslatedHtml,
|
|
hasOwn,
|
|
isArray,
|
|
isFunction,
|
|
isString,
|
|
isBoolean,
|
|
isSymbol,
|
|
isObject,
|
|
isPromise,
|
|
objectToString,
|
|
toTypeString,
|
|
isPlainObject,
|
|
toDisplayString,
|
|
join,
|
|
generateCodeFrame,
|
|
incrementer,
|
|
createEmitter,
|
|
deepCopy
|
|
};
|
|
/*! Bundled license information:
|
|
|
|
@intlify/shared/dist/shared.mjs:
|
|
(*!
|
|
* shared v9.14.5
|
|
* (c) 2025 kazuya kawaguchi
|
|
* Released under the MIT License.
|
|
*)
|
|
*/
|
|
//# sourceMappingURL=chunk-2442ZW7J.js.map
|