diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 6760090..0000000 --- a/.babelrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "presets": ["@babel/preset-env"], - "plugins": ["@babel/plugin-proposal-class-properties", "@babel/transform-runtime"] -} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..935c3d3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +node_modules +.vscode +dist +backup \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..d657a7e --- /dev/null +++ b/.eslintrc @@ -0,0 +1,17 @@ +{ + "env": { + "browser": true, + "node": true, + "jquery": true, + "jest/globals": true, + "es6": true + }, + "parserOptions": { + "sourceType": "module", + "allowImportExportEverywhere": true + }, + "extends": [ + "eslint:recommended" + ], + "parser": "babel-eslint" +} diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 11704c3..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true, - "jest/globals": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": 12, - "sourceType": "module" - }, - "plugins": { - "jest" - }, - "rules": { - } -} diff --git a/.gitignore b/.gitignore index 163f79a..f843fa2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -package-lock.json -.idea/ node_modules/ -coverage/ +.vscode/ +dist/ +backup/ +.idea/ diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..935c3d3 --- /dev/null +++ b/.npmignore @@ -0,0 +1,4 @@ +node_modules +.vscode +dist +backup \ No newline at end of file diff --git a/.nvimrc b/.nvimrc deleted file mode 120000 index 1490f7a..0000000 --- a/.nvimrc +++ /dev/null @@ -1 +0,0 @@ -.vimrc \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json index 5d823c2..163754d 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -5,3 +5,4 @@ "singleQuote": true, "jsxBracketSameLine": true } + diff --git a/.vimrc b/.vimrc deleted file mode 100644 index 72b62bc..0000000 --- a/.vimrc +++ /dev/null @@ -1,2 +0,0 @@ -set autoread -set path+=.,src/** diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..b5d5053 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,15 @@ +module.exports = function (api) { + api.cache(true); + return { + presets: [ + '@babel/preset-env' + ], + plugins: [ + '@babel/plugin-proposal-class-properties', + '@babel/plugin-proposal-private-methods', + '@babel/plugin-transform-runtime', + '@babel/plugin-transform-regenerator', + '@babel/plugin-transform-async-to-generator' + ] + }; +}; \ No newline at end of file diff --git a/package.json b/package.json index 21bed65..2332283 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,13 @@ { - "name": "@scottg1/repertory-js", + "name": "@blockstorage/repertory-js", "version": "1.3.1-r1", "description": "A Node.js module for interfacing with Repertory's remote mount API", - "scripts": { - "test": "jest", - "coverage": "jest --collect-coverage" + "author": "scott.e.graves@protonmail.com", + "license": "MIT", + "homepage": "https://bitbucket.org/blockstorage/repertory-js", + "repository": { + "type": "git", + "url": "https://bitbucket.org/blockstorage/repertory-js.git" }, "keywords": [ "repertory", @@ -20,11 +23,16 @@ "altcoin", "cryptocurrency" ], - "author": "scott.e.graves@protonmail.com", - "homepage": "https://bitbucket.org/blockstorage/repertory-js", - "license": "MIT", + "module": "dist/mjs/repertory-js.mjs", + "files": [ + "dist/mjs" + ], + "scripts": { + "build": "rollup -c", + "test": "jest", + "prepublish": "rollup -c --silent" + }, "dependencies": { - "@babel/runtime": "^7.13.9", "int64-buffer": "^1.0.0", "js-sha256": "^0.9.0", "socket-pool": "^1.2.3", @@ -32,35 +40,23 @@ "uuid": "^8.3.2" }, "devDependencies": { - "@babel/plugin-transform-runtime": "^7.13.9", - "@babel/preset-env": "^7.13.9", - "babel-plugin-transform-class-properties": "^6.24.1", - "eslint": "^7.22.0", - "eslint-plugin-jest": "^24.3.2", - "jest": "^26.6.3" - }, - "type": "module", - "jest": { - "roots": [ - "src" - ], - "modulePaths": [ - "src" - ], - "moduleDirectories": [ - "node_modules" - ], - "testMatch": [ - "**/__tests__/**/*.[jt]s?(x)", - "**/?(*.)+(spec|test).[jt]s?(x)" - ], - "transform": { - "^.+\\.js?$": "babel-jest" - } - }, - "main": "src/index.js", - "repository": { - "type": "git", - "url": "https://bitbucket.org/blockstorage/repertory-js.git" + "@babel/core": "^7.14.3", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-runtime": "^7.14.3", + "@babel/preset-env": "^7.14.2", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^15.1.0", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "@types/jest": "^26.0.23", + "babel-eslint": "^10.1.0", + "jest": "^26.6.3", + "rollup": "^2.50.0", + "rollup-plugin-eslint": "^7.0.0", + "rollup-plugin-node-polyfills": "^0.2.1", + "rollup-plugin-terser": "^7.0.2" } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..ea0f5f5 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,52 @@ +import resolve from "@rollup/plugin-node-resolve"; +import commonjs from "@rollup/plugin-commonjs"; +import babel from "@rollup/plugin-babel"; +import { terser } from "rollup-plugin-terser"; +import json from '@rollup/plugin-json'; + +const commonConfig = { + input: 'src/index.js', + output: { + name: 'repertory-js', + sourcemap: true + }, + plugins: [ + resolve({ + customResolveOptions: { + moduleDirectory: 'node_modules' + } + }), + babel({ + exclude: 'node_modules/**', + babelHelpers: 'runtime' + }), + commonjs(), + json() + ] +}; + +// ESM config +const esmConfig = Object.assign({}, commonConfig); +esmConfig.output = Object.assign({}, commonConfig.output, { + file: 'dist/mjs/repertory-js.mjs', + format: 'esm' +}); + +// ESM prod config +const esmProdConfig = Object.assign({}, esmConfig); +esmProdConfig.output = Object.assign({}, esmConfig.output, { + file: 'dist/mjs/repertory-js.min.mjs', + sourcemap: false +}); +esmProdConfig.plugins = [ + ...esmConfig.plugins, + terser() +]; + +let configurations = []; +configurations.push( + esmConfig, + esmProdConfig +) + +export default configurations;