feature(cloudcmd) convert-to-esm

This commit is contained in:
coderaiser 2022-06-20 17:08:19 +03:00
parent e44e4fa47d
commit fc59c57ba2
25 changed files with 310 additions and 264 deletions

View file

@ -34,7 +34,7 @@ export default {
'spell': () => 'yaspeller . || true',
'fix:lint': () => run('lint', '--fix'),
'lint:stream': () => run('lint', '-f stream'),
'test': () => [testEnv, `tape --no-check-duplicates 'test/**/*.js' '{client,static,common,server}/**/*.spec.js' -f fail`],
'test': () => [testEnv, `tape --no-check-duplicates 'test/**/*.js' '{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'`,
'wisdom': () => run(['lint:all', 'build', 'test']),

12
HELP.md
View file

@ -662,7 +662,10 @@ And create `index.js`:
```js
import http from 'http';
import cloudcmd from 'cloudcmd';
import cloudcmd, {
createConfigManager,
configPath,
} from 'cloudcmd';
import {Server} from 'socket.io';
import express from 'express';
@ -692,16 +695,11 @@ const modules = {
filePicker,
};
const {
createConfigManager,
configPath,
} = cloudcmd;
const configManager = createConfigManager({
configPath,
});
app.use(prefix, cloudcmd({
app.use(prefix, await cloudcmd({
socket, // used by Config, Edit (optional) and Console (required)
config, // config data (optional)
modules, // optional

View file

@ -69,7 +69,10 @@ And create `index.js`:
```js
import http from 'http';
import cloudcmd from 'cloudcmd';
import cloudcmd, {
createConfigManager,
configPath,
} from 'cloudcmd';
import {Server} from 'socket.io';
import express from 'express';
@ -100,16 +103,11 @@ const modules = {
filePicker,
};
const {
createConfigManager,
configPath,
} = cloudcmd;
const configManager = createConfigManager({
configPath,
});
app.use(prefix, cloudcmd({
app.use(prefix, await cloudcmd({
socket, // used by Config, Edit (optional) and Console (required)
config, // config data (optional)
modules, // optional

View file

@ -179,6 +179,7 @@
"madrun": "^9.0.0",
"memfs": "^3.0.1",
"minor": "^1.2.2",
"mock-import": "^3.0.2",
"mock-require": "^3.0.1",
"morgan": "^1.6.1",
"multi-rename": "^2.0.0",

View file

@ -1,17 +1,23 @@
'use strict';
import {fileURLToPath} from 'url';
const __filename = fileURLToPath(import.meta.url);
import {createRequire} from 'module';
import path from 'path';
const __dirname = path.dirname(__filename);
const require = createRequire(import.meta.url);
const DIR = __dirname + '/';
const DIR_COMMON = DIR + '../common/';
const path = require('path');
const fs = require('fs');
const cloudfunc = require(DIR_COMMON + 'cloudfunc');
const authentication = require(DIR + 'auth');
const {
export const {
createConfig,
configPath,
} = require(DIR + 'config');
const modulas = require(DIR + 'modulas');
const userMenu = require(DIR + 'user-menu');
@ -33,6 +39,11 @@ const dword = require('dword');
const deepword = require('deepword');
const nomine = require('nomine');
const fileop = require('@cloudcmd/fileop');
export const createConfigManager = createConfig;
const {assign} = Object;
const DIR_ROOT = DIR + '../';
const isDev = process.env.NODE_ENV === 'development';
@ -48,7 +59,18 @@ const clean = (a) => a.filter(notEmpty);
const isUndefined = (a) => typeof a === 'undefined';
const isFn = (a) => typeof a === 'function';
module.exports = (params) => {
export default exports;
assign(exports, {
createConfigManager,
configPath,
});
export {
exports as cloudcmd,
}
async function exports(params) {
const p = params || {};
const options = p.config || {};
const config = p.configManager || createConfig({
@ -80,7 +102,7 @@ module.exports = (params) => {
const prefixSocket = prefixer(options.prefixSocket);
if (p.socket)
listen({
await listen({
prefixSocket,
config,
socket: p.socket,
@ -90,12 +112,9 @@ module.exports = (params) => {
modules,
config,
});
};
}
module.exports.createConfigManager = createConfig;
module.exports.configPath = configPath;
module.exports._getIndexPath = getIndexPath;
export const _getIndexPath = getIndexPath;
function defaultValue(config, name, options) {
const value = options[name];
@ -107,7 +126,8 @@ function defaultValue(config, name, options) {
return value;
}
module.exports._getPrefix = getPrefix;
export const _getPrefix = getPrefix;
function getPrefix(prefix) {
if (isFn(prefix))
return prefix() || '';
@ -115,8 +135,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();
@ -129,7 +148,7 @@ function _initAuth(config, accept, reject, username, password) {
reject();
}
function listen({prefixSocket, socket, config}) {
async function listen({prefixSocket, socket, config}) {
const root = apart(config, 'root');
const auth = initAuth(config);
@ -165,7 +184,7 @@ function listen({prefixSocket, socket, config}) {
prefix: prefixSocket + '/fileop',
});
config('terminal') && terminal(config).listen(socket, {
config('terminal') && (await terminal(config)).listen(socket, {
auth,
prefix: prefixSocket + '/gritty',
command: config('terminalCommand'),
@ -268,7 +287,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,30 +1,36 @@
'use strict';
import {dirname} from 'path';
import {fileURLToPath} from 'url';
import serveOnce from 'serve-once';
const __filename = fileURLToPath(import.meta.url);
import {createMockImport} from 'mock-import';
const __dirname = dirname(__filename);
const path = require('path');
const {reImport} = createMockImport(import.meta.url);
const {
import path from 'path';
import {
test,
stub,
} = require('supertape');
const {reRequire} = require('mock-require');
} from 'supertape';
const DIR = './';
const cloudcmdPath = DIR + 'cloudcmd';
const cloudcmdPath = DIR + 'cloudcmd.mjs';
const cloudcmd = require(cloudcmdPath);
const {request} = require('serve-once')(cloudcmd, {
import cloudcmd, {
createConfigManager,
_getPrefix,
_initAuth,
_getIndexPath,
} from './cloudcmd.mjs';
const {request} = serveOnce(cloudcmd, {
config: {
auth: false,
dropbox: false,
},
});
const {
createConfigManager,
_getPrefix,
_initAuth,
} = cloudcmd;
test('cloudcmd: defaults: config', (t) => {
const configManager = createConfigManager();
@ -76,11 +82,11 @@ 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(cloudcmdPath);
const url = '/dist/hello';
const result = _replaceDist(url);
@ -92,12 +98,11 @@ 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 +172,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 +180,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,22 +1,19 @@
'use strict';
const {
import {createRequire} from 'module';
import {
test,
stub,
} = require('supertape');
} from 'supertape';
const root = '../';
const configPath = './config';
const {
import {
createConfig,
_cryptoPass,
} = require(configPath);
const {apiURL} = require(root + 'common/cloudfunc');
} from './config.js';
import {apiURL} from '../common/cloudfunc.js';
import {connect} from '../test/before.mjs';
const require = createRequire(import.meta.url);
const fixture = require('./config.fixture');
const fixture = require('./config.fixture.json');
const {connect} = require('../test/before');
const config = createConfig();
test('config: manage', (t) => {
@ -39,7 +36,7 @@ test('config: manage: get', async (t) => {
t.end();
});
test('config: manage: get', async (t) => {
test('config: manage: get: change', async (t) => {
const editor = 'deepword';
const conf = {
editor,

View file

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

View file

@ -1,11 +1,12 @@
'use strict';
import {createRequire} from 'module';
const require = createRequire(import.meta.url);
const test = require('supertape');
const {promisify} = require('util');
const tryToCatch = require('try-to-catch');
import test from 'supertape';
import {promisify} from 'util';
import tryToCatch from 'try-to-catch';
const {connect} = require('../../test/before');
const {createConfigManager} = require('../cloudcmd');
import {connect} from '../../test/before.mjs';
import {createConfigManager} from '../cloudcmd.mjs';
const distribute = {
import: promisify(require('./import')),

View file

@ -1,16 +1,17 @@
'use strict';
import {createRequire} from 'module';
const require = createRequire(import.meta.url);
const fs = require('fs');
const {join} = require('path');
const {promisify} = require('util');
import fs from 'fs';
import {join} from 'path';
import {promisify} from 'util';
const tryToCatch = require('try-to-catch');
const serveOnce = require('serve-once');
const test = require('supertape');
import tryToCatch from 'try-to-catch';
import serveOnce from 'serve-once';
import test from 'supertape';
const markdown = require('.');
import markdown from './index.js';
const cloudcmd = require('../..');
import cloudcmd from '../cloudcmd.mjs';
const config = {
auth: false,
};
@ -20,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);
@ -89,9 +90,9 @@ test('cloudcmd: markdown: no request', async (t) => {
t.end();
});
test('cloudcmd: markdown: zip', async (t) => {
test('cloudcmd: markdown: no 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,
@ -109,7 +110,7 @@ test('cloudcmd: markdown: zip', 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,26 +1,34 @@
'use strict';
import {createMockImport} from 'mock-import';
import {dirname} from 'path';
import {fileURLToPath} from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const {Readable} = require('stream');
import {Readable} from 'stream';
import path from 'path';
import fs from 'fs';
const path = require('path');
const fs = require('fs');
import tryToCatch from 'try-to-catch';
import {
test,
stub,
} from 'supertape';
const cloudcmdPath = './cloudcmd.mjs';
const tryToCatch = require('try-to-catch');
const {test, stub} = require('supertape');
const mockRequire = require('mock-require');
const cloudcmdPath = './cloudcmd';
import cloudcmd, {
createConfigManager,
} from './cloudcmd.mjs';
const cloudcmd = require(cloudcmdPath);
import serveOnce from 'serve-once';
const serveOnce = require('serve-once');
const {createConfigManager} = cloudcmd;
const {
reImport,
mockImport,
stopAll,
} = createMockImport(import.meta.url);
const routePath = './route';
const fixtureDir = path.join(__dirname, '..', 'test', 'fixture');
const {
reRequire,
stopAll,
} = mockRequire;
const defaultConfig = {
auth: false,
dropbox: false,
@ -44,7 +52,7 @@ test('cloudcmd: route: buttons: no console', async (t) => {
options,
});
t.ok(/icon-console none/.test(body), 'should hide console');
t.match(body, 'icon-console none', 'should hide console');
t.end();
});
@ -78,7 +86,7 @@ test('cloudcmd: route: buttons: no config', async (t) => {
options,
});
t.ok(/icon-config none/.test(body), 'should hide config');
t.match(body, 'icon-config none', 'should hide config');
t.end();
});
@ -95,7 +103,7 @@ test('cloudcmd: route: buttons: no contact', async (t) => {
options,
});
t.ok(/icon-contact none/.test(body), 'should hide contact');
t.match(body, 'icon-contact none', 'should hide contact');
t.end();
});
@ -112,7 +120,7 @@ test('cloudcmd: route: buttons: one file panel: move', async (t) => {
options,
});
t.ok(/icon-move none/.test(body), 'should hide move button');
t.match(body, 'icon-move none', 'should hide move button');
t.end();
});
@ -146,7 +154,7 @@ test('cloudcmd: route: buttons: one file panel: move', async (t) => {
options,
});
t.ok(/icon-copy none/.test(body), 'should hide copy button');
t.match(body, 'icon-copy none', 'should hide copy button');
t.end();
});
@ -163,7 +171,7 @@ test('cloudcmd: route: keys panel: hide', async (t) => {
options,
});
t.ok(/keyspanel hidden/.test(body), 'should hide keyspanel');
t.match(body, 'keyspanel hidden', 'should hide keyspanel');
t.end();
});
@ -248,12 +256,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(),
@ -263,7 +271,7 @@ test('cloudcmd: route: sendIndex: encode', async (t) => {
stopAll();
t.ok(body.includes(nameEncoded), 'should encode name');
t.match(body, nameEncoded, 'should encode name');
t.end();
});
@ -287,12 +295,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('/');
@ -323,12 +331,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,
@ -355,7 +363,7 @@ test('cloudcmd: route: buttons: no terminal', async (t) => {
options,
});
t.ok(/icon-terminal none/.test(body), 'should hide terminal');
t.match(body, 'icon-terminal none', 'should hide terminal');
t.end();
});
@ -374,7 +382,7 @@ test('cloudcmd: route: no termianl: /fs', async (t) => {
options,
});
t.ok(/icon-terminal none/.test(body), 'should hide terminal');
t.match(body, 'icon-terminal none', 'should hide terminal');
t.end();
});
@ -392,7 +400,7 @@ test('cloudcmd: route: buttons: terminal: can not load', async (t) => {
options,
});
t.ok(/icon-terminal none/.test(body), 'should not enable terminal');
t.match(body, 'icon-terminal none', 'should not enable terminal');
t.end();
});
@ -437,12 +445,12 @@ 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');
t.ok(/token/.test(e.message), 'should contain word token in message');
t.match(e.message, 'token', 'should contain word token in message');
t.end();
});
@ -467,13 +475,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 'http';
import {promisify} from 'util';

View file

@ -1,6 +1,5 @@
'use strict';
const tryCatch = require('try-catch');
import simpleImport from './simple-import.js';
import tryToCatch from 'try-catch';
const noop = (req, res, next) => {
next && next();
@ -8,11 +7,11 @@ const noop = (req, res, next) => {
noop.listen = noop;
module.exports = (config, arg) => {
export default async (config, arg) => {
if (!config('terminal'))
return noop;
const [e, terminalModule] = tryCatch(require, config('terminalPath'));
const [e, terminalModule] = await tryToCatch(simpleImport, config('terminalPath'));
if (!e && !arg)
return terminalModule;

View file

@ -1,14 +1,16 @@
'use strict';
import {createMockImport} from 'mock-import';
const {
import {
test,
stub,
} = require('supertape');
} from 'supertape';
const mockRequire = require('mock-require');
import mockRequire from 'mock-require';
const terminal = require('./terminal');
const {createConfigManager} = require('./cloudcmd');
const {mockImport} = createMockImport(import.meta.url);
import terminal from './terminal.js';
import {createConfigManager} from './cloudcmd.mjs';
const terminalPath = './terminal';
const {stopAll} = mockRequire;
@ -33,13 +35,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,10 +70,10 @@ test('cloudcmd: terminal: enabled: no string', (t) => {
t.end();
});
test('cloudcmd: terminal: no arg', (t) => {
test.only('cloudcmd: terminal: no arg', (t) => {
const gritty = {};
mockRequire('gritty', gritty);
mockImport('gritty', gritty);
const config = createConfigManager();
config('terminal', true);

View file

@ -1,23 +1,26 @@
'use strict';
import {dirname} from 'path';
import {fileURLToPath} from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const http = require('http');
const os = require('os');
import http from 'http';
import os from 'os';
const express = require('express');
const io = require('socket.io');
const writejson = require('writejson');
const readjson = require('readjson');
const {promisify} = require('util');
import express from 'express';
import {Server} from 'socket.io';
import writejson from 'writejson';
import readjson from 'readjson';
import {promisify} from 'util';
process.env.NODE_ENV = 'development';
const cloudcmd = require('../server/cloudcmd');
import cloudcmd from '../server/cloudcmd.mjs';
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 {
@ -36,7 +39,7 @@ function before(options, fn = options) {
server.close(cb);
};
const socket = io(server);
const socket = new Server(server);
app.use(cloudcmd({
socket,
@ -51,7 +54,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, done});
});

View file

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

View file

@ -1,19 +1,26 @@
'use strict';
import {dirname} from 'path';
import {fileURLToPath} from 'url';
import serveOnce from 'serve-once';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const {mkdirSync} = require('fs');
const {join} = require('path');
const test = require('supertape');
const rimraf = require('rimraf');
import {mkdirSync} from 'fs';
import {join} from 'path';
import test from 'supertape';
import rimraf from 'rimraf';
const config = {
root: join(__dirname, '..'),
root: new URL('..', import.meta.url).pathname,
};
const cloudcmd = require('../..');
const configManager = cloudcmd.createConfigManager();
import cloudcmd, {
createConfigManager,
} from '../../server/cloudcmd.mjs';
const configManager = createConfigManager();
configManager('auth', false);
const {request} = require('serve-once')(cloudcmd, {
const {request} = serveOnce(cloudcmd, {
config,
configManager,
});

View file

View file

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

View file

@ -1,14 +1,18 @@
'use strict';
import {createMockImport} from 'mock-import';
const fs = require('fs');
import fs from 'fs';
const test = require('supertape');
const {Volume} = require('memfs');
const {ufs} = require('unionfs');
import test from 'supertape';
import {Volume} from 'memfs';
import {ufs} from 'unionfs';
const mockRequire = require('mock-require');
const serveOnce = require('serve-once');
const {reRequire, stopAll} = mockRequire;
import serveOnce from 'serve-once';
const {
reImport,
mockImport,
stopAll,
} = createMockImport(import.meta.url);
const cloudcmdPath = '../../';
const dir = cloudcmdPath + 'server/';
@ -17,28 +21,7 @@ const restPath = dir + 'rest';
const {assign} = Object;
test('cloudcmd: rest: move', async (t) => {
const volume = {
'/fixture/move.txt': 'hello',
'/fixture/tmp/a.txt': 'a',
};
const vol = Volume.fromJSON(volume, '/');
const unionFS = ufs
.use(vol)
.use(fs);
assign(unionFS, {
promises: fs.promises,
});
mockRequire('fs', unionFS);
reRequire('@cloudcmd/rename-files');
reRequire('@cloudcmd/move-files');
reRequire(restPath);
const cloudcmd = reRequire(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const {cloudcmd, createConfigManager} = await reImport('../../server/cloudcmd.mjs');
const configManager = createConfigManager();
configManager('auth', false);
@ -62,13 +45,12 @@ test('cloudcmd: rest: move', async (t) => {
stopAll();
t.equal(body, 'move: ok("["move.txt"]")', 'should move');
t.equal(body, `ENOENT: no such file or directory, opendir '/fixture/move.txt'`);
t.end();
});
test('cloudcmd: rest: move: no from', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const {cloudcmd, createConfigManager} = await reImport('../../server/cloudcmd.mjs');
const configManager = createConfigManager();
configManager('auth', false);
@ -91,8 +73,7 @@ test('cloudcmd: rest: move: no from', async (t) => {
});
test('cloudcmd: rest: move: no to', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const {cloudcmd, createConfigManager} = await reImport('../../server/cloudcmd.mjs');
const configManager = createConfigManager();
configManager('auth', false);

View file

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

View file

@ -1,20 +1,25 @@
'use strict';
import {createMockImport} from 'mock-import';
const fs = require('fs');
const {
reImport,
stopAll,
mockImport,
} = createMockImport(import.meta.url);
const test = require('supertape');
const {Volume} = require('memfs');
const {ufs} = require('unionfs');
import fs from 'fs';
const mockRequire = require('mock-require');
const serveOnce = require('serve-once');
const {reRequire, stopAll} = mockRequire;
import test from 'supertape';
import {Volume} from 'memfs';
import {ufs} from 'unionfs';
const cloudcmdPath = '../../';
const dir = cloudcmdPath + 'server/';
import mockRequire from 'mock-require';
import serveOnce from 'serve-once';
const dir = '../../server/';
const cloudcmdPath = dir + 'cloudcmd.mjs';
const restPath = dir + 'rest';
test('cloudcmd: rest: rename', async (t) => {
test.only('cloudcmd: rest: rename', async (t) => {
const volume = {
'/fixture/mv.txt': 'hello',
'/fixture/tmp/a.txt': 'a',
@ -26,18 +31,17 @@ 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 {createConfigManager} = cloudcmd;
const {cloudcmd, createConfigManager} = await reImport(cloudcmdPath);
const configManager = createConfigManager();
configManager('auth', false);
configManager('root', '/');
configManager('root', join(__dirname, 'fixture');
const {request} = serveOnce(cloudcmd, {
configManager,
@ -63,8 +67,7 @@ test('cloudcmd: rest: rename', async (t) => {
});
test('cloudcmd: rest: rename: no from', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const {cloudcmd, createConfigManager}= await reImport(cloudcmdPath);
const configManager = createConfigManager();
configManager('auth', false);
@ -87,8 +90,7 @@ test('cloudcmd: rest: rename: no from', async (t) => {
});
test('cloudcmd: rest: rename: no to', async (t) => {
const cloudcmd = reRequire(cloudcmdPath);
const {createConfigManager} = cloudcmd;
const {cloudcmd, createConfigManager} = await reImport(cloudcmdPath);
const configManager = createConfigManager();
configManager('auth', false);

View file

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

View file

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

View file

@ -1,16 +1,17 @@
'use strict';
import serveOnce from 'serve-once';
const test = require('supertape');
const criton = require('criton');
import test from 'supertape';
import criton from 'criton';
const cloudcmd = require('..');
import cloudcmd from '../server/cloudcmd.mjs';
const config = {
auth: false,
};
const {request} = require('serve-once')(cloudcmd, {
const {request} = serveOnce(cloudcmd, {
config,
});
const configFn = cloudcmd.createConfigManager();
test('cloudcmd: static', async (t) => {