diff --git a/.github/workflows/hosted.yml b/.github/workflows/hosted.yml index 6bd76da434..49b2a39267 100644 --- a/.github/workflows/hosted.yml +++ b/.github/workflows/hosted.yml @@ -242,11 +242,11 @@ jobs: python-version: '3.x' architecture: 'x64' - - name: Set up Node 14 + - name: Set up Node 16 if: (matrix.target == 'javascript') || (matrix.target == 'typescript') - uses: actions/setup-node@v3.5.1 + uses: actions/setup-node@v3.6.0 with: - node-version: '14' + node-version: '16' - name: Setup Dotnet if: matrix.target == 'csharp' diff --git a/runtime/JavaScript/package-lock.json b/runtime/JavaScript/package-lock.json index 0549e2a891..e7836705cc 100644 --- a/runtime/JavaScript/package-lock.json +++ b/runtime/JavaScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "antlr4", - "version": "4.12.0-beta.1", + "version": "4.12.0-beta.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "antlr4", - "version": "4.12.0-beta.1", + "version": "4.12.0-beta.4", "license": "BSD-3-Clause", "devDependencies": { "@babel/core": "^7.19.1", diff --git a/runtime/JavaScript/package.json b/runtime/JavaScript/package.json index 04bec6730d..a97492c142 100644 --- a/runtime/JavaScript/package.json +++ b/runtime/JavaScript/package.json @@ -1,6 +1,6 @@ { "name": "antlr4", - "version": "4.12.0-beta.4", + "version": "4.12.0-beta.5", "type": "module", "description": "JavaScript runtime for ANTLR4", "main": "dist/antlr4.js", @@ -20,9 +20,9 @@ "homepage": "https://github.com/antlr/antlr4", "devDependencies": { "@babel/core": "^7.19.1", + "@babel/eslint-parser": "^7.19.1", "@babel/preset-env": "^7.19.4", "@types/node": "^18.7.23", - "@babel/eslint-parser": "^7.19.1", "babel-loader": "^8.2.5", "compression-webpack-plugin": "^10.0.0", "eslint": "^8.23.1", @@ -45,8 +45,6 @@ "node": ">=16" }, "browser": { - "fs": false, - "net": false, - "module": false + "fs": false } } diff --git a/runtime/JavaScript/src/antlr4/FileStream.js b/runtime/JavaScript/src/antlr4/FileStream.js index 942ffa0706..55c20e717f 100644 --- a/runtime/JavaScript/src/antlr4/FileStream.js +++ b/runtime/JavaScript/src/antlr4/FileStream.js @@ -4,7 +4,12 @@ */ import InputStream from './InputStream.js'; -import fs from "fs"; +const isNode = + typeof process !== "undefined" && + process.versions != null && + process.versions.node != null; +// use eval to fool webpack and mocha +const fs = isNode ? await eval("import('fs')") : null; /** * This is an InputStream that is loaded from a file all at once @@ -12,6 +17,8 @@ import fs from "fs"; */ export default class FileStream extends InputStream { constructor(fileName, decodeToUnicodeCodePoints) { + if(!isNode) + throw new Error("FileStream is only available when running in Node!"); const data = fs.readFileSync(fileName, "utf8"); super(data, decodeToUnicodeCodePoints); this.fileName = fileName; diff --git a/runtime/JavaScript/webpack.config.cjs b/runtime/JavaScript/webpack.config.cjs index a752c70e4e..a2b64a2763 100644 --- a/runtime/JavaScript/webpack.config.cjs +++ b/runtime/JavaScript/webpack.config.cjs @@ -15,12 +15,10 @@ module.exports = { resolve: { extensions: [ '.js'], fallback: { - module: false, - net: false, fs: false } }, - target: "node16", + target: "web", module: { rules: [{ test: /\.js$/,