fix: multi-repo local dev (file:../ deps, package exports, missing deps)

This commit is contained in:
Raven Scott
2026-05-21 20:14:54 -04:00
parent 76e3272ced
commit b63275c6cc
802 changed files with 94636 additions and 4 deletions
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
const root = path.dirname(require.resolve('sodium-javascript/package.json'))
const tmp = "module.exports = require('sodium-native')\n"
function recurse (dir) {
const ls = fs.readdirSync(dir)
const subdir = path.relative(root, dir)
if (subdir) fs.mkdirSync(subdir, { recursive: true })
for (const file of ls) {
if (file === 'internal') recurse(path.join(dir, file))
if (!/\.js$/i.test(file)) continue
if (file === 'example.js') continue
if (file === 'test.js') continue
fs.writeFileSync(path.join(__dirname, '..', subdir, file), tmp)
}
}
recurse(root)
const pkg = require('sodium-javascript/package.json')
const myPkg = require('../package.json')
for (const key of Object.keys(pkg.dependencies)) {
myPkg.dependencies[key] = pkg.dependencies[key]
}
fs.writeFileSync(path.join(__dirname, '../package.json'), JSON.stringify(myPkg, null, 2) + '\n')
+32
View File
@@ -0,0 +1,32 @@
var exec = require('child_process').execSync
var path = require('path')
var symbols = exec(`nm -gU "${path.join(require.resolve('sodium-native'), '../prebuilds/darwin-x64/libsodium.dylib')}"`).toString().trim().split('\n')
var native = new Set(Object.keys(require('sodium-native')).sort())
var js = new Set(Object.keys(require('sodium-javascript')).sort())
symbols = symbols.map(l => l.split(' ').pop().replace(/^_/, '').replace(/_[^_]*bytes.*/, (s) => s.toUpperCase()))
var missing = []
console.log(`
<!-- Generated by build-scripts/symbols.js with
sodium-native@${require('sodium-native/package.json').version}
sodium-javascript@${require('sodium-javascript/package.json').version} -->\
`)
const max = symbols.filter(s => native.has(s) || js.has(s)).map(s => s.length).reduce((a, b) => Math.max(a, b))
const lines = ':-' + ''.padEnd(max, '--') + '-:'
const center = s => s.padStart(Math.floor((max + s.length) / 2), ' ').padEnd(max, ' ')
console.log(`| ${center('C Library Symbol')} | \`sodium-native\` | \`sodium-javascript\` |`)
console.log(`|${lines}|:--------------------:|:--------------------:|`)
for (var i = 0; i < symbols.length; i++) {
var s = symbols[i]
if (!(native.has(s) || js.has(s))) missing.push(s)
else console.log(`| \`${(s + '`').padEnd(max + 1, ' ')} | ${native.has(s) ? ' :white_check_mark: ' : ':small_red_triangle:'} | ${js.has(s) ? ' :white_check_mark: ' : ':small_red_triangle:'} |`)
}
console.log('\n### Missing altogether (Ctrl + F friendly)\n')
console.log(missing.map(s => '`' + s + '`').join(', '))
+26
View File
@@ -0,0 +1,26 @@
const fs = require('fs')
const path = require('path')
const { Transform, PassThrough } = require('stream')
module.exports = function (file, opts) {
const basedir = path.resolve(__dirname, '..')
const relname = path.relative(basedir, file)
if (opts._flags.browserField === false) {
return new PassThrough()
}
return new Transform({
transform (data, enc, cb) {
cb()
},
flush (cb) {
const filename = require.resolve('sodium-javascript/' + relname)
fs.readFile(filename, (err, buf) => {
if (err) return cb(err)
this.push(buf)
cb(null)
})
}
})
}