cloudcmd 19.15.0 → 19.17.0

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/dist/sw.js CHANGED
@@ -311,7 +311,7 @@ const respondWith = currify((f, e) => {
311
311
  e.respondWith(f(e));
312
312
  });
313
313
  const getPathName = url => new URL(url).pathname;
314
- const date = "Tue Apr 28 2026 23:44:16 GMT+0300 (Eastern European Summer Time)";
314
+ const date = "Sun May 17 2026 01:48:20 GMT+0300 (Eastern European Summer Time)";
315
315
  const NAME = `cloudcmd: ${date}`;
316
316
  const createRequest = a => new Request(a, {
317
317
  credentials: 'same-origin'
@@ -331,7 +331,8 @@ a:active {
331
331
 
332
332
  .owner {
333
333
  display: inline-block;
334
- width: 13%;
334
+ width: 12%;
335
+
335
336
  /* when inline-block
336
337
  * vertical align should be
337
338
  * set top to prevent additional
@@ -343,7 +344,7 @@ a:active {
343
344
 
344
345
  .mode {
345
346
  float: right;
346
- width: 18%;
347
+ width: 22%;
347
348
  color: var(--column-color);
348
349
  }
349
350
 
@@ -696,8 +697,9 @@ a:active {
696
697
  .size,
697
698
  .date,
698
699
  .owner,
700
+ .time,
699
701
  .mode {
700
- display: none;
702
+ display: none !important;
701
703
  }
702
704
 
703
705
  .name {
@@ -1459,7 +1459,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
1459
1459
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1460
1460
 
1461
1461
  "use strict";
1462
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ selectFile: () => (/* binding */ selectFile)\n/* harmony export */ });\n/* harmony import */ var _vim_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vim.js */ \"./client/key/vim/vim.js\");\n/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./find.js */ \"./client/key/vim/find.js\");\n/* harmony import */ var _set_current_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./set-current.js */ \"./client/key/vim/set-current.js\");\n/* global CloudCmd */\n/* global DOM */\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((key, event, overrides = {}) => {\n const defaults = {\n ...globalThis.DOM,\n ...globalThis.CloudCmd\n };\n const deps = {\n ...defaults,\n ...overrides\n };\n const operations = getOperations(event, deps);\n (0,_vim_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key, operations, deps);\n});\n(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, \"name\") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, \"name\", { value: \"default\", configurable: true });\nconst getOperations = (event, deps) => {\n var _event$preventDefault, _event$preventDefault2;\n const {\n Info = globalThis.DOM.CurrentInfo,\n CloudCmd = globalThis.CloudCmd,\n Operation,\n unselectFiles,\n setCurrentFile,\n setCurrentByName,\n getCurrentName,\n prompt = globalThis.DOM.Dialog.prompt,\n preventDefault = event === null || event === void 0 || (_event$preventDefault = event.preventDefault) === null || _event$preventDefault === void 0 ? void 0 : _event$preventDefault.bind(event),\n stopImmediatePropagation = event === null || event === void 0 || (_event$preventDefault2 = event.preventDefault) === null || _event$preventDefault2 === void 0 ? void 0 : _event$preventDefault2.bind(event),\n promptNewFile = DOM.promptNewFile,\n toggleSelectedFile,\n Buffer = {},\n createFindNext = _createFindNext,\n createFindPrevious = _createFindPrevious,\n createMakeFile = _createMakeFile\n } = deps;\n return {\n makeFile: createMakeFile({\n promptNewFile,\n preventDefault,\n stopImmediatePropagation\n }),\n findNext: createFindNext({\n setCurrentByName\n }),\n findPrevious: createFindPrevious({\n setCurrentByName\n }),\n escape: unselectFiles,\n remove: () => {\n Operation.show('delete');\n },\n operationCopy: () => {\n event.preventDefault();\n Operation.show('copy');\n },\n operationMove: () => {\n event.preventDefault();\n Operation.show('move');\n },\n makeDirectory: () => {\n event.stopImmediatePropagation();\n event.preventDefault();\n DOM.promptNewDir();\n },\n terminal: () => {\n CloudCmd.Terminal.show();\n },\n edit: () => {\n CloudCmd.EditFileVim.show();\n },\n copy: () => {\n Buffer.copy();\n unselectFiles();\n },\n select: () => {\n const current = Info.element;\n toggleSelectedFile(current);\n },\n paste: Buffer.paste,\n moveNext: ({\n count,\n isVisual,\n isDelete\n }) => {\n (0,_set_current_js__WEBPACK_IMPORTED_MODULE_2__.setCurrent)('next', {\n count,\n isVisual,\n isDelete\n }, {\n Info,\n setCurrentFile,\n unselectFiles,\n Operation\n });\n },\n movePrevious: ({\n count,\n isVisual,\n isDelete\n }) => {\n (0,_set_current_js__WEBPACK_IMPORTED_MODULE_2__.setCurrent)('previous', {\n count,\n isVisual,\n isDelete\n }, {\n Info,\n setCurrentFile,\n unselectFiles,\n Operation\n });\n },\n find: async () => {\n preventDefault();\n const [, value] = await prompt('Find', '');\n if (!value) return;\n const names = Info.files.map(getCurrentName);\n const [result] = _find_js__WEBPACK_IMPORTED_MODULE_1__.find(value, names);\n setCurrentByName(result);\n }\n };\n};\nconst selectFile = _set_current_js__WEBPACK_IMPORTED_MODULE_2__.selectFileNotParent;\nconst _createFindPrevious = (overrides = {}) => () => {\n const {\n setCurrentByName\n } = overrides;\n const name = _find_js__WEBPACK_IMPORTED_MODULE_1__.findPrevious();\n setCurrentByName(name);\n};\nconst _createFindNext = (overrides = {}) => () => {\n const {\n setCurrentByName\n } = overrides;\n const name = _find_js__WEBPACK_IMPORTED_MODULE_1__.findNext();\n setCurrentByName(name);\n};\nconst _createMakeFile = (overrides = {}) => () => {\n const {\n promptNewFile,\n stopImmediatePropagation,\n preventDefault\n } = overrides;\n stopImmediatePropagation();\n preventDefault();\n promptNewFile();\n};\n\n//# sourceURL=file://cloudcmd//Users/coderaiser/cloudcmd/client/key/vim/index.js\n}");
1462
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ selectFile: () => (/* binding */ selectFile)\n/* harmony export */ });\n/* harmony import */ var _vim_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vim.js */ \"./client/key/vim/vim.js\");\n/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./find.js */ \"./client/key/vim/find.js\");\n/* harmony import */ var _set_current_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./set-current.js */ \"./client/key/vim/set-current.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((key, event, overrides = {}) => {\n const defaults = {\n ...globalThis.DOM,\n ...globalThis.CloudCmd\n };\n const deps = {\n ...defaults,\n ...overrides\n };\n const operations = getOperations(event, deps);\n (0,_vim_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key, operations, deps);\n});\n(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, \"name\") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, \"name\", { value: \"default\", configurable: true });\nconst getOperations = (event, deps) => {\n var _event$preventDefault, _event$preventDefault2;\n const {\n Info = globalThis.DOM.CurrentInfo,\n CloudCmd = globalThis.CloudCmd,\n Operation,\n unselectFiles,\n setCurrentFile,\n setCurrentByName,\n getCurrentName,\n prompt = globalThis.DOM.Dialog.prompt,\n preventDefault = event === null || event === void 0 || (_event$preventDefault = event.preventDefault) === null || _event$preventDefault === void 0 ? void 0 : _event$preventDefault.bind(event),\n stopImmediatePropagation = event === null || event === void 0 || (_event$preventDefault2 = event.preventDefault) === null || _event$preventDefault2 === void 0 ? void 0 : _event$preventDefault2.bind(event),\n promptNewFile = globalThis.DOM.promptNewFile,\n toggleSelectedFile,\n Buffer = {},\n createFindNext = _createFindNext,\n createFindPrevious = _createFindPrevious,\n createMakeFile = _createMakeFile,\n renameCurrent\n } = deps;\n return {\n makeFile: createMakeFile({\n promptNewFile,\n preventDefault,\n stopImmediatePropagation\n }),\n findNext: createFindNext({\n setCurrentByName\n }),\n findPrevious: createFindPrevious({\n setCurrentByName\n }),\n escape: unselectFiles,\n rename: () => {\n event.preventDefault();\n renameCurrent();\n },\n remove: () => {\n Operation.show('delete');\n },\n operationCopy: () => {\n event.preventDefault();\n Operation.show('copy');\n },\n operationMove: () => {\n event.preventDefault();\n Operation.show('move');\n },\n makeDirectory: () => {\n event.stopImmediatePropagation();\n event.preventDefault();\n globalThis.DOM.promptNewDir();\n },\n terminal: () => {\n CloudCmd.Terminal.show();\n },\n edit: () => {\n CloudCmd.EditFileVim.show();\n },\n copy: () => {\n Buffer.copy();\n unselectFiles();\n },\n select: () => {\n const current = Info.element;\n toggleSelectedFile(current);\n },\n paste: Buffer.paste,\n moveNext: ({\n count,\n isVisual,\n isDelete\n }) => {\n (0,_set_current_js__WEBPACK_IMPORTED_MODULE_2__.setCurrent)('next', {\n count,\n isVisual,\n isDelete\n }, {\n Info,\n setCurrentFile,\n unselectFiles,\n Operation\n });\n },\n movePrevious: ({\n count,\n isVisual,\n isDelete\n }) => {\n (0,_set_current_js__WEBPACK_IMPORTED_MODULE_2__.setCurrent)('previous', {\n count,\n isVisual,\n isDelete\n }, {\n Info,\n setCurrentFile,\n unselectFiles,\n Operation\n });\n },\n find: async () => {\n preventDefault();\n const [, value] = await prompt('Find', '');\n if (!value) return;\n const names = Info.files.map(getCurrentName);\n const [result] = _find_js__WEBPACK_IMPORTED_MODULE_1__.find(value, names);\n setCurrentByName(result);\n }\n };\n};\nconst selectFile = _set_current_js__WEBPACK_IMPORTED_MODULE_2__.selectFileNotParent;\nconst _createFindPrevious = (overrides = {}) => () => {\n const {\n setCurrentByName\n } = overrides;\n const name = _find_js__WEBPACK_IMPORTED_MODULE_1__.findPrevious();\n setCurrentByName(name);\n};\nconst _createFindNext = (overrides = {}) => () => {\n const {\n setCurrentByName\n } = overrides;\n const name = _find_js__WEBPACK_IMPORTED_MODULE_1__.findNext();\n setCurrentByName(name);\n};\nconst _createMakeFile = (overrides = {}) => () => {\n const {\n promptNewFile,\n stopImmediatePropagation,\n preventDefault\n } = overrides;\n stopImmediatePropagation();\n preventDefault();\n promptNewFile();\n};\n\n//# sourceURL=file://cloudcmd//Users/coderaiser/cloudcmd/client/key/vim/index.js\n}");
1463
1463
 
