Skip to content

Commit

Permalink
fix: patch __spreadArray helper to work around tslib bug (#4481)
Browse files Browse the repository at this point in the history
  • Loading branch information
jcfranco committed May 18, 2022
1 parent 8bcb0af commit 685b55f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"util:copy-icons": "cpy \"./node_modules/@esri/calcite-ui-icons/js/*.json\" \"./src/components/icon/assets/icon/\" --flat",
"util:deploy-next": "npm run util:prep-next && npm run util:push-tags && npm run util:publish-next",
"util:deploy-next-from-ci": "ts-node --project ./tsconfig-node-scripts.json support/deployNextFromCI.ts",
"util:patch-es5-helpers": "ts-node support/patchES5Helpers.ts",
"util:prep-next": "ts-node --project ./tsconfig-node-scripts.json support/prepReleaseCommit.ts --next && npm run build",
"util:publish-next": "npm publish --tag next",
"util:check-squash-mergeable-branch": "ts-node --project ./tsconfig-node-scripts.json support/checkSquashMergeableBranch.ts",
Expand Down
27 changes: 27 additions & 0 deletions support/patchES5Helpers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const {
promises: { readFile, readdir, writeFile }
} = require("fs");
const { normalize } = require("path");
const { quote } = require("shell-quote");

(async function () {
const esmEs5Output = quote([normalize(`${__dirname}/../dist/esm-es5/`)]);

// we patch __spreadArray to work around https://github.com/microsoft/tslib/issues/175
// see https://github.com/Esri/calcite-components/issues/4481#issuecomment-1128336510 for more info
const spreadArrayHelperToken =
/(var __spreadArray\=this\&\&this\.__spreadArray\|\|function\(\w\,)(\w)(\,\w\)\{)(if\((?:\w)\|\|arguments\.length\=\=\=2\))/;
const patchedSpreadArrayReplacement = '$1$2$3if(typeof $2 === "string"){$2=Array.prototype.slice.call($2)}$4';
const files = await readdir(esmEs5Output);

try {
for (const file of files) {
const filePath = quote([normalize(`${esmEs5Output}/${file}`)]);
const contents = await readFile(filePath, { encoding: "utf8" });
await writeFile(filePath, contents.replace(spreadArrayHelperToken, patchedSpreadArrayReplacement));
}
} catch (err) {
console.error(err);
process.exit(1);
}
})();

0 comments on commit 685b55f

Please sign in to comment.