WXL
3 天以前 9bce51f651aad297ef9eb6df832bfdaf1de05d84
node_modules/webpack/lib/runtime/ToBinaryRuntimeModule.js
@@ -17,6 +17,7 @@
   }
   /**
    * Generates runtime code for this runtime module.
    * @returns {string | null} runtime code
    */
   generate() {
@@ -29,30 +30,38 @@
      const isNodePlatform = compilation.compiler.platform.node;
      const isWebPlatform = compilation.compiler.platform.web;
      const isNeutralPlatform = runtimeTemplate.isNeutralPlatform();
      const toImmutableBytes = runtimeTemplate.basicFunction("value", [
         runtimeTemplate.destructureObject(["buffer"], "value"),
         `${runtimeTemplate.renderConst()} throwErr = ${runtimeTemplate.basicFunction("", ["throw new TypeError('ArrayBuffer is immutable');"])};`,
         "Object.defineProperties(buffer, { immutable: { value: true },  resize: { value: throwErr }, transfer: { value: throwErr }, transferToFixedLength: { value: throwErr } });",
         "Object.freeze(buffer);",
         "return value;"
      ]);
      return Template.asString([
         "// define to binary helper",
         `${runtimeTemplate.renderConst()} toImmutableBytes = ${toImmutableBytes}`,
         `${fn} = ${isNeutralPlatform ? "typeof Buffer !== 'undefined' ? " : ""}${
            isNodePlatform || isNeutralPlatform
               ? `${runtimeTemplate.returningFunction("new Uint8Array(Buffer.from(base64, 'base64'))", "base64")}`
               ? `${runtimeTemplate.returningFunction("toImmutableBytes(new Uint8Array(Buffer.from(base64, 'base64')))", "base64")}`
               : ""
         } ${isNeutralPlatform ? ": " : ""}${
            isWebPlatform || isNeutralPlatform
               ? `(${runtimeTemplate.basicFunction("", [
                     "var table = new Uint8Array(128);",
                     `${runtimeTemplate.renderConst()} table = new Uint8Array(128);`,
                     "for (var i = 0; i < 64; i++) table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;",
                     `return ${runtimeTemplate.basicFunction("base64", [
                        "var n = base64.length, bytes = new Uint8Array((n - (base64[n - 1] == '=') - (base64[n - 2] == '=')) * 3 / 4 | 0);",
                        `${runtimeTemplate.renderConst()} n = base64.length, bytes = new Uint8Array((n - (base64[n - 1] == '=') - (base64[n - 2] == '=')) * 3 / 4 | 0);`,
                        "for (var i = 0, j = 0; i < n;) {",
                        Template.indent([
                           "var c0 = table[base64.charCodeAt(i++)], c1 = table[base64.charCodeAt(i++)];",
                           "var c2 = table[base64.charCodeAt(i++)], c3 = table[base64.charCodeAt(i++)];",
                           `${runtimeTemplate.renderConst()} c0 = table[base64.charCodeAt(i++)], c1 = table[base64.charCodeAt(i++)];`,
                           `${runtimeTemplate.renderConst()} c2 = table[base64.charCodeAt(i++)], c3 = table[base64.charCodeAt(i++)];`,
                           "bytes[j++] = (c0 << 2) | (c1 >> 4);",
                           "bytes[j++] = (c1 << 4) | (c2 >> 2);",
                           "bytes[j++] = (c2 << 6) | c3;"
                        ]),
                        "}",
                        "return bytes"
                        "return toImmutableBytes(bytes)"
                     ])}`
                  ])})();`
               : ""