1464
1464
  /***/ },
1465
1465
 
@@ -1481,7 +1481,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
1481
1481
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1482
1482
 
1483
1483
  "use strict";
1484
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var fullstore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fullstore */ \"./node_modules/fullstore/lib/fullstore.js\");\n\nconst store = (0,fullstore__WEBPACK_IMPORTED_MODULE_0__.fullstore)('');\nconst visual = (0,fullstore__WEBPACK_IMPORTED_MODULE_0__.fullstore)(false);\nconst stopVisual = () => {\n visual(false);\n};\nconst end = () => {\n store('');\n};\nconst rmFirst = a => {\n return a.split('').slice(1).join('');\n};\nconst noop = () => {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((key, operations = {}) => {\n const prevStore = store();\n const isVisual = visual();\n const value = store(prevStore.concat(key));\n const {\n escape = noop,\n moveNext = noop,\n movePrevious = noop,\n remove = noop,\n copy = noop,\n paste = noop,\n select = noop,\n find = noop,\n findNext = noop,\n findPrevious = noop,\n makeFile = noop,\n makeDirectory = noop,\n terminal = noop,\n edit = noop,\n operationCopy = noop,\n operationMove = noop\n } = operations;\n if (key === 'Enter') return end();\n if (key === 'Escape') {\n visual(false);\n escape();\n return end();\n }\n if (key === 'j' || key === 'w') {\n const {\n count,\n isDelete,\n isVisual\n } = handleDelete(prevStore);\n !isNaN(count) && moveNext({\n count,\n isVisual,\n isDelete\n });\n return end();\n }\n if (key === 'k' || key === 'b') {\n const {\n count,\n isDelete,\n isVisual\n } = handleDelete(prevStore);\n !isNaN(count) && movePrevious({\n count,\n isVisual,\n isDelete\n });\n return end();\n }\n if (value === 'gg' || key === '^') {\n const {\n isDelete,\n isVisual\n } = handleDelete(prevStore);\n movePrevious({\n count: Infinity,\n isVisual,\n isDelete\n });\n return end();\n }\n if (value === 'md') {\n makeDirectory();\n return end();\n }\n if (value === 'tt') {\n terminal();\n return end();\n }\n if (value === 'e') {\n edit();\n return end();\n }\n if (value === 'cc') {\n operationCopy();\n return end();\n }\n if (value === 'mm') {\n operationMove();\n return end();\n }\n if (value === 'mf') {\n makeFile();\n return end();\n }\n if (key === 'd' && (visual() || prevStore === 'd')) {\n stopVisual();\n remove();\n return end();\n }\n if (key === 'G' || key === '$') {\n moveNext({\n count: Infinity,\n isVisual\n });\n return end();\n }\n if (key === 'y') {\n if (!visual()) return end();\n stopVisual();\n copy();\n return end();\n }\n if (/^p$/i.test(key)) {\n paste();\n return end();\n }\n if (/^v$/i.test(key)) {\n visual(!visual());\n select();\n return end();\n }\n if (key === '/') {\n find();\n return end();\n }\n if (key === 'n') {\n findNext();\n return end();\n }\n if (key === 'N') {\n findPrevious();\n return end();\n }\n if (key === ' ') return end();\n});\n(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, \"name\") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, \"name\", { value: \"default\", configurable: true });\nfunction handleDelete(prevStore) {\n const isDelete = prevStore[0] === 'd';\n if (isDelete) {\n visual(true);\n prevStore = rmFirst(prevStore);\n }\n const count = getNumber(prevStore);\n const isVisual = visual();\n return {\n count,\n isDelete,\n isVisual\n };\n}\nfunction getNumber(value) {\n if (!value) return 1;\n if (value === 'g') return 1;\n return parseInt(value);\n}\n\n//# sourceURL=file://cloudcmd//Users/coderaiser/cloudcmd/client/key/vim/vim.js\n}");
1484
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var fullstore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fullstore */ \"./node_modules/fullstore/lib/fullstore.js\");\n\nconst store = (0,fullstore__WEBPACK_IMPORTED_MODULE_0__.fullstore)('');\nconst visual = (0,fullstore__WEBPACK_IMPORTED_MODULE_0__.fullstore)(false);\nconst stopVisual = () => {\n visual(false);\n};\nconst end = () => {\n store('');\n};\nconst rmFirst = a => {\n return a.split('').slice(1).join('');\n};\nconst noop = () => {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((key, operations = {}) => {\n const prevStore = store();\n const isVisual = visual();\n const value = store(prevStore.concat(key));\n const {\n escape = noop,\n moveNext = noop,\n movePrevious = noop,\n remove = noop,\n copy = noop,\n paste = noop,\n select = noop,\n find = noop,\n findNext = noop,\n findPrevious = noop,\n makeFile = noop,\n makeDirectory = noop,\n terminal = noop,\n edit = noop,\n operationCopy = noop,\n operationMove = noop,\n rename = noop\n } = operations;\n if (key === 'Enter') return end();\n if (key === 'Escape') {\n visual(false);\n escape();\n return end();\n }\n if (key === 'j' || key === 'w') {\n const {\n count,\n isDelete,\n isVisual\n } = handleDelete(prevStore);\n !isNaN(count) && moveNext({\n count,\n isVisual,\n isDelete\n });\n return end();\n }\n if (key === 'k' || key === 'b') {\n const {\n count,\n isDelete,\n isVisual\n } = handleDelete(prevStore);\n !isNaN(count) && movePrevious({\n count,\n isVisual,\n isDelete\n });\n return end();\n }\n if (value === 'gg' || key === '^') {\n const {\n isDelete,\n isVisual\n } = handleDelete(prevStore);\n movePrevious({\n count: Infinity,\n isVisual,\n isDelete\n });\n return end();\n }\n if (value === 'md') {\n makeDirectory();\n return end();\n }\n if (value === 'tt') {\n terminal();\n return end();\n }\n if (value === 'e') {\n edit();\n return end();\n }\n if (value === 'cc') {\n operationCopy();\n return end();\n }\n if (value === 'mm') {\n operationMove();\n return end();\n }\n if (value === 'mf') {\n makeFile();\n return end();\n }\n if (value === 'rr') {\n rename();\n return end();\n }\n if (key === 'd' && (visual() || prevStore === 'd')) {\n stopVisual();\n remove();\n return end();\n }\n if (key === 'G' || key === '$') {\n moveNext({\n count: Infinity,\n isVisual\n });\n return end();\n }\n if (key === 'y') {\n if (!visual()) return end();\n stopVisual();\n copy();\n return end();\n }\n if (/^p$/i.test(key)) {\n paste();\n return end();\n }\n if (/^v$/i.test(key)) {\n visual(!visual());\n select();\n return end();\n }\n if (key === '/') {\n find();\n return end();\n }\n if (key === 'n') {\n findNext();\n return end();\n }\n if (key === 'N') {\n findPrevious();\n return end();\n }\n if (key === ' ') return end();\n});\n(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, \"name\") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, \"name\", { value: \"default\", configurable: true });\nfunction handleDelete(prevStore) {\n const isDelete = prevStore[0] === 'd';\n if (isDelete) {\n visual(true);\n prevStore = rmFirst(prevStore);\n }\n const count = getNumber(prevStore);\n const isVisual = visual();\n return {\n count,\n isDelete,\n isVisual\n };\n}\nfunction getNumber(value) {\n if (!value) return 1;\n if (value === 'g') return 1;\n return parseInt(value);\n}\n\n//# sourceURL=file://cloudcmd//Users/coderaiser/cloudcmd/client/key/vim/vim.js\n}");
1485
1485
 
