feature: convert to ESM

This commit is contained in:
coderaiser 2024-03-22 18:24:17 +02:00
parent 363e14d3be
commit c13111ae5e
26 changed files with 243 additions and 295 deletions

View file

@ -33,7 +33,7 @@ export default {
'lint:fresh': () => run('lint', '--fresh'), 'lint:fresh': () => run('lint', '--fresh'),
'fix:lint': () => run('lint', '--fix'), 'fix:lint': () => run('lint', '--fix'),
'lint:stream': () => run('lint', '-f stream'), 'lint:stream': () => run('lint', '-f stream'),
'test': () => [testEnv, `tape 'test/**/*.js' '{client,static,common,server}/**/*.spec.js' -f fail`], 'test': () => [testEnv, `tape 'test/**/*.{js,mjs}' '{client,static,common,server}/**/*.spec.{js,mjs}' -f fail`],
'test:client': () => `tape 'test/client/**/*.js'`, 'test:client': () => `tape 'test/client/**/*.js'`,
'test:server': () => `tape 'test/**/*.js' 'server/**/*.spec.js' 'common/**/*.spec.js'`, 'test:server': () => `tape 'test/**/*.js' 'server/**/*.spec.js' 'common/**/*.spec.js'`,
'wisdom': () => run(['lint:all', 'build', 'test']), 'wisdom': () => run(['lint:all', 'build', 'test']),

View file

@ -5587,7 +5587,7 @@ fix:
- (rest) onDelete: func(null, body) -> func - (rest) onDelete: func(null, body) -> func
- (rest) onStat: add var - (rest) onStat: add var
- (cloudcmd) change index path - (cloudcmd) change index path
- (server) start: url -> URL - (server) start: url -> PREFIX
- (server) start: SSLPort -> sslPort - (server) start: SSLPort -> sslPort
- (server) start: Port -> port - (server) start: Port -> port
- (dom) getCurrentDirPath: "," -> ";" - (dom) getCurrentDirPath: "," -> ";"

View file

@ -133,7 +133,7 @@ Cloud Commander supports the following command-line parameters:
For options not specified by command-line parameters, Cloud Commander then reads configuration data from `~/.cloudcmd.json`. It uses port `8000` by default. For options not specified by command-line parameters, Cloud Commander then reads configuration data from `~/.cloudcmd.json`. It uses port `8000` by default.
To begin using the web client, go to this URL in your browser: To begin using the web client, go to this PREFIX in your browser:
``` ```
http://localhost:8000 http://localhost:8000

View file

@ -10,7 +10,7 @@
"type": "git", "type": "git",
"url": "git://github.com/coderaiser/cloudcmd.git" "url": "git://github.com/coderaiser/cloudcmd.git"
}, },
"main": "server/cloudcmd.js", "main": "server/cloudcmd.mjs",
"keywords": [ "keywords": [
"console", "console",
"terminal", "terminal",

View file

@ -1,38 +1,34 @@
'use strict'; import path, {dirname, join} from 'node:path';
import {fileURLToPath} from 'node:url';
import fullstore from 'fullstore';
import process from 'process';
import fs 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 {createConfig, configPath} from './config.js';
import modulas from './modulas.js';
import userMenu from './user-menu.mjs';
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 {createDepStore} from './depstore.js';
const {join} = require('node:path'); const __filename = fileURLToPath(import.meta.url);
const fullstore = require('fullstore'); const __dirname = dirname(__filename);
const process = require('node:process');
const path = require('node:path');
const fs = require('node:fs');
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 cloudfunc = require('../common/cloudfunc');
const authentication = require('./auth');
const {createConfig, configPath} = require(`./config`);
const modulas = require(`./modulas`);
const userMenu = require(`./user-menu`);
const rest = require(`./rest/index.js`);
const route = require(`./route`);
const validate = require(`./validate`);
const prefixer = require(`./prefixer`);
const terminal = require(`./terminal`);
const distribute = require(`./distribute`);
const {createDepStore} = require('./depstore');
const {assign} = Object; const {assign} = Object;
const DIR = `${__dirname}/`; const DIR = `${__dirname}/`;
const DIR_ROOT = join(DIR, '..'); const DIR_ROOT = join(DIR, '..');
@ -50,7 +46,7 @@ const clean = (a) => a.filter(notEmpty);
const isUndefined = (a) => typeof a === 'undefined'; const isUndefined = (a) => typeof a === 'undefined';
const isFn = (a) => typeof a === 'function'; const isFn = (a) => typeof a === 'function';
module.exports = cloudcmd; export default cloudcmd;
function cloudcmd(params) { function cloudcmd(params) {
const p = params || {}; const p = params || {};
@ -97,14 +93,13 @@ function cloudcmd(params) {
const depStore = createDepStore(); const depStore = createDepStore();
assign(cloudcmd, {
depStore,
});
module.exports.createConfigManager = createConfig; export const createConfigManager = createConfig;
module.exports.configPath = configPath; export {
configPath,
};
module.exports._getIndexPath = getIndexPath; export const _getIndexPath = getIndexPath;
function defaultValue(config, name, options) { function defaultValue(config, name, options) {
const value = options[name]; const value = options[name];
@ -116,7 +111,8 @@ function defaultValue(config, name, options) {
return value; return value;
} }
module.exports._getPrefix = getPrefix; export const _getPrefix = getPrefix;
function getPrefix(prefix) { function getPrefix(prefix) {
if (isFn(prefix)) if (isFn(prefix))
return prefix() || ''; return prefix() || '';
@ -124,8 +120,7 @@ function getPrefix(prefix) {
return prefix || ''; return prefix || '';
} }
module.exports._initAuth = _initAuth; export function _initAuth(config, accept, reject, username, password) {
function _initAuth(config, accept, reject, username, password) {
if (!config('auth')) if (!config('auth'))
return accept(); return accept();
@ -270,8 +265,9 @@ function logout(req, res, next) {
res.sendStatus(401); res.sendStatus(401);
} }
module.exports._isDev = isDev; export const _isDev = isDev;
module.exports._replaceDist = replaceDist; export const _replaceDist = replaceDist;
function replaceDist(url) { function replaceDist(url) {
if (!isDev()) if (!isDev())
return url; return url;
@ -297,3 +293,8 @@ function setSW(req, res, next) {
next(); next();
} }
assign(cloudcmd, {
depStore,
createConfigManager,
});

View file

@ -1,23 +1,25 @@
'use strict'; import path, {dirname} from 'node:path';
import {fileURLToPath} from 'node:url';
const path = require('node:path'); import serveOnce from 'serve-once';
const {test, stub} = require('supertape'); import {test, stub} from 'supertape';
const cloudcmd = require('./cloudcmd.js'); import cloudcmd, {
const {request} = require('serve-once')(cloudcmd, {
config: {
auth: false,
dropbox: false,
},
});
const {
_isDev, _isDev,
_replaceDist, _replaceDist,
createConfigManager, createConfigManager,
_getPrefix, _getPrefix,
_initAuth, _initAuth,
} = cloudcmd; _getIndexPath,
} from './cloudcmd.mjs';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const {request} = serveOnce(cloudcmd, {
config: {
auth: false,
dropbox: false,
},
});
test('cloudcmd: defaults: config', (t) => { test('cloudcmd: defaults: config', (t) => {
const configManager = createConfigManager(); const configManager = createConfigManager();
@ -158,7 +160,7 @@ test('cloudcmd: getIndexPath: production', (t) => {
const isDev = false; const isDev = false;
const name = path.join(__dirname, '..', 'dist', 'index.html'); const name = path.join(__dirname, '..', 'dist', 'index.html');
t.equal(cloudcmd._getIndexPath(isDev), name); t.equal(_getIndexPath(isDev), name);
t.end(); t.end();
}); });
@ -166,7 +168,7 @@ test('cloudcmd: getIndexPath: development', (t) => {
const isDev = true; const isDev = true;
const name = path.join(__dirname, '..', 'dist-dev', 'index.html'); const name = path.join(__dirname, '..', 'dist-dev', 'index.html');
t.equal(cloudcmd._getIndexPath(isDev), name); t.equal(_getIndexPath(isDev), name);
t.end(); 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(); const config = createConfig();
test('config: manage', (t) => { test('config: manage', (t) => {

View file

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

View file

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

View file

@ -1,28 +1,24 @@
'use strict'; import fs from 'node:fs';
import {join} from 'node:path';
import {promisify} from 'node:util';
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';
const fs = require('node:fs');
const {join} = require('node:path');
const {promisify} = require('node:util');
const tryToCatch = require('try-to-catch');
const serveOnce = require('serve-once');
const test = require('supertape');
const markdown = require('.');
const cloudcmd = require('../..');
const config = { const config = {
auth: false, auth: false,
}; };
const configManager = cloudcmd.createConfigManager(); const configManager = cloudcmd.createConfigManager();
const {request} = require('serve-once')(cloudcmd, { const {request} = serveOnce(cloudcmd, {
config, config,
configManager, configManager,
}); });
const fixtureDir = join(__dirname, 'fixture'); const fixtureDir = new URL('fixture', import.meta.url).pathname;
const _markdown = promisify(markdown); const _markdown = promisify(markdown);
@ -93,7 +89,7 @@ test('cloudcmd: markdown: no request', async (t) => {
test('cloudcmd: markdown', async (t) => { test('cloudcmd: markdown', async (t) => {
const configManager = cloudcmd.createConfigManager(); const configManager = cloudcmd.createConfigManager();
const fixtureDir = join(__dirname, 'fixture'); const fixtureDir = new URL('fixture', import.meta.url).pathname;
const config = { const config = {
auth: false, auth: false,
root: fixtureDir, root: fixtureDir,
@ -112,7 +108,7 @@ test('cloudcmd: markdown', async (t) => {
test('cloudcmd: markdown: zip', async (t) => { test('cloudcmd: markdown: zip', async (t) => {
const configManager = cloudcmd.createConfigManager(); const configManager = cloudcmd.createConfigManager();
const fixtureDir = join(__dirname, 'fixture'); const fixtureDir = new URL('fixture', import.meta.url).pathname;
const config = { const config = {
auth: false, auth: false,
root: fixtureDir, root: fixtureDir,

View file

@ -1,18 +1,15 @@
'use strict'; import path, {dirname} from 'node:path';
import {fileURLToPath} from 'node:url';
import {Readable} from 'node:stream';
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.js';
const {Readable} = require('node:stream'); const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const path = require('node:path');
const fs = require('node:fs');
const tryToCatch = require('try-to-catch');
const {test, stub} = require('supertape');
const cloudcmd = require('./cloudcmd');
const serveOnce = require('serve-once');
const {_getReadDir} = require('./route');
const fixtureDir = path.join(__dirname, '..', 'test', 'fixture'); const fixtureDir = path.join(__dirname, '..', 'test', 'fixture');
const {createConfigManager} = cloudcmd; const {createConfigManager} = cloudcmd;

View file

@ -1,18 +1,18 @@
import cloudcmd from './cloudcmd.js';
import http from 'node:http'; import http from 'node:http';
import {promisify} from 'node:util'; import {promisify} from 'node:util';
import process from 'node:process';
import currify from 'currify'; import currify from 'currify';
import squad from 'squad'; import squad from 'squad';
import tryToCatch from 'try-to-catch'; import tryToCatch from 'try-to-catch';
import wraptile from 'wraptile';
import compression from 'compression';
import threadIt from 'thread-it';
import exit from './exit.js';
import opn from 'open'; import opn from 'open';
import express from 'express'; import express from 'express';
import {Server} from 'socket.io'; import {Server} from 'socket.io';
import tryRequire from 'tryrequire'; import tryRequire from 'tryrequire';
import process from 'node:process'; import wraptile from 'wraptile';
import compression from 'compression';
import threadIt from 'thread-it';
import exit from './exit.js';
import cloudcmd from './cloudcmd.mjs';
const bind = (f, self) => f.bind(self); const bind = (f, self) => f.bind(self);

View file

@ -1,9 +1,6 @@
'use strict'; import {test, stub} from 'supertape';
import terminal from './terminal.js';
const {test, stub} = require('supertape'); import {createConfigManager} from './cloudcmd.mjs';
const terminal = require('./terminal');
const {createConfigManager} = require('./cloudcmd');
test('cloudcmd: terminal: disabled', (t) => { test('cloudcmd: terminal: disabled', (t) => {
const config = createConfigManager(); const config = createConfigManager();

View file

@ -1,28 +1,25 @@
'use strict'; import {createRequire} from 'node:module';
import {homedir} from 'node:os';
import {readFile as _readFile} from 'node:fs/promises';
import {join} from 'node:path';
import montag from 'montag';
import tryToCatch from 'try-to-catch';
import currify from 'currify';
import threadIt from 'thread-it';
import {codeframe} from 'putout';
const once = require('once'); const require = createRequire(import.meta.url);
const {homedir} = require('node:os');
const {readFile: _readFile, readFile} = require('node:fs/promises');
const {join} = require('node:path');
const montag = require('montag');
const tryToCatch = require('try-to-catch');
const currify = require('currify');
const threadIt = require('thread-it');
const {codeframe} = require('putout');
const putout = threadIt(require.resolve('putout')); const putout = threadIt(require.resolve('putout'));
threadIt.init(); threadIt.init();
// warm up worker cache // warm up worker cache
transpile(''); transpile('');
const URL = '/api/v1/user-menu'; const PREFIX = '/api/v1/user-menu';
const DEFAULT_MENU_PATH = join(__dirname, '../static/user-menu.js'); const DEFAULT_MENU_PATH = new URL('../static/user-menu.js', import.meta.url).pathname;
module.exports = currify(async ({menuName, readFile = _readFile}, req, res, next) => { export default currify(async ({menuName, readFile = _readFile}, req, res, next) => {
if (req.url.indexOf(URL)) if (!req.url.startsWith(PREFIX))
return next(); return next();
const {method} = req; const {method} = req;
@ -40,7 +37,7 @@ module.exports = currify(async ({menuName, readFile = _readFile}, req, res, next
async function onGET({req, res, menuName, readFile}) { async function onGET({req, res, menuName, readFile}) {
const {dir} = req.query; const {dir} = req.query;
const url = req.url.replace(URL, ''); const url = req.url.replace(PREFIX, '');
if (url === '/default') if (url === '/default')
return sendDefaultMenu(res); return sendDefaultMenu(res);
@ -68,7 +65,6 @@ async function onGET({req, res, menuName, readFile}) {
if (e) if (e)
return sendDefaultMenu(res); return sendDefaultMenu(res);
debugger;
const [parseError, result] = await transpile(source); const [parseError, result] = await transpile(source);
if (parseError) if (parseError)
@ -112,4 +108,3 @@ async function transpile(source) {
], ],
}); });
} }

View file

@ -1,21 +1,18 @@
'use strict'; import {dirname, join} from 'node:path';
import {fileURLToPath} from 'node:url';
import {test, stub} from 'supertape';
import serveOnce from 'serve-once';
import threadIt from 'thread-it';
import userMenu from './user-menu.mjs';
import {readFileSync} from 'node:fs';
const fs = require('node:fs'); const __filename = fileURLToPath(import.meta.url);
const {join} = require('node:path'); const __dirname = dirname(__filename);
const {test, stub} = require('supertape');
const serveOnce = require('serve-once');
const threadIt = require('thread-it');
const userMenu = require('./user-menu');
const {request} = serveOnce(userMenu); const {request} = serveOnce(userMenu);
const {readFileSync} = fs;
const userMenuPath = join(__dirname, '..', '.cloudcmd.menu.js'); const userMenuPath = join(__dirname, '..', '.cloudcmd.menu.js');
const userMenuFile = readFileSync(userMenuPath, 'utf8'); const userMenuFile = readFileSync(userMenuPath, 'utf8');
const fixtureDir = join(__dirname, 'fixture-user-menu'); const fixtureDir = new URL('fixture-user-menu', import.meta.url).pathname;
const fixtureMoveName = join(fixtureDir, 'io-mv.js'); const fixtureMoveName = join(fixtureDir, 'io-mv.js');
const fixtureMoveFixName = join(fixtureDir, 'io-mv-fix.js'); const fixtureMoveFixName = join(fixtureDir, 'io-mv-fix.js');
const fixtureCopyName = join(fixtureDir, 'io-cp.js'); const fixtureCopyName = join(fixtureDir, 'io-cp.js');
@ -47,6 +44,7 @@ test('cloudcmd: user menu: io.mv', async (t) => {
}; };
const {request} = serveOnce(userMenu); const {request} = serveOnce(userMenu);
const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`, { const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`, {
options, options,
}); });
@ -63,6 +61,7 @@ test('cloudcmd: user menu: io.cp', async (t) => {
}; };
const {request} = serveOnce(userMenu); const {request} = serveOnce(userMenu);
const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`, { const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`, {
options, options,
}); });

View file

@ -1,10 +1,7 @@
'use strict'; import {test, stub} from 'supertape';
import tryCatch from 'try-catch';
const {test, stub} = require('supertape'); import validate from './validate.js';
const tryCatch = require('try-catch'); import cloudcmd from './cloudcmd.mjs';
const validate = require('./validate');
const cloudcmd = require('./cloudcmd');
test('validate: root: bad', (t) => { test('validate: root: bad', (t) => {
const config = { const config = {

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 io 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('node:process'); const __filename = fileURLToPath(import.meta.url);
const http = require('node:http'); const __dirname = dirname(__filename);
const os = require('node:os');
const express = require('express');
const io = require('socket.io');
const writejson = require('writejson');
const readjson = require('readjson');
const {promisify} = require('node:util');
process.env.NODE_ENV = 'development'; process.env.NODE_ENV = 'development';
const cloudcmd = require('../server/cloudcmd');
const {assign} = Object; const {assign} = Object;
const pathConfig = os.homedir() + '/.cloudcmd.json'; const pathConfig = os.homedir() + '/.cloudcmd.json';
const currentConfig = readjson.sync.try(pathConfig); const currentConfig = readjson.sync.try(pathConfig);
module.exports = before; export default before;
function before(options, fn = options) { function before(options, fn = options) {
const { const {
@ -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) => { before(options, (port, done) => {
fn(null, { fn(null, {
port, 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 configManager = cloudcmd.createConfigManager();
const {request} = serveOnce(cloudcmd, {
const {request} = require('serve-once')(cloudcmd, {
config: { config: {
auth: false, auth: false,
}, },

View file

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

View file

@ -1,28 +1,10 @@
'use strict'; import wait from '@iocmd/wait';
import {EventEmitter} from 'node:events';
const wait = require('@iocmd/wait'); import {test, stub} from 'supertape';
const {EventEmitter} = require('node:events'); import serveOnce from 'serve-once';
const fs = require('node:fs'); import cloudcmd from '../../server/cloudcmd.mjs';
const {test, stub} = require('supertape');
const {Volume} = require('memfs');
const {ufs} = require('unionfs');
const serveOnce = require('serve-once');
const cloudcmd = require('../../server/cloudcmd.js');
test('cloudcmd: rest: move', async (t) => { 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);
const move = new EventEmitter(); const move = new EventEmitter();
const moveFiles = stub().returns(move); const moveFiles = stub().returns(move);
@ -103,4 +85,3 @@ test('cloudcmd: rest: move: no to', async (t) => {
t.equal(body, expected); t.equal(body, expected);
t.end(); t.end();
}); });

View file

@ -1,18 +1,16 @@
'use strict'; 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 cloudcmd from '../../server/cloudcmd.mjs';
import serveOnce from 'serve-once';
import {fileURLToPath} from 'node:url';
const mockRequire = require('mock-require'); const __filename = fileURLToPath(import.meta.url);
const fs = require('node:fs'); const __dirname = dirname(__filename);
const {join} = require('node:path');
const {promisify} = require('node:util');
const test = require('supertape');
const tar = require('tar-stream');
const gunzip = require('gunzip-maybe');
const pullout = require('pullout');
const cloudcmd = require('../../server/cloudcmd.js');
const serveOnce = require('serve-once');
const {reRequire} = mockRequire;
const pathZipFixture = join(__dirname, '..', 'fixture/pack.zip'); const pathZipFixture = join(__dirname, '..', 'fixture/pack.zip');
const pathTarFixture = join(__dirname, '..', 'fixture/pack.tar.gz'); const pathTarFixture = join(__dirname, '..', 'fixture/pack.tar.gz');
@ -20,7 +18,7 @@ const pathTarFixture = join(__dirname, '..', 'fixture/pack.tar.gz');
const defaultOptions = { const defaultOptions = {
config: { config: {
auth: false, auth: false,
root: join(__dirname, '..'), root: new URL('..', import.meta.url).pathname,
}, },
}; };
@ -38,7 +36,6 @@ const once = promisify((name, extract, fn) => {
}); });
test('cloudcmd: rest: pack: tar: get', async (t) => { test('cloudcmd: rest: pack: tar: get', async (t) => {
debugger;
const config = { const config = {
packer: 'tar', packer: 'tar',
auth: false, auth: false,
@ -67,7 +64,9 @@ test('cloudcmd: rest: pack: tar: get', async (t) => {
t.equal(file, data, 'should pack data'); t.equal(file, data, 'should pack data');
t.end(); t.end();
}, {timeout: 7000}); }, {
timeout: 7000,
});
test('cloudcmd: rest: pack: tar: put: file', async (t) => { test('cloudcmd: rest: pack: tar: put: file', async (t) => {
const config = { const config = {
@ -233,4 +232,3 @@ function getPackOptions(to, names = ['pack']) {
from: '/fixture', from: '/fixture',
}; };
} }

View file

@ -1,17 +1,9 @@
'use strict'; import fs from 'node:fs';
import test from 'supertape';
const fs = require('node:fs'); import {Volume} from 'memfs';
import {ufs} from 'unionfs';
const test = require('supertape'); import serveOnce from 'serve-once';
const {Volume} = require('memfs'); import cloudcmd from '../../server/cloudcmd.mjs';
const {ufs} = require('unionfs');
const serveOnce = require('serve-once');
const cloudcmd = require('../../server/cloudcmd.js');
const cloudcmdPath = '../../';
const dir = `${cloudcmdPath}server/`;
const restPath = `${dir}rest`;
test('cloudcmd: rest: rename', async (t) => { test('cloudcmd: rest: rename', async (t) => {
const volume = { const volume = {
@ -100,4 +92,3 @@ test('cloudcmd: rest: rename: no to', async (t) => {
t.equal(body, expected); t.equal(body, expected);
t.end(); t.end();
}); });

View file

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

View file

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

View file

@ -1,17 +1,14 @@
'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 = { const config = {
auth: false, auth: false,
}; };
const {request} = serveOnce(cloudcmd, {
const {request} = require('serve-once')(cloudcmd, {
config, config,
}); });
const configFn = cloudcmd.createConfigManager(); const configFn = cloudcmd.createConfigManager();
test('cloudcmd: static', async (t) => { test('cloudcmd: static', async (t) => {