cloudcmd 17.3.0 → 17.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ChangeLog CHANGED
@@ -1,3 +1,13 @@
1
+ 2024.03.29, v17.3.2
2
+
3
+ fix:
4
+ - f7a6a366 typo: Wraped -> Wrapped
5
+
6
+ 2024.03.29, v17.3.1
7
+
8
+ feature:
9
+ - d7581829 distribute: convert to ESM
10
+
1
11
  2024.03.29, v17.3.0
2
12
 
3
13
  feature:
package/HELP.md CHANGED
@@ -1,4 +1,4 @@
1
- # Cloud Commander v17.3.0
1
+ # Cloud Commander v17.3.2
2
2
 
3
3
  ### [Main][MainURL] [Blog][BlogURL] [Support][SupportURL] [Demo][DemoURL]
4
4
 
@@ -93,7 +93,8 @@ Cloud Commander supports the following command-line parameters:
93
93
  | `--terminal-command` | set command to run in terminal (shell by default)
94
94
  | `--terminal-auto-restart` | restart command on exit
95
95
  | `--vim` | enable vim hot keys
96
- | `--themes` | set visible themes
96
+ | `--columns` | set visible columns
97
+ | `--theme` | set theme 'light' or 'dark'"
97
98
  | `--export` | enable export of config through a server
98
99
  | `--export-token` | authorization token used by export server
99
100
  | `--import` | enable import of config
@@ -429,6 +430,7 @@ Some config options can be overridden with environment variables, such as:
429
430
  - `CLOUDCMD_OPEN` - open web browser when server started
430
431
  - `CLOUDCMD_EDITOR` - set editor
431
432
  - `CLOUDCMD_COLUMNS` - set visible themes
433
+ - `CLOUDCMD_THEME` - set themes "light" or "dark"
432
434
  - `CLOUDCMD_CONTACT` - enable contact
433
435
  - `CLOUDCMD_CONFIG_DIALOG` - enable config dialog
434
436
  - `CLOUDCMD_CONFIG_AUTH` - enable auth change in config dialog
@@ -1093,6 +1095,8 @@ There are a lot of ways to be involved in `Cloud Commander` development:
1093
1095
 
1094
1096
  ## Version history
1095
1097
 