1486
1486
  /***/ },
1487
1487
 
package/dist-dev/sw.js CHANGED
@@ -37,7 +37,7 @@ eval("{// shim for using process in browser\nvar process = module.exports = {};\
37
37
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
38
38
 
39
39
  "use strict";
40
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:process */ \"./node_modules/process/browser.js\");\n/* harmony import */ var try_to_catch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! try-to-catch */ \"./node_modules/try-to-catch/lib/try-to-catch.js\");\n/* harmony import */ var currify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! currify */ \"./node_modules/currify/lib/currify.js\");\n\n\n\nconst isDev = \"development\" === 'development';\nconst isGet = a => a.method === 'GET';\nconst isBasic = a => a.type === 'basic';\nconst wait = currify__WEBPACK_IMPORTED_MODULE_2__((f, e) => e.waitUntil(f()));\nconst respondWith = currify__WEBPACK_IMPORTED_MODULE_2__((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 = \"Tue Apr 28 2026 23:44:18 GMT+0300 (Eastern European Summer 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};\nglobalThis.addEventListener('install', wait(onInstall));\nglobalThis.addEventListener('fetch', respondWith(onFetch));\nglobalThis.addEventListener('activate', wait(onActivate));\nasync function onActivate() {\n console.info(`cloudcmd: sw: activate: ${NAME}`);\n await globalThis.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 globalThis.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 (0,try_to_catch__WEBPACK_IMPORTED_MODULE_1__.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//Users/coderaiser/cloudcmd/client/sw/sw.js\n}");
40
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:process */ \"./node_modules/process/browser.js\");\n/* harmony import */ var try_to_catch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! try-to-catch */ \"./node_modules/try-to-catch/lib/try-to-catch.js\");\n/* harmony import */ var currify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! currify */ \"./node_modules/currify/lib/currify.js\");\n\n\n\nconst isDev = \"development\" === 'development';\nconst isGet = a => a.method === 'GET';\nconst isBasic = a => a.type === 'basic';\nconst wait = currify__WEBPACK_IMPORTED_MODULE_2__((f, e) => e.waitUntil(f()));\nconst respondWith = currify__WEBPACK_IMPORTED_MODULE_2__((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 = \"Sun May 17 2026 01:48:22 GMT+0300 (Eastern European Summer 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};\nglobalThis.addEventListener('install', wait(onInstall));\nglobalThis.addEventListener('fetch', respondWith(onFetch));\nglobalThis.addEventListener('activate', wait(onActivate));\nasync function onActivate() {\n console.info(`cloudcmd: sw: activate: ${NAME}`);\n await globalThis.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 globalThis.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 (0,try_to_catch__WEBPACK_IMPORTED_MODULE_1__.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//Users/coderaiser/cloudcmd/client/sw/sw.js\n}");
41
41
 
