Compare commits
3 Commits
b48c834d36
...
4799e477be
Author | SHA1 | Date | |
---|---|---|---|
|
4799e477be | ||
|
7ad22e55c1 | ||
|
5b62fce48a |
@ -1,6 +1,6 @@
|
||||
import { Response } from "express";
|
||||
import { getAccounts, registerAccount } from "../db/api-db";
|
||||
import { getAddresseId } from "../db/utils/mail";
|
||||
import { getAddressId } from "../db/utils/mail";
|
||||
import statusCodes from "../utils/statusCodes";
|
||||
|
||||
export default class Account {
|
||||
@ -12,7 +12,7 @@ export default class Account {
|
||||
|
||||
static async register(body, res: Response) {
|
||||
const { email, pwd, xoauth, xoauth2, host, port, tls } = body;
|
||||
getAddresseId(email).then((addressId) => {
|
||||
getAddressId(email).then((addressId) => {
|
||||
registerAccount(addressId, pwd, xoauth, xoauth2, host, port, tls)
|
||||
.then((mailboxId) => {
|
||||
res.status(statusCodes.OK).json({ id: mailboxId });
|
||||
|
61
back/abl/Room-abl.ts
Normal file
61
back/abl/Room-abl.ts
Normal file
@ -0,0 +1,61 @@
|
||||
import statusCode from "../utils/statusCodes";
|
||||
import { Response } from "express";
|
||||
import { RoomType } from "../mails/message/saveMessage";
|
||||
import { getRoomType } from "../db/message/saveMessage-db";
|
||||
import { getLastMsgData, getRoomOwner } from "../db/Room-db";
|
||||
import emailManager from "../mails/EmailManager";
|
||||
import MailBuilder from "../mails/utils/mailBuilder";
|
||||
import { getAddresses } from "../db/utils/mail";
|
||||
|
||||
function rmUserFromAddrs(addresses: { email: string }[], user: string) {
|
||||
let index = addresses.findIndex((a) => a.email == user);
|
||||
if (index != -1) {
|
||||
addresses.splice(index, 1);
|
||||
}
|
||||
}
|
||||
export default class Room {
|
||||
// todo change name of reponse
|
||||
static async response(body, res: Response) {
|
||||
const { user, roomId, text, html } = body;
|
||||
const roomType = (await getRoomType(roomId))[0].room_type;
|
||||
|
||||
if (roomType === RoomType.DM) {
|
||||
const ownerEmail = (await getRoomOwner(roomId))[0].email;
|
||||
|
||||
const mailBuilder = new MailBuilder();
|
||||
mailBuilder.from(user).to(ownerEmail).text(text).html(html);
|
||||
|
||||
emailManager.getSmtp(user).sendMail(mailBuilder.message);
|
||||
res.status(statusCode.OK).send();
|
||||
} else if (roomType === RoomType.GROUP || roomType === RoomType.THREAD) {
|
||||
const lastMsgData = (await getLastMsgData(roomId))[0];
|
||||
console.log(lastMsgData);
|
||||
|
||||
const mailBuilder = new MailBuilder();
|
||||
mailBuilder.inReplySubject(lastMsgData.subject).inReplyTo(lastMsgData.messageID).text(text).html(html);
|
||||
|
||||
const from = await getAddresses(lastMsgData.fromA);
|
||||
let to = lastMsgData.toA ? await getAddresses(lastMsgData.toA) : [];
|
||||
let cc = lastMsgData.ccA ? await getAddresses(lastMsgData.ccA) : [];
|
||||
|
||||
// remove us from recipients
|
||||
rmUserFromAddrs(to, user);
|
||||
rmUserFromAddrs(from, user);
|
||||
|
||||
// add sender of previous as recipient if it is not us
|
||||
if (from.findIndex((a) => a.email == user) == -1) {
|
||||
to = to.concat(from);
|
||||
}
|
||||
|
||||
mailBuilder
|
||||
.from(user)
|
||||
.to(to.map((a) => a.email))
|
||||
.cc(cc.map((a) => a.email));
|
||||
|
||||
emailManager.getSmtp(user).sendMail(mailBuilder.message);
|
||||
res.status(statusCode.OK).send();
|
||||
} else {
|
||||
res.status(statusCode.FORBIDDEN).send({ error: "Cannot add a new message in a room or a channel." });
|
||||
}
|
||||
}
|
||||
}
|
61
back/db/Room-db.ts
Normal file
61
back/db/Room-db.ts
Normal file
@ -0,0 +1,61 @@
|
||||
import { execQueryAsync } from "./db";
|
||||
import { queryCcId, queryFromId, queryToId } from "./utils/addressQueries";
|
||||
|
||||
export async function getRoomOwner(roomId: number) {
|
||||
const query = `
|
||||
SELECT address.email
|
||||
FROM app_room
|
||||
INNER JOIN address ON address.address_id = app_room.owner_id
|
||||
WHERE app_room.room_id = ?
|
||||
`;
|
||||
const values = [roomId];
|
||||
return await execQueryAsync(query, values);
|
||||
}
|
||||
|
||||
export async function getLastMsgData(roomId: number) {
|
||||
|
||||
const query = `
|
||||
SELECT
|
||||
msg.message_id AS id,
|
||||
GROUP_CONCAT(fromT.address_id) AS fromA,
|
||||
GROUP_CONCAT(toT.address_id) AS toA,
|
||||
GROUP_CONCAT(ccT.address_id) AS ccA,
|
||||
subjectT.value AS subject,
|
||||
content.text AS content,
|
||||
message.idate AS date,
|
||||
message.messageID AS messageID
|
||||
FROM app_room_message msg
|
||||
|
||||
${queryFromId} fromT ON msg.message_id = fromT.message_id
|
||||
${queryToId} toT ON msg.message_id = toT.message_id
|
||||
${queryCcId} ccT ON msg.message_id = ccT.message_id
|
||||
|
||||
LEFT JOIN (
|
||||
SELECT header_field.message_id, header_field.value
|
||||
FROM header_field
|
||||
INNER JOIN field_name
|
||||
WHERE
|
||||
field_name.field_id = header_field.field_id AND
|
||||
field_name.field_name = 'subject'
|
||||
) subjectT ON msg.message_id = subjectT.message_id
|
||||
|
||||
LEFT JOIN (
|
||||
SELECT bodypart.text, header_field.message_id FROM bodypart
|
||||
INNER JOIN header_field
|
||||
INNER JOIN field_name
|
||||
WHERE
|
||||
field_name.field_id = header_field.field_id AND
|
||||
field_name.field_name = 'html' AND
|
||||
bodypart.bodypart_id = header_field.bodypart_id
|
||||
) content ON msg.message_id = content.message_id
|
||||
|
||||
INNER JOIN message ON message.message_id = msg.message_id
|
||||
|
||||
WHERE msg.room_id = ?
|
||||
GROUP BY msg.message_id
|
||||
ORDER BY message.idate DESC
|
||||
LIMIT 1
|
||||
`;
|
||||
const values = [roomId];
|
||||
return await execQueryAsync(query, values);
|
||||
}
|
@ -128,7 +128,7 @@ export async function getMessages(roomId: number) {
|
||||
return await execQueryAsync(query, values);
|
||||
}
|
||||
|
||||
export async function getMembers(roomId) {
|
||||
export async function getMembers(roomId: number) {
|
||||
const query = `
|
||||
SELECT
|
||||
address.address_id AS id,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { execQueryAsync, execQueryAsyncWithId } from "../db";
|
||||
|
||||
export async function getAddresseId(email: string, name?: string): Promise<number> {
|
||||
export async function getAddressId(email: string, name?: string): Promise<number> {
|
||||
const localpart = email.split("@")[0];
|
||||
const domain = email.split("@")[1];
|
||||
const query = `INSERT INTO address
|
||||
@ -10,6 +10,12 @@ export async function getAddresseId(email: string, name?: string): Promise<numbe
|
||||
return await execQueryAsyncWithId(query, values);
|
||||
}
|
||||
|
||||
export async function getAddresses(ids: number | number[]): Promise<{ id: number, email: string }[]> {
|
||||
const query = `SELECT address_id AS id, email FROM address WHERE address_id IN (?)`;
|
||||
const values = [ids];
|
||||
return await execQueryAsync(query, values);
|
||||
}
|
||||
|
||||
export async function getFieldId(field: string): Promise<number> {
|
||||
const query = `INSERT INTO field_name (field_name) VALUES (?) ON DUPLICATE KEY UPDATE field_id=LAST_INSERT_ID(field_id)`;
|
||||
const values = [field];
|
||||
|
@ -5,13 +5,13 @@ import { getAllAccounts } from "../db/imap/imap-db";
|
||||
|
||||
export interface Account {
|
||||
id: number;
|
||||
user: string
|
||||
password?: string
|
||||
user: string;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
class EmailManager {
|
||||
imapInstances: ImapInstance[]
|
||||
smtpInstances: SmtpInstance[]
|
||||
imapInstances: ImapInstance[];
|
||||
smtpInstances: SmtpInstance[];
|
||||
|
||||
constructor() {
|
||||
this.imapInstances = [];
|
||||
@ -19,14 +19,16 @@ class EmailManager {
|
||||
}
|
||||
|
||||
init() {
|
||||
getAllAccounts().then((accounts: Account[]) => {
|
||||
getAllAccounts()
|
||||
.then((accounts: Account[]) => {
|
||||
for (let i = 0; i < accounts.length; i++) {
|
||||
accounts[i].password = accounts[i]?.password?.toString().replace(/[\u{0080}-\u{FFFF}]/gu, "");
|
||||
if (accounts[i].id == 2) continue; //debug_todo
|
||||
this.addImapInstance(accounts[i]);
|
||||
this.addSmtpInstance(accounts[i]);
|
||||
}
|
||||
}).catch((err) => {
|
||||
})
|
||||
.catch((err) => {
|
||||
logger.err(err);
|
||||
});
|
||||
}
|
||||
@ -38,6 +40,10 @@ class EmailManager {
|
||||
addSmtpInstance(config) {
|
||||
this.smtpInstances.push(new SmtpInstance(config));
|
||||
}
|
||||
|
||||
getSmtp(email: string): SmtpInstance | undefined {
|
||||
return this.smtpInstances.find((instance) => instance.user == email);
|
||||
}
|
||||
}
|
||||
|
||||
const emailManager = new EmailManager();
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
getThreadInfoOnId,
|
||||
} from "../../db/message/saveMessage-db";
|
||||
|
||||
import { findRoomByOwner, getAddresseId, getUserIdOfMailbox } from "../../db/utils/mail";
|
||||
import { findRoomByOwner, getAddressId, getUserIdOfMailbox } from "../../db/utils/mail";
|
||||
import { nbMembers } from "../utils/envelopeUtils";
|
||||
import logger from "../../system/Logger";
|
||||
import { Attrs, Envelope, User } from "../../interfaces/mail/attrs.interface";
|
||||
@ -57,7 +57,7 @@ export default class RegisterMessageInApp {
|
||||
|
||||
async init() {
|
||||
if (this.envelope.from) {
|
||||
this.ownerId = await getAddresseId(createAddress(this.envelope.from[0])); // todo use sender or from ?
|
||||
this.ownerId = await getAddressId(createAddress(this.envelope.from[0])); // todo use sender or from ?
|
||||
} else {
|
||||
throw new Error("Envelope must have a 'from' field");
|
||||
}
|
||||
@ -152,7 +152,7 @@ export default class RegisterMessageInApp {
|
||||
if (this.isDm()) {
|
||||
// create or add new message to DM
|
||||
if (!this.envelope.to) throw new Error("Who send a DM and put the recipient in cc ?");
|
||||
const userTo = await getAddresseId(createAddress(this.envelope.to[0]));
|
||||
const userTo = await getAddressId(createAddress(this.envelope.to[0]));
|
||||
await this.createOrRegisterOnExistence(userTo, RoomType.DM);
|
||||
} else {
|
||||
// it is not a reply and not a dm
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { getAddresseId, getFlagId } from "../../db/utils/mail";
|
||||
import { getAddressId, getFlagId } from "../../db/utils/mail";
|
||||
import { EmailAddress, ParsedMail, simpleParser } from "mailparser";
|
||||
import moment from "moment";
|
||||
import Imap from "imap";
|
||||
@ -91,7 +91,7 @@ async function saveFromParsedData(parsed: ParsedMail, messageId: number) {
|
||||
// save address field
|
||||
getFieldId(key).then((fieldId) => {
|
||||
parsed[key].value.forEach((addr: EmailAddress, nb: number) => {
|
||||
getAddresseId(addr.address, addr.name).then(async (addressId) => {
|
||||
getAddressId(addr.address, addr.name).then(async (addressId) => {
|
||||
await saveAddress_fields(messageId, fieldId, addressId, nb);
|
||||
});
|
||||
});
|
||||
@ -120,7 +120,7 @@ async function saveFromParsedData(parsed: ParsedMail, messageId: number) {
|
||||
});
|
||||
});
|
||||
} else if (key == "attachments") {
|
||||
// todo
|
||||
// todo attachments
|
||||
} else if (["date", "messageId", "headers", "headerLines"].includes(key)) {
|
||||
// messageId and date are already saved
|
||||
// other field are not important and can be retrieved in source
|
||||
|
@ -3,9 +3,11 @@ import nodemailer, { Transporter } from "nodemailer";
|
||||
|
||||
export class SmtpInstance {
|
||||
transporter: Transporter;
|
||||
user: string;
|
||||
|
||||
constructor(account: {user: string, password: string}) {
|
||||
constructor(account: { user: string; password: string }) {
|
||||
// todo store other data
|
||||
this.user = account.user;
|
||||
this.transporter = nodemailer.createTransport({
|
||||
host: "smtp.gmail.com",
|
||||
port: 465,
|
||||
@ -17,20 +19,22 @@ export class SmtpInstance {
|
||||
});
|
||||
}
|
||||
|
||||
sendMail() {
|
||||
const msg = {
|
||||
from: "",
|
||||
to: "",
|
||||
subject: "Hello ✔",
|
||||
text: "Hello world?",
|
||||
html: "<b>Hello world?</b>",
|
||||
};
|
||||
this.transporter.sendMail(msg, (err, message) => {
|
||||
if (err) {
|
||||
logger.err(err);
|
||||
throw err;
|
||||
}
|
||||
logger.log(message);
|
||||
});
|
||||
sendMail(message: any) {
|
||||
console.log(this.user)
|
||||
console.log(message)
|
||||
// const msg = {
|
||||
// from: "",
|
||||
// to: "",
|
||||
// subject: "Hello ✔",
|
||||
// text: "Hello world?",
|
||||
// html: "<b>Hello world?</b>",
|
||||
// };
|
||||
// this.transporter.sendMail(msg, (err, message) => {
|
||||
// if (err) {
|
||||
// logger.err(err);
|
||||
// throw err;
|
||||
// }
|
||||
// logger.log(message);
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
52
back/mails/utils/mailBuilder.ts
Normal file
52
back/mails/utils/mailBuilder.ts
Normal file
@ -0,0 +1,52 @@
|
||||
export default class MailBuilder {
|
||||
message: any;
|
||||
constructor(message = {}) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
from(addresses: string[] | string): MailBuilder {
|
||||
this.message.from = addresses;
|
||||
return this;
|
||||
}
|
||||
|
||||
to(addresses: string[] | string): MailBuilder {
|
||||
this.message.to = addresses;
|
||||
return this;
|
||||
}
|
||||
|
||||
cc(addresses: string[] | string): MailBuilder {
|
||||
this.message.cc = addresses;
|
||||
return this;
|
||||
}
|
||||
|
||||
bcc(addresses: string[] | string): MailBuilder {
|
||||
this.message.bcc = addresses;
|
||||
return this;
|
||||
}
|
||||
|
||||
subject(subject: string): MailBuilder {
|
||||
this.message.subject = subject;
|
||||
return this;
|
||||
}
|
||||
|
||||
text(textContent: string): MailBuilder {
|
||||
this.message.text = textContent;
|
||||
return this;
|
||||
}
|
||||
|
||||
html(htmlContent: string): MailBuilder {
|
||||
this.message.html = htmlContent;
|
||||
return this;
|
||||
}
|
||||
|
||||
inReplyTo(messageID: string): MailBuilder {
|
||||
this.message.inReplyTo = messageID;
|
||||
return this;
|
||||
}
|
||||
|
||||
inReplySubject(originSubject: string): MailBuilder {
|
||||
// todo concate if multiple ?
|
||||
this.message.subject = "RE: " + originSubject;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -2,11 +2,12 @@ import express from "express";
|
||||
const router = express.Router();
|
||||
|
||||
import { rooms } from "../abl/rooms";
|
||||
import Message from "../abl/Messages-abl";
|
||||
import Message from "../abl/Message-abl";
|
||||
import { messages } from "../abl/messages";
|
||||
import { members } from "../abl/members";
|
||||
import Account from "../abl/Account-abl";
|
||||
import validator from "../validator/validator";
|
||||
import Room from "../abl/Room-abl";
|
||||
|
||||
/**
|
||||
* Return all mailboxes and folders for an user
|
||||
@ -52,4 +53,8 @@ router.post("/removeFlag", async (req, res) => {
|
||||
await validator.validate("removeFlag", req.body, res, Message.removeFlag);
|
||||
});
|
||||
|
||||
router.post("/response", async (req, res) => {
|
||||
await validator.validate("response", req.body, res, Room.response);
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
@ -20,7 +20,7 @@ const boxId = 1;
|
||||
jest.mock("../../db/utils/mail", () => {
|
||||
return {
|
||||
findRoomByOwner: jest.fn(),
|
||||
getAddresseId: jest.fn(),
|
||||
getAddressId: jest.fn(),
|
||||
getUserIdOfMailbox: jest.fn(),
|
||||
};
|
||||
});
|
||||
@ -38,7 +38,7 @@ jest.mock("../../db/message/saveMessage-db", () => {
|
||||
getThreadInfoOnId: jest.fn(),
|
||||
};
|
||||
});
|
||||
import { getAddresseId, getUserIdOfMailbox, findRoomByOwner } from "../../db/utils/mail";
|
||||
import { getAddressId, getUserIdOfMailbox, findRoomByOwner } from "../../db/utils/mail";
|
||||
import {
|
||||
createRoom,
|
||||
registerMessageInRoom,
|
||||
@ -69,7 +69,7 @@ import { AttrsWithEnvelopeTest, createReplyWithSameMembers } from "../test-utils
|
||||
// if only me reply -> channel
|
||||
|
||||
beforeAll(async () => {
|
||||
mocked(getAddresseId).mockImplementation(db.getAddresseId);
|
||||
mocked(getAddressId).mockImplementation(db.getAddressId);
|
||||
mocked(getUserIdOfMailbox).mockImplementation(db.getUserIdOfMailbox);
|
||||
mocked(findRoomByOwner).mockImplementation(db.findRoomByOwner);
|
||||
|
||||
@ -146,6 +146,7 @@ describe("saveMessage", () => {
|
||||
|
||||
await register.save();
|
||||
|
||||
// the owner of the room will be the recipient (not us)
|
||||
expect(createOrRegisterOnExistence).toHaveBeenCalledWith(db.users[1].id, RoomType.DM);
|
||||
});
|
||||
it("should create a GROUP when there is a new first message from us to multiple recipients", async () => {
|
||||
|
@ -29,7 +29,7 @@ export default class saveMessageDatabase {
|
||||
this.rooms = [];
|
||||
this.messages = [];
|
||||
this.room_message = [];
|
||||
this.users = generateUsers(5); // todo
|
||||
this.users = _users;
|
||||
this.roomId = 0;
|
||||
}
|
||||
|
||||
@ -146,7 +146,7 @@ export default class saveMessageDatabase {
|
||||
});
|
||||
};
|
||||
|
||||
getAddresseId = (email: string, name?: string): Promise<number> => {
|
||||
getAddressId = (email: string, name?: string): Promise<number> => {
|
||||
const match = this.users.find((user) => user.user.mailbox + "@" + user.user.host == email);
|
||||
return new Promise((resolve, reject) => resolve(match?.id));
|
||||
};
|
||||
|
21
back/validator/schemas/response-schema.json
Normal file
21
back/validator/schemas/response-schema.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"user": {
|
||||
"type": "string"
|
||||
},
|
||||
"roomId": {
|
||||
"type": "number"
|
||||
},
|
||||
"text": {
|
||||
"type": "string"
|
||||
},
|
||||
"html": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"user", "roomId", "text", "html"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
@ -9,6 +9,7 @@ import getRoomSchema from "./schemas/getRooms-schema.json";
|
||||
import getMessagesSchema from "./schemas/getMessages-schema.json";
|
||||
import getMembersSchema from "./schemas/getMembers-schema.json";
|
||||
import setFlagSchema from "./schemas/setFlag-schema.json";
|
||||
import responseSchema from "./schemas/response-schema.json";
|
||||
import { Request, Response } from "express";
|
||||
import statusCodes from "../utils/statusCodes";
|
||||
import logger from "../system/Logger";
|
||||
@ -20,6 +21,7 @@ class Validator {
|
||||
validateGetMessages: any;
|
||||
validateGetMembers: any;
|
||||
validateSetFlag: any;
|
||||
validateResponse: any;
|
||||
|
||||
constructor() {
|
||||
this.validateCreateAccount = ajv.compile(createAccountSchema);
|
||||
@ -28,6 +30,7 @@ class Validator {
|
||||
this.validateGetMessages = ajv.compile(getMessagesSchema);
|
||||
this.validateGetMembers = ajv.compile(getMembersSchema);
|
||||
this.validateSetFlag = ajv.compile(setFlagSchema);
|
||||
this.validateResponse = ajv.compile(responseSchema);
|
||||
}
|
||||
|
||||
_getSchema(name: string): any {
|
||||
@ -45,6 +48,8 @@ class Validator {
|
||||
case "addFlag":
|
||||
case "removeFlag":
|
||||
return this.validateSetFlag;
|
||||
case "response":
|
||||
return this.validateResponse;
|
||||
default:
|
||||
logger.err(`Schema ${name} not found`);
|
||||
break;
|
||||
|
1547
front/package-lock.json
generated
1547
front/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -9,6 +9,9 @@
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tiptap/pm": "^2.0.3",
|
||||
"@tiptap/starter-kit": "^2.0.3",
|
||||
"@tiptap/vue-3": "^2.0.3",
|
||||
"vue": "^3.2.13",
|
||||
"vue-router": "^4.0.3",
|
||||
"vuex": "^4.0.0"
|
||||
@ -43,6 +46,8 @@
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"jest": "^27.0.5",
|
||||
"prettier": "^2.4.1",
|
||||
"sass": "^1.62.0",
|
||||
"sass-loader": "^13.2.2",
|
||||
"ts-jest": "^27.0.4",
|
||||
"typescript": "~4.5.5"
|
||||
},
|
||||
|
@ -31,7 +31,7 @@ watch(
|
||||
.main {
|
||||
min-width: 700px;
|
||||
}
|
||||
/* todo */
|
||||
/* todo define size automatically */
|
||||
.content {
|
||||
width: 700px;
|
||||
height: 700px;
|
||||
|
154
front/src/components/structure/message/Composer.vue
Normal file
154
front/src/components/structure/message/Composer.vue
Normal file
@ -0,0 +1,154 @@
|
||||
<script setup>
|
||||
import imapAPI from "@/services/imapAPI";
|
||||
import store from "@/store/store";
|
||||
import StarterKit from "@tiptap/starter-kit";
|
||||
import { BubbleMenu, useEditor, EditorContent, FloatingMenu } from "@tiptap/vue-3";
|
||||
import { inject, onBeforeUnmount } from "vue";
|
||||
|
||||
const editor = useEditor({
|
||||
extensions: [StarterKit],
|
||||
content: `
|
||||
<p>
|
||||
Try to select <em>this text</em> to see what we call the bubble menu.
|
||||
</p>
|
||||
<p>
|
||||
Neat, isn't it? Add an empty paragraph to see the floating menu.
|
||||
</p>
|
||||
`,
|
||||
});
|
||||
|
||||
const room = inject("room");
|
||||
|
||||
const send = () => {
|
||||
const htmlContent = editor.value.getHTML();
|
||||
const textContent = editor.value.getText();
|
||||
const accountUser = store.getters.accountOfRoom(room.value.id);
|
||||
imapAPI.reponseEmail({
|
||||
user: accountUser,
|
||||
roomId: room.value.id,
|
||||
text: textContent,
|
||||
html: htmlContent,
|
||||
});
|
||||
};
|
||||
|
||||
// todo subject input when dm of group...
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="editor">
|
||||
<bubble-menu class="bubble-menu" :tippy-options="{ duration: 100 }" :editor="editor">
|
||||
<button
|
||||
@click="editor.chain().focus().toggleBold().run()"
|
||||
:class="{ 'is-active': editor.isActive('bold') }"
|
||||
>
|
||||
Bold
|
||||
</button>
|
||||
<button
|
||||
@click="editor.chain().focus().toggleItalic().run()"
|
||||
:class="{ 'is-active': editor.isActive('italic') }"
|
||||
>
|
||||
Italic
|
||||
</button>
|
||||
<button
|
||||
@click="editor.chain().focus().toggleStrike().run()"
|
||||
:class="{ 'is-active': editor.isActive('strike') }"
|
||||
>
|
||||
Strike
|
||||
</button>
|
||||
</bubble-menu>
|
||||
|
||||
<floating-menu class="floating-menu" :tippy-options="{ duration: 100 }" :editor="editor">
|
||||
<button
|
||||
@click="editor.chain().focus().toggleHeading({ level: 1 }).run()"
|
||||
:class="{ 'is-active': editor.isActive('heading', { level: 1 }) }"
|
||||
>
|
||||
H1
|
||||
</button>
|
||||
<button
|
||||
@click="editor.chain().focus().toggleHeading({ level: 2 }).run()"
|
||||
:class="{ 'is-active': editor.isActive('heading', { level: 2 }) }"
|
||||
>
|
||||
H2
|
||||
</button>
|
||||
<button
|
||||
@click="editor.chain().focus().toggleBulletList().run()"
|
||||
:class="{ 'is-active': editor.isActive('bulletList') }"
|
||||
>
|
||||
Bullet List
|
||||
</button>
|
||||
</floating-menu>
|
||||
</div>
|
||||
|
||||
<editor-content class="editor" :editor="editor" />
|
||||
|
||||
<div class="send" @click="send()">SEND</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
.send:hover {
|
||||
background-color: var(--selected);
|
||||
}
|
||||
/* Basic editor styles */
|
||||
.editor {
|
||||
background-color: var(--secondary-background);
|
||||
}
|
||||
|
||||
.ProseMirror {
|
||||
> * + * {
|
||||
margin-top: 0.75em;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding-left: 1rem;
|
||||
border-left: 2px solid rgba(#0d0d0d, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.bubble-menu {
|
||||
display: flex;
|
||||
background-color: #0d0d0d;
|
||||
padding: 0.2rem;
|
||||
border-radius: 0.5rem;
|
||||
|
||||
button {
|
||||
border: none;
|
||||
background: none;
|
||||
color: #fff;
|
||||
font-size: 0.85rem;
|
||||
font-weight: 500;
|
||||
padding: 0 0.2rem;
|
||||
opacity: 0.6;
|
||||
|
||||
&:hover,
|
||||
&.is-active {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.floating-menu {
|
||||
display: flex;
|
||||
background-color: #0d0d0d10;
|
||||
padding: 0.2rem;
|
||||
border-radius: 0.5rem;
|
||||
|
||||
button {
|
||||
border: none;
|
||||
background: none;
|
||||
font-size: 0.85rem;
|
||||
font-weight: 500;
|
||||
padding: 0 0.2rem;
|
||||
opacity: 0.6;
|
||||
|
||||
&:hover,
|
||||
&.is-active {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -22,4 +22,8 @@ export default {
|
||||
removeFlag(data: { mailboxId: number; messageId: number; flag: string }) {
|
||||
return API().post(`/mail/removeFlag`, data);
|
||||
},
|
||||
reponseEmail(data: { user: string; roomId: number; text: string; html: string }) {
|
||||
console.log(data);
|
||||
return API().post(`/mail/response`, data);
|
||||
},
|
||||
};
|
||||
|
@ -14,7 +14,6 @@ interface RoomFromBack {
|
||||
userId: number;
|
||||
notSeen: number;
|
||||
parent_id?: number;
|
||||
// todo thread
|
||||
}
|
||||
|
||||
interface AccountFromBack {
|
||||
@ -99,7 +98,7 @@ const store = createStore<State>({
|
||||
setActiveRoom(state, payload) {
|
||||
state.activeRoom = payload;
|
||||
// todo load room on load page
|
||||
const room = state.rooms.find((room) => room.id == payload);
|
||||
const room = roomOnId(state, payload);
|
||||
if (!room) return;
|
||||
let roomMessage = msgOnRoomId(state, payload);
|
||||
if (!roomMessage) {
|
||||
@ -201,6 +200,12 @@ const store = createStore<State>({
|
||||
store.dispatch("fetchMessages", { roomId: roomId, obj: msgOnRoomId(state, roomId) });
|
||||
return msgOnRoomId(state, roomId)?.messages ?? [];
|
||||
},
|
||||
accountOfRoom:
|
||||
(state) =>
|
||||
(roomId: number): string | undefined => {
|
||||
const room = roomOnId(state, roomId);
|
||||
return state.accounts.find((account) => account.id == room?.mailboxId)?.email;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
fetchAccounts: async (context) => {
|
||||
|
@ -6,6 +6,7 @@ import { RoomType } from "@/store/models/model";
|
||||
import Header from "./Header.vue";
|
||||
import Message from "../../components/structure/message/Message.vue";
|
||||
import MessageViewModal from "@/components/modals/MessageViewModal.vue";
|
||||
import Composer from "@/components/structure/message/Composer.vue";
|
||||
|
||||
const store = useStore();
|
||||
const route = useRoute();
|
||||
@ -31,7 +32,11 @@ onBeforeRouteUpdate(async (to, from) => {
|
||||
|
||||
const shouldDisplayComposer = () => {
|
||||
if (!room?.value) return false;
|
||||
return room.value.roomType == RoomType.THREAD || room.value.roomType == RoomType.GROUP;
|
||||
return (
|
||||
room.value.roomType == RoomType.THREAD ||
|
||||
room.value.roomType == RoomType.GROUP ||
|
||||
room.value.roomType == RoomType.DM
|
||||
);
|
||||
};
|
||||
|
||||
function openMessageView(id) {
|
||||
@ -55,7 +60,7 @@ provide("room", room);
|
||||
@open-message-view="(id) => openMessageView(id)"
|
||||
/>
|
||||
</div>
|
||||
<div id="composer" v-if="shouldDisplayComposer()">COMPOSER</div>
|
||||
<Composer class="composer" v-if="shouldDisplayComposer()" />
|
||||
</div>
|
||||
<MessageViewModal :message="message" :messageId="messageIdView" @close="() => openMessageView(-1)" />
|
||||
</div>
|
||||
@ -74,14 +79,13 @@ provide("room", room);
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#composer {
|
||||
.composer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
padding-top: 10px;
|
||||
|
||||
height: 35px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
.content {
|
||||
|
538
front/yarn.lock
538
front/yarn.lock
@ -973,7 +973,7 @@
|
||||
resolved "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz"
|
||||
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
|
||||
|
||||
"@babel/runtime@^7.12.13", "@babel/runtime@^7.8.4":
|
||||
"@babel/runtime@^7.12.13", "@babel/runtime@^7.13.10", "@babel/runtime@^7.8.4":
|
||||
version "7.20.13"
|
||||
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.13.tgz"
|
||||
integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==
|
||||
@ -1351,6 +1351,11 @@
|
||||
resolved "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz"
|
||||
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
|
||||
|
||||
"@linaria/core@3.0.0-beta.13":
|
||||
version "3.0.0-beta.13"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@linaria/core/-/core-3.0.0-beta.13.tgz"
|
||||
integrity sha512-3zEi5plBCOsEzUneRVuQb+2SAx3qaC1dj0FfFAI6zIJQoDWu0dlSwKijMRack7oO9tUWrchfj3OkKQAd1LBdVg==
|
||||
|
||||
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
|
||||
version "5.1.1-v1"
|
||||
resolved "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz"
|
||||
@ -1391,6 +1396,46 @@
|
||||
resolved "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz"
|
||||
integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
|
||||
|
||||
"@popperjs/core@^2.9.0":
|
||||
version "2.11.7"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@popperjs/core/-/core-2.11.7.tgz"
|
||||
integrity sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==
|
||||
|
||||
"@remirror/core-constants@^2.0.0":
|
||||
version "2.0.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@remirror/core-constants/-/core-constants-2.0.0.tgz"
|
||||
integrity sha512-vpePPMecHJllBqCWXl6+FIcZqS+tRUM2kSCCKFeEo1H3XUEv3ocijBIPhnlSAa7g6maX+12ATTgxrOsLpWVr2g==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.13.10"
|
||||
|
||||
"@remirror/core-helpers@^2.0.1":
|
||||
version "2.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@remirror/core-helpers/-/core-helpers-2.0.1.tgz"
|
||||
integrity sha512-s8M1pn33aBUhduvD1QR02uUQMegnFkGaTr4c1iBzxTTyg0rbQstzuQ7Q8TkL6n64JtgCdJS9jLz2dONb2meBKQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.13.10"
|
||||
"@linaria/core" "3.0.0-beta.13"
|
||||
"@remirror/core-constants" "^2.0.0"
|
||||
"@remirror/types" "^1.0.0"
|
||||
"@types/object.omit" "^3.0.0"
|
||||
"@types/object.pick" "^1.3.1"
|
||||
"@types/throttle-debounce" "^2.1.0"
|
||||
case-anything "^2.1.10"
|
||||
dash-get "^1.0.2"
|
||||
deepmerge "^4.2.2"
|
||||
fast-deep-equal "^3.1.3"
|
||||
make-error "^1.3.6"
|
||||
object.omit "^3.0.0"
|
||||
object.pick "^1.3.0"
|
||||
throttle-debounce "^3.0.1"
|
||||
|
||||
"@remirror/types@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@remirror/types/-/types-1.0.0.tgz"
|
||||
integrity sha512-7HQbW7k8VxrAtfzs9FxwO6XSDabn8tSFDi1wwzShOnU+cvaYpfxu0ygyTk3TpXsag1hgFKY3ZIlAfB4WVz2LkQ==
|
||||
dependencies:
|
||||
type-fest "^2.0.0"
|
||||
|
||||
"@sideway/address@^4.1.3":
|
||||
version "4.1.4"
|
||||
resolved "https://registry.npmmirror.com/@sideway/address/-/address-4.1.4.tgz"
|
||||
@ -1442,6 +1487,172 @@
|
||||
resolved "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz"
|
||||
integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==
|
||||
|
||||
"@tiptap/core@^2.0.0", "@tiptap/core@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/core/-/core-2.0.3.tgz"
|
||||
integrity sha512-jLyVIWAdjjlNzrsRhSE2lVL/7N8228/1R1QtaVU85UlMIwHFAcdzhD8FeiKkqxpTnGpaDVaTy7VNEtEgaYdCyA==
|
||||
|
||||
"@tiptap/extension-blockquote@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-blockquote/-/extension-blockquote-2.0.3.tgz"
|
||||
integrity sha512-rkUcFv2iL6f86DBBHoa4XdKNG2StvkJ7tfY9GoMpT46k3nxOaMTqak9/qZOo79TWxMLYtXzoxtKIkmWsbbcj4A==
|
||||
|
||||
"@tiptap/extension-bold@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-bold/-/extension-bold-2.0.3.tgz"
|
||||
integrity sha512-OGT62fMRovSSayjehumygFWTg2Qn0IDbqyMpigg/RUAsnoOI2yBZFVrdM2gk1StyoSay7gTn2MLw97IUfr7FXg==
|
||||
|
||||
"@tiptap/extension-bubble-menu@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.3.tgz"
|
||||
integrity sha512-lPt1ELrYCuoQrQEUukqjp9xt38EwgPUwaKHI3wwt2Rbv+C6q1gmRsK1yeO/KqCNmFxNqF2p9ZF9srOnug/RZDQ==
|
||||
dependencies:
|
||||
tippy.js "^6.3.7"
|
||||
|
||||
"@tiptap/extension-bullet-list@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.3.tgz"
|
||||
integrity sha512-RtaLiRvZbMTOje+FW5bn+mYogiIgNxOm065wmyLPypnTbLSeHeYkoqVSqzZeqUn+7GLnwgn1shirUe6csVE/BA==
|
||||
|
||||
"@tiptap/extension-code-block@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-code-block/-/extension-code-block-2.0.3.tgz"
|
||||
integrity sha512-F4xMy18EwgpyY9f5Te7UuF7UwxRLptOtCq1p2c2DfxBvHDWhAjQqVqcW/sq/I/WuED7FwCnPLyyAasPiVPkLPw==
|
||||
|
||||
"@tiptap/extension-code@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-code/-/extension-code-2.0.3.tgz"
|
||||
integrity sha512-LsVCKVxgBtkstAr1FjxN8T3OjlC76a2X8ouoZpELMp+aXbjqyanCKzt+sjjUhE4H0yLFd4v+5v6UFoCv4EILiw==
|
||||
|
||||
"@tiptap/extension-document@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-document/-/extension-document-2.0.3.tgz"
|
||||
integrity sha512-PsYeNQQBYIU9ayz1R11Kv/kKNPFNIV8tApJ9pxelXjzcAhkjncNUazPN/dyho60mzo+WpsmS3ceTj/gK3bCtWA==
|
||||
|
||||
"@tiptap/extension-dropcursor@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.3.tgz"
|
||||
integrity sha512-McthMrfusn6PjcaynJLheZJcXto8TaIW5iVitYh8qQrDXr31MALC/5GvWuiswmQ8bAXiWPwlLDYE/OJfwtggaw==
|
||||
|
||||
"@tiptap/extension-floating-menu@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.3.tgz"
|
||||
integrity sha512-zN1vRGRvyK3pO2aHRmQSOTpl4UJraXYwKYM009n6WviYKUNm0LPGo+VD4OAtdzUhPXyccnlsTv2p6LIqFty6Bg==
|
||||
dependencies:
|
||||
tippy.js "^6.3.7"
|
||||
|
||||
"@tiptap/extension-gapcursor@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.3.tgz"
|
||||
integrity sha512-6I9EzzsYOyyqDvDvxIK6Rv3EXB+fHKFj8ntHO8IXmeNJ6pkhOinuXVsW6Yo7TcDYoTj4D5I2MNFAW2rIkgassw==
|
||||
|
||||
"@tiptap/extension-hard-break@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-hard-break/-/extension-hard-break-2.0.3.tgz"
|
||||
integrity sha512-RCln6ARn16jvKTjhkcAD5KzYXYS0xRMc0/LrHeV8TKdCd4Yd0YYHe0PU4F9gAgAfPQn7Dgt4uTVJLN11ICl8sQ==
|
||||
|
||||
"@tiptap/extension-heading@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-heading/-/extension-heading-2.0.3.tgz"
|
||||
integrity sha512-f0IEv5ms6aCzL80WeZ1qLCXTkRVwbpRr1qAETjg3gG4eoJN18+lZNOJYpyZy3P92C5KwF2T3Av00eFyVLIbb8Q==
|
||||
|
||||
"@tiptap/extension-history@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-history/-/extension-history-2.0.3.tgz"
|
||||
integrity sha512-00KHIcJ8kivn2ARI6NQYphv2LfllVCXViHGm0EhzDW6NQxCrriJKE3tKDcTFCu7LlC5doMpq9Z6KXdljc4oVeQ==
|
||||
|
||||
"@tiptap/extension-horizontal-rule@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.3.tgz"
|
||||
integrity sha512-SZRUSh07b/M0kJHNKnfBwBMWrZBEm/E2LrK1NbluwT3DBhE+gvwiEdBxgB32zKHNxaDEXUJwUIPNC3JSbKvPUA==
|
||||
|
||||
"@tiptap/extension-italic@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-italic/-/extension-italic-2.0.3.tgz"
|
||||
integrity sha512-cfS5sW0gu7qf4ihwnLtW/QMTBrBEXaT0sJl3RwkhjIBg/65ywJKE5Nz9ewnQHmDeT18hvMJJ1VIb4j4ze9jj9A==
|
||||
|
||||
"@tiptap/extension-list-item@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-list-item/-/extension-list-item-2.0.3.tgz"
|
||||
integrity sha512-p7cUsk0LpM1PfdAuFE8wYBNJ3gvA0UhNGR08Lo++rt9UaCeFLSN1SXRxg97c0oa5+Ski7SrCjIJ5Ynhz0viTjQ==
|
||||
|
||||
"@tiptap/extension-ordered-list@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.3.tgz"
|
||||
integrity sha512-ZB3MpZh/GEy1zKgw7XDQF4FIwycZWNof1k9WbDZOI063Ch4qHZowhVttH2mTCELuyvTMM/o9a8CS7qMqQB48bw==
|
||||
|
||||
"@tiptap/extension-paragraph@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-paragraph/-/extension-paragraph-2.0.3.tgz"
|
||||
integrity sha512-a+tKtmj4bU3GVCH1NE8VHWnhVexxX5boTVxsHIr4yGG3UoKo1c5AO7YMaeX2W5xB5iIA+BQqOPCDPEAx34dd2A==
|
||||
|
||||
"@tiptap/extension-strike@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-strike/-/extension-strike-2.0.3.tgz"
|
||||
integrity sha512-RO4/EYe2iPD6ifDHORT8fF6O9tfdtnzxLGwZIKZXnEgtweH+MgoqevEzXYdS+54Wraq4TUQGNcsYhe49pv7Rlw==
|
||||
|
||||
"@tiptap/extension-text@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/extension-text/-/extension-text-2.0.3.tgz"
|
||||
integrity sha512-LvzChcTCcPSMNLUjZe/A9SHXWGDHtvk73fR7CBqAeNU0MxhBPEBI03GFQ6RzW3xX0CmDmjpZoDxFMB+hDEtW1A==
|
||||
|
||||
"@tiptap/pm@^2.0.0", "@tiptap/pm@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/pm/-/pm-2.0.3.tgz"
|
||||
integrity sha512-I9dsInD89Agdm1QjFRO9dmJtU1ldVSILNPW0pEhv9wYqYVvl4HUj/JMtYNqu2jWrCHNXQcaX/WkdSdvGJtmg5g==
|
||||
dependencies:
|
||||
prosemirror-changeset "^2.2.0"
|
||||
prosemirror-collab "^1.3.0"
|
||||
prosemirror-commands "^1.3.1"
|
||||
prosemirror-dropcursor "^1.5.0"
|
||||
prosemirror-gapcursor "^1.3.1"
|
||||
prosemirror-history "^1.3.0"
|
||||
prosemirror-inputrules "^1.2.0"
|
||||
prosemirror-keymap "^1.2.0"
|
||||
prosemirror-markdown "^1.10.1"
|
||||
prosemirror-menu "^1.2.1"
|
||||
prosemirror-model "^1.18.1"
|
||||
prosemirror-schema-basic "^1.2.0"
|
||||
prosemirror-schema-list "^1.2.2"
|
||||
prosemirror-state "^1.4.1"
|
||||
prosemirror-tables "^1.3.0"
|
||||
prosemirror-trailing-node "^2.0.2"
|
||||
prosemirror-transform "^1.7.0"
|
||||
prosemirror-view "^1.28.2"
|
||||
|
||||
"@tiptap/starter-kit@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/starter-kit/-/starter-kit-2.0.3.tgz"
|
||||
integrity sha512-t4WG4w93zTpL2VxhVyJJvl3kdLF001ZrhpOuEiZqEMBMUMbM56Uiigv1CnUQpTFrjDAh3IM8hkqzAh20TYw2iQ==
|
||||
dependencies:
|
||||
"@tiptap/core" "^2.0.3"
|
||||
"@tiptap/extension-blockquote" "^2.0.3"
|
||||
"@tiptap/extension-bold" "^2.0.3"
|
||||
"@tiptap/extension-bullet-list" "^2.0.3"
|
||||
"@tiptap/extension-code" "^2.0.3"
|
||||
"@tiptap/extension-code-block" "^2.0.3"
|
||||
"@tiptap/extension-document" "^2.0.3"
|
||||
"@tiptap/extension-dropcursor" "^2.0.3"
|
||||
"@tiptap/extension-gapcursor" "^2.0.3"
|
||||
"@tiptap/extension-hard-break" "^2.0.3"
|
||||
"@tiptap/extension-heading" "^2.0.3"
|
||||
"@tiptap/extension-history" "^2.0.3"
|
||||
"@tiptap/extension-horizontal-rule" "^2.0.3"
|
||||
"@tiptap/extension-italic" "^2.0.3"
|
||||
"@tiptap/extension-list-item" "^2.0.3"
|
||||
"@tiptap/extension-ordered-list" "^2.0.3"
|
||||
"@tiptap/extension-paragraph" "^2.0.3"
|
||||
"@tiptap/extension-strike" "^2.0.3"
|
||||
"@tiptap/extension-text" "^2.0.3"
|
||||
|
||||
"@tiptap/vue-3@^2.0.3":
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tiptap/vue-3/-/vue-3-2.0.3.tgz"
|
||||
integrity sha512-2CtNUzt+e7sgvIjxPOyBwoiRcuCHNeJzW+XGxNK2uCWlAKp/Yw3boJ51d51UuIbj9RitGHJ5GpCdLJoL7SDiQA==
|
||||
dependencies:
|
||||
"@tiptap/extension-bubble-menu" "^2.0.3"
|
||||
"@tiptap/extension-floating-menu" "^2.0.3"
|
||||
|
||||
"@tootallnate/once@1":
|
||||
version "1.1.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@tootallnate/once/-/once-1.1.2.tgz"
|
||||
@ -1648,6 +1859,16 @@
|
||||
resolved "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz"
|
||||
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
|
||||
|
||||
"@types/object.omit@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@types/object.omit/-/object.omit-3.0.0.tgz"
|
||||
integrity sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw==
|
||||
|
||||
"@types/object.pick@^1.3.1":
|
||||
version "1.3.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@types/object.pick/-/object.pick-1.3.2.tgz"
|
||||
integrity sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg==
|
||||
|
||||
"@types/parse-json@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz"
|
||||
@ -1715,6 +1936,11 @@
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz"
|
||||
integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==
|
||||
|
||||
"@types/throttle-debounce@^2.1.0":
|
||||
version "2.1.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz"
|
||||
integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==
|
||||
|
||||
"@types/tough-cookie@*":
|
||||
version "4.0.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/@types/tough-cookie/-/tough-cookie-4.0.2.tgz"
|
||||
@ -2638,6 +2864,11 @@ argparse@^1.0.7:
|
||||
dependencies:
|
||||
sprintf-js "~1.0.2"
|
||||
|
||||
argparse@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/argparse/-/argparse-2.0.1.tgz"
|
||||
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
|
||||
|
||||
array-flatten@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz"
|
||||
@ -2995,6 +3226,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449:
|
||||
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz"
|
||||
integrity sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==
|
||||
|
||||
case-anything@^2.1.10:
|
||||
version "2.1.10"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/case-anything/-/case-anything-2.1.10.tgz"
|
||||
integrity sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==
|
||||
|
||||
case-sensitive-paths-webpack-plugin@^2.3.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz"
|
||||
@ -3044,7 +3280,7 @@ char-regex@^2.0.0:
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/char-regex/-/char-regex-2.0.1.tgz"
|
||||
integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==
|
||||
|
||||
chokidar@^3.4.2, chokidar@^3.5.3:
|
||||
chokidar@^3.4.2, chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0":
|
||||
version "3.5.3"
|
||||
resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz"
|
||||
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
|
||||
@ -3357,6 +3593,11 @@ cosmiconfig@^7.0.0:
|
||||
path-type "^4.0.0"
|
||||
yaml "^1.10.0"
|
||||
|
||||
crelt@^1.0.0:
|
||||
version "1.0.5"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/crelt/-/crelt-1.0.5.tgz"
|
||||
integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
|
||||
|
||||
cross-spawn@^5.0.1:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz"
|
||||
@ -3532,6 +3773,11 @@ csstype@^2.6.8:
|
||||
resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz"
|
||||
integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==
|
||||
|
||||
dash-get@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/dash-get/-/dash-get-1.0.2.tgz"
|
||||
integrity sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==
|
||||
|
||||
data-urls@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/data-urls/-/data-urls-2.0.0.tgz"
|
||||
@ -3797,6 +4043,13 @@ encodeurl@~1.0.2:
|
||||
resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz"
|
||||
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
|
||||
|
||||
encoding@^0.1.0:
|
||||
version "0.1.13"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/encoding/-/encoding-0.1.13.tgz"
|
||||
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
|
||||
dependencies:
|
||||
iconv-lite "^0.6.2"
|
||||
|
||||
end-of-stream@^1.1.0:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz"
|
||||
@ -3829,6 +4082,11 @@ entities@^4.4.0:
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/entities/-/entities-4.4.0.tgz"
|
||||
integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
|
||||
|
||||
entities@~3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/entities/-/entities-3.0.1.tgz"
|
||||
integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
|
||||
|
||||
error-ex@^1.3.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz"
|
||||
@ -3870,7 +4128,7 @@ escape-string-regexp@^2.0.0:
|
||||
|
||||
escape-string-regexp@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
|
||||
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
||||
|
||||
escodegen@^2.0.0:
|
||||
@ -4735,6 +4993,13 @@ human-signals@^2.1.0:
|
||||
resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz"
|
||||
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
|
||||
|
||||
iconv-lite@^0.6.2:
|
||||
version "0.6.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/iconv-lite/-/iconv-lite-0.6.3.tgz"
|
||||
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||
|
||||
iconv-lite@0.4.24:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
|
||||
@ -4762,6 +5027,11 @@ ignore@^5.2.0:
|
||||
resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz"
|
||||
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
|
||||
|
||||
immutable@^4.0.0:
|
||||
version "4.3.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/immutable/-/immutable-4.3.0.tgz"
|
||||
integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==
|
||||
|
||||
import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
|
||||
@ -4857,6 +5127,13 @@ is-extendable@^0.1.0:
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/is-extendable/-/is-extendable-0.1.1.tgz"
|
||||
integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
|
||||
|
||||
is-extendable@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/is-extendable/-/is-extendable-1.0.1.tgz"
|
||||
integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
|
||||
dependencies:
|
||||
is-plain-object "^2.0.4"
|
||||
|
||||
is-extglob@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz"
|
||||
@ -5642,7 +5919,7 @@ kleur@^3.0.3:
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/kleur/-/kleur-3.0.3.tgz"
|
||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||
|
||||
klona@^2.0.5:
|
||||
klona@^2.0.5, klona@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz"
|
||||
integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
|
||||
@ -5693,6 +5970,13 @@ lines-and-columns@^1.1.6:
|
||||
resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
|
||||
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
||||
|
||||
linkify-it@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/linkify-it/-/linkify-it-4.0.1.tgz"
|
||||
integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==
|
||||
dependencies:
|
||||
uc.micro "^1.0.1"
|
||||
|
||||
loader-runner@^4.1.0, loader-runner@^4.2.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz"
|
||||
@ -5837,7 +6121,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
|
||||
dependencies:
|
||||
semver "^6.0.0"
|
||||
|
||||
make-error@1.x:
|
||||
make-error@^1.3.6, make-error@1.x:
|
||||
version "1.3.6"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/make-error/-/make-error-1.3.6.tgz"
|
||||
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
||||
@ -5849,6 +6133,17 @@ makeerror@1.0.12:
|
||||
dependencies:
|
||||
tmpl "1.0.5"
|
||||
|
||||
markdown-it@^13.0.1:
|
||||
version "13.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/markdown-it/-/markdown-it-13.0.1.tgz"
|
||||
integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==
|
||||
dependencies:
|
||||
argparse "^2.0.1"
|
||||
entities "~3.0.1"
|
||||
linkify-it "^4.0.1"
|
||||
mdurl "^1.0.1"
|
||||
uc.micro "^1.0.5"
|
||||
|
||||
mdn-data@2.0.14:
|
||||
version "2.0.14"
|
||||
resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz"
|
||||
@ -5859,6 +6154,11 @@ mdn-data@2.0.30:
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/mdn-data/-/mdn-data-2.0.30.tgz"
|
||||
integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
|
||||
|
||||
mdurl@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/mdurl/-/mdurl-1.0.1.tgz"
|
||||
integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
|
||||
|
||||
media-typer@0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz"
|
||||
@ -6168,6 +6468,20 @@ object.assign@^4.1.0:
|
||||
has-symbols "^1.0.3"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
object.omit@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/object.omit/-/object.omit-3.0.0.tgz"
|
||||
integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==
|
||||
dependencies:
|
||||
is-extendable "^1.0.0"
|
||||
|
||||
object.pick@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/object.pick/-/object.pick-1.3.0.tgz"
|
||||
integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
|
||||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
obuf@^1.0.0, obuf@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz"
|
||||
@ -6259,6 +6573,11 @@ ora@^5.3.0:
|
||||
strip-ansi "^6.0.0"
|
||||
wcwidth "^1.0.1"
|
||||
|
||||
orderedmap@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/orderedmap/-/orderedmap-2.1.0.tgz"
|
||||
integrity sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA==
|
||||
|
||||
p-finally@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz"
|
||||
@ -6783,6 +7102,160 @@ prompts@^2.0.1:
|
||||
kleur "^3.0.3"
|
||||
sisteransi "^1.0.5"
|
||||
|
||||
prosemirror-changeset@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-changeset/-/prosemirror-changeset-2.2.0.tgz"
|
||||
integrity sha512-QM7ohGtkpVpwVGmFb8wqVhaz9+6IUXcIQBGZ81YNAKYuHiFJ1ShvSzab4pKqTinJhwciZbrtBEk/2WsqSt2PYg==
|
||||
dependencies:
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-collab@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-collab/-/prosemirror-collab-1.3.0.tgz"
|
||||
integrity sha512-+S/IJ69G2cUu2IM5b3PBekuxs94HO1CxJIWOFrLQXUaUDKL/JfBx+QcH31ldBlBXyDEUl+k3Vltfi1E1MKp2mA==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
|
||||
prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1:
|
||||
version "1.5.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-commands/-/prosemirror-commands-1.5.1.tgz"
|
||||
integrity sha512-ga1ga/RkbzxfAvb6iEXYmrEpekn5NCwTb8w1dr/gmhSoaGcQ0VPuCzOn5qDEpC45ql2oDkKoKQbRxLJwKLpMTQ==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-dropcursor@^1.5.0:
|
||||
version "1.8.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.0.tgz"
|
||||
integrity sha512-TZMitR8nlp9Xh42pDYGcWopCoFPmJduoyGJ7FjYM2/7gZKnfD41TIaZN5Q1cQjm6Fm/P5vk/DpVYFhS8kDdigw==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.1.0"
|
||||
prosemirror-view "^1.1.0"
|
||||
|
||||
prosemirror-gapcursor@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.1.tgz"
|
||||
integrity sha512-GKTeE7ZoMsx5uVfc51/ouwMFPq0o8YrZ7Hx4jTF4EeGbXxBveUV8CGv46mSHuBBeXGmvu50guoV2kSnOeZZnUA==
|
||||
dependencies:
|
||||
prosemirror-keymap "^1.0.0"
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-view "^1.0.0"
|
||||
|
||||
prosemirror-history@^1.0.0, prosemirror-history@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-history/-/prosemirror-history-1.3.0.tgz"
|
||||
integrity sha512-qo/9Wn4B/Bq89/YD+eNWFbAytu6dmIM85EhID+fz9Jcl9+DfGEo8TTSrRhP15+fFEoaPqpHSxlvSzSEbmlxlUA==
|
||||
dependencies:
|
||||
prosemirror-state "^1.2.2"
|
||||
prosemirror-transform "^1.0.0"
|
||||
rope-sequence "^1.3.0"
|
||||
|
||||
prosemirror-inputrules@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-inputrules/-/prosemirror-inputrules-1.2.0.tgz"
|
||||
integrity sha512-eAW/M/NTSSzpCOxfR8Abw6OagdG0MiDAiWHQMQveIsZtoKVYzm0AflSPq/ymqJd56/Su1YPbwy9lM13wgHOFmQ==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-keymap/-/prosemirror-keymap-1.2.1.tgz"
|
||||
integrity sha512-kVK6WGC+83LZwuSJnuCb9PsADQnFZllt94qPP3Rx/vLcOUV65+IbBeH2nS5cFggPyEVJhGkGrgYFRrG250WhHQ==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
w3c-keyname "^2.2.0"
|
||||
|
||||
prosemirror-markdown@^1.10.1:
|
||||
version "1.10.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-markdown/-/prosemirror-markdown-1.10.1.tgz"
|
||||
integrity sha512-s7iaTLiX+qO5z8kF2NcMmy2T7mIlxzkS4Sp3vTKSYChPtbMpg6YxFkU0Y06rUg2WtKlvBu7v1bXzlGBkfjUWAA==
|
||||
dependencies:
|
||||
markdown-it "^13.0.1"
|
||||
prosemirror-model "^1.0.0"
|
||||
|
||||
prosemirror-menu@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-menu/-/prosemirror-menu-1.2.1.tgz"
|
||||
integrity sha512-sBirXxVfHalZO4f1ZS63WzewINK4182+7dOmoMeBkqYO8wqMBvBS7wQuwVOHnkMWPEh0+N0LJ856KYUN+vFkmQ==
|
||||
dependencies:
|
||||
crelt "^1.0.0"
|
||||
prosemirror-commands "^1.0.0"
|
||||
prosemirror-history "^1.0.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
|
||||
prosemirror-model@^1, prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.8.1:
|
||||
version "1.19.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-model/-/prosemirror-model-1.19.0.tgz"
|
||||
integrity sha512-/CvFGJnwc41EJSfDkQLly1cAJJJmBpZwwUJtwZPTjY2RqZJfM8HVbCreOY/jti8wTRbVyjagcylyGoeJH/g/3w==
|
||||
dependencies:
|
||||
orderedmap "^2.0.0"
|
||||
|
||||
prosemirror-schema-basic@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.1.tgz"
|
||||
integrity sha512-vYBdIHsYKSDIqYmPBC7lnwk9DsKn8PnVqK97pMYP5MLEDFqWIX75JiaJTzndBii4bRuNqhC2UfDOfM3FKhlBHg==
|
||||
dependencies:
|
||||
prosemirror-model "^1.19.0"
|
||||
|
||||
prosemirror-schema-list@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-schema-list/-/prosemirror-schema-list-1.2.2.tgz"
|
||||
integrity sha512-rd0pqSDp86p0MUMKG903g3I9VmElFkQpkZ2iOd3EOVg1vo5Cst51rAsoE+5IPy0LPXq64eGcCYlW1+JPNxOj2w==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-state@^1, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.1:
|
||||
version "1.4.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-state/-/prosemirror-state-1.4.2.tgz"
|
||||
integrity sha512-puuzLD2mz/oTdfgd8msFbe0A42j5eNudKAAPDB0+QJRw8cO1ygjLmhLrg9RvDpf87Dkd6D4t93qdef00KKNacQ==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
prosemirror-view "^1.27.0"
|
||||
|
||||
prosemirror-tables@^1.3.0:
|
||||
version "1.3.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-tables/-/prosemirror-tables-1.3.2.tgz"
|
||||
integrity sha512-/9JTeN6s58Zq66HXaxP6uf8PAmc7XXKZFPlOGVtLvxEd6xBP6WtzaJB9wBjiGUzwbdhdMEy7V62yuHqk/3VrnQ==
|
||||
dependencies:
|
||||
prosemirror-keymap "^1.1.2"
|
||||
prosemirror-model "^1.8.1"
|
||||
prosemirror-state "^1.3.1"
|
||||
prosemirror-transform "^1.2.1"
|
||||
prosemirror-view "^1.13.3"
|
||||
|
||||
prosemirror-trailing-node@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.3.tgz"
|
||||
integrity sha512-lGrjMrn97KWkjQSW/FjdvnhJmqFACmQIyr6lKYApvHitDnKsCoZz6XzrHB7RZYHni/0NxQmZ01p/2vyK2SkvaA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.13.10"
|
||||
"@remirror/core-constants" "^2.0.0"
|
||||
"@remirror/core-helpers" "^2.0.1"
|
||||
escape-string-regexp "^4.0.0"
|
||||
|
||||
prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.0:
|
||||
version "1.7.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-transform/-/prosemirror-transform-1.7.1.tgz"
|
||||
integrity sha512-VteoifAfpt46z0yEt6Fc73A5OID9t/y2QIeR5MgxEwTuitadEunD/V0c9jQW8ziT8pbFM54uTzRLJ/nLuQjMxg==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
|
||||
prosemirror-view@^1, prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2:
|
||||
version "1.30.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/prosemirror-view/-/prosemirror-view-1.30.2.tgz"
|
||||
integrity sha512-nTNzZvalQf9kHeEyO407LiV6DoOs/pXsid88UqW9Vvybo4ozJW2PJhkfZUxCUF1hR/9vJLdhxX84wuw9P9HsXA==
|
||||
dependencies:
|
||||
prosemirror-model "^1.16.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.1.0"
|
||||
|
||||
proto-list@~1.2.1:
|
||||
version "1.2.4"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/proto-list/-/proto-list-1.2.4.tgz"
|
||||
@ -7064,6 +7537,11 @@ rimraf@^3.0.0, rimraf@^3.0.2:
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rope-sequence@^1.3.0:
|
||||
version "1.3.3"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/rope-sequence/-/rope-sequence-1.3.3.tgz"
|
||||
integrity sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q==
|
||||
|
||||
run-parallel@^1.1.9:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz"
|
||||
@ -7086,11 +7564,28 @@ safe-buffer@5.1.2:
|
||||
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3":
|
||||
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sass-loader@^13.2.2:
|
||||
version "13.2.2"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/sass-loader/-/sass-loader-13.2.2.tgz"
|
||||
integrity sha512-nrIdVAAte3B9icfBiGWvmMhT/D+eCDwnk+yA7VE/76dp/WkHX+i44Q/pfo71NYbwj0Ap+PGsn0ekOuU1WFJ2AA==
|
||||
dependencies:
|
||||
klona "^2.0.6"
|
||||
neo-async "^2.6.2"
|
||||
|
||||
sass@^1.3.0, sass@^1.62.0:
|
||||
version "1.62.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/sass/-/sass-1.62.0.tgz"
|
||||
integrity sha512-Q4USplo4pLYgCi+XlipZCWUQz5pkg/ruSSgJ0WRDSb/+3z9tXUOkQ7QPYn4XrhZKYAK4HlpaQecRwKLJX6+DBg==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
source-map-js ">=0.6.2 <2.0.0"
|
||||
|
||||
saxes@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/saxes/-/saxes-5.0.1.tgz"
|
||||
@ -7390,7 +7885,7 @@ sockjs@^0.3.24:
|
||||
uuid "^8.3.2"
|
||||
websocket-driver "^0.7.4"
|
||||
|
||||
source-map-js@^1.0.1, source-map-js@^1.0.2:
|
||||
source-map-js@^1.0.1, source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz"
|
||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||
@ -7773,11 +8268,23 @@ throat@^6.0.1:
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/throat/-/throat-6.0.2.tgz"
|
||||
integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==
|
||||
|
||||
throttle-debounce@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/throttle-debounce/-/throttle-debounce-3.0.1.tgz"
|
||||
integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
|
||||
|
||||
thunky@^1.0.2:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz"
|
||||
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
|
||||
|
||||
tippy.js@^6.3.7:
|
||||
version "6.3.7"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/tippy.js/-/tippy.js-6.3.7.tgz"
|
||||
integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==
|
||||
dependencies:
|
||||
"@popperjs/core" "^2.9.0"
|
||||
|
||||
tmpl@1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/tmpl/-/tmpl-1.0.5.tgz"
|
||||
@ -7917,6 +8424,11 @@ type-fest@^0.8.1:
|
||||
resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz"
|
||||
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
|
||||
|
||||
type-fest@^2.0.0:
|
||||
version "2.19.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/type-fest/-/type-fest-2.19.0.tgz"
|
||||
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
|
||||
|
||||
type-is@~1.6.18:
|
||||
version "1.6.18"
|
||||
resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz"
|
||||
@ -7937,6 +8449,11 @@ typescript@*, "typescript@>= 2.7", "typescript@>= 3.x", typescript@>=2, "typescr
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/typescript/-/typescript-4.5.5.tgz"
|
||||
integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
|
||||
|
||||
uc.micro@^1.0.1, uc.micro@^1.0.5:
|
||||
version "1.0.6"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/uc.micro/-/uc.micro-1.0.6.tgz"
|
||||
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
|
||||
|
||||
unicode-canonical-property-names-ecmascript@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz"
|
||||
@ -8097,7 +8614,7 @@ vue-template-es2015-compiler@^1.9.0:
|
||||
resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
|
||||
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
|
||||
|
||||
vue@*, "vue@^2 || ^3.2.13", vue@^3.0.0-0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.0.1, vue@^3.0.2, vue@^3.2.0, vue@^3.2.13, vue@3.2.47:
|
||||
vue@*, "vue@^2 || ^3.2.13", vue@^3.0.0, vue@^3.0.0-0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.0.1, vue@^3.0.2, vue@^3.2.0, vue@^3.2.13, vue@3.2.47:
|
||||
version "3.2.47"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/vue/-/vue-3.2.47.tgz"
|
||||
integrity sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==
|
||||
@ -8122,6 +8639,11 @@ w3c-hr-time@^1.0.2:
|
||||
dependencies:
|
||||
browser-process-hrtime "^1.0.0"
|
||||
|
||||
w3c-keyname@^2.2.0:
|
||||
version "2.2.6"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/w3c-keyname/-/w3c-keyname-2.2.6.tgz"
|
||||
integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==
|
||||
|
||||
w3c-xmlserializer@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://repo.plus4u.net/operatorGate/repository/public-javascript/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz"
|
||||
|
Loading…
Reference in New Issue
Block a user