1098
+ - *2024.03.29*, **[v17.3.2](//github.com/coderaiser/cloudcmd/releases/tag/v17.3.2)**
1099
+ - *2024.03.29*, **[v17.3.1](//github.com/coderaiser/cloudcmd/releases/tag/v17.3.1)**
1096
1100
  - *2024.03.29*, **[v17.3.0](//github.com/coderaiser/cloudcmd/releases/tag/v17.3.0)**
1097
1101
  - *2024.03.29*, **[v17.2.1](//github.com/coderaiser/cloudcmd/releases/tag/v17.2.1)**
1098
1102
  - *2024.03.22*, **[v17.2.0](//github.com/coderaiser/cloudcmd/releases/tag/v17.2.0)**
@@ -1546,7 +1550,7 @@ There are a lot of ways to be involved in `Cloud Commander` development:
1546
1550
 
1547
1551
  ## Special Thanks
1548
1552
 
1549
- - [Olena Zalitok](http://www.linkedin.com/in/olena-zalitok-ux-designer "Olena Zalitok") for **logo** and **favicon**.
1553
+ - [Olena Zalitok](https://www.linkedin.com/in/ozalitok-ux-ui/ "Olena Zalitok") for **logo** and **favicon**.
1550
1554
  - [TarZak](https://github.com/tarzak "TarZak")
1551
1555
  - Russian and Ukrainian translations;
1552
1556
  - config template and style;
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Cloud Commander v17.3.0 [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Codacy][CodacyIMG]][CodacyURL] [![Gitter][GitterIMGURL]][GitterURL]
1
+ # Cloud Commander v17.3.2 [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Codacy][CodacyIMG]][CodacyURL] [![Gitter][GitterIMGURL]][GitterURL]
2
2
 
3
3
  ### [Main][MainURL] [Blog][BlogURL] [Support][SupportURL] [Demo][DemoURL]
4
4
 
package/bin/cloudcmd.mjs CHANGED
@@ -241,8 +241,8 @@ async function main() {
241
241
  if (args.showConfig)
242
242
  await showConfig();
243
243
 
244
- const distribute = await simport('../server/distribute/index.js');
245
- const importConfig = promisify(distribute.import);
244
+ const {distributeImport} = await simport('../server/distribute/import.mjs');
245
+ const importConfig = promisify(distributeImport);
246
246
 
247
247
  await start(options, config);
248
248
 
package/dist/sw.js CHANGED
@@ -7,5 +7,5 @@ var serviceWorkerOption = {
7
7
  ]
8
8
  };
9
9
 
10
- !function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=0)}([function(t,e,n){"use strict";const r=n(1),o=n(2),i=n(3),u="development"===r.env.NODE_ENV,c=i((t,e)=>e.waitUntil(t())),s=i((t,e)=>{const{request:n}=e,{url:r}=n,o=a(r);r.endsWith("/")||/\^\/fs/.test(o)||"GET"===n.method&&(t=>"basic"===t.type)(n)&&(o.startsWith("/api")||/^socket.io/.test(o)||e.respondWith(t(e)))}),a=t=>new URL(t).pathname,f="cloudcmd: Fri Mar 29 2024 13:28:34 GMT+0200 (Eastern European Standard Time)",l=(t,e)=>"/"!==t?e:(t=>new Request(t,{credentials:"same-origin"}))("/");self.addEventListener("install",c((async function(){console.info("cloudcmd: sw: install: "+f),await self.skipWaiting()}))),self.addEventListener("fetch",s((async function(t){const{request:e}=t,{url:n}=e,r=a(n),i=l(r,t.request),c=await caches.open(f),s=await c.match(e);if(!u&&s)return s;const[d,h]=await o(fetch,i,{credentials:"same-origin"});return d?new Response(d.message):(await async function(t,e){return(await caches.open(f)).put(t,e)}(e,h.clone()),h)}))),self.addEventListener("activate",c((async function(){console.info("cloudcmd: sw: activate: "+f),await self.clients.claim();const t=await caches.keys(),e=caches.delete.bind(caches);await Promise.all(t.map(e))})))},function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function c(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:u}catch(t){r=u}}();var s,a=[],f=!1,l=-1;function d(){f&&s&&(f=!1,s.length?a=s.concat(a):l=-1,a.length&&h())}function h(){if(!f){var t=c(d);f=!0;for(var e=a.length;e;){for(s=a,a=[];++l<e;)s&&s[l].run();l=-1,e=a.length}s=null,f=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===u||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function m(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];a.push(new p(t,e)),1!==a.length||f||c(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,n){"use strict";t.exports=async(t,...e)=>{!function(t){if("function"!=typeof t)throw Error("fn should be a function!")}(t);try{return[null,await t(...e)]}catch(t){return[t]}}},function(t,e,n){"use strict";const r=(t,...e)=>{if(function(t){if("function"!=typeof t)throw Error("fn should be function!")}(t),e.length>=t.length)return t(...e);const n=(...n)=>r(t,...e,...n),o=t.length-e.length-1;return(t=>[function(e){return t(...arguments)},function(e,n){return t(...arguments)},function(e,n,r){return t(...arguments)},function(e,n,r,o){return t(...arguments)},function(e,n,r,o,i){return t(...arguments)}])(n)[o]||n};t.exports=r}]);
10
+ !function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=0)}([function(t,e,n){"use strict";const r=n(1),o=n(2),i=n(3),u="development"===r.env.NODE_ENV,c=i((t,e)=>e.waitUntil(t())),s=i((t,e)=>{const{request:n}=e,{url:r}=n,o=a(r);r.endsWith("/")||/\^\/fs/.test(o)||"GET"===n.method&&(t=>"basic"===t.type)(n)&&(o.startsWith("/api")||/^socket.io/.test(o)||e.respondWith(t(e)))}),a=t=>new URL(t).pathname,f="cloudcmd: Fri Mar 29 2024 16:01:37 GMT+0200 (Eastern European Standard Time)",l=(t,e)=>"/"!==t?e:(t=>new Request(t,{credentials:"same-origin"}))("/");self.addEventListener("install",c((async function(){console.info("cloudcmd: sw: install: "+f),await self.skipWaiting()}))),self.addEventListener("fetch",s((async function(t){const{request:e}=t,{url:n}=e,r=a(n),i=l(r,t.request),c=await caches.open(f),s=await c.match(e);if(!u&&s)return s;const[d,h]=await o(fetch,i,{credentials:"same-origin"});return d?new Response(d.message):(await async function(t,e){return(await caches.open(f)).put(t,e)}(e,h.clone()),h)}))),self.addEventListener("activate",c((async function(){console.info("cloudcmd: sw: activate: "+f),await self.clients.claim();const t=await caches.keys(),e=caches.delete.bind(caches);await Promise.all(t.map(e))})))},function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function c(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:u}catch(t){r=u}}();var s,a=[],f=!1,l=-1;function d(){f&&s&&(f=!1,s.length?a=s.concat(a):l=-1,a.length&&h())}function h(){if(!f){var t=c(d);f=!0;for(var e=a.length;e;){for(s=a,a=[];++l<e;)s&&s[l].run();l=-1,e=a.length}s=null,f=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===u||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function m(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];a.push(new p(t,e)),1!==a.length||f||c(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,n){"use strict";t.exports=async(t,...e)=>{!function(t){if("function"!=typeof t)throw Error("fn should be a function!")}(t);try{return[null,await t(...e)]}catch(t){return[t]}}},function(t,e,n){"use strict";const r=(t,...e)=>{if(function(t){if("function"!=typeof t)throw Error("fn should be function!")}(t),e.length>=t.length)return t(...e);const n=(...n)=>r(t,...e,...n),o=t.length-e.length-1;return(t=>[function(e){return t(...arguments)},function(e,n){return t(...arguments)},function(e,n,r){return t(...arguments)},function(e,n,r,o){return t(...arguments)},function(e,n,r,o,i){return t(...arguments)}])(n)[o]||n};t.exports=r}]);
11
11
  //# sourceMappingURL=sw.js.map
package/dist-dev/sw.js CHANGED
@@ -103,7 +103,7 @@ var serviceWorkerOption = {
103
103
  /***/ (function(module, exports, __webpack_require__) {
104
104
 
105
105
  "use strict";
106
- eval("\n\nconst process = __webpack_require__(/*! node:process */ \"./node_modules/process/browser.js\");\nconst tryToCatch = __webpack_require__(/*! try-to-catch */ \"./node_modules/try-to-catch/lib/try-to-catch.js\");\nconst currify = __webpack_require__(/*! currify */ \"./node_modules/currify/lib/currify.js\");\nconst isDev = process.env.NODE_ENV === 'development';\nconst isGet = a => a.method === 'GET';\nconst isBasic = a => a.type === 'basic';\nconst wait = currify((f, e) => e.waitUntil(f()));\nconst respondWith = currify((f, e) => {\n const {\n request\n } = e;\n const {\n url\n } = request;\n const pathname = getPathName(url);\n if (url.endsWith('/') || /\\^\\/fs/.test(pathname)) return;\n if (!isGet(request)) return;\n if (!isBasic(request)) return;\n if (pathname.startsWith('/api')) return;\n if (/^socket.io/.test(pathname)) return;\n e.respondWith(f(e));\n});\nconst getPathName = url => new URL(url).pathname;\nconst date = \"Fri Mar 29 2024 13:28:49 GMT+0200 (Eastern European Standard Time)\";\nconst NAME = `cloudcmd: ${date}`;\nconst createRequest = a => new Request(a, {\n credentials: 'same-origin'\n});\nconst getRequest = (a, request) => {\n if (a !== '/') return request;\n return createRequest('/');\n};\nself.addEventListener('install', wait(onInstall));\nself.addEventListener('fetch', respondWith(onFetch));\nself.addEventListener('activate', wait(onActivate));\nasync function onActivate() {\n console.info(`cloudcmd: sw: activate: ${NAME}`);\n await self.clients.claim();\n const keys = await caches.keys();\n const deleteCache = caches.delete.bind(caches);\n await Promise.all(keys.map(deleteCache));\n}\nasync function onInstall() {\n console.info(`cloudcmd: sw: install: ${NAME}`);\n await self.skipWaiting();\n}\nasync function onFetch(event) {\n const {\n request\n } = event;\n const {\n url\n } = request;\n const pathname = getPathName(url);\n const newRequest = getRequest(pathname, event.request);\n const cache = await caches.open(NAME);\n const response = await cache.match(request);\n if (!isDev && response) return response;\n const [e, resp] = await tryToCatch(fetch, newRequest, {\n credentials: 'same-origin'\n });\n if (e) return new Response(e.message);\n await addToCache(request, resp.clone());\n return resp;\n}\nasync function addToCache(request, response) {\n const cache = await caches.open(NAME);\n return cache.put(request, response);\n}\n\n//# sourceURL=file://cloudcmd/client/sw/sw.js");
106
+ eval("\n\nconst process = __webpack_require__(/*! node:process */ \"./node_modules/process/browser.js\");\nconst tryToCatch = __webpack_require__(/*! try-to-catch */ \"./node_modules/try-to-catch/lib/try-to-catch.js\");\nconst currify = __webpack_require__(/*! currify */ \"./node_modules/currify/lib/currify.js\");\nconst isDev = process.env.NODE_ENV === 'development';\nconst isGet = a => a.method === 'GET';\nconst isBasic = a => a.type === 'basic';\nconst wait = currify((f, e) => e.waitUntil(f()));\nconst respondWith = currify((f, e) => {\n const {\n request\n } = e;\n const {\n url\n } = request;\n const pathname = getPathName(url);\n if (url.endsWith('/') || /\\^\\/fs/.test(pathname)) return;\n if (!isGet(request)) return;\n if (!isBasic(request)) return;\n if (pathname.startsWith('/api')) return;\n if (/^socket.io/.test(pathname)) return;\n e.respondWith(f(e));\n});\nconst getPathName = url => new URL(url).pathname;\nconst date = \"Fri Mar 29 2024 16:01:43 GMT+0200 (Eastern European Standard Time)\";\nconst NAME = `cloudcmd: ${date}`;\nconst createRequest = a => new Request(a, {\n credentials: 'same-origin'\n});\nconst getRequest = (a, request) => {\n if (a !== '/') return request;\n return createRequest('/');\n};\nself.addEventListener('install', wait(onInstall));\nself.addEventListener('fetch', respondWith(onFetch));\nself.addEventListener('activate', wait(onActivate));\nasync function onActivate() {\n console.info(`cloudcmd: sw: activate: ${NAME}`);\n await self.clients.claim();\n const keys = await caches.keys();\n const deleteCache = caches.delete.bind(caches);\n await Promise.all(keys.map(deleteCache));\n}\nasync function onInstall() {\n console.info(`cloudcmd: sw: install: ${NAME}`);\n await self.skipWaiting();\n}\nasync function onFetch(event) {\n const {\n request\n } = event;\n const {\n url\n } = request;\n const pathname = getPathName(url);\n const newRequest = getRequest(pathname, event.request);\n const cache = await caches.open(NAME);\n const response = await cache.match(request);\n if (!isDev && response) return response;\n const [e, resp] = await tryToCatch(fetch, newRequest, {\n credentials: 'same-origin'\n });\n if (e) return new Response(e.message);\n await addToCache(request, resp.clone());\n return resp;\n}\nasync function addToCache(request, response) {\n const cache = await caches.open(NAME);\n return cache.put(request, response);\n}\n\n//# sourceURL=file://cloudcmd/client/sw/sw.js");
107
107
 
108
108
  /***/ }),
109
109
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloudcmd",
3
- "version": "17.3.0",
3
+ "version": "17.3.2",
4
4
  "type": "commonjs",
5
5
  "author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
6
6
  "description": "File manager for the web with console and editor",
@@ -24,7 +24,7 @@ import route from './route.mjs';
24
24
  import * as validate from './validate.mjs';
25
25
  import prefixer from './prefixer.js';
26
26
  import terminal from './terminal.js';
27
- import distribute from './distribute/index.js';
27
+ import {distributeExport} from './distribute/export.mjs';
28
28
  import {createDepStore} from './depstore.js';
29
29
 
30
30
  const __filename = fileURLToPath(import.meta.url);
@@ -175,7 +175,7 @@ function listen({prefixSocket, socket, config}) {
175
175
  autoRestart: config('terminalAutoRestart'),
176
176
  });
177
177
 
178
- distribute.export(config, socket);
178
+ distributeExport(config, socket);
179
179
  }
180
180
 
181
181
  function cloudcmdMiddle({modules, config}) {
package/server/config.js CHANGED
@@ -35,7 +35,7 @@ const ConfigPath = path.join(DIR, 'json/config.json');
35
35
  const ConfigHome = path.join(HOME, '.cloudcmd.json');
36
36
 
37
37
  const connection = currify(_connection);
38
- const connectionWraped = wraptile(_connection);
38
+ const connectionWrapped = wraptile(_connection);
39
39
  const middle = currify(_middle);
40
40
 
41
41
  const readjsonSync = (name) => {
@@ -155,7 +155,7 @@ function listen(manage, sock, auth) {
155
155
  return connection(manage, socket);
156
156
 
157
157
  const reject = () => socket.emit('reject');
158
- socket.on('auth', auth(connectionWraped(manage, socket), reject));
158
+ socket.on('auth', auth(connectionWrapped(manage, socket), reject));
159
159
  });
160
160
  }
161
161
 
@@ -1,13 +1,8 @@
1
- 'use strict';
2
-
3
- const currify = require('currify');
4
- const wraptile = require('wraptile');
5
- const squad = require('squad');
6
- const omit = require('object.omit');
7
-
8
- const log = require('./log');
9
-
10
- const {
1
+ import currify from 'currify';
2
+ import wraptile from 'wraptile';
3
+ import squad from 'squad';
4
+ import omit from 'object.omit';
5
+ import log, {
11
6
  exportStr,
12
7
  connectedStr,
13
8
  disconnectedStr,
@@ -15,8 +10,8 @@ const {
15
10
  makeColor,
16
11
  getMessage,
17
12
  getDescription,
18
- logWraped,
19
- } = log;
13
+ logWrapped,
14
+ } from './log.mjs';
20
15
 
21
16
  const omitList = [
22
17
  'auth',
@@ -38,7 +33,7 @@ const omitList = [
38
33
 
39
34
  const omitConfig = (config) => omit(config, omitList);
40
35
 
41
- module.exports = (config, socket) => {
36
+ export const distributeExport = (config, socket) => {
42
37
  if (!config('export'))
43
38
  return;
44
39
 
@@ -46,9 +41,9 @@ module.exports = (config, socket) => {
46
41
  const distributePrefix = `${prefix}/distribute`;
47
42
  const isLog = config('log');
48
43
 
49
- const onError = squad(logWraped(isLog, exportStr), getMessage);
44
+ const onError = squad(logWrapped(isLog, exportStr), getMessage);
50
45
 
51
- const onConnectError = squad(logWraped(isLog, exportStr), getDescription);
46
+ const onConnectError = squad(logWrapped(isLog, exportStr), getDescription);
52
47
 
53
48
  socket
54
49
  .of(distributePrefix)
@@ -1,16 +1,14 @@
1
- 'use strict';
1
+ import currify from 'currify';
2
+ import wraptile from 'wraptile';
3
+ import squad from 'squad';
4
+ import fullstore from 'fullstore';
5
+ import io from 'socket.io-client';
6
+ import log from './log.mjs';
7
+ import env from '../env.js';
8
+ import _forEachKey from 'for-each-key';
2
9
 
3
- const currify = require('currify');
4
- const wraptile = require('wraptile');
5
- const squad = require('squad');
6
- const fullstore = require('fullstore');
7
-
8
- const io = require('socket.io-client');
9
- const log = require('./log');
10
-
11
- const env = require('../env');
12
10
  const noop = () => {};
13
- const forEachKey = currify(require('for-each-key'));
11
+ const forEachKey = currify(_forEachKey);
14
12
 
15
13
  const {
16
14
  importStr,
@@ -20,7 +18,7 @@ const {
20
18
  authTryStr,
21
19
  getMessage,
22
20
  getDescription,
23
- logWraped,
21
+ logWrapped,
24
22
  } = log;
25
23
 
26
24
  const {entries} = Object;
@@ -67,7 +65,7 @@ const updateConfig = currify((config, data) => {
67
65
  }
68
66
  });
69
67
 
70
- module.exports = (config, options, fn) => {
68
+ export const distributeImport = (config, options, fn) => {
71
69
  fn = fn || options;
72
70
 
73
71
  if (!config('import'))
@@ -96,23 +94,23 @@ module.exports = (config, options, fn) => {
96
94
  const close = closeIfNot(socket, importListen);
97
95
 
98
96
  const statusStore = fullstore();
99
- const statusStoreWraped = wraptile(statusStore);
97
+ const statusStoreWrapped = wraptile(statusStore);
100
98
 
101
- const onConfig = squad(close, logWraped(isLog, importStr, `config received from ${colorUrl}`), statusStoreWraped('received'), updateConfig(config));
99
+ const onConfig = squad(close, logWrapped(isLog, importStr, `config received from ${colorUrl}`), statusStoreWrapped('received'), updateConfig(config));
102
100
 
103
- const onError = squad(superFn('error'), logWraped(isLog, config, importStr), addUrl(colorUrl), getMessage);
101
+ const onError = squad(superFn('error'), logWrapped(isLog, config, importStr), addUrl(colorUrl), getMessage);
104
102
 
105
- const onConnectError = squad(superFn('connect_error'), logWraped(isLog, importStr), addUrl(colorUrl), getDescription);
103
+ const onConnectError = squad(superFn('connect_error'), logWrapped(isLog, importStr), addUrl(colorUrl), getDescription);
106
104
 
107
105
  const onConnect = emitAuth(importUrl, config, socket);
108
- const onAccept = logWraped(isLog, importStr, `${connectedStr} to ${colorUrl}`);
106
+ const onAccept = logWrapped(isLog, importStr, `${connectedStr} to ${colorUrl}`);
109
107
 
110
108
  const onDisconnect = squad(
111
109
  done(
112
110
  fn,
113
111
  statusStore,
114
112
  ),
115
- logWraped(
113
+ logWrapped(
116
114
  isLog,
117
115
  importStr,
118
116
  `${disconnectedStr} from ${colorUrl}`,
@@ -127,9 +125,9 @@ module.exports = (config, options, fn) => {
127
125
  ),
128
126
  );
129
127
 
130
- const onChange = squad(logWraped(isLog, importStr), config);
128
+ const onChange = squad(logWrapped(isLog, importStr), config);
131
129
 
132
- const onReject = squad(superFn('reject'), logWraped(
130
+ const onReject = squad(superFn('reject'), logWrapped(
133
131
  isLog,
134
132
  importStr,
135
133
  tokenRejectedStr,
@@ -1,15 +1,13 @@
1
- import {createRequire} from 'node:module';
2
1
  import process from 'node:process';
3
2
  import test from 'supertape';
4
3
  import {promisify} from 'node:util';
5
4
  import tryToCatch from 'try-to-catch';
6
5
  import {connect} from '../../test/before.mjs';
7
6
  import {createConfigManager} from '../cloudcmd.mjs';
8
-
9
- const require = createRequire(import.meta.url);
7
+ import {distributeImport} from './import.mjs';
10
8
 
11
9
  const distribute = {
12
- import: promisify(require('./import')),
10
+ import: promisify(distributeImport),
13
11
  };
14
12
 
15
13
  const config = createConfigManager();
@@ -0,0 +1,52 @@
1
+ import wraptile from 'wraptile';
2
+ import chalk from 'chalk';
3
+ import datetime from '../../common/datetime.js';
4
+
5
+ const {assign} = Object;
6
+
7
+ const log = (isLog, name, msg) => isLog && console.log(`${datetime()} -> ${name}: ${msg}`);
8
+
9
+ export const makeColor = (a) => chalk.blue(a);
10
+ export const getMessage = (e) => e.message || e;
11
+ export const getDescription = (e) => e.message;
12
+
13
+ export default log;
14
+
15
+ export const logWrapped = wraptile(log);
16
+
17
+ export const importStr = 'import';
18
+ export const exportStr = 'export';
19
+ export const connectedStr = chalk.green('connected');
20
+ export const disconnectedStr = chalk.red('disconnected');
21
+ export const tokenRejectedStr = chalk.red('token rejected');
22
+ export const authTryStr = chalk.yellow('try to auth');
23
+
24
+ export function stringToRGB(a) {
25
+ return [
26
+ a.charCodeAt(0),
27
+ a.length,
28
+ crc(a),
29
+ ];
30
+ }
31
+
32
+ const add = (a, b) => a + b.charCodeAt(0);
33
+
34
+ function crc(a) {
35
+ return a
36
+ .split('')
37
+ .reduce(add, 0);
38
+ }
39
+
40
+ assign(log, {
41
+ getMessage,
42
+ makeColor,
43
+ getDescription,
44
+ authTryStr,
45
+ stringToRGB,
46
+ logWrapped,
47
+ importStr,
48
+ exportStr,
49
+ connectedStr,
50
+ disconnectedStr,
51
+ tokenRejectedStr,
52
+ });
@@ -0,0 +1,34 @@
1
+ import test from 'supertape';
2
+ import log from './log.mjs';
3
+ import {createConfig} from '../config.js';
4
+
5
+ test('distribute: log: getMessage', (t) => {
6
+ const e = 'hello';
7
+ const result = log.getMessage(e);
8
+
9
+ t.equal(e, result);
10
+ t.end();
11
+ });
12
+
13
+ test('distribute: log: getMessage: message', (t) => {
14
+ const message = 'hello';
15
+ const result = log.getMessage({
16
+ message,
17
+ });
18
+
19
+ t.equal(result, message);
20
+ t.end();
21
+ });
22
+
23
+ test('distribute: log: config', (t) => {
24
+ const config = createConfig();
25
+ const logOriginal = config('log');
26
+
27
+ config('log', true);
28
+ log('log', 'test message');
29
+ config('log', logOriginal);
30
+
31
+ t.end();
32
+ }, {
33
+ checkAssertionsCount: false,
34
+ });
@@ -1,4 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports.import = require('./import');
4
- module.exports.export = require('./export');
@@ -1,41 +0,0 @@
1
- 'use strict';
2
-
3
- const wraptile = require('wraptile');
4
- const chalk = require('chalk');
5
-
6
- const datetime = require('../../common/datetime');
7
-
8
- const log = (isLog, name, msg) => isLog && console.log(`${datetime()} -> ${name}: ${msg}`);
9
- const makeColor = (a) => chalk.blue(a);
10
- const getMessage = (e) => e.message || e;
11
- const getDescription = (e) => e.message;
12
-
13
- module.exports = log;
14
- module.exports.logWraped = wraptile(log);
15
- module.exports.stringToRGB = stringToRGB;
16
- module.exports.makeColor = makeColor;
17
- module.exports.getMessage = getMessage;
18
- module.exports.getDescription = getDescription;
19
-
20
- module.exports.importStr = 'import';
21
- module.exports.exportStr = 'export';
22
- module.exports.connectedStr = chalk.green('connected');
23
- module.exports.disconnectedStr = chalk.red('disconnected');
24
- module.exports.tokenRejectedStr = chalk.red('token rejected');
25
- module.exports.authTryStr = chalk.yellow('try to auth');
26
-
27
- function stringToRGB(a) {
28
- return [
29
- a.charCodeAt(0),
30
- a.length,
31
- crc(a),
32
- ];
33
- }
34
-
35
- const add = (a, b) => a + b.charCodeAt(0);
36
-
37
- function crc(a) {
38
- return a
39
- .split('')
40
- .reduce(add, 0);
41
- }