42
42
  /***/ },
43
43
 
package/man/cloudcmd.1 CHANGED
@@ -33,7 +33,7 @@ programs in browser from any computer, mobile or tablet device.
33
33
  --show-config show config values
34
34
  --show-dot-files show dot files
35
35
  --show-file-name show file name in view and edit modes
36
- --editor set editor: "dword", "edward" or "deepword"
36
+ --editor set editor: "dword", "edward", "deepword" or "qword"
37
37
  --menu set menu: "supermenu" or "aleman"
38
38
  --packer set packer: "tar" or "zip"
39
39
  --root set root directory
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloudcmd",
3
- "version": "19.15.0",
3
+ "version": "19.17.0",
4
4
  "type": "module",
5
5
  "author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
6
6
  "description": "File manager for the web with console and editor",
@@ -130,6 +130,7 @@
130
130
  "ponse": "^8.0.0",
131
131
  "pullout": "^5.0.0",
132
132
  "putout": "^42.0.5",
133
+ "qword": "^1.0.0",
133
134
  "redzip": "^4.6.1",
134
135
  "rendy": "^5.0.0",
135
136
  "restafary": "^13.0.1",
@@ -159,22 +160,21 @@
159
160
  "@cloudcmd/stub": "^5.0.0",
160
161
  "@iocmd/wait": "^2.1.0",
