diff --git a/karma.conf.js b/karma.conf.cjs
similarity index 100%
rename from karma.conf.js
rename to karma.conf.cjs
diff --git a/package.json b/package.json
index bfe16a54..2802edf9 100644
--- a/package.json
+++ b/package.json
@@ -1,25 +1,32 @@
{
"name": "@novnc/novnc",
- "version": "1.6.0",
+ "version": "1.6.1-alpha.1",
"description": "An HTML5 VNC client",
- "browser": "lib/rfb",
- "directories": {
- "lib": "lib",
- "doc": "docs",
- "test": "tests"
- },
+ "type": "module",
"files": [
- "lib",
+ "core",
+ "vendor",
"AUTHORS",
"VERSION",
"docs/API.md",
"docs/LIBRARY.md",
"docs/LICENSE*"
],
+ "exports": {
+ ".": "./core/rfb.js",
+ "./lib/*": "./core/*.js",
+ "./lib/*.js": "./core/*.js",
+ "./core/*": "./core/*.js",
+ "./core/*.js": "./core/*.js",
+ "./lib/vendor/*": "./vendor/*.js",
+ "./lib/vendor/*.js": "./vendor/*.js",
+ "./vendor/*": "./vendor/*.js",
+ "./vendor/*.js": "./vendor/*.js",
+ "./package.json": "./package.json"
+ },
"scripts": {
"lint": "eslint app core po/po2js po/xgettext-html tests utils",
- "test": "karma start karma.conf.js",
- "prepublish": "node ./utils/convert.js --clean"
+ "test": "karma start karma.conf.cjs"
},
"repository": {
"type": "git",
diff --git a/po/po2js b/po/po2js
index 6347e1ea..38effd30 100755
--- a/po/po2js
+++ b/po/po2js
@@ -17,9 +17,9 @@
* along with this program. If not, see .
*/
-const { program } = require('commander');
-const fs = require('fs');
-const pofile = require("pofile");
+import { program } from 'commander';
+import fs from 'fs';
+import pofile from "pofile";
program
.argument('')
diff --git a/po/xgettext-html b/po/xgettext-html
index f5ba57cc..3fcaacd4 100755
--- a/po/xgettext-html
+++ b/po/xgettext-html
@@ -5,9 +5,9 @@
* Licensed under MPL 2.0 (see LICENSE.txt)
*/
-const { program } = require('commander');
-const jsdom = require("jsdom");
-const fs = require("fs");
+import { program } from 'commander';
+import jsdom from 'jsdom';
+import fs from 'fs';
program
.argument('')
@@ -106,7 +106,7 @@ let output = "";
for (let str in strings) {
output += "#:";
- for (location in strings[str]) {
+ for (let location in strings[str]) {
output += " " + location;
}
output += "\n";
diff --git a/utils/convert.js b/utils/convert.js
deleted file mode 100755
index 617f4ed6..00000000
--- a/utils/convert.js
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/env node
-
-const path = require('path');
-const { program } = require('commander');
-const fs = require('fs');
-const fse = require('fs-extra');
-const babel = require('@babel/core');
-
-program
- .option('-m, --with-source-maps [type]', 'output source maps when not generating a bundled app (type may be empty for external source maps, inline for inline source maps, or both) ')
- .option('--clean', 'clear the lib folder before building')
- .parse(process.argv);
-
-// the various important paths
-const paths = {
- main: path.resolve(__dirname, '..'),
- core: path.resolve(__dirname, '..', 'core'),
- vendor: path.resolve(__dirname, '..', 'vendor'),
- libDirBase: path.resolve(__dirname, '..', 'lib'),
-};
-
-// util.promisify requires Node.js 8.x, so we have our own
-function promisify(original) {
- return function promiseWrap() {
- const args = Array.prototype.slice.call(arguments);
- return new Promise((resolve, reject) => {
- original.apply(this, args.concat((err, value) => {
- if (err) return reject(err);
- resolve(value);
- }));
- });
- };
-}
-
-const writeFile = promisify(fs.writeFile);
-
-const readdir = promisify(fs.readdir);
-const lstat = promisify(fs.lstat);
-
-const ensureDir = promisify(fse.ensureDir);
-
-const babelTransformFile = promisify(babel.transformFile);
-
-// walkDir *recursively* walks directories trees,
-// calling the callback for all normal files found.
-function walkDir(basePath, cb, filter) {
- return readdir(basePath)
- .then((files) => {
- const paths = files.map(filename => path.join(basePath, filename));
- return Promise.all(paths.map(filepath => lstat(filepath)
- .then((stats) => {
- if (filter !== undefined && !filter(filepath, stats)) return;
-
- if (stats.isSymbolicLink()) return;
- if (stats.isFile()) return cb(filepath);
- if (stats.isDirectory()) return walkDir(filepath, cb, filter);
- })));
- });
-}
-
-function makeLibFiles(sourceMaps) {
- // NB: we need to make a copy of babelOpts, since babel sets some defaults on it
- const babelOpts = () => ({
- plugins: [],
- presets: [
- [ '@babel/preset-env',
- { modules: 'commonjs' } ]
- ],
- ast: false,
- sourceMaps: sourceMaps,
- });
-
- fse.ensureDirSync(paths.libDirBase);
-
- const outFiles = [];
-
- const handleDir = (vendorRewrite, inPathBase, filename) => Promise.resolve()
- .then(() => {
- const outPath = path.join(paths.libDirBase, path.relative(inPathBase, filename));
-
- if (path.extname(filename) !== '.js') {
- return; // skip non-javascript files
- }
- return Promise.resolve()
- .then(() => ensureDir(path.dirname(outPath)))
- .then(() => {
- const opts = babelOpts();
- // Adjust for the fact that we move the core files relative
- // to the vendor directory
- if (vendorRewrite) {
- opts.plugins.push(["import-redirect",
- {"root": paths.libDirBase,
- "redirect": { "vendor/(.+)": "./vendor/$1"}}]);
- }
-
- return babelTransformFile(filename, opts)
- .then((res) => {
- console.log(`Writing ${outPath}`);
- const {map} = res;
- let {code} = res;
- if (sourceMaps === true) {
- // append URL for external source map
- code += `\n//# sourceMappingURL=${path.basename(outPath)}.map\n`;
- }
- outFiles.push(`${outPath}`);
- return writeFile(outPath, code)
- .then(() => {
- if (sourceMaps === true || sourceMaps === 'both') {
- console.log(` and ${outPath}.map`);
- outFiles.push(`${outPath}.map`);
- return writeFile(`${outPath}.map`, JSON.stringify(map));
- }
- });
- });
- });
- });
-
- Promise.resolve()
- .then(() => {
- const handler = handleDir.bind(null, false, paths.main);
- return walkDir(paths.vendor, handler);
- })
- .then(() => {
- const handler = handleDir.bind(null, true, paths.core);
- return walkDir(paths.core, handler);
- })
- .catch((err) => {
- console.error(`Failure converting modules: ${err}`);
- process.exit(1);
- });
-}
-
-let options = program.opts();
-
-if (options.clean) {
- console.log(`Removing ${paths.libDirBase}`);
- fse.removeSync(paths.libDirBase);
-}
-
-makeLibFiles(options.withSourceMaps);
diff --git a/utils/genkeysymdef.js b/utils/genkeysymdef.cjs
similarity index 100%
rename from utils/genkeysymdef.js
rename to utils/genkeysymdef.cjs