#!/bin/bash
# https://docs.sheetjs.com/docs/demos/net/dom#jsdom

cd /tmp
rm -rf sheetjs-jsdom
mkdir sheetjs-jsdom
cd sheetjs-jsdom

npm i --save https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz

cat >SheetJSDOM.js <<EOF
const XLSX = require("xlsx");
const { readFileSync } = require("fs");
const { JSDOM } = require("jsdom");

/* obtain HTML string.  This example reads from SheetJSTable.html */
const html_str = readFileSync("SheetJSTable.html", "utf8");

/* get first TABLE element */
const doc = new JSDOM(html_str).window.document.querySelector("table");

/* generate workbook */
const workbook = XLSX.utils.table_to_book(doc);

XLSX.writeFile(workbook, "SheetJSDOM.xlsx");
EOF

curl -LO https://docs.sheetjs.com/dom/SheetJSTable.html

for n in {10..24}; do
  rm -f SheetJSDom.xlsx
  npm i --save jsdom@$n
  npm ls | grep jsdom
  node SheetJSDom.js
  npx -y xlsx-cli SheetJSDom.xlsx | head -n 3
done