Skip to content

cloudcmd/node-fileop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d0d8ab6 · Nov 14, 2024
May 6, 2024
Aug 9, 2023
May 6, 2024
May 6, 2024
Jan 15, 2021
Oct 18, 2020
Oct 9, 2022
Oct 9, 2022
Aug 9, 2023
May 6, 2024
May 6, 2024
Jan 15, 2021
May 6, 2024
Mar 29, 2018
Nov 14, 2024
May 6, 2024
May 6, 2024

Repository files navigation

Fileop License NPM version Build Status

File operations emitter middleware.

Install

npm i @cloudcmd/fileop

Client

Could be loaded from url /fileop/fileop.js.

fileop([options, ]): Promise

Initialize operator.

  • options:
    • prefix - prefix of fileop (/fileop by default)
    • socketPrefix - prefix of socket.io (`/fileop' by default)

Returns operator in callback.

operator

It is EventEmitter from the inide produce next types of events:

  • error
  • progress
  • file
  • end

Supports next types of operations:

  • operator.copy(from, to, names)
  • operator.move(from, to, names)
  • opreator.remove(from, names)
  • opreator.extract(from, to)
  • operator.zip(from, to)
  • operator.tar(from, to)
const prefix = '/fileop';
const operator = await fileop({
    prefix,
});

const from = '/';
const to = '/tmp';

const names = ['bin'];

const progress = (value) => {
    console.log('progress:', value);
};

const end = (op) => () => {
    console.log('end');
    op.removelistener('progress', progress);
    op.removelistener('end', end);
};

const error = (op) => (data) => {
    const msg = `${data}\n continue?`;
    const is = confirm(msg);
    
    if (is)
        return op.continue();
    
    op.abort();
};

const op = await operator.copy(from, to, names);

op.on('progress', progress);
op.on('end', end(op));
op.on('error', error(op));

Server

const fileop = require('fileop');
const http = require('node:http');
const express = require('express');
const io = require('socket.io');
const app = express();
const port = 1337;
const server = http.createServer(app);
const socket = io.listen(server);

server.listen(port);

app.use(fileop({
    prefix: '/fileop', /* default */
}));

fileop.listen(socket, {
    // default
    prefix: '/fileop', // string or a function
    root: '/',
    auth: (accept, reject) => (username, password) => {
        if (username === 'root' && password === 'toor')
            accept();
        
        reject();
    },
});

Related

  • Spero - file copy emitter middleware based on socket.io and copymitter
  • Remedy - emitting middleware for file removing
  • Ishtar - pack and extract .tar.gz archives middleware
  • Omnes - extract zip, gz, tar, tar.gz, tgz archives middleware
  • Salam - pack and extract zip archives middleware

License

MIT