mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 02:35:49 +00:00
feature: convert to ESM
This commit is contained in:
parent
363e14d3be
commit
c13111ae5e
26 changed files with 243 additions and 295 deletions
|
|
@ -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']),
|
||||||
|
|
|
||||||
|
|
@ -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: "," -> ";"
|
||||||
|
|
|
||||||
2
HELP.md
2
HELP.md
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
});
|
||||||
|
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -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) => {
|
||||||
|
|
@ -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 = {
|
||||||
|
|
@ -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')),
|
||||||
|
|
@ -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,
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
@ -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) {
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -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,
|
||||||
});
|
});
|
||||||
|
|
@ -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 = {
|
||||||
|
|
@ -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,
|
||||||
|
|
@ -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,
|
||||||
},
|
},
|
||||||
|
|
@ -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) => {
|
||||||
|
|
@ -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,
|
||||||
},
|
},
|
||||||
|
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -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',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
@ -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,
|
||||||
|
|
@ -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) => {
|
||||||
Loading…
Add table
Add a link
Reference in a new issue