| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | const fs = require('fs');const path = require('path');const log = (msg) => console.log(`[OASIS] [PATCH] ${msg}`);// === Patch ssb-ref ===const ssbRefPath = path.resolve(__dirname, '../src/server/node_modules/ssb-ref/index.js');if (fs.existsSync(ssbRefPath)) {  const data = fs.readFileSync(ssbRefPath, 'utf8');  const patched = data.replace(    /exports\.parseAddress\s*=\s*deprecate\([^)]*\)/,    'exports.parseAddress = parseAddress'  );  if (patched !== data) {    fs.writeFileSync(ssbRefPath, patched);    log('Patched ssb-ref to remove deprecated usage of parseAddress');  } else {    log('ssb-ref patch skipped: target line not found');  }}// === Patch ssb-blobs ===const ssbBlobsPath = path.resolve(__dirname, '../src/server/node_modules/ssb-blobs/inject.js');if (fs.existsSync(ssbBlobsPath)) {  let data = fs.readFileSync(ssbBlobsPath, 'utf8');  const marker = 'want: function (id, cb)';  const startIndex = data.indexOf(marker);  if (startIndex !== -1) {    const endIndex = data.indexOf('},', startIndex); // end of function block    if (endIndex !== -1) {      const before = data.slice(0, startIndex);      const after = data.slice(endIndex + 2);      const replacement = `  want: function (id, cb) {    id = toBlobId(id);    if (!isBlobId(id)) return cb(new Error('invalid id:' + id));    if (blobStore.isEmptyHash(id)) return cb(null, true);    if (wantCallbacks[id]) {      if (!Array.isArray(wantCallbacks[id])) wantCallbacks[id] = [];      wantCallbacks[id].push(cb);    } else {      wantCallbacks[id] = [cb];      blobStore.size(id, function (err, size) {        if (err) return cb(err);        if (size != null) {          while (wantCallbacks[id].length) {            const fn = wantCallbacks[id].shift();            if (typeof fn === 'function') fn(null, true);          }          delete wantCallbacks[id];        }      });    }    const peerId = findPeerWithBlob(id);    if (peerId) get(peerId, id);    if (wantCallbacks[id]) registerWant(id);  },`;      const finalData = before + replacement + after;      fs.writeFileSync(ssbBlobsPath, finalData);      log('Patched ssb-blobs to fix wantCallbacks handling');    } else {      log('ssb-blobs patch skipped: end of want function not found');    }  } else {    log('ssb-blobs patch skipped: want function not found');  }}
 |