43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
// Mock node-crc to provide pure JS implementation and bypass native build issues
|
|
const CRC_TABLE = new Uint32Array(256);
|
|
for (let i = 0; i < 256; i++) {
|
|
let r = i << 24;
|
|
for (let j = 0; j < 8; j++) {
|
|
r = (r & 0x80000000) !== 0 ? (r << 1) ^ 0x04c11db7 : r << 1;
|
|
}
|
|
CRC_TABLE[i] = r >>> 0;
|
|
}
|
|
|
|
const Module = require("module");
|
|
const originalRequire = Module.prototype.require;
|
|
Module.prototype.require = function (id: string) {
|
|
if (id === "node-crc") {
|
|
return {
|
|
crc: function (
|
|
width: number,
|
|
reflectIn: boolean,
|
|
poly: number,
|
|
init: number,
|
|
refOut: boolean,
|
|
xorOut: number,
|
|
unk1: number,
|
|
unk2: number,
|
|
buffer: Buffer,
|
|
) {
|
|
let crc = 0;
|
|
for (let i = 0; i < buffer.length; i++) {
|
|
crc =
|
|
((crc << 8) >>> 0) ^ CRC_TABLE[((crc >>> 24) ^ buffer[i]) & 0xff];
|
|
crc >>>= 0;
|
|
}
|
|
const result = Buffer.alloc(4);
|
|
result.writeUInt32BE(crc, 0);
|
|
return result;
|
|
},
|
|
};
|
|
}
|
|
return originalRequire.apply(this, arguments);
|
|
};
|
|
|
|
console.log("[mock] node-crc has been mocked globally.");
|