chore: 添加 vue-i18n 依赖并更新 package.json
This commit is contained in:
304
node_modules/@intlify/shared/dist/shared.prod.cjs
generated
vendored
Normal file
304
node_modules/@intlify/shared/dist/shared.prod.cjs
generated
vendored
Normal file
@@ -0,0 +1,304 @@
|
||||
/*!
|
||||
* shared v9.14.5
|
||||
* (c) 2025 kazuya kawaguchi
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
function warn(msg, err) {
|
||||
if (typeof console !== 'undefined') {
|
||||
console.warn(`[intlify] ` + msg);
|
||||
/* istanbul ignore if */
|
||||
if (err) {
|
||||
console.warn(err.stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
const hasWarned = {};
|
||||
function warnOnce(msg) {
|
||||
if (!hasWarned[msg]) {
|
||||
hasWarned[msg] = true;
|
||||
warn(msg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Original Utilities
|
||||
* written by kazuya kawaguchi
|
||||
*/
|
||||
const inBrowser = typeof window !== 'undefined';
|
||||
let mark;
|
||||
let measure;
|
||||
const RE_ARGS = /\{([0-9a-zA-Z]+)\}/g;
|
||||
/* eslint-disable */
|
||||
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] : '';
|
||||
});
|
||||
}
|
||||
const makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);
|
||||
const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });
|
||||
const friendlyJSONstringify = (json) => JSON.stringify(json)
|
||||
.replace(/\u2028/g, '\\u2028')
|
||||
.replace(/\u2029/g, '\\u2029')
|
||||
.replace(/\u0027/g, '\\u0027');
|
||||
const isNumber = (val) => typeof val === 'number' && isFinite(val);
|
||||
const isDate = (val) => toTypeString(val) === '[object Date]';
|
||||
const isRegExp = (val) => toTypeString(val) === '[object RegExp]';
|
||||
const isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;
|
||||
const assign = Object.assign;
|
||||
const _create = Object.create;
|
||||
const create = (obj = null) => _create(obj);
|
||||
let _globalThis;
|
||||
const getGlobalThis = () => {
|
||||
// prettier-ignore
|
||||
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, '&') // escape `&` first to avoid double escaping
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
.replace(/\//g, '/') // escape `/` to prevent closing tags or JavaScript URLs
|
||||
.replace(/=/g, '='); // escape `=` to prevent attribute injection
|
||||
}
|
||||
function escapeAttributeValue(value) {
|
||||
return value
|
||||
.replace(/&(?![a-zA-Z0-9#]{2,6};)/g, '&') // escape unescaped `&`
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
function sanitizeTranslatedHtml(html) {
|
||||
// Escape dangerous characters in attribute values
|
||||
// Process attributes with double quotes
|
||||
html = html.replace(/(\w+)\s*=\s*"([^"]*)"/g, (_, attrName, attrValue) => `${attrName}="${escapeAttributeValue(attrValue)}"`);
|
||||
// Process attributes with single quotes
|
||||
html = html.replace(/(\w+)\s*=\s*'([^']*)'/g, (_, attrName, attrValue) => `${attrName}='${escapeAttributeValue(attrValue)}'`);
|
||||
// Detect and neutralize event handler attributes
|
||||
const eventHandlerPattern = /\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi;
|
||||
if (eventHandlerPattern.test(html)) {
|
||||
// Neutralize event handler attributes by escaping 'on'
|
||||
html = html.replace(/(\s+)(on)(\w+\s*=)/gi, '$1on$3');
|
||||
}
|
||||
// Disable javascript: URLs in various contexts
|
||||
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;
|
||||
}
|
||||
const hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
function hasOwn(obj, key) {
|
||||
return hasOwnProperty.call(obj, key);
|
||||
}
|
||||
/* eslint-enable */
|
||||
/**
|
||||
* Useful Utilities By Evan you
|
||||
* Modified by kazuya kawaguchi
|
||||
* MIT License
|
||||
* https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts
|
||||
* https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts
|
||||
*/
|
||||
const isArray = Array.isArray;
|
||||
const isFunction = (val) => typeof val === 'function';
|
||||
const isString = (val) => typeof val === 'string';
|
||||
const isBoolean = (val) => typeof val === 'boolean';
|
||||
const isSymbol = (val) => typeof val === 'symbol';
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const isObject = (val) => val !== null && typeof val === 'object';
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const isPromise = (val) => {
|
||||
return isObject(val) && isFunction(val.then) && isFunction(val.catch);
|
||||
};
|
||||
const objectToString = Object.prototype.toString;
|
||||
const toTypeString = (value) => objectToString.call(value);
|
||||
const isPlainObject = (val) => {
|
||||
if (!isObject(val))
|
||||
return false;
|
||||
const proto = Object.getPrototypeOf(val);
|
||||
return proto === null || proto.constructor === Object;
|
||||
};
|
||||
// for converting list and named values to displayed strings.
|
||||
const 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), '');
|
||||
}
|
||||
const 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) {
|
||||
// push underline
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event emitter, forked from the below:
|
||||
* - original repository url: https://github.com/developit/mitt
|
||||
* - code url: https://github.com/developit/mitt/blob/master/src/index.ts
|
||||
* - author: Jason Miller (https://github.com/developit)
|
||||
* - license: MIT
|
||||
*/
|
||||
/**
|
||||
* Create a event emitter
|
||||
*
|
||||
* @returns An event emitter
|
||||
*/
|
||||
function createEmitter() {
|
||||
const events = new Map();
|
||||
const emitter = {
|
||||
events,
|
||||
on(event, handler) {
|
||||
const handlers = events.get(event);
|
||||
const added = handlers && handlers.push(handler);
|
||||
if (!added) {
|
||||
events.set(event, [handler]);
|
||||
}
|
||||
},
|
||||
off(event, handler) {
|
||||
const handlers = events.get(event);
|
||||
if (handlers) {
|
||||
handlers.splice(handlers.indexOf(handler) >>> 0, 1);
|
||||
}
|
||||
},
|
||||
emit(event, payload) {
|
||||
(events.get(event) || [])
|
||||
.slice()
|
||||
.map(handler => handler(payload));
|
||||
(events.get('*') || [])
|
||||
.slice()
|
||||
.map(handler => handler(event, payload));
|
||||
}
|
||||
};
|
||||
return emitter;
|
||||
}
|
||||
|
||||
const isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
||||
function deepCopy(src, des) {
|
||||
// src and des should both be objects, and none of them can be a array
|
||||
if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {
|
||||
throw new Error('Invalid value');
|
||||
}
|
||||
const stack = [{ src, des }];
|
||||
while (stack.length) {
|
||||
const { src, des } = stack.pop();
|
||||
// using `Object.keys` which skips prototype properties
|
||||
Object.keys(src).forEach(key => {
|
||||
if (key === '__proto__') {
|
||||
return;
|
||||
}
|
||||
// if src[key] is an object/array, set des[key]
|
||||
// to empty object/array to prevent setting by reference
|
||||
if (isObject(src[key]) && !isObject(des[key])) {
|
||||
des[key] = Array.isArray(src[key]) ? [] : create();
|
||||
}
|
||||
if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {
|
||||
// replace with src[key] when:
|
||||
// src[key] or des[key] is not an object, or
|
||||
// src[key] or des[key] is an array
|
||||
des[key] = src[key];
|
||||
}
|
||||
else {
|
||||
// src[key] and des[key] are both objects, merge them
|
||||
stack.push({ src: src[key], des: des[key] });
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
exports.assign = assign;
|
||||
exports.create = create;
|
||||
exports.createEmitter = createEmitter;
|
||||
exports.deepCopy = deepCopy;
|
||||
exports.escapeHtml = escapeHtml;
|
||||
exports.format = format;
|
||||
exports.friendlyJSONstringify = friendlyJSONstringify;
|
||||
exports.generateCodeFrame = generateCodeFrame;
|
||||
exports.generateFormatCacheKey = generateFormatCacheKey;
|
||||
exports.getGlobalThis = getGlobalThis;
|
||||
exports.hasOwn = hasOwn;
|
||||
exports.inBrowser = inBrowser;
|
||||
exports.incrementer = incrementer;
|
||||
exports.isArray = isArray;
|
||||
exports.isBoolean = isBoolean;
|
||||
exports.isDate = isDate;
|
||||
exports.isEmptyObject = isEmptyObject;
|
||||
exports.isFunction = isFunction;
|
||||
exports.isNumber = isNumber;
|
||||
exports.isObject = isObject;
|
||||
exports.isPlainObject = isPlainObject;
|
||||
exports.isPromise = isPromise;
|
||||
exports.isRegExp = isRegExp;
|
||||
exports.isString = isString;
|
||||
exports.isSymbol = isSymbol;
|
||||
exports.join = join;
|
||||
exports.makeSymbol = makeSymbol;
|
||||
exports.mark = mark;
|
||||
exports.measure = measure;
|
||||
exports.objectToString = objectToString;
|
||||
exports.sanitizeTranslatedHtml = sanitizeTranslatedHtml;
|
||||
exports.toDisplayString = toDisplayString;
|
||||
exports.toTypeString = toTypeString;
|
||||
exports.warn = warn;
|
||||
exports.warnOnce = warnOnce;
|
||||
Reference in New Issue
Block a user