diff --git a/.cloudcmd.menu.js b/.cloudcmd.menu.js index 6c808d18..08637d80 100644 --- a/.cloudcmd.menu.js +++ b/.cloudcmd.menu.js @@ -1,6 +1,4 @@ -'use strict'; - -module.exports = { +export default { 'F2 - Rename file': async ({DOM}) => { await DOM.renameCurrent(); }, diff --git a/.madrun.mjs b/.madrun.js similarity index 97% rename from .madrun.mjs rename to .madrun.js index ade83fa8..16571812 100644 --- a/.madrun.mjs +++ b/.madrun.js @@ -21,7 +21,7 @@ const buildEnv = (is17 || is20) && { }; export default { - 'start': () => 'node bin/cloudcmd.mjs', + 'start': () => 'node bin/cloudcmd.js', 'start:dev': async () => await run('start', null, { NODE_ENV: 'development', }), @@ -41,7 +41,7 @@ export default { 'wisdom': async () => await run(['lint:all', 'build', 'test'], null, { CI: 1, }), - 'wisdom:type': () => 'bin/release.mjs', + 'wisdom:type': () => 'bin/release.js', 'coverage': async () => [testEnv, `c8 ${await cutEnv('test')}`], 'coverage:report': () => 'c8 report --reporter=lcov', 'report': () => 'c8 report --reporter=lcov', diff --git a/.npmignore b/.npmignore index b668cf7f..ceb649e8 100644 --- a/.npmignore +++ b/.npmignore @@ -20,7 +20,7 @@ bower.json manifest.yml deno.json -bin/release.mjs +bin/release.* client img/logo/cloudcmd-hq.png diff --git a/.putout.json b/.putout.json index 800cdeab..3482fdb7 100644 --- a/.putout.json +++ b/.putout.json @@ -8,7 +8,8 @@ "*.md" ], "rules": { - "package-json/add-type": "off" + "package-json/add-type": "off", + "esm/add-index-to-import": "off" }, "match": { ".filesystem.json": { diff --git a/.webpack/css.mjs b/.webpack/css.js similarity index 100% rename from .webpack/css.mjs rename to .webpack/css.js diff --git a/.webpack/html.mjs b/.webpack/html.js similarity index 100% rename from .webpack/html.mjs rename to .webpack/html.js diff --git a/.webpack/js.mjs b/.webpack/js.js similarity index 82% rename from .webpack/js.mjs rename to .webpack/js.js index 08ddfc94..4759741e 100644 --- a/.webpack/js.mjs +++ b/.webpack/js.js @@ -117,28 +117,28 @@ export default { 'config': `${dirCss}/config.css`, 'terminal': `${dirCss}/terminal.css`, 'user-menu': `${dirCss}/user-menu.css`, - 'sw': `${dir}/sw/sw.mjs`, - 'cloudcmd': `${dir}/cloudcmd.mjs`, - [`${modules}/edit`]: `${dirModules}/edit.mjs`, - [`${modules}/edit-file`]: `${dirModules}/edit-file.mjs`, - [`${modules}/edit-file-vim`]: `${dirModules}/edit-file-vim.mjs`, - [`${modules}/edit-names`]: `${dirModules}/edit-names.mjs`, - [`${modules}/edit-names-vim`]: `${dirModules}/edit-names-vim.mjs`, - [`${modules}/menu`]: `${dirModules}/menu/index.mjs`, - [`${modules}/view`]: `${dirModules}/view/index.mjs`, - [`${modules}/help`]: `${dirModules}/help.mjs`, - [`${modules}/markdown`]: `${dirModules}/markdown.mjs`, - [`${modules}/config`]: `${dirModules}/config/index.mjs`, + 'sw': `${dir}/sw/sw.js`, + 'cloudcmd': `${dir}/cloudcmd.js`, + [`${modules}/edit`]: `${dirModules}/edit.js`, + [`${modules}/edit-file`]: `${dirModules}/edit-file.js`, + [`${modules}/edit-file-vim`]: `${dirModules}/edit-file-vim.js`, + [`${modules}/edit-names`]: `${dirModules}/edit-names.js`, + [`${modules}/edit-names-vim`]: `${dirModules}/edit-names-vim.js`, + [`${modules}/menu`]: `${dirModules}/menu/index.js`, + [`${modules}/view`]: `${dirModules}/view/index.js`, + [`${modules}/help`]: `${dirModules}/help.js`, + [`${modules}/markdown`]: `${dirModules}/markdown.js`, + [`${modules}/config`]: `${dirModules}/config/index.js`, [`${modules}/contact`]: `${dirModules}/contact.js`, - [`${modules}/upload`]: `${dirModules}/upload.mjs`, - [`${modules}/operation`]: `${dirModules}/operation/index.mjs`, - [`${modules}/konsole`]: `${dirModules}/konsole.mjs`, - [`${modules}/terminal`]: `${dirModules}/terminal.mjs`, - [`${modules}/terminal-run`]: `${dirModules}/terminal-run.mjs`, - [`${modules}/cloud`]: `${dirModules}/cloud.mjs`, - [`${modules}/user-menu`]: `${dirModules}/user-menu/index.mjs`, - [`${modules}/polyfill`]: `${dirModules}/polyfill.mjs`, - [`${modules}/command-line`]: `${dirModules}/command-line.mjs`, + [`${modules}/upload`]: `${dirModules}/upload.js`, + [`${modules}/operation`]: `${dirModules}/operation/index.js`, + [`${modules}/konsole`]: `${dirModules}/konsole.js`, + [`${modules}/terminal`]: `${dirModules}/terminal.js`, + [`${modules}/terminal-run`]: `${dirModules}/terminal-run.js`, + [`${modules}/cloud`]: `${dirModules}/cloud.js`, + [`${modules}/user-menu`]: `${dirModules}/user-menu/index.js`, + [`${modules}/polyfill`]: `${dirModules}/polyfill.js`, + [`${modules}/command-line`]: `${dirModules}/command-line.js`, }, output: { filename: '[name].js', diff --git a/bin/cloudcmd.mjs b/bin/cloudcmd.js similarity index 97% rename from bin/cloudcmd.mjs rename to bin/cloudcmd.js index e1c358ed..63806aab 100755 --- a/bin/cloudcmd.mjs +++ b/bin/cloudcmd.js @@ -7,10 +7,10 @@ import {tryToCatch} from 'try-to-catch'; import {createSimport} from 'simport'; import parse from 'yargs-parser'; import exit from '../server/exit.js'; -import {createConfig, configPath} from '../server/config.mjs'; -import * as env from '../server/env.mjs'; +import {createConfig, configPath} from '../server/config.js'; +import * as env from '../server/env.js'; import prefixer from '../server/prefixer.js'; -import * as validate from '../server/validate.mjs'; +import * as validate from '../server/validate.js'; process.on('unhandledRejection', exit); @@ -248,7 +248,7 @@ async function main() { if (args.showConfig) await showConfig(); - const {distributeImport} = await simport('../server/distribute/import.mjs'); + const {distributeImport} = await simport('../server/distribute/import.js'); const importConfig = promisify(distributeImport); await start(options, config); @@ -279,7 +279,7 @@ function version() { } async function start(options, config) { - const SERVER = `${DIR_SERVER}server.mjs`; + const SERVER = `../server/server.js`; if (!args.server) return; diff --git a/bin/release.mjs b/bin/release.js similarity index 98% rename from bin/release.mjs rename to bin/release.js index 004b908e..1c1a487c 100755 --- a/bin/release.mjs +++ b/bin/release.js @@ -1,5 +1,3 @@ -#!/usr/bin/env node - import {promisify} from 'node:util'; import process from 'node:process'; import {tryToCatch} from 'try-to-catch'; diff --git a/client/client.mjs b/client/client.js similarity index 98% rename from client/client.mjs rename to client/client.js index 5c5584de..f84547db 100644 --- a/client/client.mjs +++ b/client/client.js @@ -13,10 +13,10 @@ import { buildFromJSON, } from '#common/cloudfunc'; import * as Images from '#dom/images'; -import {unregisterSW} from './sw/register.mjs'; -import {getJsonFromFileTable} from './get-json-from-file-table.mjs'; -import {Key} from './key/index.mjs'; -import {loadModule} from './load-module.mjs'; +import {unregisterSW} from './sw/register.js'; +import {getJsonFromFileTable} from './get-json-from-file-table.js'; +import {Key} from './key/index.js'; +import {loadModule} from './load-module.js'; const noJS = (a) => a.replace(/.js$/, ''); diff --git a/client/cloudcmd.mjs b/client/cloudcmd.js similarity index 89% rename from client/cloudcmd.mjs rename to client/cloudcmd.js index d72d7bff..688d97b7 100644 --- a/client/cloudcmd.mjs +++ b/client/cloudcmd.js @@ -5,10 +5,10 @@ import load from 'load.js'; import * as Util from '#common/util'; import * as CloudFunc from '#common/cloudfunc'; import DOM from '#dom'; -import {registerSW, listenSW} from './sw/register.mjs'; -import {initSortPanel, sortPanel} from './sort.mjs'; -import {createCloudCmd} from './client.mjs'; -import * as Listeners from './listeners/index.mjs'; +import {registerSW, listenSW} from './sw/register.js'; +import {initSortPanel, sortPanel} from './sort.js'; +import {createCloudCmd} from './client.js'; +import * as Listeners from './listeners/index.js'; const isDev = process.env.NODE_ENV === 'development'; diff --git a/client/dom/buffer.mjs b/client/dom/buffer.js similarity index 100% rename from client/dom/buffer.mjs rename to client/dom/buffer.js diff --git a/client/dom/cmd.mjs b/client/dom/cmd.js similarity index 100% rename from client/dom/cmd.mjs rename to client/dom/cmd.js diff --git a/client/dom/current-file.mjs b/client/dom/current-file.js similarity index 100% rename from client/dom/current-file.mjs rename to client/dom/current-file.js diff --git a/client/dom/current-file.spec.mjs b/client/dom/current-file.spec.js similarity index 99% rename from client/dom/current-file.spec.mjs rename to client/dom/current-file.spec.js index 2a576dce..99294fde 100644 --- a/client/dom/current-file.spec.mjs +++ b/client/dom/current-file.spec.js @@ -1,7 +1,7 @@ import {test, stub} from 'supertape'; import {create} from 'auto-globals'; import wraptile from 'wraptile'; -import * as currentFile from './current-file.mjs'; +import * as currentFile from './current-file.js'; const id = (a) => a; diff --git a/client/dom/dialog.mjs b/client/dom/dialog.js similarity index 100% rename from client/dom/dialog.mjs rename to client/dom/dialog.js diff --git a/client/dom/directory.mjs b/client/dom/directory.js similarity index 100% rename from client/dom/directory.mjs rename to client/dom/directory.js diff --git a/client/dom/dom-tree.mjs b/client/dom/dom-tree.js similarity index 100% rename from client/dom/dom-tree.mjs rename to client/dom/dom-tree.js diff --git a/client/dom/dom-tree.spec.mjs b/client/dom/dom-tree.spec.js similarity index 95% rename from client/dom/dom-tree.spec.mjs rename to client/dom/dom-tree.spec.js index a711dcb6..13f56f6d 100644 --- a/client/dom/dom-tree.spec.mjs +++ b/client/dom/dom-tree.spec.js @@ -1,7 +1,7 @@ import test from 'supertape'; import {create} from 'auto-globals'; import {tryCatch} from 'try-catch'; -import {isContainClass} from './dom-tree.mjs'; +import {isContainClass} from './dom-tree.js'; test('dom: isContainClass: no element', (t) => { const [e] = tryCatch(isContainClass); diff --git a/client/dom/events/event-store.mjs b/client/dom/events/event-store.js similarity index 100% rename from client/dom/events/event-store.mjs rename to client/dom/events/event-store.js diff --git a/client/dom/events/event-store.spec.mjs b/client/dom/events/event-store.spec.js similarity index 93% rename from client/dom/events/event-store.spec.mjs rename to client/dom/events/event-store.spec.js index c543fa3b..6a623939 100644 --- a/client/dom/events/event-store.spec.mjs +++ b/client/dom/events/event-store.spec.js @@ -1,5 +1,5 @@ import {test} from 'supertape'; -import * as eventStore from './event-store.mjs'; +import * as eventStore from './event-store.js'; test('event-store: get', (t) => { const el = {}; diff --git a/client/dom/events/index.mjs b/client/dom/events/index.js similarity index 98% rename from client/dom/events/index.mjs rename to client/dom/events/index.js index 2c3bfb76..c49d2333 100644 --- a/client/dom/events/index.mjs +++ b/client/dom/events/index.js @@ -1,5 +1,5 @@ import itype from 'itype'; -import * as EventStore from './event-store.mjs'; +import * as EventStore from './event-store.js'; /** * safe add event listener diff --git a/client/dom/files.mjs b/client/dom/files.js similarity index 100% rename from client/dom/files.mjs rename to client/dom/files.js diff --git a/client/dom/images.mjs b/client/dom/images.js similarity index 99% rename from client/dom/images.mjs rename to client/dom/images.js index 9682e666..75663e72 100644 --- a/client/dom/images.mjs +++ b/client/dom/images.js @@ -102,13 +102,13 @@ export function show(position, panel) { /** * hide load image */ -export const hide = () => { +export function hide() { const element = Images.get(); DOM.hide(element); return Images; -}; +} export const setProgress = (value, title) => { const DATA = 'data-progress'; diff --git a/client/dom/index.mjs b/client/dom/index.js similarity index 97% rename from client/dom/index.mjs rename to client/dom/index.js index d19c8009..f6ce6bc7 100644 --- a/client/dom/index.mjs +++ b/client/dom/index.js @@ -7,15 +7,15 @@ import {getExt} from '#common/util'; import * as Storage from '#dom/storage'; import * as RESTful from '#dom/rest'; import * as Images from '#dom/images'; -import renameCurrent from './operations/rename-current.mjs'; -import * as CurrentFile from './current-file.mjs'; -import * as DOMTree from './dom-tree.mjs'; -import * as Cmd from './cmd.mjs'; -import * as IO from './io/index.mjs'; -import {uploadDirectory} from './directory.mjs'; -import * as Buffer from './buffer.mjs'; -import {loadRemote as _loadRemote} from './load-remote.mjs'; -import {selectByPattern} from './select-by-pattern.mjs'; +import renameCurrent from './operations/rename-current.js'; +import * as CurrentFile from './current-file.js'; +import * as DOMTree from './dom-tree.js'; +import * as Cmd from './cmd.js'; +import * as IO from './io/index.js'; +import {uploadDirectory} from './directory.js'; +import * as Buffer from './buffer.js'; +import {loadRemote as _loadRemote} from './load-remote.js'; +import {selectByPattern} from './select-by-pattern.js'; const {assign} = Object; diff --git a/client/dom/index.spec.mjs b/client/dom/index.spec.js similarity index 100% rename from client/dom/index.spec.mjs rename to client/dom/index.spec.js diff --git a/client/dom/io/index.mjs b/client/dom/io/index.js similarity index 98% rename from client/dom/io/index.mjs rename to client/dom/io/index.js index d46c78f0..192769e6 100644 --- a/client/dom/io/index.mjs +++ b/client/dom/io/index.js @@ -1,5 +1,5 @@ import {FS} from '#common/cloudfunc'; -import {sendRequest as _sendRequest} from './send-request.mjs'; +import {sendRequest as _sendRequest} from './send-request.js'; const {assign} = Object; diff --git a/client/dom/io/index.spec.mjs b/client/dom/io/index.spec.js similarity index 97% rename from client/dom/io/index.spec.mjs rename to client/dom/io/index.spec.js index e7d87cc2..8e9e2d08 100644 --- a/client/dom/io/index.spec.mjs +++ b/client/dom/io/index.spec.js @@ -1,5 +1,5 @@ import {test, stub} from 'supertape'; -import * as io from './index.mjs'; +import * as io from './index.js'; test('client: dom: io', (t) => { const sendRequest = stub(); diff --git a/client/dom/io/send-request.mjs b/client/dom/io/send-request.js similarity index 100% rename from client/dom/io/send-request.mjs rename to client/dom/io/send-request.js diff --git a/client/dom/io/send-request.spec.mjs b/client/dom/io/send-request.spec.js similarity index 84% rename from client/dom/io/send-request.spec.mjs rename to client/dom/io/send-request.spec.js index 9b151a3c..f8a960d8 100644 --- a/client/dom/io/send-request.spec.mjs +++ b/client/dom/io/send-request.spec.js @@ -1,5 +1,5 @@ import {test} from 'supertape'; -import {_replaceHash} from './send-request.mjs'; +import {_replaceHash} from './send-request.js'; test('cloudcmd: client: io: replaceHash', (t) => { const url = '/hello/####world'; diff --git a/client/dom/load-remote.mjs b/client/dom/load-remote.js similarity index 97% rename from client/dom/load-remote.mjs rename to client/dom/load-remote.js index 974763e0..ff8fb189 100644 --- a/client/dom/load-remote.mjs +++ b/client/dom/load-remote.js @@ -2,7 +2,7 @@ import {callbackify} from 'node:util'; import rendy from 'rendy'; import itype from 'itype'; -import load from 'load.js'; +import * as load from 'load.js'; import {tryToCatch} from 'try-to-catch'; import {findObjByNameInArr} from '#common/util'; import * as Files from '#dom/files'; diff --git a/client/dom/load.mjs b/client/dom/load.js similarity index 100% rename from client/dom/load.mjs rename to client/dom/load.js diff --git a/client/dom/operations/rename-current.mjs b/client/dom/operations/rename-current.js similarity index 96% rename from client/dom/operations/rename-current.mjs rename to client/dom/operations/rename-current.js index e446f5ca..8b6536d3 100644 --- a/client/dom/operations/rename-current.mjs +++ b/client/dom/operations/rename-current.js @@ -3,7 +3,7 @@ import capitalize from 'just-capitalize'; import * as _Dialog from '#dom/dialog'; import * as Storage from '#dom/storage'; import * as RESTful from '#dom/rest'; -import * as _currentFile from '../current-file.mjs'; +import * as _currentFile from '../current-file.js'; export default async (current, overrides = {}) => { const { diff --git a/client/dom/operations/rename-current.spec.mjs b/client/dom/operations/rename-current.spec.js similarity index 97% rename from client/dom/operations/rename-current.spec.mjs rename to client/dom/operations/rename-current.spec.js index b0aa30fa..a5ebb415 100644 --- a/client/dom/operations/rename-current.spec.mjs +++ b/client/dom/operations/rename-current.spec.js @@ -1,5 +1,5 @@ import {test, stub} from 'supertape'; -import renameCurrent from './rename-current.mjs'; +import renameCurrent from './rename-current.js'; test('cloudcmd: client: dom: renameCurrent: isCurrentFile', async (t) => { const current = {}; diff --git a/client/dom/rest.mjs b/client/dom/rest.js similarity index 96% rename from client/dom/rest.mjs rename to client/dom/rest.js index 99504cb6..3cf2fb66 100644 --- a/client/dom/rest.mjs +++ b/client/dom/rest.js @@ -2,7 +2,7 @@ import {tryToCatch} from 'try-to-catch'; import * as Dialog from '#dom/dialog'; import * as Images from '#dom/images'; import {encode} from '#common/entity'; -import * as IO from './io/index.mjs'; +import * as IO from './io/index.js'; const handleError = (promise) => async (...args) => { const [e, data] = await tryToCatch(promise, ...args); diff --git a/client/dom/select-by-pattern.mjs b/client/dom/select-by-pattern.js similarity index 93% rename from client/dom/select-by-pattern.mjs rename to client/dom/select-by-pattern.js index be992878..0bada6ef 100644 --- a/client/dom/select-by-pattern.mjs +++ b/client/dom/select-by-pattern.js @@ -1,10 +1,10 @@ import {alert, prompt} from '#dom/dialog'; import {getRegExp} from '#common/util'; -import {getCurrentName} from './current-file.mjs'; +import {getCurrentName} from './current-file.js'; import { isSelected, toggleSelectedFile, -} from './cmd.mjs'; +} from './cmd.js'; let SelectType = '*.*'; diff --git a/client/dom/storage.mjs b/client/dom/storage.js similarity index 100% rename from client/dom/storage.mjs rename to client/dom/storage.js diff --git a/client/dom/storage.spec.mjs b/client/dom/storage.spec.js similarity index 100% rename from client/dom/storage.spec.mjs rename to client/dom/storage.spec.js diff --git a/client/dom/upload-files.mjs b/client/dom/upload-files.js similarity index 96% rename from client/dom/upload-files.mjs rename to client/dom/upload-files.js index aafb38d3..1c37fe1b 100644 --- a/client/dom/upload-files.mjs +++ b/client/dom/upload-files.js @@ -5,7 +5,7 @@ import * as load from '#dom/load'; import {alert} from '#dom/dialog'; import {FS} from '#common/cloudfunc'; import * as Images from '#dom/images'; -import {getCurrentDirPath} from './current-file.mjs'; +import {getCurrentDirPath} from './current-file.js'; const loadFile = wraptile(_loadFile); const onEnd = wraptile(_onEnd); diff --git a/client/get-json-from-file-table.mjs b/client/get-json-from-file-table.js similarity index 100% rename from client/get-json-from-file-table.mjs rename to client/get-json-from-file-table.js diff --git a/client/key/binder.mjs b/client/key/binder.js similarity index 100% rename from client/key/binder.mjs rename to client/key/binder.js diff --git a/client/key/index.mjs b/client/key/index.js similarity index 98% rename from client/key/index.mjs rename to client/key/index.js index 06de23c8..6b4234a0 100644 --- a/client/key/index.mjs +++ b/client/key/index.js @@ -2,11 +2,11 @@ import clipboard from '@cloudcmd/clipboard'; import {fullstore} from 'fullstore'; import * as Events from '#dom/events'; -import * as Buffer from '../dom/buffer.mjs'; -import * as KEY from './key.mjs'; -import _vim from './vim/index.mjs'; -import setCurrentByChar from './set-current-by-char.mjs'; -import {createBinder} from './binder.mjs'; +import * as Buffer from '../dom/buffer.js'; +import * as KEY from './key.js'; +import _vim from './vim/index.js'; +import setCurrentByChar from './set-current-by-char.js'; +import {createBinder} from './binder.js'; const Chars = fullstore(); diff --git a/client/key/index.spec.mjs b/client/key/index.spec.js similarity index 88% rename from client/key/index.spec.mjs rename to client/key/index.spec.js index ad4753fb..62fbff4d 100644 --- a/client/key/index.spec.mjs +++ b/client/key/index.spec.js @@ -1,8 +1,8 @@ import autoGlobals from 'auto-globals'; import supertape from 'supertape'; -import {ESC} from './key.mjs'; -import {Key, _listener} from './index.mjs'; -import {getDOM, getCloudCmd} from './vim/globals.fixture.mjs'; +import {ESC} from './key.js'; +import {Key, _listener} from './index.js'; +import {getDOM, getCloudCmd} from './vim/globals.fixture.js'; const test = autoGlobals(supertape); const {stub} = supertape; diff --git a/client/key/key.mjs b/client/key/key.js similarity index 100% rename from client/key/key.mjs rename to client/key/key.js diff --git a/client/key/set-current-by-char.mjs b/client/key/set-current-by-char.js similarity index 100% rename from client/key/set-current-by-char.mjs rename to client/key/set-current-by-char.js diff --git a/client/key/vim/find.mjs b/client/key/vim/find.js similarity index 100% rename from client/key/vim/find.mjs rename to client/key/vim/find.js diff --git a/client/key/vim/find.spec.mjs b/client/key/vim/find.spec.js similarity index 79% rename from client/key/vim/find.spec.mjs rename to client/key/vim/find.spec.js index ee9a9458..59c9a249 100644 --- a/client/key/vim/find.spec.mjs +++ b/client/key/vim/find.spec.js @@ -1,6 +1,6 @@ import test from 'supertape'; -import {getDOM} from './globals.fixture.mjs'; -import {_next, _previous} from './find.mjs'; +import {getDOM} from './globals.fixture.js'; +import {_next, _previous} from './find.js'; globalThis.DOM = getDOM(); diff --git a/client/key/vim/globals.fixture.mjs b/client/key/vim/globals.fixture.js similarity index 100% rename from client/key/vim/globals.fixture.mjs rename to client/key/vim/globals.fixture.js diff --git a/client/key/vim/index.mjs b/client/key/vim/index.js similarity index 97% rename from client/key/vim/index.mjs rename to client/key/vim/index.js index 2bff53ee..dd9cd026 100644 --- a/client/key/vim/index.mjs +++ b/client/key/vim/index.js @@ -1,11 +1,11 @@ /* global CloudCmd */ /* global DOM */ -import vim from './vim.mjs'; -import * as finder from './find.mjs'; +import vim from './vim.js'; +import * as finder from './find.js'; import { setCurrent, selectFileNotParent, -} from './set-current.mjs'; +} from './set-current.js'; export default (key, event, overrides = {}) => { const defaults = { diff --git a/client/key/vim/index.spec.mjs b/client/key/vim/index.spec.js similarity index 99% rename from client/key/vim/index.spec.mjs rename to client/key/vim/index.spec.js index 10392c32..f187dea2 100644 --- a/client/key/vim/index.spec.mjs +++ b/client/key/vim/index.spec.js @@ -1,6 +1,6 @@ import {test, stub} from 'supertape'; -import {getDOM, getCloudCmd} from './globals.fixture.mjs'; -import vim, {selectFile as vimSelectFile} from './index.mjs'; +import {getDOM, getCloudCmd} from './globals.fixture.js'; +import vim, {selectFile as vimSelectFile} from './index.js'; globalThis.DOM = getDOM(); globalThis.CloudCmd = getCloudCmd(); diff --git a/client/key/vim/set-current.mjs b/client/key/vim/set-current.js similarity index 100% rename from client/key/vim/set-current.mjs rename to client/key/vim/set-current.js diff --git a/client/key/vim/vim.mjs b/client/key/vim/vim.js similarity index 100% rename from client/key/vim/vim.mjs rename to client/key/vim/vim.js diff --git a/client/key/vim/vim.spec.mjs b/client/key/vim/vim.spec.js similarity index 97% rename from client/key/vim/vim.spec.mjs rename to client/key/vim/vim.spec.js index 180f114f..88cdd89e 100644 --- a/client/key/vim/vim.spec.mjs +++ b/client/key/vim/vim.spec.js @@ -1,5 +1,5 @@ import {test, stub} from 'supertape'; -import vim from './vim.mjs'; +import vim from './vim.js'; test('vim: no operations', (t) => { const result = vim('hello', {}); diff --git a/client/listeners/get-index.mjs b/client/listeners/get-index.js similarity index 100% rename from client/listeners/get-index.mjs rename to client/listeners/get-index.js diff --git a/client/listeners/get-index.spec.mjs b/client/listeners/get-index.spec.js similarity index 90% rename from client/listeners/get-index.spec.mjs rename to client/listeners/get-index.spec.js index ae05159f..0380cdc1 100644 --- a/client/listeners/get-index.spec.mjs +++ b/client/listeners/get-index.spec.js @@ -1,5 +1,5 @@ import test from 'supertape'; -import {getIndex} from './get-index.mjs'; +import {getIndex} from './get-index.js'; test('cloudcmd: client: listeners: getIndex: not found', (t) => { const array = ['hello']; diff --git a/client/listeners/get-range.mjs b/client/listeners/get-range.js similarity index 100% rename from client/listeners/get-range.mjs rename to client/listeners/get-range.js diff --git a/client/listeners/get-range.spec.mjs b/client/listeners/get-range.spec.js similarity index 96% rename from client/listeners/get-range.spec.mjs rename to client/listeners/get-range.spec.js index 38b8ab32..77c950f4 100644 --- a/client/listeners/get-range.spec.mjs +++ b/client/listeners/get-range.spec.js @@ -1,5 +1,5 @@ import test from 'supertape'; -import {getRange} from './get-range.mjs'; +import {getRange} from './get-range.js'; test('cloudcmd: client: listeners: getRange: direct', (t) => { const expected = [ diff --git a/client/listeners/index.mjs b/client/listeners/index.js similarity index 99% rename from client/listeners/index.mjs rename to client/listeners/index.js index 98add90d..117a6a40 100644 --- a/client/listeners/index.mjs +++ b/client/listeners/index.js @@ -7,13 +7,13 @@ import clipboard from '@cloudcmd/clipboard'; import * as Events from '#dom/events'; import {uploadFiles} from '#dom/upload-files'; import {FS} from '#common/cloudfunc'; -import {getRange} from './get-range.mjs'; -import {getIndex} from './get-index.mjs'; +import {getRange} from './get-range.js'; +import {getIndex} from './get-index.js'; const NBSP_REG = RegExp(String.fromCharCode(160), 'g'); const SPACE = ' '; -export const init = async () => { +export async function init() { contextMenu(); dragndrop(); unload(); @@ -21,7 +21,7 @@ export const init = async () => { resize(); header(); await config(); -}; +} const unselect = (event) => { const isMac = /Mac/.test(globalThis.navigator.platform); diff --git a/client/load-module.mjs b/client/load-module.js similarity index 100% rename from client/load-module.mjs rename to client/load-module.js diff --git a/client/modules/cloud.mjs b/client/modules/cloud.js similarity index 100% rename from client/modules/cloud.mjs rename to client/modules/cloud.js diff --git a/client/modules/command-line.mjs b/client/modules/command-line.js similarity index 96% rename from client/modules/command-line.mjs rename to client/modules/command-line.js index bf3b071b..7a1c3993 100644 --- a/client/modules/command-line.mjs +++ b/client/modules/command-line.js @@ -1,8 +1,7 @@ /* global CloudCmd */ import * as Dialog from '#dom/dialog'; -export const init = () => {}; - +export function init() {} CloudCmd.CommandLine = { init, show, diff --git a/client/modules/config/index.mjs b/client/modules/config/index.js similarity index 98% rename from client/modules/config/index.mjs rename to client/modules/config/index.js index 115e477e..e58c4f30 100644 --- a/client/modules/config/index.mjs +++ b/client/modules/config/index.js @@ -12,7 +12,7 @@ import * as Events from '#dom/events'; import * as Files from '#dom/files'; import {getTitle} from '#common/cloudfunc'; import * as Images from '#dom/images'; -import * as input from './input.mjs'; +import * as input from './input.js'; const {Dialog, setTitle} = DOM; @@ -40,7 +40,7 @@ let Template; const loadCSS = load.css; -export const init = async () => { +export async function init() { if (!CloudCmd.config('configDialog')) return; @@ -56,7 +56,7 @@ export const init = async () => { ]); initSocket(); -}; +} const {config, Key} = CloudCmd; diff --git a/client/modules/config/input.mjs b/client/modules/config/input.js similarity index 100% rename from client/modules/config/input.mjs rename to client/modules/config/input.js diff --git a/client/modules/contact.js b/client/modules/contact.js index 8b3994d6..48c7bd19 100644 --- a/client/modules/contact.js +++ b/client/modules/contact.js @@ -1,36 +1,34 @@ /* global CloudCmd */ /* global DOM */ +import olark from '@cloudcmd/olark'; +import * as Images from '#dom/images'; -'use strict'; - -CloudCmd.Contact = exports; - -const olark = require('@cloudcmd/olark'); -const Images = require('#dom/images'); +CloudCmd.Contact = { + init, + show, + hide, +}; const {Events} = DOM; const {Key} = CloudCmd; -module.exports.show = show; -module.exports.hide = hide; - -module.exports.init = () => { +export function init() { Events.addKey(onKey); olark.identify('6216-545-10-4223'); olark('api.box.onExpand', show); olark('api.box.onShow', show); olark('api.box.onShrink', hide); -}; +} -function show() { +export function show() { Key.unsetBind(); Images.hide(); olark('api.box.expand'); } -function hide() { +export function hide() { Key.setBind(); olark('api.box.hide'); } diff --git a/client/modules/edit-file-vim.mjs b/client/modules/edit-file-vim.js similarity index 100% rename from client/modules/edit-file-vim.mjs rename to client/modules/edit-file-vim.js diff --git a/client/modules/edit-file.mjs b/client/modules/edit-file.js similarity index 100% rename from client/modules/edit-file.mjs rename to client/modules/edit-file.js diff --git a/client/modules/edit-names-vim.mjs b/client/modules/edit-names-vim.js similarity index 100% rename from client/modules/edit-names-vim.mjs rename to client/modules/edit-names-vim.js diff --git a/client/modules/edit-names.mjs b/client/modules/edit-names.js similarity index 100% rename from client/modules/edit-names.mjs rename to client/modules/edit-names.js diff --git a/client/modules/edit.mjs b/client/modules/edit.js similarity index 100% rename from client/modules/edit.mjs rename to client/modules/edit.js diff --git a/client/modules/help.mjs b/client/modules/help.js similarity index 99% rename from client/modules/help.mjs rename to client/modules/help.js index c418bdf1..74657a90 100644 --- a/client/modules/help.mjs +++ b/client/modules/help.js @@ -25,4 +25,3 @@ export function show() { export function hide() { CloudCmd.View.hide(); } - diff --git a/client/modules/konsole.mjs b/client/modules/konsole.js similarity index 100% rename from client/modules/konsole.mjs rename to client/modules/konsole.js diff --git a/client/modules/markdown.mjs b/client/modules/markdown.js similarity index 100% rename from client/modules/markdown.mjs rename to client/modules/markdown.js diff --git a/client/modules/menu/cloudmenu.mjs b/client/modules/menu/cloudmenu.js similarity index 100% rename from client/modules/menu/cloudmenu.mjs rename to client/modules/menu/cloudmenu.js diff --git a/client/modules/menu/index.mjs b/client/modules/menu/index.js similarity index 99% rename from client/modules/menu/index.mjs rename to client/modules/menu/index.js index 3d3f4412..249e755c 100644 --- a/client/modules/menu/index.mjs +++ b/client/modules/menu/index.js @@ -45,7 +45,7 @@ export async function init() { type: 'file', }); - const {createCloudMenu} = await import('./cloudmenu.mjs'); + const {createCloudMenu} = await import('./cloudmenu.js'); const {name} = fm.dataset; diff --git a/client/modules/operation/format.mjs b/client/modules/operation/format.js similarity index 100% rename from client/modules/operation/format.mjs rename to client/modules/operation/format.js diff --git a/client/modules/operation/get-next-current-name.mjs b/client/modules/operation/get-next-current-name.js similarity index 100% rename from client/modules/operation/get-next-current-name.mjs rename to client/modules/operation/get-next-current-name.js diff --git a/client/modules/operation/index.mjs b/client/modules/operation/index.js similarity index 97% rename from client/modules/operation/index.mjs rename to client/modules/operation/index.js index 1243a3d4..f349f7d8 100644 --- a/client/modules/operation/index.mjs +++ b/client/modules/operation/index.js @@ -5,9 +5,9 @@ import exec from 'execon'; import load from 'load.js'; import {tryToCatch} from 'try-to-catch'; import {encode} from '#common/entity'; -import {removeExtension} from './remove-extension.mjs'; -import {setListeners} from './set-listeners.mjs'; -import {getNextCurrentName} from './get-next-current-name.mjs'; +import {removeExtension} from './remove-extension.js'; +import {setListeners} from './set-listeners.js'; +import {getNextCurrentName} from './get-next-current-name.js'; const {DOM, CloudCmd} = globalThis; @@ -190,11 +190,11 @@ function getPacker(type) { return packTarFn; } -export const hide = () => { +export function hide() { CloudCmd.View.hide(); -}; +} -export const show = (operation, data) => { +export function show(operation, data) { if (!Loaded) return; @@ -215,7 +215,7 @@ export const show = (operation, data) => { if (operation === 'extract') return Operation.extract(); -}; +} Operation.copy = processFiles({ type: 'copy', diff --git a/client/modules/operation/remove-extension.mjs b/client/modules/operation/remove-extension.js similarity index 100% rename from client/modules/operation/remove-extension.mjs rename to client/modules/operation/remove-extension.js diff --git a/client/modules/operation/remove-extension.spec.mjs b/client/modules/operation/remove-extension.spec.js similarity index 92% rename from client/modules/operation/remove-extension.spec.mjs rename to client/modules/operation/remove-extension.spec.js index 8dbacb61..fa11e9e2 100644 --- a/client/modules/operation/remove-extension.spec.mjs +++ b/client/modules/operation/remove-extension.spec.js @@ -1,5 +1,5 @@ import test from 'supertape'; -import {removeExtension} from './remove-extension.mjs'; +import {removeExtension} from './remove-extension.js'; test('cloudcmd: client: modules: operation: removeExtension: .tar.gz', (t) => { const name = 'hello'; diff --git a/client/modules/operation/set-listeners.mjs b/client/modules/operation/set-listeners.js similarity index 98% rename from client/modules/operation/set-listeners.mjs rename to client/modules/operation/set-listeners.js index 355aee79..431c7791 100644 --- a/client/modules/operation/set-listeners.mjs +++ b/client/modules/operation/set-listeners.js @@ -1,7 +1,7 @@ /* global DOM */ import forEachKey from 'for-each-key'; import wraptile from 'wraptile'; -import {format} from './format.mjs'; +import {format} from './format.js'; const {Dialog, Images} = DOM; diff --git a/client/modules/polyfill.mjs b/client/modules/polyfill.js similarity index 100% rename from client/modules/polyfill.mjs rename to client/modules/polyfill.js diff --git a/client/modules/polyfill.spec.mjs b/client/modules/polyfill.spec.js similarity index 87% rename from client/modules/polyfill.spec.mjs rename to client/modules/polyfill.spec.js index f595be64..740947eb 100644 --- a/client/modules/polyfill.spec.mjs +++ b/client/modules/polyfill.spec.js @@ -1,5 +1,5 @@ import {test, stub} from 'supertape'; -import {scrollIntoViewIfNeeded} from './polyfill.mjs'; +import {scrollIntoViewIfNeeded} from './polyfill.js'; test('cloudcmd: client: polyfill: scrollIntoViewIfNeeded', (t) => { const scroll = stub(); diff --git a/client/modules/terminal-run.mjs b/client/modules/terminal-run.js similarity index 100% rename from client/modules/terminal-run.mjs rename to client/modules/terminal-run.js diff --git a/client/modules/terminal.mjs b/client/modules/terminal.js similarity index 100% rename from client/modules/terminal.mjs rename to client/modules/terminal.js diff --git a/client/modules/upload.mjs b/client/modules/upload.js similarity index 100% rename from client/modules/upload.mjs rename to client/modules/upload.js diff --git a/client/modules/user-menu/get-user-menu.mjs b/client/modules/user-menu/get-user-menu.js similarity index 100% rename from client/modules/user-menu/get-user-menu.mjs rename to client/modules/user-menu/get-user-menu.js diff --git a/client/modules/user-menu/get-user-menu.spec.mjs b/client/modules/user-menu/get-user-menu.spec.js similarity index 89% rename from client/modules/user-menu/get-user-menu.spec.mjs rename to client/modules/user-menu/get-user-menu.spec.js index aae42909..606eb820 100644 --- a/client/modules/user-menu/get-user-menu.spec.mjs +++ b/client/modules/user-menu/get-user-menu.spec.js @@ -1,5 +1,5 @@ import test from 'supertape'; -import {getUserMenu} from './get-user-menu.mjs'; +import {getUserMenu} from './get-user-menu.js'; test('user-menu: getUserMenu', (t) => { const menu = `module.exports = { diff --git a/client/modules/user-menu/index.mjs b/client/modules/user-menu/index.js similarity index 94% rename from client/modules/user-menu/index.mjs rename to client/modules/user-menu/index.js index 0be4d123..51931ac1 100644 --- a/client/modules/user-menu/index.mjs +++ b/client/modules/user-menu/index.js @@ -10,11 +10,11 @@ import {tryToCatch} from 'try-to-catch'; import {codeFrameColumns} from '@babel/code-frame'; import * as Dialog from '#dom/dialog'; import * as Images from '#dom/images'; -import {getUserMenu} from './get-user-menu.mjs'; -import {navigate} from './navigate.mjs'; -import {parseError} from './parse-error.mjs'; -import {parseUserMenu} from './parse-user-menu.mjs'; -import {runSelected} from './run.mjs'; +import {getUserMenu} from './get-user-menu.js'; +import {navigate} from './navigate.js'; +import {parseError} from './parse-error.js'; +import {parseUserMenu} from './parse-user-menu.js'; +import {runSelected} from './run.js'; const loadCSS = load.css; const sourceStore = fullstore(); diff --git a/client/modules/user-menu/navigate.mjs b/client/modules/user-menu/navigate.js similarity index 97% rename from client/modules/user-menu/navigate.mjs rename to client/modules/user-menu/navigate.js index 2ebebd17..0fa4d672 100644 --- a/client/modules/user-menu/navigate.mjs +++ b/client/modules/user-menu/navigate.js @@ -4,7 +4,7 @@ import { K, UP, DOWN, -} from '../../key/key.mjs'; +} from '../../key/key.js'; const store = fullstore(1); const isDigit = (a) => /^\d+$/.test(a); diff --git a/client/modules/user-menu/navigate.spec.mjs b/client/modules/user-menu/navigate.spec.js similarity index 97% rename from client/modules/user-menu/navigate.spec.mjs rename to client/modules/user-menu/navigate.spec.js index a2de328b..6539c8e9 100644 --- a/client/modules/user-menu/navigate.spec.mjs +++ b/client/modules/user-menu/navigate.spec.js @@ -1,11 +1,11 @@ import test from 'supertape'; -import {navigate} from './navigate.mjs'; +import {navigate} from './navigate.js'; import { UP, DOWN, J, K, -} from '../../key/key.mjs'; +} from '../../key/key.js'; test('cloudcmd: user-menu: navigate: DOWN', (t) => { const el = { diff --git a/client/modules/user-menu/parse-error.mjs b/client/modules/user-menu/parse-error.js similarity index 100% rename from client/modules/user-menu/parse-error.mjs rename to client/modules/user-menu/parse-error.js diff --git a/client/modules/user-menu/parse-error.spec.mjs b/client/modules/user-menu/parse-error.spec.js similarity index 94% rename from client/modules/user-menu/parse-error.spec.mjs rename to client/modules/user-menu/parse-error.spec.js index cef3ae55..5ec8da45 100644 --- a/client/modules/user-menu/parse-error.spec.mjs +++ b/client/modules/user-menu/parse-error.spec.js @@ -1,5 +1,5 @@ import test from 'supertape'; -import {parseError} from './parse-error.mjs'; +import {parseError} from './parse-error.js'; test('user-menu: parse-error', (t) => { const result = parseError({ diff --git a/client/modules/user-menu/parse-user-menu.mjs b/client/modules/user-menu/parse-user-menu.js similarity index 100% rename from client/modules/user-menu/parse-user-menu.mjs rename to client/modules/user-menu/parse-user-menu.js diff --git a/client/modules/user-menu/parse-user-menu.spec.mjs b/client/modules/user-menu/parse-user-menu.spec.js similarity index 91% rename from client/modules/user-menu/parse-user-menu.spec.mjs rename to client/modules/user-menu/parse-user-menu.spec.js index a7914152..0a9dc02c 100644 --- a/client/modules/user-menu/parse-user-menu.spec.mjs +++ b/client/modules/user-menu/parse-user-menu.spec.js @@ -1,5 +1,5 @@ import {test, stub} from 'supertape'; -import {parseUserMenu} from './parse-user-menu.mjs'; +import {parseUserMenu} from './parse-user-menu.js'; test('cloudcmd: user menu: parse', (t) => { const fn = stub(); diff --git a/client/modules/user-menu/run.mjs b/client/modules/user-menu/run.js similarity index 100% rename from client/modules/user-menu/run.mjs rename to client/modules/user-menu/run.js diff --git a/client/modules/user-menu/run.spec.mjs b/client/modules/user-menu/run.spec.js similarity index 89% rename from client/modules/user-menu/run.spec.mjs rename to client/modules/user-menu/run.spec.js index 8cac782d..86738712 100644 --- a/client/modules/user-menu/run.spec.mjs +++ b/client/modules/user-menu/run.spec.js @@ -1,5 +1,5 @@ import {test, stub} from 'supertape'; -import {runSelected} from './run.mjs'; +import {runSelected} from './run.js'; test('cloudcmd: client: user menu: run', async (t) => { const runUserMenu = stub(); diff --git a/client/modules/view/get-type.mjs b/client/modules/view/get-type.js similarity index 100% rename from client/modules/view/get-type.mjs rename to client/modules/view/get-type.js diff --git a/client/modules/view/index.mjs b/client/modules/view/index.js similarity index 99% rename from client/modules/view/index.mjs rename to client/modules/view/index.js index da19f542..2fac8964 100644 --- a/client/modules/view/index.mjs +++ b/client/modules/view/index.js @@ -16,7 +16,7 @@ import { isImage, isAudio, getType, -} from './types.mjs'; +} from './types.js'; const CloudCmd = globalThis.CloudCmd || {}; const DOM = globalThis.DOM || {}; diff --git a/client/modules/view/index.spec.mjs b/client/modules/view/index.spec.js similarity index 98% rename from client/modules/view/index.spec.mjs rename to client/modules/view/index.spec.js index 585ac3e2..8d184548 100644 --- a/client/modules/view/index.spec.mjs +++ b/client/modules/view/index.spec.js @@ -6,7 +6,7 @@ import { _viewHtml, _Config, _createIframe, -} from './index.mjs'; +} from './index.js'; const test = autoGlobals(tape); diff --git a/client/modules/view/types.mjs b/client/modules/view/types.js similarity index 100% rename from client/modules/view/types.mjs rename to client/modules/view/types.js diff --git a/client/modules/view/types.spec.mjs b/client/modules/view/types.spec.js similarity index 94% rename from client/modules/view/types.spec.mjs rename to client/modules/view/types.spec.js index 58a06672..7ed159f4 100644 --- a/client/modules/view/types.spec.mjs +++ b/client/modules/view/types.spec.js @@ -1,5 +1,5 @@ import {test, stub} from 'supertape'; -import {isAudio, _detectType} from './types.mjs'; +import {isAudio, _detectType} from './types.js'; test('cloudcmd: client: view: types: isAudio', (t) => { const result = isAudio('hello.mp3'); diff --git a/client/sort.mjs b/client/sort.js similarity index 100% rename from client/sort.mjs rename to client/sort.js diff --git a/client/sw/register.mjs b/client/sw/register.js similarity index 90% rename from client/sw/register.mjs rename to client/sw/register.js index da3ff0f2..928d63c9 100644 --- a/client/sw/register.mjs +++ b/client/sw/register.js @@ -16,7 +16,7 @@ export async function registerSW(prefix) { const {serviceWorker} = navigator; const register = serviceWorker.register.bind(serviceWorker); - const [e, sw] = await tryToCatch(register, `${prefix}/sw.mjs`); + const [e, sw] = await tryToCatch(register, `${prefix}/sw.js`); if (e) return null; diff --git a/client/sw/register.spec.mjs b/client/sw/register.spec.js similarity index 99% rename from client/sw/register.spec.mjs rename to client/sw/register.spec.js index 5734a130..5cb98049 100644 --- a/client/sw/register.spec.mjs +++ b/client/sw/register.spec.js @@ -6,7 +6,7 @@ import { listenSW, registerSW, unregisterSW, -} from './register.mjs'; +} from './register.js'; const test = autoGlobals(tape); diff --git a/client/sw/sw.mjs b/client/sw/sw.js similarity index 100% rename from client/sw/sw.mjs rename to client/sw/sw.js diff --git a/common/callbackify.js b/common/callbackify.js index c2040a3d..71160ac7 100644 --- a/common/callbackify.js +++ b/common/callbackify.js @@ -1,8 +1,6 @@ -'use strict'; - const success = (f) => (data) => f(null, data); -module.exports = (promise) => (...a) => { +export default (promise) => (...a) => { const fn = a.pop(); promise(...a) diff --git a/common/callbackify.spec.js b/common/callbackify.spec.js index 0a46d9e9..d1586d5a 100644 --- a/common/callbackify.spec.js +++ b/common/callbackify.spec.js @@ -1,11 +1,7 @@ -'use strict'; - -const {promisify} = require('node:util'); -const {tryToCatch} = require('try-to-catch'); - -const {test, stub} = require('supertape'); - -const callbackify = require('./callbackify'); +import {promisify} from 'node:util'; +import {tryToCatch} from 'try-to-catch'; +import {test, stub} from 'supertape'; +import callbackify from './callbackify.js'; test('cloudcmd: common: callbackify: error', async (t) => { const promise = stub().rejects(Error('hello')); diff --git a/common/cloudfunc.mjs b/common/cloudfunc.js similarity index 100% rename from common/cloudfunc.mjs rename to common/cloudfunc.js diff --git a/common/cloudfunc.spec.mjs b/common/cloudfunc.spec.js similarity index 100% rename from common/cloudfunc.spec.mjs rename to common/cloudfunc.spec.js diff --git a/common/datetime.js b/common/datetime.js index 131c27fb..d7982ab4 100644 --- a/common/datetime.js +++ b/common/datetime.js @@ -1,8 +1,6 @@ -'use strict'; +import shortdate from 'shortdate'; -const shortdate = require('shortdate'); - -module.exports = (date) => { +export default (date) => { date = date || new Date(); check(date); diff --git a/common/datetime.spec.js b/common/datetime.spec.js index 6da5fad2..e3edb2ef 100644 --- a/common/datetime.spec.js +++ b/common/datetime.spec.js @@ -1,9 +1,6 @@ -'use strict'; - -const {test} = require('supertape'); -const {tryCatch} = require('try-catch'); - -const datetime = require('./datetime'); +import {test} from 'supertape'; +import {tryCatch} from 'try-catch'; +import datetime from './datetime.js'; test('common: datetime', (t) => { const dateStr = 'Fri, 17 Aug 2018 10:56:48'; diff --git a/common/entity.mjs b/common/entity.js similarity index 100% rename from common/entity.mjs rename to common/entity.js diff --git a/common/entity.spec.mjs b/common/entity.spec.js similarity index 100% rename from common/entity.spec.mjs rename to common/entity.spec.js diff --git a/common/try-to-promise-all.js b/common/try-to-promise-all.js index e839d27e..1dcfa3a8 100644 --- a/common/try-to-promise-all.js +++ b/common/try-to-promise-all.js @@ -1,9 +1,8 @@ -'use strict'; +import {tryToCatch} from 'try-to-catch'; -const {tryToCatch} = require('try-to-catch'); const all = Promise.all.bind(Promise); -module.exports = async (a) => { +export default async (a) => { const [e, result = []] = await tryToCatch(all, a); return [ diff --git a/common/try-to-promise-all.spec.js b/common/try-to-promise-all.spec.js index e86772fd..eafb036c 100644 --- a/common/try-to-promise-all.spec.js +++ b/common/try-to-promise-all.spec.js @@ -1,7 +1,5 @@ -'use strict'; - -const {test} = require('supertape'); -const tryToPromiseAll = require('./try-to-promise-all'); +import {test} from 'supertape'; +import tryToPromiseAll from './try-to-promise-all.js'; const resolve = Promise.resolve.bind(Promise); const reject = Promise.reject.bind(Promise); diff --git a/common/util.mjs b/common/util.js similarity index 100% rename from common/util.mjs rename to common/util.js diff --git a/common/util.spec.mjs b/common/util.spec.js similarity index 100% rename from common/util.spec.mjs rename to common/util.spec.js diff --git a/cssnano.config.mjs b/cssnano.config.js similarity index 100% rename from cssnano.config.mjs rename to cssnano.config.js diff --git a/docker/Dockerfile b/docker/Dockerfile index 39312e00..1549b724 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -22,4 +22,4 @@ ENV cloudcmd_open=false EXPOSE 8000 -ENTRYPOINT ["/usr/src/app/bin/cloudcmd.mjs"] +ENTRYPOINT ["/usr/src/app/bin/cloudcmd.js"] diff --git a/docker/Dockerfile.alpine b/docker/Dockerfile.alpine index b8cc6e3e..b873c341 100644 --- a/docker/Dockerfile.alpine +++ b/docker/Dockerfile.alpine @@ -26,5 +26,5 @@ ENV cloudcmd_open false EXPOSE 8000 -ENTRYPOINT ["/usr/src/app/bin/cloudcmd.mjs"] +ENTRYPOINT ["/usr/src/app/bin/cloudcmd.js"] diff --git a/eslint.config.mjs b/eslint.config.js similarity index 100% rename from eslint.config.mjs rename to eslint.config.js diff --git a/package.json b/package.json index 6501ca82..ffa02dde 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cloudcmd", "version": "19.2.0", - "type": "commonjs", + "type": "module", "author": "coderaiser (https://github.com/coderaiser)", "description": "File manager for the web with console and editor", "homepage": "http://cloudcmd.io", @@ -10,7 +10,7 @@ "type": "git", "url": "git+https://github.com/coderaiser/cloudcmd.git" }, - "main": "server/cloudcmd.mjs", + "main": "server/cloudcmd.js", "keywords": [ "console", "terminal", @@ -39,7 +39,7 @@ "server" ], "bin": { - "cloudcmd": "bin/cloudcmd.mjs" + "cloudcmd": "bin/cloudcmd.js" }, "scripts": { "start": "madrun start", @@ -221,18 +221,18 @@ }, "imports": { "#css/": "./css/", - "#dom": "./client/dom/index.mjs", - "#dom/events": "./client/dom/events/index.mjs", - "#dom/load": "./client/dom/load.mjs", - "#dom/dialog": "./client/dom/dialog.mjs", - "#dom/images": "./client/dom/images.mjs", - "#dom/files": "./client/dom/files.mjs", - "#dom/upload-files": "./client/dom/upload-files.mjs", - "#dom/storage": "./client/dom/storage.mjs", - "#dom/rest": "./client/dom/rest.mjs", - "#common/util": "./common/util.mjs", - "#common/cloudfunc": "./common/cloudfunc.mjs", - "#common/entity": "./common/entity.mjs" + "#dom": "./client/dom/index.js", + "#dom/events": "./client/dom/events/index.js", + "#dom/load": "./client/dom/load.js", + "#dom/dialog": "./client/dom/dialog.js", + "#dom/images": "./client/dom/images.js", + "#dom/files": "./client/dom/files.js", + "#dom/upload-files": "./client/dom/upload-files.js", + "#dom/storage": "./client/dom/storage.js", + "#dom/rest": "./client/dom/rest.js", + "#common/util": "./common/util.js", + "#common/cloudfunc": "./common/cloudfunc.js", + "#common/entity": "./common/entity.js" }, "engines": { "node": ">=22" diff --git a/rules/split-autoglobals-with-tape.mjs b/rules/split-autoglobals-with-tape.js similarity index 100% rename from rules/split-autoglobals-with-tape.mjs rename to rules/split-autoglobals-with-tape.js diff --git a/server/auth.js b/server/auth.js index e0e40961..09da0c2a 100644 --- a/server/auth.js +++ b/server/auth.js @@ -1,12 +1,11 @@ -'use strict'; +import httpAuth from 'http-auth'; +import criton from 'criton'; +import currify from 'currify'; -const httpAuth = require('http-auth'); -const criton = require('criton'); -const currify = require('currify'); const middle = currify(_middle); const check = currify(_check); -module.exports = (config) => { +export default (config) => { const auth = httpAuth.basic({ realm: 'Cloud Commander', }, check(config)); diff --git a/server/cloudcmd.mjs b/server/cloudcmd.js similarity index 95% rename from server/cloudcmd.mjs rename to server/cloudcmd.js index 3afb544c..996ac5d4 100644 --- a/server/cloudcmd.mjs +++ b/server/cloudcmd.js @@ -16,15 +16,15 @@ import nomine from 'nomine'; import fileop from '@cloudcmd/fileop'; import * as cloudfunc from '#common/cloudfunc'; import authentication from './auth.js'; -import {createConfig, configPath} from './config.mjs'; -import modulas from './modulas.mjs'; -import userMenu from './user-menu.mjs'; -import rest from './rest/index.mjs'; -import route from './route.mjs'; -import * as validate from './validate.mjs'; +import {createConfig, configPath} from './config.js'; +import modulas from './modulas.js'; +import userMenu from './user-menu.js'; +import rest from './rest/index.js'; +import route from './route.js'; +import * as validate from './validate.js'; import prefixer from './prefixer.js'; import terminal from './terminal.js'; -import {distributeExport} from './distribute/export.mjs'; +import {distributeExport} from './distribute/export.js'; import {createDepStore} from './depstore.js'; const __filename = fileURLToPath(import.meta.url); diff --git a/server/cloudcmd.spec.mjs b/server/cloudcmd.spec.js similarity index 99% rename from server/cloudcmd.spec.mjs rename to server/cloudcmd.spec.js index 263e2e15..65344534 100644 --- a/server/cloudcmd.spec.mjs +++ b/server/cloudcmd.spec.js @@ -9,7 +9,7 @@ import cloudcmd, { _getPrefix, _initAuth, _getIndexPath, -} from './cloudcmd.mjs'; +} from './cloudcmd.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/server/columns.mjs b/server/columns.js similarity index 100% rename from server/columns.mjs rename to server/columns.js diff --git a/server/columns.spec.mjs b/server/columns.spec.js similarity index 95% rename from server/columns.spec.mjs rename to server/columns.spec.js index 76d80254..533cfe75 100644 --- a/server/columns.spec.mjs +++ b/server/columns.spec.js @@ -2,7 +2,7 @@ import {dirname} from 'node:path'; import {fileURLToPath} from 'node:url'; import fs from 'node:fs'; import test from 'supertape'; -import {getColumns, isDev} from './columns.mjs'; +import {getColumns, isDev} from './columns.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/server/config.mjs b/server/config.js similarity index 88% rename from server/config.mjs rename to server/config.js index 3ec5bee8..d52088ab 100644 --- a/server/config.mjs +++ b/server/config.js @@ -1,32 +1,24 @@ +import path, {dirname} from 'node:path'; +import fs from 'node:fs'; +import Emitter from 'node:events'; +import {homedir} from 'node:os'; import {fileURLToPath} from 'node:url'; -import {dirname} from 'node:path'; -import {createRequire} from 'node:module'; +import currify from 'currify'; +import wraptile from 'wraptile'; +import {tryToCatch} from 'try-to-catch'; +import pullout from 'pullout'; +import ponse from 'ponse'; +import jonny from 'jonny'; +import jju from 'jju'; +import writejson from 'writejson'; +import {tryCatch} from 'try-catch'; +import criton from 'criton'; +import * as CloudFunc from '#common/cloudfunc'; +import exit from './exit.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -const require = createRequire(import.meta.url); const DIR_SERVER = `${__dirname}/`; - -const path = require('node:path'); - -const fs = require('node:fs'); -const Emitter = require('node:events'); -const {homedir} = require('node:os'); - -const currify = require('currify'); - -const wraptile = require('wraptile'); -const {tryToCatch} = require('try-to-catch'); -const pullout = require('pullout'); -const ponse = require('ponse'); -const jonny = require('jonny'); -const jju = require('jju'); -const writejson = require('writejson'); -const {tryCatch} = require('try-catch'); -const criton = require('criton'); -const exit = require(`${DIR_SERVER}exit`); - -const CloudFunc = require('../common/cloudfunc.mjs'); const isUndefined = (a) => typeof a === 'undefined'; const DIR = `${DIR_SERVER}../`; const HOME = homedir(); diff --git a/server/config.spec.mjs b/server/config.spec.js similarity index 95% rename from server/config.spec.mjs rename to server/config.spec.js index 4a750e51..92b0646c 100644 --- a/server/config.spec.mjs +++ b/server/config.spec.js @@ -1,8 +1,8 @@ import {createRequire} from 'node:module'; import {test, stub} from 'supertape'; import {apiURL} from '#common/cloudfunc'; -import {createConfig, _cryptoPass} from './config.mjs'; -import {connect} from '../test/before.mjs'; +import {createConfig, _cryptoPass} from './config.js'; +import {connect} from '../test/before.js'; const require = createRequire(import.meta.url); const fixture = require('./config.fixture.json'); diff --git a/server/depstore.js b/server/depstore.js index 0d8653d7..c5fefaa9 100644 --- a/server/depstore.js +++ b/server/depstore.js @@ -1,6 +1,4 @@ -'use strict'; - -module.exports.createDepStore = () => { +export const createDepStore = () => { const deps = {}; return (name, value) => { diff --git a/server/distribute/export.mjs b/server/distribute/export.js similarity index 99% rename from server/distribute/export.mjs rename to server/distribute/export.js index aa0dbc1e..3803ca2a 100644 --- a/server/distribute/export.mjs +++ b/server/distribute/export.js @@ -11,7 +11,7 @@ import log, { getMessage, getDescription, logWrapped, -} from './log.mjs'; +} from './log.js'; const omitList = [ 'auth', diff --git a/server/distribute/export.spec.mjs b/server/distribute/export.spec.js similarity index 94% rename from server/distribute/export.spec.mjs rename to server/distribute/export.spec.js index f234c8e7..ca6155a8 100644 --- a/server/distribute/export.spec.mjs +++ b/server/distribute/export.spec.js @@ -1,8 +1,8 @@ import {once} from 'node:events'; import test from 'supertape'; import io from 'socket.io-client'; -import * as Config from '../config.mjs'; -import {connect} from '../../test/before.mjs'; +import * as Config from '../config.js'; +import {connect} from '../../test/before.js'; const config = Config.createConfig(); diff --git a/server/distribute/import.mjs b/server/distribute/import.js similarity index 98% rename from server/distribute/import.mjs rename to server/distribute/import.js index 4f503425..57745c51 100644 --- a/server/distribute/import.mjs +++ b/server/distribute/import.js @@ -4,8 +4,8 @@ import squad from 'squad'; import {fullstore} from 'fullstore'; import io from 'socket.io-client'; import _forEachKey from 'for-each-key'; -import log from './log.mjs'; -import * as env from '../env.mjs'; +import log from './log.js'; +import * as env from '../env.js'; const noop = () => {}; const forEachKey = currify(_forEachKey); diff --git a/server/distribute/import.spec.mjs b/server/distribute/import.spec.js similarity index 97% rename from server/distribute/import.spec.mjs rename to server/distribute/import.spec.js index 35b0dd6c..f5e2539c 100644 --- a/server/distribute/import.spec.mjs +++ b/server/distribute/import.spec.js @@ -2,9 +2,9 @@ import process from 'node:process'; import {promisify} from 'node:util'; import test from 'supertape'; import {tryToCatch} from 'try-to-catch'; -import {connect} from '../../test/before.mjs'; -import {createConfigManager} from '../cloudcmd.mjs'; -import {distributeImport} from './import.mjs'; +import {connect} from '../../test/before.js'; +import {createConfigManager} from '../cloudcmd.js'; +import {distributeImport} from './import.js'; const distribute = { import: promisify(distributeImport), diff --git a/server/distribute/log.mjs b/server/distribute/log.js similarity index 100% rename from server/distribute/log.mjs rename to server/distribute/log.js diff --git a/server/distribute/log.spec.mjs b/server/distribute/log.spec.js similarity index 89% rename from server/distribute/log.spec.mjs rename to server/distribute/log.spec.js index eef535e3..be50dcc3 100644 --- a/server/distribute/log.spec.mjs +++ b/server/distribute/log.spec.js @@ -1,6 +1,6 @@ import test from 'supertape'; -import log from './log.mjs'; -import {createConfig} from '../config.mjs'; +import log from './log.js'; +import {createConfig} from '../config.js'; test('distribute: log: getMessage', (t) => { const e = 'hello'; diff --git a/server/env.mjs b/server/env.js similarity index 100% rename from server/env.mjs rename to server/env.js diff --git a/server/env.spec.js b/server/env.spec.js index f92273e5..d8065b2c 100644 --- a/server/env.spec.js +++ b/server/env.spec.js @@ -1,8 +1,6 @@ -'use strict'; - -const process = require('node:process'); -const {test} = require('supertape'); -const env = require('./env.mjs'); +import process from 'node:process'; +import {test} from 'supertape'; +import * as env from './env.js'; test('cloudcmd: server: env: bool: upper case first', (t) => { const { diff --git a/server/exit.js b/server/exit.js index e7dabfb9..ebe5ad8f 100644 --- a/server/exit.js +++ b/server/exit.js @@ -1,9 +1,8 @@ -'use strict'; +import process from 'node:process'; -const process = require('node:process'); const getMessage = (a) => a?.message || a; -module.exports = (...args) => { +export default (...args) => { const messages = args.map(getMessage); console.error(...messages); diff --git a/server/exit.spec.js b/server/exit.spec.js index db081e0e..3b454818 100644 --- a/server/exit.spec.js +++ b/server/exit.spec.js @@ -1,9 +1,6 @@ -'use strict'; - -const process = require('node:process'); -const {test, stub} = require('supertape'); - -const exit = require('./exit'); +import process from 'node:process'; +import {test, stub} from 'supertape'; +import exit from './exit.js'; test('cloudcmd: exit: process.exit', (t) => { const {exit: exitOriginal} = process; diff --git a/server/markdown/index.js b/server/markdown/index.js index 639e219d..d95cb62c 100644 --- a/server/markdown/index.js +++ b/server/markdown/index.js @@ -1,14 +1,14 @@ -'use strict'; +import {callbackify} from 'node:util'; +import {fileURLToPath} from 'node:url'; +import {dirname} from 'node:path'; +import pullout from 'pullout'; +import ponse from 'ponse'; +import {read} from 'redzip'; +import root from '../root.js'; +import parse from './worker.js'; -const {callbackify} = require('node:util'); - -const pullout = require('pullout'); -const ponse = require('ponse'); -const {read} = require('redzip'); - -const root = require('../root'); - -const parse = require('./worker'); +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); const isString = (a) => typeof a === 'string'; // warm up @@ -16,7 +16,7 @@ parse(''); const DIR_ROOT = `${__dirname}/../../`; -module.exports = callbackify(async (name, rootDir, request) => { +export default callbackify(async (name, rootDir, request) => { check(name, request); const {method} = request; diff --git a/server/markdown/index.spec.mjs b/server/markdown/index.spec.js similarity index 98% rename from server/markdown/index.spec.mjs rename to server/markdown/index.spec.js index 563442af..f0f425ba 100644 --- a/server/markdown/index.spec.mjs +++ b/server/markdown/index.spec.js @@ -5,7 +5,7 @@ import {tryToCatch} from 'try-to-catch'; import test from 'supertape'; import serveOnce from 'serve-once'; import markdown from './index.js'; -import cloudcmd from '../cloudcmd.mjs'; +import cloudcmd from '../cloudcmd.js'; const config = { auth: false, diff --git a/server/markdown/worker.js b/server/markdown/worker.js index ba885661..ccac2aee 100644 --- a/server/markdown/worker.js +++ b/server/markdown/worker.js @@ -1,5 +1,5 @@ -'use strict'; +import createMarkdownIt from 'markdown-it'; -const markdownIt = require('markdown-it')(); +const markdownIt = createMarkdownIt(); -module.exports = (a) => markdownIt.render(a); +export default (a) => markdownIt.render(a); diff --git a/server/modulas.mjs b/server/modulas.js similarity index 100% rename from server/modulas.mjs rename to server/modulas.js diff --git a/server/prefixer.js b/server/prefixer.js index 238d67fd..87a83411 100644 --- a/server/prefixer.js +++ b/server/prefixer.js @@ -1,8 +1,6 @@ -'use strict'; - const isString = (a) => typeof a === 'string'; -module.exports = (value) => { +export default (value) => { if (!isString(value)) return ''; diff --git a/server/prefixer.spec.js b/server/prefixer.spec.js index 2cc5b2d8..3ea77dfb 100644 --- a/server/prefixer.spec.js +++ b/server/prefixer.spec.js @@ -1,8 +1,5 @@ -'use strict'; - -const {test} = require('supertape'); - -const prefixer = require('./prefixer'); +import {test} from 'supertape'; +import prefixer from './prefixer.js'; test('prefixer: prefix without a slash', (t) => { t.equal(prefixer('hello'), '/hello', 'should add slash'); diff --git a/server/repl.js b/server/repl.js index 0c4d5279..46d58a15 100644 --- a/server/repl.js +++ b/server/repl.js @@ -1,10 +1,8 @@ -'use strict'; +import process from 'node:process'; +import net from 'node:net'; +import repl from 'node:repl'; -const process = require('node:process'); -const net = require('node:net'); -const repl = require('node:repl'); - -module.exports = net +export default net .createServer((socket) => { const {pid} = process; const addr = socket.remoteAddress; diff --git a/server/rest/index.mjs b/server/rest/index.js similarity index 100% rename from server/rest/index.mjs rename to server/rest/index.js diff --git a/server/rest/index.spec.js b/server/rest/index.spec.js index ab7ed78b..0fd64d7c 100644 --- a/server/rest/index.spec.js +++ b/server/rest/index.spec.js @@ -1,15 +1,12 @@ -'use strict'; - -const {test} = require('supertape'); -const {tryToCatch} = require('try-to-catch'); - -const { +import {test} from 'supertape'; +import {tryToCatch} from 'try-to-catch'; +import { _formatMsg, _getWin32RootMsg, _isRootWin32, _isRootAll, _onPUT, -} = require('./index.mjs'); +} from './index.js'; test('rest: formatMsg', (t) => { const result = _formatMsg('hello', 'world'); diff --git a/server/rest/info.js b/server/rest/info.js index 6b4fb2ec..8cf0e1d7 100644 --- a/server/rest/info.js +++ b/server/rest/info.js @@ -1,16 +1,17 @@ -'use strict'; +import process from 'node:process'; +import format from 'format-io'; +import info from '../../package.json' with { + type: 'json', +}; -const process = require('node:process'); -const format = require('format-io'); - -const {version} = require('../../package'); +const {version} = info; const getMemory = () => { const {rss} = process.memoryUsage(); return format.size(rss); }; -module.exports = (prefix) => ({ +export default (prefix) => ({ version, prefix, memory: getMemory(), diff --git a/server/rest/info.spec.js b/server/rest/info.spec.js index 7f3a6935..cac19e53 100644 --- a/server/rest/info.spec.js +++ b/server/rest/info.spec.js @@ -1,9 +1,6 @@ -'use strict'; - -const process = require('node:process'); -const {test, stub} = require('supertape'); - -const info = require('./info'); +import process from 'node:process'; +import {test, stub} from 'supertape'; +import info from './info.js'; test('cloudcmd: rest: info', (t) => { const {memoryUsage} = process; diff --git a/server/root.js b/server/root.js index 0d405d3c..b563d77d 100644 --- a/server/root.js +++ b/server/root.js @@ -1,7 +1,5 @@ -'use strict'; +import mellow from 'mellow'; -const mellow = require('mellow'); - -module.exports = (dir, root, {webToWin = mellow.webToWin} = {}) => { +export default (dir, root, {webToWin = mellow.webToWin} = {}) => { return webToWin(dir, root || '/'); }; diff --git a/server/root.spec.js b/server/root.spec.js index 6bbd5ff6..2d9dd768 100644 --- a/server/root.spec.js +++ b/server/root.spec.js @@ -1,8 +1,5 @@ -'use strict'; - -const {test, stub} = require('supertape'); - -const root = require('./root'); +import {test, stub} from 'supertape'; +import root from './root.js'; test('cloudcmd: root: mellow', (t) => { const webToWin = stub(); diff --git a/server/route.mjs b/server/route.js similarity index 98% rename from server/route.mjs rename to server/route.js index 4ff0304c..4334a194 100644 --- a/server/route.mjs +++ b/server/route.js @@ -14,8 +14,8 @@ import * as CloudFunc from '#common/cloudfunc'; import root from './root.js'; import prefixer from './prefixer.js'; import Template from './template.js'; -import {getColumns} from './columns.mjs'; -import {getThemes} from './theme.mjs'; +import {getColumns} from './columns.js'; +import {getThemes} from './theme.js'; const require = createRequire(import.meta.url); const {stringify} = JSON; diff --git a/server/route.spec.mjs b/server/route.spec.js similarity index 99% rename from server/route.spec.mjs rename to server/route.spec.js index bee216a8..fcf2f58b 100644 --- a/server/route.spec.mjs +++ b/server/route.spec.js @@ -5,8 +5,8 @@ import fs from 'node:fs'; import {tryToCatch} from 'try-to-catch'; import {test, stub} from 'supertape'; import serveOnce from 'serve-once'; -import cloudcmd from './cloudcmd.mjs'; -import {_getReadDir} from './route.mjs'; +import cloudcmd from './cloudcmd.js'; +import {_getReadDir} from './route.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/server/server.mjs b/server/server.js similarity index 98% rename from server/server.mjs rename to server/server.js index dc61f522..00a4ee5b 100644 --- a/server/server.mjs +++ b/server/server.js @@ -11,7 +11,7 @@ import tryRequire from 'tryrequire'; import wraptile from 'wraptile'; import compression from 'compression'; import exit from './exit.js'; -import cloudcmd from './cloudcmd.mjs'; +import cloudcmd from './cloudcmd.js'; const bind = (f, self) => f.bind(self); diff --git a/server/show-config.js b/server/show-config.js index 065fd7dd..f151dd10 100644 --- a/server/show-config.js +++ b/server/show-config.js @@ -1,11 +1,9 @@ -'use strict'; - -const { +import { table, getBorderCharacters, -} = require('table'); +} from 'table'; -module.exports = (config) => { +export const showConfig = (config) => { check(config); const data = Object diff --git a/test/server/show-config.js b/server/show-config.spec.js similarity index 86% rename from test/server/show-config.js rename to server/show-config.spec.js index d0ff8480..b25e56a2 100644 --- a/test/server/show-config.js +++ b/server/show-config.spec.js @@ -1,9 +1,6 @@ -'use strict'; - -const {test} = require('supertape'); -const {tryCatch} = require('try-catch'); - -const showConfig = require('../../server/show-config'); +import {test} from 'supertape'; +import {tryCatch} from 'try-catch'; +import {showConfig} from './show-config.js'; test('cloudcmd: show-config: no arguments', (t) => { const [error] = tryCatch(showConfig); diff --git a/server/template.js b/server/template.js index 4a888ef0..0e705e79 100644 --- a/server/template.js +++ b/server/template.js @@ -1,7 +1,9 @@ -'use strict'; +import path, {dirname} from 'node:path'; +import {fileURLToPath} from 'node:url'; +import readFilesSync from '@cloudcmd/read-files-sync'; -const path = require('node:path'); -const readFilesSync = require('@cloudcmd/read-files-sync'); +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); const templatePath = path.join(__dirname, '..', 'tmpl/fs'); -module.exports = readFilesSync(templatePath, 'utf8'); +export default readFilesSync(templatePath, 'utf8'); diff --git a/server/terminal.js b/server/terminal.js index 918ad1c4..4436e292 100644 --- a/server/terminal.js +++ b/server/terminal.js @@ -1,6 +1,7 @@ -'use strict'; +import {createRequire} from 'node:module'; +import {tryCatch} from 'try-catch'; -const {tryCatch} = require('try-catch'); +const require = createRequire(import.meta.url); const noop = (req, res, next) => { next && next(); @@ -10,7 +11,7 @@ noop.listen = noop; const _getModule = (a) => require(a); -module.exports = (config, arg, overrides = {}) => { +export default (config, arg, overrides = {}) => { const { getModule = _getModule, } = overrides; diff --git a/server/terminal.spec.mjs b/server/terminal.spec.js similarity index 97% rename from server/terminal.spec.mjs rename to server/terminal.spec.js index 50292234..9b933488 100644 --- a/server/terminal.spec.mjs +++ b/server/terminal.spec.js @@ -1,6 +1,6 @@ import {test, stub} from 'supertape'; import terminal from './terminal.js'; -import {createConfigManager} from './cloudcmd.mjs'; +import {createConfigManager} from './cloudcmd.js'; test('cloudcmd: terminal: disabled', (t) => { const config = createConfigManager(); diff --git a/server/theme.mjs b/server/theme.js similarity index 100% rename from server/theme.mjs rename to server/theme.js diff --git a/server/themes.spec.mjs b/server/themes.spec.js similarity index 94% rename from server/themes.spec.mjs rename to server/themes.spec.js index ecb99e97..1fc95ec8 100644 --- a/server/themes.spec.mjs +++ b/server/themes.spec.js @@ -2,7 +2,7 @@ import {dirname} from 'node:path'; import {fileURLToPath} from 'node:url'; import fs from 'node:fs'; import test from 'supertape'; -import {getThemes, isDev} from './theme.mjs'; +import {getThemes, isDev} from './theme.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/server/user-menu.mjs b/server/user-menu.js similarity index 100% rename from server/user-menu.mjs rename to server/user-menu.js diff --git a/server/user-menu.spec.mjs b/server/user-menu.spec.js similarity index 83% rename from server/user-menu.spec.mjs rename to server/user-menu.spec.js index 635c7746..976eebd9 100644 --- a/server/user-menu.spec.mjs +++ b/server/user-menu.spec.js @@ -3,14 +3,14 @@ import {fileURLToPath} from 'node:url'; import {readFileSync} from 'node:fs'; import {test, stub} from 'supertape'; import serveOnce from 'serve-once'; -import userMenu from './user-menu.mjs'; +import {putout} from 'putout'; +import userMenu from './user-menu.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const {request} = serveOnce(userMenu); const userMenuPath = join(__dirname, '..', '.cloudcmd.menu.js'); -const userMenuFile = readFileSync(userMenuPath, 'utf8'); const fixtureDir = new URL('fixture-user-menu', import.meta.url).pathname; const fixtureMoveName = join(fixtureDir, 'io-mv.js'); @@ -24,6 +24,7 @@ const fixtureCopy = readFileSync(fixtureCopyName, 'utf8'); const fixtureCopyFix = readFileSync(fixtureCopyFixName, 'utf8'); test('cloudcmd: user menu', async (t) => { + const userMenuFile = getUserMenuFile(); const options = { menuName: '.cloudcmd.menu.js', }; @@ -69,3 +70,15 @@ test('cloudcmd: user menu: io.cp', async (t) => { t.equal(body, fixtureCopyFix); t.end(); }); + +function getUserMenuFile() { + const userMenuFile = readFileSync(userMenuPath, 'utf8'); + const {code} = putout(userMenuFile, { + rules: { + 'nodejs/convert-esm-to-commonjs': 'on', + }, + plugins: ['nodejs'], + }); + + return code; +} diff --git a/server/validate.mjs b/server/validate.js similarity index 95% rename from server/validate.mjs rename to server/validate.js index 3699d081..61b3a31d 100644 --- a/server/validate.mjs +++ b/server/validate.js @@ -1,8 +1,8 @@ import {statSync as _statSync} from 'node:fs'; import {tryCatch} from 'try-catch'; import _exit from './exit.js'; -import {getColumns as _getColumns} from './columns.mjs'; -import {getThemes as _getThemes} from './theme.mjs'; +import {getColumns as _getColumns} from './columns.js'; +import {getThemes as _getThemes} from './theme.js'; const isString = (a) => typeof a === 'string'; diff --git a/server/validate.spec.mjs b/server/validate.spec.js similarity index 97% rename from server/validate.spec.mjs rename to server/validate.spec.js index 568e55c2..ca12d409 100644 --- a/server/validate.spec.mjs +++ b/server/validate.spec.js @@ -1,7 +1,7 @@ import {test, stub} from 'supertape'; import {tryCatch} from 'try-catch'; -import * as validate from './validate.mjs'; -import cloudcmd from './cloudcmd.mjs'; +import * as validate from './validate.js'; +import cloudcmd from './cloudcmd.js'; test('validate: root: bad', (t) => { const config = { diff --git a/static/user-menu.js b/static/user-menu.js index c8645d51..85cf0ad9 100644 --- a/static/user-menu.js +++ b/static/user-menu.js @@ -1,9 +1,7 @@ -'use strict'; - const RENAME_FILE = 'Rename file'; const CDN = 'https://cdn.jsdelivr.net/gh/cloudcmd/user-menu@1.2.4'; -module.exports = { +export default { '__settings': { select: [RENAME_FILE], run: false, @@ -135,7 +133,8 @@ async function readDefaultMenu({prefix}) { return await res.text(); } -module.exports._selectNames = selectNames; +export const _selectNames = selectNames; + function selectNames(names, panel, {selectFile, getCurrentByName}) { for (const name of names) { const file = getCurrentByName(name, panel); @@ -143,7 +142,8 @@ function selectNames(names, panel, {selectFile, getCurrentByName}) { } } -module.exports._compare = compare; +export const _compare = compare; + function compare(a, b) { const result = []; diff --git a/static/user-menu.spec.js b/static/user-menu.spec.js index b5f6c43c..dd2e362e 100644 --- a/static/user-menu.spec.js +++ b/static/user-menu.spec.js @@ -1,11 +1,10 @@ -'use strict'; +import {stub} from '@cloudcmd/stub'; +import {tryToCatch} from 'try-to-catch'; +import wraptile from 'wraptile'; +import {test as tape} from 'supertape'; +import autoGlobals from 'auto-globals'; +import defaultMenu, {_selectNames, _compare} from './user-menu.js'; -const {stub} = require('@cloudcmd/stub'); -const {tryToCatch} = require('try-to-catch'); -const wraptile = require('wraptile'); -const {test: tape} = require('supertape'); -const autoGlobals = require('auto-globals'); -const defaultMenu = require('./user-menu'); const test = autoGlobals(tape); const {create} = autoGlobals; const {_data} = defaultMenu; @@ -261,7 +260,6 @@ test('cloudcmd: static: user menu: compare directories', async (t) => { }); test('cloudcmd: static: user menu: compare directories: select names', (t) => { - const {_selectNames} = defaultMenu; const selectFile = stub(); const file = {}; const getCurrentByName = stub().returns(file); @@ -279,7 +277,6 @@ test('cloudcmd: static: user menu: compare directories: select names', (t) => { }); test('cloudcmd: static: user menu: compare directories: select names: getCurrentByName', (t) => { - const {_selectNames} = defaultMenu; const selectFile = stub(); const getCurrentByName = stub(); @@ -297,7 +294,6 @@ test('cloudcmd: static: user menu: compare directories: select names: getCurrent }); test('cloudcmd: static: user menu: compare directories: select names: compare', (t) => { - const {_compare} = defaultMenu; const a = [1, 2]; const b = [1, 3]; diff --git a/test/before.mjs b/test/before.js similarity index 97% rename from test/before.mjs rename to test/before.js index ccb2399f..e42a840a 100644 --- a/test/before.mjs +++ b/test/before.js @@ -8,7 +8,7 @@ import express from 'express'; import {Server} from 'socket.io'; import writejson from 'writejson'; import readjson from 'readjson'; -import cloudcmd from '../server/cloudcmd.mjs'; +import cloudcmd from '../server/cloudcmd.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/test/common/cloudfunc.js b/test/common/cloudfunc.js index 19d35cb7..1eef2147 100644 --- a/test/common/cloudfunc.js +++ b/test/common/cloudfunc.js @@ -1,14 +1,15 @@ -'use strict'; +import fs from 'node:fs'; +import {fileURLToPath} from 'node:url'; +import {dirname} from 'node:path'; +import {tryCatch} from 'try-catch'; +import {test} from 'supertape'; +import readFilesSync from '@cloudcmd/read-files-sync'; +import * as CloudFunc from '#common/cloudfunc'; +import {time, timeEnd} from '#common/util'; -const fs = require('node:fs'); - -const {tryCatch} = require('try-catch'); -const {test} = require('supertape'); -const readFilesSync = require('@cloudcmd/read-files-sync'); - -const CloudFunc = require('#common/cloudfunc'); -const {time, timeEnd} = require(`../../common/util.mjs`); +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); const DIR = `${__dirname}/../../`; const TMPLDIR = `${DIR}tmpl/`; diff --git a/test/rest/config.mjs b/test/rest/config.js similarity index 97% rename from test/rest/config.mjs rename to test/rest/config.js index b31c65af..e7b7231e 100644 --- a/test/rest/config.mjs +++ b/test/rest/config.js @@ -1,6 +1,6 @@ import serveOnce from 'serve-once'; import test from 'supertape'; -import cloudcmd from '../../server/cloudcmd.mjs'; +import cloudcmd from '../../server/cloudcmd.js'; const configManager = cloudcmd.createConfigManager(); const {request} = serveOnce(cloudcmd, { diff --git a/test/rest/copy.mjs b/test/rest/copy.js similarity index 95% rename from test/rest/copy.mjs rename to test/rest/copy.js index 98e8ea4d..1552124b 100644 --- a/test/rest/copy.mjs +++ b/test/rest/copy.js @@ -4,7 +4,7 @@ import {mkdirSync} from 'node:fs'; import serveOnce from 'serve-once'; import test from 'supertape'; import {rimraf} from 'rimraf'; -import cloudcmd from '../../server/cloudcmd.mjs'; +import cloudcmd from '../../server/cloudcmd.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/test/rest/fs.mjs b/test/rest/fs.js similarity index 92% rename from test/rest/fs.mjs rename to test/rest/fs.js index 07f4b7f6..00f33e8a 100644 --- a/test/rest/fs.mjs +++ b/test/rest/fs.js @@ -1,6 +1,6 @@ import serveOnce from 'serve-once'; import test from 'supertape'; -import cloudcmd from '../../server/cloudcmd.mjs'; +import cloudcmd from '../../server/cloudcmd.js'; const {request} = serveOnce(cloudcmd, { config: { diff --git a/test/rest/move.mjs b/test/rest/move.js similarity index 97% rename from test/rest/move.mjs rename to test/rest/move.js index e962e5f0..d3effaad 100644 --- a/test/rest/move.mjs +++ b/test/rest/move.js @@ -2,7 +2,7 @@ import {EventEmitter} from 'node:events'; import wait from '@iocmd/wait'; import {test, stub} from 'supertape'; import serveOnce from 'serve-once'; -import cloudcmd from '../../server/cloudcmd.mjs'; +import cloudcmd from '../../server/cloudcmd.js'; test('cloudcmd: rest: move', async (t) => { const move = new EventEmitter(); diff --git a/test/rest/pack.mjs b/test/rest/pack.js similarity index 99% rename from test/rest/pack.mjs rename to test/rest/pack.js index 9aefcb97..76696b7e 100644 --- a/test/rest/pack.mjs +++ b/test/rest/pack.js @@ -7,7 +7,7 @@ import tar from 'tar-stream'; import gunzip from 'gunzip-maybe'; import pullout from 'pullout'; import serveOnce from 'serve-once'; -import cloudcmd from '../../server/cloudcmd.mjs'; +import cloudcmd from '../../server/cloudcmd.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/test/rest/rename.mjs b/test/rest/rename.js similarity index 97% rename from test/rest/rename.mjs rename to test/rest/rename.js index 1dd14b63..863c87c1 100644 --- a/test/rest/rename.mjs +++ b/test/rest/rename.js @@ -3,7 +3,7 @@ import test from 'supertape'; import {Volume} from 'memfs'; import {ufs} from 'unionfs'; import serveOnce from 'serve-once'; -import cloudcmd from '../../server/cloudcmd.mjs'; +import cloudcmd from '../../server/cloudcmd.js'; test('cloudcmd: rest: rename', async (t) => { const volume = { diff --git a/test/server/console.mjs b/test/server/console.js similarity index 92% rename from test/server/console.mjs rename to test/server/console.js index 72984d50..56d35a3c 100644 --- a/test/server/console.mjs +++ b/test/server/console.js @@ -1,8 +1,8 @@ import {once} from 'node:events'; import test from 'supertape'; import io from 'socket.io-client'; -import {connect} from '../before.mjs'; -import {createConfig} from '../../server/config.mjs'; +import {connect} from '../before.js'; +import {createConfig} from '../../server/config.js'; const configFn = createConfig(); diff --git a/test/server/env.js b/test/server/env.js index ce12e0df..323c0a99 100644 --- a/test/server/env.js +++ b/test/server/env.js @@ -1,8 +1,6 @@ -'use strict'; - -const process = require('node:process'); -const {test} = require('supertape'); -const env = require('../../server/env.mjs'); +import process from 'node:process'; +import {test} from 'supertape'; +import * as env from '../../server/env.js'; test('env: small', (t) => { process.env.cloudcmd_hello = 'world'; diff --git a/test/server/modulas.mjs b/test/server/modulas.js similarity index 94% rename from test/server/modulas.mjs rename to test/server/modulas.js index c6281501..0c359107 100644 --- a/test/server/modulas.mjs +++ b/test/server/modulas.js @@ -3,8 +3,8 @@ import {dirname, join} from 'node:path'; import {fileURLToPath} from 'node:url'; import serveOnce from 'serve-once'; import {test, stub} from 'supertape'; -import cloudcmd from '../../server/cloudcmd.mjs'; -import modulas from '../../server/modulas.mjs'; +import cloudcmd from '../../server/cloudcmd.js'; +import modulas from '../../server/modulas.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/test/static.mjs b/test/static.js similarity index 98% rename from test/static.mjs rename to test/static.js index 03a57e35..f28fedf5 100644 --- a/test/static.mjs +++ b/test/static.js @@ -2,7 +2,7 @@ import {Buffer} from 'node:buffer'; import serveOnce from 'serve-once'; import test from 'supertape'; import criton from 'criton'; -import cloudcmd from '../server/cloudcmd.mjs'; +import cloudcmd from '../server/cloudcmd.js'; const config = { auth: false, diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..5d684391 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,10 @@ +import {merge} from 'webpack-merge'; +import * as htmlConfig from './.webpack/html.js'; +import cssConfig from './.webpack/css.js'; +import jsConfig from './.webpack/js.js'; + +export default merge([ + jsConfig, + htmlConfig, + cssConfig, +]); diff --git a/webpack.config.mjs b/webpack.config.mjs deleted file mode 100644 index a1eb0da2..00000000 --- a/webpack.config.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import {merge} from 'webpack-merge'; -import * as htmlConfig from './.webpack/html.mjs'; -import cssConfig from './.webpack/css.mjs'; -import jsConfig from './.webpack/js.mjs'; - -export default merge([ - jsConfig, - htmlConfig, - cssConfig, -]);