From 7b99edc47102cf1f6b0777cbe803bf190f7aeb3c Mon Sep 17 00:00:00 2001
From: SamTV12345 <40429738+samtv12345@users.noreply.github.com>
Date: Fri, 23 Jun 2023 20:53:55 +0200
Subject: [PATCH] Moved to ts for other dependencies.
---
src/node/db/API.ts | 31 +-
src/node/db/AuthorManager.ts | 10 +-
src/node/db/DB.ts | 20 +-
src/node/db/GroupManager.ts | 6 +-
src/node/db/Pad.ts | 33 +-
src/node/db/ReadOnlyManager.ts | 6 +-
src/node/db/SecurityManager.ts | 4 +-
src/node/eejs/index.ts | 4 +-
src/node/handler/ImportHandler.ts | 4 +-
src/node/handler/PadMessageHandler.ts | 28 +-
src/node/hooks/express.ts | 10 +-
src/node/hooks/express/adminplugins.ts | 34 +-
src/node/hooks/express/adminsettings.ts | 14 +-
src/node/hooks/express/errorhandling.ts | 5 +-
src/node/hooks/express/importexport.ts | 2 +-
src/node/hooks/express/openapi.ts | 2 +-
src/node/hooks/express/padurlsanitize.ts | 2 +-
src/node/hooks/express/socketio.ts | 8 +-
src/node/hooks/express/specialpages.ts | 10 +-
src/node/hooks/express/tests.ts | 4 +-
src/node/hooks/express/webaccess.ts | 7 +-
src/node/hooks/i18n.ts | 12 +-
src/node/models/CMDArgv.ts | 3 +
src/node/utils/Abiword.ts | 6 +-
src/node/utils/Cli.ts | 17 +-
src/node/utils/ExportEtherpad.ts | 6 +-
src/node/utils/ExportHtml.ts | 14 +-
src/node/utils/ImportEtherpad.ts | 8 +-
src/node/utils/Minify.ts | 6 +-
src/node/utils/Settings.ts | 38 +-
src/node/utils/TidyHtml.ts | 2 +-
src/node/utils/UpdateCheck.ts | 4 +-
src/node/utils/customError.ts | 1 +
src/node/utils/padDiff.ts | 4 +-
src/node/utils/run_cmd.ts | 2 +-
src/package-lock.json | 1653 +++++++----------
src/package.json | 4 +-
src/static/js/{Changeset.js => Changeset.ts} | 154 +-
src/static/js/pluginfw/{hooks.js => hooks.ts} | 45 +-
.../pluginfw/{installer.js => installer.ts} | 56 +-
.../{plugin_defs.js => plugin_defs.ts} | 24 +-
.../js/pluginfw/{plugins.js => plugins.ts} | 82 +-
.../js/pluginfw/{shared.js => shared.ts} | 14 +-
src/static/js/pluginfw/{tsort.js => tsort.ts} | 8 +-
src/static/module/InstallerModel.ts | 5 +
src/static/module/PluginInfo.ts | 4 +
src/tsconfig.json | 3 +-
47 files changed, 1056 insertions(+), 1363 deletions(-)
create mode 100644 src/node/models/CMDArgv.ts
rename src/static/js/{Changeset.js => Changeset.ts} (95%)
rename src/static/js/pluginfw/{hooks.js => hooks.ts} (93%)
rename src/static/js/pluginfw/{installer.js => installer.ts} (66%)
rename src/static/js/pluginfw/{plugin_defs.js => plugin_defs.ts} (72%)
rename src/static/js/pluginfw/{plugins.js => plugins.ts} (70%)
rename src/static/js/pluginfw/{shared.js => shared.ts} (91%)
rename src/static/js/pluginfw/{tsort.js => tsort.ts} (89%)
create mode 100644 src/static/module/InstallerModel.ts
create mode 100644 src/static/module/PluginInfo.ts
diff --git a/src/node/db/API.ts b/src/node/db/API.ts
index d434eb556..6f585ccee 100644
--- a/src/node/db/API.ts
+++ b/src/node/db/API.ts
@@ -50,41 +50,18 @@ import {getPadHTMLDocument} from "../utils/ExportHtml";
* GROUP FUNCTIONS ****
******************** */
-/*
-exports.listAllGroups = listAllGroups;
-exports.createGroup = createGroup;
-exports.createGroupIfNotExistsFor = createGroupIfNotExistsFor;
-exports.deleteGroup = deleteGroup;
-exports.listPads = listPads;
-exports.createGroupPad = createGroupPad;
-*/
/* ********************
* PADLIST FUNCTION ***
******************** */
-/*
-exports.listAllPads = padManager.listAllPads;
-*/
+
/* ********************
* AUTHOR FUNCTIONS ***
******************** */
-/*
-exports.createAuthor = createAuthor;
-exports.createAuthorIfNotExistsFor = createAuthorIfNotExistsFor;
-exports.getAuthorName = getAuthorName;
-exports.listPadsOfAuthor = listPadsOfAuthor;
-exports.padUsers = padMessageHandler.padUsers;
-exports.padUsersCount = padMessageHandler.padUsersCount;
-*/
+
/* ********************
* SESSION FUNCTIONS **
******************** */
-/*
-exports.createSession = sessionManager.createSession;
-exports.deleteSession = sessionManager.deleteSession;
-exports.getSessionInfo = sessionManager.getSessionInfo;
-exports.listSessionsOfGroup = sessionManager.listSessionsOfGroup;
-exports.listSessionsOfAuthor = sessionManager.listSessionsOfAuthor;
-*/
+
/* ***********************
* PAD CONTENT FUNCTIONS *
*********************** */
@@ -742,7 +719,7 @@ Example returns:
{"code":0,"message":"ok","data":null}
{"code":4,"message":"no or wrong API Key","data":null}
*/
-exports.checkToken = async () => {
+export const checkToken = async () => {
};
/**
diff --git a/src/node/db/AuthorManager.ts b/src/node/db/AuthorManager.ts
index a3f5db0dc..3dd316f67 100644
--- a/src/node/db/AuthorManager.ts
+++ b/src/node/db/AuthorManager.ts
@@ -21,7 +21,7 @@
import {db} from './DB';
import {CustomError} from '../utils/customError';
-import hooks from '../../static/js/pluginfw/hooks.js';
+import {aCallFirst} from '../../static/js/pluginfw/hooks.js';
const {randomString, padutils: {warnDeprecated}} = require('../../static/js/pad_utils');
@@ -110,7 +110,7 @@ const getAuthor4Token2 = async (token: string) => {
export const getAuthorId = async (token, user) => {
const context = {dbKey: token, token, user};
- let [authorId] = await hooks.aCallFirst('getAuthorId', context);
+ let [authorId] = await aCallFirst('getAuthorId', context);
if (!authorId) authorId = await getAuthor4Token2(context.dbKey);
return authorId;
};
@@ -137,7 +137,7 @@ export const createAuthorIfNotExistsFor = async (authorMapper, name: string) =>
if (name) {
// set the name of this author
- await exports.setAuthorName(author.authorID, name);
+ await setAuthorName(author.authorID, name);
}
return author;
@@ -155,7 +155,7 @@ export const mapAuthorWithDBKey = async (mapperkey: string, mapper) => {
if (author == null) {
// there is no author with this mapper, so create one
- const author = await exports.createAuthor(null);
+ const author = await createAuthor(null);
// create the token2author relation
await db.set(`${mapperkey}:${mapper}`, author.authorID);
@@ -182,7 +182,7 @@ export const createAuthor = async (name) => {
// create the globalAuthors db entry
const authorObj = {
- colorId: Math.floor(Math.random() * (exports.getColorPalette().length)),
+ colorId: Math.floor(Math.random() * (getColorPalette().length)),
name,
timestamp: Date.now(),
};
diff --git a/src/node/db/DB.ts b/src/node/db/DB.ts
index 6eca386fe..9d1379fe8 100644
--- a/src/node/db/DB.ts
+++ b/src/node/db/DB.ts
@@ -31,32 +31,32 @@ const logger = log4js.getLogger('ueberDB');
/**
* The UeberDB Object that provides the database functions
*/
-const db = null;
+let db = null;
/**
* Initializes the database with the settings provided by the settings module
*/
const init = async () => {
- exports.db = new ueberDB.Database(dbType, dbSettings, null, logger);
- await exports.db.init();
- if (exports.db.metrics != null) {
- for (const [metric, value] of Object.entries(exports.db.metrics)) {
+ db = new ueberDB.Database(dbType, dbSettings, null, logger);
+ await db.init();
+ if (db.metrics != null) {
+ for (const [metric, value] of Object.entries(db.metrics)) {
if (typeof value !== 'number') continue;
// FIXME find a better replacement for measure-core
- createCollection.gauge(`ueberdb_${metric}`, () => exports.db.metrics[metric]);
+ createCollection.gauge(`ueberdb_${metric}`, () => db.metrics[metric]);
}
}
for (const fn of ['get', 'set', 'findKeys', 'getSub', 'setSub', 'remove']) {
- const f = exports.db[fn];
- exports[fn] = async (...args) => await f.call(exports.db, ...args);
+ const f = db[fn];
+ exports[fn] = async (...args) => await f.call(db, ...args);
Object.setPrototypeOf(exports[fn], Object.getPrototypeOf(f));
Object.defineProperties(exports[fn], Object.getOwnPropertyDescriptors(f));
}
};
const shutdown = async (hookName, context) => {
- if (exports.db != null) await exports.db.close();
- exports.db = null;
+ if (db != null) await db.close();
+ db = null;
logger.log('Database closed');
};
diff --git a/src/node/db/GroupManager.ts b/src/node/db/GroupManager.ts
index 0be2205d8..5df48b2e3 100644
--- a/src/node/db/GroupManager.ts
+++ b/src/node/db/GroupManager.ts
@@ -90,8 +90,8 @@ export const createGroupIfNotExistsFor = async (groupMapper) => {
throw new CustomError('groupMapper is not a string', 'apierror');
}
const groupID = await db.get(`mapper2group:${groupMapper}`);
- if (groupID && await exports.doesGroupExist(groupID)) return {groupID};
- const result = await exports.createGroup();
+ if (groupID && await doesGroupExist(groupID)) return {groupID};
+ const result = await createGroup();
await Promise.all([
db.set(`mapper2group:${groupMapper}`, result.groupID),
// Remember the mapping in the group record so that it can be cleaned up when the group is
@@ -132,7 +132,7 @@ export const createGroupPad = async (groupID, padName, text, authorId = '') => {
};
export const listPads = async (groupID) => {
- const exists = await exports.doesGroupExist(groupID);
+ const exists = await doesGroupExist(groupID);
// ensure the group exists
if (!exists) {
diff --git a/src/node/db/Pad.ts b/src/node/db/Pad.ts
index be7ac0155..b894299c3 100644
--- a/src/node/db/Pad.ts
+++ b/src/node/db/Pad.ts
@@ -4,7 +4,7 @@
*/
import AttributeMap from '../../static/js/AttributeMap';
-import Changeset from '../../static/js/Changeset';
+import {applyToAText, makeAText} from '../../static/js/Changeset';
import ChatMessage from '../../static/js/ChatMessage';
import {AttributePool} from '../../static/js/AttributePool';
import {Stream} from '../utils/Stream';
@@ -19,7 +19,7 @@ import {doesGroupExist} from './GroupManager';
import {CustomError} from '../utils/customError';
import {getReadOnlyId} from './ReadOnlyManager';
import {randomString} from '../utils/randomstring';
-import hooks from '../../static/js/pluginfw/hooks';
+import {aCallAll} from '../../static/js/pluginfw/hooks';
import {timesLimit} from '../utils/promises';
import {padutils} from '../../static/js/pad_utils';
/**
@@ -27,7 +27,7 @@ import {padutils} from '../../static/js/pad_utils';
* line breaks and convert Tabs to spaces
* @param txt
*/
-exports.cleanText = (txt) => txt.replace(/\r\n/g, '\n')
+export const cleanText = (txt) => txt.replace(/\r\n/g, '\n')
.replace(/\r/g, '\n')
.replace(/\t/g, ' ')
.replace(/\xa0/g, ' ');
@@ -51,7 +51,7 @@ export class Pad {
*/
constructor(id: string, database = db) {
this.db = database;
- this.atext = Changeset.makeAText('\n');
+ this.atext = makeAText('\n');
this.pool = new AttributePool();
this.head = -1;
this.chatHead = -1;
@@ -83,11 +83,11 @@ export class Pad {
}
async appendRevision(aChangeset, authorId = '') {
- const newAText = Changeset.applyToAText(aChangeset, this.atext, this.pool);
+ const newAText = applyToAText(aChangeset, this.atext, this.pool);
if (newAText.text === this.atext.text && newAText.attribs === this.atext.attribs) {
return this.head;
}
- Changeset.copyAText(newAText, this.atext);
+ copyAText(newAText, this.atext);
const newRev = ++this.head;
@@ -109,7 +109,7 @@ export class Pad {
}),
this.saveToDatabase(),
authorId && addPad(authorId, this.id),
- hooks.aCallAll(hook, {
+ aCallAll(hook, {
pad: this,
authorId,
get author() {
@@ -188,7 +188,7 @@ export class Pad {
]);
const apool = this.apool();
let atext = keyAText;
- for (const cs of changesets) atext = Changeset.applyToAText(cs, atext, apool);
+ for (const cs of changesets) atext = applyToAText(cs, atext, apool);
return atext;
}
@@ -259,7 +259,7 @@ export class Pad {
const orig = this.text();
assert(orig.endsWith('\n'));
if (start + ndel > orig.length) throw new RangeError('start/delete past the end of the text');
- ins = exports.cleanText(ins);
+ ins = cleanText(ins);
const willEndWithNewline =
start + ndel < orig.length || // Keeping last char (which is guaranteed to be a newline).
ins.endsWith('\n') ||
@@ -362,14 +362,14 @@ export class Pad {
} else {
if (text == null) {
const context = {pad: this, authorId, type: 'text', content: defaultPadText};
- await hooks.aCallAll('padDefaultContent', context);
+ await aCallAll('padDefaultContent', context);
if (context.type !== 'text') throw new Error(`unsupported content type: ${context.type}`);
- text = exports.cleanText(context.content);
+ text = cleanText(context.content);
}
const firstChangeset = Changeset.makeSplice('\n', 0, 0, text);
await this.appendRevision(firstChangeset, authorId);
}
- await hooks.aCallAll('padLoad', {pad: this});
+ await aCallAll('padLoad', {pad: this});
}
async copy(destinationID, force) {
@@ -405,7 +405,7 @@ export class Pad {
const dstPad = await getPad(destinationID, null);
// let the plugins know the pad was copied
- await hooks.aCallAll('padCopy', {
+ await aCallAll('padCopy', {
get originalPad() {
padutils.warnDeprecated('padCopy originalPad context property is deprecated; use srcPad instead');
return this.srcPad;
@@ -506,7 +506,7 @@ export class Pad {
const changeset = Changeset.pack(oldLength, newLength, assem.toString(), newText);
dstPad.appendRevision(changeset, authorId);
- await hooks.aCallAll('padCopy', {
+ await aCallAll('padCopy', {
get originalPad() {
padutils.warnDeprecated('padCopy originalPad context property is deprecated; use srcPad instead');
return this.srcPad;
@@ -571,7 +571,7 @@ export class Pad {
// delete the pad entry and delete pad from padManager
p.push(removePad(padID));
- p.push(hooks.aCallAll('padRemove', {
+ p.push(aCallAll('padRemove', {
get padID() {
padutils.warnDeprecated('padRemove padID context property is deprecated; use pad.id instead');
return this.pad.id;
@@ -730,7 +730,6 @@ export class Pad {
.batch(100).buffer(99);
for (const p of chats) await p;
- await hooks.aCallAll('padCheck', {pad: this});
+ await aCallAll('padCheck', {pad: this});
}
}
-exports.Pad = Pad;
diff --git a/src/node/db/ReadOnlyManager.ts b/src/node/db/ReadOnlyManager.ts
index 8d5a036c8..a96ad53ed 100644
--- a/src/node/db/ReadOnlyManager.ts
+++ b/src/node/db/ReadOnlyManager.ts
@@ -61,11 +61,11 @@ export const getPadId = async (readOnlyId) => await db.get(`readonly2pad:${readO
* @param {String} id padIdOrReadonlyPadId read only id or real pad id
*/
export const getIds = async (id: string) => {
- const readonly = exports.isReadOnlyId(id);
+ const readonly = isReadOnlyId(id);
// Might be null, if this is an unknown read-only id
- const readOnlyPadId = readonly ? id : await exports.getReadOnlyId(id);
- const padId = readonly ? await exports.getPadId(id) : id;
+ const readOnlyPadId = readonly ? id : await getReadOnlyId(id);
+ const padId = readonly ? await getPadId(id) : id;
return {readOnlyPadId, padId, readonly};
};
diff --git a/src/node/db/SecurityManager.ts b/src/node/db/SecurityManager.ts
index ca894b5e5..f0fc26551 100644
--- a/src/node/db/SecurityManager.ts
+++ b/src/node/db/SecurityManager.ts
@@ -21,7 +21,7 @@
import {getAuthorId} from "./AuthorManager";
-import hooks from "../../static/js/pluginfw/hooks.js";
+import {callAll} from "../../static/js/pluginfw/hooks.js";
import {doesPadExist, getPad} from "./PadManager";
@@ -102,7 +102,7 @@ export const checkAccess = async (padID, sessionCookie, token, userSettings) =>
// allow plugins to deny access
const isFalse = (x) => x === false;
- if (hooks.callAll('onAccessCheck', {padID, token, sessionCookie}).some(isFalse)) {
+ if (callAll('onAccessCheck', {padID, token, sessionCookie}).some(isFalse)) {
authLogger.debug('access denied: an onAccessCheck hook function returned false');
return DENY;
}
diff --git a/src/node/eejs/index.ts b/src/node/eejs/index.ts
index 42faa52a1..ff125e4c3 100644
--- a/src/node/eejs/index.ts
+++ b/src/node/eejs/index.ts
@@ -23,7 +23,7 @@
import ejs from 'ejs';
import fs from "fs";
-import hooks from "../../static/js/pluginfw/hooks.js";
+import {callAll} from "../../static/js/pluginfw/hooks.js";
import path from "path";
@@ -64,7 +64,7 @@ export const end_block = () => {
const content = info.__output.get();
info.__output.set(info.__output_stack.pop());
const args = {content, renderContext};
- hooks.callAll(`eejsBlock_${name}`, args);
+ callAll(`eejsBlock_${name}`, args);
info.__output.set(info.__output.get().concat(args.content));
};
diff --git a/src/node/handler/ImportHandler.ts b/src/node/handler/ImportHandler.ts
index 92f5e38a7..d83c15c67 100644
--- a/src/node/handler/ImportHandler.ts
+++ b/src/node/handler/ImportHandler.ts
@@ -32,7 +32,7 @@ import os from 'os';
import {setPadHTML} from '../utils/ImportHtml';
import {setPadRaw} from '../utils/ImportEtherpad';
import log4js from 'log4js';
-import hooks from '../../static/js/pluginfw/hooks.js';
+import {aCallAll} from '../../static/js/pluginfw/hooks.js';
const logger = log4js.getLogger('ImportHandler');
@@ -134,7 +134,7 @@ const doImport = async (req, res, padId, authorId) => {
const destFile = path.join(tmpDirectory, `etherpad_import_${randNum}.${exportExtension}`);
const context = {srcFile, destFile, fileEnding, padId, ImportError};
- const importHandledByPlugin = (await hooks.aCallAll('import', context)).some((x) => x);
+ const importHandledByPlugin = (await aCallAll('import', context)).some((x) => x);
const fileIsEtherpad = (fileEnding === '.etherpad');
const fileIsHTML = (fileEnding === '.html' || fileEnding === '.htm');
const fileIsTXT = (fileEnding === '.txt');
diff --git a/src/node/handler/PadMessageHandler.ts b/src/node/handler/PadMessageHandler.ts
index 5e9f0665d..edd97a703 100644
--- a/src/node/handler/PadMessageHandler.ts
+++ b/src/node/handler/PadMessageHandler.ts
@@ -45,15 +45,14 @@ import {
indentationOnNewLine,
padOptions,
padShortcutEnabled,
- randomVersionString,
scrollWhenFocusLineIsOutOfViewport,
skinName,
skinVariants,
sofficeAvailable
} from '../utils/Settings';
-import plugins from '../../static/js/pluginfw/plugin_defs.js';
+import {parts, plugins} from '../../static/js/pluginfw/plugin_defs.js';
import log4js from "log4js";
-import hooks from '../../static/js/pluginfw/hooks.js';
+import {aCallAll, deprecationNotices} from '../../static/js/pluginfw/hooks.js';
import {createCollection} from '../stats';
import {strict as assert} from "assert";
@@ -62,6 +61,7 @@ import {userCanModify} from '../hooks/express/webaccess';
import {ErrorCaused} from "../models/ErrorCaused";
import {Pad} from "../db/Pad";
import {SessionInfo} from "../models/SessionInfo";
+import {randomString} from "../utils/randomstring";
const securityManager = require('../db/SecurityManager');
@@ -71,7 +71,7 @@ const accessLogger = log4js.getLogger('access');
let rateLimiter;
let socketio = null;
-hooks.deprecationNotices.clientReady = 'use the userJoin hook instead';
+deprecationNotices.clientReady = 'use the userJoin hook instead';
const addContextToError = (err: Error, pfx) => {
const newErr = new ErrorCaused(`${pfx}${err.message}`, err);
@@ -225,7 +225,7 @@ export const handleDisconnect = async (socket) => {
},
},
});
- await hooks.aCallAll('userLeave', {
+ await aCallAll('userLeave', {
...session, // For backwards compatibility.
authorId: session.author,
readOnly: session.readonly,
@@ -328,7 +328,7 @@ export const handleMessage = async (socket, message) => {
return this.socket;
},
};
- for (const res of await hooks.aCallAll('handleMessageSecurity', context)) {
+ for (const res of await aCallAll('handleMessageSecurity', context)) {
switch (res) {
case true:
padutils.warnDeprecated(
@@ -346,7 +346,7 @@ export const handleMessage = async (socket, message) => {
}
// Call handleMessage hook. If a plugin returns null, the message will be dropped.
- if ((await hooks.aCallAll('handleMessage', context)).some((m) => m == null)) {
+ if ((await aCallAll('handleMessage', context)).some((m) => m == null)) {
return;
}
@@ -475,7 +475,7 @@ export const sendChatMessageToPadClients = async (mt, puId, text = null, padId =
const message = mt instanceof ChatMessage ? mt : new ChatMessage(text, puId, mt);
padId = mt instanceof ChatMessage ? puId : padId;
const pad = await getPad(padId, null, message.authorId);
- await hooks.aCallAll('chatNewMessage', {message, pad, padId});
+ await aCallAll('chatNewMessage', {message, pad, padId});
// pad.appendChatMessage() ignores the displayName property so we don't need to wait for
// authorManager.getAuthorName() to resolve before saving the message to the database.
const promise = pad.appendChatMessage(message);
@@ -809,7 +809,7 @@ const handleClientReady = async (socket, message) => {
if (sessionInfo == null) throw new Error('client disconnected');
assert(sessionInfo.author);
- await hooks.aCallAll('clientReady', message); // Deprecated due to awkward context.
+ await aCallAll('clientReady', message); // Deprecated due to awkward context.
let {colorId: authorColorId, name: authorName} = message.userInfo || {};
if (authorColorId && !/^#(?:[0-9A-F]{3}){1,2}$/i.test(authorColorId)) {
@@ -957,7 +957,7 @@ const handleClientReady = async (socket, message) => {
const clientVars = {
skinName: skinName,
skinVariants: skinVariants,
- randomVersionString: randomVersionString,
+ randomVersionString: randomString(4),
accountPrivs: {
maxRevisions: 100,
},
@@ -995,8 +995,8 @@ const handleClientReady = async (socket, message) => {
sofficeAvailable: sofficeAvailable(),
exportAvailable: exportAvailable(),
plugins: {
- plugins: plugins.plugins,
- parts: plugins.parts,
+ plugins: plugins,
+ parts: parts,
},
indentationOnNewLine: indentationOnNewLine,
scrollWhenFocusLineIsOutOfViewport: {
@@ -1022,7 +1022,7 @@ const handleClientReady = async (socket, message) => {
}
// call the clientVars-hook so plugins can modify them before they get sent to the client
- const messages = await hooks.aCallAll('clientVars', {clientVars, pad, socket});
+ const messages = await aCallAll('clientVars', {clientVars, pad, socket});
// combine our old object with the new attributes from the hook
for (const msg of messages) {
@@ -1093,7 +1093,7 @@ const handleClientReady = async (socket, message) => {
socket.json.send(msg);
}));
- await hooks.aCallAll('userJoin', {
+ await aCallAll('userJoin', {
authorId: sessionInfo.author,
displayName: authorName,
padId: sessionInfo.padId,
diff --git a/src/node/hooks/express.ts b/src/node/hooks/express.ts
index 74f5834d2..61b1bf96c 100644
--- a/src/node/hooks/express.ts
+++ b/src/node/hooks/express.ts
@@ -10,7 +10,7 @@ import fs from "fs";
import expressSession from "express-session";
-import hooks from "../../static/js/pluginfw/hooks";
+import {aCallAll} from "../../static/js/pluginfw/hooks";
import log4js from "log4js";
@@ -52,7 +52,7 @@ const closeServer = async () => {
// Call exports.server.close() to reject new connections but don't await just yet because the
// Promise won't resolve until all preexisting connections are closed.
const p = util.promisify(server.close.bind(server))();
- await hooks.aCallAll('expressCloseServer');
+ await aCallAll('expressCloseServer');
// Give existing connections some time to close on their own before forcibly terminating. The
// time should be long enough to avoid interrupting most preexisting transmissions but short
// enough to avoid a noticeable outage.
@@ -240,14 +240,14 @@ sessionMiddleware = expressSession({
// Give plugins an opportunity to install handlers/middleware before the express-session
// middleware. This allows plugins to avoid creating an express-session record in the database
// when it is not needed (e.g., public static content).
- await hooks.aCallAll('expressPreSession', {app});
+ await aCallAll('expressPreSession', {app});
app.use(sessionMiddleware);
app.use(checkAccess2);
await Promise.all([
- hooks.aCallAll('expressConfigure', {app}),
- hooks.aCallAll('expressCreateServer', {app, server: server}),
+ aCallAll('expressConfigure', {app}),
+ aCallAll('expressCreateServer', {app, server: server}),
]);
server.on('connection', (socket) => {
sockets.add(socket);
diff --git a/src/node/hooks/express/adminplugins.ts b/src/node/hooks/express/adminplugins.ts
index 02a9b1939..03a62655f 100644
--- a/src/node/hooks/express/adminplugins.ts
+++ b/src/node/hooks/express/adminplugins.ts
@@ -3,11 +3,11 @@
import {required} from '../../eejs';
import {getEpVersion, getGitCommit} from "../../utils/Settings";
-import installer from "../../../static/js/pluginfw/installer";
+import {getAvailablePlugins, install, search, uninstall} from "../../../static/js/pluginfw/installer";
-import pluginDefs from "../../../static/js/pluginfw/plugin_defs";
+import {plugins} from "../../../static/js/pluginfw/plugin_defs";
-import plugins from "../../../static/js/pluginfw/plugins";
+import {formatHooks, formatParts, formatPlugins} from "../../../static/js/pluginfw/plugins";
import semver from "semver";
@@ -16,7 +16,7 @@ import UpdateCheck from "../../utils/UpdateCheck";
export const expressCreateServer = (hookName, args, cb) => {
args.app.get('/admin/plugins', (req, res) => {
res.send(required('ep_etherpad-lite/templates/admin/plugins.html', {
- plugins: pluginDefs.plugins,
+ plugins: plugins,
req,
errors: [],
}));
@@ -29,10 +29,10 @@ export const expressCreateServer = (hookName, args, cb) => {
res.send(required('ep_etherpad-lite/templates/admin/plugins-info.html', {
gitCommit,
epVersion,
- installedPlugins: `
${plugins.formatPlugins().replace(/, /g, '\n')}
`,
- installedParts: `${plugins.formatParts()}
`,
- installedServerHooks: `${plugins.formatHooks('hooks', true)}
`,
- installedClientHooks: `${plugins.formatHooks('client_hooks', true)}
`,
+ installedPlugins: `${formatPlugins().replace(/, /g, '\n')}
`,
+ installedParts: `${formatParts()}
`,
+ installedServerHooks: `${formatHooks('hooks', true)}
`,
+ installedClientHooks: `${formatHooks('client_hooks', true)}
`,
latestVersion: UpdateCheck.getLatestVersion(),
req,
}));
@@ -50,7 +50,7 @@ export const socketio = (hookName, args, cb) => {
socket.on('getInstalled', (query) => {
// send currently installed plugins
const installed =
- Object.keys(pluginDefs.plugins).map((plugin) => pluginDefs.plugins[plugin].package);
+ Object.keys(plugins).map((plugin) => plugins[plugin].package);
socket.emit('results:installed', {installed});
});
@@ -58,13 +58,13 @@ export const socketio = (hookName, args, cb) => {
socket.on('checkUpdates', async () => {
// Check plugins for updates
try {
- const results = await installer.getAvailablePlugins(/* maxCacheAge:*/ 60 * 10);
+ const results = await getAvailablePlugins(/* maxCacheAge:*/ 60 * 10);
- const updatable = Object.keys(pluginDefs.plugins).filter((plugin) => {
+ const updatable = Object.keys(plugins).filter((plugin) => {
if (!results[plugin]) return false;
const latestVersion = results[plugin].version;
- const currentVersion = pluginDefs.plugins[plugin].package.version;
+ const currentVersion = plugins[plugin].package.version;
return semver.gt(latestVersion, currentVersion);
});
@@ -79,7 +79,7 @@ export const socketio = (hookName, args, cb) => {
socket.on('getAvailable', async (query) => {
try {
- const results = await installer.getAvailablePlugins(/* maxCacheAge:*/ false);
+ const results = await getAvailablePlugins(/* maxCacheAge:*/ false);
socket.emit('results:available', results);
} catch (er) {
console.error(er);
@@ -89,10 +89,10 @@ export const socketio = (hookName, args, cb) => {
socket.on('search', async (query) => {
try {
- const results = await installer.search(query.searchTerm, /* maxCacheAge:*/ 60 * 10);
+ const results = await search(query.searchTerm, /* maxCacheAge:*/ 60 * 10);
let res = Object.keys(results)
.map((pluginName) => results[pluginName])
- .filter((plugin) => !pluginDefs.plugins[plugin.name]);
+ .filter((plugin) => !plugins[plugin.name]);
res = sortPluginList(res, query.sortBy, query.sortDir)
.slice(query.offset, query.offset + query.limit);
socket.emit('results:search', {results: res, query});
@@ -104,7 +104,7 @@ export const socketio = (hookName, args, cb) => {
});
socket.on('install', (pluginName) => {
- installer.install(pluginName, (err) => {
+ install(pluginName, (err) => {
if (err) console.warn(err.stack || err.toString());
socket.emit('finished:install', {
@@ -116,7 +116,7 @@ export const socketio = (hookName, args, cb) => {
});
socket.on('uninstall', (pluginName) => {
- installer.uninstall(pluginName, (err) => {
+ uninstall(pluginName, (err) => {
if (err) console.warn(err.stack || err.toString());
socket.emit('finished:uninstall', {plugin: pluginName, error: err ? err.message : null});
diff --git a/src/node/hooks/express/adminsettings.ts b/src/node/hooks/express/adminsettings.ts
index b55f2d05d..404d6eefd 100644
--- a/src/node/hooks/express/adminsettings.ts
+++ b/src/node/hooks/express/adminsettings.ts
@@ -3,14 +3,14 @@
import {required} from '../../eejs';
import {promises as fsp} from "fs";
-import hooks from "../../../static/js/pluginfw/hooks";
+import {aCallAll} from "../../../static/js/pluginfw/hooks";
-import plugins from "../../../static/js/pluginfw/plugins";
+import {update} from "../../../static/js/pluginfw/plugins";
import {reloadSettings, settingsFilename, showSettingsInAdminPage} from "../../utils/Settings";
import * as settings from "../../utils/Settings";
-exports.expressCreateServer = (hookName, {app}) => {
+export const expressCreateServer = (hookName, {app}) => {
app.get('/admin/settings', (req, res) => {
res.send(required('ep_etherpad-lite/templates/admin/settings.html', {
req,
@@ -20,7 +20,7 @@ exports.expressCreateServer = (hookName, {app}) => {
});
};
-exports.socketio = (hookName, {io}) => {
+export const socketio = (hookName, {io}) => {
io.of('/settings').on('connection', (socket) => {
const {session: {user: {is_admin: isAdmin} = {}} = {}}:SessionSocketModel = socket.conn.request;
if (!isAdmin) return;
@@ -50,9 +50,9 @@ exports.socketio = (hookName, {io}) => {
socket.on('restartServer', async () => {
console.log('Admin request to restart server through a socket on /admin/settings');
reloadSettings();
- await plugins.update();
- await hooks.aCallAll('loadSettings', {});
- await hooks.aCallAll('restartServer');
+ await update();
+ await aCallAll('loadSettings', {});
+ await aCallAll('restartServer');
});
});
};
diff --git a/src/node/hooks/express/errorhandling.ts b/src/node/hooks/express/errorhandling.ts
index 0252a6dcb..9e2992251 100644
--- a/src/node/hooks/express/errorhandling.ts
+++ b/src/node/hooks/express/errorhandling.ts
@@ -2,8 +2,9 @@
import {createCollection} from '../../stats';
-exports.expressCreateServer = (hook_name, args, cb) => {
- exports.app = args.app;
+export let app:any;
+export const expressCreateServer = (hook_name, args, cb) => {
+ app = args.app;
// Handle errors
args.app.use((err, req, res, next) => {
diff --git a/src/node/hooks/express/importexport.ts b/src/node/hooks/express/importexport.ts
index e5d096b76..5d4101ead 100644
--- a/src/node/hooks/express/importexport.ts
+++ b/src/node/hooks/express/importexport.ts
@@ -10,7 +10,7 @@ import rateLimit from 'express-rate-limit';
import {checkAccess} from '../../db/SecurityManager';
import {userCanModify} from './webaccess';
-exports.expressCreateServer = (hookName, args, cb) => {
+export const expressCreateServer = (hookName, args, cb) => {
importExportRateLimiting.onLimitReached = (req, res, options) => {
// when the rate limiter triggers, write a warning in the logs
console.warn('Import/Export rate limiter triggered on ' +
diff --git a/src/node/hooks/express/openapi.ts b/src/node/hooks/express/openapi.ts
index 4dde98e8f..68001bce7 100644
--- a/src/node/hooks/express/openapi.ts
+++ b/src/node/hooks/express/openapi.ts
@@ -548,7 +548,7 @@ const generateDefinitionForVersion = (version, style = APIPathStyle.FLAT) => {
return definition;
};
-exports.expressPreSession = async (hookName, {app}) => {
+export const expressPreSession = async (hookName, {app}) => {
// create openapi-backend handlers for each api version under /api/{version}/*
for (const version of Object.keys(apiHandler.version)) {
// we support two different styles of api: flat + rest
diff --git a/src/node/hooks/express/padurlsanitize.ts b/src/node/hooks/express/padurlsanitize.ts
index 00006bca4..233f6f97c 100644
--- a/src/node/hooks/express/padurlsanitize.ts
+++ b/src/node/hooks/express/padurlsanitize.ts
@@ -2,7 +2,7 @@
import {isValidPadId, sanitizePadId} from '../../db/PadManager';
-exports.expressCreateServer = (hookName, args, cb) => {
+export const expressCreateServer = (hookName, args, cb) => {
// redirects browser to the pad's sanitized url if needed. otherwise, renders the html
args.app.param('pad', (req, res, next, padId) => {
(async () => {
diff --git a/src/node/hooks/express/socketio.ts b/src/node/hooks/express/socketio.ts
index feed1a2fb..23c262329 100644
--- a/src/node/hooks/express/socketio.ts
+++ b/src/node/hooks/express/socketio.ts
@@ -7,7 +7,7 @@ import proxyaddr from 'proxy-addr';
import {socketIo, socketTransportProtocols, trustProxy} from '../../utils/Settings';
import socketio from 'socket.io';
import {addComponent, setSocketIO} from '../../handler/SocketIORouter';
-import hooks from '../../../static/js/pluginfw/hooks';
+import {callAll} from '../../../static/js/pluginfw/hooks';
import * as padMessageHandler from '../../handler/PadMessageHandler';
let io;
@@ -15,7 +15,7 @@ const logger = log4js.getLogger('socket.io');
const sockets = new Set();
const socketsEvents = new events.EventEmitter();
-exports.expressCloseServer = async () => {
+export const expressCloseServer = async () => {
if (io == null) return;
logger.info('Closing socket.io engine...');
// Close the socket.io engine to disconnect existing clients and reject new clients. Don't call
@@ -46,7 +46,7 @@ exports.expressCloseServer = async () => {
logger.info('All socket.io clients have disconnected');
};
-exports.expressCreateServer = (hookName, args, cb) => {
+export const expressCreateServer = (hookName, args, cb) => {
// init socket.io and redirect all requests to the MessageHandler
// there shouldn't be a browser that isn't compatible to all
// transports in this list at once
@@ -133,7 +133,7 @@ exports.expressCreateServer = (hookName, args, cb) => {
setSocketIO(io);
addComponent('pad', padMessageHandler);
- hooks.callAll('socketio', {app: args.app, io, server: args.server});
+ callAll('socketio', {app: args.app, io, server: args.server});
return cb();
};
diff --git a/src/node/hooks/express/specialpages.ts b/src/node/hooks/express/specialpages.ts
index 8b934d297..8a21beaa8 100644
--- a/src/node/hooks/express/specialpages.ts
+++ b/src/node/hooks/express/specialpages.ts
@@ -5,12 +5,12 @@ import {required} from '../../eejs';
import fs from 'fs';
const fsp = fs.promises;
import {} from '../../utils/toolbar';
-import hooks from '../../../static/js/pluginfw/hooks';
+import {callAll} from '../../../static/js/pluginfw/hooks';
import {favicon, getEpVersion, maxAge, root, skinName} from '../../utils/Settings';
import util from 'util';
import {userCanModify} from './webaccess';
-exports.expressPreSession = async (hookName, {app}) => {
+export const expressPreSession = async (hookName, {app}) => {
// This endpoint is intended to conform to:
// https://www.ietf.org/archive/id/draft-inadarei-api-health-check-06.html
app.get('/health', (req, res) => {
@@ -63,7 +63,7 @@ exports.expressPreSession = async (hookName, {app}) => {
});
};
-exports.expressCreateServer = (hookName, args, cb) => {
+export const expressCreateServer = (hookName, args, cb) => {
// serve index.html under /
args.app.get('/', (req, res) => {
res.send(required('ep_etherpad-lite/templates/index.html', {req}));
@@ -74,7 +74,7 @@ exports.expressCreateServer = (hookName, args, cb) => {
// The below might break for pads being rewritten
const isReadOnly = !userCanModify(req.params.pad, req);
- hooks.callAll('padInitToolbar', {
+ callAll('padInitToolbar', {
toolbar,
isReadOnly,
});
@@ -90,7 +90,7 @@ exports.expressCreateServer = (hookName, args, cb) => {
// serve timeslider.html under /p/$padname/timeslider
args.app.get('/p/:pad/timeslider', (req, res, next) => {
- hooks.callAll('padInitToolbar', {
+ callAll('padInitToolbar', {
toolbar,
});
diff --git a/src/node/hooks/express/tests.ts b/src/node/hooks/express/tests.ts
index 3b9db80b6..5ecfef43b 100644
--- a/src/node/hooks/express/tests.ts
+++ b/src/node/hooks/express/tests.ts
@@ -3,7 +3,7 @@
import path from 'path';
import {promises as fsp} from "fs";
-import plugins from "../../../static/js/pluginfw/plugin_defs";
+import {plugins} from "../../../static/js/pluginfw/plugin_defs";
import sanitizePathname from "../../utils/sanitizePathname";
@@ -36,7 +36,7 @@ export const expressPreSession = async (hookName, {app}) => {
app.get('/tests/frontend/frontendTestSpecs.json', (req, res, next) => {
(async () => {
const modules = [];
- await Promise.all(Object.entries(plugins.plugins).map(async ([plugin, def]) => {
+ await Promise.all(Object.entries(plugins).map(async ([plugin, def]) => {
const mappedDef = def as Presession;
let {package: {path: pluginPath}} = mappedDef;
if (!pluginPath.endsWith(path.sep)) pluginPath += path.sep;
diff --git a/src/node/hooks/express/webaccess.ts b/src/node/hooks/express/webaccess.ts
index 58ecdace2..4aac30643 100644
--- a/src/node/hooks/express/webaccess.ts
+++ b/src/node/hooks/express/webaccess.ts
@@ -6,17 +6,18 @@ import log4js from "log4js";
import {requireAuthentication, requireAuthorization, setUsers, users} from "../../utils/Settings";
-import hooks from "../../../static/js/pluginfw/hooks";
+import {deprecationNotices} from "../../../static/js/pluginfw/hooks";
import {getPadId, isReadOnlyId} from "../../db/ReadOnlyManager";
import {UserIndexedModel} from "../../models/UserIndexedModel";
const httpLogger = log4js.getLogger('http');
-hooks.deprecationNotices.authFailure = 'use the authnFailure and authzFailure hooks instead';
+deprecationNotices.authFailure = 'use the authnFailure and authzFailure hooks instead';
// Promisified wrapper around hooks.aCallFirst.
const aCallFirst = (hookName, context, pred = null) => new Promise((resolve, reject) => {
- hooks.aCallFirst(hookName, context, (err, r) => err != null ? reject(err) : resolve(r), pred);
+ // FIXME Why are there 4 arguments but only 3 parameters?
+ aCallFirst(hookName, context, (err, r) => err != null ? reject(err) : resolve(r));
});
const aCallFirst0 =
diff --git a/src/node/hooks/i18n.ts b/src/node/hooks/i18n.ts
index f6bf38f70..7ce55f744 100644
--- a/src/node/hooks/i18n.ts
+++ b/src/node/hooks/i18n.ts
@@ -4,7 +4,7 @@ import languages from 'languages4translatewiki';
import fs from 'fs';
import path from 'path';
import _ from 'underscore';
-import pluginDefs from '../../static/js/pluginfw/plugin_defs.js';
+import {plugins} from '../../static/js/pluginfw/plugin_defs.js';
import {check} from '../utils/path_exists';
import {customLocaleStrings, maxAge, root} from '../utils/Settings';
import {Presession} from "../models/Presession";
@@ -41,7 +41,7 @@ const getAllLocales = () => {
extractLangs(path.join(root, 'src/locales'));
// add plugins languages (if any)
- for (const val of Object.values(pluginDefs.plugins)) {
+ for (const val of Object.values(plugins)) {
const pluginPath:Presession = val as Presession
// plugin locales should overwrite etherpad's core locales
if (pluginPath.package.path.endsWith('/ep_etherpad-lite') === true) continue;
@@ -86,7 +86,7 @@ const getAllLocales = () => {
// returns a hash of all available languages availables with nativeName and direction
// e.g. { es: {nativeName: "espaƱol", direction: "ltr"}, ... }
-const getAvailableLangs = (locales) => {
+export const getAvailableLangs = (locales) => {
const result = {};
for (const langcode of Object.keys(locales)) {
result[langcode] = languages.getLanguageInfo(langcode);
@@ -104,16 +104,16 @@ const generateLocaleIndex = (locales) => {
};
-exports.expressPreSession = async (hookName, {app}) => {
+export const expressPreSession = async (hookName, {app}) => {
// regenerate locales on server restart
const locales = getAllLocales();
const localeIndex = generateLocaleIndex(locales);
- exports.availableLangs = getAvailableLangs(locales);
+ let availableLangs = getAvailableLangs(locales);
app.get('/locales/:locale', (req, res) => {
// works with /locale/en and /locale/en.json requests
const locale = req.params.locale.split('.')[0];
- if (Object.prototype.hasOwnProperty.call(exports.availableLangs, locale)) {
+ if (Object.prototype.hasOwnProperty.call(availableLangs, locale)) {
res.setHeader('Cache-Control', `public, max-age=${maxAge}`);
res.setHeader('Content-Type', 'application/json; charset=utf-8');
res.send(`{"${locale}":${JSON.stringify(locales[locale])}}`);
diff --git a/src/node/models/CMDArgv.ts b/src/node/models/CMDArgv.ts
new file mode 100644
index 000000000..9e663cfa7
--- /dev/null
+++ b/src/node/models/CMDArgv.ts
@@ -0,0 +1,3 @@
+export type CMDArgv = {
+ [key: string]: any
+}
diff --git a/src/node/utils/Abiword.ts b/src/node/utils/Abiword.ts
index b83fc6a3d..90cd88bdd 100644
--- a/src/node/utils/Abiword.ts
+++ b/src/node/utils/Abiword.ts
@@ -25,10 +25,12 @@ import async from 'async';
import {abiword} from './Settings';
import os from 'os';
+export let convertFile;
+
// on windows we have to spawn a process for each convertion,
// cause the plugin abicommand doesn't exist on this platform
if (os.type().indexOf('Windows') > -1) {
- exports.convertFile = async (srcFile, destFile, type) => {
+ convertFile = async (srcFile, destFile, type) => {
const abiword2 = spawn(abiword, [`--to=${destFile}`, srcFile]);
let stdoutBuffer = '';
abiword2.stdout.on('data', (data) => { stdoutBuffer += data.toString(); });
@@ -85,7 +87,7 @@ if (os.type().indexOf('Windows') > -1) {
};
}, 1);
- exports.convertFile = async (srcFile, destFile, type) => {
+ convertFile = async (srcFile, destFile, type) => {
await queue.pushAsync({srcFile, destFile, type});
};
}
diff --git a/src/node/utils/Cli.ts b/src/node/utils/Cli.ts
index 946fd66ca..260478cce 100644
--- a/src/node/utils/Cli.ts
+++ b/src/node/utils/Cli.ts
@@ -21,32 +21,35 @@
*/
// An object containing the parsed command-line options
-export const argv = process.argv.slice(2);
+import {CMDArgv} from "../models/CMDArgv";
-let arg, prevArg;
+const argvcmd = process.argv.slice(2);
+let arg, prevArg
+
+export const argv:CMDArgv|undefined = {};
// Loop through args
-for (let i = 0; i < argv.length; i++) {
+for (let i = 0; i < argvcmd.length; i++) {
arg = argv[i];
// Override location of settings.json file
if (prevArg === '--settings' || prevArg === '-s') {
- exports.argv.settings = arg;
+ argv.settings = arg;
}
// Override location of credentials.json file
if (prevArg === '--credentials') {
- exports.argv.credentials = arg;
+ argv.credentials = arg;
}
// Override location of settings.json file
if (prevArg === '--sessionkey') {
- exports.argv.sessionkey = arg;
+ argv.sessionkey = arg;
}
// Override location of settings.json file
if (prevArg === '--apikey') {
- exports.argv.apikey = arg;
+ argv.apikey = arg;
}
prevArg = arg;
diff --git a/src/node/utils/ExportEtherpad.ts b/src/node/utils/ExportEtherpad.ts
index d548590bd..c20741840 100644
--- a/src/node/utils/ExportEtherpad.ts
+++ b/src/node/utils/ExportEtherpad.ts
@@ -20,7 +20,7 @@ import {strict as assert} from "assert";
import {getAuthor} from "../db/AuthorManager";
-import hooks from "../../static/js/pluginfw/hooks";
+import {aCallAll} from "../../static/js/pluginfw/hooks";
import {getPad} from "../db/PadManager";
@@ -28,7 +28,7 @@ export const getPadRaw = async (padId, readOnlyId) => {
const dstPfx = `pad:${readOnlyId || padId}`;
const [pad, customPrefixes] = await Promise.all([
getPad(padId),
- hooks.aCallAll('exportEtherpadAdditionalContent'),
+ aCallAll('exportEtherpadAdditionalContent'),
]);
const pluginRecords = await Promise.all(customPrefixes.map(async (customPrefix) => {
const srcPfx = `${customPrefix}:${padId}`;
@@ -58,7 +58,7 @@ export const getPadRaw = async (padId, readOnlyId) => {
})();
const data = {[dstPfx]: pad};
for (const [dstKey, p] of new Stream(records).batch(100).buffer(99)) data[dstKey] = await p;
- await hooks.aCallAll('exportEtherpad', {
+ await aCallAll('exportEtherpad', {
pad,
data,
dstPadId: readOnlyId || padId,
diff --git a/src/node/utils/ExportHtml.ts b/src/node/utils/ExportHtml.ts
index c8a7d6884..8ec4fc104 100644
--- a/src/node/utils/ExportHtml.ts
+++ b/src/node/utils/ExportHtml.ts
@@ -23,7 +23,7 @@ import {getPad} from "../db/PadManager";
import _ from "underscore";
import Security from '../../static/js/security';
-import hooks from '../../static/js/pluginfw/hooks';
+import {aCallAll} from '../../static/js/pluginfw/hooks';
import {required} from '../eejs';
import {_analyzeLine, _encodeWhitespace} from "./ExportHelper";
@@ -51,7 +51,7 @@ export const getHTMLFromAtext = async (pad, atext, authorColors?) => {
await Promise.all([
// prepare tags stored as ['tag', true] to be exported
- hooks.aCallAll('exportHtmlAdditionalTags', pad).then((newProps) => {
+ aCallAll('exportHtmlAdditionalTags', pad).then((newProps) => {
newProps.forEach((prop) => {
tags.push(prop);
props.push(prop);
@@ -59,7 +59,7 @@ export const getHTMLFromAtext = async (pad, atext, authorColors?) => {
}),
// prepare tags stored as ['tag', 'value'] to be exported. This will generate HTML with tags
// like
- hooks.aCallAll('exportHtmlAdditionalTagsWithData', pad).then((newProps) => {
+ aCallAll('exportHtmlAdditionalTagsWithData', pad).then((newProps) => {
newProps.forEach((prop) => {
tags.push(`span data-${prop[0]}="${prop[1]}"`);
props.push(prop);
@@ -314,7 +314,7 @@ export const getHTMLFromAtext = async (pad, atext, authorColors?) => {
if (i < textLines.length) {
nextLine = _analyzeLine(textLines[i + 1], attribLines[i + 1], apool);
}
- await hooks.aCallAll('getLineHTMLForExport', context);
+ await aCallAll('getLineHTMLForExport', context);
// To create list parent elements
if ((!prevLine || prevLine.listLevel !== line.listLevel) ||
(line.listTypeName !== prevLine.listTypeName)) {
@@ -451,7 +451,7 @@ export const getHTMLFromAtext = async (pad, atext, authorColors?) => {
padId: pad.id,
};
- await hooks.aCallAll('getLineHTMLForExport', context);
+ await aCallAll('getLineHTMLForExport', context);
pieces.push(context.lineContent, '
');
}
}
@@ -464,14 +464,14 @@ export const getPadHTMLDocument = async (padId, revNum, readOnlyId?) => {
// Include some Styles into the Head for Export
let stylesForExportCSS = '';
- const stylesForExport = await hooks.aCallAll('stylesForExport', padId);
+ const stylesForExport = await aCallAll('stylesForExport', padId);
stylesForExport.forEach((css) => {
stylesForExportCSS += css;
});
let html = await getPadHTML(pad, revNum);
- for (const hookHtml of await hooks.aCallAll('exportHTMLAdditionalContent', {padId})) {
+ for (const hookHtml of await aCallAll('exportHTMLAdditionalContent', {padId})) {
html += hookHtml;
}
diff --git a/src/node/utils/ImportEtherpad.ts b/src/node/utils/ImportEtherpad.ts
index 09dca8ecd..925815991 100644
--- a/src/node/utils/ImportEtherpad.ts
+++ b/src/node/utils/ImportEtherpad.ts
@@ -21,7 +21,7 @@ import {Pad} from '../db/Pad';
import {Stream} from './Stream';
import {addPad, doesAuthorExist} from '../db/AuthorManager';
import {db} from '../db/DB';
-import hooks from '../../static/js/pluginfw/hooks';
+import {aCallAll, callAll} from '../../static/js/pluginfw/hooks';
import log4js from "log4js";
import {supportedElems} from "../../static/js/contentcollector";
@@ -34,14 +34,14 @@ export const setPadRaw = async (padId, r, authorId = '') => {
const records = JSON.parse(r);
// get supported block Elements from plugins, we will use this later.
- hooks.callAll('ccRegisterBlockElements').forEach((element) => {
+ callAll('ccRegisterBlockElements').forEach((element) => {
supportedElems.add(element);
});
// DB key prefixes for pad records. Each key is expected to have the form `${prefix}:${padId}` or
// `${prefix}:${padId}:${otherstuff}`.
const padKeyPrefixes = [
- ...await hooks.aCallAll('exportEtherpadAdditionalContent'),
+ ...await aCallAll('exportEtherpadAdditionalContent'),
'pad',
];
@@ -103,7 +103,7 @@ export const setPadRaw = async (padId, r, authorId = '') => {
const pad = new Pad(padId, padDb);
await pad.init(null, authorId);
- await hooks.aCallAll('importEtherpad', {
+ await aCallAll('importEtherpad', {
pad,
// Shallow freeze meant to prevent accidental bugs. It would be better to deep freeze, but
// it's not worth the added complexity.
diff --git a/src/node/utils/Minify.ts b/src/node/utils/Minify.ts
index 03a7a403e..830bd9c1b 100644
--- a/src/node/utils/Minify.ts
+++ b/src/node/utils/Minify.ts
@@ -26,7 +26,7 @@ import {promises as fs} from "fs";
import path from "path";
-import plugins from "../../static/js/pluginfw/plugin_defs";
+import {plugins} from "../../static/js/pluginfw/plugin_defs";
import RequireKernel from "etherpad-require-kernel";
@@ -155,8 +155,8 @@ const minify = async (req, res) => {
const library = match[1];
const libraryPath = match[2] || '';
- if (plugins.plugins[library] && match[3]) {
- const plugin = plugins.plugins[library];
+ if (plugins[library] && match[3]) {
+ const plugin = plugins[library];
const pluginPath = plugin.package.realPath;
filename = path.join(pluginPath, libraryPath);
// On Windows, path.relative converts forward slashes to backslashes. Convert them back
diff --git a/src/node/utils/Settings.ts b/src/node/utils/Settings.ts
index 2813e5030..a50597469 100644
--- a/src/node/utils/Settings.ts
+++ b/src/node/utils/Settings.ts
@@ -29,19 +29,20 @@
import exp from "constants";
-const absolutePaths = require('./AbsolutePaths');
-const deepEqual = require('fast-deep-equal/es6');
+import {findEtherpadRoot, makeAbsolute, isSubdir} from './AbsolutePaths';
+import deepEqual from 'fast-deep-equal/es6';
import fs from 'fs';
import os from 'os';
import path from 'path';
-const argv = require('./Cli').argv;
import jsonminify from 'jsonminify';
import log4js from 'log4js';
import {LogLevel} from "../models/LogLevel";
-const randomString = require('./randomstring');
+import {argv} from "./Cli";
+
+import {randomString} from './randomstring';
const suppressDisableMsg = ' -- To suppress these warning messages change ' +
'suppressErrorsInPadText to true in your settings.json\n';
-const _ = require('underscore');
+import _ from 'underscore';
const logger = log4js.getLogger('settings');
@@ -53,7 +54,10 @@ const nonSettings = [
// This is a function to make it easy to create a new instance. It is important to not reuse a
// config object after passing it to log4js.configure() because that method mutates the object. :(
-const defaultLogConfig = () => ({appenders: [{type: 'console'}]});
+const defaultLogConfig = () => ({appenders: { console: { type: 'console' } },
+categories:{
+ default: { appenders: ['console'], level: 'info'}
+}});
const defaultLogLevel = 'INFO';
const initLogging = (logLevel, config) => {
@@ -71,11 +75,11 @@ const initLogging = (logLevel, config) => {
initLogging(defaultLogLevel, defaultLogConfig());
/* Root path of the installation */
-export const root = absolutePaths.findEtherpadRoot();
+export const root = findEtherpadRoot();
logger.info('All relative paths will be interpreted relative to the identified ' +
`Etherpad base dir: ${root}`);
-export const settingsFilename = absolutePaths.makeAbsolute(argv.settings || 'settings.json');
-export const credentialsFilename = absolutePaths.makeAbsolute(argv.credentials || 'credentials.json');
+export const settingsFilename = makeAbsolute(argv.settings || 'settings.json');
+export const credentialsFilename = makeAbsolute(argv.credentials || 'credentials.json');
/**
* The app title, visible e.g. in the browser window
@@ -737,9 +741,7 @@ const parseSettings = (settingsFilename: string, isSettings:boolean) => {
process.exit(1);
}
-};
-
-export const randomVersionString = randomString(4);
+}
export const reloadSettings = () => {
@@ -772,7 +774,7 @@ export const reloadSettings = () => {
let skinPath = path.join(skinBasePath, skinName);
// what if someone sets skinName == ".." or "."? We catch him!
- if (absolutePaths.isSubdir(skinBasePath, skinPath) === false) {
+ if (isSubdir(skinBasePath, skinPath) === false) {
logger.error(`Skin path ${skinPath} must be a subdirectory of ${skinBasePath}. ` +
'Falling back to the default "colibris".');
@@ -821,7 +823,7 @@ export const reloadSettings = () => {
}
if (!sessionKey) {
- const sessionkeyFilename = absolutePaths.makeAbsolute(argv.sessionkey || './SESSIONKEY.txt');
+ const sessionkeyFilename = makeAbsolute(argv.sessionkey || './SESSIONKEY.txt');
try {
sessionKey = fs.readFileSync(sessionkeyFilename, 'utf8');
logger.info(`Session key loaded from: ${sessionkeyFilename}`);
@@ -846,7 +848,7 @@ export const reloadSettings = () => {
defaultPadText += `\nWarning: ${dirtyWarning}${suppressDisableMsg}`;
}
- dbSettings.filename = absolutePaths.makeAbsolute(dbSettings.filename);
+ dbSettings.filename = makeAbsolute(dbSettings.filename);
logger.warn(`${dirtyWarning} File location: ${dbSettings.filename}`);
}
@@ -867,10 +869,12 @@ export const reloadSettings = () => {
* ACHTUNG: this may prevent caching HTTP proxies to work
* TODO: remove the "?v=randomstring" parameter, and replace with hashed filenames instead
*/
- logger.info(`Random string used for versioning assets: ${randomVersionString}`);
+ const randomVersionStringWith4Chars = randomString(4);
+ logger.info(`Random string used for versioning assets: ${randomVersionStringWith4Chars}`);
+ return settings
};
-exports.exportedForTestingOnly = {
+export const exportedForTestingOnly = {
parseSettings,
};
diff --git a/src/node/utils/TidyHtml.ts b/src/node/utils/TidyHtml.ts
index cbedc8056..56fa68972 100644
--- a/src/node/utils/TidyHtml.ts
+++ b/src/node/utils/TidyHtml.ts
@@ -8,7 +8,7 @@ import {tidyHtml} from "./Settings";
import {spawn} from "child_process";
-exports.tidy = (srcFile) => {
+export const tidy = (srcFile) => {
const logger = log4js.getLogger('TidyHtml');
return new Promise((resolve, reject) => {
diff --git a/src/node/utils/UpdateCheck.ts b/src/node/utils/UpdateCheck.ts
index d20219b28..de18d2f17 100644
--- a/src/node/utils/UpdateCheck.ts
+++ b/src/node/utils/UpdateCheck.ts
@@ -28,7 +28,7 @@ const loadEtherpadInformations = () => new Promise((resolve, reject)
});
const getLatestVersion = () => {
- exports.needsUpdate();
+ needsUpdate();
if(infos === undefined){
throw new Error("Could not retrieve latest version")
}
@@ -36,7 +36,7 @@ const getLatestVersion = () => {
return infos.latestVersion;
}
-exports.needsUpdate = (cb?:(arg0: boolean)=>void) => {
+export const needsUpdate = (cb?:(arg0: boolean)=>void) => {
loadEtherpadInformations().then((info) => {
if (semver.gt(info.latestVersion, getEpVersion())) {
if (cb) return cb(true);
diff --git a/src/node/utils/customError.ts b/src/node/utils/customError.ts
index 79cbbd47c..b90946f65 100644
--- a/src/node/utils/customError.ts
+++ b/src/node/utils/customError.ts
@@ -10,6 +10,7 @@
export class CustomError extends Error {
code: any;
signal: any;
+ easysync: boolean
/**
* Creates an instance of CustomError.
* @param {*} message
diff --git a/src/node/utils/padDiff.ts b/src/node/utils/padDiff.ts
index da8ff6877..88dd3d4b4 100644
--- a/src/node/utils/padDiff.ts
+++ b/src/node/utils/padDiff.ts
@@ -254,7 +254,7 @@ PadDiff.prototype._createDeletionChangeset = function (cs, startAText, apool) {
// They include final newlines on lines.
const linesGet = (idx) => {
- if (lines.get) {
+ if ("get" in lines && lines.get instanceof Function) {
return lines.get(idx);
} else {
return lines[idx];
@@ -262,7 +262,7 @@ PadDiff.prototype._createDeletionChangeset = function (cs, startAText, apool) {
};
const aLinesGet = (idx) => {
- if (alines.get) {
+ if ("get" in alines && alines.get instanceof Function) {
return alines.get(idx);
} else {
return alines[idx];
diff --git a/src/node/utils/run_cmd.ts b/src/node/utils/run_cmd.ts
index 716e528b4..b98cb9b45 100644
--- a/src/node/utils/run_cmd.ts
+++ b/src/node/utils/run_cmd.ts
@@ -69,7 +69,7 @@ const logLines = (readable, logLineFn) => {
* - `stderr`: Similar to `stdout` but for stderr.
* - `child`: The ChildProcess object.
*/
-export const exportCMD: (args: string[], opts:CMDOptions)=>void = async (args, opts = {
+export const exportCMD: (args: string[], opts?:CMDOptions)=>void = async (args, opts = {
cwd: undefined,
stdio: undefined,
env: undefined
diff --git a/src/package-lock.json b/src/package-lock.json
index dd27c26e2..618ce284a 100644
--- a/src/package-lock.json
+++ b/src/package-lock.json
@@ -10,6 +10,7 @@
"license": "Apache-2.0",
"dependencies": {
"async": "^3.2.2",
+ "cjstoesm": "^2.1.2",
"clean-css": "^5.3.2",
"cookie-parser": "^1.4.6",
"cross-spawn": "^7.0.3",
@@ -854,7 +855,6 @@
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -867,7 +867,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
"engines": {
"node": ">= 8"
}
@@ -876,7 +875,6 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -1538,6 +1536,14 @@
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
+ "node_modules/@wessberg/stringutil": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/@wessberg/stringutil/-/stringutil-1.0.19.tgz",
+ "integrity": "sha512-9AZHVXWlpN8Cn9k5BC/O0Dzb9E9xfEMXzYrNunwvkUTvuK7xgQPVRZpLo+jWCOZ5r8oBa8NIrHuPEu1hzbb6bg==",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/@xmldom/xmldom": {
"version": "0.8.8",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.8.tgz",
@@ -2158,7 +2164,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
"dependencies": {
"fill-range": "^7.0.1"
},
@@ -2455,6 +2460,47 @@
"node": ">=10"
}
},
+ "node_modules/cjstoesm": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/cjstoesm/-/cjstoesm-2.1.2.tgz",
+ "integrity": "sha512-zAbvVcY+HSxy4tTRfskV7DEK7l8nJTjpO9wuQumUu48JWBezqNgt7p9CFe3KACZJtHk8BJECSvl3ccV1qYT2RA==",
+ "dependencies": {
+ "@wessberg/stringutil": "^1.0.19",
+ "ansi-colors": "^4.1.3",
+ "commander": "^9.3.0",
+ "compatfactory": "^1.0.1",
+ "crosspath": "^2.0.0",
+ "fast-glob": "^3.2.11",
+ "helpertypes": "^0.0.18",
+ "reserved-words": "^0.1.2",
+ "resolve": "^1.22.0"
+ },
+ "bin": {
+ "cjstoesm": "bin/cjstoesm.js"
+ },
+ "engines": {
+ "node": ">=14.9.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=3.2.x || >= 4.x"
+ }
+ },
+ "node_modules/cjstoesm/node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cjstoesm/node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
"node_modules/clean-css": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",
@@ -2578,6 +2624,20 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
+ "node_modules/compatfactory": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/compatfactory/-/compatfactory-1.0.1.tgz",
+ "integrity": "sha512-hR9u0HSZTKDNNchPtMHg6myeNx0XO+av7UZIJPsi4rPALJBHi/W5Mbwi19hC/xm6y3JkYpxVYjTqnSGsU5X/iw==",
+ "dependencies": {
+ "helpertypes": "^0.0.18"
+ },
+ "engines": {
+ "node": ">=14.9.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=3.x || >= 4.x"
+ }
+ },
"node_modules/component-bind": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
@@ -2773,6 +2833,22 @@
"node": ">= 8"
}
},
+ "node_modules/crosspath": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crosspath/-/crosspath-2.0.0.tgz",
+ "integrity": "sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA==",
+ "dependencies": {
+ "@types/node": "^17.0.36"
+ },
+ "engines": {
+ "node": ">=14.9.0"
+ }
+ },
+ "node_modules/crosspath/node_modules/@types/node": {
+ "version": "17.0.45",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
+ "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
+ },
"node_modules/css-select": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
@@ -4550,17 +4626,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/abbrev": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/agent-base": {
"version": "4.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es6-promisify": "^5.0.0"
},
@@ -4570,10 +4644,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/agentkeepalive": {
"version": "3.5.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"humanize-ms": "^1.2.1"
},
@@ -4583,30 +4656,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ansi-align": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"string-width": "^2.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ansi-regex": {
"version": "2.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ansi-styles": {
"version": "3.2.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -4616,38 +4686,33 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ansicolors": {
"version": "0.3.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ansistyles": {
"version": "0.1.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/aproba": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/archy": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/are-we-there-yet": {
"version": "1.1.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
@@ -4655,10 +4720,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/are-we-there-yet/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -4671,89 +4735,78 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/are-we-there-yet/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/asap": {
"version": "2.0.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/asn1": {
"version": "0.2.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safer-buffer": "~2.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/assert-plus": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.8"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/asynckit": {
"version": "0.4.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/aws-sign2": {
"version": "0.7.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/aws4": {
"version": "1.8.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/balanced-match": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-3-Clause",
- "optional": true,
- "peer": true,
"dependencies": {
"tweetnacl": "^0.14.3"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/bin-links": {
"version": "1.1.8",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Artistic-2.0",
- "peer": true,
"dependencies": {
"bluebird": "^3.5.3",
"cmd-shim": "^3.0.0",
@@ -4765,17 +4818,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/bluebird": {
"version": "3.5.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/boxen": {
"version": "1.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-align": "^2.0.0",
"camelcase": "^4.0.0",
@@ -4791,10 +4842,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/brace-expansion": {
"version": "1.1.11",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -4802,44 +4852,39 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/buffer-from": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/builtins": {
"version": "1.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/byline": {
"version": "5.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/byte-size": {
"version": "5.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cacache": {
"version": "12.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"bluebird": "^3.5.5",
"chownr": "^1.1.1",
@@ -4860,44 +4905,39 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/call-limit": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/camelcase": {
"version": "4.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/capture-stack-trace": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/caseless": {
"version": "0.12.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/chalk": {
"version": "2.4.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -4909,24 +4949,21 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/chownr": {
"version": "1.1.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ci-info": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cidr-regex": {
"version": "2.0.10",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"ip-regex": "^2.1.0"
},
@@ -4936,20 +4973,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cli-boxes": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cli-columns": {
"version": "3.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"string-width": "^2.0.0",
"strip-ansi": "^3.0.1"
@@ -4960,10 +4995,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cli-table3": {
"version": "0.5.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"object-assign": "^4.1.0",
"string-width": "^2.1.1"
@@ -4977,10 +5011,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cliui": {
"version": "5.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
@@ -4989,30 +5022,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cliui/node_modules/ansi-regex": {
"version": "4.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cliui/node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cliui/node_modules/string-width": {
"version": "3.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
@@ -5024,10 +5054,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cliui/node_modules/strip-ansi": {
"version": "5.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
@@ -5037,20 +5066,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/clone": {
"version": "1.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.8"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cmd-shim": {
"version": "3.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"graceful-fs": "^4.1.2",
"mkdirp": "~0.5.0"
@@ -5058,48 +5085,42 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/code-point-at": {
"version": "1.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/color-convert": {
"version": "1.9.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"color-name": "^1.1.1"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/color-name": {
"version": "1.1.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/colors": {
"version": "1.3.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "optional": true,
- "peer": true,
"engines": {
"node": ">=0.1.90"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/columnify": {
"version": "1.5.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"strip-ansi": "^3.0.0",
"wcwidth": "^1.0.0"
@@ -5107,10 +5128,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/combined-stream": {
"version": "1.0.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -5120,20 +5140,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/concat-map": {
"version": "0.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/concat-stream": {
"version": "1.6.2",
- "dev": true,
"engines": [
"node >= 0.8"
],
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
@@ -5143,10 +5161,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/concat-stream/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -5159,19 +5176,17 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/concat-stream/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/config-chain": {
"version": "1.1.12",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "peer": true,
"dependencies": {
"ini": "^1.3.4",
"proto-list": "~1.2.1"
@@ -5179,10 +5194,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/configstore": {
"version": "3.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"dot-prop": "^4.2.1",
"graceful-fs": "^4.1.2",
@@ -5197,17 +5211,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/console-control-strings": {
"version": "1.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/copy-concurrently": {
"version": "1.0.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^1.1.1",
"fs-write-stream-atomic": "^1.0.8",
@@ -5219,31 +5231,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/copy-concurrently/node_modules/aproba": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/copy-concurrently/node_modules/iferr": {
"version": "0.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/core-util-is": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/create-error-class": {
"version": "3.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"capture-stack-trace": "^1.0.0"
},
@@ -5253,10 +5261,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cross-spawn": {
"version": "5.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
@@ -5265,10 +5272,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cross-spawn/node_modules/lru-cache": {
"version": "4.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
@@ -5276,33 +5282,29 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cross-spawn/node_modules/yallist": {
"version": "2.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/crypto-random-string": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/cyclist": {
"version": "0.2.2",
- "dev": true,
- "inBundle": true,
- "peer": true
+ "extraneous": true,
+ "inBundle": true
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/dashdash": {
"version": "1.14.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"assert-plus": "^1.0.0"
},
@@ -5312,77 +5314,69 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/debug": {
"version": "3.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ms": "2.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/debuglog": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/decamelize": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/decode-uri-component": {
"version": "0.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/deep-extend": {
"version": "0.6.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/defaults": {
"version": "1.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"clone": "^1.0.2"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/define-properties": {
"version": "1.1.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"object-keys": "^1.0.12"
},
@@ -5392,47 +5386,42 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/delayed-stream": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/delegates": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/detect-indent": {
"version": "5.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/detect-newline": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/dezalgo": {
"version": "1.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"asap": "^2.0.0",
"wrappy": "1"
@@ -5440,10 +5429,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/dot-prop": {
"version": "4.2.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-obj": "^1.0.0"
},
@@ -5453,27 +5441,24 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/dotenv": {
"version": "5.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"engines": {
"node": ">=4.6.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/duplexer3": {
"version": "0.1.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/duplexify": {
"version": "3.6.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"end-of-stream": "^1.0.0",
"inherits": "^2.0.1",
@@ -5483,10 +5468,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/duplexify/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -5499,21 +5483,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/duplexify/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ecc-jsbn": {
"version": "0.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "optional": true,
- "peer": true,
"dependencies": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
@@ -5521,61 +5502,54 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/editor": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/emoji-regex": {
"version": "7.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/encoding": {
"version": "0.1.12",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"iconv-lite": "~0.4.13"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/end-of-stream": {
"version": "1.4.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/env-paths": {
"version": "2.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/err-code": {
"version": "1.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/errno": {
"version": "0.1.7",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"prr": "~1.0.1"
},
@@ -5585,10 +5559,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/es-abstract": {
"version": "1.12.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es-to-primitive": "^1.1.1",
"function-bind": "^1.1.1",
@@ -5602,10 +5575,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/es-to-primitive": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -5617,37 +5589,33 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/es6-promise": {
"version": "4.2.8",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/es6-promisify": {
"version": "5.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es6-promise": "^4.0.3"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/escape-string-regexp": {
"version": "1.0.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/execa": {
"version": "0.7.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"cross-spawn": "^5.0.1",
"get-stream": "^3.0.0",
@@ -5663,58 +5631,51 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/execa/node_modules/get-stream": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/extend": {
"version": "3.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/extsprintf": {
"version": "1.3.0",
- "dev": true,
"engines": [
"node >=0.6.0"
],
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fast-json-stable-stringify": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/figgy-pudding": {
"version": "3.5.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/find-npm-prefix": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/flush-write-stream": {
"version": "1.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.4"
@@ -5722,10 +5683,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/flush-write-stream/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -5738,30 +5698,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/flush-write-stream/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/forever-agent": {
"version": "0.6.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/form-data": {
"version": "2.3.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "1.0.6",
@@ -5773,10 +5730,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/from2": {
"version": "2.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.0"
@@ -5784,10 +5740,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/from2/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -5800,30 +5755,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/from2/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs-minipass": {
"version": "1.2.7",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"minipass": "^2.6.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs-minipass/node_modules/minipass": {
"version": "2.9.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -5831,10 +5783,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs-vacuum": {
"version": "1.2.10",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"graceful-fs": "^4.1.2",
"path-is-inside": "^1.0.1",
@@ -5843,10 +5794,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs-write-stream-atomic": {
"version": "1.0.10",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"graceful-fs": "^4.1.2",
"iferr": "^0.1.5",
@@ -5856,17 +5806,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs-write-stream-atomic/node_modules/iferr": {
"version": "0.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs-write-stream-atomic/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -5879,34 +5827,30 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs-write-stream-atomic/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/fs.realpath": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/function-bind": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/gauge": {
"version": "2.7.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
@@ -5920,17 +5864,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/gauge/node_modules/aproba": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/gauge/node_modules/string-width": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -5942,17 +5884,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/genfun": {
"version": "5.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/gentle-fs": {
"version": "2.3.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Artistic-2.0",
- "peer": true,
"dependencies": {
"aproba": "^1.1.2",
"chownr": "^1.1.2",
@@ -5969,34 +5909,30 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/gentle-fs/node_modules/aproba": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/gentle-fs/node_modules/iferr": {
"version": "0.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/get-caller-file": {
"version": "2.0.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/get-stream": {
"version": "4.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"pump": "^3.0.0"
},
@@ -6006,20 +5942,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/getpass": {
"version": "0.1.7",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"assert-plus": "^1.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/glob": {
"version": "7.1.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -6037,10 +5971,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/global-dirs": {
"version": "0.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ini": "^1.3.4"
},
@@ -6050,10 +5983,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/got": {
"version": "6.7.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"create-error-class": "^3.0.0",
"duplexer3": "^0.1.4",
@@ -6073,27 +6005,24 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/got/node_modules/get-stream": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/graceful-fs": {
"version": "4.2.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/har-schema": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"engines": {
"node": ">=4"
}
@@ -6101,10 +6030,9 @@
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/har-validator": {
"version": "5.1.5",
"deprecated": "this library is no longer supported",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
@@ -6115,10 +6043,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/har-validator/node_modules/ajv": {
"version": "6.12.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -6132,24 +6059,21 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/har-validator/node_modules/fast-deep-equal": {
"version": "3.1.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/har-validator/node_modules/json-schema-traverse": {
"version": "0.4.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/has": {
"version": "1.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"function-bind": "^1.1.1"
},
@@ -6159,51 +6083,45 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/has-flag": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/has-symbols": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/has-unicode": {
"version": "2.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/hosted-git-info": {
"version": "2.8.9",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/http-cache-semantics": {
"version": "3.8.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "BSD-2-Clause",
- "peer": true
+ "license": "BSD-2-Clause"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/http-proxy-agent": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"agent-base": "4",
"debug": "3.1.0"
@@ -6214,10 +6132,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/http-signature": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
@@ -6230,10 +6147,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/https-proxy-agent": {
"version": "2.2.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"agent-base": "^4.3.0",
"debug": "^3.1.0"
@@ -6244,20 +6160,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/humanize-ms": {
"version": "1.2.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ms": "^2.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/iconv-lite": {
"version": "0.4.23",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -6267,57 +6181,51 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/iferr": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ignore-walk": {
"version": "3.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"minimatch": "^3.0.4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/import-lazy": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/imurmurhash": {
"version": "0.1.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.8.19"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/infer-owner": {
"version": "1.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/inflight": {
"version": "1.0.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -6325,24 +6233,21 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/inherits": {
"version": "2.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ini": {
"version": "1.3.8",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/init-package-json": {
"version": "1.10.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"glob": "^7.1.1",
"npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
@@ -6356,37 +6261,33 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ip": {
"version": "1.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ip-regex": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-callable": {
"version": "1.1.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-ci": {
"version": "1.2.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ci-info": "^1.5.0"
},
@@ -6396,17 +6297,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-ci/node_modules/ci-info": {
"version": "1.6.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-cidr": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"cidr-regex": "^2.0.10"
},
@@ -6416,20 +6315,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-date-object": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-fullwidth-code-point": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"number-is-nan": "^1.0.0"
},
@@ -6439,10 +6336,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-installed-globally": {
"version": "0.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"global-dirs": "^0.1.0",
"is-path-inside": "^1.0.0"
@@ -6453,30 +6349,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-npm": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-obj": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-path-inside": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"path-is-inside": "^1.0.1"
},
@@ -6486,20 +6379,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-redirect": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-regex": {
"version": "1.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has": "^1.0.1"
},
@@ -6509,30 +6400,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-retry-allowed": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-stream": {
"version": "1.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-symbol": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-symbols": "^1.0.0"
},
@@ -6542,76 +6430,65 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/is-typedarray": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/isarray": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/isexe": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/isstream": {
"version": "0.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/jsbn": {
"version": "0.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "optional": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/json-parse-better-errors": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/json-schema": {
"version": "0.2.3",
- "dev": true,
- "inBundle": true,
- "peer": true
+ "extraneous": true,
+ "inBundle": true
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/json-stringify-safe": {
"version": "5.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/jsonparse": {
"version": "1.3.1",
- "dev": true,
"engines": [
"node >= 0.2.0"
],
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/JSONStream": {
"version": "1.3.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "(MIT OR Apache-2.0)",
- "peer": true,
"dependencies": {
"jsonparse": "^1.2.0",
"through": ">=2.2.7 <3"
@@ -6625,13 +6502,12 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/jsprim": {
"version": "1.4.1",
- "dev": true,
"engines": [
"node >=0.6.0"
],
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
@@ -6641,10 +6517,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/latest-version": {
"version": "3.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"package-json": "^4.0.0"
},
@@ -6654,17 +6529,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lazy-property": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libcipm": {
"version": "4.0.8",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"bin-links": "^1.1.2",
"bluebird": "^3.5.1",
@@ -6685,10 +6558,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpm": {
"version": "3.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"bin-links": "^1.1.2",
"bluebird": "^3.5.3",
@@ -6714,10 +6586,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmaccess": {
"version": "3.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^2.0.0",
"get-stream": "^4.0.0",
@@ -6727,10 +6598,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmconfig": {
"version": "1.2.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"figgy-pudding": "^3.5.1",
"find-up": "^3.0.0",
@@ -6739,10 +6609,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmconfig/node_modules/find-up": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"locate-path": "^3.0.0"
},
@@ -6752,10 +6621,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmconfig/node_modules/locate-path": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
@@ -6766,10 +6634,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmconfig/node_modules/p-limit": {
"version": "2.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"p-try": "^2.0.0"
},
@@ -6779,10 +6646,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmconfig/node_modules/p-locate": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"p-limit": "^2.0.0"
},
@@ -6792,20 +6658,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmconfig/node_modules/p-try": {
"version": "2.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmhook": {
"version": "5.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.4.1",
@@ -6815,10 +6679,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmorg": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.4.1",
@@ -6828,10 +6691,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmpublish": {
"version": "1.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.5.1",
@@ -6846,10 +6708,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmsearch": {
"version": "2.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"figgy-pudding": "^3.5.1",
"get-stream": "^4.0.0",
@@ -6858,10 +6719,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpmteam": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.4.1",
@@ -6871,10 +6731,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/libnpx": {
"version": "10.2.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"dotenv": "^5.0.1",
"npm-package-arg": "^6.0.0",
@@ -6891,10 +6750,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lock-verify": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"npm-package-arg": "^6.1.0",
"semver": "^5.4.1"
@@ -6902,10 +6760,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lockfile": {
"version": "1.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"signal-exit": "^3.0.2"
}
@@ -6918,10 +6775,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash._baseuniq": {
"version": "4.6.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"lodash._createset": "~4.0.0",
"lodash._root": "~3.0.0"
@@ -6950,10 +6806,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash._createset": {
"version": "4.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash._getnative": {
"version": "3.9.1",
@@ -6963,17 +6818,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash._root": {
"version": "3.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash.clonedeep": {
"version": "4.5.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash.restparam": {
"version": "3.6.1",
@@ -6983,51 +6836,45 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash.union": {
"version": "4.6.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash.uniq": {
"version": "4.5.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lodash.without": {
"version": "4.4.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lowercase-keys": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/lru-cache": {
"version": "5.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"yallist": "^3.0.2"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/make-dir": {
"version": "1.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"pify": "^3.0.0"
},
@@ -7037,10 +6884,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/make-fetch-happen": {
"version": "5.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"agentkeepalive": "^3.4.1",
"cacache": "^12.0.0",
@@ -7057,27 +6903,24 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/meant": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/mime-db": {
"version": "1.35.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/mime-types": {
"version": "2.1.19",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"mime-db": "~1.35.0"
},
@@ -7087,10 +6930,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/minimatch": {
"version": "3.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -7100,27 +6942,24 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/minimist": {
"version": "1.2.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/minizlib": {
"version": "1.3.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"minipass": "^2.9.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/minizlib/node_modules/minipass": {
"version": "2.9.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -7128,10 +6967,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/mississippi": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"concat-stream": "^1.5.0",
"duplexify": "^3.4.2",
@@ -7150,10 +6988,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/mkdirp": {
"version": "0.5.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"minimist": "^1.2.5"
},
@@ -7163,17 +7000,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/mkdirp/node_modules/minimist": {
"version": "1.2.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/move-concurrently": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^1.1.1",
"copy-concurrently": "^1.0.0",
@@ -7185,31 +7020,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/move-concurrently/node_modules/aproba": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ms": {
"version": "2.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/mute-stream": {
"version": "0.0.7",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/node-fetch-npm": {
"version": "2.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"encoding": "^0.1.11",
"json-parse-better-errors": "^1.0.0",
@@ -7221,10 +7052,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/node-gyp": {
"version": "5.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"env-paths": "^2.2.0",
"glob": "^7.1.4",
@@ -7247,10 +7077,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/nopt": {
"version": "4.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"abbrev": "1",
"osenv": "^0.1.4"
@@ -7261,10 +7090,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/normalize-package-data": {
"version": "2.5.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
@@ -7274,20 +7102,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/normalize-package-data/node_modules/resolve": {
"version": "1.10.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"path-parse": "^1.0.6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-audit-report": {
"version": "1.3.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"cli-table3": "^0.5.0",
"console-control-strings": "^1.1.0"
@@ -7295,37 +7121,33 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-bundled": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-cache-filename": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-install-checks": {
"version": "3.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"semver": "^2.3.0 || 3.x || 4 || 5"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-lifecycle": {
"version": "3.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Artistic-2.0",
- "peer": true,
"dependencies": {
"byline": "^5.0.0",
"graceful-fs": "^4.1.15",
@@ -7339,24 +7161,21 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-logical-tree": {
"version": "1.2.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-normalize-package-bin": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-package-arg": {
"version": "6.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"hosted-git-info": "^2.7.1",
"osenv": "^0.1.5",
@@ -7366,10 +7185,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-packlist": {
"version": "1.4.8",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1",
@@ -7378,10 +7196,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-pick-manifest": {
"version": "3.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"figgy-pudding": "^3.5.1",
"npm-package-arg": "^6.0.0",
@@ -7390,10 +7207,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-profile": {
"version": "4.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^1.1.2 || 2",
"figgy-pudding": "^3.4.1",
@@ -7402,10 +7218,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-registry-fetch": {
"version": "4.0.7",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"bluebird": "^3.5.1",
"figgy-pudding": "^3.4.1",
@@ -7418,7 +7233,7 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-registry-fetch/node_modules/safe-buffer": {
"version": "5.2.1",
- "dev": true,
+ "extraneous": true,
"funding": [
{
"type": "github",
@@ -7434,15 +7249,13 @@
}
],
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-run-path": {
"version": "2.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"path-key": "^2.0.0"
},
@@ -7452,17 +7265,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npm-user-validate": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "BSD-2-Clause",
- "peer": true
+ "license": "BSD-2-Clause"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/npmlog": {
"version": "4.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
@@ -7472,50 +7283,45 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/number-is-nan": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/oauth-sign": {
"version": "0.9.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/object-assign": {
"version": "4.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/object-keys": {
"version": "1.0.12",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/object.getownpropertydescriptors": {
"version": "2.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"define-properties": "^1.1.2",
"es-abstract": "^1.5.1"
@@ -7526,50 +7332,45 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/once": {
"version": "1.4.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"wrappy": "1"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/opener": {
"version": "1.5.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "(WTFPL OR MIT)",
- "peer": true,
"bin": {
"opener": "bin/opener-bin.js"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/os-homedir": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/os-tmpdir": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/osenv": {
"version": "0.1.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
@@ -7577,20 +7378,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/p-finally": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/package-json": {
"version": "4.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"got": "^6.7.1",
"registry-auth-token": "^3.0.1",
@@ -7603,10 +7402,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/pacote": {
"version": "9.5.12",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"bluebird": "^3.5.3",
"cacache": "^12.0.2",
@@ -7642,10 +7440,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/pacote/node_modules/minipass": {
"version": "2.9.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -7653,10 +7450,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/parallel-transform": {
"version": "1.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"cyclist": "~0.2.2",
"inherits": "^2.0.3",
@@ -7665,10 +7461,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/parallel-transform/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -7681,105 +7476,93 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/parallel-transform/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/path-exists": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/path-is-absolute": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/path-is-inside": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "(WTFPL OR MIT)",
- "peer": true
+ "license": "(WTFPL OR MIT)"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/path-key": {
"version": "2.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/path-parse": {
"version": "1.0.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/performance-now": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/pify": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/prepend-http": {
"version": "1.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/process-nextick-args": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/promise-inflight": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/promise-retry": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"err-code": "^1.0.0",
"retry": "^0.10.0"
@@ -7790,68 +7573,60 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/promise-retry/node_modules/retry": {
"version": "0.10.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/promzard": {
"version": "0.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"read": "1"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/proto-list": {
"version": "1.2.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/protoduck": {
"version": "5.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"genfun": "^5.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/prr": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/pseudomap": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/psl": {
"version": "1.1.29",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/pump": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -7859,10 +7634,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/pumpify": {
"version": "1.5.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"duplexify": "^3.6.0",
"inherits": "^2.0.3",
@@ -7871,10 +7645,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/pumpify/node_modules/pump": {
"version": "2.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -7882,36 +7655,32 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/punycode": {
"version": "1.4.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/qrcode-terminal": {
"version": "0.12.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "peer": true,
"bin": {
"qrcode-terminal": "bin/qrcode-terminal.js"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/qs": {
"version": "6.5.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-3-Clause",
- "peer": true,
"engines": {
"node": ">=0.6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/query-string": {
"version": "6.8.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"decode-uri-component": "^0.2.0",
"split-on-first": "^1.0.0",
@@ -7923,17 +7692,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/qw": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/rc": {
"version": "1.2.8",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
- "peer": true,
"dependencies": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -7946,10 +7713,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/read": {
"version": "1.0.7",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"mute-stream": "~0.0.4"
},
@@ -7959,20 +7725,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/read-cmd-shim": {
"version": "1.0.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"graceful-fs": "^4.1.2"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/read-installed": {
"version": "4.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"debuglog": "^1.0.1",
"read-package-json": "^2.0.0",
@@ -7987,10 +7751,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/read-package-json": {
"version": "2.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"glob": "^7.1.1",
"json-parse-better-errors": "^1.0.1",
@@ -8003,10 +7766,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/read-package-tree": {
"version": "5.3.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"read-package-json": "^2.0.0",
"readdir-scoped-modules": "^1.0.0",
@@ -8015,10 +7777,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/readable-stream": {
"version": "3.6.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -8030,10 +7791,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/readdir-scoped-modules": {
"version": "1.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"debuglog": "^1.0.1",
"dezalgo": "^1.0.0",
@@ -8043,10 +7803,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/registry-auth-token": {
"version": "3.4.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"rc": "^1.1.6",
"safe-buffer": "^5.0.1"
@@ -8054,10 +7813,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/registry-url": {
"version": "3.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"rc": "^1.0.1"
},
@@ -8067,10 +7825,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/request": {
"version": "2.88.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
@@ -8099,47 +7856,42 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/require-directory": {
"version": "2.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/require-main-filename": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/resolve-from": {
"version": "4.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/retry": {
"version": "0.12.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/rimraf": {
"version": "2.7.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"glob": "^7.1.3"
},
@@ -8149,51 +7901,45 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/run-queue": {
"version": "1.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"aproba": "^1.1.1"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/run-queue/node_modules/aproba": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/safe-buffer": {
"version": "5.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/safer-buffer": {
"version": "2.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/semver": {
"version": "5.7.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"bin": {
"semver": "bin/semver"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/semver-diff": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"semver": "^5.0.3"
},
@@ -8203,27 +7949,24 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/set-blocking": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sha": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "(BSD-2-Clause OR MIT)",
- "peer": true,
"dependencies": {
"graceful-fs": "^4.1.2"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/shebang-command": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"shebang-regex": "^1.0.0"
},
@@ -8233,37 +7976,33 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/shebang-regex": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/signal-exit": {
"version": "3.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/slide": {
"version": "1.1.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/smart-buffer": {
"version": "4.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
@@ -8271,10 +8010,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/socks": {
"version": "2.3.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ip": "1.1.5",
"smart-buffer": "^4.1.0"
@@ -8286,10 +8024,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/socks-proxy-agent": {
"version": "4.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"agent-base": "~4.2.1",
"socks": "~2.3.2"
@@ -8300,10 +8037,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/socks-proxy-agent/node_modules/agent-base": {
"version": "4.2.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es6-promisify": "^5.0.0"
},
@@ -8313,17 +8049,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sorted-object": {
"version": "2.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "(WTFPL OR MIT)",
- "peer": true
+ "license": "(WTFPL OR MIT)"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sorted-union-stream": {
"version": "2.1.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"from2": "^1.3.0",
"stream-iterate": "^1.1.0"
@@ -8331,10 +8065,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sorted-union-stream/node_modules/from2": {
"version": "1.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"inherits": "~2.0.1",
"readable-stream": "~1.1.10"
@@ -8342,17 +8075,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sorted-union-stream/node_modules/isarray": {
"version": "0.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sorted-union-stream/node_modules/readable-stream": {
"version": "1.1.14",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -8362,17 +8093,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sorted-union-stream/node_modules/string_decoder": {
"version": "0.10.31",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/spdx-correct": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
@@ -8380,17 +8109,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/spdx-exceptions": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "CC-BY-3.0",
- "peer": true
+ "license": "CC-BY-3.0"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/spdx-expression-parse": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
@@ -8398,27 +8125,24 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/spdx-license-ids": {
"version": "3.0.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "CC0-1.0",
- "peer": true
+ "license": "CC0-1.0"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/split-on-first": {
"version": "1.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/sshpk": {
"version": "1.14.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
@@ -8443,20 +8167,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/ssri": {
"version": "6.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"figgy-pudding": "^3.5.1"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/stream-each": {
"version": "1.2.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"stream-shift": "^1.0.0"
@@ -8464,10 +8186,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/stream-iterate": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"readable-stream": "^2.1.5",
"stream-shift": "^1.0.0"
@@ -8475,10 +8196,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/stream-iterate/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -8491,54 +8211,48 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/stream-iterate/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/stream-shift": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/strict-uri-encode": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/string_decoder": {
"version": "1.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.2.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/string_decoder/node_modules/safe-buffer": {
"version": "5.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/string-width": {
"version": "2.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
@@ -8549,30 +8263,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/string-width/node_modules/ansi-regex": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/string-width/node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/string-width/node_modules/strip-ansi": {
"version": "4.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-regex": "^3.0.0"
},
@@ -8582,17 +8293,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/stringify-package": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/strip-ansi": {
"version": "3.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -8602,30 +8311,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/strip-eof": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/strip-json-comments": {
"version": "2.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/supports-color": {
"version": "5.4.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -8635,10 +8341,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/tar": {
"version": "4.4.13",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
@@ -8654,10 +8359,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/tar/node_modules/minipass": {
"version": "2.9.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -8665,10 +8369,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/term-size": {
"version": "1.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"execa": "^0.7.0"
},
@@ -8678,24 +8381,21 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/text-table": {
"version": "0.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/through": {
"version": "2.3.8",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/through2": {
"version": "2.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
@@ -8703,10 +8403,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/through2/node_modules/readable-stream": {
"version": "2.3.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -8719,37 +8418,33 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/through2/node_modules/string_decoder": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/timed-out": {
"version": "4.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/tiny-relative-date": {
"version": "1.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/tough-cookie": {
"version": "2.4.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-3-Clause",
- "peer": true,
"dependencies": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
@@ -8760,10 +8455,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/tunnel-agent": {
"version": "0.6.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"safe-buffer": "^5.0.1"
},
@@ -8773,62 +8467,54 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/tweetnacl": {
"version": "0.14.5",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "Unlicense",
- "optional": true,
- "peer": true
+ "license": "Unlicense"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/typedarray": {
"version": "0.0.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/uid-number": {
"version": "0.0.6",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/umask": {
"version": "1.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/unique-filename": {
"version": "1.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"unique-slug": "^2.0.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/unique-slug": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"imurmurhash": "^0.1.4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/unique-string": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"crypto-random-string": "^1.0.0"
},
@@ -8838,30 +8524,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/unpipe": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.8"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/unzip-response": {
"version": "2.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/update-notifier": {
"version": "2.5.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"boxen": "^1.2.1",
"chalk": "^2.0.1",
@@ -8880,30 +8563,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/uri-js": {
"version": "4.4.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/uri-js/node_modules/punycode": {
"version": "2.1.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/url-parse-lax": {
"version": "1.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"prepend-http": "^1.0.1"
},
@@ -8913,44 +8593,39 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/util-deprecate": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/util-extend": {
"version": "1.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/util-promisify": {
"version": "2.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"object.getownpropertydescriptors": "^2.0.3"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/uuid": {
"version": "3.3.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"bin": {
"uuid": "bin/uuid"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/validate-npm-package-license": {
"version": "3.0.4",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
@@ -8958,23 +8633,21 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/validate-npm-package-name": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"builtins": "^1.0.3"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/verror": {
"version": "1.10.0",
- "dev": true,
"engines": [
"node >=0.6.0"
],
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
@@ -8983,20 +8656,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wcwidth": {
"version": "1.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"defaults": "^1.0.3"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/which": {
"version": "1.3.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -9006,27 +8677,24 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/which-module": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wide-align": {
"version": "1.1.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"string-width": "^1.0.2"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wide-align/node_modules/string-width": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -9038,10 +8706,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/widest-line": {
"version": "2.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"string-width": "^2.1.1"
},
@@ -9051,20 +8718,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/worker-farm": {
"version": "1.7.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"errno": "~0.1.7"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wrap-ansi": {
"version": "5.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
@@ -9076,30 +8741,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "4.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
"version": "3.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
@@ -9111,10 +8773,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "5.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
@@ -9124,17 +8785,15 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/wrappy": {
"version": "1.0.2",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/write-file-atomic": {
"version": "2.4.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
@@ -9143,44 +8802,39 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/xdg-basedir": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/xtend": {
"version": "4.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/y18n": {
"version": "4.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yallist": {
"version": "3.0.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs": {
"version": "14.2.3",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"cliui": "^5.0.0",
"decamelize": "^1.2.0",
@@ -9197,10 +8851,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs-parser": {
"version": "15.0.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
@@ -9208,30 +8861,27 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs-parser/node_modules/camelcase": {
"version": "5.3.1",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/ansi-regex": {
"version": "4.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/find-up": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"locate-path": "^3.0.0"
},
@@ -9241,20 +8891,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/locate-path": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
@@ -9265,10 +8913,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/p-limit": {
"version": "2.3.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"p-try": "^2.0.0"
},
@@ -9281,10 +8928,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/p-locate": {
"version": "3.0.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"p-limit": "^2.0.0"
},
@@ -9294,20 +8940,18 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/p-try": {
"version": "2.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/string-width": {
"version": "3.1.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
@@ -9319,10 +8963,9 @@
},
"node_modules/ep_etherpad-lite/node_modules/npm/node_modules/yargs/node_modules/strip-ansi": {
"version": "5.2.0",
- "dev": true,
+ "extraneous": true,
"inBundle": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
@@ -11007,7 +10650,6 @@
"version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
"integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
- "dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -11023,7 +10665,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -11050,7 +10691,6 @@
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
- "dev": true,
"dependencies": {
"reusify": "^1.0.4"
}
@@ -11098,7 +10738,6 @@
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -11747,6 +11386,14 @@
"he": "bin/he"
}
},
+ "node_modules/helpertypes": {
+ "version": "0.0.18",
+ "resolved": "https://registry.npmjs.org/helpertypes/-/helpertypes-0.0.18.tgz",
+ "integrity": "sha512-XRhfbSEmR+poXUC5/8AbmYNJb2riOT6qPzjGJZr0S9YedHiaY+/tzPYzWMUclYMEdCYo/1l8PDYrQFCj02v97w==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/hexoid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
@@ -12248,7 +11895,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -12266,7 +11912,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -12306,7 +11951,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
"engines": {
"node": ">=0.12.0"
}
@@ -13275,7 +12919,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
"engines": {
"node": ">= 8"
}
@@ -13292,7 +12935,6 @@
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
@@ -14672,8 +14314,8 @@
},
"node_modules/npm/node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
"inBundle": true,
+ "license": "BSD-3-Clause",
"optional": true,
"dependencies": {
"tweetnacl": "^0.14.3"
@@ -14956,8 +14598,8 @@
},
"node_modules/npm/node_modules/colors": {
"version": "1.3.3",
- "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==",
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.1.90"
@@ -15300,8 +14942,8 @@
},
"node_modules/npm/node_modules/ecc-jsbn": {
"version": "0.1.2",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"jsbn": "~0.1.0",
@@ -16165,8 +15807,8 @@
},
"node_modules/npm/node_modules/jsbn": {
"version": "0.1.1",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/npm/node_modules/json-parse-better-errors": {
@@ -16456,7 +16098,6 @@
},
"node_modules/npm/node_modules/lodash._baseindexof": {
"version": "3.1.0",
- "extraneous": true,
"inBundle": true,
"license": "MIT"
},
@@ -16471,19 +16112,16 @@
},
"node_modules/npm/node_modules/lodash._bindcallback": {
"version": "3.0.1",
- "extraneous": true,
"inBundle": true,
"license": "MIT"
},
"node_modules/npm/node_modules/lodash._cacheindexof": {
"version": "3.0.2",
- "extraneous": true,
"inBundle": true,
"license": "MIT"
},
"node_modules/npm/node_modules/lodash._createcache": {
"version": "3.1.2",
- "extraneous": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
@@ -16497,7 +16135,6 @@
},
"node_modules/npm/node_modules/lodash._getnative": {
"version": "3.9.1",
- "extraneous": true,
"inBundle": true,
"license": "MIT"
},
@@ -16513,7 +16150,6 @@
},
"node_modules/npm/node_modules/lodash.restparam": {
"version": "3.6.1",
- "extraneous": true,
"inBundle": true,
"license": "MIT"
},
@@ -18015,8 +17651,8 @@
},
"node_modules/npm/node_modules/tweetnacl": {
"version": "0.14.5",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
"inBundle": true,
+ "license": "Unlicense",
"optional": true
},
"node_modules/npm/node_modules/typedarray": {
@@ -18937,7 +18573,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
"engines": {
"node": ">=8.6"
},
@@ -19145,7 +18780,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -19486,6 +19120,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/reserved-words": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz",
+ "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw=="
+ },
"node_modules/resolve": {
"version": "1.22.2",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
@@ -19546,7 +19185,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -19576,7 +19214,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -20845,7 +20482,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
@@ -21042,7 +20678,6 @@
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
diff --git a/src/package.json b/src/package.json
index 6ade4d3d1..9b8a08abe 100644
--- a/src/package.json
+++ b/src/package.json
@@ -31,6 +31,7 @@
],
"dependencies": {
"async": "^3.2.2",
+ "cjstoesm": "^2.1.2",
"clean-css": "^5.3.2",
"cookie-parser": "^1.4.6",
"cross-spawn": "^7.0.3",
@@ -113,6 +114,5 @@
"dev": "concurrently \"npx tsc --watch\" \"nodemon -q dist/server.js\""
},
"version": "1.9.0",
- "license": "Apache-2.0",
- "type": "module"
+ "license": "Apache-2.0"
}
diff --git a/src/static/js/Changeset.js b/src/static/js/Changeset.ts
similarity index 95%
rename from src/static/js/Changeset.js
rename to src/static/js/Changeset.ts
index 53b3f2c8f..e9f7dfc8d 100644
--- a/src/static/js/Changeset.js
+++ b/src/static/js/Changeset.ts
@@ -22,6 +22,8 @@
* https://github.com/ether/pad/blob/master/infrastructure/ace/www/easysync2.js
*/
+import {CustomError} from "../../node/utils/customError";
+
const AttributeMap = require('./AttributeMap');
const AttributePool = require('./AttributePool');
const attributes = require('./attributes');
@@ -47,8 +49,8 @@ const {padutils} = require('./pad_utils');
*
* @param {string} msg - Just some message
*/
-const error = (msg) => {
- const e = new Error(msg);
+export const error = (msg) => {
+ const e = new CustomError(msg);
e.easysync = true;
throw e;
};
@@ -71,7 +73,7 @@ const assert = (b, msg) => {
* @param {string} str - string of the number in base 36
* @returns {number} number
*/
-exports.parseNum = (str) => parseInt(str, 36);
+export const parseNum = (str) => parseInt(str, 36);
/**
* Writes a number in base 36 and puts it in a string.
@@ -79,12 +81,16 @@ exports.parseNum = (str) => parseInt(str, 36);
* @param {number} num - number
* @returns {string} string
*/
-exports.numToString = (num) => num.toString(36).toLowerCase();
+export const numToString = (num) => num.toString(36).toLowerCase();
/**
* An operation to apply to a shared document.
*/
class Op {
+ opcode: string;
+ chars: number;
+ lines: number;
+ attribs: string;
/**
* @param {(''|'='|'+'|'-')} [opcode=''] - Initial value of the `opcode` property.
*/
@@ -146,11 +152,11 @@ class Op {
toString() {
if (!this.opcode) throw new TypeError('null op');
if (typeof this.attribs !== 'string') throw new TypeError('attribs must be a string');
- const l = this.lines ? `|${exports.numToString(this.lines)}` : '';
- return this.attribs + l + this.opcode + exports.numToString(this.chars);
+ const l = this.lines ? `|${numToString(this.lines)}` : '';
+ return this.attribs + l + this.opcode + numToString(this.chars);
}
}
-exports.Op = Op;
+export const Op = Op;
/**
* Describes changes to apply to a document. Does not include the attribute pool or the original
@@ -170,7 +176,7 @@ exports.Op = Op;
* @param {string} cs - String representation of the Changeset
* @returns {number} oldLen property
*/
-exports.oldLen = (cs) => exports.unpack(cs).oldLen;
+export const oldLen = (cs) => exports.unpack(cs).oldLen;
/**
* Returns the length of the text after changeset is applied.
@@ -178,7 +184,7 @@ exports.oldLen = (cs) => exports.unpack(cs).oldLen;
* @param {string} cs - String representation of the Changeset
* @returns {number} newLen property
*/
-exports.newLen = (cs) => exports.unpack(cs).newLen;
+export const newLen = (cs) => exports.unpack(cs).newLen;
/**
* Parses a string of serialized changeset operations.
@@ -187,7 +193,7 @@ exports.newLen = (cs) => exports.unpack(cs).newLen;
* @yields {Op}
* @returns {Generator}
*/
-exports.deserializeOps = function* (ops) {
+export const deserializeOps = function* (ops) {
// TODO: Migrate to String.prototype.matchAll() once there is enough browser support.
const regex = /((?:\*[0-9a-z]+)*)(?:\|([0-9a-z]+))?([-+=])([0-9a-z]+)|(.)/g;
let match;
@@ -195,8 +201,8 @@ exports.deserializeOps = function* (ops) {
if (match[5] === '$') return; // Start of the insert operation character bank.
if (match[5] != null) error(`invalid operation: ${ops.slice(regex.lastIndex - 1)}`);
const op = new Op(match[3]);
- op.lines = exports.parseNum(match[2] || '0');
- op.chars = exports.parseNum(match[4]);
+ op.lines = parseNum(match[2] || '0');
+ op.chars = parseNum(match[4]);
op.attribs = match[1];
yield op;
}
@@ -210,11 +216,18 @@ exports.deserializeOps = function* (ops) {
* @deprecated Use `deserializeOps` instead.
*/
class OpIter {
+ private _next: {
+ value: any;
+ done: boolean,
+
+
+ };
+ private _gen: any;
/**
* @param {string} ops - String encoding the change operations to iterate over.
*/
constructor(ops) {
- this._gen = exports.deserializeOps(ops);
+ this._gen = deserializeOps(ops);
this._next = this._gen.next();
}
@@ -252,7 +265,7 @@ class OpIter {
* @param {string} opsStr - String encoding of the change operations to perform.
* @returns {OpIter} Operator iterator object.
*/
-exports.opIterator = (opsStr) => {
+export const opIterator = (opsStr) => {
padutils.warnDeprecated(
'Changeset.opIterator() is deprecated; use Changeset.deserializeOps() instead');
return new OpIter(opsStr);
@@ -277,7 +290,7 @@ const clearOp = (op) => {
* @param {('+'|'-'|'='|'')} [optOpcode=''] - The operation's operator.
* @returns {Op}
*/
-exports.newOp = (optOpcode) => {
+export const newOp = (optOpcode) => {
padutils.warnDeprecated('Changeset.newOp() is deprecated; use the Changeset.Op class instead');
return new Op(optOpcode);
};
@@ -370,17 +383,17 @@ const opsFromText = function* (opcode, text, attribs = '', pool = null) {
* @param {string} cs - Changeset to check
* @returns {string} the checked Changeset
*/
-exports.checkRep = (cs) => {
- const unpacked = exports.unpack(cs);
+export const checkRep = (cs) => {
+ const unpacked = unpack(cs);
const oldLen = unpacked.oldLen;
const newLen = unpacked.newLen;
const ops = unpacked.ops;
let charBank = unpacked.charBank;
- const assem = exports.smartOpAssembler();
+ const assem = smartOpAssembler();
let oldPos = 0;
let calcNewLen = 0;
- for (const o of exports.deserializeOps(ops)) {
+ for (const o of deserializeOps(ops)) {
switch (o.opcode) {
case '=':
oldPos += o.chars;
@@ -413,7 +426,7 @@ exports.checkRep = (cs) => {
assert(calcNewLen === newLen, 'Invalid changeset: claimed length does not match actual length');
assert(charBank === '', 'Invalid changeset: excess characters in the charBank');
assem.endDocument();
- const normalized = exports.pack(oldLen, calcNewLen, assem.toString(), unpacked.charBank);
+ const normalized = pack(oldLen, calcNewLen, assem.toString(), unpacked.charBank);
assert(normalized === cs, 'Invalid changeset: not in canonical form');
return cs;
};
@@ -421,11 +434,11 @@ exports.checkRep = (cs) => {
/**
* @returns {SmartOpAssembler}
*/
-exports.smartOpAssembler = () => {
- const minusAssem = exports.mergingOpAssembler();
- const plusAssem = exports.mergingOpAssembler();
- const keepAssem = exports.mergingOpAssembler();
- const assem = exports.stringAssembler();
+export const smartOpAssembler = () => {
+ const minusAssem = mergingOpAssembler();
+ const plusAssem = mergingOpAssembler();
+ const keepAssem = mergingOpAssembler();
+ const assem = stringAssembler();
let lastOpcode = '';
let lengthChange = 0;
@@ -515,8 +528,8 @@ exports.smartOpAssembler = () => {
/**
* @returns {MergingOpAssembler}
*/
-exports.mergingOpAssembler = () => {
- const assem = exports.opAssembler();
+export const mergingOpAssembler = () => {
+ const assem = opAssembler();
const bufOp = new Op();
// If we get, for example, insertions [xxx\n,yyy], those don't merge,
@@ -528,7 +541,7 @@ exports.mergingOpAssembler = () => {
/**
* @param {boolean} [isEndDocument]
*/
- const flush = (isEndDocument) => {
+ const flush = (isEndDocument?: boolean) => {
if (!bufOp.opcode) return;
if (isEndDocument && bufOp.opcode === '=' && !bufOp.attribs) {
// final merged keep, leave it implicit
@@ -589,7 +602,7 @@ exports.mergingOpAssembler = () => {
/**
* @returns {OpAssembler}
*/
-exports.opAssembler = () => {
+export const opAssembler = () => {
let serialized = '';
/**
@@ -627,7 +640,7 @@ exports.opAssembler = () => {
* @param {string} str - String to iterate over
* @returns {StringIterator}
*/
-exports.stringIterator = (str) => {
+export const stringIterator = (str) => {
let curIndex = 0;
// newLines is the number of \n between curIndex and str.length
let newLines = str.split('\n').length - 1;
@@ -677,7 +690,7 @@ exports.stringIterator = (str) => {
/**
* @returns {StringAssembler}
*/
-exports.stringAssembler = () => ({
+export const stringAssembler = () => ({
_str: '',
clear() { this._str = ''; },
/**
@@ -711,6 +724,11 @@ exports.stringAssembler = () => ({
* with no newlines.
*/
class TextLinesMutator {
+ private _lines: any;
+ private _curSplice: number[]|{[key: string]:any};
+ private _inSplice: boolean;
+ private _curLine: number;
+ private _curCol: number;
/**
* @param {(string[]|StringArrayLike)} lines - Lines to mutate (in place).
*/
@@ -798,10 +816,12 @@ class TextLinesMutator {
* close or TODO(doc).
*/
_leaveSplice() {
- this._lines.splice(...this._curSplice);
- this._curSplice.length = 2;
- this._curSplice[0] = this._curSplice[1] = 0;
- this._inSplice = false;
+ if(this._curSplice instanceof Array) {
+ this._lines.splice(...this._curSplice);
+ this._curSplice.length = 2;
+ this._curSplice[0] = this._curSplice[1] = 0;
+ this._inSplice = false;
+ }
}
/**
@@ -837,7 +857,7 @@ class TextLinesMutator {
* @param {number} L -
* @param {boolean} includeInSplice - Indicates that attributes are present.
*/
- skipLines(L, includeInSplice) {
+ skipLines(L, includeInSplice?:boolean) {
if (!L) return;
if (includeInSplice) {
if (!this._inSplice) this._enterSplice();
@@ -905,7 +925,7 @@ class TextLinesMutator {
return this._linesSlice(m, m + k).join('');
};
- let removed = '';
+ let removed:string|number = '';
if (this._isCurLineInSplice()) {
if (this._curCol === 0) {
removed = this._curSplice[this._curSplice.length - 1];
@@ -958,7 +978,7 @@ class TextLinesMutator {
if (!text) return;
if (!this._inSplice) this._enterSplice();
if (L) {
- const newLines = exports.splitTextLines(text);
+ const newLines = splitTextLines(text);
if (this._isCurLineInSplice()) {
const sline = this._curSplice.length - 1;
/** @type {string} */
@@ -1039,11 +1059,11 @@ class TextLinesMutator {
* @returns {string} the integrated changeset
*/
const applyZip = (in1, in2, func) => {
- const ops1 = exports.deserializeOps(in1);
- const ops2 = exports.deserializeOps(in2);
+ const ops1 = deserializeOps(in1);
+ const ops2 = deserializeOps(in2);
let next1 = ops1.next();
let next2 = ops2.next();
- const assem = exports.smartOpAssembler();
+ const assem = smartOpAssembler();
while (!next1.done || !next2.done) {
if (!next1.done && !next1.value.opcode) next1 = ops1.next();
if (!next2.done && !next2.value.opcode) next2 = ops2.next();
@@ -1063,13 +1083,13 @@ const applyZip = (in1, in2, func) => {
* @param {string} cs - The encoded changeset.
* @returns {Changeset}
*/
-exports.unpack = (cs) => {
+export const unpack = (cs) => {
const headerRegex = /Z:([0-9a-z]+)([><])([0-9a-z]+)|/;
const headerMatch = headerRegex.exec(cs);
if ((!headerMatch) || (!headerMatch[0])) error(`Not a changeset: ${cs}`);
- const oldLen = exports.parseNum(headerMatch[1]);
+ const oldLen = parseNum(headerMatch[1]);
const changeSign = (headerMatch[2] === '>') ? 1 : -1;
- const changeMag = exports.parseNum(headerMatch[3]);
+ const changeMag = parseNum(headerMatch[3]);
const newLen = oldLen + changeSign * changeMag;
const opsStart = headerMatch[0].length;
let opsEnd = cs.indexOf('$');
@@ -1091,12 +1111,12 @@ exports.unpack = (cs) => {
* @param {string} bank - Characters for insert operations.
* @returns {string} The encoded changeset.
*/
-exports.pack = (oldLen, newLen, opsStr, bank) => {
+export const pack = (oldLen, newLen, opsStr, bank) => {
const lenDiff = newLen - oldLen;
- const lenDiffStr = (lenDiff >= 0 ? `>${exports.numToString(lenDiff)}`
- : `<${exports.numToString(-lenDiff)}`);
+ const lenDiffStr = (lenDiff >= 0 ? `>${numToString(lenDiff)}`
+ : `<${numToString(-lenDiff)}`);
const a = [];
- a.push('Z:', exports.numToString(oldLen), lenDiffStr, opsStr, '$', bank);
+ a.push('Z:', numToString(oldLen), lenDiffStr, opsStr, '$', bank);
return a.join('');
};
@@ -1107,13 +1127,13 @@ exports.pack = (oldLen, newLen, opsStr, bank) => {
* @param {string} str - String to which a Changeset should be applied
* @returns {string}
*/
-exports.applyToText = (cs, str) => {
- const unpacked = exports.unpack(cs);
+export const applyToText = (cs, str) => {
+ const unpacked = unpack(cs);
assert(str.length === unpacked.oldLen, `mismatched apply: ${str.length} / ${unpacked.oldLen}`);
- const bankIter = exports.stringIterator(unpacked.charBank);
- const strIter = exports.stringIterator(str);
- const assem = exports.stringAssembler();
- for (const op of exports.deserializeOps(unpacked.ops)) {
+ const bankIter = stringIterator(unpacked.charBank);
+ const strIter = stringIterator(str);
+ const assem = stringAssembler();
+ for (const op of deserializeOps(unpacked.ops)) {
switch (op.opcode) {
case '+':
// op is + and op.lines 0: no newlines must be in op.chars
@@ -1151,11 +1171,11 @@ exports.applyToText = (cs, str) => {
* @param {string} cs - the changeset to apply
* @param {string[]} lines - The lines to which the changeset needs to be applied
*/
-exports.mutateTextLines = (cs, lines) => {
- const unpacked = exports.unpack(cs);
- const bankIter = exports.stringIterator(unpacked.charBank);
+export const mutateTextLines = (cs, lines) => {
+ const unpacked = unpack(cs);
+ const bankIter = stringIterator(unpacked.charBank);
const mut = new TextLinesMutator(lines);
- for (const op of exports.deserializeOps(unpacked.ops)) {
+ for (const op of deserializeOps(unpacked.ops)) {
switch (op.opcode) {
case '+':
mut.insert(bankIter.take(op.chars), op.lines);
@@ -1180,7 +1200,7 @@ exports.mutateTextLines = (cs, lines) => {
* @param {AttributePool} pool - attribute pool
* @returns {string}
*/
-exports.composeAttributes = (att1, att2, resultIsMutation, pool) => {
+export const composeAttributes = (att1, att2, resultIsMutation, pool) => {
// att1 and att2 are strings like "*3*f*1c", asMutation is a boolean.
// Sometimes attribute (key,value) pairs are treated as attribute presence
// information, while other times they are treated as operations that
@@ -1258,7 +1278,7 @@ const slicerZipperFunc = (attOp, csOp, pool) => {
// normally be the empty string. However, padDiff.js adds attributes to remove ops and needs
// them preserved so they are copied here.
? csOp.attribs
- : exports.composeAttributes(attOp.attribs, csOp.attribs, attOp.opcode === '=', pool);
+ : composeAttributes(attOp.attribs, csOp.attribs, attOp.opcode === '=', pool);
partiallyConsumedOp.chars -= fullyConsumedOp.chars;
partiallyConsumedOp.lines -= fullyConsumedOp.lines;
if (!partiallyConsumedOp.chars) partiallyConsumedOp.opcode = '';
@@ -1275,8 +1295,8 @@ const slicerZipperFunc = (attOp, csOp, pool) => {
* @param {AttributePool} pool - the attibutes pool
* @returns {string}
*/
-exports.applyToAttribution = (cs, astr, pool) => {
- const unpacked = exports.unpack(cs);
+export const applyToAttribution = (cs, astr, pool) => {
+ const unpacked = unpack(cs);
return applyZip(astr, unpacked.ops, (op1, op2) => slicerZipperFunc(op1, op2, pool));
};
@@ -1749,7 +1769,7 @@ exports.mapAttribNumbers = (cs, func) => {
* attributes
* @returns {AText}
*/
-exports.makeAText = (text, attribs) => ({
+export const makeAText = (text, attribs) => ({
text,
attribs: (attribs || exports.makeAttribution(text)),
});
@@ -1762,7 +1782,7 @@ exports.makeAText = (text, attribs) => ({
* @param {AttributePool} pool - Attribute Pool to add to
* @returns {AText}
*/
-exports.applyToAText = (cs, atext, pool) => ({
+export const applyToAText = (cs, atext, pool) => ({
text: exports.applyToText(cs, atext.text),
attribs: exports.applyToAttribution(cs, atext.attribs, pool),
});
@@ -1787,7 +1807,7 @@ exports.cloneAText = (atext) => {
* @param {AText} atext1 -
* @param {AText} atext2 -
*/
-exports.copyAText = (atext1, atext2) => {
+export const copyAText = (atext1, atext2) => {
atext2.text = atext1.text;
atext2.attribs = atext1.attribs;
};
@@ -1799,10 +1819,10 @@ exports.copyAText = (atext1, atext2) => {
* @yields {Op}
* @returns {Generator}
*/
-exports.opsFromAText = function* (atext) {
+export const opsFromAText = function* (atext) {
// intentionally skips last newline char of atext
let lastOp = null;
- for (const op of exports.deserializeOps(atext.attribs)) {
+ for (const op of deserializeOps(atext.attribs)) {
if (lastOp != null) yield lastOp;
lastOp = op;
}
diff --git a/src/static/js/pluginfw/hooks.js b/src/static/js/pluginfw/hooks.ts
similarity index 93%
rename from src/static/js/pluginfw/hooks.js
rename to src/static/js/pluginfw/hooks.ts
index 89f4267bb..90a479b18 100644
--- a/src/static/js/pluginfw/hooks.js
+++ b/src/static/js/pluginfw/hooks.ts
@@ -1,6 +1,6 @@
'use strict';
-const pluginDefs = require('./plugin_defs');
+import {hooks} from './plugin_defs';
// Maps the name of a server-side hook to a string explaining the deprecation
// (e.g., 'use the foo hook instead').
@@ -10,12 +10,15 @@ const pluginDefs = require('./plugin_defs');
// const hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
// hooks.deprecationNotices.fooBar = 'use the newSpiffy hook instead';
//
-exports.deprecationNotices = {};
+export const deprecationNotices:{
+ authFailure?: string;
+ clientReady?: string
+} = {};
const deprecationWarned = {};
const checkDeprecation = (hook) => {
- const notice = exports.deprecationNotices[hook.hook_name];
+ const notice = deprecationNotices[hook.hook_name];
if (notice == null) return;
if (deprecationWarned[hook.hook_fn_name]) return;
console.warn(`${hook.hook_name} hook used by the ${hook.part.plugin} plugin ` +
@@ -189,10 +192,10 @@ const callHookFnSync = (hook, context) => {
// 1. Collect all values returned by the hook functions into an array.
// 2. Convert each `undefined` entry into `[]`.
// 3. Flatten one level.
-exports.callAll = (hookName, context) => {
+export const callAll = (hookName, context?) => {
if (context == null) context = {};
- const hooks = pluginDefs.hooks[hookName] || [];
- return flatten1(hooks.map((hook) => normalizeValue(callHookFnSync(hook, context))));
+ const hooksResult = hooks[hookName] || [];
+ return flatten1(hooksResult.map((hook) => normalizeValue(callHookFnSync(hook, context))));
};
// Calls the hook function asynchronously and returns a Promise that either resolves to the hook
@@ -342,23 +345,23 @@ const callHookFnAsync = async (hook, context) => {
// 2. Convert each `undefined` entry into `[]`.
// 3. Flatten one level.
// If cb is non-null, this function resolves to the value returned by cb.
-exports.aCallAll = async (hookName, context, cb = null) => {
- if (cb != null) return await attachCallback(exports.aCallAll(hookName, context), cb);
+export const aCallAll = async (hookName, context?, cb = null) => {
+ if (cb != null) return await attachCallback(aCallAll(hookName, context), cb);
if (context == null) context = {};
- const hooks = pluginDefs.hooks[hookName] || [];
+ const hooksResult = hooks[hookName] || [];
const results = await Promise.all(
- hooks.map(async (hook) => normalizeValue(await callHookFnAsync(hook, context))));
+ hooksResult.map(async (hook) => normalizeValue(await callHookFnAsync(hook, context))));
return flatten1(results);
};
// Like `aCallAll()` except the hook functions are called one at a time instead of concurrently.
// Only use this function if the hook functions must be called one at a time, otherwise use
// `aCallAll()`.
-exports.callAllSerial = async (hookName, context) => {
+export const callAllSerial = async (hookName, context) => {
if (context == null) context = {};
- const hooks = pluginDefs.hooks[hookName] || [];
+ const hooksResult = hooks[hookName] || [];
const results = [];
- for (const hook of hooks) {
+ for (const hook of hooksResult) {
results.push(normalizeValue(await callHookFnAsync(hook, context)));
}
return flatten1(results);
@@ -367,11 +370,11 @@ exports.callAllSerial = async (hookName, context) => {
// DEPRECATED: Use `aCallFirst()` instead.
//
// Like `aCallFirst()`, but synchronous. Hook functions must provide their values synchronously.
-exports.callFirst = (hookName, context) => {
+export const callFirst = (hookName, context) => {
if (context == null) context = {};
const predicate = (val) => val.length;
- const hooks = pluginDefs.hooks[hookName] || [];
- for (const hook of hooks) {
+ const hooksResult = hooks[hookName] || [];
+ for (const hook of hooksResult) {
const val = normalizeValue(callHookFnSync(hook, context));
if (predicate(val)) return val;
}
@@ -399,21 +402,21 @@ exports.callFirst = (hookName, context) => {
// If cb is nullish, resolves to an array that is either the normalized value that satisfied the
// predicate or empty if the predicate was never satisfied. If cb is non-nullish, resolves to the
// value returned from cb().
-exports.aCallFirst = async (hookName, context, cb = null, predicate = null) => {
+export const aCallFirst = async (hookName, context, cb = null, predicate = null) => {
if (cb != null) {
- return await attachCallback(exports.aCallFirst(hookName, context, null, predicate), cb);
+ return await attachCallback(aCallFirst(hookName, context, null, predicate), cb);
}
if (context == null) context = {};
if (predicate == null) predicate = (val) => val.length;
- const hooks = pluginDefs.hooks[hookName] || [];
- for (const hook of hooks) {
+ const hooksResult = hooks[hookName] || [];
+ for (const hook of hooksResult) {
const val = normalizeValue(await callHookFnAsync(hook, context));
if (predicate(val)) return val;
}
return [];
};
-exports.exportedForTestingOnly = {
+export const exportedForTestingOnly = {
callHookFnAsync,
callHookFnSync,
deprecationWarned,
diff --git a/src/static/js/pluginfw/installer.js b/src/static/js/pluginfw/installer.ts
similarity index 66%
rename from src/static/js/pluginfw/installer.js
rename to src/static/js/pluginfw/installer.ts
index dd3dddc88..e10e41971 100644
--- a/src/static/js/pluginfw/installer.js
+++ b/src/static/js/pluginfw/installer.ts
@@ -1,18 +1,23 @@
'use strict';
-const log4js = require('log4js');
-const plugins = require('./plugins');
-const hooks = require('./hooks');
-const request = require('request');
-const runCmd = require('../../../node/utils/run_cmd');
-const settings = require('../../../node/utils/Settings');
+import log4js from 'log4js';
+import {prefix, update} from "./plugins";
+
+import {aCallAll} from "./hooks";
+
+import request from "request";
+
+import {exportCMD} from "../../../node/utils/run_cmd";
+
+import {reloadSettings} from "../../../node/utils/Settings";
+import {InstallerModel} from "../../module/InstallerModel";
const logger = log4js.getLogger('plugins');
const onAllTasksFinished = async () => {
- settings.reloadSettings();
- await hooks.aCallAll('loadSettings', {settings});
- await hooks.aCallAll('restartServer');
+ const settings = reloadSettings();
+ await aCallAll('loadSettings', {settings});
+ await aCallAll('restartServer');
};
let tasks = 0;
@@ -27,54 +32,54 @@ const wrapTaskCb = (cb) => {
};
};
-exports.uninstall = async (pluginName, cb = null) => {
+export const uninstall = async (pluginName, cb = null) => {
cb = wrapTaskCb(cb);
logger.info(`Uninstalling plugin ${pluginName}...`);
try {
// The --no-save flag prevents npm from creating package.json or package-lock.json.
// The --legacy-peer-deps flag is required to work around a bug in npm v7:
// https://github.com/npm/cli/issues/2199
- await runCmd(['npm', 'uninstall', '--no-save', '--legacy-peer-deps', pluginName]);
+ await exportCMD(['npm', 'uninstall', '--no-save', '--legacy-peer-deps', pluginName]);
} catch (err) {
logger.error(`Failed to uninstall plugin ${pluginName}`);
cb(err || new Error(err));
throw err;
}
logger.info(`Successfully uninstalled plugin ${pluginName}`);
- await hooks.aCallAll('pluginUninstall', {pluginName});
- await plugins.update();
+ await aCallAll('pluginUninstall', {pluginName});
+ await update();
cb(null);
};
-exports.install = async (pluginName, cb = null) => {
+export const install = async (pluginName, cb = null) => {
cb = wrapTaskCb(cb);
logger.info(`Installing plugin ${pluginName}...`);
try {
// The --no-save flag prevents npm from creating package.json or package-lock.json.
// The --legacy-peer-deps flag is required to work around a bug in npm v7:
// https://github.com/npm/cli/issues/2199
- await runCmd(['npm', 'install', '--no-save', '--legacy-peer-deps', pluginName]);
+ await exportCMD(['npm', 'install', '--no-save', '--legacy-peer-deps', pluginName]);
} catch (err) {
logger.error(`Failed to install plugin ${pluginName}`);
cb(err || new Error(err));
throw err;
}
logger.info(`Successfully installed plugin ${pluginName}`);
- await hooks.aCallAll('pluginInstall', {pluginName});
- await plugins.update();
+ await aCallAll('pluginInstall', {pluginName});
+ await update();
cb(null);
};
-exports.availablePlugins = null;
+export let availablePlugins = null;
let cacheTimestamp = 0;
-exports.getAvailablePlugins = (maxCacheAge) => {
+export const getAvailablePlugins = (maxCacheAge) => {
const nowTimestamp = Math.round(Date.now() / 1000);
return new Promise((resolve, reject) => {
// check cache age before making any request
- if (exports.availablePlugins && maxCacheAge && (nowTimestamp - cacheTimestamp) <= maxCacheAge) {
- return resolve(exports.availablePlugins);
+ if (availablePlugins && maxCacheAge && (nowTimestamp - cacheTimestamp) <= maxCacheAge) {
+ return resolve(availablePlugins);
}
request('https://static.etherpad.org/plugins.json', (er, response, plugins) => {
@@ -87,7 +92,7 @@ exports.getAvailablePlugins = (maxCacheAge) => {
plugins = [];
}
- exports.availablePlugins = plugins;
+ availablePlugins = plugins;
cacheTimestamp = nowTimestamp;
resolve(plugins);
});
@@ -95,18 +100,19 @@ exports.getAvailablePlugins = (maxCacheAge) => {
};
-exports.search = (searchTerm, maxCacheAge) => exports.getAvailablePlugins(maxCacheAge).then(
- (results) => {
+export const search = (searchTerm, maxCacheAge) => getAvailablePlugins(maxCacheAge).then(
+ (results: InstallerModel[]) => {
const res = {};
if (searchTerm) {
searchTerm = searchTerm.toLowerCase();
}
+
for (const pluginName in results) {
// for every available plugin
// TODO: Also search in keywords here!
- if (pluginName.indexOf(plugins.prefix) !== 0) continue;
+ if (pluginName.indexOf(prefix) !== 0) continue;
if (searchTerm && !~results[pluginName].name.toLowerCase().indexOf(searchTerm) &&
(typeof results[pluginName].description !== 'undefined' &&
diff --git a/src/static/js/pluginfw/plugin_defs.js b/src/static/js/pluginfw/plugin_defs.ts
similarity index 72%
rename from src/static/js/pluginfw/plugin_defs.js
rename to src/static/js/pluginfw/plugin_defs.ts
index f7d10879e..1a7553757 100644
--- a/src/static/js/pluginfw/plugin_defs.js
+++ b/src/static/js/pluginfw/plugin_defs.ts
@@ -8,13 +8,13 @@
// * hook_fn: Plugin-supplied hook function.
// * hook_fn_name: Name of the hook function, with the form :.
// * part: The ep.json part object that declared the hook. See exports.plugins.
-exports.hooks = {};
+export const hooks = {};
// Whether the plugins have been loaded.
-exports.loaded = false;
+export let loaded = false;
// Topologically sorted list of parts from exports.plugins.
-exports.parts = [];
+export const parts = [];
// Maps the name of a plugin to the plugin's definition provided in ep.json. The ep.json object is
// augmented with additional metadata:
@@ -25,4 +25,20 @@ exports.parts = [];
// - version
// - path
// - realPath
-exports.plugins = {};
+export const plugins = {};
+
+export const setPlugins = (newPlugins) => {
+ Object.assign(plugins, newPlugins);
+}
+
+export const setParts = (newParts) => {
+ Object.assign(parts, newParts);
+}
+
+export const setHooks = (newHooks) => {
+ Object.assign(hooks, newHooks);
+}
+
+export const setLoaded = (newLoaded) => {
+ loaded = newLoaded;
+}
diff --git a/src/static/js/pluginfw/plugins.js b/src/static/js/pluginfw/plugins.ts
similarity index 70%
rename from src/static/js/pluginfw/plugins.js
rename to src/static/js/pluginfw/plugins.ts
index ec3cfaa92..ddb9f3c29 100644
--- a/src/static/js/pluginfw/plugins.js
+++ b/src/static/js/pluginfw/plugins.ts
@@ -1,20 +1,28 @@
'use strict';
-const fs = require('fs').promises;
-const hooks = require('./hooks');
-const log4js = require('log4js');
-const path = require('path');
-const runCmd = require('../../../node/utils/run_cmd');
-const tsort = require('./tsort');
-const pluginUtils = require('./shared');
-const defs = require('./plugin_defs');
+import {promises as fs} from "fs";
+
+import {aCallAll} from "./hooks";
+
+import log4js from "log4js";
+
+import path from "path";
+
+import {exportCMD} from "../../../node/utils/run_cmd";
+
+import {tsort} from "./tsort";
+
+import {extractHooks} from "./shared";
+
+import {loaded, parts, plugins, setHooks, setLoaded, setParts, setPlugins} from "./plugin_defs";
+import {PluginInfo} from "../../module/PluginInfo";
const logger = log4js.getLogger('plugins');
// Log the version of npm at startup.
(async () => {
try {
- const version = await runCmd(['npm', '--version'], {stdio: [null, 'string']});
+ const version = await exportCMD(['npm', '--version'], {stdio: [null, 'string']});
logger.info(`npm --version: ${version}`);
} catch (err) {
logger.error(`Failed to get npm version: ${err.stack || err}`);
@@ -22,16 +30,19 @@ const logger = log4js.getLogger('plugins');
}
})();
-exports.prefix = 'ep_';
+type PartType = {
+ [keys: string]:any
+}
+export const prefix = 'ep_';
-exports.formatPlugins = () => Object.keys(defs.plugins).join(', ');
+export const formatPlugins = () => Object.keys(plugins).join(', ');
-exports.formatParts = () => defs.parts.map((part) => part.full_name).join('\n');
+export const formatParts = () => parts.map((part) => part.full_name).join('\n');
-exports.formatHooks = (hookSetName, html) => {
+export const formatHooks = (hookSetName, html) => {
let hooks = new Map();
- for (const [pluginName, def] of Object.entries(defs.plugins)) {
- for (const part of def.parts) {
+ for (const [pluginName, def] of Object.entries(plugins)) {
+ for (const part of parts) {
for (const [hookName, hookFnName] of Object.entries(part[hookSetName] || {})) {
let hookEntry = hooks.get(hookName);
if (!hookEntry) {
@@ -53,7 +64,7 @@ exports.formatHooks = (hookSetName, html) => {
hooks = new Map([...hooks].sort(sortStringKeys));
for (const [hookName, hookEntry] of hooks) {
lines.push(html ? ` ${hookName}:` : ` ${hookName}:`);
- const sortedHookEntry = new Map([...hookEntry].sort(sortStringKeys));
+ const sortedHookEntry = new Map([...hookEntry].sort(sortStringKeys));
hooks.set(hookName, sortedHookEntry);
for (const [pluginName, pluginEntry] of sortedHookEntry) {
lines.push(html ? ` - ${pluginName}:
` : ` ${pluginName}:`);
@@ -72,20 +83,20 @@ exports.formatHooks = (hookSetName, html) => {
return lines.join('\n');
};
-exports.pathNormalization = (part, hookFnName, hookName) => {
+export const pathNormalization = (part, hookFnName, hookName) => {
const tmp = hookFnName.split(':'); // hookFnName might be something like 'C:\\foo.js:myFunc'.
// If there is a single colon assume it's 'filename:funcname' not 'C:\\filename'.
const functionName = (tmp.length > 1 ? tmp.pop() : null) || hookName;
const moduleName = tmp.join(':') || part.plugin;
- const packageDir = path.dirname(defs.plugins[part.plugin].package.path);
+ const packageDir = path.dirname(plugins[part.plugin].package.path);
const fileName = path.join(packageDir, moduleName);
return `${fileName}:${functionName}`;
};
-exports.update = async () => {
+export const update = async () => {
const packages = await exports.getPackages();
- const parts = {}; // Key is full name. sortParts converts this into a topologically sorted array.
- const plugins = {};
+ let parts:{[keys: string]:any} = {}; // Key is full name. sortParts converts this into a topologically sorted array.
+ let plugins = {};
// Load plugin metadata ep.json
await Promise.all(Object.keys(packages).map(async (pluginName) => {
@@ -94,13 +105,13 @@ exports.update = async () => {
}));
logger.info(`Loaded ${Object.keys(packages).length} plugins`);
- defs.plugins = plugins;
- defs.parts = sortParts(parts);
- defs.hooks = pluginUtils.extractHooks(defs.parts, 'hooks', exports.pathNormalization);
- defs.loaded = true;
- await Promise.all(Object.keys(defs.plugins).map(async (p) => {
+ setPlugins(plugins);
+ setParts(sortParts(parts))
+ setHooks(extractHooks(parts, 'hooks', exports.pathNormalization));
+ setLoaded(true)
+ await Promise.all(Object.keys(plugins).map(async (p) => {
const logger = log4js.getLogger(`plugin:${p}`);
- await hooks.aCallAll(`init_${p}`, {logger});
+ await aCallAll(`init_${p}`, {logger});
}));
};
@@ -112,13 +123,15 @@ exports.getPackages = async () => {
// unset or set to `development`) because otherwise `npm ls` will not mention any packages
// that are not included in `package.json` (which is expected to not exist).
const cmd = ['npm', 'ls', '--long', '--json', '--depth=0', '--no-production'];
- const {dependencies = {}} = JSON.parse(await runCmd(cmd, {stdio: [null, 'string']}));
+ const {dependencies = {}} = JSON.parse(await exportCMD(cmd, {stdio: [null, 'string']}) as unknown as string);
await Promise.all(Object.entries(dependencies).map(async ([pkg, info]) => {
if (!pkg.startsWith(exports.prefix)) {
delete dependencies[pkg];
return;
}
- info.realPath = await fs.realpath(info.path);
+ const mappedInfo = info as PluginInfo
+
+ mappedInfo.realPath = await fs.realpath(mappedInfo.path);
}));
return dependencies;
};
@@ -126,7 +139,7 @@ exports.getPackages = async () => {
const loadPlugin = async (packages, pluginName, plugins, parts) => {
const pluginPath = path.resolve(packages[pluginName].path, 'ep.json');
try {
- const data = await fs.readFile(pluginPath);
+ const data = await fs.readFile(pluginPath, "utf8");
try {
const plugin = JSON.parse(data);
plugin.package = packages[pluginName];
@@ -145,7 +158,7 @@ const loadPlugin = async (packages, pluginName, plugins, parts) => {
};
const partsToParentChildList = (parts) => {
- const res = [];
+ const res:(string|number)[][] = [];
for (const name of Object.keys(parts)) {
for (const childName of parts[name].post || []) {
res.push([name, childName]);
@@ -161,6 +174,7 @@ const partsToParentChildList = (parts) => {
};
// Used only in Node, so no need for _
-const sortParts = (parts) => tsort(partsToParentChildList(parts))
- .filter((name) => parts[name] !== undefined)
- .map((name) => parts[name]);
+//FIXME Is this better
+const sortParts = (parts:PartType) => tsort(partsToParentChildList(parts))
+ .filter((name) => name !== undefined)
+ .map((name) => name);
diff --git a/src/static/js/pluginfw/shared.js b/src/static/js/pluginfw/shared.ts
similarity index 91%
rename from src/static/js/pluginfw/shared.js
rename to src/static/js/pluginfw/shared.ts
index 2c81ccd81..ec22b8cc6 100644
--- a/src/static/js/pluginfw/shared.js
+++ b/src/static/js/pluginfw/shared.ts
@@ -1,6 +1,6 @@
'use strict';
-const defs = require('./plugin_defs');
+import {parts} from './plugin_defs';
const disabledHookReasons = {
hooks: {
@@ -9,7 +9,7 @@ const disabledHookReasons = {
},
};
-const loadFn = (path, hookName) => {
+export const loadFn = (path, hookName) => {
let functionName;
const parts = path.split(':');
@@ -33,7 +33,7 @@ const loadFn = (path, hookName) => {
return fn;
};
-const extractHooks = (parts, hookSetName, normalizer) => {
+export const extractHooks = (parts, hookSetName, normalizer) => {
const hooks = {};
for (const part of parts) {
for (const [hookName, regHookFnName] of Object.entries(part[hookSetName] || {})) {
@@ -72,9 +72,7 @@ const extractHooks = (parts, hookSetName, normalizer) => {
}
}
return hooks;
-};
-
-exports.extractHooks = extractHooks;
+}
/*
* Returns an array containing the names of the installed client-side plugins
@@ -88,8 +86,8 @@ exports.extractHooks = extractHooks;
* No plugins: []
* Some plugins: [ 'ep_adminpads', 'ep_add_buttons', 'ep_activepads' ]
*/
-exports.clientPluginNames = () => {
- const clientPluginNames = defs.parts
+export const clientPluginNames = () => {
+ const clientPluginNames = parts
.filter((part) => Object.prototype.hasOwnProperty.call(part, 'client_hooks'))
.map((part) => `plugin-${part.plugin}`);
return [...new Set(clientPluginNames)];
diff --git a/src/static/js/pluginfw/tsort.js b/src/static/js/pluginfw/tsort.ts
similarity index 89%
rename from src/static/js/pluginfw/tsort.js
rename to src/static/js/pluginfw/tsort.ts
index 117f8555c..bebac95c0 100644
--- a/src/static/js/pluginfw/tsort.js
+++ b/src/static/js/pluginfw/tsort.ts
@@ -4,14 +4,14 @@
* general topological sort
* from https://gist.github.com/1232505
* @author SHIN Suzuki (shinout310@gmail.com)
- * @param Array edges : list of edges. each edge forms Array e.g. [12 , 3]
+ * @param edges Array edges : list of edges. each edge forms Array e.g. [12 , 3]
*
* @returns Array : topological sorted list of IDs
**/
-const tsort = (edges) => {
+export const tsort = (edges: (string|number)[][]) => {
const nodes = {}; // hash: stringified id of the node => { id: id, afters: lisf of ids }
- const sorted = []; // sorted list of IDs ( returned value )
+ const sorted: (string|number)[][]= []; // sorted list of IDs ( returned value )
const visited = {}; // hash: id of already visited node => true
const Node = function (id) {
@@ -62,7 +62,7 @@ const tsort = (edges) => {
**/
const tsortTest = () => {
// example 1: success
- let edges = [
+ let edges:(string|number)[][] = [
[1, 2],
[1, 3],
[2, 4],
diff --git a/src/static/module/InstallerModel.ts b/src/static/module/InstallerModel.ts
new file mode 100644
index 000000000..39e6bf51d
--- /dev/null
+++ b/src/static/module/InstallerModel.ts
@@ -0,0 +1,5 @@
+export type InstallerModel = {
+ name: string,
+ description: string,
+
+}
diff --git a/src/static/module/PluginInfo.ts b/src/static/module/PluginInfo.ts
new file mode 100644
index 000000000..8508e3c4b
--- /dev/null
+++ b/src/static/module/PluginInfo.ts
@@ -0,0 +1,4 @@
+export type PluginInfo = {
+ realPath: string,
+ path: string,
+}
diff --git a/src/tsconfig.json b/src/tsconfig.json
index b99c6c15a..fb9bc8c7a 100644
--- a/src/tsconfig.json
+++ b/src/tsconfig.json
@@ -1,5 +1,6 @@
{
"compilerOptions": {
+ "allowJs": true,
"typeRoots": ["node_modules/@types"],
"types": ["node", "jquery"],
"module": "commonjs",
@@ -7,7 +8,7 @@
"target": "es6",
"moduleResolution": "node",
"sourceMap": true,
- "outDir": "dist"
+ "outDir": "../dist"
},
"lib": ["es2015"]
}