feature: convert to ESM

This commit is contained in:
coderaiser 2024-03-18 17:59:45 +02:00
parent eff34215ee
commit 56fa18043f
23 changed files with 303 additions and 309 deletions

View file

@ -1,5 +1,5 @@
import {run, cutEnv} from 'madrun';
import process from 'node:process';
import {run, cutEnv} from 'madrun';
const testEnv = {
THREAD_IT_COUNT: 0,
@ -33,9 +33,9 @@ export default {
'lint:fresh': () => run('lint', '--fresh'),
'fix:lint': () => run('lint', '--fix'),
'lint:stream': () => run('lint', '-f stream'),
'test': () => [testEnv, `tape 'test/**/*.js' '{client,static,common,server}/**/*.spec.js' -f fail`],
'test': () => [testEnv, `escover tape 'test/**/*.{js,mjs}' '{client,static,common,server}/**/*.spec.{js,mjs}' -f fail`],
'test:client': () => `tape 'test/client/**/*.js'`,
'test:server': () => `tape 'test/**/*.js' 'server/**/*.spec.js' 'common/**/*.spec.js'`,
'test:server': () => `tape 'test/**/*.{js,mjs}' 'server/**/*.spec.{js,mjs}' 'common/**/*.spec.{js,mjs}'`,
'wisdom': () => run(['lint:all', 'build', 'test']),
'wisdom:type': () => 'bin/release.mjs',
'coverage': async () => [testEnv, `c8 ${await cutEnv('test')}`],

View file

@ -10,7 +10,7 @@
"type": "git",
"url": "git://github.com/coderaiser/cloudcmd.git"
},
"main": "server/cloudcmd.js",
"main": "server/cloudcmd.mjs",
"keywords": [
"console",
"terminal",
@ -170,6 +170,7 @@
"css-modules-require-hook": "^4.2.3",
"domtokenlist-shim": "^1.2.0",
"emitify": "^4.0.1",
"escover": "^4.1.0",
"eslint": "^8.0.1",
"eslint-plugin-n": "^16.0.1",
"eslint-plugin-putout": "^22.0.0",
@ -186,6 +187,7 @@
"madrun": "^10.0.0",
"memfs": "^4.2.0",
"minor": "^1.2.2",
"mock-import": "^4.0.3",
"mock-require": "^3.0.1",
"morgan": "^1.6.1",
"multi-rename": "^2.0.0",
@ -195,7 +197,6 @@
"place": "^1.1.4",
"readjson": "^2.0.1",
"redlint": "^3.13.1",
"request": "^2.76.0",
"rimraf": "^5.0.1",
"scroll-into-view-if-needed": "^3.0.4",
"serve-once": "^3.0.1",

View file

@ -1,44 +1,44 @@
'use strict';
import {join} from 'node:path';
import process from 'node:process';
import {readFileSync} from 'node:fs';
import currify from 'currify';
import apart from 'apart';
import ponse from 'ponse';
import restafary from 'restafary';
import restbox from 'restbox';
import konsole from 'console-io';
import edward from 'edward';
import dword from 'dword';
import deepword from 'deepword';
import nomine from 'nomine';
import fileop from '@cloudcmd/fileop';
import cloudfunc from '../common/cloudfunc.js';
import authentication from './auth.js';
import modulas from './modulas.js';
import userMenu from './user-menu.js';
import rest from './rest/index.js';
import route from './route.js';
import validate from './validate.js';
import prefixer from './prefixer.js';
import terminal from './terminal.js';
import distribute from './distribute/index.js';
import {createConfig, configPath} from './config.js';
const process = require('process');
const DIR = `${__dirname}/`;
const DIR_COMMON = `${DIR}../common/`;
const path = require('path');
const {assign} = Object;
const fs = require('fs');
const cloudfunc = require(`${DIR_COMMON}cloudfunc`);
export {
createConfig,
configPath,
CloudCmdMiddleware as cloudcmd,
};
const authentication = require(`${DIR}auth`);
const {createConfig, configPath} = require(`${DIR}config`);
const modulas = require(`${DIR}modulas`);
const userMenu = require(`${DIR}user-menu`);
const rest = require(`${DIR}rest`);
const route = require(`${DIR}route`);
const validate = require(`${DIR}validate`);
const prefixer = require(`${DIR}prefixer`);
const terminal = require(`${DIR}terminal`);
const distribute = require(`${DIR}distribute`);
const currify = require('currify');
const apart = require('apart');
const ponse = require('ponse');
const restafary = require('restafary');
const restbox = require('restbox');
const konsole = require('console-io');
const edward = require('edward');
const dword = require('dword');
const deepword = require('deepword');
const nomine = require('nomine');
const fileop = require('@cloudcmd/fileop');
const DIR_ROOT = `${DIR}../`;
const DIR_ROOT = new URL('..', import.meta.url).pathname;
const isDev = process.env.NODE_ENV === 'development';
const getDist = (isDev) => isDev ? 'dist-dev' : 'dist';
const getIndexPath = (isDev) => path.join(DIR, '..', `${getDist(isDev)}/index.html`);
const html = fs.readFileSync(getIndexPath(isDev), 'utf8');
const getIndexPath = (isDev) => join(DIR_ROOT, `${getDist(isDev)}/index.html`);
const html = readFileSync(getIndexPath(isDev), 'utf8');
const initAuth = currify(_initAuth);
const notEmpty = (a) => a;
@ -47,7 +47,7 @@ const clean = (a) => a.filter(notEmpty);
const isUndefined = (a) => typeof a === 'undefined';
const isFn = (a) => typeof a === 'function';
module.exports = (params) => {
export default function CloudCmdMiddleware(params) {
const p = params || {};
const options = p.config || {};
const config = p.configManager || createConfig({
@ -55,7 +55,6 @@ module.exports = (params) => {
});
const {modules} = p;
const keys = Object.keys(options);
for (const name of keys) {
@ -89,12 +88,11 @@ module.exports = (params) => {
modules,
config,
});
};
}
module.exports.createConfigManager = createConfig;
module.exports.configPath = configPath;
export const createConfigManager = createConfig;
module.exports._getIndexPath = getIndexPath;
export const _getIndexPath = getIndexPath;
function defaultValue(config, name, options) {
const value = options[name];
@ -106,7 +104,12 @@ function defaultValue(config, name, options) {
return value;
}
module.exports._getPrefix = getPrefix;
export const _getPrefix = getPrefix;
assign(CloudCmdMiddleware, {
createConfigManager,
});
function getPrefix(prefix) {
if (isFn(prefix))
return prefix() || '';
@ -114,8 +117,7 @@ function getPrefix(prefix) {
return prefix || '';
}
module.exports._initAuth = _initAuth;
function _initAuth(config, accept, reject, username, password) {
export function _initAuth(config, accept, reject, username, password) {
if (!config('auth'))
return accept();
@ -255,7 +257,8 @@ function logout(req, res, next) {
res.sendStatus(401);
}
module.exports._replaceDist = replaceDist;
export const _replaceDist = replaceDist;
function replaceDist(url) {
if (!isDev)
return url;

View file

@ -1,34 +1,32 @@
'use strict';
import process from 'node:process';
import path, {dirname} from 'node:path';
import {fileURLToPath} from 'node:url';
import {createMockImport} from 'mock-import';
import serveOnce from 'serve-once';
import {test, stub} from 'supertape';
import cloudcmd, {
createConfigManager,
_getIndexPath,
_getPrefix,
_initAuth,
} from './cloudcmd.mjs';
const process = require('process');
const path = require('path');
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const {test, stub} = require('supertape');
const {reImport} = createMockImport(import.meta.url);
const {reRequire} = require('mock-require');
const DIR = './';
const cloudcmdPath = `${DIR}cloudcmd`;
const cloudcmd = require(cloudcmdPath);
const {request} = require('serve-once')(cloudcmd, {
const {request} = serveOnce(cloudcmd, {
config: {
auth: false,
dropbox: false,
},
});
const {
createConfigManager,
_getPrefix,
_initAuth,
} = cloudcmd;
test('cloudcmd: defaults: config', (t) => {
const configManager = createConfigManager();
configManager('configDialog', false);
cloudcmd({
configManager,
});
@ -75,12 +73,12 @@ test('cloudcmd: getPrefix: function: empty', (t) => {
t.end();
});
test('cloudcmd: replaceDist', (t) => {
test('cloudcmd: replaceDist', async (t) => {
const {NODE_ENV} = process.env;
process.env.NODE_ENV = 'development';
const {_replaceDist} = reRequire(cloudcmdPath);
const {_replaceDist} = await reImport('./cloudcmd.mjs');
const url = '/dist/hello';
const result = _replaceDist(url);
@ -92,12 +90,10 @@ test('cloudcmd: replaceDist', (t) => {
t.end();
});
test('cloudcmd: replaceDist: !isDev', (t) => {
test('cloudcmd: replaceDist: !isDev', async (t) => {
const url = '/dist/hello';
const cloudcmdPath = `${DIR}cloudcmd`;
const reset = cleanNodeEnv();
const {_replaceDist} = reRequire(cloudcmdPath);
const {_replaceDist} = await reImport('./cloudcmd.mjs');
const result = _replaceDist(url);
reset();
@ -167,7 +163,7 @@ test('cloudcmd: getIndexPath: production', (t) => {
const isDev = false;
const name = path.join(__dirname, '..', 'dist', 'index.html');
t.equal(cloudcmd._getIndexPath(isDev), name);
t.equal(_getIndexPath(isDev), name);
t.end();
});
@ -175,7 +171,7 @@ test('cloudcmd: getIndexPath: development', (t) => {
const isDev = true;
const name = path.join(__dirname, '..', 'dist-dev', 'index.html');
t.equal(cloudcmd._getIndexPath(isDev), name);
t.equal(_getIndexPath(isDev), name);
t.end();
});

View file

@ -1,17 +1,12 @@
'use strict';
import {createRequire} from 'node:module';
import {test, stub} from 'supertape';
import {createConfig, _cryptoPass} from './config.js';
import {apiURL} from '../common/cloudfunc.js';
import {connect} from '../test/before.mjs';
const {test, stub} = require('supertape');
const require = createRequire(import.meta.url);
const fixture = require('./config.fixture.json');
const root = '../';
const configPath = './config';
const {createConfig, _cryptoPass} = require(configPath);
const {apiURL} = require(`${root}common/cloudfunc`);
const fixture = require('./config.fixture');
const {connect} = require('../test/before');
const config = createConfig();
test('config: manage', (t) => {

View file

@ -1,12 +1,10 @@
'use strict';
import {once} from 'node:events';
import test from 'supertape';
import io from 'socket.io-client';
import {connect} from '../../test/before.mjs';
import Config from '../config.js';
const {once} = require('events');
const test = require('supertape');
const io = require('socket.io-client');
const {connect} = require('../../test/before');
const config = require('../config').createConfig();
const config = Config.createConfig();
test('distribute: export', async (t) => {
const defaultConfig = {

View file

@ -1,15 +1,13 @@
'use strict';
const process = require('process');
const test = require('supertape');
const {promisify} = require('util');
const tryToCatch = require('try-to-catch');
const {connect} = require('../../test/before');
const {createConfigManager} = require('../cloudcmd');
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';
import distributeImport from './import.js';
const distribute = {
import: promisify(require('./import')),
import: promisify(distributeImport),
};
const config = createConfigManager();

View file

@ -1,16 +1,15 @@
'use strict';
import fs from 'node:fs';
import {join} from 'node:path';
import {promisify} from 'node:util';
import tryToCatch from 'try-to-catch';
import serveOnce from 'serve-once';
import test from 'supertape';
import {createRequire} from 'node:module';
import markdown from './index.js';
import cloudcmd from '../cloudcmd.mjs';
const fs = require('fs');
const {join} = require('path');
const {promisify} = require('util');
const require = createRequire(import.meta.url);
const tryToCatch = require('try-to-catch');
const serveOnce = require('serve-once');
const test = require('supertape');
const markdown = require('.');
const cloudcmd = require('../..');
const config = {
auth: false,
};
@ -22,7 +21,7 @@ const {request} = require('serve-once')(cloudcmd, {
configManager,
});
const fixtureDir = join(__dirname, 'fixture');
const fixtureDir = new URL('fixture', import.meta.url).pathname;
const _markdown = promisify(markdown);
@ -93,7 +92,7 @@ test('cloudcmd: markdown: no request', async (t) => {
test('cloudcmd: markdown', async (t) => {
const configManager = cloudcmd.createConfigManager();
const fixtureDir = join(__dirname, 'fixture');
const fixtureDir = new URL('fixture', import.meta.url).pathname;
const config = {
auth: false,
root: fixtureDir,
@ -112,7 +111,7 @@ test('cloudcmd: markdown', async (t) => {
test('cloudcmd: markdown: zip', async (t) => {
const configManager = cloudcmd.createConfigManager();
const fixtureDir = join(__dirname, 'fixture');
const fixtureDir = new URL('fixture', import.meta.url).pathname;
const config = {
auth: false,
root: fixtureDir,

View file

@ -1,25 +1,27 @@
'use strict';
import {createMockImport} from 'mock-import';
import {Readable} from 'node:stream';
import path, {dirname} from 'node:path';
import fs from 'node:fs';
import {fileURLToPath} from 'node:url';
import tryToCatch from 'try-to-catch';
import serveOnce from 'serve-once';
import {test, stub} from 'supertape';
import cloudcmd from './cloudcmd.mjs';
const {Readable} = require('stream');
const {
stopAll,
reImport,
mockImport,
} = createMockImport(import.meta.url);
const path = require('path');
const fs = require('fs');
const tryToCatch = require('try-to-catch');
const {test, stub} = require('supertape');
const mockRequire = require('mock-require');
const cloudcmdPath = './cloudcmd';
const cloudcmd = require(cloudcmdPath);
const serveOnce = require('serve-once');
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const cloudcmdPath = './cloudcmd.mjs';
const {createConfigManager} = cloudcmd;
const routePath = './route';
const fixtureDir = path.join(__dirname, '..', 'test', 'fixture');
const {reRequire, stopAll} = mockRequire;
const defaultConfig = {
auth: false,
dropbox: false,
@ -231,12 +233,12 @@ test('cloudcmd: route: sendIndex: encode', async (t) => {
const read = stub().resolves(stream);
mockRequire('win32', {
mockImport('win32', {
read,
});
reRequire(routePath);
const cloudcmd = reRequire(cloudcmdPath);
await reImport(routePath);
const cloudcmd = await reImport(cloudcmdPath);
const {request} = serveOnce(cloudcmd, {
configManager: createConfigManager(),
@ -270,12 +272,12 @@ test('cloudcmd: route: sendIndex: encode: not encoded', async (t) => {
const read = stub().resolves(stream);
mockRequire('win32', {
mockImport('win32', {
read,
});
reRequire(routePath);
const cloudcmd = reRequire(cloudcmdPath);
await reImport(routePath);
const cloudcmd = await reImport(cloudcmdPath);
const {request} = serveOnce(cloudcmd);
const {body} = await request.get('/');
@ -306,12 +308,12 @@ test('cloudcmd: route: sendIndex: ddos: render', async (t) => {
const read = stub().resolves(stream);
mockRequire('win32', {
mockImport('win32', {
read,
});
reRequire(routePath);
const cloudcmd = reRequire(cloudcmdPath);
await reImport(routePath);
const cloudcmd = await reImport(cloudcmdPath);
const {request} = serveOnce(cloudcmd, {
config: defaultConfig,
@ -422,7 +424,7 @@ test('cloudcmd: route: dropbox', async (t) => {
config('dropbox', true);
config('dropboxToken', '');
const {_getReadDir} = reRequire(routePath);
const {_getReadDir} = await reImport(routePath);
const readdir = _getReadDir(config);
const [e] = await tryToCatch(readdir, '/root');
@ -453,13 +455,13 @@ test('cloudcmd: route: read: root', async (t) => {
const read = stub().returns(stream);
mockRequire('win32', {
mockImport('win32', {
read,
});
reRequire(routePath);
await reImport(routePath);
const cloudcmd = reRequire(cloudcmdPath);
const cloudcmd = await reImport(cloudcmdPath);
const configManager = createConfigManager();
const root = '/hello';

View file

@ -1,4 +1,4 @@
import cloudcmd from './cloudcmd.js';
import cloudcmd from './cloudcmd.mjs';
import http from 'node:http';
import {promisify} from 'node:util';
import currify from 'currify';

View file

@ -1,12 +1,12 @@
'use strict';
import {test, stub} from 'supertape';
import mockRequire from 'mock-require';
import {createMockImport} from 'mock-import';
import terminal from './terminal.js';
import {createConfigManager} from './cloudcmd.mjs';
const {test, stub} = require('supertape');
const {mockImport} = createMockImport(import.meta.url);
const mockRequire = require('mock-require');
const terminal = require('./terminal');
const {createConfigManager} = require('./cloudcmd');
const terminalPath = './terminal';
const terminalPath = './terminal.js';
const {stopAll} = mockRequire;
@ -30,13 +30,13 @@ test('cloudcmd: terminal: disabled: listen', (t) => {
t.end();
});
test('cloudcmd: terminal: enabled', (t) => {
test('cloudcmd: terminal: enabled', async (t) => {
const term = stub();
const arg = 'hello';
mockRequire(terminalPath, term);
mockImport(terminalPath, term);
const terminal = require(terminalPath);
const terminal = await import(terminalPath);
terminal(arg);
stopAll();
@ -68,7 +68,7 @@ test('cloudcmd: terminal: enabled: no string', (t) => {
test('cloudcmd: terminal: no arg', (t) => {
const gritty = {};
mockRequire('gritty', gritty);
mockImport('gritty', gritty);
const config = createConfigManager();
config('terminal', true);

View file

@ -1,22 +1,22 @@
'use strict';
import fs from 'node:fs';
import {test, stub} from 'supertape';
import tryCatch from 'try-catch';
import {createMockImport} from 'mock-import';
import validate from './validate.js';
import cloudcmd from './cloudcmd.mjs';
const fs = require('fs');
const {
stopAll,
mockImport,
reImport,
} = createMockImport(import.meta.url);
const {test, stub} = require('supertape');
const tryCatch = require('try-catch');
const mockRequire = require('mock-require');
const dir = '..';
const validatePath = `${dir}/server/validate.js`;
const validatePath = `${dir}/server/validate`;
const columnsPath = `${dir}/server/columns.js`;
const cloudcmdPath = `${dir}/server/cloudcmd`;
const validate = require(validatePath);
const cloudcmd = require(cloudcmdPath);
const columnsPath = `${dir}/server/columns`;
const exitPath = `${dir}/server/exit`;
const {reRequire, stopAll} = mockRequire;
const exitPath = `${dir}/server/exit.js`;
test('validate: root: bad', (t) => {
const config = {
@ -48,7 +48,7 @@ test('validate: root: /', (t) => {
t.end();
});
test('validate: root: stat', (t) => {
test('validate: root: stat', async (t) => {
const fn = stub();
const {statSync} = fs;
@ -58,9 +58,9 @@ test('validate: root: stat', (t) => {
throw Error(error);
};
mockRequire(exitPath, fn);
mockImport(exitPath, fn);
const {root} = reRequire(validatePath);
const {root} = await reImport(validatePath);
root('hello', fn);
@ -74,12 +74,12 @@ test('validate: root: stat', (t) => {
t.end();
});
test('validate: packer: not valid', (t) => {
test('validate: packer: not valid', async (t) => {
const fn = stub();
mockRequire(exitPath, fn);
mockImport(exitPath, fn);
const {packer} = reRequire(validatePath);
const {packer} = await reImport(validatePath);
const msg = 'cloudcmd --packer: could be "tar" or "zip" only';
packer('hello');
@ -90,12 +90,12 @@ test('validate: packer: not valid', (t) => {
t.end();
});
test('validate: editor: not valid', (t) => {
test('validate: editor: not valid', async (t) => {
const fn = stub();
mockRequire(exitPath, fn);
mockImport(exitPath, fn);
const {editor} = reRequire(validatePath);
const {editor} = await reImport(validatePath);
const msg = 'cloudcmd --editor: could be "dword", "edward" or "deepword" only';
editor('hello');
@ -106,11 +106,11 @@ test('validate: editor: not valid', (t) => {
t.end();
});
test('validate: columns', (t) => {
test('validate: columns', async (t) => {
const fn = stub();
mockRequire(exitPath, fn);
mockImport(exitPath, fn);
const {columns} = require(validatePath);
const {columns} = await import(validatePath);
columns('name-size-date');
@ -120,16 +120,16 @@ test('validate: columns', (t) => {
t.end();
});
test('validate: columns: wrong', (t) => {
test('validate: columns: wrong', async (t) => {
const fn = stub();
mockRequire(exitPath, fn);
mockRequire(columnsPath, {
mockImport(exitPath, fn);
mockImport(columnsPath, {
'name-size-date': '',
'name-size': '',
});
const {columns} = reRequire(validatePath);
const {columns} = await reImport(validatePath);
const msg = 'cloudcmd --columns: can be only one of: "name-size-date", "name-size"';
columns('hello');

View file

@ -1,24 +1,25 @@
'use strict';
import process from 'node:process';
import http from 'node:http';
import os from 'node:os';
import express from 'express';
import {Server} from 'socket.io';
import writejson from 'writejson';
import readjson from 'readjson';
import {promisify} from 'node:util';
import {fileURLToPath} from 'node:url';
import {dirname} from 'node:path';
import cloudcmd from '../server/cloudcmd.mjs';
const process = require('process');
const http = require('http');
const os = require('os');
const express = require('express');
const io = require('socket.io');
const writejson = require('writejson');
const readjson = require('readjson');
const {promisify} = require('util');
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
process.env.NODE_ENV = 'development';
const cloudcmd = require('../server/cloudcmd');
const {assign} = Object;
const pathConfig = os.homedir() + '/.cloudcmd.json';
const currentConfig = readjson.sync.try(pathConfig);
module.exports = before;
export default before;
function before(options, fn = options) {
const {
@ -38,7 +39,7 @@ function before(options, fn = options) {
server.close(cb);
};
const socket = io(server);
const socket = new Server(server);
app.use(cloudcmd({
socket,
@ -54,7 +55,7 @@ function before(options, fn = options) {
});
}
module.exports.connect = promisify((options, fn = options) => {
export const connect = promisify((options, fn = options) => {
before(options, (port, done) => {
fn(null, {
port,

View file

@ -1,11 +1,9 @@
'use strict';
import serveOnce from 'serve-once';
import test from 'supertape';
import cloudcmd from '../../server/cloudcmd.mjs';
const test = require('supertape');
const cloudcmd = require('../..');
const configManager = cloudcmd.createConfigManager();
const {request} = require('serve-once')(cloudcmd, {
const {request} = serveOnce(cloudcmd, {
config: {
auth: false,
},

View file

@ -1,24 +1,17 @@
'use strict';
import {mkdirSync} from 'node:fs';
import {join, dirname} from 'node:path';
import test from 'supertape';
import {rimraf} from 'rimraf';
import {fileURLToPath} from 'node:url';
import cloudcmd from '../../server/cloudcmd.mjs';
const {mkdirSync} = require('fs');
const {join} = require('path');
const test = require('supertape');
const rimraf = require('rimraf');
const __filename = fileURLToPath(import.meta.url);
const config = {
root: join(__dirname, '..'),
};
const cloudcmd = require('../..');
const __dirname = dirname(__filename);
const configManager = cloudcmd.createConfigManager();
configManager('auth', false);
const {request} = require('serve-once')(cloudcmd, {
config,
configManager,
});
const fixtureDir = join(__dirname, '..', 'fixture') + '/';
test('cloudcmd: rest: copy', async (t) => {

View file

@ -1,9 +1,8 @@
'use strict';
import serveOnce from 'serve-once';
import test from 'supertape';
import cloudcmd from '../../server/cloudcmd.mjs';
const test = require('supertape');
const cloudcmd = require('../..');
const {request} = require('serve-once')(cloudcmd, {
const {request} = serveOnce(cloudcmd, {
config: {
auth: false,
},

View file

@ -1,18 +1,19 @@
'use strict';
import {createMockImport} from 'mock-import';
import fs from 'node:fs';
import test from 'supertape';
import {Volume} from 'memfs';
import {ufs} from 'unionfs';
import serveOnce from 'serve-once';
const fs = require('fs');
const {
stopAll,
mockImport,
reImport,
} = createMockImport(import.meta.url);
const test = require('supertape');
const {Volume} = require('memfs');
const {ufs} = require('unionfs');
const mockRequire = require('mock-require');
const serveOnce = require('serve-once');
const {reRequire, stopAll} = mockRequire;
const cloudcmdPath = '../../';
const dir = `${cloudcmdPath}server/`;
const restPath = `${dir}rest`;
const dir = `../../server/`;
const cloudcmdPath = `${dir}cloudcmd.mjs`;
const restPath = `${dir}rest/index.js`;
const {assign} = Object;
@ -31,14 +32,17 @@ test('cloudcmd: rest: move', async (t) => {
assign(unionFS, {
promises: fs.promises,
});
mockRequire('fs', unionFS);
reRequire('@cloudcmd/rename-files');
reRequire('@cloudcmd/move-files');
reRequire(restPath);
mockImport('fs', unionFS);
const cloudcmd = reRequire(cloudcmdPath);
const {createConfigManager} = cloudcmd;
await reImport('@cloudcmd/rename-files');
await reImport('@cloudcmd/move-files');
await reImport(restPath);
const {
cloudcmd,
createConfigManager,
} = await reImport(cloudcmdPath);
const configManager = createConfigManager();
configManager('auth', false);
@ -65,7 +69,8 @@ test('cloudcmd: rest: move', async (t) => {
});
test('cloudcmd: rest: move: no from', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {cloudcmd} = await reImport(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const configManager = createConfigManager();
@ -89,7 +94,7 @@ test('cloudcmd: rest: move: no from', async (t) => {
});
test('cloudcmd: rest: move: no to', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {cloudcmd} = await reImport(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const configManager = createConfigManager();

View file

@ -1,19 +1,19 @@
'use strict';
const fs = require('fs');
const {join} = require('path');
const {promisify} = require('util');
const {reRequire} = require('mock-require');
const test = require('supertape');
const tar = require('tar-stream');
const gunzip = require('gunzip-maybe');
const pullout = require('pullout');
const cloudcmdPath = '../..';
const cloudcmd = require(cloudcmdPath);
const serveOnce = require('serve-once');
import {createMockImport} from 'mock-import';
import {fileURLToPath} from 'node:url';
import fs from 'node:fs';
import {join, dirname} from 'node:path';
import {promisify} from 'node:util';
import test from 'supertape';
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';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const cloudcmdPath = '../../server/cloudcmd.mjs';
const {reImport} = createMockImport(import.meta.url);
const pathZipFixture = join(__dirname, '..', 'fixture/pack.zip');
const pathTarFixture = join(__dirname, '..', 'fixture/pack.tar.gz');
@ -21,7 +21,7 @@ const pathTarFixture = join(__dirname, '..', 'fixture/pack.tar.gz');
const defaultOptions = {
config: {
auth: false,
root: join(__dirname, '..'),
root: new URL('..', import.meta.url).pathname,
},
};
@ -48,7 +48,7 @@ test('cloudcmd: rest: pack: tar: get', async (t) => {
config,
};
const cloudcmd = reRequire(cloudcmdPath);
const {cloudcmd} = await reImport(cloudcmdPath);
const {request} = serveOnce(cloudcmd, defaultOptions);
const {body} = await request.get(`/api/v1/pack/fixture/pack`, {

View file

@ -1,17 +1,19 @@
'use strict';
import {createMockImport} from 'mock-import';
import fs from 'node:fs';
import test from 'supertape';
import {Volume} from 'memfs';
import {ufs} from 'unionfs';
import mockRequire from 'mock-require';
import serveOnce from 'serve-once';
const fs = require('fs');
const {
stopAll,
mockImport,
reImport,
} = createMockImport(import.meta.url);
const test = require('supertape');
const {Volume} = require('memfs');
const {ufs} = require('unionfs');
const mockRequire = require('mock-require');
const serveOnce = require('serve-once');
const {reRequire, stopAll} = mockRequire;
const cloudcmdPath = '../../';
const dir = `${cloudcmdPath}server/`;
const dir = `../../server/`;
const cloudcmdPath = `${dir}cloudcmd.mjs`;
const restPath = `${dir}rest`;
test('cloudcmd: rest: rename', async (t) => {
@ -26,13 +28,13 @@ test('cloudcmd: rest: rename', async (t) => {
.use(vol)
.use(fs);
mockRequire('fs', unionFS);
mockImport('fs', unionFS);
reRequire('@cloudcmd/rename-files');
reRequire('@cloudcmd/move-files');
reRequire(restPath);
await reImport('@cloudcmd/rename-files');
await reImport('@cloudcmd/move-files');
await reImport(restPath);
const cloudcmd = reRequire(cloudcmdPath);
const {cloudcmd} = await reImport(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const configManager = createConfigManager();
@ -63,7 +65,7 @@ test('cloudcmd: rest: rename', async (t) => {
});
test('cloudcmd: rest: rename: no from', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {cloudcmd} = await reImport(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const configManager = createConfigManager();
@ -87,7 +89,7 @@ test('cloudcmd: rest: rename: no from', async (t) => {
});
test('cloudcmd: rest: rename: no to', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {cloudcmd} = await reImport(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const configManager = createConfigManager();

View file

@ -1,12 +1,14 @@
'use strict';
import {createRequire} from 'node:module';
import path, {dirname} from 'node:path';
import {fileURLToPath} from 'node:url';
import {once} from 'node:events';
import test from 'supertape';
import {io} from 'socket.io-client';
import {connect} from '../before.mjs';
const path = require('path');
const {once} = require('events');
const test = require('supertape');
const io = require('socket.io-client');
const {connect} = require('../before');
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const require = createRequire(import.meta.url);
const configPath = path.join(__dirname, '../..', 'server', 'config');
const configFn = require(configPath).createConfig();

View file

@ -2,7 +2,7 @@
const process = require('process');
const test = require('supertape');
const env = require('../../server/env');
const env = require('../../server/env.js');
test('env: small', (t) => {
process.env.cloudcmd_hello = 'world';

View file

@ -1,16 +1,19 @@
'use strict';
const {join} = require('path');
const {test, stub} = require('supertape');
import {createRequire} from 'node:module';
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';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const require = createRequire(import.meta.url);
const cloudcmdPath = join(__dirname, '..', '..');
const modulesPath = join(cloudcmdPath, 'json', 'modules.json');
const localModules = require(modulesPath);
const modulas = require(`${cloudcmdPath}/server/modulas`);
const cloudcmd = require(cloudcmdPath);
const {request} = require('serve-once')(cloudcmd, {
const {request} = serveOnce(cloudcmd, {
config: {
auth: false,
dropbox: false,

View file

@ -1,14 +1,13 @@
'use strict';
import serveOnce from 'serve-once';
import test from 'supertape';
import criton from 'criton';
import cloudcmd from '../server/cloudcmd.mjs';
const test = require('supertape');
const criton = require('criton');
const cloudcmd = require('..');
const config = {
auth: false,
};
const {request} = require('serve-once')(cloudcmd, {
const {request} = serveOnce(cloudcmd, {
config,
});