161
162
  "@putout/eslint-flat": "^4.0.0",
163
+ "@supertape/loader-css": "^1.0.0",
162
164
  "@types/node-fetch": "^2.6.11",
163
165
  "auto-globals": "^4.0.0",
164
166
  "babel-loader": "^10.0.0",
165
167
  "babel-plugin-macros": "^3.0.0",
166
- "c8": "^11.0.0",
167
168
  "cheerio": "^1.0.0-rc.5",
168
169
  "clean-css-loader": "^4.2.1",
169
170
  "codegen.macro": "^4.0.0",
170
171
  "css-loader": "^7.1.2",
171
172
  "css-minimizer-webpack-plugin": "^8.0.0",
172
173
  "css-modules-require-hook": "^4.2.3",
173
- "cssnano-preset-default": "^7.0.10",
174
+ "cssnano-preset-default": "^8.0.1",
174
175
  "domtokenlist-shim": "^1.2.0",
175
176
  "emitify": "^4.0.1",
176
177
  "eslint": "^10.0.0",
177
- "eslint-plugin-n": "^17.0.0-4",
178
178
  "eslint-plugin-putout": "^31.0.0",
179
179
  "globals": "^17.0.0",
180
180
  "gritty": "^10.2.0",
@@ -207,8 +207,9 @@
207
207
  "serve-once": "^3.0.1",
