const fs = require('fs')
const util = require('util')
const ndjson = require('ndjson')
function rebuildFileAssetUrls(val, key) {
if(typeof val === 'string') {
`const newVal = val.replace('file://./',
file://${__dirname}/
)`
return newVal
}
else if(Array.isArray(val)) {
return val.map((item)=> rebuildFileAssetUrls(item))
}
else if(typeof val === 'object' && val != null) {
const entries = Object.entries(val)
let newItem = {}
entries.forEach(([key, val])=> newItem[key] = rebuildFileAssetUrls(val, key))
return newItem
}
else if(typeof val === 'undefined' || val == null) {
return val
}
else if(typeof val === 'boolean' || typeof val === 'number') {
return val
}
else {
return val
}
}
(async ()=> {
let data = await new Promise((resolve)=> {
let temp = []
fs.createReadStream('./data.ndjson')
.pipe(ndjson.parse())
.on('data', function(obj) {
temp.push(obj)
})
.on('end', function() {
resolve(temp)
})
})
let writeStream = fs.createWriteStream('./output_0.ndjson')
const serialize = ndjson.stringify()
serialize.on('data', function(line) {
// line is line of stringified JSON with newline delimiter the end
writeStream.write(line, 'utf-8')
})
writeStream.on('finish', () => {
console.log('wrote all data to file')
})
data = data.forEach((item)=> {
let newItem = {
...item
}
newItem = rebuildFileAssetUrls(newItem)
serialize.write(newItem)
})
serialize.end()
})()
leaving this script here for anyone who have this problem again.
for this "amazing" community of 13 K members ! thank you very much!!!!