From f87a7b379e9204bc835de87125371f709f77dc3c Mon Sep 17 00:00:00 2001 From: Jos de Jong Date: Mon, 7 Mar 2022 16:21:37 +0100 Subject: [PATCH] fix: diff-sequences export not playing nice with Vite --- package.json | 2 +- src/lib/logic/sort.js | 6 ++---- tools/generateDiffSequenceEsm.js | 30 ++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 tools/generateDiffSequenceEsm.js diff --git a/package.json b/package.json index 9e24d035..75d6f2e9 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "lint": "prettier --check --plugin-search-dir=. .", "__lint": "prettier --check --plugin-search-dir=. . && eslint --cache --ignore-path .gitignore .", "format": "prettier --write --plugin-search-dir=. .", - "prepare": "husky install && cd tools && node generateEmbeddedAceJsonWorker.js && cd ..", + "prepare": "husky install && cd tools && node generateEmbeddedAceJsonWorker.js && node generateDiffSequenceEsm.js && cd ..", "release": "npm run lint && npm test && standard-version && npm run package && git push && git push --tag && npm publish package/" }, "dependencies": { diff --git a/src/lib/logic/sort.js b/src/lib/logic/sort.js index d53f9bc6..16b561b7 100644 --- a/src/lib/logic/sort.js +++ b/src/lib/logic/sort.js @@ -1,11 +1,9 @@ -import diffSequencesExport from 'diff-sequences' +import diffSequence from '../generated/diffSequence.js' import { compileJSONPointer, getIn, setIn } from 'immutable-json-patch' import { first, initial, isEmpty, isEqual, last } from 'lodash-es' import naturalCompare from 'natural-compare-lite' import { parseJSONPointerWithArrayIndices } from '../utils/jsonPointer.js' -const diffSequences = diffSequencesExport.default || diffSequencesExport - export function caseInsensitiveNaturalCompare(a, b) { const aLower = typeof a === 'string' ? a.toLowerCase() : a const bLower = typeof b === 'string' ? b.toLowerCase() : b @@ -166,7 +164,7 @@ export function sortOperationsMoveAdvanced(array, comparator) { return aIndex === sortedIndices[bIndex] } - diffSequences(size, size, isCommon, foundSubsequence) + diffSequence(size, size, isCommon, foundSubsequence) foundSubsequence(0, size, size) // every move will change the actual indices, so we've to adjust for that diff --git a/tools/generateDiffSequenceEsm.js b/tools/generateDiffSequenceEsm.js new file mode 100644 index 00000000..a035fc98 --- /dev/null +++ b/tools/generateDiffSequenceEsm.js @@ -0,0 +1,30 @@ +import { readFileSync, writeFileSync } from 'fs' + +// The original file contains an export that doesn't play nice with Vite +// This script copies the source code and turns it into regular a ES module +// The original export looks like: +// +// Object.defineProperty(exports, '__esModule', { +// value: true +// }); +// exports.default = diffSequence; +// +// The ESM export looks like: +// +// export default diffSequence; + +const commonjsFile = '../node_modules/diff-sequences/build/index.js' +const esmFile = '../src/lib/generated/diffSequence.js' +const commonjsCode = String(readFileSync(commonjsFile)) + +const commentsStart = commonjsCode.indexOf('/**') + +const esmHeader = `// esm version of diff-sequences +// generated by ./tools/generateDiffSequenceEsm.js +export default diffSequence; + +` + +const esmCode = esmHeader + commonjsCode.slice(commentsStart) + +writeFileSync(esmFile, esmCode)