forked from sheetjs/sheetjs
		
	
		
			
				
	
	
		
			548 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			548 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var __defProp = Object.defineProperty;
 | 
						|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
 | 
						|
var __getOwnPropNames = Object.getOwnPropertyNames;
 | 
						|
var __hasOwnProp = Object.prototype.hasOwnProperty;
 | 
						|
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
 | 
						|
var __export = (target, all) => {
 | 
						|
  for (var name in all)
 | 
						|
    __defProp(target, name, { get: all[name], enumerable: true });
 | 
						|
};
 | 
						|
var __reExport = (target, module2, copyDefault, desc) => {
 | 
						|
  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
 | 
						|
    for (let key of __getOwnPropNames(module2))
 | 
						|
      if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
 | 
						|
        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
 | 
						|
  }
 | 
						|
  return target;
 | 
						|
};
 | 
						|
var __toCommonJS = /* @__PURE__ */ ((cache) => {
 | 
						|
  return (module2, temp) => {
 | 
						|
    return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
 | 
						|
  };
 | 
						|
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
 | 
						|
 | 
						|
// index.node.ts
 | 
						|
var index_node_exports = {};
 | 
						|
__export(index_node_exports, {
 | 
						|
  otorp: () => otorp_default
 | 
						|
});
 | 
						|
 | 
						|
// ../../modules/src/util.ts
 | 
						|
var u8_to_dataview = (array) => new DataView(array.buffer, array.byteOffset, array.byteLength);
 | 
						|
var u8str = (u8) => new TextDecoder().decode(u8);
 | 
						|
var indent = (str, depth) => str.split(/\n/g).map((x) => x && "  ".repeat(depth) + x).join("\n");
 | 
						|
function u8indexOf(u8, data, byteOffset) {
 | 
						|
  if (typeof data == "number")
 | 
						|
    return u8.indexOf(data, byteOffset);
 | 
						|
  var l = byteOffset;
 | 
						|
  if (typeof data == "string") {
 | 
						|
    outs:
 | 
						|
      while ((l = u8.indexOf(data.charCodeAt(0), l)) > -1) {
 | 
						|
        ++l;
 | 
						|
        for (var j = 1; j < data.length; ++j)
 | 
						|
          if (u8[l + j - 1] != data.charCodeAt(j))
 | 
						|
            continue outs;
 | 
						|
        return l - 1;
 | 
						|
      }
 | 
						|
  } else {
 | 
						|
    outb:
 | 
						|
      while ((l = u8.indexOf(data[0], l)) > -1) {
 | 
						|
        ++l;
 | 
						|
        for (var j = 1; j < data.length; ++j)
 | 
						|
          if (u8[l + j - 1] != data[j])
 | 
						|
            continue outb;
 | 
						|
        return l - 1;
 | 
						|
      }
 | 
						|
  }
 | 
						|
  return -1;
 | 
						|
}
 | 
						|
 | 
						|
// src/macho.ts
 | 
						|
var parse_fat = (buf) => {
 | 
						|
  var dv = u8_to_dataview(buf);
 | 
						|
  if (dv.getUint32(0, false) !== 3405691582)
 | 
						|
    throw new Error("Unsupported file");
 | 
						|
  var nfat_arch = dv.getUint32(4, false);
 | 
						|
  var out = [];
 | 
						|
  for (var i = 0; i < nfat_arch; ++i) {
 | 
						|
    var start = i * 20 + 8;
 | 
						|
    var cputype = dv.getUint32(start, false);
 | 
						|
    var cpusubtype = dv.getUint32(start + 4, false);
 | 
						|
    var offset = dv.getUint32(start + 8, false);
 | 
						|
    var size = dv.getUint32(start + 12, false);
 | 
						|
    var align = dv.getUint32(start + 16, false);
 | 
						|
    out.push({
 | 
						|
      type: cputype,
 | 
						|
      subtype: cpusubtype,
 | 
						|
      offset,
 | 
						|
      size,
 | 
						|
      align,
 | 
						|
      data: buf.slice(offset, offset + size)
 | 
						|
    });
 | 
						|
  }
 | 
						|
  return out;
 | 
						|
};
 | 
						|
var parse_macho = (buf) => {
 | 
						|
  var dv = u8_to_dataview(buf);
 | 
						|
  var magic = dv.getUint32(0, false);
 | 
						|
  switch (magic) {
 | 
						|
    case 3405691582:
 | 
						|
      return parse_fat(buf);
 | 
						|
    case 3489328638:
 | 
						|
      return [{
 | 
						|
        type: dv.getUint32(4, false),
 | 
						|
        subtype: dv.getUint32(8, false),
 | 
						|
        offset: 0,
 | 
						|
        size: buf.length,
 | 
						|
        data: buf
 | 
						|
      }];
 | 
						|
  }
 | 
						|
  throw new Error("Unsupported file");
 | 
						|
};
 | 
						|
 | 
						|
// ../../modules/src/proto.ts
 | 
						|
function parse_varint49(buf, ptr) {
 | 
						|
  var l = ptr ? ptr[0] : 0;
 | 
						|
  var usz = buf[l] & 127;
 | 
						|
  varint:
 | 
						|
    if (buf[l++] >= 128) {
 | 
						|
      usz |= (buf[l] & 127) << 7;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      usz |= (buf[l] & 127) << 14;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      usz |= (buf[l] & 127) << 21;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      usz += (buf[l] & 127) * Math.pow(2, 28);
 | 
						|
      ++l;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      usz += (buf[l] & 127) * Math.pow(2, 35);
 | 
						|
      ++l;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      usz += (buf[l] & 127) * Math.pow(2, 42);
 | 
						|
      ++l;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
    }
 | 
						|
  if (ptr)
 | 
						|
    ptr[0] = l;
 | 
						|
  return usz;
 | 
						|
}
 | 
						|
function varint_to_i32(buf) {
 | 
						|
  var l = 0, i32 = buf[l] & 127;
 | 
						|
  varint:
 | 
						|
    if (buf[l++] >= 128) {
 | 
						|
      i32 |= (buf[l] & 127) << 7;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      i32 |= (buf[l] & 127) << 14;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      i32 |= (buf[l] & 127) << 21;
 | 
						|
      if (buf[l++] < 128)
 | 
						|
        break varint;
 | 
						|
      i32 |= (buf[l] & 127) << 28;
 | 
						|
    }
 | 
						|
  return i32;
 | 
						|
}
 | 
						|
function parse_shallow(buf) {
 | 
						|
  var out = [], ptr = [0];
 | 
						|
  while (ptr[0] < buf.length) {
 | 
						|
    var off = ptr[0];
 | 
						|
    var num = parse_varint49(buf, ptr);
 | 
						|
    var type = num & 7;
 | 
						|
    num = Math.floor(num / 8);
 | 
						|
    var len = 0;
 | 
						|
    var res;
 | 
						|
    if (num == 0)
 | 
						|
      break;
 | 
						|
    switch (type) {
 | 
						|
      case 0:
 | 
						|
        {
 | 
						|
          var l = ptr[0];
 | 
						|
          while (buf[ptr[0]++] >= 128)
 | 
						|
            ;
 | 
						|
          res = buf.slice(l, ptr[0]);
 | 
						|
        }
 | 
						|
        break;
 | 
						|
      case 5:
 | 
						|
        len = 4;
 | 
						|
        res = buf.slice(ptr[0], ptr[0] + len);
 | 
						|
        ptr[0] += len;
 | 
						|
        break;
 | 
						|
      case 1:
 | 
						|
        len = 8;
 | 
						|
        res = buf.slice(ptr[0], ptr[0] + len);
 | 
						|
        ptr[0] += len;
 | 
						|
        break;
 | 
						|
      case 2:
 | 
						|
        len = parse_varint49(buf, ptr);
 | 
						|
        res = buf.slice(ptr[0], ptr[0] + len);
 | 
						|
        ptr[0] += len;
 | 
						|
        break;
 | 
						|
      case 3:
 | 
						|
      case 4:
 | 
						|
      default:
 | 
						|
        throw new Error(`PB Type ${type} for Field ${num} at offset ${off}`);
 | 
						|
    }
 | 
						|
    var v = { offset: off, data: res };
 | 
						|
    if (out[num] == null)
 | 
						|
      out[num] = [v];
 | 
						|
    else
 | 
						|
      out[num].push(v);
 | 
						|
  }
 | 
						|
  return out;
 | 
						|
}
 | 
						|
function mappa(data, cb) {
 | 
						|
  if (!data)
 | 
						|
    return [];
 | 
						|
  return data.map((d) => {
 | 
						|
    try {
 | 
						|
      return cb(d.data);
 | 
						|
    } catch (e) {
 | 
						|
      var m = e.message?.match(/at offset (\d+)/);
 | 
						|
      if (m)
 | 
						|
        e.message = e.message.replace(/at offset (\d+)/, "at offset " + (+m[1] + d.offset));
 | 
						|
      throw e;
 | 
						|
    }
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
// src/descriptor.ts
 | 
						|
var TYPES = [
 | 
						|
  "error",
 | 
						|
  "double",
 | 
						|
  "float",
 | 
						|
  "int64",
 | 
						|
  "uint64",
 | 
						|
  "int32",
 | 
						|
  "fixed64",
 | 
						|
  "fixed32",
 | 
						|
  "bool",
 | 
						|
  "string",
 | 
						|
  "group",
 | 
						|
  "message",
 | 
						|
  "bytes",
 | 
						|
  "uint32",
 | 
						|
  "enum",
 | 
						|
  "sfixed32",
 | 
						|
  "sfixed64",
 | 
						|
  "sint32",
 | 
						|
  "sint64"
 | 
						|
];
 | 
						|
function parse_FileOptions(buf) {
 | 
						|
  var data = parse_shallow(buf);
 | 
						|
  var out = {};
 | 
						|
  if (data[1]?.[0])
 | 
						|
    out.javaPackage = u8str(data[1][0].data);
 | 
						|
  if (data[8]?.[0])
 | 
						|
    out.javaOuterClassname = u8str(data[8][0].data);
 | 
						|
  if (data[11]?.[0])
 | 
						|
    out.goPackage = u8str(data[11][0].data);
 | 
						|
  return out;
 | 
						|
}
 | 
						|
function parse_EnumValue(buf) {
 | 
						|
  var data = parse_shallow(buf);
 | 
						|
  var out = {};
 | 
						|
  if (data[1]?.[0])
 | 
						|
    out.name = u8str(data[1][0].data);
 | 
						|
  if (data[2]?.[0])
 | 
						|
    out.number = varint_to_i32(data[2][0].data);
 | 
						|
  return out;
 | 
						|
}
 | 
						|
function parse_Enum(buf) {
 | 
						|
  var data = parse_shallow(buf);
 | 
						|
  var out = {};
 | 
						|
  if (data[1]?.[0])
 | 
						|
    out.name = u8str(data[1][0].data);
 | 
						|
  out.value = mappa(data[2], parse_EnumValue);
 | 
						|
  return out;
 | 
						|
}
 | 
						|
var write_Enum = (en) => {
 | 
						|
  var out = [`enum ${en.name} {`];
 | 
						|
  en.value?.forEach(({ name, number }) => out.push(`  ${name} = ${number};`));
 | 
						|
  return out.concat(`}`).join("\n");
 | 
						|
};
 | 
						|
function parse_FieldOptions(buf) {
 | 
						|
  var data = parse_shallow(buf);
 | 
						|
  var out = {};
 | 
						|
  if (data[2]?.[0])
 | 
						|
    out.packed = !!data[2][0].data;
 | 
						|
  if (data[3]?.[0])
 | 
						|
    out.deprecated = !!data[3][0].data;
 | 
						|
  return out;
 | 
						|
}
 | 
						|
function parse_Field(buf) {
 | 
						|
  var data = parse_shallow(buf);
 | 
						|
  var out = {};
 | 
						|
  if (data[1]?.[0])
 | 
						|
    out.name = u8str(data[1][0].data);
 | 
						|
  if (data[2]?.[0])
 | 
						|
    out.extendee = u8str(data[2][0].data);
 | 
						|
  if (data[3]?.[0])
 | 
						|
    out.number = varint_to_i32(data[3][0].data);
 | 
						|
  if (data[4]?.[0])
 | 
						|
    out.label = varint_to_i32(data[4][0].data);
 | 
						|
  if (data[5]?.[0])
 | 
						|
    out.type = varint_to_i32(data[5][0].data);
 | 
						|
  if (data[6]?.[0])
 | 
						|
    out.typeName = u8str(data[6][0].data);
 | 
						|
  if (data[7]?.[0])
 | 
						|
    out.defaultValue = u8str(data[7][0].data);
 | 
						|
  if (data[8]?.[0])
 | 
						|
    out.options = parse_FieldOptions(data[8][0].data);
 | 
						|
  return out;
 | 
						|
}
 | 
						|
function write_Field(field) {
 | 
						|
  var out = [];
 | 
						|
  var label = ["", "optional ", "required ", "repeated "][field.label] || "";
 | 
						|
  var type = field.typeName || TYPES[field.type] || "s5s";
 | 
						|
  var opts = [];
 | 
						|
  if (field.defaultValue)
 | 
						|
    opts.push(`default = ${field.defaultValue}`);
 | 
						|
  if (field.options?.packed)
 | 
						|
    opts.push(`packed = true`);
 | 
						|
  if (field.options?.deprecated)
 | 
						|
    opts.push(`deprecated = true`);
 | 
						|
  var os = opts.length ? ` [${opts.join(", ")}]` : "";
 | 
						|
  out.push(`${label}${type} ${field.name} = ${field.number}${os};`);
 | 
						|
  return out.length ? indent(out.join("\n"), 1) : "";
 | 
						|
}
 | 
						|
function write_extensions(ext, xtra = false, coalesce = true) {
 | 
						|
  var res = [];
 | 
						|
  var xt = [];
 | 
						|
  ext.forEach((ext2) => {
 | 
						|
    if (!ext2.extendee)
 | 
						|
      return;
 | 
						|
    var row = coalesce ? xt.find((x) => x[0] == ext2.extendee) : xt[xt.length - 1]?.[0] == ext2.extendee ? xt[xt.length - 1] : null;
 | 
						|
    if (row)
 | 
						|
      row[1].push(ext2);
 | 
						|
    else
 | 
						|
      xt.push([ext2.extendee, [ext2]]);
 | 
						|
  });
 | 
						|
  xt.forEach((extrow) => {
 | 
						|
    var out = [`extend ${extrow[0]} {`];
 | 
						|
    extrow[1].forEach((ext2) => out.push(write_Field(ext2)));
 | 
						|
    res.push(out.concat(`}`).join("\n") + (xtra ? "\n" : ""));
 | 
						|
  });
 | 
						|
  return res.join("\n");
 | 
						|
}
 | 
						|
function parse_mtype(buf) {
 | 
						|
  var data = parse_shallow(buf);
 | 
						|
  var out = {};
 | 
						|
  if (data[1]?.[0])
 | 
						|
    out.name = u8str(data[1][0].data);
 | 
						|
  if (data[2]?.length >= 1)
 | 
						|
    out.field = mappa(data[2], parse_Field);
 | 
						|
  if (data[3]?.length >= 1)
 | 
						|
    out.nestedType = mappa(data[3], parse_mtype);
 | 
						|
  if (data[4]?.length >= 1)
 | 
						|
    out.enumType = mappa(data[4], parse_Enum);
 | 
						|
  if (data[6]?.length >= 1)
 | 
						|
    out.extension = mappa(data[6], parse_Field);
 | 
						|
  if (data[5]?.length >= 1)
 | 
						|
    out.extensionRange = data[5].map((d) => {
 | 
						|
      var data2 = parse_shallow(d.data);
 | 
						|
      var out2 = {};
 | 
						|
      if (data2[1]?.[0])
 | 
						|
        out2.start = varint_to_i32(data2[1][0].data);
 | 
						|
      if (data2[2]?.[0])
 | 
						|
        out2.end = varint_to_i32(data2[2][0].data);
 | 
						|
      return out2;
 | 
						|
    });
 | 
						|
  return out;
 | 
						|
}
 | 
						|
var write_mtype = (message) => {
 | 
						|
  var out = [`message ${message.name} {`];
 | 
						|
  message.nestedType?.forEach((m) => out.push(indent(write_mtype(m), 1)));
 | 
						|
  message.enumType?.forEach((en) => out.push(indent(write_Enum(en), 1)));
 | 
						|
  message.field?.forEach((field) => out.push(write_Field(field)));
 | 
						|
  if (message.extensionRange)
 | 
						|
    message.extensionRange.forEach((er) => out.push(`  extensions ${er.start} to ${er.end - 1};`));
 | 
						|
  if (message.extension?.length)
 | 
						|
    out.push(indent(write_extensions(message.extension), 1));
 | 
						|
  return out.concat(`}`).join("\n");
 | 
						|
};
 | 
						|
function parse_FileDescriptor(buf) {
 | 
						|
  var data = parse_shallow(buf);
 | 
						|
  var out = {};
 | 
						|
  if (data[1]?.[0])
 | 
						|
    out.name = u8str(data[1][0].data);
 | 
						|
  if (data[2]?.[0])
 | 
						|
    out.package = u8str(data[2][0].data);
 | 
						|
  if (data[3]?.[0])
 | 
						|
    out.dependency = data[3].map((x) => u8str(x.data));
 | 
						|
  if (data[4]?.length >= 1)
 | 
						|
    out.messageType = mappa(data[4], parse_mtype);
 | 
						|
  if (data[5]?.length >= 1)
 | 
						|
    out.enumType = mappa(data[5], parse_Enum);
 | 
						|
  if (data[7]?.length >= 1)
 | 
						|
    out.extension = mappa(data[7], parse_Field);
 | 
						|
  if (data[8]?.[0])
 | 
						|
    out.options = parse_FileOptions(data[8][0].data);
 | 
						|
  return out;
 | 
						|
}
 | 
						|
var write_FileDescriptor = (pb) => {
 | 
						|
  var out = [
 | 
						|
    'syntax = "proto2";',
 | 
						|
    ""
 | 
						|
  ];
 | 
						|
  if (pb.dependency)
 | 
						|
    pb.dependency.forEach((n) => {
 | 
						|
      if (n)
 | 
						|
        out.push(`import "${n}";`);
 | 
						|
    });
 | 
						|
  if (pb.package)
 | 
						|
    out.push(`package ${pb.package};
 | 
						|
`);
 | 
						|
  if (pb.options) {
 | 
						|
    var o = out.length;
 | 
						|
    if (pb.options.javaPackage)
 | 
						|
      out.push(`option java_package = "${pb.options.javaPackage}";`);
 | 
						|
    if (pb.options.javaOuterClassname?.replace(/\W/g, ""))
 | 
						|
      out.push(`option java_outer_classname = "${pb.options.javaOuterClassname}";`);
 | 
						|
    if (pb.options.javaMultipleFiles)
 | 
						|
      out.push(`option java_multiple_files = true;`);
 | 
						|
    if (pb.options.goPackage)
 | 
						|
      out.push(`option go_package = "${pb.options.goPackage}";`);
 | 
						|
    if (out.length > o)
 | 
						|
      out.push("");
 | 
						|
  }
 | 
						|
  pb.enumType?.forEach((en) => {
 | 
						|
    if (en.name)
 | 
						|
      out.push(write_Enum(en) + "\n");
 | 
						|
  });
 | 
						|
  pb.messageType?.forEach((m) => {
 | 
						|
    if (m.name) {
 | 
						|
      var o2 = write_mtype(m);
 | 
						|
      if (o2)
 | 
						|
        out.push(o2 + "\n");
 | 
						|
    }
 | 
						|
  });
 | 
						|
  if (pb.extension?.length) {
 | 
						|
    var e = write_extensions(pb.extension, true, false);
 | 
						|
    if (e)
 | 
						|
      out.push(e);
 | 
						|
  }
 | 
						|
  return out.join("\n") + "\n";
 | 
						|
};
 | 
						|
 | 
						|
// src/otorp.ts
 | 
						|
function otorp(buf, builtins = false) {
 | 
						|
  var res = proto_offsets(buf);
 | 
						|
  var registry = {};
 | 
						|
  var names = /* @__PURE__ */ new Set();
 | 
						|
  var out = [];
 | 
						|
  res.forEach((r, i) => {
 | 
						|
    if (!builtins && r[1].startsWith("google/protobuf/"))
 | 
						|
      return;
 | 
						|
    var b = buf.slice(r[0], i < res.length - 1 ? res[i + 1][0] : buf.length);
 | 
						|
    var pb = parse_FileDescriptorProto(b);
 | 
						|
    names.add(r[1]);
 | 
						|
    registry[r[1]] = pb;
 | 
						|
  });
 | 
						|
  names.forEach((name) => {
 | 
						|
    names.delete(name);
 | 
						|
    var pb = registry[name];
 | 
						|
    var doit = (pb.dependency || []).every((d) => !names.has(d));
 | 
						|
    if (!doit) {
 | 
						|
      names.add(name);
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    var dups = res.filter((r) => r[1] == name);
 | 
						|
    if (dups.length == 1)
 | 
						|
      return out.push({ name, proto: write_FileDescriptor(pb) });
 | 
						|
    var pbs = dups.map((r) => {
 | 
						|
      var i = res.indexOf(r);
 | 
						|
      var b = buf.slice(r[0], i < res.length - 1 ? res[i + 1][0] : buf.length);
 | 
						|
      var pb2 = parse_FileDescriptorProto(b);
 | 
						|
      return write_FileDescriptor(pb2);
 | 
						|
    });
 | 
						|
    for (var l = 1; l < pbs.length; ++l)
 | 
						|
      if (pbs[l] != pbs[0])
 | 
						|
        throw new Error(`Conflicting definitions for ${name} at offsets 0x${dups[0][0].toString(16)} and 0x${dups[l][0].toString(16)}`);
 | 
						|
    return out.push({ name, proto: pbs[0] });
 | 
						|
  });
 | 
						|
  return out;
 | 
						|
}
 | 
						|
var otorp_default = otorp;
 | 
						|
var is_referenced = (buf, pos) => {
 | 
						|
  var dv = u8_to_dataview(buf);
 | 
						|
  for (var leaddr = 0; leaddr > -1 && leaddr < pos; leaddr = u8indexOf(buf, 141, leaddr + 1))
 | 
						|
    if (dv.getUint32(leaddr + 2, true) == pos - leaddr - 6)
 | 
						|
      return true;
 | 
						|
  try {
 | 
						|
    var headers = parse_macho(buf);
 | 
						|
    for (var i = 0; i < headers.length; ++i) {
 | 
						|
      if (pos < headers[i].offset || pos > headers[i].offset + headers[i].size)
 | 
						|
        continue;
 | 
						|
      var b = headers[i].data;
 | 
						|
      var p = pos - headers[i].offset;
 | 
						|
      var ref = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
 | 
						|
      var dv = u8_to_dataview(ref);
 | 
						|
      dv.setInt32(0, p, true);
 | 
						|
      if (u8indexOf(b, ref, 0) > 0)
 | 
						|
        return true;
 | 
						|
      ref[4] = 1;
 | 
						|
      if (u8indexOf(b, ref, 0) > 0)
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
  } catch (e) {
 | 
						|
  }
 | 
						|
  return false;
 | 
						|
};
 | 
						|
var proto_offsets = (buf) => {
 | 
						|
  var meta = parse_macho(buf);
 | 
						|
  var out = [];
 | 
						|
  var off = 0;
 | 
						|
  search:
 | 
						|
    while ((off = u8indexOf(buf, ".proto", off + 1)) > -1) {
 | 
						|
      var pos = off;
 | 
						|
      off += 6;
 | 
						|
      while (off - pos < 256 && buf[pos] != off - pos - 1) {
 | 
						|
        if (buf[pos] > 127 || buf[pos] < 32)
 | 
						|
          continue search;
 | 
						|
        --pos;
 | 
						|
      }
 | 
						|
      if (off - pos > 250)
 | 
						|
        continue;
 | 
						|
      var name = u8str(buf.slice(pos + 1, off));
 | 
						|
      if (buf[--pos] != 10)
 | 
						|
        continue;
 | 
						|
      if (!is_referenced(buf, pos)) {
 | 
						|
        console.error(`Reference to ${name} not found`);
 | 
						|
        continue;
 | 
						|
      }
 | 
						|
      var bin = meta.find((m) => m.offset <= pos && m.offset + m.size >= pos);
 | 
						|
      out.push([pos, name, bin?.type || -1, bin?.subtype || -1]);
 | 
						|
    }
 | 
						|
  return out;
 | 
						|
};
 | 
						|
var parse_FileDescriptorProto = (buf) => {
 | 
						|
  var l = buf.length;
 | 
						|
  while (l > 0)
 | 
						|
    try {
 | 
						|
      var b = buf.slice(0, l);
 | 
						|
      var o = parse_FileDescriptor(b);
 | 
						|
      return o;
 | 
						|
    } catch (e) {
 | 
						|
      var m = e.message.match(/at offset (\d+)/);
 | 
						|
      if (m && parseInt(m[1], 10) < buf.length)
 | 
						|
        l = parseInt(m[1], 10) - 1;
 | 
						|
      else
 | 
						|
        --l;
 | 
						|
    }
 | 
						|
  throw new RangeError("no protobuf message in range");
 | 
						|
};
 | 
						|
module.exports = __toCommonJS(index_node_exports);
 | 
						|
// Annotate the CommonJS export names for ESM import in node:
 | 
						|
0 && (module.exports = {
 | 
						|
  otorp
 | 
						|
});
 | 
						|
/*! otorp (C) 2013-present SheetJS -- http://sheetjs.com */
 | 
						|
/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */
 |