fix: multi-repo local dev (file:../ deps, package exports, missing deps)
This commit is contained in:
+33
@@ -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
@@ -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
@@ -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)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user