CSV with ESM (csv #277)

node v16.18.0
version: master
endpointsharetweet
const fs = require('fs') const { execSync } = require('child_process') const PATCH_ROOT = '/app/patch-test' execSync(`mkdir ${PATCH_ROOT}`) fs.writeFileSync('1.mjs', `// ES Module import csv from 'csv' const csvParse = (data, options) => new Promise((resolve, reject) => { csv.parse(data, options, (err, output) => err ? reject(err) : resolve(output)) }) // Usage: async function main () { const csvText = "name,email \\n Elon,em@x.com" const result = await csvParse(csvText, { columns: true }) console.log(result) console.log(process.argv[1] + '\\n') } main() `) fs.writeFileSync('2.cjs', `// CommonJS const parse = require('csv-parse/lib/sync') // Usage: function main () { const csvText = "name,email \\n Elon,em@x.com" const result = parse(csvText, { columns: true }) console.log(result) console.log(process.argv[1] + '\\n') } main() `) fs.writeFileSync('3.mjs', `// ES Module import parse from 'csv-parse/lib/sync.js' // Usage: async function main () { const csvText = "name,email \\n Elon,em@x.com" const result = parse(csvText, { columns: true }) console.log(result) console.log(process.argv[1] + '\\n') } main() `) fs.writeFileSync(PATCH_ROOT + '/4.mjs', `// ES Module with patch import { parse } from 'patched/sync' // Usage: async function main () { const csvText = "name,email \\n Elon,em@x.com" const result = parse(csvText, { columns: true }) console.log(result) console.log(process.argv[1] + '\\n') } main() `) fs.writeFileSync(PATCH_ROOT + '/5.cjs', `// CommonJS const { parse } = require('patched/sync') // Usage: function main () { const csvText = "name,email \\n Elon,em@x.com" const result = parse(csvText, { columns: true }) console.log(result) console.log(process.argv[1] + '\\n') } main() `) // <INSTALL-PATCHED-VERSION> execSync(`cd ${PATCH_ROOT} npm init --force --yes && npm install lodash && cd node_modules && git clone https://github.com/rayfoss/node-csv patched cd patched sed -i -e 's/ "name": .*/ "name": "patched",/' package.json npm install cd ${PATCH_ROOT} `, { encoding: 'utf-8' }) // </INSTALL-PATCHED-VERSION> // <ESM-POLYFILL> const _ = require('lodash') // Side effect only const MODULES_PATH = (require.resolve('lodash')).replace(/\/lodash\/lodash\.js$/, '') execSync('ln -s '+MODULES_PATH+' node_modules') const rawStdout = execSync( 'find -name \'*.?js\' -maxdepth 2 -print0 | sort -z | xargs -0 -L1 node', { encoding: 'utf-8' } ) console.log(rawStdout) // </ESM-POLYFILL>
Loading…

no comments

    sign in to comment