Date: Thu, 21 Nov 2024 10:29:15 +0100
Subject: [PATCH 067/143] Added table formatting for Pad docs exported as .md
---
www/pad/export.js | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index 6e9de71c1..0370e1b71 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -96,7 +96,29 @@ define([
if (ext === ".md") {
var md = Turndown({
headingStyle: 'atx'
- }).turndown(toExport);
+ }).addRule('table', {
+ filter: ['tr'],
+ replacement: function (content, node) {
+ var indexOf = Array.prototype.indexOf;
+ var index = indexOf.call(node.parentNode.childNodes, node);
+ var rowContent = node.innerHTML.replace(/|<\/td>/g, '').split(' ')
+ rowContent[0] = `|${rowContent[0]}`
+ var row = ''
+ var rowLength = rowContent.filter(Boolean).length
+ for (var i =0; i < rowLength; i++) {
+ var cell = rowContent[i]
+ cell += ' |'
+ row += cell
+ }
+ var newRow = row.concat('\n')
+ if (index === 0) {
+ var separator = '|-'
+ newRow += `${separator.repeat(rowLength)}\n`
+ }
+ return newRow
+ }})
+ .turndown(toExport);
+ console.log(md)
var mdBlob = new Blob([md], {
type: 'text/markdown;charset=utf-8'
});
From 4e83540d49b9bca03da1a9f55e657b1bce4abab4 Mon Sep 17 00:00:00 2001
From: yflory
Date: Fri, 22 Nov 2024 11:25:51 +0100
Subject: [PATCH 068/143] Fix closed tickets remaining in the Inbox tab
---
www/common/outer/support.js | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/www/common/outer/support.js b/www/common/outer/support.js
index 1e18c6442..912fa5d23 100644
--- a/www/common/outer/support.js
+++ b/www/common/outer/support.js
@@ -531,6 +531,11 @@ define([
if (last.sender) {
entry.lastAdmin = !last.sender.blockLocation;
}
+ if (last.close) {
+ doc.tickets.closed[data.channel] = entry;
+ delete doc.tickets.active[data.channel];
+ notifyClient(ctx, true, 'UPDATE_TICKET', data.channel);
+ }
/*
let senderKey = last.sender && last.sender.edPublic;
if (senderKey) {
@@ -589,7 +594,9 @@ define([
doc.tickets.closed[data.channel] = entry;
delete doc.tickets.active[data.channel];
delete doc.tickets.pending[data.channel];
- cb({closed: true});
+ Realtime.whenRealtimeSyncs(ctx.adminDoc.realtime, function () {
+ cb({closed: true});
+ });
});
});
};
From 9cc2569078a21ba2b5bb85638515b6d1bd405ebe Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 22 Nov 2024 13:14:26 +0100
Subject: [PATCH 069/143] Added strikethrough formatting support and linting
---
www/pad/export.js | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index 0370e1b71..1225bc918 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -101,24 +101,27 @@ define([
replacement: function (content, node) {
var indexOf = Array.prototype.indexOf;
var index = indexOf.call(node.parentNode.childNodes, node);
- var rowContent = node.innerHTML.replace(/|<\/td>/g, '').split(' ')
- rowContent[0] = `|${rowContent[0]}`
- var row = ''
- var rowLength = rowContent.filter(Boolean).length
+ var rowContent = node.innerHTML.replace(/ | |<\/td>/g, '').split(' ');
+ rowContent[0] = `|${rowContent[0]}`;
+ var row = '';
+ var rowLength = rowContent.filter(Boolean).length;
for (var i =0; i < rowLength; i++) {
- var cell = rowContent[i]
- cell += ' |'
- row += cell
+ var cell = rowContent[i] + ' |';
+ row += cell;
}
- var newRow = row.concat('\n')
+ var newRow = row.concat('\n');
if (index === 0) {
- var separator = '|-'
- newRow += `${separator.repeat(rowLength)}\n`
+ var separator = '|-';
+ newRow += `${separator.repeat(rowLength)}\n`;
}
- return newRow
- }})
+ return newRow;
+ }}).addRule('strikethrough', {
+ filter: ['s', 'del', 'strike'],
+ replacement: function (content) {
+ return '~' + content + '~';
+ }
+ })
.turndown(toExport);
- console.log(md)
var mdBlob = new Blob([md], {
type: 'text/markdown;charset=utf-8'
});
From 6533d7f0daa08da70344fdf8ae136ef3e71b3446 Mon Sep 17 00:00:00 2001
From: Fabrice Mouhartem
Date: Tue, 26 Nov 2024 17:47:54 +0100
Subject: [PATCH 070/143] =?UTF-8?q?Add=20title=20for=20=E2=80=9Cquick=20sc?=
=?UTF-8?q?heduling=20poll=E2=80=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Fix #1718
---
www/form/templates.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/www/form/templates.js b/www/form/templates.js
index 0bc17d352..631246983 100644
--- a/www/form/templates.js
+++ b/www/form/templates.js
@@ -44,7 +44,10 @@ define([
}
}
},
- order: ["1", "2"]
+ order: ["1", "2"],
+ metadata: {
+ title: Messages.form_template_poll
+ }
}
}];
});
From a854b622ed201ac887978fc7036846978fa0ba2a Mon Sep 17 00:00:00 2001
From: Fabrice Mouhartem
Date: Thu, 28 Nov 2024 10:50:38 +0100
Subject: [PATCH 071/143] Fix missing submit message when cloning forms (#1716)
---
www/common/cryptpad-common.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js
index e2d6a3746..b365693c1 100644
--- a/www/common/cryptpad-common.js
+++ b/www/common/cryptpad-common.js
@@ -928,13 +928,15 @@ define([
delete meta.cursor;
if (meta.type === "form") {
- // Keep anonymous and makeAnonymous values from templates
+ // Keep anonymous, makeAnonymous and submit message values from templates
var anonymous = parsed.answers.anonymous || false;
var makeAnonymous = parsed.answers.makeAnonymous || false;
+ var msg = parsed.answers.msg || undefined;
delete parsed.answers;
parsed.answers = {
anonymous: anonymous,
- makeAnonymous: makeAnonymous
+ makeAnonymous: makeAnonymous,
+ msg: msg
};
}
}
From 6fa80704fa8845b283f02948bbd8250a44c45b9d Mon Sep 17 00:00:00 2001
From: DianaXWiki <139217939+DianaXWiki@users.noreply.github.com>
Date: Thu, 28 Nov 2024 12:56:12 +0200
Subject: [PATCH 072/143] Change padding to relative unit #1688
---
customize.dist/src/less2/include/toolbar.less | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/customize.dist/src/less2/include/toolbar.less b/customize.dist/src/less2/include/toolbar.less
index 2f0d47f45..e61d9fbda 100644
--- a/customize.dist/src/less2/include/toolbar.less
+++ b/customize.dist/src/less2/include/toolbar.less
@@ -763,7 +763,7 @@
}
.cp-notifications-empty {
color: @cp_dropdown-fg;
- padding: 5px;
+ padding: 0.3em;
}
}
}
From 2c1554cf49ad788cca778bb89ff2f5b19449316a Mon Sep 17 00:00:00 2001
From: DianaXWiki <139217939+DianaXWiki@users.noreply.github.com>
Date: Sun, 1 Dec 2024 15:46:26 +0200
Subject: [PATCH 073/143] Fix accessibility focus issue
---
www/calendar/inner.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/www/calendar/inner.js b/www/calendar/inner.js
index 40ffc1e47..4daf2f30f 100644
--- a/www/calendar/inner.js
+++ b/www/calendar/inner.js
@@ -796,8 +796,8 @@ define([
h('i.cp-calendar-inactive.fa.fa-calendar-o')
]),
h('span.cp-calendar-title', md.title),
- data.restricted ? h('i.fa.fa-ban', {title: Messages.fm_restricted}, {'aria-hidden': 'true'}) :
- (isReadOnly(id, teamId) ? h('i.fa.fa-eye', {title: Messages.readonly}) : undefined, {'aria-hidden': 'true'}),
+ data.restricted ? h('i.fa.fa-ban', {title: Messages.fm_restricted, 'aria-hidden': 'true'}) :
+ (isReadOnly(id, teamId) ? h('i.fa.fa-eye', {title: Messages.readonly, 'aria-hidden': 'true'}) : undefined),
edit
]);
var $calendar = $(calendar).click(function () {
@@ -906,7 +906,7 @@ define([
var iconClass = visible ? 'fa-eye-slash' : 'fa-eye';
var buttonText = visible ? Messages.calendar_hide : Messages.calendar_show;
var showCalendarsBtn = h('button', [
- h('i.fa.' + iconClass, {'aria-hidden': 'true'}),
+ h('i.fa.' + iconClass, {'aria-hidden': "true"}),
h('span.cp-calendar-title', buttonText),
h('span')
]);
@@ -916,7 +916,7 @@ define([
$contentContainer.toggle(visible);
iconClass = visible ? 'fa-eye-slash' : 'fa-eye';
buttonText = visible ? Messages.calendar_hide : Messages.calendar_show;
- $(showCalendarsBtn).find('i').attr('class', 'fa ' + iconClass);
+ $(showCalendarsBtn).find('i').attr('class', 'fa ' + iconClass).attr('aria-hidden', "true");
$(showCalendarsBtn).find('span').first().text(visible ? Messages.calendar_hide : Messages.calendar_show);
}).appendTo($showContainer);
}
From b4292dcd851fbedcea3a251a1be1127763a045aa Mon Sep 17 00:00:00 2001
From: daria
Date: Tue, 3 Dec 2024 12:04:43 +0200
Subject: [PATCH 074/143] disable arrow keys while a modal is opened #1660
---
www/common/drive-ui.js | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js
index 28003d446..4b2d2b119 100644
--- a/www/common/drive-ui.js
+++ b/www/common/drive-ui.js
@@ -1045,9 +1045,7 @@ define([
// If the arrow keys aren't caught by another listener before, it means we can
// use them to select content in the drive. If that's the case, we'll also
// focus the drive container to avoid conflicts with other focused elements
- if (!$('.cp-modal').is(':visible')) {
- $content.focus();
- }
+ $content.focus();
var click = function (el) {
if (!el) { return; }
@@ -1062,6 +1060,11 @@ define([
$elements.index($selection.last()[0]);
var length = $elements.length;
if (length === 0) { return; }
+
+ if ($('.cp-modal').is(':visible')) {
+ return;
+ }
+
// List mode
if (getViewMode() === "list") {
if (e.which === 40) { click($elements.get(Math.min(lastIndex+1, length -1))); }
From 9b253eb98aafdab22eba922a06b0efcfa80d7b4f Mon Sep 17 00:00:00 2001
From: daria
Date: Tue, 3 Dec 2024 12:14:49 +0200
Subject: [PATCH 075/143] fix arrow key bug
---
www/common/drive-ui.js | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js
index 4b2d2b119..16576ca58 100644
--- a/www/common/drive-ui.js
+++ b/www/common/drive-ui.js
@@ -990,6 +990,9 @@ define([
// Arrow keys to modify the selection
var onWindowKeydown = function (e) {
if (!$content.is(':visible')) { return; }
+ if ($('.cp-modal').is(':visible')) {
+ return;
+ }
var $searchBar = $tree.find('#cp-app-drive-tree-search-input');
if (document.activeElement && document.activeElement.nodeName === 'INPUT') { return; }
if ($searchBar.is(':focus') && $searchBar.val()) { return; }
@@ -1061,10 +1064,6 @@ define([
var length = $elements.length;
if (length === 0) { return; }
- if ($('.cp-modal').is(':visible')) {
- return;
- }
-
// List mode
if (getViewMode() === "list") {
if (e.which === 40) { click($elements.get(Math.min(lastIndex+1, length -1))); }
From 7d33f13f54582dfb5680d0828470ce9e0e31e780 Mon Sep 17 00:00:00 2001
From: daria
Date: Tue, 3 Dec 2024 13:30:34 +0200
Subject: [PATCH 076/143] create function to simulate click on Enter key
---
www/common/drive-ui.js | 67 +++++++++++++++++++++++-------------------
1 file changed, 36 insertions(+), 31 deletions(-)
diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js
index 135b0eae0..c5bb2f8f6 100644
--- a/www/common/drive-ui.js
+++ b/www/common/drive-ui.js
@@ -2968,6 +2968,16 @@ define([
});
UI.openCustomModal(m);
};
+
+ function triggerEnter(selector, $context) {
+ $context.find(selector).on('keypress', function (event) {
+ if (event.which === 13) { // enter
+ event.preventDefault();
+ $(this).trigger('click'); // the keypress event triggers the click event
+ }
+ });
+ }
+
var addNewPadHandlers = function ($block, isInRoot) {
// Handlers
if (isInRoot) {
@@ -2983,56 +2993,51 @@ define([
refresh();
};
$block.find('a.cp-app-drive-new-folder, li.cp-app-drive-new-folder')
- .on('click keypress', function (event) {
- if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) {
- event.preventDefault();
- manager.addFolder(currentPath, null, onCreated);
- }
+ .on('click', function (event) {
+ event.preventDefault();
+ manager.addFolder(currentPath, null, onCreated);
});
+ triggerEnter('a.cp-app-drive-new-folder, li.cp-app-drive-new-folder', $block);
if (!APP.disableSF && !manager.isInSharedFolder(currentPath)) {
$block.find('a.cp-app-drive-new-shared-folder, li.cp-app-drive-new-shared-folder')
- .on('click keypress', function (event) {
- if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) {
- event.preventDefault();
- addSharedFolderModal(function (obj) {
- if (!obj) { return; }
- manager.addSharedFolder(currentPath, obj, refresh);
- });
- }
+ .on('click', function (event) {
+ event.preventDefault();
+ addSharedFolderModal(function (obj) {
+ if (!obj) { return; }
+ manager.addSharedFolder(currentPath, obj, refresh);
+ });
});
+ triggerEnter('a.cp-app-drive-new-shared-folder, li.cp-app-drive-new-shared-folder', $block);
}
$block.find('a.cp-app-drive-new-fileupload, li.cp-app-drive-new-fileupload')
- .on('click keypress', function (event) {
- if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) {
- event.preventDefault();
- showUploadFilesModal();
- }
+ .on('click', function (event) {
+ event.preventDefault();
+ showUploadFilesModal();
});
+ triggerEnter('a.cp-app-drive-new-fileupload, li.cp-app-drive-new-fileupload', $block);
$block.find('a.cp-app-drive-new-folderupload, li.cp-app-drive-new-folderupload')
- .on('click keypress', function (event) {
- if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) {
- event.preventDefault();
- showUploadFolderModal();
- }
+ .on('click', function (event) {
+ event.preventDefault();
+ showUploadFolderModal();
});
+ triggerEnter('a.cp-app-drive-new-folderupload, li.cp-app-drive-new-folderupload', $block);
$block.find('a.cp-app-drive-new-link, li.cp-app-drive-new-link')
- .on('click keypress', function (event) {
- if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) {
- event.preventDefault();
- showLinkModal();
- }
+ .on('click', function (event) {
+ event.preventDefault();
+ showLinkModal();
});
+ triggerEnter('a.cp-app-drive-new-link, li.cp-app-drive-new-link', $block);
}
$block.find('a.cp-app-drive-new-doc, li.cp-app-drive-new-doc')
- .on('click auxclick keypress', function (event) {
- if (event.type === 'click' || event.type === 'auxclick' || (event.type === 'keypress' && event.which === 13))
- {
+ .on('click auxclick', function (event) {
+ if (event.type === 'click' || event.type === 'auxclick') {
event.preventDefault();
var type = $(this).attr('data-type') || 'pad';
var path = manager.isPathIn(currentPath, [TRASH]) ? '' : currentPath;
openIn(type, path, APP.team);
}
});
+ triggerEnter('a.cp-app-drive-new-doc, li.cp-app-drive-new-doc', $block);
};
var getNewPadOptions = function (isInRoot) {
var options = [];
From fccbe9f922b92b044677bc7d1b47fd50f4ef0e8c Mon Sep 17 00:00:00 2001
From: daria
Date: Wed, 4 Dec 2024 12:26:42 +0200
Subject: [PATCH 077/143] change syntax
---
www/common/drive-ui.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js
index c5bb2f8f6..2fd256886 100644
--- a/www/common/drive-ui.js
+++ b/www/common/drive-ui.js
@@ -2969,14 +2969,14 @@ define([
UI.openCustomModal(m);
};
- function triggerEnter(selector, $context) {
+ var triggerEnter = function (selector, $context) {
$context.find(selector).on('keypress', function (event) {
if (event.which === 13) { // enter
event.preventDefault();
$(this).trigger('click'); // the keypress event triggers the click event
}
});
- }
+ };
var addNewPadHandlers = function ($block, isInRoot) {
// Handlers
From 610414dc18a930a369a78da797cdd759dd3307ac Mon Sep 17 00:00:00 2001
From: daria
Date: Wed, 4 Dec 2024 12:39:05 +0200
Subject: [PATCH 078/143] clean unnecessary changes
---
www/common/common-ui-elements.js | 1 +
www/common/drive-ui.js | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js
index b1a0e6a36..a2c3b709d 100644
--- a/www/common/common-ui-elements.js
+++ b/www/common/common-ui-elements.js
@@ -2514,6 +2514,7 @@ define([
else if (e.which === 13) {
if ($container.find('.cp-icons-element-selected').length === 1) {
$container.find('.cp-icons-element-selected').click();
+ return;
}
}
});
diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js
index 16576ca58..db2811fff 100644
--- a/www/common/drive-ui.js
+++ b/www/common/drive-ui.js
@@ -1063,7 +1063,6 @@ define([
$elements.index($selection.last()[0]);
var length = $elements.length;
if (length === 0) { return; }
-
// List mode
if (getViewMode() === "list") {
if (e.which === 40) { click($elements.get(Math.min(lastIndex+1, length -1))); }
From 59ce5936330c2168adbab6e871142a9e92e71683 Mon Sep 17 00:00:00 2001
From: daria
Date: Wed, 4 Dec 2024 12:47:40 +0200
Subject: [PATCH 079/143] clean unnecessary changes
---
customize.dist/src/less2/include/dropdown.less | 2 --
www/common/toolbar.js | 1 -
2 files changed, 3 deletions(-)
diff --git a/customize.dist/src/less2/include/dropdown.less b/customize.dist/src/less2/include/dropdown.less
index ef9cd374c..00d1d35ed 100644
--- a/customize.dist/src/less2/include/dropdown.less
+++ b/customize.dist/src/less2/include/dropdown.less
@@ -157,7 +157,6 @@
}
}
}
-
li[role="menuitem"] {
border-radius: @variables_radius;
white-space: nowrap;
@@ -180,7 +179,6 @@
background-color: @cp_dropdown-bg-hover;
}
}
-
&> span {
box-sizing: border-box;
height: 26px;
diff --git a/www/common/toolbar.js b/www/common/toolbar.js
index c01fa9f45..d86b2abb7 100644
--- a/www/common/toolbar.js
+++ b/www/common/toolbar.js
@@ -1201,7 +1201,6 @@ MessengerUI, Messages, Pages, PadTypes) {
setTimeout(function () {
$(el).find('.cp-notification-content').click();
}, 0);
-
});
refresh();
},
From 8262a0eb7bfaaf519a7bdcfbff0decabfbdd0a57 Mon Sep 17 00:00:00 2001
From: daria
Date: Wed, 4 Dec 2024 12:59:51 +0200
Subject: [PATCH 080/143] clean unnecessary changes
---
www/common/common-ui-elements.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js
index a2c3b709d..c615f3fba 100644
--- a/www/common/common-ui-elements.js
+++ b/www/common/common-ui-elements.js
@@ -2510,13 +2510,14 @@ define([
} else {
next();
}
+ return;
}
- else if (e.which === 13) {
+ if (e.which === 13) {
if ($container.find('.cp-icons-element-selected').length === 1) {
$container.find('.cp-icons-element-selected').click();
- return;
}
}
+ return;
});
From 6cc1908627a787eaff25c106e9c6fa1c2f4e0a4d Mon Sep 17 00:00:00 2001
From: daria
Date: Wed, 4 Dec 2024 13:01:14 +0200
Subject: [PATCH 081/143] clean unnecessary changes
---
www/common/common-ui-elements.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js
index c615f3fba..f4c21b05c 100644
--- a/www/common/common-ui-elements.js
+++ b/www/common/common-ui-elements.js
@@ -2511,13 +2511,13 @@ define([
next();
}
return;
- }
+ }
if (e.which === 13) {
if ($container.find('.cp-icons-element-selected').length === 1) {
$container.find('.cp-icons-element-selected').click();
}
+ return;
}
- return;
});
From e0ba719c0e597306ff00c8700de46f0b46bfd3f3 Mon Sep 17 00:00:00 2001
From: yflory
Date: Wed, 4 Dec 2024 12:06:20 +0100
Subject: [PATCH 082/143] Update eslintignore and gitignore
---
.eslintignore | 3 +++
.gitignore | 2 ++
2 files changed, 5 insertions(+)
diff --git a/.eslintignore b/.eslintignore
index 8a1297856..bcd65baeb 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -16,6 +16,9 @@ www/accounts
www/worker
www/todo
+*worker.bundle.js
+_build
+
#lib/plugins/
www/common/hyperscript.js
diff --git a/.gitignore b/.gitignore
index bac376dcd..013a3e931 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,8 @@ www/common/onlyoffice/v*
/onlyoffice-conf/
/onlyoffice-dist/
+_build
+
# ---> Node
# Logs
logs
From 758d6a6c9187e1a98c142d7ae180d0cf5e00c452 Mon Sep 17 00:00:00 2001
From: yflory
Date: Wed, 4 Dec 2024 12:06:52 +0100
Subject: [PATCH 083/143] lint compliance
---
www/common/sframe-common-history.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/common/sframe-common-history.js b/www/common/sframe-common-history.js
index 55bf2126c..e711d5265 100644
--- a/www/common/sframe-common-history.js
+++ b/www/common/sframe-common-history.js
@@ -293,7 +293,7 @@ define([
let closeAll = () => {
History.state = false;
- $hist.hide()
+ $hist.hide();
$bottom.show();
$cke.show();
$(window).trigger('resize');
From 3b8bbd4ff6fe1f74e6af7c50cae2c82f980a16e4 Mon Sep 17 00:00:00 2001
From: yflory
Date: Wed, 4 Dec 2024 13:08:28 +0100
Subject: [PATCH 084/143] Fix npm warnings
---
package-lock.json | 770 ++++++++++++++++++++--------------------------
package.json | 6 +-
2 files changed, 343 insertions(+), 433 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5eda45ce6..f5038d672 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -35,7 +35,7 @@
"http-proxy-middleware": "^3.0.3",
"hyper-json": "~1.4.0",
"jquery": "3.6.0",
- "json.sortify": "~2.1.0",
+ "json.sortify": "github:cryptpad/JSON.sortify",
"jsonwebtoken": "^9.0.0",
"jszip": "3.10.1",
"localforage": "^1.5.2",
@@ -64,8 +64,8 @@
"x2js": "^3.4.4"
},
"devDependencies": {
- "eslint": "^8.57.0",
- "eslint-plugin-compat": "^4.2.0",
+ "eslint": "^9.16.0",
+ "eslint-plugin-compat": "^6.0.1",
"stylelint": "^16.9.0",
"stylelint-config-standard-less": "^3.0.1"
},
@@ -303,24 +303,70 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
+ "node_modules/@eslint/config-array": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz",
+ "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.4",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz",
+ "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
+ "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@@ -328,25 +374,19 @@
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/eslintrc/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
"node_modules/@eslint/eslintrc/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dev": true,
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -357,106 +397,76 @@
}
}
},
- "node_modules/@eslint/eslintrc/node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
"node_modules/@eslint/eslintrc/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "node_modules/@eslint/eslintrc/node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@eslint/js": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "version": "9.16.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz",
+ "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==",
"dev": true,
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+ "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz",
+ "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==",
"dev": true,
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
+ "levn": "^0.4.1"
},
"engines": {
- "node": ">=10.10.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
"dev": true,
"dependencies": {
- "ms": "2.1.2"
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
},
"engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "node": ">=18.18.0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
@@ -471,11 +481,18 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
- "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
- "dev": true
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+ "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@mcrowe/minibloom": {
"version": "0.2.0",
@@ -483,9 +500,9 @@
"integrity": "sha512-hce9MTbEkVIutibAkXAQddXCU9gMP/3OfcRaNo2V0v485iEzBRlniJG0ZTKumL8RbUA/fhpIGvrURiEZc+Crrg=="
},
"node_modules/@mdn/browser-compat-data": {
- "version": "5.5.12",
- "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.5.12.tgz",
- "integrity": "sha512-/AHFqy6OeNHS2NNZGFVRgQh+pnW8iAoV3d1fiO9b2PuQ3HzZpC30MrMrHtq1uOGy1/zcK4uPQEyI31jkM0NNAA==",
+ "version": "5.6.21",
+ "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.6.21.tgz",
+ "integrity": "sha512-yFGyNC6llnRbCELh1vH5mhrdSkQCrBs+wOyFjcYa3E9K3qzz6aDKnUSlDfWx+7pMeVr/iSKIdl1P60g2Jxs5sg==",
"dev": true
},
"node_modules/@node-saml/node-saml": {
@@ -590,6 +607,12 @@
"@types/ms": "*"
}
},
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "dev": true
+ },
"node_modules/@types/express": {
"version": "4.17.20",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz",
@@ -625,6 +648,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
"node_modules/@types/mime": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz",
@@ -705,12 +734,6 @@
"@types/node": "*"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
- },
"node_modules/@xmldom/xmldom": {
"version": "0.8.10",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
@@ -1133,6 +1156,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
"node_modules/arr-flatten": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
@@ -1294,9 +1323,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "version": "4.24.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
+ "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
"dev": true,
"funding": [
{
@@ -1313,10 +1342,10 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
+ "caniuse-lite": "^1.0.30001669",
+ "electron-to-chromium": "^1.5.41",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.1"
},
"bin": {
"browserslist": "cli.js"
@@ -1357,9 +1386,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001660",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz",
- "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==",
+ "version": "1.0.30001686",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz",
+ "integrity": "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==",
"dev": true,
"funding": [
{
@@ -1405,6 +1434,14 @@
"json.sortify": "~2.1.0"
}
},
+ "node_modules/chainpad-listmap/node_modules/json.sortify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/json.sortify/-/json.sortify-2.1.0.tgz",
+ "integrity": "sha512-otSldRQcu9PaQJJDeB1qGZUIoL7C4nxZunUVHieWPUMJvvVxIUhsMQUhR+r4OUZBwA1McnbS7sqDf5dYHzJsbw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/chainpad-netflux": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/chainpad-netflux/-/chainpad-netflux-1.2.0.tgz",
@@ -1418,15 +1455,6 @@
"resolved": "https://registry.npmjs.org/chainpad-server/-/chainpad-server-5.2.4.tgz",
"integrity": "sha512-f4eErhcmIE67vfN9Dkfh0hX/IZDWERmfjdcfPEesXIHKu441jA84H0autvTAFsMTSPimlil7eeGnx4GLBVrR5Q=="
},
- "node_modules/chainpad/node_modules/json.sortify": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/json.sortify/-/json.sortify-2.2.2.tgz",
- "integrity": "sha512-wwFLdDffs747s5cqLA3htIKp9wdID2rWNofJKxwDjFo+rqqt5Vg7SnYOh7mc7MW6Iw43rrOFhr6MKytOtNceSA==",
- "engines": {
- "node": ">=4.0.0",
- "npm": "~1.0.20"
- }
- },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -1615,9 +1643,9 @@
"integrity": "sha512-IlChnVUGG5T3w2gRZIaQgBtlvyuYnlUWs2YZIXXR3H9KrlO1PtBT3j+ykxvy9eZIWhk+V5SpBmhCQz5UXKrEKQ=="
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"dependencies": {
"path-key": "^3.1.0",
@@ -1768,18 +1796,6 @@
"defined": "^1.0.0"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/dragula": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/dragula/-/dragula-3.7.2.tgz",
@@ -1807,9 +1823,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.687",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.687.tgz",
- "integrity": "sha512-Ic85cOuXSP6h7KM0AIJ2hpJ98Bo4hyTUjc4yjMbkvD+8yTxEhfK9+8exT2KKYsSjnCn2tGsKVSZwE7ZgTORQCw==",
+ "version": "1.5.68",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.68.tgz",
+ "integrity": "sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -1872,9 +1888,9 @@
}
},
"node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"engines": {
"node": ">=6"
@@ -1898,92 +1914,109 @@
}
},
"node_modules/eslint": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "version": "9.16.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz",
+ "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.0",
- "@humanwhocodes/config-array": "^0.11.14",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.19.0",
+ "@eslint/core": "^0.9.0",
+ "@eslint/eslintrc": "^3.2.0",
+ "@eslint/js": "9.16.0",
+ "@eslint/plugin-kit": "^0.2.3",
+ "@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
+ "@humanwhocodes/retry": "^0.4.1",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
+ "cross-spawn": "^7.0.5",
"debug": "^4.3.2",
- "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
+ "eslint-scope": "^8.2.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.5.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
+ "file-entry-cache": "^8.0.0",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
+ "optionator": "^0.9.3"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-compat": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz",
- "integrity": "sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.0.1.tgz",
+ "integrity": "sha512-0MeIEuoy8kWkOhW38kK8hU4vkb6l/VvyjpuYDymYOXmUY9NvTgyErF16lYuX+HPS5hkmym7lfA+XpYZiWYWmYA==",
"dev": true,
"dependencies": {
- "@mdn/browser-compat-data": "^5.3.13",
+ "@mdn/browser-compat-data": "^5.5.35",
"ast-metadata-inferer": "^0.8.0",
- "browserslist": "^4.21.10",
- "caniuse-lite": "^1.0.30001524",
+ "browserslist": "^4.23.1",
+ "caniuse-lite": "^1.0.30001639",
"find-up": "^5.0.0",
+ "globals": "^15.7.0",
"lodash.memoize": "^4.1.2",
- "semver": "^7.5.4"
+ "semver": "^7.6.2"
},
"engines": {
- "node": ">=14.x"
+ "node": ">=18.x"
},
"peerDependencies": {
- "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-compat/node_modules/globals": {
+ "version": "15.13.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz",
+ "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
+ "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -2001,21 +2034,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
"node_modules/eslint/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -2033,6 +2051,18 @@
}
}
},
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/eslint/node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -2045,57 +2075,33 @@
"node": ">=10.13.0"
}
},
- "node_modules/eslint/node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
"node_modules/eslint/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/eslint/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
"dev": true,
"dependencies": {
- "acorn": "^8.9.0",
+ "acorn": "^8.14.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^4.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/espree/node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -2113,6 +2119,18 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
+ "node_modules/espree/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/esprima": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
@@ -2282,15 +2300,15 @@
}
},
"node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/file-saver": {
@@ -2351,17 +2369,16 @@
}
},
"node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
"dependencies": {
"flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16"
}
},
"node_modules/flatted": {
@@ -2437,12 +2454,6 @@
"node": ">=6 <7 || >=8"
}
},
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -2486,26 +2497,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -2566,15 +2557,12 @@
}
},
"node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -2629,12 +2617,6 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -2815,6 +2797,22 @@
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -2824,16 +2822,6 @@
"node": ">=0.8.19"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
"node_modules/info-symbol": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz",
@@ -2949,15 +2937,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -3015,6 +2994,18 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -3040,11 +3031,12 @@
"dev": true
},
"node_modules/json.sortify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/json.sortify/-/json.sortify-2.1.0.tgz",
- "integrity": "sha512-otSldRQcu9PaQJJDeB1qGZUIoL7C4nxZunUVHieWPUMJvvVxIUhsMQUhR+r4OUZBwA1McnbS7sqDf5dYHzJsbw==",
+ "version": "2.2.2",
+ "resolved": "git+ssh://git@github.com/cryptpad/JSON.sortify.git#0a96f91c3f3b127c3040bbc2d3eb6ae803cb2dfd",
+ "license": "Apache-2.0",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4.0.0",
+ "npm": ">=1.0.20"
}
},
"node_modules/jsonfile": {
@@ -3605,9 +3597,9 @@
"integrity": "sha512-8oQOyEyh0MCnifNIfyvkNXpEELlVRzDleRivRgsDGh+5ZDG109axweVZ0RIOIpkQmTZk4/xVsBk/oLXpMSWEOw=="
},
"node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
"dev": true
},
"node_modules/normalize-path": {
@@ -3725,15 +3717,6 @@
"node": ">= 0.8"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
"node_modules/open-sans-fontface": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/open-sans-fontface/-/open-sans-fontface-1.4.0.tgz",
@@ -3852,15 +3835,6 @@
"node": ">=8"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -4392,6 +4366,15 @@
"resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz",
"integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg=="
},
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -4402,21 +4385,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -4480,12 +4448,9 @@
"integrity": "sha512-BtT7+xPLdoeXsh6wOblaq6sRy/AsffFXgcwBNGtQJXeNgm9UD3HM3nWEmAERjdCNfE6jWglAtRbAPZ7rc2WtsQ=="
},
"node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -4787,6 +4752,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/stylelint": {
"version": "16.9.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz",
@@ -4961,12 +4938,6 @@
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/stylelint/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
"node_modules/stylelint/node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -5098,31 +5069,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/stylelint/node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/stylelint/node_modules/import-fresh/node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/stylelint/node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -5141,18 +5087,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/stylelint/node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
"node_modules/stylelint/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -5399,12 +5333,6 @@
"utrie": "^1.0.2"
}
},
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
"node_modules/thirty-two": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz",
@@ -5508,18 +5436,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -5562,9 +5478,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"dev": true,
"funding": [
{
@@ -5581,8 +5497,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -5697,12 +5613,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
"node_modules/write-file-atomic": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
diff --git a/package.json b/package.json
index 1432c3c16..f236c225a 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"http-proxy-middleware": "^3.0.3",
"hyper-json": "~1.4.0",
"jquery": "3.6.0",
- "json.sortify": "~2.1.0",
+ "json.sortify": "github:cryptpad/JSON.sortify",
"jsonwebtoken": "^9.0.0",
"jszip": "3.10.1",
"localforage": "^1.5.2",
@@ -67,8 +67,8 @@
"x2js": "^3.4.4"
},
"devDependencies": {
- "eslint": "^8.57.0",
- "eslint-plugin-compat": "^4.2.0",
+ "eslint": "^9.16.0",
+ "eslint-plugin-compat": "^6.0.1",
"stylelint": "^16.9.0",
"stylelint-config-standard-less": "^3.0.1"
},
From e1b61e437eb34681d3852a2156760fdbb7ccea47 Mon Sep 17 00:00:00 2001
From: yflory
Date: Wed, 4 Dec 2024 13:43:06 +0100
Subject: [PATCH 085/143] Use new eslint config format (v9)
---
.eslintignore | 43 ----------------
.eslintrc.js | 58 ----------------------
eslint.config.js | 92 +++++++++++++++++++++++++++++++++++
www/common/cryptpad-common.js | 2 +-
4 files changed, 93 insertions(+), 102 deletions(-)
delete mode 100644 .eslintignore
delete mode 100644 .eslintrc.js
create mode 100644 eslint.config.js
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index bcd65baeb..000000000
--- a/.eslintignore
+++ /dev/null
@@ -1,43 +0,0 @@
-# SPDX-FileCopyrightText: 2023 XWiki CryptPad Team and contributors
-#
-# SPDX-License-Identifier: AGPL-3.0-or-later
-
-node_modules/
-www/components/
-www/bower_components/
-www/common/onlyoffice/dist
-www/common/onlyoffice/x2t
-onlyoffice-dist/
-
-www/scratch
-www/accounts
-www/lib
-www/accounts
-www/worker
-www/todo
-
-*worker.bundle.js
-_build
-
-#lib/plugins/
-
-www/common/hyperscript.js
-
-www/pad/wysiwygarea-plugin.js
-www/pad/mediatag-plugin.js
-www/pad/mediatag-plugin-dialog.js
-www/pad/disable-base64.js
-www/pad/wordcount/
-
-www/kanban/jkanban.js
-www/common/jscolor.js
-
-www/common/media-tag-nacl.min.js
-
-customize/
-
-www/debug/chainpad.dist.js
-
-www/pad/mathjax/
-www/code/mermaid*.js
-www/code/orgmode.js
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 924eddfc3..000000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// SPDX-FileCopyrightText: 2024 XWiki CryptPad Team and contributors
-//
-// SPDX-License-Identifier: AGPL-3.0-or-later
-
-module.exports = {
- 'env': {
- 'browser': true,
- 'es2021': true,
- 'node': true
- },
- 'plugins': ['compat'],
- 'extends': ['eslint:recommended', 'plugin:compat/recommended'],
- "globals": {
- "define": "readonly",
- },
- 'overrides': [
- {
- 'env': {
- 'node': true
- },
- 'files': [
- '.eslintrc.{js,cjs}'
- ],
- 'parserOptions': {
- 'sourceType': 'script'
- }
- }
- ],
- 'parserOptions': {
- 'ecmaVersion': 'latest'
- },
- 'rules': {
- 'indent': [
- 'off', // TODO enable this check
- 4
- ],
- 'linebreak-style': [
- 'off', // git handles linebreak conversion for us
- 'unix'
- ],
- 'quotes': [
- 'off', // TODO enable this check
- 'single'
- ],
- 'semi': [
- 'error',
- 'always'
- ],
-
- // TODO remove these exceptions from the eslint defaults
- 'no-irregular-whitespace': ['off'],
- 'no-self-assign': ['off'],
- 'no-empty': ['off'],
- 'no-useless-escape': ['off'],
- 'no-extra-boolean-cast': ['off'],
- 'no-prototype-builtins': ['off'],
- }
-};
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 000000000..6402b0866
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,92 @@
+// SPDX-FileCopyrightText: 2024 XWiki CryptPad Team and contributors
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+const compatPlugin = require("eslint-plugin-compat");
+const globals = require("globals");
+const js = require("@eslint/js");
+const FlatCompat = require("@eslint/eslintrc").FlatCompat;
+
+const compat = new FlatCompat({
+ baseDirectory: __dirname,
+ recommendedConfig: js.configs.recommended,
+ allConfig: js.configs.all
+});
+
+module.exports = [{
+ ignores: [
+ "**/node_modules/",
+ "www/components/",
+ "www/bower_components/",
+ "www/common/onlyoffice/dist",
+ "www/common/onlyoffice/x2t",
+ "**/onlyoffice-dist/",
+ "www/scratch",
+ "www/accounts",
+ "www/lib",
+ "www/accounts",
+ "www/worker",
+ "www/todo",
+ "**/*worker.bundle.js",
+ "**/_build",
+ "www/common/hyperscript.js",
+ "www/pad/wysiwygarea-plugin.js",
+ "www/pad/mediatag-plugin.js",
+ "www/pad/mediatag-plugin-dialog.js",
+ "www/pad/disable-base64.js",
+ "www/pad/wordcount/",
+ "www/kanban/jkanban.js",
+ "www/common/jscolor.js",
+ "www/common/media-tag-nacl.min.js",
+ "**/customize/",
+ "www/debug/chainpad.dist.js",
+ "www/pad/mathjax/",
+ "www/code/mermaid*.js",
+ "www/code/orgmode.js",
+ ],
+}, ...compat.extends("eslint:recommended", "plugin:compat/recommended"), {
+ plugins: {
+ compatPlugin,
+ },
+
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ ...globals.node,
+ define: "readonly",
+ },
+
+ ecmaVersion: "latest",
+ sourceType: "commonjs",
+ },
+
+ rules: {
+ indent: ["off", 4],
+ "linebreak-style": ["off", "unix"],
+ quotes: ["off", "single"],
+ semi: ["error", "always"],
+ "no-irregular-whitespace": ["off"],
+ "no-self-assign": ["off"],
+ "no-empty": ["off"],
+ "no-useless-escape": ["off"],
+ "no-extra-boolean-cast": ["off"],
+ "no-prototype-builtins": ["off"],
+ "no-unused-vars": [
+ "error",
+ {
+ caughtErrors: "none"
+ }
+ ]
+ },
+}, {
+ files: ["**/.eslintrc.{js,cjs}"],
+
+ languageOptions: {
+ globals: {
+ ...globals.node,
+ },
+
+ ecmaVersion: 5,
+ sourceType: "commonjs",
+ },
+}];
diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js
index e2d6a3746..ada56e9be 100644
--- a/www/common/cryptpad-common.js
+++ b/www/common/cryptpad-common.js
@@ -2713,7 +2713,7 @@ define([
window.addEventListener('unload', function () {
postMsg('CLOSE');
});
- // eslint-disable-next-line no-constant-condition
+ // eslint-disable-next-line no-constant-condition,no-constant-binary-expression
} else if (false && !noWorker && !noSharedWorker && 'serviceWorker' in navigator) {
var initializing = true;
var stopWaiting = waitFor2(); // Call this function when we're ready
From b969a68d78bbb84a459eae9a22b20169fda00fd2 Mon Sep 17 00:00:00 2001
From: yflory
Date: Wed, 4 Dec 2024 13:49:23 +0100
Subject: [PATCH 086/143] lint compliance
---
eslint.config.js | 1 +
www/admin/inner.js | 19 +++++++++++--------
www/common/toolbar.js | 2 +-
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/eslint.config.js b/eslint.config.js
index 6402b0866..eba722d94 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -71,6 +71,7 @@ module.exports = [{
"no-useless-escape": ["off"],
"no-extra-boolean-cast": ["off"],
"no-prototype-builtins": ["off"],
+ "no-use-before-define": ["error"],
"no-unused-vars": [
"error",
{
diff --git a/www/admin/inner.js b/www/admin/inner.js
index c8342a6f7..9153436e5 100644
--- a/www/admin/inner.js
+++ b/www/admin/inner.js
@@ -968,12 +968,7 @@ define([
});
};
- let btn = blocks.activeButton('primary', '',
- Messages.admin_colorChange, (done) => {
- let color = $input.val();
- setColor(color, done);
- });
-
+ let $input = $();
let onColorPicked = () => {
require(['/lib/less.min.js'], (Less) => {
let color = $input.val();
@@ -995,7 +990,14 @@ define([
$preview.find('.cp-admin-color-preview-light a').attr('style', `color: ${color} !important`);
});
};
- let $input = $(input).on('change', onColorPicked).addClass('cp-admin-color-picker');
+ $input = $(input).on('change', onColorPicked).addClass('cp-admin-color-picker');
+
+ let btn = blocks.activeButton('primary', '',
+ Messages.admin_colorChange, (done) => {
+ let color = $input.val();
+ setColor(color, done);
+ });
+
UI.confirmButton($remove, {
classes: 'btn-danger',
@@ -3185,6 +3187,7 @@ define([
labelEnd,
], blocks.nav([button]));
+ let send = function () {};
var refresh = getApi(function (Broadcast) {
$active.empty();
var removeButton = blocks.button('danger', '', Messages.admin_maintenanceCancel);
@@ -3246,7 +3249,7 @@ define([
};
};
- var send = function (data) {
+ send = function (data) {
disable($button);
sFrameChan.query('Q_ADMIN_RPC', {
cmd: 'ADMIN_DECREE',
diff --git a/www/common/toolbar.js b/www/common/toolbar.js
index 2b0d2f648..e950b3981 100644
--- a/www/common/toolbar.js
+++ b/www/common/toolbar.js
@@ -1416,7 +1416,7 @@ MessengerUI, Messages, Pages, PadTypes) {
tb['pad'] = function () {
toolbar.$file.show();
- addElement([
+ toolbar.addElement([
'chat',
'collapse',
'userlist', 'title', 'useradmin', 'spinner',
From 5ee473ee3aeab62618dfd19e056a63ff2d7f4b8c Mon Sep 17 00:00:00 2001
From: DianaXWiki <139217939+DianaXWiki@users.noreply.github.com>
Date: Wed, 4 Dec 2024 17:08:48 +0200
Subject: [PATCH 087/143] Delete unnecessary refactoring
---
www/calendar/inner.js | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/www/calendar/inner.js b/www/calendar/inner.js
index 4daf2f30f..21d662656 100644
--- a/www/calendar/inner.js
+++ b/www/calendar/inner.js
@@ -818,7 +818,7 @@ define([
});
}
if (APP.$calendars) { APP.$calendars.append(calendar); }
- return $calendar; // return jQuery element
+ return calendar; // return jQuery element
};
var makeLeftside = function (calendar, $container) {
@@ -834,16 +834,17 @@ define([
var filter = (teamId) => {
var LOOKUP = {};
- return Object.keys(APP.calendars || {}).filter((id) => {
+ return Object.keys(APP.calendars || {}).filter(function(id) {
var cal = APP.calendars[id] || {};
- var teams = (cal.teams || []).map((tId) => Number(tId));
- return teams.indexOf(typeof (teamId) !== "undefined" ? Number(teamId) : 1) !== -1;
- }).map((k) => {
+ var teams = (cal.teams || []).map(function (tId) { return Number(tId); });
+ return teams.indexOf(typeof(teamId) !== "undefined" ? Number(teamId) : 1) !== -1;
+ }).map(function (k) {
+ // nearly constant-time pre-sort
var cal = APP.calendars[k] || {};
var title = Util.find(cal, ['content', 'metadata', 'title']) || '';
LOOKUP[k] = title;
return k;
- }).sort((a, b) => {
+ }).sort(function(a, b) {
var t1 = LOOKUP[a];
var t2 = LOOKUP[b];
return t1 > t2 ? 1 : (t1 === t2 ? 0 : -1);
@@ -862,10 +863,10 @@ define([
var avatar = h('span.cp-avatar');
var uid = user.uid;
var name = user.name || Messages.anonymous;
- common.displayAvatar($(avatar), user.avatar, name, () => {}, uid);
+ common.displayAvatar($(avatar), user.avatar, name, function(){}, uid);
$contentContainer.append(h('div.cp-calendar-team', [
avatar,
- h('span.cp-name', { title: name }, name)
+ h('span.cp-name', {title: name}, name)
]));
myCalendars.forEach((id) => {
var calendarEntry = makeCalendarEntry(id, 1);
@@ -891,7 +892,7 @@ define([
common.displayAvatar($(avatar), team.avatar, team.displayName || team.name);
var $teamContainer = h('div.cp-calendar-team', [
avatar,
- h('span.cp-name', { title: team.name }, team.name),
+ h('span.cp-name', {title: team.name}, team.name),
h('span')
]);
$contentContainer.append($teamContainer);
@@ -901,15 +902,15 @@ define([
});
});
if(isMobileView) {
- if (totalCalendars > 2) {
- var $showContainer = $(h('div.cp-calendar-entry.cp-ghost')).appendTo($calendars);
- var iconClass = visible ? 'fa-eye-slash' : 'fa-eye';
- var buttonText = visible ? Messages.calendar_hide : Messages.calendar_show;
- var showCalendarsBtn = h('button', [
- h('i.fa.' + iconClass, {'aria-hidden': "true"}),
- h('span.cp-calendar-title', buttonText),
- h('span')
- ]);
+ if (totalCalendars > 2) {
+ var $showContainer = $(h('div.cp-calendar-entry.cp-ghost')).appendTo($calendars);
+ var iconClass = visible ? 'fa-eye-slash' : 'fa-eye';
+ var buttonText = visible ? Messages.calendar_hide : Messages.calendar_show;
+ var showCalendarsBtn = h('button', [
+ h('i.fa.' + iconClass, {'aria-hidden': "true"}),
+ h('span.cp-calendar-title', buttonText),
+ h('span')
+ ]);
$(showCalendarsBtn).click(() => {
visible = !visible;
From 80c97b09e591ec341a46aa34ff24fa99acd1b4f6 Mon Sep 17 00:00:00 2001
From: DianaXWiki <139217939+DianaXWiki@users.noreply.github.com>
Date: Wed, 4 Dec 2024 17:14:21 +0200
Subject: [PATCH 088/143] Add the temp calendars logic
---
www/calendar/inner.js | 35 +++++++++++++++++++++++++++++++----
1 file changed, 31 insertions(+), 4 deletions(-)
diff --git a/www/calendar/inner.js b/www/calendar/inner.js
index 21d662656..c2928d8a4 100644
--- a/www/calendar/inner.js
+++ b/www/calendar/inner.js
@@ -818,7 +818,7 @@ define([
});
}
if (APP.$calendars) { APP.$calendars.append(calendar); }
- return calendar; // return jQuery element
+ return calendar;
};
var makeLeftside = function (calendar, $container) {
@@ -832,9 +832,9 @@ define([
$calendars.empty();
var privateData = metadataMgr.getPrivateData();
- var filter = (teamId) => {
+ var filter = function (teamId) {
var LOOKUP = {};
- return Object.keys(APP.calendars || {}).filter(function(id) {
+ return Object.keys(APP.calendars || {}).filter(function (id) {
var cal = APP.calendars[id] || {};
var teams = (cal.teams || []).map(function (tId) { return Number(tId); });
return teams.indexOf(typeof(teamId) !== "undefined" ? Number(teamId) : 1) !== -1;
@@ -844,12 +844,39 @@ define([
var title = Util.find(cal, ['content', 'metadata', 'title']) || '';
LOOKUP[k] = title;
return k;
- }).sort(function(a, b) {
+ }).sort(function (a, b) {
var t1 = LOOKUP[a];
var t2 = LOOKUP[b];
return t1 > t2 ? 1 : (t1 === t2 ? 0 : -1);
});
};
+ var tempCalendars = filter(0);
+ if (tempCalendars.length && tempCalendars[0] === APP.currentCalendar) {
+ APP.$calendars.append(h('div.cp-calendar-team', [
+ h('span', Messages.calendar_tempCalendar)
+ ]));
+ makeCalendarEntry(tempCalendars[0], 0);
+ var importTemp = h('button', [
+ h('i.fa.fa-calendar-plus-o'),
+ h('span', Messages.calendar_import_temp),
+ h('span')
+ ]);
+ $(importTemp).click(function () {
+ importCalendar({
+ id: tempCalendars[0],
+ teamId: 0
+ }, function (err) {
+ if (err) {
+ console.error(err);
+ return void UI.warn(Messages.error);
+ }
+ });
+ });
+ if (APP.loggedIn) {
+ APP.$calendars.append(h('div.cp-calendar-entry.cp-ghost', importTemp));
+ }
+ return;
+ }
var myCalendars = filter(1);
var totalCalendars = myCalendars.length + Object.keys(privateData.teams).reduce((sum, teamId) => {
From 9ed99afc85189525691718f228295300fe9805ea Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Thu, 5 Dec 2024 09:51:16 +0100
Subject: [PATCH 089/143] Parsing out HTML tags on Firefox
---
www/pad/export.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index 1225bc918..9fd2bcaaa 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -101,7 +101,7 @@ define([
replacement: function (content, node) {
var indexOf = Array.prototype.indexOf;
var index = indexOf.call(node.parentNode.childNodes, node);
- var rowContent = node.innerHTML.replace(/|<\/td>/g, '').split(' ');
+ var rowContent = node.innerHTML.replace(/ | /g, '').replace(/ /g, ' ').split(' | ');
rowContent[0] = `|${rowContent[0]}`;
var row = '';
var rowLength = rowContent.filter(Boolean).length;
@@ -114,6 +114,8 @@ define([
var separator = '|-';
newRow += `${separator.repeat(rowLength)}\n`;
}
+ var parser = new DOMParser()
+ newRow = parser.parseFromString(newRow, 'text/html').children[0].innerText
return newRow;
}}).addRule('strikethrough', {
filter: ['s', 'del', 'strike'],
From fcbf122f3c6b0e8d4e59a30fa1abf278803e06a1 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Thu, 5 Dec 2024 09:59:24 +0100
Subject: [PATCH 090/143] Linting
---
www/pad/export.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index 9fd2bcaaa..d6650c817 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -114,8 +114,8 @@ define([
var separator = '|-';
newRow += `${separator.repeat(rowLength)}\n`;
}
- var parser = new DOMParser()
- newRow = parser.parseFromString(newRow, 'text/html').children[0].innerText
+ var parser = new DOMParser();
+ newRow = parser.parseFromString(newRow, 'text/html').children[0].innerText;
return newRow;
}}).addRule('strikethrough', {
filter: ['s', 'del', 'strike'],
From 0b677cf01ec863bd957c6403d310783e8ca9bc15 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Mon, 21 Oct 2024 16:01:22 +0200
Subject: [PATCH 091/143] Moved .form_passwordWarning key to
customize.dist/messages.js
---
customize.dist/messages.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/customize.dist/messages.js b/customize.dist/messages.js
index 4c640c17d..e3f0c30de 100755
--- a/customize.dist/messages.js
+++ b/customize.dist/messages.js
@@ -135,6 +135,8 @@ define(req, function(AppConfig, Default, Language) {
return text;
}
};
+
+ Messages.form_passwordWarning = 'For Forms, you can only set the password during creation. It cannot be changed later.' // XXX
Messages.form_passwordWarning = 'Please note that a Form password can only be set now at creation time and cannot be changed later.' // XXX
From 8daae414533e1e3c25b533a0d918466a8f0cfdf2 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Thu, 5 Dec 2024 14:04:47 +0100
Subject: [PATCH 092/143] Removed redundant newlines
---
customize.dist/src/less2/include/creation.less | 1 -
www/common/common-ui-elements.js | 1 -
2 files changed, 2 deletions(-)
diff --git a/customize.dist/src/less2/include/creation.less b/customize.dist/src/less2/include/creation.less
index c9bb17a7c..a25640398 100644
--- a/customize.dist/src/less2/include/creation.less
+++ b/customize.dist/src/less2/include/creation.less
@@ -179,7 +179,6 @@
}
}
}
-
.cp-creation-help, .cp-creation-warning {
font-size: 16px;
color: @cp_creation-fg;
diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js
index 3433f297d..c2dc088fc 100644
--- a/www/common/common-ui-elements.js
+++ b/www/common/common-ui-elements.js
@@ -25,7 +25,6 @@ define([
'css!/customize/fonts/cptools/style.css',
], function ($, Config, Broadcast, Util, Hash, Language, UI, Constants, Feedback, h, Clipboard,
Messages, AppConfig, Pages, NThen, InviteInner, Visible, PadTypes) {
-
var UIElements = {};
var urlArgs = Config.requireConf.urlArgs;
From a1a8260fae64f2555f07ab6f15ef6c457ab6e663 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Thu, 5 Dec 2024 14:08:03 +0100
Subject: [PATCH 093/143] Removed redundant newlines
---
www/common/drive-ui.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js
index ac78d201d..cfed9aa2d 100644
--- a/www/common/drive-ui.js
+++ b/www/common/drive-ui.js
@@ -2432,7 +2432,6 @@ define([
if (isElementSelected($element)) {
selectElement($element);
}
-
$element.prepend($icon).dblclick(function () {
if (restricted) {
UI.warn(Messages.fm_restricted);
From 2796999be82b508b142bd4626f481e54135759aa Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Thu, 5 Dec 2024 14:33:32 +0100
Subject: [PATCH 094/143] Changed export file type & formatting
---
www/common/make-backup.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index e83e4a781..e90c93921 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -290,7 +290,7 @@ define([
};
var fileName = getUnique(sanitize(rawName), '.txt', existingNames);
existingNames.push(fileName.toLowerCase());
- var content = new Blob([fData.href], { type : "text/html;charset=utf-8" });
+ var content = new Blob([fData.href, '\n'], { type: "text/plain;charset=utf-8" });
zip.file(fileName, content, opts);
console.log('DONE ---- ' + fileName);
setTimeout(done, 1000);
From 87df798e56383284783d6fa1bd7d0f06060847ae Mon Sep 17 00:00:00 2001
From: David Benque
Date: Thu, 5 Dec 2024 14:55:51 +0000
Subject: [PATCH 095/143] Revert spacing of radio items
---
customize.dist/src/less2/include/checkmark.less | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/customize.dist/src/less2/include/checkmark.less b/customize.dist/src/less2/include/checkmark.less
index 62b821bea..bd2d96e58 100644
--- a/customize.dist/src/less2/include/checkmark.less
+++ b/customize.dist/src/less2/include/checkmark.less
@@ -137,7 +137,7 @@
}
.cp-radio {
- margin: 0.2rem 0 0.2rem 0;
+ margin: 0;
display: flex;
align-items: center;
position: relative;
From 16bcdb0db1aeebcbec55a610a83917de7be858a6 Mon Sep 17 00:00:00 2001
From: David Benque
Date: Thu, 5 Dec 2024 15:09:58 +0000
Subject: [PATCH 096/143] Add spacing to radio in forms settings
---
www/form/app-form.less | 3 +++
1 file changed, 3 insertions(+)
diff --git a/www/form/app-form.less b/www/form/app-form.less
index a0d95a7ed..2042999ce 100644
--- a/www/form/app-form.less
+++ b/www/form/app-form.less
@@ -1319,6 +1319,9 @@
}
}
}
+ .cp-radio {
+ margin: 0.2rem 0;
+ }
.cp-form-status {
margin-bottom: 0.2rem;
}
From 994bd61c9380d9ce8784500cbe7c17e083729747 Mon Sep 17 00:00:00 2001
From: DianaXWiki <139217939+DianaXWiki@users.noreply.github.com>
Date: Thu, 5 Dec 2024 18:03:16 +0200
Subject: [PATCH 097/143] Remove some more refactoring
---
www/calendar/inner.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/www/calendar/inner.js b/www/calendar/inner.js
index c2928d8a4..40381dc87 100644
--- a/www/calendar/inner.js
+++ b/www/calendar/inner.js
@@ -831,7 +831,6 @@ define([
onCalendarsUpdate.reg(function () {
$calendars.empty();
var privateData = metadataMgr.getPrivateData();
-
var filter = function (teamId) {
var LOOKUP = {};
return Object.keys(APP.calendars || {}).filter(function (id) {
From ddf4e56304b967825c490622fb0b0ece142f71ec Mon Sep 17 00:00:00 2001
From: DianaXWiki <139217939+DianaXWiki@users.noreply.github.com>
Date: Thu, 5 Dec 2024 18:06:03 +0200
Subject: [PATCH 098/143] Add function explicitly
---
www/calendar/inner.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/www/calendar/inner.js b/www/calendar/inner.js
index 40381dc87..d02383370 100644
--- a/www/calendar/inner.js
+++ b/www/calendar/inner.js
@@ -906,13 +906,13 @@ define([
h('span', Messages.calendar_new),
h('span')
]);
- $(newButton).click(() => {
+ $(newButton).click(function () {
editCalendar();
}).appendTo($newContainer);
- Object.keys(privateData.teams).sort().forEach((teamId) => {
+ Object.keys(privateData.teams).sort().forEach(function (teamId) {
var calendars = filter(teamId);
- if (!calendars.length) return;
+ if (!calendars.length) { return; }
var team = privateData.teams[teamId];
var avatar = h('span.cp-avatar');
common.displayAvatar($(avatar), team.avatar, team.displayName || team.name);
From 0b998a890dd4e5c86829fad2d97e0b2d70a60e93 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 13:33:01 +0100
Subject: [PATCH 099/143] Links in shared folders included in .zip
---
www/common/make-backup.js | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index e90c93921..baf3161e8 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -307,26 +307,32 @@ define([
};
// Add folders and their content recursively in the zip
- var makeFolder = function (ctx, root, zip, fd) {
+ var makeFolder = function (ctx, root, zip, fd, sd) {
if (typeof (root) !== "object") { return; }
var existingNames = [];
Object.keys(root).forEach(function (k) {
var el = root[k];
+ let staticData;
if (typeof el === "object" && el.metadata !== true) { // if folder
var fName = getUnique(sanitize(k), '', existingNames);
existingNames.push(fName.toLowerCase());
return void makeFolder(ctx, el, zip.folder(fName), fd);
}
if (ctx.data.sharedFolders[el]) { // if shared folder
+ staticData = ctx.sf[el].static;
var sfData = ctx.sf[el].metadata;
var sfName = getUnique(sanitize((sfData && sfData.title) || 'Folder'), '', existingNames);
existingNames.push(sfName.toLowerCase());
- return void makeFolder(ctx, ctx.sf[el].root, zip.folder(sfName), ctx.sf[el].filesData);
+ return void makeFolder(ctx, ctx.sf[el].root, zip.folder(sfName), ctx.sf[el].filesData, staticData);
}
var fData = fd[el];
+ var sData = sd[el];
if (fData) {
addFile(ctx, zip, fData, existingNames);
return;
+ } else if (sData) {
+ addFile(ctx, zip, sData, existingNames);
+ return;
}
});
};
From 2fb05156f0924d5ec7d3a9633cac61b0814bdd4a Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 14:26:55 +0100
Subject: [PATCH 100/143] Shared folder fixes
---
www/common/make-backup.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index baf3161e8..93e4e2850 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -316,7 +316,7 @@ define([
if (typeof el === "object" && el.metadata !== true) { // if folder
var fName = getUnique(sanitize(k), '', existingNames);
existingNames.push(fName.toLowerCase());
- return void makeFolder(ctx, el, zip.folder(fName), fd);
+ return void makeFolder(ctx, el, zip.folder(fName), fd, sd);
}
if (ctx.data.sharedFolders[el]) { // if shared folder
staticData = ctx.sf[el].static;
@@ -325,8 +325,9 @@ define([
existingNames.push(sfName.toLowerCase());
return void makeFolder(ctx, ctx.sf[el].root, zip.folder(sfName), ctx.sf[el].filesData, staticData);
}
+ var sData;
var fData = fd[el];
- var sData = sd[el];
+ sd ? sData = sd[el] : sData = undefined
if (fData) {
addFile(ctx, zip, fData, existingNames);
return;
From 470a5711cf6732749dbf8033df66200173614c46 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 14:29:24 +0100
Subject: [PATCH 101/143] Linting
---
www/common/make-backup.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index 93e4e2850..17a5be462 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -327,7 +327,7 @@ define([
}
var sData;
var fData = fd[el];
- sd ? sData = sd[el] : sData = undefined
+ sd ? sData = sd[el] : sData = undefined;
if (fData) {
addFile(ctx, zip, fData, existingNames);
return;
From dc7d94ea770da9a6f346738fc4f4f1aff703b38f Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 18:47:56 +0100
Subject: [PATCH 102/143] Links included in standalone folder downloads
---
www/common/make-backup.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index 17a5be462..78270831a 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -358,7 +358,8 @@ define([
sframeChan: sframeChan
};
var filesData = data.sharedFolderId && ctx.sf[data.sharedFolderId] ? ctx.sf[data.sharedFolderId].filesData : ctx.data.filesData;
- var links = ctx.data.static;
+ var links = ctx.sf[data.sharedFolderId] && ctx.sf[data.sharedFolderId].static ? ctx.data.static && ctx.sf[data.sharedFolderId].static : ctx.data.static
+
Object.keys(links).forEach(function(key) {
filesData[key] = links[key];
});
From 3385ac8843bd3c94f56dc1d068ea2ce558512977 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 18:49:18 +0100
Subject: [PATCH 103/143] Syntax correction
---
www/common/make-backup.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index 78270831a..98a4f5357 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -325,9 +325,8 @@ define([
existingNames.push(sfName.toLowerCase());
return void makeFolder(ctx, ctx.sf[el].root, zip.folder(sfName), ctx.sf[el].filesData, staticData);
}
- var sData;
var fData = fd[el];
- sd ? sData = sd[el] : sData = undefined;
+ var sData = sd ? sd[el] : undefined;
if (fData) {
addFile(ctx, zip, fData, existingNames);
return;
From 04dff2738139291c922945774a78ce2e6a414bb1 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 18:52:05 +0100
Subject: [PATCH 104/143] Linting
---
www/common/make-backup.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index 98a4f5357..fd2145ee2 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -357,7 +357,7 @@ define([
sframeChan: sframeChan
};
var filesData = data.sharedFolderId && ctx.sf[data.sharedFolderId] ? ctx.sf[data.sharedFolderId].filesData : ctx.data.filesData;
- var links = ctx.sf[data.sharedFolderId] && ctx.sf[data.sharedFolderId].static ? ctx.data.static && ctx.sf[data.sharedFolderId].static : ctx.data.static
+ var links = ctx.sf[data.sharedFolderId] && ctx.sf[data.sharedFolderId].static ? ctx.data.static && ctx.sf[data.sharedFolderId].static : ctx.data.static;
Object.keys(links).forEach(function(key) {
filesData[key] = links[key];
From a86fe963933d1dd3bc145e04b03a15958b6d7fd0 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 19:17:25 +0100
Subject: [PATCH 105/143] Removed flex-flow style
---
customize.dist/src/less2/include/creation.less | 1 -
1 file changed, 1 deletion(-)
diff --git a/customize.dist/src/less2/include/creation.less b/customize.dist/src/less2/include/creation.less
index a25640398..d200558af 100644
--- a/customize.dist/src/less2/include/creation.less
+++ b/customize.dist/src/less2/include/creation.less
@@ -165,7 +165,6 @@
//margin: 10px 0;
min-height: 28px;
line-height: 28px;
- flex-flow: column;
label {
flex: 1;
// Force wrap when the other element in the line is 100% (IE bug):
From 650bb2360463f9e2e3c1dd252c384e354e4369db Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Fri, 6 Dec 2024 20:06:51 +0100
Subject: [PATCH 106/143] Fixes
---
www/common/inner/common-modal.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/www/common/inner/common-modal.js b/www/common/inner/common-modal.js
index 4b00c0c02..4fe7d6bef 100644
--- a/www/common/inner/common-modal.js
+++ b/www/common/inner/common-modal.js
@@ -50,9 +50,9 @@ define([
var hashes = priv.hashes || {};
// For calendars, individual href is passed via opts
if (priv.app === 'calendar') {
- data.href = (priv.app === 'calendar') && opts.href;
+ data.href = opts.href;
} else if (hashes.editHash || hashes.fileHash) {
- data.href = Hash.hashToHref(hashes.editHash || hashes.fileHash);
+ data.href = Hash.hashToHref(hashes.editHash || hashes.fileHash, priv.app);
} else {
data.href = undefined;
}
From 7f6005bb584ce346592b622ea09bfed9bc9a2c2d Mon Sep 17 00:00:00 2001
From: Weblate
Date: Sun, 8 Dec 2024 03:25:05 +0100
Subject: [PATCH 107/143] Translated using Weblate (Bulgarian)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently translated at 33.5% (599 of 1783 strings)
Translated using Weblate (Bulgarian)
Currently translated at 31.8% (568 of 1783 strings)
Co-authored-by: Weblate
Co-authored-by: Мария Рангелова
Translate-URL: https://weblate.cryptpad.org/projects/cryptpad/app/bg/
Translation: CryptPad/App
---
www/common/translations/messages.bg.json | 65 +++++++++++++++++++++++-
1 file changed, 63 insertions(+), 2 deletions(-)
diff --git a/www/common/translations/messages.bg.json b/www/common/translations/messages.bg.json
index 28bc9f1b1..56ac012e0 100644
--- a/www/common/translations/messages.bg.json
+++ b/www/common/translations/messages.bg.json
@@ -481,7 +481,7 @@
"download_dl": "Изтегляне",
"download_step1": "Изтегля се",
"download_step2": "Декриптиране",
- "todo_title": "CryptTodo",
+ "todo_title": "Crypt Todo",
"todo_removeTaskTitle": "Премахнете тази задача от вашия списък със задачи",
"pad_base64": "Този документ съдържа изображения, съхранени по неефективен начин. Тези изображения значително ще увеличат размера на документа във вашия CryptDrive и ще направят зареждането му по-бавно. Можете да промените тези файлове в нов формат, който ще се съхранява отделно във вашия CryptDrive. Искате ли да промените тези изображения сега?",
"mdToolbar_button": "Показване или скриване на лентата с инструменти Markdown",
@@ -538,5 +538,66 @@
"features_f_storage2_note": "От 5 GB на 50 GB в зависимост от плана, увеличен лимит от {0} MB за качване на файлове",
"features_f_support": "По-бърза поддръжка",
"features_f_support_note": "Приоритетен отговор от административния екип чрез имейл и вградена билетна система",
- "features_f_supporter": "Поверителност при поддръжка"
+ "features_f_supporter": "Поверителност при поддръжка",
+ "features_f_supporter_note": "Помогнете на CryptPad да стане финансово устойчив и покажете, че софтуерът за подобряване на поверителността, доброволно финансиран от потребителите, трябва да бъде норма",
+ "four04_pageNotFound": "Не успяхме да намерим страницата, която търсите.",
+ "help_genericMore": "Научете повече за това как CryptPad може да работи за вас, като прочетете нашата Документация",
+ "feedback_about": "Ако четете това, вероятно сте били любопитни защо CryptPad търси уеб страници, когато извършвате определени действия.",
+ "creation_owned1": "Притежаван документ може да бъде унищожен, когато собственикът поиска. Унищожаването на притежаван документ го прави недостъпен чрез CryptDrives за другите потребители.",
+ "feedback_privacy": "Грижим се за вашата поверителност и в същото време искаме CryptPad да бъде много лесен за използване. Използваме този файл, за да разберем кои функции на потребителския интерфейс имат значение за нашите потребители, като го изискваме заедно с параметър, указващ кое действие е предприето.",
+ "creation_newPadModalDescription": "Кликнете върху приложението, за да създадете нов документ. Можете също да натиснете Tab, за да изберете приложението, и да натиснете Enter, за да потвърдите.",
+ "features_f_subscribe": "Абониране",
+ "features_f_subscribe_note": "За абониране е необходим акаунт",
+ "header_logoTitle": "Към вашия CryptDrive",
+ "header_homeTitle": "Към началната страница на CryptPad",
+ "edit": "редактиране",
+ "view": "преглед",
+ "feedback_optout": "Ако искате да се откажете, посетете страницата си с потребителски настройки, където ще намерите отметка, за да активирате или деактивирате обратната връзка с потребителя.",
+ "creation_404": "Този документ вече не съществува. Използвайте следната форма, за да създадете нов документ.",
+ "creation_owned": "Собственост на документа",
+ "creation_expire": "Изтичащ документ",
+ "creation_expireFalse": "Неограничен",
+ "creation_expireHours": "Час(ове)",
+ "creation_expireDays": "Ден(дни)",
+ "creation_expireMonths": "Месец(и)",
+ "creation_password": "Парола\n",
+ "creation_noTemplate": "Празен документ",
+ "creation_newTemplate": "Нов шаблон",
+ "creation_create": "Създаване",
+ "creation_owners": "Собственици",
+ "creation_noOwner": "Без собственик",
+ "creation_expiration": "Дата на унищожаване",
+ "creation_passwordValue": "Парола",
+ "password_info": "Документът, който се опитвате да отворите, вече не съществува или е защитен с нова парола. Въведете правилната парола за достъп до съдържанието.",
+ "properties_changePasswordButton": "Изпращане",
+ "sharedFolders_forget": "Този документ се съхранява само в споделена папка, не можете да го преместите в кошчето. Можете да използвате своя CryptDrive, ако искате да го изтриете.",
+ "share_linkEmbed": "Режим на вграждане (скриване на лентата с инструментите и потребителския списък)",
+ "share_mediatagCopy": "Копиране на медийния маркер в клипборда",
+ "sharedFolders_share": "Споделете тази връзка с други регистрирани потребители, за да им дадете достъп до споделената папка. След като отворят тази връзка, споделената папка ще бъде добавена към техния CryptDrive.",
+ "convertFolderToSF_SFChildren": "Тази папка не може да бъде преобразувана в споделена папка, защото вече съдържа споделени папки. Преместете тези споделени папки другаде, за да продължите.",
+ "password_error": "Документът не е намерен Тази грешка може да бъде причинена от две причини: или паролата е невалидна, или документът е унищожен.",
+ "password_placeholder": "Въведете паролата тук...",
+ "password_submit": "Изпращане",
+ "properties_addPassword": "Добавяне на парола",
+ "properties_changePassword": "Промяна на паролата",
+ "properties_confirmNew": "Сигурен ли си? Добавянето на парола ще промени адреса на този документ и ще премахне неговата история. Потребителите без паролата ще загубят достъпа до този документ",
+ "properties_confirmChange": "Сигурен ли си? Промяната на паролата ще премахне нейната история. Потребителите без новата парола ще загубят достъпа до този документ",
+ "properties_passwordSame": "Новите пароли трябва да се различават от текущата.",
+ "properties_passwordError": "Възникна грешка при опит за промяна на паролата. Моля, опитайте отново.",
+ "properties_passwordWarning": "Паролата беше променена успешно, но не успяхме да актуализираме вашия CryptDrive с новите данни. Може да се наложи да премахнете старата версия на документа ръчно. Натиснете OK, за да презаредите и актуализирате правата си за достъп.",
+ "properties_passwordSuccess": "Паролата бе променена успешно. Натиснете OK, за да презаредите и актуализирате правата си за достъп.",
+ "share_linkCategory": "Връзка",
+ "share_linkAccess": "Права за достъп",
+ "share_linkEdit": "Редактиране",
+ "share_linkView": "Преглед",
+ "share_linkPresent": "Текущ",
+ "share_linkOpen": "Отваряне на връзка",
+ "share_linkCopy": "Копиране на връзка",
+ "share_contactCategory": "Контакти",
+ "share_embedCategory": "Вграждане",
+ "sharedFolders_duplicate": "Някои от документите, които се опитвахте да преместите, вече бяха споделени в целевата папка.",
+ "sharedFolders_create": "Създаване на споделена папка",
+ "sharedFolders_create_name": "Име на папка",
+ "sharedFolders_create_owned": "Собствена папка",
+ "convertFolderToSF_SFParent": "Тази папка не може да бъде преобразувана в споделена папка в текущото си местоположение. Преместете го извън споделената папка, за да продължите."
}
From 7a00b6b4a20c06e7e14666374b83efc7d52c3594 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Sun, 8 Dec 2024 22:05:04 +0100
Subject: [PATCH 108/143] Formatting accounts for headers
---
www/pad/export.js | 52 ++++++++++++++++++++++++++++++-----------------
1 file changed, 33 insertions(+), 19 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index d6650c817..897bd778a 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -97,26 +97,40 @@ define([
var md = Turndown({
headingStyle: 'atx'
}).addRule('table', {
- filter: ['tr'],
+ filter: ['table'],
replacement: function (content, node) {
- var indexOf = Array.prototype.indexOf;
- var index = indexOf.call(node.parentNode.childNodes, node);
- var rowContent = node.innerHTML.replace(//g, '').replace(/ /g, ' ').split(' | ');
- rowContent[0] = `|${rowContent[0]}`;
- var row = '';
- var rowLength = rowContent.filter(Boolean).length;
- for (var i =0; i < rowLength; i++) {
- var cell = rowContent[i] + ' |';
- row += cell;
- }
- var newRow = row.concat('\n');
- if (index === 0) {
- var separator = '|-';
- newRow += `${separator.repeat(rowLength)}\n`;
- }
- var parser = new DOMParser();
- newRow = parser.parseFromString(newRow, 'text/html').children[0].innerText;
- return newRow;
+ var childNodeArr = Array.from(node.childNodes)
+ var table = ''
+ childNodeArr.forEach(function(cN) {
+ cN.childNodes.forEach(function(childNode) {
+ var childNodes = Array.from(childNode.childNodes)
+ var rowContent = childNodes
+ var indexOf = Array.prototype.indexOf;
+ var index;
+ if (childNodeArr.length > 1) {
+ index = indexOf.call(node.childNodes, cN);
+ } else {
+ index = indexOf.call(cN.childNodes, childNode);
+ }
+ rowContent[0].textContent = `|${rowContent[0].textContent}`;
+ var row = '';
+ var rowLength = rowContent.filter(Boolean).length;
+ for (var i =0; i < rowLength; i++) {
+ var cell = rowContent[i].textContent + ' |';
+ row += cell;
+ }
+ var newRow = row.concat('\n');
+ if (index === 0) {
+ var separator = '|-';
+ newRow += `${separator.repeat(rowLength)}\n`;
+ }
+ var parser = new DOMParser();
+ newRow = parser.parseFromString(newRow, 'text/html').children[0].innerText;
+ table += newRow
+ return newRow;
+ })
+ })
+ return table
}}).addRule('strikethrough', {
filter: ['s', 'del', 'strike'],
replacement: function (content) {
From e8136b32da1f616e7eb1c6a4bc19160d85d9f5cc Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Sun, 8 Dec 2024 23:10:51 +0100
Subject: [PATCH 109/143] Formatting accounts for newlines inside cells
---
www/pad/export.js | 73 +++++++++++++++++++++++++----------------------
1 file changed, 39 insertions(+), 34 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index 897bd778a..1999a5164 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -97,40 +97,45 @@ define([
var md = Turndown({
headingStyle: 'atx'
}).addRule('table', {
- filter: ['table'],
- replacement: function (content, node) {
- var childNodeArr = Array.from(node.childNodes)
- var table = ''
- childNodeArr.forEach(function(cN) {
- cN.childNodes.forEach(function(childNode) {
- var childNodes = Array.from(childNode.childNodes)
- var rowContent = childNodes
- var indexOf = Array.prototype.indexOf;
- var index;
- if (childNodeArr.length > 1) {
- index = indexOf.call(node.childNodes, cN);
- } else {
- index = indexOf.call(cN.childNodes, childNode);
- }
- rowContent[0].textContent = `|${rowContent[0].textContent}`;
- var row = '';
- var rowLength = rowContent.filter(Boolean).length;
- for (var i =0; i < rowLength; i++) {
- var cell = rowContent[i].textContent + ' |';
- row += cell;
- }
- var newRow = row.concat('\n');
- if (index === 0) {
- var separator = '|-';
- newRow += `${separator.repeat(rowLength)}\n`;
- }
- var parser = new DOMParser();
- newRow = parser.parseFromString(newRow, 'text/html').children[0].innerText;
- table += newRow
- return newRow;
- })
- })
- return table
+ filter: ['table'],
+ replacement: function (content, node) {
+ var childNodeArr = Array.from(node.childNodes);
+ var table = '';
+ childNodeArr.forEach(function(rowNode) {
+ rowNode.childNodes.forEach(function(childNode) {
+ var rowContent = Array.from(childNode.childNodes);
+ var indexOf = Array.prototype.indexOf;
+ var index = childNodeArr.length > 1 ? indexOf.call(node.childNodes, rowNode) : indexOf.call(rowNode.childNodes, childNode);
+ var row = '';
+ var rowLength = rowContent.filter(Boolean).length;
+ for (var i =0; i < rowLength; i++) {
+ var cell = rowContent[i];
+ var cellContent = Array.from(cell.childNodes);
+ cellContent.pop();
+ if (cellContent.length > 1) {
+ var cellString = '';
+ cellContent.forEach(function(string) {
+ if (string.nodeType === 3) {
+ cellString += string.textContent;
+ } else if (string.nodeName === "BR") {
+ cellString += ' ';
+ }
+ });
+ row += cellString + ' |';
+ } else {
+ row += cellContent[0].textContent + ' |';
+ }
+ }
+ var newRow = row.concat('\n');
+ if (index === 0) {
+ var separator = '|-';
+ newRow += `${separator.repeat(rowLength)}\n`;
+ }
+ table += newRow;
+ return newRow;
+ });
+ });
+ return table;
}}).addRule('strikethrough', {
filter: ['s', 'del', 'strike'],
replacement: function (content) {
From 1354b0a238bf0a866d3c0823c55951a93f233d5e Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Mon, 9 Dec 2024 13:08:36 +0100
Subject: [PATCH 110/143] Formatting accounts for bold, italic, underlined text
and blank cells
---
www/pad/export.js | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index 1999a5164..0bd62d9b0 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -111,19 +111,29 @@ define([
for (var i =0; i < rowLength; i++) {
var cell = rowContent[i];
var cellContent = Array.from(cell.childNodes);
- cellContent.pop();
if (cellContent.length > 1) {
var cellString = '';
- cellContent.forEach(function(string) {
+ cellContent.forEach(function(string) {
+ var stringContent = string.childNodes.length ? string.innerHTML : string.textContent
if (string.nodeType === 3) {
- cellString += string.textContent;
+ cellString += stringContent;
} else if (string.nodeName === "BR") {
cellString += ' ';
+ } else if (string.nodeName === "EM") {
+ cellString += '' + stringContent + '';
+ } else if (string.nodeName === "STRONG") {
+ cellString += '' + stringContent + '';
+ } else if (string.nodeName === "U") {
+ cellString += '' + stringContent + '';
+ } else if (string.nodeName === "S") {
+ cellString += '~' + stringContent + '~';
}
});
row += cellString + ' |';
- } else {
- row += cellContent[0].textContent + ' |';
+ } else if (cellContent[0].nodeName === "BR") {
+ row += '| |';
+ } else {
+ row += cellContent[0].innerHTML + ' |';
}
}
var newRow = row.concat('\n');
@@ -137,10 +147,15 @@ define([
});
return table;
}}).addRule('strikethrough', {
- filter: ['s', 'del', 'strike'],
- replacement: function (content) {
- return '~' + content + '~';
- }
+ filter: ['s', 'del', 'strike'],
+ replacement: function (content) {
+ return '~' + content + '~';
+ }
+ }).addRule('strikethrough', {
+ filter: ['u'],
+ replacement: function (content) {
+ return '' + content + '';
+ }
})
.turndown(toExport);
var mdBlob = new Blob([md], {
From 8d5ac837a1db48a2e7112dbb701e949865734573 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Mon, 9 Dec 2024 14:44:59 +0100
Subject: [PATCH 111/143] Linting
---
www/pad/export.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index 0bd62d9b0..abd45ce20 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -114,7 +114,7 @@ define([
if (cellContent.length > 1) {
var cellString = '';
cellContent.forEach(function(string) {
- var stringContent = string.childNodes.length ? string.innerHTML : string.textContent
+ var stringContent = string.childNodes.length ? string.innerHTML : string.textContent;
if (string.nodeType === 3) {
cellString += stringContent;
} else if (string.nodeName === "BR") {
From 14e56aef791050bc7ddfdf239803241f76c0d931 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Mon, 9 Dec 2024 14:45:40 +0100
Subject: [PATCH 112/143] Indentation
---
www/pad/export.js | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index abd45ce20..aac4ae4aa 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -147,15 +147,15 @@ define([
});
return table;
}}).addRule('strikethrough', {
- filter: ['s', 'del', 'strike'],
- replacement: function (content) {
- return '~' + content + '~';
- }
+ filter: ['s', 'del', 'strike'],
+ replacement: function (content) {
+ return '~' + content + '~';
+ }
}).addRule('strikethrough', {
- filter: ['u'],
- replacement: function (content) {
- return '' + content + '';
- }
+ filter: ['u'],
+ replacement: function (content) {
+ return '' + content + '';
+ }
})
.turndown(toExport);
var mdBlob = new Blob([md], {
From 495435ec07d91f20fc3d8c46dd7673d9a6b5d258 Mon Sep 17 00:00:00 2001
From: yflory
Date: Mon, 9 Dec 2024 15:07:56 +0100
Subject: [PATCH 113/143] Fix indentation
---
www/calendar/inner.js | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/www/calendar/inner.js b/www/calendar/inner.js
index d02383370..8c6bf7317 100644
--- a/www/calendar/inner.js
+++ b/www/calendar/inner.js
@@ -938,17 +938,17 @@ define([
h('span')
]);
- $(showCalendarsBtn).click(() => {
- visible = !visible;
- $contentContainer.toggle(visible);
- iconClass = visible ? 'fa-eye-slash' : 'fa-eye';
- buttonText = visible ? Messages.calendar_hide : Messages.calendar_show;
- $(showCalendarsBtn).find('i').attr('class', 'fa ' + iconClass).attr('aria-hidden', "true");
- $(showCalendarsBtn).find('span').first().text(visible ? Messages.calendar_hide : Messages.calendar_show);
- }).appendTo($showContainer);
+ $(showCalendarsBtn).click(() => {
+ visible = !visible;
+ $contentContainer.toggle(visible);
+ iconClass = visible ? 'fa-eye-slash' : 'fa-eye';
+ buttonText = visible ? Messages.calendar_hide : Messages.calendar_show;
+ $(showCalendarsBtn).find('i').attr('class', 'fa ' + iconClass).attr('aria-hidden', "true");
+ $(showCalendarsBtn).find('span').first().text(visible ? Messages.calendar_hide : Messages.calendar_show);
+ }).appendTo($showContainer);
+ }
+ else {visible = true;}
}
- else {visible = true;}
- }
$contentContainer.toggle(visible);
$(window).resize(function () {
From e1c5285f608edb3ef1c312480ad0c3673e31f25b Mon Sep 17 00:00:00 2001
From: yflory
Date: Mon, 9 Dec 2024 15:19:41 +0100
Subject: [PATCH 114/143] Fix initial calendar visibility on small screens
---
www/calendar/inner.js | 8 ++++++--
www/common/outer/calendar.js | 2 +-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/www/calendar/inner.js b/www/calendar/inner.js
index 8c6bf7317..0994dbb6a 100644
--- a/www/calendar/inner.js
+++ b/www/calendar/inner.js
@@ -928,7 +928,9 @@ define([
});
});
if(isMobileView) {
- if (totalCalendars > 2) {
+ // If initial number of calendars or current number > 2,
+ // hide the calendars list and display a "show" button
+ if (APP.numberCalendars > 2 || totalCalendars > 2) {
var $showContainer = $(h('div.cp-calendar-entry.cp-ghost')).appendTo($calendars);
var iconClass = visible ? 'fa-eye-slash' : 'fa-eye';
var buttonText = visible ? Messages.calendar_hide : Messages.calendar_show;
@@ -2389,7 +2391,9 @@ APP.recurrenceRule = {
});
var store = window.cryptpadStore;
APP.module.execCommand('SUBSCRIBE', null, function (obj) {
- if (obj.empty && !privateData.calendarHash) {
+ let empty = !obj.length;
+ APP.numberCalendars = obj.length;
+ if (empty && !privateData.calendarHash) {
if (!privateData.loggedIn) {
return void UI.errorLoadingScreen(Messages.mustLogin, false, function () {
common.setLoginRedirect('login');
diff --git a/www/common/outer/calendar.js b/www/common/outer/calendar.js
index 21bff21ff..4d9d88aea 100644
--- a/www/common/outer/calendar.js
+++ b/www/common/outer/calendar.js
@@ -599,7 +599,7 @@ define([
ctx.clients.push(cId);
}
cb({
- empty: !Object.keys(ctx.calendars).length
+ length: Object.keys(ctx.calendars).length
});
Object.keys(ctx.calendars).forEach(function (channel) {
var c = ctx.calendars[channel] || {};
From 0b960439caafdeeadc6f46def8dfc8da23ae703c Mon Sep 17 00:00:00 2001
From: yflory
Date: Mon, 9 Dec 2024 15:58:46 +0100
Subject: [PATCH 115/143] Fix multi-level nodes for pad table .md export
---
www/pad/export.js | 57 +++++++++++++++++++----------------------------
1 file changed, 23 insertions(+), 34 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index aac4ae4aa..a4bda9599 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -94,6 +94,18 @@ define([
return void cb(blob);
}
if (ext === ".md") {
+ let strikethrough = {
+ filter: ['s', 'del', 'strike'],
+ replacement: function (content) {
+ return '~' + content + '~';
+ }
+ };
+ let underline = {
+ filter: ['u'],
+ replacement: function (content) {
+ return '' + content + '';
+ }
+ };
var md = Turndown({
headingStyle: 'atx'
}).addRule('table', {
@@ -111,29 +123,15 @@ define([
for (var i =0; i < rowLength; i++) {
var cell = rowContent[i];
var cellContent = Array.from(cell.childNodes);
- if (cellContent.length > 1) {
- var cellString = '';
- cellContent.forEach(function(string) {
- var stringContent = string.childNodes.length ? string.innerHTML : string.textContent;
- if (string.nodeType === 3) {
- cellString += stringContent;
- } else if (string.nodeName === "BR") {
- cellString += ' ';
- } else if (string.nodeName === "EM") {
- cellString += '' + stringContent + '';
- } else if (string.nodeName === "STRONG") {
- cellString += '' + stringContent + '';
- } else if (string.nodeName === "U") {
- cellString += '' + stringContent + '';
- } else if (string.nodeName === "S") {
- cellString += '~' + stringContent + '~';
- }
- });
- row += cellString + ' |';
- } else if (cellContent[0].nodeName === "BR") {
- row += '| |';
- } else {
- row += cellContent[0].innerHTML + ' |';
+ if ((cellContent.length === 1 && cellContent[0].nodeName === "BR") || !cellContent.length) {
+ row += '|';
+ } else if (cellContent.length >= 1) {
+ row += Turndown({
+ headingStyle: 'atx'
+ }).addRule('strikethrough', strikethrough)
+ .addRule('underline', underline)
+ .turndown(cell.innerHTML).replaceAll('\n', ' ');
+ row += '|';
}
}
var newRow = row.concat('\n');
@@ -146,17 +144,8 @@ define([
});
});
return table;
- }}).addRule('strikethrough', {
- filter: ['s', 'del', 'strike'],
- replacement: function (content) {
- return '~' + content + '~';
- }
- }).addRule('strikethrough', {
- filter: ['u'],
- replacement: function (content) {
- return '' + content + '';
- }
- })
+ }}).addRule('strikethrough', strikethrough)
+ .addRule('underline', underline)
.turndown(toExport);
var mdBlob = new Blob([md], {
type: 'text/markdown;charset=utf-8'
From c10bf97e756a608962b38a7d62372f8c06d88543 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Mon, 9 Dec 2024 18:17:55 +0100
Subject: [PATCH 116/143] .cp-creation-form>div styling
---
customize.dist/src/less2/include/creation.less | 1 -
1 file changed, 1 deletion(-)
diff --git a/customize.dist/src/less2/include/creation.less b/customize.dist/src/less2/include/creation.less
index d200558af..5dbce1046 100644
--- a/customize.dist/src/less2/include/creation.less
+++ b/customize.dist/src/less2/include/creation.less
@@ -160,7 +160,6 @@
max-width: 100%;
display: flex;
align-items: center;
- flex-wrap: wrap;
font-size: 16px;
//margin: 10px 0;
min-height: 28px;
From 2a693e3a9086692f0e87a0ff036f99ff3cccbb93 Mon Sep 17 00:00:00 2001
From: daria
Date: Tue, 10 Dec 2024 14:24:50 +0200
Subject: [PATCH 117/143] move notifications styles to the correct
file(`notifications.less`)
---
.../src/less2/include/dropdown.less | 12 -----------
.../src/less2/include/notifications.less | 20 +++++++++++++++++++
2 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/customize.dist/src/less2/include/dropdown.less b/customize.dist/src/less2/include/dropdown.less
index 00d1d35ed..ee63ab5bc 100644
--- a/customize.dist/src/less2/include/dropdown.less
+++ b/customize.dist/src/less2/include/dropdown.less
@@ -167,18 +167,6 @@
background-color: @cp_dropdown-bg-hover;
}
}
- li[role="menuitem"].cp-notification-avatar {
- &:hover {
- background-color: transparent;
- }
- .cp-avatar:hover {
- background-color: @cp_dropdown-bg-hover;
- }
- .cp-notification-content:hover {
- border-radius: @variables_radius;
- background-color: @cp_dropdown-bg-hover;
- }
- }
&> span {
box-sizing: border-box;
height: 26px;
diff --git a/customize.dist/src/less2/include/notifications.less b/customize.dist/src/less2/include/notifications.less
index 6a69b8beb..81e5fb5f8 100644
--- a/customize.dist/src/less2/include/notifications.less
+++ b/customize.dist/src/less2/include/notifications.less
@@ -97,6 +97,26 @@
margin: 0;
}
}
+ .cp-dropdown-container .cp-dropdown-content {
+ li[role="menuitem"]{
+ .cp-notification-dismiss:hover {
+ border-radius: @variables_radius;
+ background-color: @cp_dropdown-bg-hover;
+ }
+ }
+ li[role="menuitem"].cp-notification-avatar {
+ &:hover {
+ background-color: transparent;
+ }
+ .cp-avatar:hover {
+ background-color: @cp_dropdown-bg-hover;
+ }
+ .cp-notification-content:hover {
+ border-radius: @variables_radius;
+ background-color: @cp_dropdown-bg-hover;
+ }
+ }
+ }
}
From 8b5df20220bea3f5d6313c7e0697d51f6659d701 Mon Sep 17 00:00:00 2001
From: zuzanna-maria
Date: Tue, 10 Dec 2024 13:44:24 +0100
Subject: [PATCH 118/143] Fixes
---
www/common/make-backup.js | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/www/common/make-backup.js b/www/common/make-backup.js
index fd2145ee2..75bd19b78 100644
--- a/www/common/make-backup.js
+++ b/www/common/make-backup.js
@@ -171,8 +171,7 @@ define([
}
var href;
var parsed;
- var linkRegex = new RegExp("^(http|https)://");
- if (fData.href && linkRegex.test(fData.href)) {
+ if (!fData.channel) {
href = fData.href;
parsed = {};
parsed['hashData'] = {type: 'link'};
@@ -312,28 +311,23 @@ define([
var existingNames = [];
Object.keys(root).forEach(function (k) {
var el = root[k];
- let staticData;
if (typeof el === "object" && el.metadata !== true) { // if folder
var fName = getUnique(sanitize(k), '', existingNames);
existingNames.push(fName.toLowerCase());
return void makeFolder(ctx, el, zip.folder(fName), fd, sd);
}
if (ctx.data.sharedFolders[el]) { // if shared folder
- staticData = ctx.sf[el].static;
+ let staticData = ctx.sf[el].static;
var sfData = ctx.sf[el].metadata;
var sfName = getUnique(sanitize((sfData && sfData.title) || 'Folder'), '', existingNames);
existingNames.push(sfName.toLowerCase());
return void makeFolder(ctx, ctx.sf[el].root, zip.folder(sfName), ctx.sf[el].filesData, staticData);
}
- var fData = fd[el];
- var sData = sd ? sd[el] : undefined;
+ var fData = fd[el] || (sd && sd[el]);
if (fData) {
addFile(ctx, zip, fData, existingNames);
return;
- } else if (sData) {
- addFile(ctx, zip, sData, existingNames);
- return;
- }
+ }
});
};
@@ -359,14 +353,11 @@ define([
var filesData = data.sharedFolderId && ctx.sf[data.sharedFolderId] ? ctx.sf[data.sharedFolderId].filesData : ctx.data.filesData;
var links = ctx.sf[data.sharedFolderId] && ctx.sf[data.sharedFolderId].static ? ctx.data.static && ctx.sf[data.sharedFolderId].static : ctx.data.static;
- Object.keys(links).forEach(function(key) {
- filesData[key] = links[key];
- });
progress('reading', -1); // Msg.settings_export_reading
nThen(function (waitFor) {
ctx.waitFor = waitFor;
var zipRoot = ctx.zip.folder(data.name || Messages.fm_rootName);
- makeFolder(ctx, ctx.folder || ctx.data.root, zipRoot, filesData);
+ makeFolder(ctx, ctx.folder || ctx.data.root, zipRoot, filesData, links);
progress('download', {}); // Msg.settings_export_download
}).nThen(function () {
console.log(ctx.zip);
From 6c4fa5fbefa35d778743c58db1ae136723a450b8 Mon Sep 17 00:00:00 2001
From: daria
Date: Tue, 10 Dec 2024 14:45:34 +0200
Subject: [PATCH 119/143] fix bug preventing kanban board movement
---
www/kanban/jkanban_cp.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/kanban/jkanban_cp.js b/www/kanban/jkanban_cp.js
index 95e92325a..47ea2a2ba 100644
--- a/www/kanban/jkanban_cp.js
+++ b/www/kanban/jkanban_cp.js
@@ -254,7 +254,7 @@ define([
accepts: function (el, target, source, sibling) {
if (self.options.readOnly) { return false; }
if (sibling && sibling.getAttribute('id') === "kanban-addboard") { return false; }
- return target.classList.contains('kanban-container') ||
+ return target.classList.contains('kanban-boards-container') ||
target.classList.contains('kanban-trash');
},
revertOnSpill: true,
From ef3ff95bab820f37b62b0c4cf2af71b789b8429a Mon Sep 17 00:00:00 2001
From: yflory
Date: Tue, 10 Dec 2024 17:21:13 +0100
Subject: [PATCH 120/143] Fix margin issues in form creation screen
---
.../src/less2/include/creation.less | 19 +++++++++----------
www/common/common-ui-elements.js | 2 +-
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/customize.dist/src/less2/include/creation.less b/customize.dist/src/less2/include/creation.less
index 5dbce1046..f61f20d90 100644
--- a/customize.dist/src/less2/include/creation.less
+++ b/customize.dist/src/less2/include/creation.less
@@ -69,7 +69,7 @@
outline: none;
width: 700px;
max-width: 90vw;
- height: 500px;
+ //height: 500px;
border-radius: @variables_radius_L;
max-height: ~"calc(100vh - 20px)";
margin: 0px;
@@ -85,6 +85,7 @@
}
.cp-creation-checkboxes {
+ min-width: 300px;
flex-flow: column;
align-items: baseline !important;
max-height: 150px;
@@ -156,7 +157,7 @@
flex: 1 0 auto;
justify-content: space-around;
& > div {
- width: 300px;
+ //width: 300px;
max-width: 100%;
display: flex;
align-items: center;
@@ -291,11 +292,11 @@
}
}
}
- .cp-creation-password-warning {
- margin-top: 0.4rem;
- font-size: 0.75em;
- line-height: 120%;
- }
+ }
+ .cp-creation-password-warning {
+ font-size: 0.75em;
+ line-height: 120%;
+ margin: 0.4rem 1rem calc(0.4rem + 6px);
}
.cp-creation-settings {
button {
@@ -425,7 +426,6 @@
#cp-creation-form {
& > div {
width: 95%;
- margin: 0 auto;
}
.cp-creation-expire {
&.active {
@@ -435,7 +435,6 @@
.cp-creation-slider {
flex: none;
order: 10;
- width: 100%;
}
}
}
@@ -444,7 +443,7 @@
}
@media screen and (max-width: 800px) {
#cp-creation {
- height: 550px;
+ //height: 550px;
#cp-creation-form {
div.cp-creation-template {
flex-flow: column;
diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js
index c2dc088fc..da840dfc4 100644
--- a/www/common/common-ui-elements.js
+++ b/www/common/common-ui-elements.js
@@ -2782,7 +2782,6 @@ define([
type: "text" // TODO type password with click to show
}),*/
]),
- text,
//createHelper('#', "TODO: password protection adds another layer of security ........") // TODO
]);
@@ -2813,6 +2812,7 @@ define([
expire,
password,
]),
+ text,
templates,
createDiv
])).appendTo($creation);
From a5b2fe7a68d14b901576b57c952772aa90b219ab Mon Sep 17 00:00:00 2001
From: yflory
Date: Tue, 10 Dec 2024 17:43:55 +0100
Subject: [PATCH 121/143] Reorder DOM when updating kanban boards
---
www/kanban/app-kanban.less | 3 ---
www/kanban/jkanban_cp.js | 23 ++++++++++++++++-------
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/www/kanban/app-kanban.less b/www/kanban/app-kanban.less
index 86e0f00c8..86e1052b5 100644
--- a/www/kanban/app-kanban.less
+++ b/www/kanban/app-kanban.less
@@ -576,9 +576,6 @@
display: flex;
max-height: 100%;
}
- .kanban-boards-container{
- display: flex;
- }
}
#kanban-trash {
height: 1px;
diff --git a/www/kanban/jkanban_cp.js b/www/kanban/jkanban_cp.js
index 47ea2a2ba..f6411e36e 100644
--- a/www/kanban/jkanban_cp.js
+++ b/www/kanban/jkanban_cp.js
@@ -109,19 +109,17 @@ define([
//create container
var boardContainerOuter = document.createElement('div');
boardContainerOuter.classList.add('kanban-container-outer');
- var kanbanContainer = document.createElement('div');
- kanbanContainer.classList.add('kanban-container');
- boardContainerOuter.appendChild(kanbanContainer);
var boardContainer = document.createElement('div');
- boardContainer.classList.add('kanban-boards-container');
- kanbanContainer.appendChild(boardContainer);
+ boardContainer.setAttribute('id', 'kanban-container');
+ boardContainer.classList.add('kanban-container');
+ boardContainerOuter.appendChild(boardContainer);
self.container = boardContainer;
//add boards
self.addBoards();
var addBoard = document.createElement('div');
addBoard.id = 'kanban-addboard';
addBoard.innerHTML = '';
- kanbanContainer.appendChild(addBoard);
+ boardContainer.appendChild(addBoard);
var trash = self.trashContainer = document.createElement('div');
trash.setAttribute('id', 'kanban-trash');
trash.setAttribute('class', 'kanban-trash');
@@ -254,7 +252,7 @@ define([
accepts: function (el, target, source, sibling) {
if (self.options.readOnly) { return false; }
if (sibling && sibling.getAttribute('id') === "kanban-addboard") { return false; }
- return target.classList.contains('kanban-boards-container') ||
+ return target.classList.contains('kanban-container') ||
target.classList.contains('kanban-trash');
},
revertOnSpill: true,
@@ -740,6 +738,15 @@ define([
return boardNode;
};
+
+ let reorder = () => {
+ // Push "add" button to the end of the list
+ let add = document.getElementById('kanban-addboard');
+ let list = document.getElementById('kanban-container');
+ if (!add || !list) { return; }
+ list.appendChild(add);
+ };
+
this.addBoard = function (board) {
if (!board || !board.id) { return; }
// We need to store all the columns in _boards too because it's used to
@@ -760,6 +767,7 @@ define([
_boards.list.push(board.id);
var boardNode = getBoardNode(board);
self.container.appendChild(boardNode);
+ reorder();
};
this.addBoards = function() {
@@ -827,6 +835,7 @@ define([
$('.kanban-board[data-id="'+id+'"] .kanban-drag').scrollTop(scroll[id]);
});
$el.scrollLeft(scrollLeft);
+ reorder();
};
// If the tab is not focused, redraw on focus
From 556135bddacba98a4dcb15cdcecf156d5856cde6 Mon Sep 17 00:00:00 2001
From: yflory
Date: Tue, 10 Dec 2024 17:48:49 +0100
Subject: [PATCH 122/143] Add missing pipes in pad tables markdown export
---
www/pad/export.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/www/pad/export.js b/www/pad/export.js
index a4bda9599..5e5a23689 100644
--- a/www/pad/export.js
+++ b/www/pad/export.js
@@ -118,7 +118,7 @@ define([
var rowContent = Array.from(childNode.childNodes);
var indexOf = Array.prototype.indexOf;
var index = childNodeArr.length > 1 ? indexOf.call(node.childNodes, rowNode) : indexOf.call(rowNode.childNodes, childNode);
- var row = '';
+ var row = '|';
var rowLength = rowContent.filter(Boolean).length;
for (var i =0; i < rowLength; i++) {
var cell = rowContent[i];
@@ -137,7 +137,7 @@ define([
var newRow = row.concat('\n');
if (index === 0) {
var separator = '|-';
- newRow += `${separator.repeat(rowLength)}\n`;
+ newRow += `${separator.repeat(rowLength)}|\n`;
}
table += newRow;
return newRow;
From d174b66243b060607bc2f15ded4562187b4aeb9a Mon Sep 17 00:00:00 2001
From: mathilde-cryptpad <156299270+mathilde-cryptpad@users.noreply.github.com>
Date: Wed, 11 Dec 2024 10:08:47 +0100
Subject: [PATCH 123/143] update version in docker-compose.yml
---
docker-compose.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-compose.yml b/docker-compose.yml
index b959a25be..49a81a25b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,7 +5,7 @@
---
services:
cryptpad:
- image: "cryptpad/cryptpad:version-2024.9.0"
+ image: "cryptpad/cryptpad:version-2024.12.0"
hostname: cryptpad
environment:
From c3ed6adfe5f2ed822041b85d6710675a19695722 Mon Sep 17 00:00:00 2001
From: mathilde-cryptpad <156299270+mathilde-cryptpad@users.noreply.github.com>
Date: Wed, 11 Dec 2024 10:09:30 +0100
Subject: [PATCH 124/143] update version in package.json
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index f236c225a..bc66cddf7 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "cryptpad",
"description": "a collaborative office suite that is end-to-end encrypted and open-source",
- "version": "2024.9.1",
+ "version": "2024.12.0",
"license": "AGPL-3.0+",
"repository": {
"type": "git",
From 3621d37dbc628112a3b1ac4047f32c4ff57cc6e5 Mon Sep 17 00:00:00 2001
From: mathilde-cryptpad <156299270+mathilde-cryptpad@users.noreply.github.com>
Date: Wed, 11 Dec 2024 10:10:16 +0100
Subject: [PATCH 125/143] add 2024.12.0 version to issue template
---
.github/ISSUE_TEMPLATE/bug_resolution.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/ISSUE_TEMPLATE/bug_resolution.yml b/.github/ISSUE_TEMPLATE/bug_resolution.yml
index b5a3b276e..646eeda4b 100644
--- a/.github/ISSUE_TEMPLATE/bug_resolution.yml
+++ b/.github/ISSUE_TEMPLATE/bug_resolution.yml
@@ -89,6 +89,7 @@ body:
label: Version
description: What version of CryptPad are you running?
options:
+ - 2024.12.0
- 2024.9.0
- 2024.6.1
- 2024.6.0
From d89d0d24c1efd28a9347e080584e46d568ac9dab Mon Sep 17 00:00:00 2001
From: mathilde-cryptpad <156299270+mathilde-cryptpad@users.noreply.github.com>
Date: Wed, 11 Dec 2024 10:10:41 +0100
Subject: [PATCH 126/143] remove v5.x versions from issue template
---
.github/ISSUE_TEMPLATE/bug_resolution.yml | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/bug_resolution.yml b/.github/ISSUE_TEMPLATE/bug_resolution.yml
index 646eeda4b..5f9472452 100644
--- a/.github/ISSUE_TEMPLATE/bug_resolution.yml
+++ b/.github/ISSUE_TEMPLATE/bug_resolution.yml
@@ -95,16 +95,6 @@ body:
- 2024.6.0
- 2024.3.1
- 2024.3.0
- - 5.7.0
- - 5.6.0
- - 5.5.0
- - 5.4.1
- - 5.4.0
- - 5.3.0
- - 5.2.1
- - 5.2.0
- - 5.1.0
- - 5.0.0
- Other
validations:
required: true
From b5b297f908338e6aa04c57e681c8e7177c6f7898 Mon Sep 17 00:00:00 2001
From: mathilde-cryptpad <156299270+mathilde-cryptpad@users.noreply.github.com>
Date: Wed, 11 Dec 2024 10:12:57 +0100
Subject: [PATCH 127/143] update version in package-lock.json
---
package-lock.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index f5038d672..f2c348c8a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "cryptpad",
- "version": "2024.9.1",
+ "version": "2024.12.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "cryptpad",
- "version": "2024.9.1",
+ "version": "2024.12.0",
"license": "AGPL-3.0+",
"dependencies": {
"@mcrowe/minibloom": "^0.2.0",
From 89c53dc4ab3c89c5adc7ecbe93fee703faf1065c Mon Sep 17 00:00:00 2001
From: Wolfgang Ginolas
Date: Wed, 11 Dec 2024 11:47:28 +0100
Subject: [PATCH 128/143] WIP
---
www/common/onlyoffice/inner.js | 72 +++++++++++++++++++++++++++++++---
1 file changed, 66 insertions(+), 6 deletions(-)
diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js
index 12d95112a..90431fc4a 100644
--- a/www/common/onlyoffice/inner.js
+++ b/www/common/onlyoffice/inner.js
@@ -68,6 +68,7 @@ define([
var NEW_VERSION = 7; // version of the .bin, patches and ChainPad formats
var PENDING_TIMEOUT = 30000;
var CURRENT_VERSION = X2T.CURRENT_VERSION;
+ const HISTORY_KEEPER_INDEX_USER = 1;
//var READONLY_REFRESH_TO = 15000;
@@ -181,11 +182,25 @@ define([
});
};
- const getNewUserIndex = function () {
+ /**
+ * This function retrieves the highest `indexUser`/`index` value, when `latestIndexUser` is not set.
+ * This is case for older OO documents.
+ *
+ * @returns the higest `indexUser` value or `-Infinity`
+ */
+ const getHighestLegacyIndexUser = function() {
const ids = content.ids || {};
- const indexes = Object.values(ids).map((user) => user.index);
- const maxIndex = Math.max(...indexes);
- return maxIndex === -Infinity ? 1 : maxIndex+1;
+ const indexes = Object.values(ids)
+ .map((user) => user.index)
+ .filter(Boolean);
+ return Math.max(...indexes);
+ }
+
+ const getNextUserIndex = function () {
+ const latestIndexUser = content.latestIndexUser
+ ? content.latestIndexUser
+ : getHighestLegacyIndexUser();
+ return Math.max(latestIndexUser, HISTORY_KEEPER_INDEX_USER) + 1;
};
var setMyId = function () {
@@ -205,7 +220,6 @@ define([
var myId = getId();
ids[myId] = {
ooid: myOOId,
- index: getNewUserIndex(),
netflux: metadataMgr.getNetfluxId()
};
oldIds = JSON.parse(JSON.stringify(ids));
@@ -925,7 +939,53 @@ define([
: content.ids.length; // Assign an unused id to read-only users
};
- var getParticipants = function () {
+ const getParticipants = function () {
+ // Add an history keeper user to show that we're never alone
+ var hkId = Util.createRandomInteger();
+ const historyKeeper = [{
+ id: hkId,
+ idOriginal: String(hkId),
+ username: "History",
+ indexUser: HISTORY_KEEPER_INDEX_USER,
+ connectionId: Hash.createChannelId(),
+ isCloseCoAuthoring:false,
+ view: false
+ }];
+
+ const other = content.ids.map(user => ({
+ id: String(user.ooId),
+ idOriginal: String(user.ooId),
+ username: TODO user.name || Messages.anonymous,
+ indexUser: user.index,
+ connectionId: user.netflux || Hash.createChannelId(),
+ isCloseCoAuthoring: false,
+ view: false
+ }));
+
+ const myOOIndex = getNextUserIndex();
+
+ const me = [{
+ id: String(myOOId),
+ idOriginal: String(myOOId),
+ username: metadataMgr.getUserData().name || Messages.anonymous,
+ indexUser: myOOIndex,
+ connectionId: metadataMgr.getNetfluxId() || Hash.createChannelId(),
+ isCloseCoAuthoring:false,
+ view: false
+ }];
+
+
+
+
+
+ return {
+ index: myOOIndex,
+ list: p.filter(Boolean)
+ };
+ };
+
+ // TODO remove me
+ var getParticipantsOld = function () {
var users = metadataMgr.getMetadata().users;
var i = 1;
var p = Object.keys(content.ids || {}).map(function (id) {
From 946cbe8a834af8deece507d1be390388c04336ae Mon Sep 17 00:00:00 2001
From: Wolfgang Ginolas
Date: Wed, 11 Dec 2024 14:39:28 +0100
Subject: [PATCH 129/143] WIP getPaticipants finished, but editing is broken
---
www/common/onlyoffice/inner.js | 65 ++++++++++++++++------------------
1 file changed, 31 insertions(+), 34 deletions(-)
diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js
index 90431fc4a..3321d7edc 100644
--- a/www/common/onlyoffice/inner.js
+++ b/www/common/onlyoffice/inner.js
@@ -73,6 +73,7 @@ define([
//var READONLY_REFRESH_TO = 15000;
var debug = function (x, type) {
+ console.log('XXX debug', type, x);
if (!window.CP_DEV_MODE) { return; }
console.debug(x, type);
};
@@ -160,6 +161,7 @@ define([
Object.keys(ids).forEach(function (id) {
var nId = id.slice(0,32);
if (users.indexOf(nId) === -1) {
+ console.log('XXX deleteOffline', { nId, id });
delete ids[id];
}
});
@@ -188,13 +190,13 @@ define([
*
* @returns the higest `indexUser` value or `-Infinity`
*/
- const getHighestLegacyIndexUser = function() {
- const ids = content.ids || {};
+ const getHighestLegacyIndexUser = function () {
+ const ids = content.ids || {};
const indexes = Object.values(ids)
.map((user) => user.index)
.filter(Boolean);
return Math.max(...indexes);
- }
+ };
const getNextUserIndex = function () {
const latestIndexUser = content.latestIndexUser
@@ -204,25 +206,33 @@ define([
};
var setMyId = function () {
- // Remove ids for users that have left the channel
- deleteOffline();
- var ids = content.ids;
+ deleteOffline(); // Remove ids for users that have left the channel
+ console.log('XXX setMyId start', { content: structuredClone(content) });
+ const ids = content.ids;
if (!myOOId) {
myOOId = Util.createRandomInteger();
// f: function used in .some(f) but defined outside of the while
var f = function (id) {
return ids[id].ooid === myOOId;
};
+ // TODO Object.keys(ids) is incorrect here
while (Object.keys(ids).some(f)) {
myOOId = Util.createRandomInteger();
}
}
- var myId = getId();
+
+ const myId = getId();
+ const myIndex = getNextUserIndex();
+
ids[myId] = {
ooid: myOOId,
+ index: myIndex,
netflux: metadataMgr.getNetfluxId()
};
- oldIds = JSON.parse(JSON.stringify(ids));
+
+ content.latestIndexUser = myIndex;
+ oldIds = structuredClone(ids);
+ console.log('XXX setMyId end', { myOOId, myIndex, content: structuredClone(content) });
APP.onLocal();
};
@@ -934,16 +944,16 @@ define([
const getMyOOIndex = function() {
const user = findUserByOOId(myOOId);
- return user
- ? user.index
- : content.ids.length; // Assign an unused id to read-only users
+ return user.index;
};
const getParticipants = function () {
+ const users = metadataMgr.getMetadata().users;
+ console.log('XXX getParticipants', users);
// Add an history keeper user to show that we're never alone
var hkId = Util.createRandomInteger();
const historyKeeper = [{
- id: hkId,
+ id: String(hkId),
idOriginal: String(hkId),
username: "History",
indexUser: HISTORY_KEEPER_INDEX_USER,
@@ -952,35 +962,22 @@ define([
view: false
}];
- const other = content.ids.map(user => ({
- id: String(user.ooId),
- idOriginal: String(user.ooId),
- username: TODO user.name || Messages.anonymous,
+ const realParticipants = Object.entries(content.ids).map(([id, user]) => ({
+ id: String(user.ooid),
+ idOriginal: String(user.ooid),
+ username: (users[id.slice(0, 32)] || {}).name || Messages.anonymous,
indexUser: user.index,
connectionId: user.netflux || Hash.createChannelId(),
isCloseCoAuthoring: false,
view: false
}));
- const myOOIndex = getNextUserIndex();
-
- const me = [{
- id: String(myOOId),
- idOriginal: String(myOOId),
- username: metadataMgr.getUserData().name || Messages.anonymous,
- indexUser: myOOIndex,
- connectionId: metadataMgr.getNetfluxId() || Hash.createChannelId(),
- isCloseCoAuthoring:false,
- view: false
- }];
-
-
-
-
+ const participants = historyKeeper.concat(realParticipants);
+ console.log('XXX getParticipants end', participants);
return {
- index: myOOIndex,
- list: p.filter(Boolean)
+ index: getMyOOIndex(),
+ list: participants,
};
};
@@ -3469,7 +3466,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null
if (content.ids) {
handleNewIds(oldIds, content.ids);
- oldIds = JSON.parse(JSON.stringify(content.ids));
+ oldIds = structuredClone(content.ids);
}
if (content.locks) {
handleNewLocks(oldLocks, content.locks);
From 18b878bd9fc070cb99822cfcb77ae07819b044ce Mon Sep 17 00:00:00 2001
From: Wolfgang Ginolas
Date: Wed, 11 Dec 2024 15:12:07 +0100
Subject: [PATCH 130/143] editing works
---
www/common/onlyoffice/inner.js | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js
index 3321d7edc..71c61bec2 100644
--- a/www/common/onlyoffice/inner.js
+++ b/www/common/onlyoffice/inner.js
@@ -230,6 +230,10 @@ define([
netflux: metadataMgr.getNetfluxId()
};
+ if (!myUniqueOOId) {
+ myUniqueOOId = String(myOOId) + myIndex;
+ }
+
content.latestIndexUser = myIndex;
oldIds = structuredClone(ids);
console.log('XXX setMyId end', { myOOId, myIndex, content: structuredClone(content) });
@@ -1035,13 +1039,17 @@ define([
var type = common.getMetadataMgr().getPrivateData().ooType;
content.locks = content.locks || {};
var l = content.locks[id] || {};
+ console.log('XXX getUserLock l', structuredClone(l));
if (type === "sheet" || forceArray) {
- return Object.keys(l).map(function (uid) { return l[uid]; });
+ const res = Object.keys(l).map(function (uid) { return l[uid]; });
+ console.log('XXX getUserLock result', structuredClone(res));
+ return res;
}
var res = {};
Object.keys(l).forEach(function (uid) {
res[uid] = l[uid];
});
+ console.log('XXX getUserLock result', structuredClone(res));
return res;
};
var getLock = function () {
@@ -1051,12 +1059,14 @@ define([
Object.keys(content.locks || {}).forEach(function (id) {
Array.prototype.push.apply(locks, getUserLock(id));
});
+ console.log('XXX getLock result', structuredClone(locks));
return locks;
}
locks = {};
Object.keys(content.locks || {}).forEach(function (id) {
Util.extend(locks, getUserLock(id));
});
+ console.log('XXX getLock result', structuredClone(locks));
return locks;
};
From f8c57ff3e7ba7980f45f3f068155e49faf279809 Mon Sep 17 00:00:00 2001
From: Wolfgang Ginolas
Date: Wed, 11 Dec 2024 16:11:37 +0100
Subject: [PATCH 131/143] Use random value for indexUser
---
www/common/onlyoffice/inner.js | 98 +++++++---------------------------
1 file changed, 20 insertions(+), 78 deletions(-)
diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js
index 71c61bec2..422f55427 100644
--- a/www/common/onlyoffice/inner.js
+++ b/www/common/onlyoffice/inner.js
@@ -69,6 +69,7 @@ define([
var PENDING_TIMEOUT = 30000;
var CURRENT_VERSION = X2T.CURRENT_VERSION;
const HISTORY_KEEPER_INDEX_USER = 1;
+ const READ_ONLY_INDEX_USER = 2;
//var READONLY_REFRESH_TO = 15000;
@@ -184,25 +185,12 @@ define([
});
};
- /**
- * This function retrieves the highest `indexUser`/`index` value, when `latestIndexUser` is not set.
- * This is case for older OO documents.
- *
- * @returns the higest `indexUser` value or `-Infinity`
- */
- const getHighestLegacyIndexUser = function () {
- const ids = content.ids || {};
- const indexes = Object.values(ids)
- .map((user) => user.index)
- .filter(Boolean);
- return Math.max(...indexes);
- };
-
const getNextUserIndex = function () {
- const latestIndexUser = content.latestIndexUser
- ? content.latestIndexUser
- : getHighestLegacyIndexUser();
- return Math.max(latestIndexUser, HISTORY_KEEPER_INDEX_USER) + 1;
+ let nextUserIndex;
+ do {
+ nextUserIndex = Util.createRandomInteger();
+ } while (nextUserIndex === HISTORY_KEEPER_INDEX_USER || nextUserIndex === READ_ONLY_INDEX_USER);
+ return nextUserIndex;
};
var setMyId = function () {
@@ -234,7 +222,6 @@ define([
myUniqueOOId = String(myOOId) + myIndex;
}
- content.latestIndexUser = myIndex;
oldIds = structuredClone(ids);
console.log('XXX setMyId end', { myOOId, myIndex, content: structuredClone(content) });
APP.onLocal();
@@ -948,7 +935,7 @@ define([
const getMyOOIndex = function() {
const user = findUserByOOId(myOOId);
- return user.index;
+ return user ? user.index : READ_ONLY_INDEX_USER;
};
const getParticipants = function () {
@@ -966,15 +953,19 @@ define([
view: false
}];
- const realParticipants = Object.entries(content.ids).map(([id, user]) => ({
- id: String(user.ooid),
- idOriginal: String(user.ooid),
- username: (users[id.slice(0, 32)] || {}).name || Messages.anonymous,
- indexUser: user.index,
- connectionId: user.netflux || Hash.createChannelId(),
- isCloseCoAuthoring: false,
- view: false
- }));
+ const realParticipants = Object.entries(content.ids).map(([id, user]) => {
+ const nId = id.slice(0,32);
+ const username = (users[nId] || {}).name || Messages.anonymous;
+ return {
+ id: String(user.ooid),
+ idOriginal: String(user.ooid),
+ username,
+ indexUser: user.index,
+ connectionId: user.netflux || Hash.createChannelId(),
+ isCloseCoAuthoring: false,
+ view: false
+ };
+ });
const participants = historyKeeper.concat(realParticipants);
console.log('XXX getParticipants end', participants);
@@ -985,55 +976,6 @@ define([
};
};
- // TODO remove me
- var getParticipantsOld = function () {
- var users = metadataMgr.getMetadata().users;
- var i = 1;
- var p = Object.keys(content.ids || {}).map(function (id) {
- var nId = id.slice(0,32);
- if (!users[nId]) { return; }
- var ooId = content.ids[id].ooid;
- var idx = content.ids[id].index;
- if (!ooId || ooId === myOOId) { return; }
- if (idx >= i) { i = idx + 1; }
- return {
- id: String(ooId) + idx,
- idOriginal: String(ooId),
- username: (users[nId] || {}).name || Messages.anonymous,
- indexUser: idx,
- connectionId: content.ids[id].netflux || Hash.createChannelId(),
- isCloseCoAuthoring:false,
- view: false
- };
- });
- // Add an history keeper user to show that we're never alone
- var hkId = Util.createRandomInteger();
- p.push({
- id: hkId,
- idOriginal: String(hkId),
- username: "History",
- indexUser: i,
- connectionId: Hash.createChannelId(),
- isCloseCoAuthoring:false,
- view: false
- });
- const myOOIndex = getMyOOIndex();
- if (!myUniqueOOId) { myUniqueOOId = String(myOOId) + myOOIndex; }
- p.push({
- id: String(myOOId),
- idOriginal: String(myOOId),
- username: metadataMgr.getUserData().name || Messages.anonymous,
- indexUser: myOOIndex,
- connectionId: metadataMgr.getNetfluxId() || Hash.createChannelId(),
- isCloseCoAuthoring:false,
- view: false
- });
- return {
- index: myOOIndex,
- list: p.filter(Boolean)
- };
- };
-
// Get all existing locks
var getUserLock = function (id, forceArray) {
var type = common.getMetadataMgr().getPrivateData().ooType;
From fe1c029188986492faabe2ccb87b834cf3bb38bf Mon Sep 17 00:00:00 2001
From: yflory
Date: Wed, 11 Dec 2024 16:44:33 +0100
Subject: [PATCH 132/143] Fix 'Guest' users in OO
---
www/common/onlyoffice/inner.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js
index 422f55427..8e67d9b44 100644
--- a/www/common/onlyoffice/inner.js
+++ b/www/common/onlyoffice/inner.js
@@ -957,7 +957,7 @@ define([
const nId = id.slice(0,32);
const username = (users[nId] || {}).name || Messages.anonymous;
return {
- id: String(user.ooid),
+ id: String(user.ooid) + user.index,
idOriginal: String(user.ooid),
username,
indexUser: user.index,
From cd124a659e359c94c439096418cd531d3bd7c926 Mon Sep 17 00:00:00 2001
From: Wolfgang Ginolas
Date: Wed, 11 Dec 2024 16:50:58 +0100
Subject: [PATCH 133/143] Remove debug messages
---
www/common/onlyoffice/inner.js | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js
index 8e67d9b44..07c2ad1e3 100644
--- a/www/common/onlyoffice/inner.js
+++ b/www/common/onlyoffice/inner.js
@@ -74,7 +74,6 @@ define([
//var READONLY_REFRESH_TO = 15000;
var debug = function (x, type) {
- console.log('XXX debug', type, x);
if (!window.CP_DEV_MODE) { return; }
console.debug(x, type);
};
@@ -162,7 +161,6 @@ define([
Object.keys(ids).forEach(function (id) {
var nId = id.slice(0,32);
if (users.indexOf(nId) === -1) {
- console.log('XXX deleteOffline', { nId, id });
delete ids[id];
}
});
@@ -195,7 +193,6 @@ define([
var setMyId = function () {
deleteOffline(); // Remove ids for users that have left the channel
- console.log('XXX setMyId start', { content: structuredClone(content) });
const ids = content.ids;
if (!myOOId) {
myOOId = Util.createRandomInteger();
@@ -203,7 +200,6 @@ define([
var f = function (id) {
return ids[id].ooid === myOOId;
};
- // TODO Object.keys(ids) is incorrect here
while (Object.keys(ids).some(f)) {
myOOId = Util.createRandomInteger();
}
@@ -223,7 +219,6 @@ define([
}
oldIds = structuredClone(ids);
- console.log('XXX setMyId end', { myOOId, myIndex, content: structuredClone(content) });
APP.onLocal();
};
@@ -940,7 +935,6 @@ define([
const getParticipants = function () {
const users = metadataMgr.getMetadata().users;
- console.log('XXX getParticipants', users);
// Add an history keeper user to show that we're never alone
var hkId = Util.createRandomInteger();
const historyKeeper = [{
@@ -968,7 +962,6 @@ define([
});
const participants = historyKeeper.concat(realParticipants);
- console.log('XXX getParticipants end', participants);
return {
index: getMyOOIndex(),
@@ -981,17 +974,13 @@ define([
var type = common.getMetadataMgr().getPrivateData().ooType;
content.locks = content.locks || {};
var l = content.locks[id] || {};
- console.log('XXX getUserLock l', structuredClone(l));
if (type === "sheet" || forceArray) {
- const res = Object.keys(l).map(function (uid) { return l[uid]; });
- console.log('XXX getUserLock result', structuredClone(res));
- return res;
+ return Object.keys(l).map(function (uid) { return l[uid]; });
}
var res = {};
Object.keys(l).forEach(function (uid) {
res[uid] = l[uid];
});
- console.log('XXX getUserLock result', structuredClone(res));
return res;
};
var getLock = function () {
@@ -1001,14 +990,12 @@ define([
Object.keys(content.locks || {}).forEach(function (id) {
Array.prototype.push.apply(locks, getUserLock(id));
});
- console.log('XXX getLock result', structuredClone(locks));
return locks;
}
locks = {};
Object.keys(content.locks || {}).forEach(function (id) {
Util.extend(locks, getUserLock(id));
});
- console.log('XXX getLock result', structuredClone(locks));
return locks;
};
From 811ed1079210df24d5093b478be487e3fb45b56b Mon Sep 17 00:00:00 2001
From: yflory
Date: Thu, 12 Dec 2024 14:04:40 +0100
Subject: [PATCH 134/143] Fix merge issue with translation keys
---
customize.dist/messages.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/customize.dist/messages.js b/customize.dist/messages.js
index dac93c936..bb2073466 100755
--- a/customize.dist/messages.js
+++ b/customize.dist/messages.js
@@ -137,8 +137,6 @@ define(req, function(AppConfig, Default, Language) {
};
Messages.calendar_show = 'Show calendars'; // XXX
Messages.calendar_hide = 'Hide calendars'; // XXX
- Messages.admin_mfa_confirm_enable = "Are you sure you want to enable Multi-Factor Authentication?"; // XXX
- Messages.admin_mfa_confirm_disable = "Are you sure you want to disable Multi-Factor Authentication?"; // XXX
return Messages;
});
From a1d6218d1f4c75af0658b5f0b3ba636da90a35e0 Mon Sep 17 00:00:00 2001
From: yflory
Date: Thu, 12 Dec 2024 14:09:44 +0100
Subject: [PATCH 135/143] Update expressjs
---
package-lock.json | 20 ++++++++++++--------
package.json | 2 +-
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index f2c348c8a..7a13d510a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27,7 +27,7 @@
"croppie": "^2.5.0",
"dragula": "3.7.2",
"drawio": "github:cryptpad/drawio-npm#npm-21.8.2+5",
- "express": "~4.21.1",
+ "express": "~4.21.2",
"file-saver": "1.3.1",
"fs-extra": "^7.0.0",
"get-folder-size": "^2.0.1",
@@ -2199,9 +2199,9 @@
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
},
"node_modules/express": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
- "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
@@ -2222,7 +2222,7 @@
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.10",
+ "path-to-regexp": "0.1.12",
"proxy-addr": "~2.0.7",
"qs": "6.13.0",
"range-parser": "~1.2.1",
@@ -2237,6 +2237,10 @@
},
"engines": {
"node": ">= 0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/express/node_modules/encodeurl": {
@@ -3845,9 +3849,9 @@
}
},
"node_modules/path-to-regexp": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
- "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
},
"node_modules/picocolors": {
"version": "1.1.0",
diff --git a/package.json b/package.json
index bc66cddf7..9ddd23123 100644
--- a/package.json
+++ b/package.json
@@ -30,7 +30,7 @@
"croppie": "^2.5.0",
"dragula": "3.7.2",
"drawio": "github:cryptpad/drawio-npm#npm-21.8.2+5",
- "express": "~4.21.1",
+ "express": "~4.21.2",
"file-saver": "1.3.1",
"fs-extra": "^7.0.0",
"get-folder-size": "^2.0.1",
From 0afcc2120889213d94c0f4ea11895e5c0d4d920c Mon Sep 17 00:00:00 2001
From: yflory
Date: Thu, 12 Dec 2024 14:10:15 +0100
Subject: [PATCH 136/143] Update dependency
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7a13d510a..4c6655198 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3564,9 +3564,9 @@
"integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ=="
},
"node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"dev": true,
"funding": [
{
From a8c1d1e1b613cf91544db806c9fe9b30fff353db Mon Sep 17 00:00:00 2001
From: yflory
Date: Thu, 12 Dec 2024 14:30:39 +0100
Subject: [PATCH 137/143] Remove hardcoded translations
---
customize.dist/messages.js | 7 -------
1 file changed, 7 deletions(-)
diff --git a/customize.dist/messages.js b/customize.dist/messages.js
index 9e218dc11..be65e98a9 100755
--- a/customize.dist/messages.js
+++ b/customize.dist/messages.js
@@ -135,13 +135,6 @@ define(req, function(AppConfig, Default, Language) {
return text;
}
};
- Messages.form_passwordWarning = 'For Forms, you can only set the password during creation. It cannot be changed later.' // XXX
-
- Messages.form_passwordWarning = 'Please note that a Form password can only be set now at creation time and cannot be changed later.' // XXX
-
- Messages.fm_restoreMultipleDialog = "Are you sure you want to restore {0} files and/or folders to their previous locations?"; // XXX: new translation key
- Messages.calendar_show = 'Show calendars'; // XXX
- Messages.calendar_hide = 'Hide calendars'; // XXX
return Messages;
});
From 1d1c18c20ff2af7c4a92d1373c5333918e91b736 Mon Sep 17 00:00:00 2001
From: Weblate
Date: Thu, 12 Dec 2024 14:41:58 +0100
Subject: [PATCH 138/143] Translated using Weblate (English)
Currently translated at 100.0% (1787 of 1787 strings)
Co-authored-by: Yann Flory
Translate-URL: https://weblate.cryptpad.org/projects/cryptpad/app/en/
Translation: CryptPad/App
---
www/common/translations/messages.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/www/common/translations/messages.json b/www/common/translations/messages.json
index 548ce9200..fa940fb1f 100644
--- a/www/common/translations/messages.json
+++ b/www/common/translations/messages.json
@@ -1783,5 +1783,9 @@
"admin_onboardingDescPlaceholder": "Instance description text",
"team_autoTrim": "Trimming team drive history... Please wait.",
"admin_mfa_confirm_enable": "Are you sure you want to enable Multi-Factor Authentication?",
- "admin_mfa_confirm_disable": "Are you sure you want to disable Multi-Factor Authentication?"
+ "admin_mfa_confirm_disable": "Are you sure you want to disable Multi-Factor Authentication?",
+ "form_passwordWarning": "Please note that a Form password can only be set now at creation time and cannot be changed later.",
+ "fm_restoreMultipleDialog": "Are you sure you want to restore {0} files and/or folders to their previous locations?",
+ "calendar_show": "Show calendars",
+ "calendar_hide": "Hide calendars"
}
From f71f8a573dd1b47de1a9c2ddbdf26e4b96b28436 Mon Sep 17 00:00:00 2001
From: Weblate
Date: Thu, 12 Dec 2024 14:41:58 +0100
Subject: [PATCH 139/143] Translated using Weblate (German)
Currently translated at 100.0% (1787 of 1787 strings)
Co-authored-by: Fabrice Mouhartem
Translate-URL: https://weblate.cryptpad.org/projects/cryptpad/app/de/
Translation: CryptPad/App
---
www/common/translations/messages.de.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/www/common/translations/messages.de.json b/www/common/translations/messages.de.json
index 81b14ccc1..d5efe86a3 100644
--- a/www/common/translations/messages.de.json
+++ b/www/common/translations/messages.de.json
@@ -1783,5 +1783,9 @@
"admin_onboardingNameHint": "Bitte wähle einen Namen, eine Beschreibung, eine Akzentfarbe und ein Logo (alle Angaben sind optional)",
"team_autoTrim": "Verlauf des Team-Drives wird gelöscht... Bitte warten.",
"admin_mfa_confirm_enable": "Bist du sicher, dass du die Multi-Faktor-Authentifizierung aktivieren möchtest?",
- "admin_mfa_confirm_disable": "Bist du sicher, dass du die Multi-Faktor-Authentifizierung deaktivieren möchtest?"
+ "admin_mfa_confirm_disable": "Bist du sicher, dass du die Multi-Faktor-Authentifizierung deaktivieren möchtest?",
+ "fm_restoreMultipleDialog": "Bist du sicher, dass du {0} Dateien/Ordner zurück in den ursprünglichen Ordner verschieben möchtest?",
+ "calendar_show": "Kalender anzeigen",
+ "form_passwordWarning": "Bitte beachte, dass ein Formularpasswort nur zum Zeitpunkt der Erstellung festgelegt und später nicht mehr geändert werden kann.",
+ "calendar_hide": "Kalender verbergen"
}
From 6566ed2994be62c71c67284fde6ddfb87a7838ee Mon Sep 17 00:00:00 2001
From: Weblate
Date: Thu, 12 Dec 2024 14:41:58 +0100
Subject: [PATCH 140/143] Translated using Weblate (French)
Currently translated at 100.0% (1787 of 1787 strings)
Co-authored-by: Fabrice Mouhartem
Translate-URL: https://weblate.cryptpad.org/projects/cryptpad/app/fr/
Translation: CryptPad/App
---
www/common/translations/messages.fr.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/www/common/translations/messages.fr.json b/www/common/translations/messages.fr.json
index ad219842a..7b809d426 100644
--- a/www/common/translations/messages.fr.json
+++ b/www/common/translations/messages.fr.json
@@ -1783,5 +1783,9 @@
"install_notes": "- Créez votre premier compte administrateur·ice sur cette page. Les administrateur·ices peuvent paramétrer l'instance, ceci incluant les quotas de stockage, et ont accès aux outils de modération.
- Votre mot de passe est la clé secrète qui chiffre l'ensemble de vos documents et vos privilèges d'administration sur l'instance. Si vous le perdez il n'est pas possible de récupérer vos données.
- Si vous utilisez un ordinateur partagé, n'oubliez pas de vous déconnecter quand vous aurez terminé. Simplement fermer la fenêtre du navigateur web laisse votre compte exposé à des risques de sécurité.
",
"team_autoTrim": "Suppression de l'historique du drive d'équipe... Veuillez patienter.",
"admin_mfa_confirm_disable": "Êtes-vous sûr de vouloir désactiver l'authentification multi-facteur ?",
- "admin_mfa_confirm_enable": "Êtes-vous sûr de vouloir activer l'authentification multi-facteur ?"
+ "admin_mfa_confirm_enable": "Êtes-vous sûr de vouloir activer l'authentification multi-facteur ?",
+ "fm_restoreMultipleDialog": "Êtes-vous sûr·e de vouloir restaurer {0} fichiers et/ou dossiers à leurs emplacements précédents ?",
+ "calendar_hide": "Cacher les calendriers",
+ "calendar_show": "Afficher les calendriers",
+ "form_passwordWarning": "Veuillez noter qu'un mot de passe pour Formulaire peut uniquement être spécifié lors de la création du document et ne peut pas être changé plus tard."
}
From 7277117c43174b2164bb0bd96d8b8006178b6f52 Mon Sep 17 00:00:00 2001
From: David Benque
Date: Fri, 13 Dec 2024 13:27:34 +0000
Subject: [PATCH 141/143] Fix typo from #1662
---
readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/readme.md b/readme.md
index 2b3b92cea..a37e767ab 100644
--- a/readme.md
+++ b/readme.md
@@ -24,7 +24,7 @@ Configuring CryptPad for production requires additional steps. Refer to our [adm
## Current version
-The most recent version and all past release notes can be found on [releases page on GitHub](https://github.com/cryptpad/cryptpad/releases/).
+The most recent version and all past release notes can be found on the [releases page on GitHub](https://github.com/cryptpad/cryptpad/releases/).
## Setup using Docker
From 08dfdbda3c0a77530369027f9cb8397c55b3cf28 Mon Sep 17 00:00:00 2001
From: yflory
Date: Tue, 17 Dec 2024 12:09:05 +0100
Subject: [PATCH 142/143] Delete blob proof when associated blob doesn't exist
anymore
---
lib/eviction.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/eviction.js b/lib/eviction.js
index b747ba99f..95f430cdf 100644
--- a/lib/eviction.js
+++ b/lib/eviction.js
@@ -669,6 +669,7 @@ module.exports = function (Env, cb) {
if (item.mtime > inactiveTime) { return void next(); }
nThen(function (w) {
blobs.size(item.blobId, w(function (err, size) {
+ if (err && err === 'ENOENT') { return; } // XXX delete the proof
if (err) {
w.abort();
return void Log.error("EVICT_BLOB_LIST_PROOFS_ERROR", err, next);
From 337e2ba589fb79908e3c612469cc397e76f15c7f Mon Sep 17 00:00:00 2001
From: yflory
Date: Thu, 2 Jan 2025 10:59:37 +0100
Subject: [PATCH 143/143] Fix support issue
---
www/common/outer/support.js | 2 ++
www/support/ui.js | 1 +
2 files changed, 3 insertions(+)
diff --git a/www/common/outer/support.js b/www/common/outer/support.js
index 912fa5d23..20ee7200d 100644
--- a/www/common/outer/support.js
+++ b/www/common/outer/support.js
@@ -104,6 +104,7 @@ define([
msg = JSON.parse(msg);
} catch (e) {
console.error(e);
+ return; // Don't show "undefined" messages
}
msg.time = time;
if (author) { msg.author = author; }
@@ -232,6 +233,7 @@ define([
var anonRpc = Util.find(ctx, [ 'store', 'anon_rpc' ]);
if (!mailbox) { return void cb('E_NOT_READY'); }
if (!anonRpc) { return void cb("anonymous rpc session not ready"); }
+ if (!data?.ticket) { return void cb('E_NO_DATA'); }
var theirPublic, myCurve, notifKey;
var time;
nThen((waitFor) => {
diff --git a/www/support/ui.js b/www/support/ui.js
index 45dc74a44..b9e377c26 100644
--- a/www/support/ui.js
+++ b/www/support/ui.js
@@ -162,6 +162,7 @@ define([
var makeForm = function (ctx, opts, cb) {
let { oldData, recorded, title, hideNotice } = opts || {};
var button;
+ cb = Util.once(cb);
if (typeof(cb) === "function") {
button = h('button.btn.btn-primary.cp-support-list-send', Messages.contacts_send);
| |