From 91898e25a5ed6f8e883e919d7c6a50eb042f2423 Mon Sep 17 00:00:00 2001 From: grimhilt Date: Wed, 29 Mar 2023 16:23:24 +0200 Subject: [PATCH] improve syncing and storing --- back/db/mail.js | 12 + back/db/saveMessageApp.js | 5 +- back/db/structureV2.sql | 1 + back/mails/imap/Box.js | 32 +- back/mails/imap/ImapInstance.js | 10 +- back/mails/saveMessage.js | 49 ++- back/mails/storeMessage.js | 17 +- back/mails/utils/statusUtils.js | 24 +- back/package.json | 4 +- back/system/Logger.js | 45 +++ back/test/mail/utils/statusUtils-test.js | 40 ++ back/yarn.lock | 342 +++--------------- front/src/store/models/Room.js | 6 +- front/src/views/room/Message.vue | 1 + .../views/sidebar/rooms/threads/Thread.vue | 4 +- 15 files changed, 245 insertions(+), 347 deletions(-) create mode 100644 back/system/Logger.js create mode 100644 back/test/mail/utils/statusUtils-test.js diff --git a/back/db/mail.js b/back/db/mail.js index bb034b3..16467a4 100644 --- a/back/db/mail.js +++ b/back/db/mail.js @@ -22,8 +22,20 @@ async function findRoomByOwner(ownerId) { return await execQueryAsync(query, values); } +async function getUserIdOfMailbox(boxId) { + const query = ` + SELECT app_account.user_id + FROM mailbox + INNER JOIN app_account ON app_account.account_id = mailbox.account_id + WHERE mailbox.mailbox_id = ? + `; + const values = [boxId]; + return await execQueryAsync(query, values); +} + module.exports = { getAddresseId, getFieldId, findRoomByOwner, + getUserIdOfMailbox }; diff --git a/back/db/saveMessageApp.js b/back/db/saveMessageApp.js index 7cc11e6..c50748c 100644 --- a/back/db/saveMessageApp.js +++ b/back/db/saveMessageApp.js @@ -3,8 +3,9 @@ const { db, execQueryAsync, execQueryAsyncWithId, execQuery } = require("./db.js const { queryFromId, queryToId, queryCcId } = require("./utils/addressQueries.js"); async function createRoom(roomName, ownerId, messageId) { + if (!roomName) roomName = "No room name"; roomName = transformEmojis(roomName); - const query = `INSERT INTO app_room (room_name, owner_id, message_id) VALUES (?, ?, ?)`; + const query = `INSERT IGNORE INTO app_room (room_name, owner_id, message_id) VALUES (?, ?, ?)`; const values = [roomName.substring(0, 255), ownerId, messageId]; return await execQueryAsyncWithId(query, values); // todo add members @@ -54,7 +55,7 @@ function updateLastUpdateThread(threadId) { function incrementNotSeenThread(threadId) { // todo - // also increment parent room + // also increment root room } async function isRoomGroup(roomId) { diff --git a/back/db/structureV2.sql b/back/db/structureV2.sql index 11eb9fa..92adf9d 100644 --- a/back/db/structureV2.sql +++ b/back/db/structureV2.sql @@ -126,6 +126,7 @@ CREATE TABLE app_room ( notSeen INT NOT NULL DEFAULT 0, lastUpdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(), PRIMARY KEY (room_id), + UNIQUE KEY (owner_id, message_id, isGroup), FOREIGN KEY (owner_id) REFERENCES address(address_id), FOREIGN KEY (message_id) REFERENCES message(message_id) ); diff --git a/back/mails/imap/Box.js b/back/mails/imap/Box.js index 3502593..6574739 100644 --- a/back/mails/imap/Box.js +++ b/back/mails/imap/Box.js @@ -4,10 +4,10 @@ const { registerMessageInApp } = require("../saveMessage"); const { saveMessage } = require("../storeMessage"); class Box { - constructor(_imap, boxId, _boxName) { + constructor(_imap, _boxId, _boxName) { this.imap = _imap; this.boxName = _boxName; - this.id = boxId; + this.id = _boxId; this.box; this.init(); } @@ -25,6 +25,7 @@ class Box { sync(savedUid, currentUid) { const promises = []; const mails = []; + logger.log(`Syncing from ${savedUid} to ${currentUid} uid`); const f = this.imap.seq.fetch(`${savedUid}:${currentUid}`, { size: true, envelope: true, @@ -42,12 +43,29 @@ class Box { }); f.once("end", async () => { - await Promise.all(promises).then(async (res) => { - for (let i = 0; i < mails.length; i++) { - console.log(i, mails[i].uid) - await registerMessageInApp(res[i], mails[i]); + let step = 20; + for (let i = 0; i < promises.length; i += step) { + for (let j = i; j < (i + step && promises.length); j++) { + console.log(j, promises.length, promises[j]) + await new Promise((resolve, reject) => { + promises[j] + .then(async (res) => { + await registerMessageInApp(res, mails[j], this.id); + resolve(); + }) + .catch((err) => { + reject(err); + }); + }); } - }); + logger.log(`Saved messages ${i + step > promises.length ? promises.length : i + step}/${mails.length}`); + updateMailbox(this.id, mails[i].uid); + } + // await Promise.all(promises).then(async (res) => { + // for (let i = 0; i < mails.length; i++) { + // logger.log(`Saved message ${i}/${mails.length}`); + // } + // }); updateMailbox(this.id, currentUid); }); } diff --git a/back/mails/imap/ImapInstance.js b/back/mails/imap/ImapInstance.js index f32e1bc..02a23ee 100644 --- a/back/mails/imap/ImapInstance.js +++ b/back/mails/imap/ImapInstance.js @@ -13,7 +13,6 @@ class ImapInstance { port: account.port, tls: account.tls, }); - this.account = account; this.boxes = []; @@ -25,11 +24,11 @@ class ImapInstance { this.imapReady(); }); - this.imap.once("error", function (err) { + this.imap.once("error", (err) => { logger.error("Imap error for " + this.account.user + ": " + err); }); - this.imap.once("end", function () { + this.imap.once("end", () => { logger.log("Connection ended for " + this.account.user); }); @@ -54,10 +53,11 @@ class ImapInstance { getAllBox(boxes) { // ideally we should get the all box to get all messages - let allBox; + let allBox = ''; Object.keys(boxes).forEach((key) => { if (key === "INBOX") return; - if (allBox.includes("/")) return; + if (allBox.includes("/")) return; // already found + if (!boxes[key].children) return; // no children allBox = key; Object.keys(boxes[key].children).forEach((childBoxes) => { if (boxes[key].children[childBoxes].attribs.includes("\\All")) { diff --git a/back/mails/saveMessage.js b/back/mails/saveMessage.js index ff6e687..5cac78b 100644 --- a/back/mails/saveMessage.js +++ b/back/mails/saveMessage.js @@ -8,8 +8,8 @@ const { hasSameMembersAsParent, } = require("../db/saveMessageApp"); -const { findRoomByOwner, getAddresseId } = require("../db/mail"); -const { isDmOnEnvelope } = require("./utils/statusUtils"); +const { findRoomByOwner, getAddresseId, getUserIdOfMailbox } = require("../db/mail"); +const { isDmOnEnvelope, nbMembers } = require("./utils/statusUtils"); /** * take object address and join mailbox and host to return mailbox@host @@ -18,25 +18,52 @@ function createAddress(elt) { return `${elt.mailbox}@${elt.host}`; } -async function registerMessageInApp(messageId, attrs) { - const isSeen = attrs.flags.includes("Seen") ? 1 : 0; // todo verify +async function registerMessageInApp(messageId, attrs, boxId) { + const isSeen = attrs.flags.includes("\\Seen") ? 1 : 0; // todo verify const envelope = attrs.envelope; await getAddresseId(createAddress(envelope.sender[0])).then(async (ownerId) => { if (envelope.inReplyTo) { await registerReplyMessage(envelope, messageId, isSeen, ownerId); } else { - await findRoomByOwner(ownerId).then(async (res) => { - if (res.length == 0) { - // first message of this sender + const userId = (await getUserIdOfMailbox(boxId))[0]?.user_id; + if (ownerId == userId) { + // send by the user + if (nbMembers(envelope) == 2) { + // this is a dm + console.log(envelope) + const userTo = (await getAddresseId(createAddress(envelope.to[0]))); + await findRoomByOwner(userTo).then(async (res) => { + if (res.length == 0) { + // first message of this conv with this sender + await createRoom(envelope.subject, userTo, messageId).then(async (roomId) => { + await registerMessageInRoom(messageId, roomId, isSeen, envelope.date); + }); + } else { + // not a reply, add to the list of message if this sender + await registerMessageInRoom(messageId, res[0].room_id, isSeen, envelope.date); + } + }); + } else { + // message coming from user with multiple member is a group await createRoom(envelope.subject, ownerId, messageId).then(async (roomId) => { await registerMessageInRoom(messageId, roomId, isSeen, envelope.date); }); - } else { - // not a reply, add to the list of message if this sender - await registerMessageInRoom(messageId, res[0].room_id, isSeen, envelope.date); } - }); + } else { + await findRoomByOwner(ownerId).then(async (res) => { + if (res.length == 0) { + // first message of this sender + if (!envelope.subject) console.error(envelope) + await createRoom(envelope.subject, ownerId, messageId).then(async (roomId) => { + await registerMessageInRoom(messageId, roomId, isSeen, envelope.date); + }); + } else { + // not a reply, add to the list of message if this sender + await registerMessageInRoom(messageId, res[0].room_id, isSeen, envelope.date); + } + }); + } } }); } diff --git a/back/mails/storeMessage.js b/back/mails/storeMessage.js index 4b46819..0be8398 100644 --- a/back/mails/storeMessage.js +++ b/back/mails/storeMessage.js @@ -23,8 +23,8 @@ function saveMessage(attrs, mailboxId, imap) { return new Promise((resolve, reject) => { registerMessage(ts, rfc822size, messageID) .then((messageId) => { - const isSeen = attrs.flags.includes("Seen") ? 1 : 0; // todo verify - const deleted = attrs.flags.includes("Deleted") ? 1 : 0; // todo verify + const isSeen = attrs.flags.includes("\\Seen") ? 1 : 0; // todo verify + const deleted = attrs.flags.includes("\\Deleted") ? 1 : 0; // todo verify registerMailbox_message(mailboxId, attrs.uid, messageId, attrs.modseq, isSeen, deleted); const f = imap.fetch(attrs.uid, { bodies: "" }); @@ -57,7 +57,7 @@ function saveMessage(attrs, mailboxId, imap) { logger.warn("Fetch error: " + err); }); f.once("end", function () { - logger.log("Done fetching data of " + messageID); + // logger.log("Done fetching data of " + messageID); // todo }); }) .catch((err) => { @@ -81,8 +81,9 @@ async function saveFromParsedData(parsed, messageId) { }); }), ); - } else if (["subject", "inReplyTo"].includes(key)) { + } else if (["subject", "inReplyTo", "references"].includes(key)) { // todo : "references" (array) + if (key == "references") return; promises.push( getFieldId(key).then(async (fieldId) => { await saveHeader_fields(messageId, fieldId, undefined, undefined, parsed[key]); @@ -93,13 +94,7 @@ async function saveFromParsedData(parsed, messageId) { const size = "0"; saveBodypart(size, hash, parsed[key], "").then((bodypartId) => { getFieldId(key).then((fieldId) => { - saveHeader_fields( - messageId, - fieldId, - bodypartId, - undefined, // todo ? - undefined, - ); + saveHeader_fields(messageId, fieldId, bodypartId, undefined, undefined); }); }); } else if (key == "attachments") { diff --git a/back/mails/utils/statusUtils.js b/back/mails/utils/statusUtils.js index f21765c..d5da778 100644 --- a/back/mails/utils/statusUtils.js +++ b/back/mails/utils/statusUtils.js @@ -1,13 +1,23 @@ function isDmOnEnvelope(envelope) { - const members = - envelope.bcc?.length + - envelope.cc?.length + - envelope.to?.length + - envelope.sender?.length + - envelope.from?.length; - return members === 2; + return nbMembers(envelope) === 2; +} + +function nbMembers(envelope) { + let nbMembers = + (envelope.bcc?.length ?? 0) + + (envelope.cc?.length ?? 0) + + (envelope.to?.length ?? 0) + + (envelope.from?.length ?? 0); + if ( + envelope.sender?.length > 0 && + !(envelope.sender[0].mailbox == envelope.from[0].mailbox && envelope.sender[0].host == envelope.from[0].host) + ) { + nbMembers += envelope.sender?.length ?? 0; + } + return nbMembers; } module.exports = { isDmOnEnvelope, + nbMembers, }; diff --git a/back/package.json b/back/package.json index c9e749c..ef98fd3 100644 --- a/back/package.json +++ b/back/package.json @@ -12,11 +12,9 @@ "vue-router": "^4.1.6" }, "devDependencies": { - "jest": "^29.5.0", - "jest-mysql": "^2.0.0" + "jest": "^29.5.0" }, "jest": { - "preset": "jest-mysql", "testMatch": [ "/test//**/*-test.[jt]s?(x)" ] diff --git a/back/system/Logger.js b/back/system/Logger.js new file mode 100644 index 0000000..d11c03c --- /dev/null +++ b/back/system/Logger.js @@ -0,0 +1,45 @@ +class Logger { + constructor() { + + } + + log(content) { + console.log(this._prefix("log"), content); + } + + warn(content) { + console.warn(this._prefix("warn"), content); + } + + error(content) { + console.error(this._prefix("err"), content); + } + + _prefix(type) { + let typeStr = ""; + switch (type) { + case "log": + typeStr = "LOG" + break; + case "warn": + typeStr = "WARN" + break; + case "err": + typeStr = "ERR" + break; + default: + break; + } + return `[${typeStr}: ${this._timestamp()}]`; + } + + _timestamp() { + return new Date().toLocaleString(); + } +} + +const logger = new Logger(); + +module.exports = { + logger, +} \ No newline at end of file diff --git a/back/test/mail/utils/statusUtils-test.js b/back/test/mail/utils/statusUtils-test.js new file mode 100644 index 0000000..f26a595 --- /dev/null +++ b/back/test/mail/utils/statusUtils-test.js @@ -0,0 +1,40 @@ +const { nbMembers } = require("../../../mails/utils/statusUtils"); + +describe("statusUtils", () => { + it("sender and from shouldn't be counted twice if there are the same", () => { + const envelope = { + from: [{ name: "", mailbox: "user_1", host: "provider.com" }], + sender: [{ name: "", mailbox: "user_1", host: "provider.com" }], + replyTo: [{ name: "", mailbox: "user_1", host: "provider.com" }], + to: null, + cc: null, + bcc: null, + inReplyTo: null, + }; + expect(nbMembers(envelope)).toBe(1); + }); + it("sender and from shoud be counted twice if there are the same", () => { + const envelope = { + from: [{ name: "", mailbox: "user_1", host: "provider.com" }], + sender: [{ name: "", mailbox: "user_2", host: "provider.com" }], + replyTo: [{ name: "", mailbox: "user_1", host: "provider.com" }], + to: null, + cc: null, + bcc: null, + inReplyTo: null, + }; + expect(nbMembers(envelope)).toBe(2); + }); + it("should count every members", () => { + const envelope = { + from: [{ name: "", mailbox: "user_1", host: "provider.com" }], + sender: [{ name: "", mailbox: "user_2", host: "provider.com" }], + replyTo: [{ name: "", mailbox: "user_1", host: "provider.com" }], + to: [{ name: "", mailbox: "user_1", host: "provider.com" }], + cc: [{ name: "", mailbox: "user_1", host: "provider.com" }], + bcc: [{ name: "", mailbox: "user_1", host: "provider.com" }], + inReplyTo: null, + }; + expect(nbMembers(envelope)).toBe(5); + }); +}); diff --git a/back/yarn.lock b/back/yarn.lock index da73f78..32aecc4 100644 --- a/back/yarn.lock +++ b/back/yarn.lock @@ -22,7 +22,7 @@ resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@babel/compat-data/-/compat-data-7.21.0.tgz" integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.8.0": +"@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.21.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@babel/core/-/core-7.21.0.tgz" integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== @@ -157,7 +157,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": version "7.21.2" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@babel/parser/-/parser-7.21.2.tgz" integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== @@ -534,7 +534,7 @@ resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -660,101 +660,11 @@ dependencies: "@types/yargs-parser" "*" -"@vue/compiler-core@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz" - integrity sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig== - dependencies: - "@babel/parser" "^7.16.4" - "@vue/shared" "3.2.47" - estree-walker "^2.0.2" - source-map "^0.6.1" - -"@vue/compiler-dom@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz" - integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ== - dependencies: - "@vue/compiler-core" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/compiler-sfc@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz" - integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ== - dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.47" - "@vue/compiler-dom" "3.2.47" - "@vue/compiler-ssr" "3.2.47" - "@vue/reactivity-transform" "3.2.47" - "@vue/shared" "3.2.47" - estree-walker "^2.0.2" - magic-string "^0.25.7" - postcss "^8.1.10" - source-map "^0.6.1" - -"@vue/compiler-ssr@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz" - integrity sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw== - dependencies: - "@vue/compiler-dom" "3.2.47" - "@vue/shared" "3.2.47" - "@vue/devtools-api@^6.4.5": version "6.5.0" resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz" integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== -"@vue/reactivity-transform@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz" - integrity sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA== - dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.47" - "@vue/shared" "3.2.47" - estree-walker "^2.0.2" - magic-string "^0.25.7" - -"@vue/reactivity@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz" - integrity sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ== - dependencies: - "@vue/shared" "3.2.47" - -"@vue/runtime-core@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz" - integrity sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA== - dependencies: - "@vue/reactivity" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/runtime-dom@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz" - integrity sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA== - dependencies: - "@vue/runtime-core" "3.2.47" - "@vue/shared" "3.2.47" - csstype "^2.6.8" - -"@vue/server-renderer@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz" - integrity sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA== - dependencies: - "@vue/compiler-ssr" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/shared@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz" - integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ== - accepts@~1.3.8: version "1.3.8" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/accepts/-/accepts-1.3.8.tgz" @@ -934,7 +844,7 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.3, "browserslist@>= 4.21.0": +browserslist@^4.21.3: version "4.21.5" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/browserslist/-/browserslist-4.21.5.tgz" integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== @@ -1054,16 +964,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + concat-map@0.0.1: version "0.0.1" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/concat-map/-/concat-map-0.0.1.tgz" @@ -1081,12 +991,7 @@ content-type@~1.0.4: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -convert-source-map@^1.6.0: - version "1.9.0" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/convert-source-map/-/convert-source-map-1.9.0.tgz" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^1.7.0: +convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -1128,26 +1033,6 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -csstype@^2.6.8: - version "2.6.21" - resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" - integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== - -cwd@^0.10.0: - version "0.10.0" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/cwd/-/cwd-0.10.0.tgz" - integrity sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA== - dependencies: - find-pkg "^0.1.2" - fs-exists-sync "^0.1.0" - -debug@^4.1.0, debug@^4.1.1, debug@^4.2.0: - version "4.3.4" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@2.6.9: version "2.6.9" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/debug/-/debug-2.6.9.tgz" @@ -1155,6 +1040,13 @@ debug@2.6.9: dependencies: ms "2.0.0" +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + dedent@^0.7.0: version "0.7.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/dedent/-/dedent-0.7.0.tgz" @@ -1282,11 +1174,6 @@ esprima@^4.0.0: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - etag@~1.8.1: version "1.8.1" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/etag/-/etag-1.8.1.tgz" @@ -1312,13 +1199,6 @@ exit@^0.1.2: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/exit/-/exit-0.1.2.tgz" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/expand-tilde/-/expand-tilde-1.2.2.tgz" - integrity sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q== - dependencies: - os-homedir "^1.0.1" - expect@^29.5.0: version "29.5.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/expect/-/expect-29.5.0.tgz" @@ -1404,21 +1284,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-file-up@^0.1.2: - version "0.1.3" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/find-file-up/-/find-file-up-0.1.3.tgz" - integrity sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A== - dependencies: - fs-exists-sync "^0.1.0" - resolve-dir "^0.1.0" - -find-pkg@^0.1.2: - version "0.1.2" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/find-pkg/-/find-pkg-0.1.2.tgz" - integrity sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw== - dependencies: - find-file-up "^0.1.2" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/find-up/-/find-up-4.1.0.tgz" @@ -1437,16 +1302,16 @@ fresh@0.5.2: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz" - integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/function-bind/-/function-bind-1.1.1.tgz" @@ -1493,24 +1358,6 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^0.2.3: - version "0.2.3" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/global-modules/-/global-modules-0.2.3.tgz" - integrity sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA== - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/global-prefix/-/global-prefix-0.1.5.tgz" - integrity sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw== - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - globals@^11.1.0: version "11.12.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/globals/-/globals-11.12.0.tgz" @@ -1548,13 +1395,6 @@ he@1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -homedir-polyfill@^1.0.0: - version "1.0.3" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - html-escaper@^2.0.0: version "2.0.2" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/html-escaper/-/html-escaper-2.0.2.tgz" @@ -1597,7 +1437,7 @@ human-signals@^2.1.0: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@~0.4.13, iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -1652,16 +1492,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4: - version "1.3.8" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/ipaddr.js/-/ipaddr.js-1.9.1.tgz" @@ -1704,21 +1539,16 @@ is-stream@^2.0.0: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-windows@^0.2.0: - version "0.2.0" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/is-windows/-/is-windows-0.2.0.tgz" - integrity sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@~1.0.0: version "1.0.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isexe@^2.0.0: version "2.0.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/isexe/-/isexe-2.0.0.tgz" @@ -1952,14 +1782,6 @@ jest-mock@^29.5.0: "@types/node" "*" jest-util "^29.5.0" -jest-mysql@^2.0.0: - version "2.0.0" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/jest-mysql/-/jest-mysql-2.0.0.tgz" - integrity sha512-j8vsJn4FFcif1QJPBwmDG5B36r9xExm8TVFP0qjOl+tzn50hsf9yiRBxYhNHZ7A691WYfS1/ZPQwRoJH0rY9qg== - dependencies: - cwd "^0.10.0" - debug "^4.2.0" - jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" @@ -1978,7 +1800,7 @@ jest-resolve-dependencies@^29.5.0: jest-regex-util "^29.4.3" jest-snapshot "^29.5.0" -jest-resolve@*, jest-resolve@^29.5.0: +jest-resolve@^29.5.0: version "29.5.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/jest-resolve/-/jest-resolve-29.5.0.tgz" integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== @@ -2125,7 +1947,7 @@ jest-worker@^29.5.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.5.0, jest@29.x.x: +jest@^29.5.0: version "29.5.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/jest/-/jest-29.5.0.tgz" integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== @@ -2236,13 +2058,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - mailparser@^3.6.3: version "3.6.3" resolved "https://registry.npmjs.org/mailparser/-/mailparser-3.6.3.tgz" @@ -2358,7 +2173,7 @@ ms@2.1.3: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mysql@^2.18.1, mysql@2.x.x: +mysql@^2.18.1: version "2.18.1" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/mysql/-/mysql-2.18.1.tgz" integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== @@ -2368,11 +2183,6 @@ mysql@^2.18.1, mysql@2.x.x: safe-buffer "5.1.2" sqlstring "2.3.1" -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - natural-compare@^1.4.0: version "1.4.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/natural-compare/-/natural-compare-1.4.0.tgz" @@ -2449,11 +2259,6 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -os-homedir@^1.0.1: - version "1.0.2" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/os-homedir/-/os-homedir-1.0.2.tgz" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - p-limit@^2.2.0: version "2.3.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/p-limit/-/p-limit-2.3.0.tgz" @@ -2490,11 +2295,6 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/parse-passwd/-/parse-passwd-1.0.0.tgz" - integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== - parseley@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/parseley/-/parseley-0.11.0.tgz" @@ -2560,15 +2360,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -postcss@^8.1.10: - version "8.4.21" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" - integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - pretty-format@^29.5.0: version "29.5.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/pretty-format/-/pretty-format-29.5.0.tgz" @@ -2690,14 +2481,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/resolve-dir/-/resolve-dir-0.1.1.tgz" - integrity sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA== - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" - resolve-from@^5.0.0: version "5.0.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/resolve-from/-/resolve-from-5.0.0.tgz" @@ -2717,7 +2500,7 @@ resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@5.1.2: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -2739,12 +2522,7 @@ selderee@^0.10.0: dependencies: parseley "^0.11.0" -semver@^6.0.0: - version "6.3.0" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -2831,11 +2609,6 @@ slash@^3.0.0: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - source-map-support@0.5.13: version "0.5.13" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/source-map-support/-/source-map-support-0.5.13.tgz" @@ -2849,11 +2622,6 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/sprintf-js/-/sprintf-js-1.0.3.tgz" @@ -2876,18 +2644,6 @@ statuses@2.0.1: resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-length@^4.0.1: version "4.0.2" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/string-length/-/string-length-4.0.2.tgz" @@ -2905,6 +2661,18 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -3012,7 +2780,7 @@ uc.micro@^1.0.1: resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -3080,17 +2848,6 @@ vue-router@^4.1.6: dependencies: "@vue/devtools-api" "^6.4.5" -vue@^3.2.0, vue@3.2.47: - version "3.2.47" - resolved "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz" - integrity sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ== - dependencies: - "@vue/compiler-dom" "3.2.47" - "@vue/compiler-sfc" "3.2.47" - "@vue/runtime-dom" "3.2.47" - "@vue/server-renderer" "3.2.47" - "@vue/shared" "3.2.47" - walker@^1.0.8: version "1.0.8" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/walker/-/walker-1.0.8.tgz" @@ -3098,13 +2855,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -which@^1.2.12: - version "1.3.1" - resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/which/-/which-2.0.2.tgz" diff --git a/front/src/store/models/Room.js b/front/src/store/models/Room.js index 9f3aa68..6f9db08 100644 --- a/front/src/store/models/Room.js +++ b/front/src/store/models/Room.js @@ -12,9 +12,9 @@ export default class Room { if (!thread) { this.threads = [ - new Room({id:12, user: this.user, roomName: "thread 1", mailbboxId:this.mailboxId}, true), - new Room({id:12, user: this.user, roomName: "thread 1", mailbboxId:this.mailboxId}, true), - new Room({id:12, user: this.user, roomName: "thread 1", mailbboxId:this.mailboxId}, true), + // new Room({id:12, user: this.user, roomName: "thread 1", mailbboxId:this.mailboxId}, true), + // new Room({id:12, user: this.user, roomName: "thread 1", mailbboxId:this.mailboxId}, true), + // new Room({id:12, user: this.user, roomName: "thread 1", mailbboxId:this.mailboxId}, true), ]; } else { this.threads = []; diff --git a/front/src/views/room/Message.vue b/front/src/views/room/Message.vue index d0f070b..6433e1c 100644 --- a/front/src/views/room/Message.vue +++ b/front/src/views/room/Message.vue @@ -78,6 +78,7 @@ iframe { max-height: 300px; width: 100%; max-width: 750px; /* template width being 600px to 640px up to 750px (experiment and test) */ + background-color: rgb(234, 234, 234);; } .left, diff --git a/front/src/views/sidebar/rooms/threads/Thread.vue b/front/src/views/sidebar/rooms/threads/Thread.vue index f666b9c..e0a12e2 100644 --- a/front/src/views/sidebar/rooms/threads/Thread.vue +++ b/front/src/views/sidebar/rooms/threads/Thread.vue @@ -31,8 +31,8 @@ console.log(props.thread) } .room::before { - content: "|"; + border-right: 1px solid white; margin: 0 10px; - color: white; + content: ""; } \ No newline at end of file