WXL
4 天以前 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1
node_modules/vue-i18n/dist/vue-i18n.global.js
@@ -1,27 +1,10 @@
/*!
  * vue-i18n v9.14.5
  * vue-i18n v9.14.4
  * (c) 2025 kazuya kawaguchi
  * Released under the MIT License.
  */
var VueI18n = (function (exports, vue) {
  '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
@@ -91,49 +74,10 @@
  };
  function escapeHtml(rawText) {
      return rawText
          .replace(/&/g, '&') // escape `&` first to avoid double escaping
          .replace(/</g, '&lt;')
          .replace(/>/g, '&gt;')
          .replace(/"/g, '&quot;')
          .replace(/'/g, '&apos;')
          .replace(/\//g, '&#x2F;') // escape `/` to prevent closing tags or JavaScript URLs
          .replace(/=/g, '&#x3D;'); // escape `=` to prevent attribute injection
  }
  function escapeAttributeValue(value) {
      return value
          .replace(/&(?![a-zA-Z0-9#]{2,6};)/g, '&amp;') // escape unescaped `&`
          .replace(/"/g, '&quot;')
          .replace(/'/g, '&apos;')
          .replace(/</g, '&lt;')
          .replace(/>/g, '&gt;');
  }
  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)) {
          {
              warn('Potentially dangerous event handlers detected in translation. ' +
                  'Consider removing onclick, onerror, etc. from your translation messages.');
          }
          // Neutralize event handler attributes by escaping 'on'
          html = html.replace(/(\s+)(on)(\w+\s*=)/gi, '$1&#111;n$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&#58;');
      });
      return html;
          .replace(/'/g, '&apos;');
  }
  const hasOwnProperty = Object.prototype.hasOwnProperty;
  function hasOwn(obj, key) {
@@ -212,6 +156,23 @@
  function incrementer(code) {
      let current = code;
      return () => ++current;
  }
  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);
      }
  }
  /**
@@ -2586,7 +2547,7 @@
   * Intlify core-base version
   * @internal
   */
  const VERSION$1 = '9.14.5';
  const VERSION$1 = '9.14.4';
  const NOT_REOSLVED = -1;
  const DEFAULT_LOCALE = 'en-US';
  const MISSING_RESOLVE_VALUE = '';
@@ -3081,13 +3042,9 @@
      const msgContext = createMessageContext(ctxOptions);
      const messaged = evaluateMessage(context, msg, msgContext);
      // if use post translation option, proceed it with handler
      let ret = postTranslation
      const ret = postTranslation
          ? postTranslation(messaged, key)
          : messaged;
      // apply HTML sanitization for security
      if (escapeParameter && isString(ret)) {
          ret = sanitizeTranslatedHtml(ret);
      }
      // NOTE: experimental !!
      {
          // prettier-ignore
@@ -3739,7 +3696,7 @@
   *
   * @VueI18nGeneral
   */
  const VERSION = '9.14.5';
  const VERSION = '9.14.4';
  /**
   * This is only called development env
   * istanbul-ignore-next