From d75818297bd0d9deae1cc8a5dd9821209f368381 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Fri, 29 Mar 2024 14:58:38 +0200 Subject: [PATCH] feature: distribute: convert to ESM --- bin/cloudcmd.mjs | 4 +- server/cloudcmd.mjs | 4 +- server/distribute/{export.js => export.mjs} | 19 +++---- server/distribute/{import.js => import.mjs} | 22 ++++---- server/distribute/import.spec.mjs | 6 +-- server/distribute/index.js | 4 -- server/distribute/log.js | 41 --------------- server/distribute/log.mjs | 52 +++++++++++++++++++ .../distribute/{log.spec.js => log.spec.mjs} | 8 ++- 9 files changed, 78 insertions(+), 82 deletions(-) rename server/distribute/{export.js => export.mjs} (91%) rename server/distribute/{import.js => import.mjs} (91%) delete mode 100644 server/distribute/index.js delete mode 100644 server/distribute/log.js create mode 100644 server/distribute/log.mjs rename server/distribute/{log.spec.js => log.spec.mjs} (83%) diff --git a/bin/cloudcmd.mjs b/bin/cloudcmd.mjs index 6ec0ec40..4ea301ac 100755 --- a/bin/cloudcmd.mjs +++ b/bin/cloudcmd.mjs @@ -241,8 +241,8 @@ async function main() { if (args.showConfig) await showConfig(); - const distribute = await simport('../server/distribute/index.js'); - const importConfig = promisify(distribute.import); + const {distributeImport} = await simport('../server/distribute/import.mjs'); + const importConfig = promisify(distributeImport); await start(options, config); diff --git a/server/cloudcmd.mjs b/server/cloudcmd.mjs index 5c2c9eef..62414a83 100644 --- a/server/cloudcmd.mjs +++ b/server/cloudcmd.mjs @@ -24,7 +24,7 @@ import route from './route.mjs'; import * as validate from './validate.mjs'; import prefixer from './prefixer.js'; import terminal from './terminal.js'; -import distribute from './distribute/index.js'; +import {distributeExport} from './distribute/export.mjs'; import {createDepStore} from './depstore.js'; const __filename = fileURLToPath(import.meta.url); @@ -175,7 +175,7 @@ function listen({prefixSocket, socket, config}) { autoRestart: config('terminalAutoRestart'), }); - distribute.export(config, socket); + distributeExport(config, socket); } function cloudcmdMiddle({modules, config}) { diff --git a/server/distribute/export.js b/server/distribute/export.mjs similarity index 91% rename from server/distribute/export.js rename to server/distribute/export.mjs index abd057a3..02149ca5 100644 --- a/server/distribute/export.js +++ b/server/distribute/export.mjs @@ -1,13 +1,8 @@ -'use strict'; - -const currify = require('currify'); -const wraptile = require('wraptile'); -const squad = require('squad'); -const omit = require('object.omit'); - -const log = require('./log'); - -const { +import currify from 'currify'; +import wraptile from 'wraptile'; +import squad from 'squad'; +import omit from 'object.omit'; +import log, { exportStr, connectedStr, disconnectedStr, @@ -16,7 +11,7 @@ const { getMessage, getDescription, logWraped, -} = log; +} from './log.mjs'; const omitList = [ 'auth', @@ -38,7 +33,7 @@ const omitList = [ const omitConfig = (config) => omit(config, omitList); -module.exports = (config, socket) => { +export const distributeExport = (config, socket) => { if (!config('export')) return; diff --git a/server/distribute/import.js b/server/distribute/import.mjs similarity index 91% rename from server/distribute/import.js rename to server/distribute/import.mjs index 7a88e89d..57d215b8 100644 --- a/server/distribute/import.js +++ b/server/distribute/import.mjs @@ -1,16 +1,14 @@ -'use strict'; +import currify from 'currify'; +import wraptile from 'wraptile'; +import squad from 'squad'; +import fullstore from 'fullstore'; +import io from 'socket.io-client'; +import log from './log.mjs'; +import env from '../env.js'; +import _forEachKey from 'for-each-key'; -const currify = require('currify'); -const wraptile = require('wraptile'); -const squad = require('squad'); -const fullstore = require('fullstore'); - -const io = require('socket.io-client'); -const log = require('./log'); - -const env = require('../env'); const noop = () => {}; -const forEachKey = currify(require('for-each-key')); +const forEachKey = currify(_forEachKey); const { importStr, @@ -67,7 +65,7 @@ const updateConfig = currify((config, data) => { } }); -module.exports = (config, options, fn) => { +export const distributeImport = (config, options, fn) => { fn = fn || options; if (!config('import')) diff --git a/server/distribute/import.spec.mjs b/server/distribute/import.spec.mjs index caf9080a..9df6f846 100644 --- a/server/distribute/import.spec.mjs +++ b/server/distribute/import.spec.mjs @@ -1,15 +1,13 @@ -import {createRequire} from 'node:module'; import process from 'node:process'; import test from 'supertape'; import {promisify} from 'node:util'; import tryToCatch from 'try-to-catch'; import {connect} from '../../test/before.mjs'; import {createConfigManager} from '../cloudcmd.mjs'; - -const require = createRequire(import.meta.url); +import {distributeImport} from './import.mjs'; const distribute = { - import: promisify(require('./import')), + import: promisify(distributeImport), }; const config = createConfigManager(); diff --git a/server/distribute/index.js b/server/distribute/index.js deleted file mode 100644 index 9fae4b04..00000000 --- a/server/distribute/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -module.exports.import = require('./import'); -module.exports.export = require('./export'); diff --git a/server/distribute/log.js b/server/distribute/log.js deleted file mode 100644 index 515933f1..00000000 --- a/server/distribute/log.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const wraptile = require('wraptile'); -const chalk = require('chalk'); - -const datetime = require('../../common/datetime'); - -const log = (isLog, name, msg) => isLog && console.log(`${datetime()} -> ${name}: ${msg}`); -const makeColor = (a) => chalk.blue(a); -const getMessage = (e) => e.message || e; -const getDescription = (e) => e.message; - -module.exports = log; -module.exports.logWraped = wraptile(log); -module.exports.stringToRGB = stringToRGB; -module.exports.makeColor = makeColor; -module.exports.getMessage = getMessage; -module.exports.getDescription = getDescription; - -module.exports.importStr = 'import'; -module.exports.exportStr = 'export'; -module.exports.connectedStr = chalk.green('connected'); -module.exports.disconnectedStr = chalk.red('disconnected'); -module.exports.tokenRejectedStr = chalk.red('token rejected'); -module.exports.authTryStr = chalk.yellow('try to auth'); - -function stringToRGB(a) { - return [ - a.charCodeAt(0), - a.length, - crc(a), - ]; -} - -const add = (a, b) => a + b.charCodeAt(0); - -function crc(a) { - return a - .split('') - .reduce(add, 0); -} diff --git a/server/distribute/log.mjs b/server/distribute/log.mjs new file mode 100644 index 00000000..feb79c8c --- /dev/null +++ b/server/distribute/log.mjs @@ -0,0 +1,52 @@ +import wraptile from 'wraptile'; +import chalk from 'chalk'; +import datetime from '../../common/datetime.js'; + +const {assign} = Object; + +const log = (isLog, name, msg) => isLog && console.log(`${datetime()} -> ${name}: ${msg}`); + +export const makeColor = (a) => chalk.blue(a); +export const getMessage = (e) => e.message || e; +export const getDescription = (e) => e.message; + +export default log; + +export const logWraped = wraptile(log); + +export const importStr = 'import'; +export const exportStr = 'export'; +export const connectedStr = chalk.green('connected'); +export const disconnectedStr = chalk.red('disconnected'); +export const tokenRejectedStr = chalk.red('token rejected'); +export const authTryStr = chalk.yellow('try to auth'); + +export function stringToRGB(a) { + return [ + a.charCodeAt(0), + a.length, + crc(a), + ]; +} + +const add = (a, b) => a + b.charCodeAt(0); + +function crc(a) { + return a + .split('') + .reduce(add, 0); +} + +assign(log, { + getMessage, + makeColor, + getDescription, + authTryStr, + stringToRGB, + logWraped, + importStr, + exportStr, + connectedStr, + disconnectedStr, + tokenRejectedStr, +}); diff --git a/server/distribute/log.spec.js b/server/distribute/log.spec.mjs similarity index 83% rename from server/distribute/log.spec.js rename to server/distribute/log.spec.mjs index 462b9875..50e4df11 100644 --- a/server/distribute/log.spec.js +++ b/server/distribute/log.spec.mjs @@ -1,8 +1,6 @@ -'use strict'; - -const test = require('supertape'); -const log = require('./log'); -const {createConfig} = require('../config'); +import test from 'supertape'; +import log from './log.mjs'; +import {createConfig} from '../config.js'; test('distribute: log: getMessage', (t) => { const e = 'hello';