208
208
  "smalltalk": "^5.0.0",
209
209
  "style-loader": "^4.0.0",
210
+ "superc8": "^12.6.0",
210
211
  "supermenu": "^5.0.0",
211
- "supertape": "^12.0.0",
212
+ "supertape": "^13.0.0",
212
213
  "tar-stream": "^3.0.0",
213
214
  "unionfs": "^4.0.0",
214
215
  "url-loader": "^4.0.0",
@@ -12,6 +12,7 @@ import {konsole} from 'console-io';
12
12
  import {edward} from 'edward';
13
13
  import {dword} from 'dword';
14
14
  import {deepword} from 'deepword';
15
+ import {qword} from 'qword';
15
16
  import nomine from 'nomine';
16
17
  import {fileop} from '@cloudcmd/fileop';
17
18
  import * as cloudfunc from '#common/cloudfunc';
@@ -152,6 +153,12 @@ function listen({prefixSocket, socket, config}) {
152
153
  prefixSocket: `${prefixSocket}/dword`,
153
154
  });
154
155
 
156
+ qword.listen(socket, {
157
+ root,
158
+ auth,
159
+ prefixSocket: `${prefixSocket}/qword`,
160
+ });
161
+
155
162
  deepword.listen(socket, {
156
163
  root,
157
164
  auth,
@@ -215,6 +222,14 @@ function cloudcmdMiddle({modules, config}) {
215
222
  dropbox,
216
223
  dropboxToken,
217
224
  }),
225
+ qword({
226
+ root,
227
+ online,
228
+ diff,
229
+ zip,
230
+ dropbox,
231
+ dropboxToken,
232
+ }),
218
233
  deepword({
219
234
  root,
220
235
  online,
@@ -28,10 +28,10 @@ export const root = (dir, config, overrides = {}) => {
28
28
  };
29
29
 
30
30
  export const editor = (name, {exit = _exit} = {}) => {
31
- const reg = /^(dword|edward|deepword)$/;
31
+ const reg = /^(dword|edward|deepword|qword)$/;
32
32
 
33
33
  if (!reg.test(name))
34
- exit('cloudcmd --editor: could be "dword", "edward" or "deepword" only');
34
+ exit(`cloudcmd --editor: could be "dword", "edward", "deepword" or "qword" only, recieved: "${name}"`);
35
35
  };
36
36
 
37
37
  export const menu = (name, {exit = _exit} = {}) => {
package/tmpl/config.hbs CHANGED
@@ -57,11 +57,12 @@
57
57
  <option {{ name-size-selected }}>name-size</option>
58
58
  </select>
59
59
  </li>
60
- <li title="Editor: Edward(Ace-based), Dword(Codemirror-based), Deepword(Monaco-based)">
60
+ <li title="Editor: Edward(Ace-based), Dword(Codemirror-based), Deepword(Monaco-based), Qword(Codemirror6-based)">
61
61
  <select data-name="js-editor" class="form-control full-width" title="Editor">
62
62
  <option {{ edward-selected }}>edward</option>
63
63
  <option {{ dword-selected }}>dword</option>
64
64
  <option {{ deepword-selected }}>deepword</option>
65
+ <option {{ qword-selected }}>qword</option>
65
66
  </select>
66
67
  </li>
67
68
  <li title="Navigate and edit files using hotkeys of legendary editor">