PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/metro/src/shared/output/RamBundle

Просмотр файла: as-indexed-file.js

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true,
});
exports.buildTableAndContents = buildTableAndContents;
exports.createModuleGroups = createModuleGroups;
exports.save = save;
var _relativizeSourceMap = _interopRequireDefault(
  require("../../../lib/relativizeSourceMap"),
);
var _buildSourcemapWithMetadata = _interopRequireDefault(
  require("./buildSourcemapWithMetadata"),
);
var _magicNumber = _interopRequireDefault(require("./magic-number"));
var _util = require("./util");
var _writeSourcemap = _interopRequireDefault(require("./write-sourcemap"));
var _fs = _interopRequireDefault(require("fs"));
function _interopRequireDefault(e) {
  return e && e.__esModule ? e : { default: e };
}
const SIZEOF_UINT32 = 4;
function save(bundle, options, log) {
  const {
    bundleOutput,
    bundleEncoding: encoding,
    sourcemapOutput,
    sourcemapSourcesRoot,
  } = options;
  log("start");
  const { startupModules, lazyModules, groups } = bundle;
  log("finish");
  const moduleGroups = createModuleGroups(groups, lazyModules);
  const startupCode = (0, _util.joinModules)(startupModules);
  log("Writing unbundle output to:", bundleOutput);
  const writeUnbundle = writeBuffers(
    _fs.default.createWriteStream(bundleOutput),
    buildTableAndContents(startupCode, lazyModules, moduleGroups, encoding),
  ).then(() => log("Done writing unbundle output"));
  if (sourcemapOutput) {
    const sourceMap = (0, _buildSourcemapWithMetadata.default)({
      startupModules: startupModules.concat(),
      lazyModules: lazyModules.concat(),
      moduleGroups,
      fixWrapperOffset: true,
    });
    if (sourcemapSourcesRoot != null) {
      (0, _relativizeSourceMap.default)(sourceMap, sourcemapSourcesRoot);
    }
    const wroteSourceMap = (0, _writeSourcemap.default)(
      sourcemapOutput,
      JSON.stringify(sourceMap),
      log,
    );
    return Promise.all([writeUnbundle, wroteSourceMap]);
  } else {
    return writeUnbundle;
  }
}
const fileHeader = Buffer.alloc(4);
fileHeader.writeUInt32LE(_magicNumber.default, 0);
const nullByteBuffer = Buffer.alloc(1).fill(0);
function writeBuffers(stream, buffers) {
  buffers.forEach((buffer) => stream.write(buffer));
  return new Promise((resolve, reject) => {
    stream.on("error", reject);
    stream.on("finish", () => resolve());
    stream.end();
  });
}
function nullTerminatedBuffer(contents, encoding) {
  return Buffer.concat([Buffer.from(contents, encoding), nullByteBuffer]);
}
function moduleToBuffer(id, code, encoding) {
  return {
    id,
    buffer: nullTerminatedBuffer(code, encoding),
  };
}
function entryOffset(n) {
  return (2 + n * 2) * SIZEOF_UINT32;
}
function buildModuleTable(startupCode, moduleBuffers, moduleGroups) {
  const moduleIds = [...moduleGroups.modulesById.keys()];
  const maxId = moduleIds.reduce((max, id) => Math.max(max, id));
  const numEntries = maxId + 1;
  const table = Buffer.alloc(entryOffset(numEntries)).fill(0);
  table.writeUInt32LE(numEntries, 0);
  table.writeUInt32LE(startupCode.length, SIZEOF_UINT32);
  let codeOffset = startupCode.length;
  moduleBuffers.forEach(({ id, buffer }) => {
    const group = moduleGroups.groups.get(id);
    const idsInGroup = group ? [id].concat(Array.from(group)) : [id];
    idsInGroup.forEach((moduleId) => {
      const offset = entryOffset(moduleId);
      table.writeUInt32LE(codeOffset, offset);
      table.writeUInt32LE(buffer.length, offset + SIZEOF_UINT32);
    });
    codeOffset += buffer.length;
  });
  return table;
}
function groupCode(rootCode, moduleGroup, modulesById) {
  if (!moduleGroup || !moduleGroup.size) {
    return rootCode;
  }
  const code = [rootCode];
  for (const id of moduleGroup) {
    code.push(
      (
        modulesById.get(id) || {
          code: "",
        }
      ).code,
    );
  }
  return code.join("\n");
}
function buildModuleBuffers(modules, moduleGroups, encoding) {
  return modules
    .filter((m) => !moduleGroups.modulesInGroups.has(m.id))
    .map(({ id, code }) =>
      moduleToBuffer(
        id,
        groupCode(code, moduleGroups.groups.get(id), moduleGroups.modulesById),
        encoding,
      ),
    );
}
function buildTableAndContents(startupCode, modules, moduleGroups, encoding) {
  const startupCodeBuffer = nullTerminatedBuffer(startupCode, encoding);
  const moduleBuffers = buildModuleBuffers(modules, moduleGroups, encoding);
  const table = buildModuleTable(
    startupCodeBuffer,
    moduleBuffers,
    moduleGroups,
  );
  return [fileHeader, table, startupCodeBuffer].concat(
    moduleBuffers.map(({ buffer }) => buffer),
  );
}
function createModuleGroups(groups, modules) {
  return {
    groups,
    modulesById: new Map(modules.map((m) => [m.id, m])),
    modulesInGroups: new Set(concat(groups.values())),
  };
}
function* concat(iterators) {
  for (const it of iterators) {
    yield* it;
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!