test with webpack - not working

This commit is contained in:
Audric Ackermann 2022-04-01 09:58:24 +11:00
parent 2dfd09a7b1
commit 280cc494e8
87 changed files with 6680 additions and 839 deletions

47
OS.js Normal file
View File

@ -0,0 +1,47 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var OS_exports = {};
__export(OS_exports, {
isLinux: () => isLinux,
isMacOS: () => isMacOS,
isWindows: () => isWindows
});
module.exports = __toCommonJS(OS_exports);
var import_lodash = __toESM(require("lodash"));
var import_os = __toESM(require("os"));
var import_semver = __toESM(require("semver"));
const isMacOS = /* @__PURE__ */ __name(() => process.platform === "darwin", "isMacOS");
const isLinux = /* @__PURE__ */ __name(() => process.platform === "linux", "isLinux");
const isWindows = /* @__PURE__ */ __name((minVersion) => {
const osRelease = import_os.default.release();
if (process.platform !== "win32") {
return false;
}
return import_lodash.default.isUndefined(minVersion) ? true : import_semver.default.gte(osRelease, minVersion);
}, "isWindows");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
isLinux,
isMacOS,
isWindows
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidHMvT1MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG5leHBvcnQgY29uc3QgaXNNYWNPUyA9ICgpID0+IHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nO1xuZXhwb3J0IGNvbnN0IGlzTGludXggPSAoKSA9PiBwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnO1xuZXhwb3J0IGNvbnN0IGlzV2luZG93cyA9IChtaW5WZXJzaW9uPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG9zUmVsZWFzZSA9IG9zLnJlbGVhc2UoKTtcblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSAhPT0gJ3dpbjMyJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBfLmlzVW5kZWZpbmVkKG1pblZlcnNpb24pID8gdHJ1ZSA6IHNlbXZlci5ndGUob3NSZWxlYXNlLCBtaW5WZXJzaW9uKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQUFjO0FBQ2QsZ0JBQWU7QUFDZixvQkFBbUI7QUFFWixNQUFNLFVBQVUsNkJBQU0sUUFBUSxhQUFhLFVBQTNCO0FBQ2hCLE1BQU0sVUFBVSw2QkFBTSxRQUFRLGFBQWEsU0FBM0I7QUFDaEIsTUFBTSxZQUFZLHdCQUFDLGVBQXdCO0FBQ2hELFFBQU0sWUFBWSxrQkFBRyxRQUFRO0FBRTdCLE1BQUksUUFBUSxhQUFhLFNBQVM7QUFDaEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLHNCQUFFLFlBQVksVUFBVSxJQUFJLE9BQU8sc0JBQU8sSUFBSSxXQUFXLFVBQVU7QUFDNUUsR0FSeUI7IiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -29,9 +29,6 @@
<script type="text/javascript" src="js/components.js"></script>
<script type="text/javascript" src="js/libtextsecure.js"></script>
<script type="text/javascript" src="js/views/react_wrapper_view.js"></script>
<script type="text/javascript" src="js/views/whisper_view.js"></script>
</head>
<body>
@ -42,6 +39,6 @@
</div>
</div>
<script type="text/javascript" src="dist/js/electron-renderer.js"></script>
<script type="text/javascript" src="dist/electron_renderer.js"></script>
</body>
</html>

View File

@ -1,12 +0,0 @@
/* global $: false */
/* global Whisper: false */
$(document).on('keyup', e => {
'use strict';
if (e.keyCode === 27) {
window.closeDebugLog();
}
});
window.ReactDOM.render(<window.Views.DebugLogView />, document.getElementById('app'));

View File

@ -1,7 +0,0 @@
/* global $, Whisper */
const $body = $(document.body);
// eslint-disable-next-line strict
window.view = new Whisper.PasswordView();
$body.html('');
window.view.$el.prependTo($body);

View File

@ -1,25 +0,0 @@
/* global Whisper */
// eslint-disable-next-line func-names
(function() {
'use strict';
window.Whisper = window.Whisper || {};
Whisper.PasswordView = Whisper.View.extend({
initialize() {
this.render();
},
render() {
this.passwordView = new window.Whisper.ReactWrapperView({
className: 'password overlay',
Component: window.Signal.Components.SessionPasswordPrompt,
props: {},
});
this.$el.append(this.passwordView.el);
return this;
},
});
})();

View File

@ -1,71 +0,0 @@
/* global Backbone: false */
/* global i18n: false */
/* global React: false */
/* global ReactDOM: false */
// eslint-disable-next-line func-names
(function() {
'use strict';
window.Whisper = window.Whisper || {};
window.Whisper.ReactWrapperView = Backbone.View.extend({
className: 'react-wrapper',
initialize(options) {
const {
Component,
JSX,
props,
onClose,
tagName,
className,
onInitialRender,
elCallback,
} = options;
this.render();
if (elCallback) {
elCallback(this.el);
}
this.tagName = tagName;
this.className = className;
this.JSX = JSX;
this.Component = Component;
this.onClose = onClose;
this.onInitialRender = onInitialRender;
this.update(props);
this.hasRendered = false;
},
update(props) {
const updatedProps = this.augmentProps(props);
const reactElement = this.JSX ? this.JSX : React.createElement(this.Component, updatedProps);
ReactDOM.render(reactElement, this.el, () => {
if (this.hasRendered) {
return;
}
this.hasRendered = true;
if (this.onInitialRender) {
this.onInitialRender();
}
});
},
augmentProps(props) {
return Object.assign({}, props, {
close: () => {
this.remove();
},
i18n,
});
},
remove() {
if (this.onClose) {
this.onClose();
}
ReactDOM.unmountComponentAtNode(this.el);
Backbone.View.prototype.remove.call(this);
},
});
})();

View File

@ -1,6 +0,0 @@
"use strict";
(function () {
'use strict';
window.Whisper = window.Whisper || {};
})();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpc3Blcl92aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2hpc3Blcl92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUF1QkEsQ0FBQztJQUNDLFlBQVksQ0FBQztJQUViLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7QUF5Q3hDLENBQUMsQ0FBQyxFQUFFLENBQUMifQ==

View File

@ -1,68 +0,0 @@
/* global Whisper, Backbone, Mustache, _, $ */
/*
* Whisper.View
*
* This is the base for most of our views. The Backbone view is extended
* with some conveniences:
*
* 1. Pre-parses all our mustache templates for performance.
* https://github.com/janl/mustache.js#pre-parsing-and-caching-templates
*
* 2. Defines a default definition for render() which allows sub-classes
* to simply specify a templateName and renderAttributes which are plugged
* into Mustache.render
*
* 3. Makes all the templates available for rendering as partials.
* https://github.com/janl/mustache.js#partials
*
* 4. Provides some common functionality, e.g. confirmation dialog
*
*/
// eslint-disable-next-line func-names
(function() {
'use strict';
window.Whisper = window.Whisper || {};
// window.Whisper.View = Backbone.View.extend(
// {
// constructor(...params: any) {
// Backbone.View.call(this, ...params);
// Mustache.parse(_.result(this, 'template'));
// },
// render_attributes() {
// return _.result(this.model, 'attributes', {});
// },
// render_partials() {
// return window.Whisper.View.Templates;
// },
// template() {
// if (this.templateName) {
// return window.Whisper.View.Templates[this.templateName];
// }
// return '';
// },
// render() {
// const attrs = _.result(this, 'render_attributes', {});
// const template = _.result(this, 'template', '');
// const partials = _.result(this, 'render_partials', '');
// this.$el.html(Mustache.render(template, attrs, partials));
// return this;
// },
// },
// {
// // Class attributes
// Templates: (() => {
// const templates = {};
// $('script[type="text/x-tmpl-mustache"]').each((i, el) => {
// const $el = $(el);
// const id = $el.attr('id');
// templates[id] = $el.html();
// });
// return templates;
// })(),
// }
// );
})();

1
libtextsecure/index.d.ts vendored Normal file
View File

@ -0,0 +1 @@

View File

@ -15,7 +15,7 @@
"main": "dist/electron_main.js",
"scripts": {
"postinstall": "yarn patch-package && yarn electron-builder install-app-deps",
"start-prod": "cross-env NODE_ENV=production NODE_APP_INSTANCE=devprod$MULTI electron .",
"start-prod": "cross-env NODE_ENV=dev NODE_APP_INSTANCE=devprod$MULTI electron .",
"grunt": "yarn clean-transpile && grunt",
"generate": "yarn grunt --force",
"build-release": "run-script-os",
@ -113,6 +113,10 @@
"styled-components": "5.1.1",
"uuid": "3.3.2"
},
"peerDependencies": {
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"devDependencies": {
"@playwright/test": "^1.16.3",
"@types/backbone": "^1.4.2",
@ -138,6 +142,7 @@
"@types/linkify-it": "2.0.3",
"@types/lodash": "4.14.106",
"@types/mocha": "5.0.0",
"@types/mustache": "^4.1.2",
"@types/node-fetch": "^2.5.7",
"@types/pify": "3.0.2",
"@types/rc-slider": "^8.6.5",
@ -162,6 +167,7 @@
"electron": "^17.1.2",
"electron-builder": "22.8.0",
"electron-notarize": "^0.2.0",
"esbuild": "^0.14.29",
"eslint": "4.14.0",
"eslint-config-airbnb-base": "12.1.0",
"eslint-config-prettier": "2.9.0",
@ -287,7 +293,7 @@
"stylesheets/*.css",
"!js/register.js",
"js/views/standalone_registration_view.js",
"preload.js",
"dist/preload.bundled.js",
"about_preload.js",
"settings_preload.js",
"debug_log_preload.js",

View File

@ -1,7 +1,8 @@
<html>
<head>
<meta http-equiv="Content-Security-Policy"
content="default-src 'none';
<head>
<meta
http-equiv="Content-Security-Policy"
content="default-src 'none';
child-src 'self';
connect-src 'self' https: wss:;
font-src 'self';
@ -12,24 +13,19 @@
object-src 'none';
script-src 'self';
style-src 'self' 'unsafe-inline';"
>
<link href="stylesheets/manifest.css" rel="stylesheet" type="text/css" />
<style>
</style>
/>
<link href="stylesheets/manifest.css" rel="stylesheet" type="text/css" />
<style></style>
<script type='text/javascript' src='js/components.js'></script>
<script type='text/javascript' src='js/views/whisper_view.js'></script>
<script type='text/javascript' src='js/views/react_wrapper_view.js'></script>
<script type='text/javascript' src='js/views/password_view.js'></script>
</head>
<body>
<div class='app-loading-screen'>
<div class="content session-full-logo">
<script type="text/javascript" src="js/components.js"></script>
</head>
<body>
<div class="app-loading-screen">
<div class="content session-full-logo">
<img src="images/session/brand.svg" class="session-brand-logo" />
<img src="images/session/session-text.svg" class="session-text-logo" />
</div>
</div>
</div>
<script type='text/javascript' src='js/password_start.js'></script>
</body>
<script type="text/javascript" src="js/password_start.js"></script>
</body>
</html>

View File

@ -1,244 +1,197 @@
/* eslint-disable global-require */
/* global window: false */
const path = require('path');
const { webFrame, remote, clipboard, ipcRenderer } = require('electron');
const { app } = remote;
const url = require('url');
const config = url.parse(window.location.toString(), true).query;
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const electron_1 = require("electron");
const storage_1 = require("./ts/util/storage");
const url_1 = __importDefault(require("url"));
const path_1 = __importDefault(require("path"));
const config = url_1.default.parse(window.location.toString(), true).query;
const configAny = config;
let title = config.name;
if (config.environment !== 'production') {
title += ` - ${config.environment}`;
title += ` - ${config.environment}`;
}
if (config.appInstance) {
title += ` - ${config.appInstance}`;
title += ` - ${config.appInstance}`;
}
global.dcodeIO = global.dcodeIO || {};
global.dcodeIO.ByteBuffer = require('bytebuffer');
window.platform = process.platform;
window.getTitle = () => title;
window.getEnvironment = () => config.environment;
window.getAppInstance = () => config.appInstance;
window.getVersion = () => config.version;
window.getEnvironment = () => configAny.environment;
window.getAppInstance = () => configAny.appInstance;
window.getVersion = () => configAny.version;
window.isDev = () => config.environment === 'development';
window.getCommitHash = () => config.commitHash;
window.getNodeVersion = () => config.node_version;
window.getCommitHash = () => configAny.commitHash;
window.getNodeVersion = () => configAny.node_version;
window.sessionFeatureFlags = {
useOnionRequests: true,
useCallMessage: true,
useOnionRequests: true,
useCallMessage: true,
};
window.versionInfo = {
environment: window.getEnvironment(),
version: window.getVersion(),
commitHash: window.getCommitHash(),
appInstance: window.getAppInstance(),
environment: window.getEnvironment(),
version: window.getVersion(),
commitHash: window.getCommitHash(),
appInstance: window.getAppInstance(),
};
const ipc = ipcRenderer;
const ipc = electron_1.ipcRenderer;
const localeMessages = ipc.sendSync('locale-data');
window.updateZoomFactor = () => {
const zoomFactor = window.getSettingValue('zoom-factor-setting') || 100;
window.setZoomFactor(zoomFactor / 100);
const zoomFactor = window.getSettingValue('zoom-factor-setting') || 100;
window.setZoomFactor(zoomFactor / 100);
};
window.setZoomFactor = number => {
webFrame.setZoomFactor(number);
electron_1.webFrame.setZoomFactor(number);
};
// Set the password for the database
window.setPassword = (passPhrase, oldPhrase) =>
new Promise((resolve, reject) => {
ipc.once('set-password-response', (event, error) => {
if (error) {
return reject(error);
}
return resolve();
window.setPassword = async (passPhrase, oldPhrase) => new Promise((resolve, reject) => {
ipc.once('set-password-response', (_event, error) => {
if (error) {
reject(error);
return;
}
resolve(undefined);
return;
});
ipc.send('set-password', passPhrase, oldPhrase);
});
window.setStartInTray = startInTray =>
new Promise((resolve, reject) => {
});
window.setStartInTray = async (startInTray) => new Promise((resolve, reject) => {
ipc.once('start-in-tray-on-start-response', (_event, error) => {
if (error) {
return reject(error);
}
return resolve();
if (error) {
reject(error);
return;
}
resolve();
return;
});
ipc.send('start-in-tray-on-start', startInTray);
});
window.getStartInTray = () =>
new Promise(resolve => {
ipc.once('get-start-in-tray-response', (event, value) => resolve(value));
ipc.send('get-start-in-tray');
});
window.libsession = require('./ts/session');
});
window.getStartInTray = async () => {
return new Promise(resolve => {
ipc.once('get-start-in-tray-response', (_event, value) => {
resolve(value);
});
ipc.send('get-start-in-tray');
});
};
window._ = require('lodash');
window.getConversationController = window.libsession.Conversations.getConversationController;
// We never do these in our code, so we'll prevent it everywhere
window.open = () => null;
// eslint-disable-next-line no-eval, no-multi-assign
window.eval = global.eval = () => null;
window.drawAttention = () => {
// window.log.debug('draw attention');
ipc.send('draw-attention');
ipc.send('draw-attention');
};
window.showWindow = () => {
window.log.info('show window');
ipc.send('show-window');
window.log.info('show window');
ipc.send('show-window');
};
window.setAutoHideMenuBar = autoHide => {
ipc.send('set-auto-hide-menu-bar', autoHide);
};
window.setMenuBarVisibility = visibility => {
ipc.send('set-menu-bar-visibility', visibility);
};
window.setAutoHideMenuBar = autoHide => ipc.send('set-auto-hide-menu-bar', autoHide);
window.setMenuBarVisibility = visibility => ipc.send('set-menu-bar-visibility', visibility);
window.restart = () => {
window.log.info('restart');
ipc.send('restart');
window.log.info('restart');
ipc.send('restart');
};
window.closeAbout = () => {
ipc.send('close-about');
};
window.readyForUpdates = () => {
ipc.send('ready-for-updates');
};
window.closeAbout = () => ipc.send('close-about');
window.readyForUpdates = () => ipc.send('ready-for-updates');
ipc.on('get-theme-setting', () => {
const theme = window.Events.getThemeSetting();
ipc.send('get-success-theme-setting', theme);
const theme = window.Events.getThemeSetting();
ipc.send('get-success-theme-setting', theme);
});
window.getSettingValue = (settingID, comparisonValue = null) => {
// Comparison value allows you to pull boolean values from any type.
// Eg. window.getSettingValue('theme', 'light')
// returns 'false' when the value is 'dark'.
// We need to get specific settings from the main process
if (settingID === 'media-permissions') {
return window.getMediaPermissions();
} else if (settingID === 'call-media-permissions') {
return window.getCallMediaPermissions();
} else if (settingID === 'auto-update') {
return window.getAutoUpdateEnabled();
}
const settingVal = window.storage.get(settingID);
return comparisonValue ? !!settingVal === comparisonValue : settingVal;
if (settingID === 'media-permissions') {
return window.getMediaPermissions();
}
else if (settingID === 'call-media-permissions') {
return window.getCallMediaPermissions();
}
else if (settingID === 'auto-update') {
return window.getAutoUpdateEnabled();
}
const settingVal = storage_1.Storage.get(settingID);
return comparisonValue ? !!settingVal === comparisonValue : settingVal;
};
window.setSettingValue = (settingID, value) => {
// For auto updating we need to pass the value to the main process
if (settingID === 'auto-update') {
window.setAutoUpdateEnabled(value);
return;
}
window.storage.put(settingID, value);
window.setSettingValue = async (settingID, value) => {
if (settingID === 'auto-update') {
window.setAutoUpdateEnabled(value);
return;
}
await storage_1.Storage.put(settingID, value);
};
window.getMediaPermissions = () => ipc.sendSync('get-media-permissions');
window.setMediaPermissions = value => ipc.send('set-media-permissions', !!value);
window.setMediaPermissions = value => {
ipc.send('set-media-permissions', !!value);
};
window.getCallMediaPermissions = () => ipc.sendSync('get-call-media-permissions');
window.setCallMediaPermissions = value => ipc.send('set-call-media-permissions', !!value);
window.askForMediaAccess = () => ipc.send('media-access');
// Auto update setting
window.setCallMediaPermissions = value => {
ipc.send('set-call-media-permissions', !!value);
};
window.askForMediaAccess = () => {
ipc.send('media-access');
};
window.getAutoUpdateEnabled = () => ipc.sendSync('get-auto-update-setting');
window.setAutoUpdateEnabled = value => ipc.send('set-auto-update-setting', !!value);
window.setAutoUpdateEnabled = value => {
ipc.send('set-auto-update-setting', !!value);
};
ipc.on('get-ready-for-shutdown', async () => {
const { shutdown } = window.Events || {};
if (!shutdown) {
window.log.error('preload shutdown handler: shutdown method not found');
ipc.send('now-ready-for-shutdown');
return;
}
try {
await shutdown();
ipc.send('now-ready-for-shutdown');
} catch (error) {
ipc.send('now-ready-for-shutdown', error && error.stack ? error.stack : error);
}
const { shutdown } = window.Events || {};
if (!shutdown) {
window.log.error('preload shutdown handler: shutdown method not found');
ipc.send('now-ready-for-shutdown');
return;
}
try {
await shutdown();
ipc.send('now-ready-for-shutdown');
}
catch (error) {
ipc.send('now-ready-for-shutdown', error && error.stack ? error.stack : error);
}
});
// We pull these dependencies in now, from here, because they have Node.js dependencies
require('./ts/util/logging');
require("./ts/util/logging");
if (config.proxyUrl) {
window.log.info('Using provided proxy url');
window.log.info('Using provided proxy url');
}
window.nodeSetImmediate = setImmediate;
const Signal = require('./ts/node/signal');
const i18n = require('./ts/util/i18n');
window.Signal = Signal.setupSignal();
window.getSwarmPollingInstance = require('./ts/session/apis/snode_api').getSwarmPollingInstance;
const WorkerInterface = require('./ts/node/util_worker_interface');
// A Worker with a 3 minute timeout
const utilWorkerPath = path.join(app.getAppPath(), 'js', 'util_worker.js');
const utilWorker = new WorkerInterface(utilWorkerPath, 3 * 60 * 1000);
const signal_1 = require("./ts/node/signal");
const i18n_1 = require("./ts/util/i18n");
window.Signal = (0, signal_1.setupSignal)();
const util_worker_interface_1 = require("./ts/node/util_worker_interface");
console.warn('++++++++++++++++++++++++ app', electron_1.app);
const utilWorkerPath = path_1.default.join(electron_1.app.getAppPath(), 'js', 'util_worker.js');
const utilWorker = new util_worker_interface_1.WorkerInterface(utilWorkerPath, 3 * 60 * 1000);
window.callWorker = (fnName, ...args) => utilWorker.callWorker(fnName, ...args);
// Linux seems to periodically let the event loop stop, so this is a global workaround
setInterval(() => {
window.nodeSetImmediate(() => {});
window.nodeSetImmediate(() => { });
}, 1000);
window.loadImage = require('blueimp-load-image');
window.filesize = require('filesize');
window.React = require('react');
window.ReactDOM = require('react-dom');
window.clipboard = clipboard;
window.clipboard = electron_1.clipboard;
window.getSeedNodeList = () => [
{
url: 'https://storage.seed1.loki.network:4433/',
},
{
url: 'https://storage.seed3.loki.network:4433/',
},
{
url: 'https://public.loki.foundation:4433/',
},
{
url: 'https://storage.seed1.loki.network:4433/',
},
{
url: 'https://storage.seed3.loki.network:4433/',
},
{
url: 'https://public.loki.foundation:4433/',
},
];
const { locale: localFromEnv } = config;
window.i18n = i18n.setupi18n(localFromEnv, localeMessages);
window.moment = require('moment');
window.libsession = require('./ts/session');
window.i18n = (0, i18n_1.setupi18n)(localFromEnv, localeMessages);
window.addEventListener('contextmenu', e => {
const editable = e.target.closest('textarea, input, [contenteditable="true"]');
const link = e.target.closest('a');
const selection = Boolean(window.getSelection().toString());
if (!editable && !selection && !link) {
e.preventDefault();
}
const editable = e?.target.closest('textarea, input, [contenteditable="true"]');
const link = e?.target.closest('a');
const selection = Boolean(window?.getSelection()?.toString());
if (!editable && !selection && !link) {
e.preventDefault();
}
});
window.NewReceiver = require('./ts/receiver/receiver');
// Blocking
const { BlockedNumberController } = require('./ts/util/blockedNumberController');
window.BlockedNumberController = BlockedNumberController;

253
preload.ts Normal file
View File

@ -0,0 +1,253 @@
import { app, clipboard, ipcRenderer, webFrame } from 'electron';
import { Storage } from './ts/util/storage';
import url from 'url';
import path from 'path';
const config = url.parse(window.location.toString(), true).query;
const configAny = config as any;
let title = config.name;
if (config.environment !== 'production') {
title += ` - ${config.environment}`;
}
if (config.appInstance) {
title += ` - ${config.appInstance}`;
}
// tslint:disable: no-require-imports no-var-requires
global.dcodeIO = global.dcodeIO || {};
global.dcodeIO.ByteBuffer = require('bytebuffer');
window.platform = process.platform;
window.getTitle = () => title as string;
window.getEnvironment = () => configAny.environment;
window.getAppInstance = () => configAny.appInstance;
window.getVersion = () => configAny.version;
window.isDev = () => config.environment === 'development';
window.getCommitHash = () => configAny.commitHash;
window.getNodeVersion = () => configAny.node_version;
window.sessionFeatureFlags = {
useOnionRequests: true,
useCallMessage: true,
};
window.versionInfo = {
environment: window.getEnvironment(),
version: window.getVersion(),
commitHash: window.getCommitHash(),
appInstance: window.getAppInstance(),
};
const ipc = ipcRenderer;
const localeMessages = ipc.sendSync('locale-data');
window.updateZoomFactor = () => {
const zoomFactor = window.getSettingValue('zoom-factor-setting') || 100;
window.setZoomFactor(zoomFactor / 100);
};
window.setZoomFactor = number => {
webFrame.setZoomFactor(number);
};
// Set the password for the database
window.setPassword = async (passPhrase: string, oldPhrase: string) =>
new Promise((resolve, reject) => {
ipc.once('set-password-response', (_event, error) => {
if (error) {
reject(error);
return;
}
resolve(undefined);
return;
});
ipc.send('set-password', passPhrase, oldPhrase);
});
window.setStartInTray = async startInTray =>
new Promise((resolve, reject) => {
ipc.once('start-in-tray-on-start-response', (_event, error) => {
if (error) {
reject(error);
return;
}
resolve();
return;
});
ipc.send('start-in-tray-on-start', startInTray);
});
window.getStartInTray = async () => {
return new Promise(resolve => {
ipc.once('get-start-in-tray-response', (_event, value) => {
resolve(value);
});
ipc.send('get-start-in-tray');
});
};
window._ = require('lodash');
// We never do these in our code, so we'll prevent it everywhere
window.open = () => null;
// eslint-disable-next-line no-eval, no-multi-assign
window.eval = global.eval = () => null;
window.drawAttention = () => {
// window.log.debug('draw attention');
ipc.send('draw-attention');
};
window.showWindow = () => {
window.log.info('show window');
ipc.send('show-window');
};
window.setAutoHideMenuBar = autoHide => {
ipc.send('set-auto-hide-menu-bar', autoHide);
};
window.setMenuBarVisibility = visibility => {
ipc.send('set-menu-bar-visibility', visibility);
};
window.restart = () => {
window.log.info('restart');
ipc.send('restart');
};
window.closeAbout = () => {
ipc.send('close-about');
};
window.readyForUpdates = () => {
ipc.send('ready-for-updates');
};
ipc.on('get-theme-setting', () => {
const theme = window.Events.getThemeSetting();
ipc.send('get-success-theme-setting', theme);
});
window.getSettingValue = (settingID, comparisonValue = null) => {
// Comparison value allows you to pull boolean values from any type.
// Eg. window.getSettingValue('theme', 'light')
// returns 'false' when the value is 'dark'.
// We need to get specific settings from the main process
if (settingID === 'media-permissions') {
return window.getMediaPermissions();
} else if (settingID === 'call-media-permissions') {
return window.getCallMediaPermissions();
} else if (settingID === 'auto-update') {
return window.getAutoUpdateEnabled();
}
const settingVal = Storage.get(settingID);
return comparisonValue ? !!settingVal === comparisonValue : settingVal;
};
window.setSettingValue = async (settingID, value) => {
// For auto updating we need to pass the value to the main process
if (settingID === 'auto-update') {
window.setAutoUpdateEnabled(value);
return;
}
await Storage.put(settingID, value);
};
window.getMediaPermissions = () => ipc.sendSync('get-media-permissions');
window.setMediaPermissions = value => {
ipc.send('set-media-permissions', !!value);
};
window.getCallMediaPermissions = () => ipc.sendSync('get-call-media-permissions');
window.setCallMediaPermissions = value => {
ipc.send('set-call-media-permissions', !!value);
};
window.askForMediaAccess = () => {
ipc.send('media-access');
};
// Auto update setting
window.getAutoUpdateEnabled = () => ipc.sendSync('get-auto-update-setting');
window.setAutoUpdateEnabled = value => {
ipc.send('set-auto-update-setting', !!value);
};
ipc.on('get-ready-for-shutdown', async () => {
const { shutdown } = window.Events || {};
if (!shutdown) {
window.log.error('preload shutdown handler: shutdown method not found');
ipc.send('now-ready-for-shutdown');
return;
}
try {
await shutdown();
ipc.send('now-ready-for-shutdown');
} catch (error) {
ipc.send('now-ready-for-shutdown', error && error.stack ? error.stack : error);
}
});
// We pull these dependencies in now, from here, because they have Node.js dependencies
// tslint:disable-next-line: no-import-side-effect
import './ts/util/logging'; // ok
if (config.proxyUrl) {
window.log.info('Using provided proxy url');
}
window.nodeSetImmediate = setImmediate;
import * as data from './ts/data/dataInit';
import { setupi18n } from './ts/util/i18n';
console.warn('================ initData', data);
window.Signal = initData();
import { WorkerInterface } from './ts/node/util_worker_interface';
// A Worker with a 3 minute timeout
const utilWorkerPath = path.join(app.getAppPath(), 'js', 'util_worker.js');
const utilWorker = new WorkerInterface(utilWorkerPath, 3 * 60 * 1000);
window.callWorker = (fnName, ...args) => utilWorker.callWorker(fnName, ...args);
// Linux seems to periodically let the event loop stop, so this is a global workaround
setInterval(() => {
// tslint:disable-next-line: no-empty
window.nodeSetImmediate(() => {});
}, 1000);
window.React = require('react');
window.ReactDOM = require('react-dom');
window.clipboard = clipboard;
window.getSeedNodeList = () => [
{
url: 'https://storage.seed1.loki.network:4433/',
},
{
url: 'https://storage.seed3.loki.network:4433/',
},
{
url: 'https://public.loki.foundation:4433/',
},
];
const { locale: localFromEnv } = config;
window.i18n = setupi18n(localFromEnv as string, localeMessages);
window.addEventListener('contextmenu', e => {
const editable = (e?.target as any).closest('textarea, input, [contenteditable="true"]');
const link = (e?.target as any).closest('a');
const selection = Boolean(window?.getSelection()?.toString());
if (!editable && !selection && !link) {
e.preventDefault();
}
});
// Blocking

167
scripts/esbuild.js Normal file
View File

@ -0,0 +1,167 @@
// eslint-disable-next-line import/no-extraneous-dependencies
const esbuild = require('esbuild');
const path = require('path');
const glob = require('glob');
const ROOT_DIR = path.join(__dirname, '..');
const DIST_DIR = path.join(ROOT_DIR, 'dist');
const watch = process.argv.some(argv => argv === '-w' || argv === '--watch');
const isProd = process.argv.some(argv => argv === '-prod' || argv === '--prod');
const nodeDefaults = {
platform: 'node',
target: 'node16',
sourcemap: isProd ? false : 'inline',
// Otherwise React components get renamed
// See: https://github.com/evanw/esbuild/issues/1147
keepNames: true,
logLevel: 'info',
watch,
};
const defaultBundle = {
...nodeDefaults,
// define: {
// 'process.env.NODE_ENV': isProd ? '"production"' : '"development"',
// },
bundle: true,
external: [
// Native libraries
// 'better-sqlite3',
'electron',
// 'sass',
// 'bytebuffer',
// 'lodash',
// 'react',
// 'react-dom',
// Things that don't bundle well
// 'backbone',
'got',
// 'jquery',
'node-fetch',
// 'proxy-agent',
'ip2country',
// 'react-redux',
// 'react-qr-svg',
// 'reselect',
// 'redux',
// '@reduxjs/toolkit',
'styled-components',
// 'react-contexify',
'filesize',
'redux-persist',
'redux-promise-middleware',
'emoji-mart',
'mic-recorder-to-mp3',
// 'react-intersection-observer',
// 'react-h5-audio-player',
'semver',
'os',
// 'react-toastify',
'libsodium-wrappers-sumo',
'fs-extra',
'blueimp-load-image',
'blob-util',
// 'redux-logger',
'rimraf',
'better-sqlite3',
'glob',
'rc-slider',
// 'react-virtualized',
'rc-slider',
// 'react-draggable',
// 'react-mentions',
// Large libraries
// See: https://esbuild.github.io/api/#analyze
'moment',
],
};
// App, tests, and scripts
esbuild.build({
...nodeDefaults,
format: 'cjs',
mainFields: ['browser', 'main'],
entryPoints: glob
.sync('{app,ts}/**/*.{ts,tsx}', {
nodir: true,
root: ROOT_DIR,
})
.filter(file => !file.endsWith('.d.ts')),
outdir: path.join(DIST_DIR),
});
// App, tests, and scripts
// build main renderer
esbuild.build({
...defaultBundle,
format: 'cjs',
platform: 'node',
mainFields: ['browser', 'main', 'module'],
inject: [path.join(ROOT_DIR, 'node_modules', 'jquery', 'dist', 'jquery.min.js')],
entryPoints: ['./ts/mains/main_renderer.ts'],
outfile: path.join(DIST_DIR, 'electron_renderer.js'),
});
// build main_node
esbuild.build({
...defaultBundle,
format: 'cjs',
mainFields: ['main'],
entryPoints: ['./ts/mains/main_node.ts'],
outfile: path.join(DIST_DIR, 'electron_main.js'),
});
// Preload bundle
// eslint-disable-next-line more/no-then
esbuild.buildSync({
...defaultBundle,
format: 'cjs',
entryPoints: ['preload.ts'],
outdir: path.join(DIST_DIR),
});
esbuild.buildSync({
...defaultBundle,
entryPoints: [path.join(ROOT_DIR, 'dist', 'preload.js')],
inject: [path.join(ROOT_DIR, 'libtextsecure', 'libsignal-protocol.js')],
outfile: path.join(DIST_DIR, 'preload.bundled.js'),
});
// HEIC worker
// esbuild.build({
// ...bundleDefaults,
// entryPoints: [path.join(ROOT_DIR, 'ts', 'workers', 'heicConverterWorker.ts')],
// outfile: path.join(DIST_DIR, 'ts', 'workers', 'heicConverter.bundle.js'),
// });
// // SQL worker
// const libDir = path.join('..', '..', 'node_modules', 'better-sqlite3');
// const bindingFile = path.join(libDir, 'build', 'Release', 'better_sqlite3.node');
// esbuild.build({
// ...nodeDefaults,
// bundle: true,
// plugins: [
// {
// name: 'bindings',
// setup(build) {
// build.onResolve({ filter: /^bindings$/ }, () => ({
// path: path.join(ROOT_DIR, 'ts', 'sql', 'mainWorkerBindings.ts'),
// }));
// build.onResolve({ filter: /^better_sqlite3\.node$/ }, () => ({
// path: bindingFile,
// external: true,
// }));
// },
// },
// ],
// entryPoints: [path.join(ROOT_DIR, 'ts', 'sql', 'mainWorker.ts')],
// outfile: path.join(DIST_DIR, 'ts', 'sql', 'mainWorker.bundle.js'),
// });

View File

@ -0,0 +1,17 @@
var import_test = require("@playwright/test");
var import_new_user = require("./new_user");
var import_open = require("./open");
let window;
(0, import_test.test)("Check Password", async () => {
window = await (0, import_open.openApp)("1");
await (0, import_new_user.newUser)(window, "userA");
await window.click("[data-testid=settings-section]");
await window.click('"Privacy"');
await window.click('"Set Password"');
await window.type("#password-modal-input", "123456");
await window.type("#password-modal-input-confirm", "123456");
await window.keyboard.press("Enter");
await window.fill("#password-lock-input", "123456");
await window.click('"OK"');
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL2NoZWNrX3Bhc3N3b3JkLnNwZWMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IF9lbGVjdHJvbiwgUGFnZSwgdGVzdCB9IGZyb20gJ0BwbGF5d3JpZ2h0L3Rlc3QnO1xuaW1wb3J0IHsgbmV3VXNlciB9IGZyb20gJy4vbmV3X3VzZXInO1xuaW1wb3J0IHsgb3BlbkFwcCB9IGZyb20gJy4vb3Blbic7XG4vLyBPcGVuIGFwcFxubGV0IHdpbmRvdzogUGFnZSB8IHVuZGVmaW5lZDtcbnRlc3QoJ0NoZWNrIFBhc3N3b3JkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBvcGVuIEVsZWN0cm9uXG4gIHdpbmRvdyA9IGF3YWl0IG9wZW5BcHAoJzEnKTtcbiAgLy8gQ3JlYXRlIHVzZXJcbiAgYXdhaXQgbmV3VXNlcih3aW5kb3csICd1c2VyQScpO1xuICAvLyBDbGljayBvbiBzZXR0aW5ncyB0YWJcbiAgYXdhaXQgd2luZG93LmNsaWNrKCdbZGF0YS10ZXN0aWQ9c2V0dGluZ3Mtc2VjdGlvbl0nKTtcbiAgLy8gQ2xpY2sgb24gcHJpdmFjeVxuICBhd2FpdCB3aW5kb3cuY2xpY2soJ1wiUHJpdmFjeVwiJyk7XG4gIC8vIENsaWNrIHNldCBwYXNzd29yZFxuICBhd2FpdCB3aW5kb3cuY2xpY2soJ1wiU2V0IFBhc3N3b3JkXCInKTtcbiAgLy8gRW50ZXIgcGFzc3dvcmRcbiAgYXdhaXQgd2luZG93LnR5cGUoJyNwYXNzd29yZC1tb2RhbC1pbnB1dCcsICcxMjM0NTYnKTtcbiAgLy8gQ29uZmlybSBwYXNzd29yZFxuICBhd2FpdCB3aW5kb3cudHlwZSgnI3Bhc3N3b3JkLW1vZGFsLWlucHV0LWNvbmZpcm0nLCAnMTIzNDU2Jyk7XG4gIC8vIENsaWNrIE9LXG4gIGF3YWl0IHdpbmRvdy5rZXlib2FyZC5wcmVzcygnRW50ZXInKTtcbiAgLy8gVHlwZSBwYXNzd29yZCBpbnRvIGlucHV0IGZpZWxkXG4gIGF3YWl0IHdpbmRvdy5maWxsKCcjcGFzc3dvcmQtbG9jay1pbnB1dCcsICcxMjM0NTYnKTtcbiAgLy8gQ2xpY2sgT0tcbiAgYXdhaXQgd2luZG93LmNsaWNrKCdcIk9LXCInKTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsa0JBQXNDO0FBQ3RDLHNCQUF3QjtBQUN4QixrQkFBd0I7QUFFeEIsSUFBSTtBQUNKLHNCQUFLLGtCQUFrQixZQUFZO0FBRWpDLFdBQVMsTUFBTSx5QkFBUSxHQUFHO0FBRTFCLFFBQU0sNkJBQVEsUUFBUSxPQUFPO0FBRTdCLFFBQU0sT0FBTyxNQUFNLGdDQUFnQztBQUVuRCxRQUFNLE9BQU8sTUFBTSxXQUFXO0FBRTlCLFFBQU0sT0FBTyxNQUFNLGdCQUFnQjtBQUVuQyxRQUFNLE9BQU8sS0FBSyx5QkFBeUIsUUFBUTtBQUVuRCxRQUFNLE9BQU8sS0FBSyxpQ0FBaUMsUUFBUTtBQUUzRCxRQUFNLE9BQU8sU0FBUyxNQUFNLE9BQU87QUFFbkMsUUFBTSxPQUFPLEtBQUssd0JBQXdCLFFBQVE7QUFFbEQsUUFBTSxPQUFPLE1BQU0sTUFBTTtBQUMzQixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=

View File

@ -0,0 +1,35 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var clean_up_exports = {};
__export(clean_up_exports, {
cleanUp: () => cleanUp
});
module.exports = __toCommonJS(clean_up_exports);
const cleanUp = /* @__PURE__ */ __name(async (window) => {
await window.click("[data-testid=settings-section]");
await window.click("text=Clear All Data");
await window.click("text=Entire Account");
await window.click("text=I am sure");
await window.waitForTimeout(1e4);
}, "cleanUp");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
cleanUp
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL2NsZWFuX3VwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBfZWxlY3Ryb24sIFBhZ2UgfSBmcm9tICdAcGxheXdyaWdodC90ZXN0JztcblxuZXhwb3J0IGNvbnN0IGNsZWFuVXAgPSBhc3luYyAod2luZG93OiBQYWdlKSA9PiB7XG4gIGF3YWl0IHdpbmRvdy5jbGljaygnW2RhdGEtdGVzdGlkPXNldHRpbmdzLXNlY3Rpb25dJyk7XG4gIGF3YWl0IHdpbmRvdy5jbGljaygndGV4dD1DbGVhciBBbGwgRGF0YScpO1xuICBhd2FpdCB3aW5kb3cuY2xpY2soJ3RleHQ9RW50aXJlIEFjY291bnQnKTtcbiAgYXdhaXQgd2luZG93LmNsaWNrKCd0ZXh0PUkgYW0gc3VyZScpO1xuICBhd2FpdCB3aW5kb3cud2FpdEZvclRpbWVvdXQoMTAwMDApO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFTyxNQUFNLFVBQVUsOEJBQU8sV0FBaUI7QUFDN0MsUUFBTSxPQUFPLE1BQU0sZ0NBQWdDO0FBQ25ELFFBQU0sT0FBTyxNQUFNLHFCQUFxQjtBQUN4QyxRQUFNLE9BQU8sTUFBTSxxQkFBcUI7QUFDeEMsUUFBTSxPQUFPLE1BQU0sZ0JBQWdCO0FBQ25DLFFBQU0sT0FBTyxlQUFlLEdBQUs7QUFDbkMsR0FOdUI7IiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -0,0 +1,27 @@
var import_test = require("@playwright/test");
var import_new_user = require("./new_user");
var import_open = require("./open");
var import_send_message = require("./send_message");
const userADisplayName = "userA";
const userBDisplayName = "userB";
const userCDisplayName = "userC";
const testMessage = "Sending Test Message";
const testReply = "Sending Reply Test Message";
(0, import_test.test)("Create group", async () => {
const [windowA, windowB, windowC] = await Promise.all([(0, import_open.openApp)("1"), (0, import_open.openApp)("2"), (0, import_open.openApp)("3")]);
const userA = await (0, import_new_user.newUser)(windowA, userADisplayName);
const userB = await (0, import_new_user.newUser)(windowB, userBDisplayName);
const userC = await (0, import_new_user.newUser)(windowC, userCDisplayName);
await (0, import_send_message.sendMessage)(windowA, userB.sessionid, testMessage);
await (0, import_send_message.sendMessage)(windowB, userA.sessionid, testReply);
await (0, import_send_message.sendMessage)(windowA, userC.sessionid, testMessage);
await (0, import_send_message.sendMessage)(windowC, userA.sessionid, testReply);
await windowA.click('"New Closed Group"');
await windowA.fill(".session-id-editable", "Test Group");
await windowA.click(userBDisplayName);
await windowA.click(userCDisplayName);
await windowA.click('"Done"');
windowA.locator(`text=${userBDisplayName}, ${userCDisplayName} + 'You joined the group'`);
await windowA.fill("[data-testid=message-input] * textarea", testMessage);
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL2NyZWF0ZV9ncm91cC5zcGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBfZWxlY3Ryb24sIHRlc3QgfSBmcm9tICdAcGxheXdyaWdodC90ZXN0JztcbmltcG9ydCB7IG5ld1VzZXIgfSBmcm9tICcuL25ld191c2VyJztcbmltcG9ydCB7IG9wZW5BcHAgfSBmcm9tICcuL29wZW4nO1xuaW1wb3J0IHsgc2VuZE1lc3NhZ2UgfSBmcm9tICcuL3NlbmRfbWVzc2FnZSc7XG5cbmNvbnN0IHVzZXJBRGlzcGxheU5hbWUgPSAndXNlckEnO1xuY29uc3QgdXNlckJEaXNwbGF5TmFtZSA9ICd1c2VyQic7XG5jb25zdCB1c2VyQ0Rpc3BsYXlOYW1lID0gJ3VzZXJDJztcblxuY29uc3QgdGVzdE1lc3NhZ2UgPSAnU2VuZGluZyBUZXN0IE1lc3NhZ2UnO1xuY29uc3QgdGVzdFJlcGx5ID0gJ1NlbmRpbmcgUmVwbHkgVGVzdCBNZXNzYWdlJztcblxudGVzdCgnQ3JlYXRlIGdyb3VwJywgYXN5bmMgKCkgPT4ge1xuICAvLyBPcGVuIEVsZWN0cm9uXG4gIGNvbnN0IFt3aW5kb3dBLCB3aW5kb3dCLCB3aW5kb3dDXSA9IGF3YWl0IFByb21pc2UuYWxsKFtvcGVuQXBwKCcxJyksIG9wZW5BcHAoJzInKSwgb3BlbkFwcCgnMycpXSk7XG4gIC8vIENyZWF0ZSBVc2VyIHgzXG4gIC8vIGNyZWF0ZSB1c2VyQVxuICBjb25zdCB1c2VyQSA9IGF3YWl0IG5ld1VzZXIod2luZG93QSwgdXNlckFEaXNwbGF5TmFtZSk7XG4gIC8vIGNyZWF0ZSB1c2VyQlxuICBjb25zdCB1c2VyQiA9IGF3YWl0IG5ld1VzZXIod2luZG93QiwgdXNlckJEaXNwbGF5TmFtZSk7XG4gIC8vIENyZWF0ZSBVc2VyQ1xuICBjb25zdCB1c2VyQyA9IGF3YWl0IG5ld1VzZXIod2luZG93QywgdXNlckNEaXNwbGF5TmFtZSk7XG4gIC8vIEFkZCBjb250YWN0XG4gIGF3YWl0IHNlbmRNZXNzYWdlKHdpbmRvd0EsIHVzZXJCLnNlc3Npb25pZCwgdGVzdE1lc3NhZ2UpO1xuICBhd2FpdCBzZW5kTWVzc2FnZSh3aW5kb3dCLCB1c2VyQS5zZXNzaW9uaWQsIHRlc3RSZXBseSk7XG4gIGF3YWl0IHNlbmRNZXNzYWdlKHdpbmRvd0EsIHVzZXJDLnNlc3Npb25pZCwgdGVzdE1lc3NhZ2UpO1xuICBhd2FpdCBzZW5kTWVzc2FnZSh3aW5kb3dDLCB1c2VyQS5zZXNzaW9uaWQsIHRlc3RSZXBseSk7XG4gIC8vIENyZWF0ZSBncm91cCB3aXRoIGV4aXN0aW5nIGNvbnRhY3QgYW5kIHNlc3Npb24gSUQgKG9mIG5vbi1jb250YWN0KVxuICAvLyBDbGljayBuZXcgY2xvc2VkIGdyb3VwIHRhYlxuICBhd2FpdCB3aW5kb3dBLmNsaWNrKCdcIk5ldyBDbG9zZWQgR3JvdXBcIicpO1xuICAvLyBFbnRlciBncm91cCBuYW1lXG4gIGF3YWl0IHdpbmRvd0EuZmlsbCgnLnNlc3Npb24taWQtZWRpdGFibGUnLCAnVGVzdCBHcm91cCcpO1xuICAvLyBTZWxlY3QgdXNlciBCXG4gIGF3YWl0IHdpbmRvd0EuY2xpY2sodXNlckJEaXNwbGF5TmFtZSk7XG4gIC8vIFNlbGVjdCB1c2VyIENcbiAgYXdhaXQgd2luZG93QS5jbGljayh1c2VyQ0Rpc3BsYXlOYW1lKTtcbiAgLy8gQ2xpY2sgRG9uZVxuICBhd2FpdCB3aW5kb3dBLmNsaWNrKCdcIkRvbmVcIicpO1xuICAvLyBDaGVjayBncm91cCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWRcbiAgd2luZG93QS5sb2NhdG9yKGB0ZXh0PSR7dXNlckJEaXNwbGF5TmFtZX0sICR7dXNlckNEaXNwbGF5TmFtZX0gKyAnWW91IGpvaW5lZCB0aGUgZ3JvdXAnYCk7XG4gIC8vIFNlbmQgbWVzc2FnZSBpbiBncm91cCBjaGF0IGZyb20gdXNlciBhXG4gIGF3YWl0IHdpbmRvd0EuZmlsbCgnW2RhdGEtdGVzdGlkPW1lc3NhZ2UtaW5wdXRdICogdGV4dGFyZWEnLCB0ZXN0TWVzc2FnZSk7XG4gIC8vIFZlcmlmeSBpdCB3YXMgcmVjZWl2ZWQgYnkgb3RoZXIgdHdvIGFjY291bnRzXG4gIC8vIFNlbmQgbWVzc2FnZSBmcm9tIHVzZXIgMlxuICAvLyBWZXJpZnlcbiAgLy8gU2VuZCBtZXNzYWdlIGZyb20gdXNlciAzXG4gIC8vIFZlcmlmeVxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxrQkFBZ0M7QUFDaEMsc0JBQXdCO0FBQ3hCLGtCQUF3QjtBQUN4QiwwQkFBNEI7QUFFNUIsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxtQkFBbUI7QUFFekIsTUFBTSxjQUFjO0FBQ3BCLE1BQU0sWUFBWTtBQUVsQixzQkFBSyxnQkFBZ0IsWUFBWTtBQUUvQixRQUFNLENBQUMsU0FBUyxTQUFTLFdBQVcsTUFBTSxRQUFRLElBQUksQ0FBQyx5QkFBUSxHQUFHLEdBQUcseUJBQVEsR0FBRyxHQUFHLHlCQUFRLEdBQUcsQ0FBQyxDQUFDO0FBR2hHLFFBQU0sUUFBUSxNQUFNLDZCQUFRLFNBQVMsZ0JBQWdCO0FBRXJELFFBQU0sUUFBUSxNQUFNLDZCQUFRLFNBQVMsZ0JBQWdCO0FBRXJELFFBQU0sUUFBUSxNQUFNLDZCQUFRLFNBQVMsZ0JBQWdCO0FBRXJELFFBQU0scUNBQVksU0FBUyxNQUFNLFdBQVcsV0FBVztBQUN2RCxRQUFNLHFDQUFZLFNBQVMsTUFBTSxXQUFXLFNBQVM7QUFDckQsUUFBTSxxQ0FBWSxTQUFTLE1BQU0sV0FBVyxXQUFXO0FBQ3ZELFFBQU0scUNBQVksU0FBUyxNQUFNLFdBQVcsU0FBUztBQUdyRCxRQUFNLFFBQVEsTUFBTSxvQkFBb0I7QUFFeEMsUUFBTSxRQUFRLEtBQUssd0JBQXdCLFlBQVk7QUFFdkQsUUFBTSxRQUFRLE1BQU0sZ0JBQWdCO0FBRXBDLFFBQU0sUUFBUSxNQUFNLGdCQUFnQjtBQUVwQyxRQUFNLFFBQVEsTUFBTSxRQUFRO0FBRTVCLFVBQVEsUUFBUSxRQUFRLHFCQUFxQiwyQ0FBMkM7QUFFeEYsUUFBTSxRQUFRLEtBQUssMENBQTBDLFdBQVc7QUFNMUUsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K

View File

@ -0,0 +1,19 @@
var import_test = require("@playwright/test");
var import_new_user = require("./new_user");
var import_open = require("./open");
var import_Promise = require("../../session/utils/Promise");
let window;
(0, import_test.test)("Create User", async () => {
window = await (0, import_open.openApp)("1");
const userA = await (0, import_new_user.newUser)(window, "userA");
await window.click("[data-testid=leftpane-primary-avatar]");
await (0, import_Promise.sleepFor)(100);
(0, import_test.expect)(await window.innerText("[data-testid=your-profile-name]")).toBe(userA.userName);
(0, import_test.expect)(await window.innerText("[data-testid=your-session-id]")).toBe(userA.sessionid);
await window.click(".session-icon-button.small");
await window.click("[data-testid=settings-section]");
await window.click("text=Recovery Phrase");
(0, import_test.expect)(await window.innerText("[data-testid=recovery-phrase-seed-modal]")).toBe(userA.recoveryPhrase);
await window.click(".session-icon-button.small");
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL2VsZWN0cm9uX3Rlc3Quc3BlYy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgX2VsZWN0cm9uLCBleHBlY3QsIFBhZ2UsIHRlc3QgfSBmcm9tICdAcGxheXdyaWdodC90ZXN0JztcbmltcG9ydCB7IG5ld1VzZXIgfSBmcm9tICcuL25ld191c2VyJztcbmltcG9ydCB7IG9wZW5BcHAgfSBmcm9tICcuL29wZW4nO1xuaW1wb3J0IHsgc2xlZXBGb3IgfSBmcm9tICcuLi8uLi9zZXNzaW9uL3V0aWxzL1Byb21pc2UnO1xuXG4vLyBpbXBvcnQge2VtcHR5RGlyU3luY30gZnJvbSAnZnMtZXh0cmEnO1xuXG5sZXQgd2luZG93OiBQYWdlIHwgdW5kZWZpbmVkO1xuXG50ZXN0KCdDcmVhdGUgVXNlcicsIGFzeW5jICgpID0+IHtcbiAgLy8gTGF1bmNoIEVsZWN0cm9uIGFwcC5cbiAgd2luZG93ID0gYXdhaXQgb3BlbkFwcCgnMScpO1xuICAvLyBDcmVhdGUgVXNlclxuICBjb25zdCB1c2VyQSA9IGF3YWl0IG5ld1VzZXIod2luZG93LCAndXNlckEnKTtcblxuICBhd2FpdCB3aW5kb3cuY2xpY2soJ1tkYXRhLXRlc3RpZD1sZWZ0cGFuZS1wcmltYXJ5LWF2YXRhcl0nKTtcbiAgYXdhaXQgc2xlZXBGb3IoMTAwKTtcbiAgLy9jaGVjayB1c2VybmFtZSBtYXRjaGVzXG4gIGV4cGVjdChhd2FpdCB3aW5kb3cuaW5uZXJUZXh0KCdbZGF0YS10ZXN0aWQ9eW91ci1wcm9maWxlLW5hbWVdJykpLnRvQmUodXNlckEudXNlck5hbWUpO1xuICAvL2NoZWNrIHNlc3Npb24gaWQgbWF0Y2hlc1xuICBleHBlY3QoYXdhaXQgd2luZG93LmlubmVyVGV4dCgnW2RhdGEtdGVzdGlkPXlvdXItc2Vzc2lvbi1pZF0nKSkudG9CZSh1c2VyQS5zZXNzaW9uaWQpO1xuICAvLyBleGl0IHByb2ZpbGUgbW9kdWxlXG4gIGF3YWl0IHdpbmRvdy5jbGljaygnLnNlc3Npb24taWNvbi1idXR0b24uc21hbGwnKTtcbiAgLy8gZ28gdG8gc2V0dGluZ3Mgc2VjdGlvblxuICBhd2FpdCB3aW5kb3cuY2xpY2soJ1tkYXRhLXRlc3RpZD1zZXR0aW5ncy1zZWN0aW9uXScpO1xuICBhd2FpdCB3aW5kb3cuY2xpY2soJ3RleHQ9UmVjb3ZlcnkgUGhyYXNlJyk7XG4gIC8vIGNoZWNrIHJlY292ZXJ5IHBocmFzZSBtYXRjaGVzXG4gIGV4cGVjdChhd2FpdCB3aW5kb3cuaW5uZXJUZXh0KCdbZGF0YS10ZXN0aWQ9cmVjb3ZlcnktcGhyYXNlLXNlZWQtbW9kYWxdJykpLnRvQmUoXG4gICAgdXNlckEucmVjb3ZlcnlQaHJhc2VcbiAgKTtcbiAgLy8gRXhpdCBwcm9maWxlIG1vZHVsZVxuICBhd2FpdCB3aW5kb3cuY2xpY2soJy5zZXNzaW9uLWljb24tYnV0dG9uLnNtYWxsJyk7XG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLGtCQUE4QztBQUM5QyxzQkFBd0I7QUFDeEIsa0JBQXdCO0FBQ3hCLHFCQUF5QjtBQUl6QixJQUFJO0FBRUosc0JBQUssZUFBZSxZQUFZO0FBRTlCLFdBQVMsTUFBTSx5QkFBUSxHQUFHO0FBRTFCLFFBQU0sUUFBUSxNQUFNLDZCQUFRLFFBQVEsT0FBTztBQUUzQyxRQUFNLE9BQU8sTUFBTSx1Q0FBdUM7QUFDMUQsUUFBTSw2QkFBUyxHQUFHO0FBRWxCLDBCQUFPLE1BQU0sT0FBTyxVQUFVLGlDQUFpQyxDQUFDLEVBQUUsS0FBSyxNQUFNLFFBQVE7QUFFckYsMEJBQU8sTUFBTSxPQUFPLFVBQVUsK0JBQStCLENBQUMsRUFBRSxLQUFLLE1BQU0sU0FBUztBQUVwRixRQUFNLE9BQU8sTUFBTSw0QkFBNEI7QUFFL0MsUUFBTSxPQUFPLE1BQU0sZ0NBQWdDO0FBQ25ELFFBQU0sT0FBTyxNQUFNLHNCQUFzQjtBQUV6QywwQkFBTyxNQUFNLE9BQU8sVUFBVSwwQ0FBMEMsQ0FBQyxFQUFFLEtBQ3pFLE1BQU0sY0FDUjtBQUVBLFFBQU0sT0FBTyxNQUFNLDRCQUE0QjtBQUNqRCxDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=

36
test/automation/log_in.js Normal file
View File

@ -0,0 +1,36 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var log_in_exports = {};
__export(log_in_exports, {
logIn: () => logIn
});
module.exports = __toCommonJS(log_in_exports);
var import_Promise = require("../../session/utils/Promise");
const logIn = /* @__PURE__ */ __name(async (window, userName, recoveryPhrase) => {
await window.click("[data-testid=restore-using-recovery");
await window.fill("[data-testid=recovery-phrase-input]", recoveryPhrase);
await window.fill("[data-testid=display-name-input]", userName);
await window.click("[data-testid=continue-session-button]");
await (0, import_Promise.sleepFor)(100);
}, "logIn");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
logIn
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL2xvZ19pbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgX2VsZWN0cm9uLCBQYWdlIH0gZnJvbSAnQHBsYXl3cmlnaHQvdGVzdCc7XG5pbXBvcnQgeyBzbGVlcEZvciB9IGZyb20gJy4uLy4uL3Nlc3Npb24vdXRpbHMvUHJvbWlzZSc7XG5cbmV4cG9ydCBjb25zdCBsb2dJbiA9IGFzeW5jICh3aW5kb3c6IFBhZ2UsIHVzZXJOYW1lOiBzdHJpbmcsIHJlY292ZXJ5UGhyYXNlOiBzdHJpbmcpID0+IHtcbiAgLy8gcmVzdG9yZSBhY2NvdW50XG4gIGF3YWl0IHdpbmRvdy5jbGljaygnW2RhdGEtdGVzdGlkPXJlc3RvcmUtdXNpbmctcmVjb3ZlcnknKTtcbiAgLy8gRW50ZXIgcmVjb3ZlcnkgcGhyYXNlXG4gIGF3YWl0IHdpbmRvdy5maWxsKCdbZGF0YS10ZXN0aWQ9cmVjb3ZlcnktcGhyYXNlLWlucHV0XScsIHJlY292ZXJ5UGhyYXNlKTtcbiAgLy8gRW50ZXIgZGlzcGxheSBuYW1lXG4gIGF3YWl0IHdpbmRvdy5maWxsKCdbZGF0YS10ZXN0aWQ9ZGlzcGxheS1uYW1lLWlucHV0XScsIHVzZXJOYW1lKTtcbiAgLy8gQ2xpY2sgY29udGludWUgeW91ciBzZXNzaW9uXG4gIGF3YWl0IHdpbmRvdy5jbGljaygnW2RhdGEtdGVzdGlkPWNvbnRpbnVlLXNlc3Npb24tYnV0dG9uXScpO1xuXG4gIGF3YWl0IHNsZWVwRm9yKDEwMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLHFCQUF5QjtBQUVsQixNQUFNLFFBQVEsOEJBQU8sUUFBYyxVQUFrQixtQkFBMkI7QUFFckYsUUFBTSxPQUFPLE1BQU0scUNBQXFDO0FBRXhELFFBQU0sT0FBTyxLQUFLLHVDQUF1QyxjQUFjO0FBRXZFLFFBQU0sT0FBTyxLQUFLLG9DQUFvQyxRQUFRO0FBRTlELFFBQU0sT0FBTyxNQUFNLHVDQUF1QztBQUUxRCxRQUFNLDZCQUFTLEdBQUc7QUFDcEIsR0FYcUI7IiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -0,0 +1,26 @@
var import_test = require("@playwright/test");
var import_new_user = require("./new_user");
var import_open = require("./open");
var import_send_message = require("./send_message");
const userADisplayName = "userA";
const userBDisplayName = "userB";
const timeStamp = Date.now();
const testMessage = "Test-Message-";
const testReply = "Sending Reply Test Message";
(0, import_test.test)("Send message to new contact", async () => {
const [windowA, windowB] = await Promise.all([(0, import_open.openApp)("1"), (0, import_open.openApp)("2")]);
const userA = await (0, import_new_user.newUser)(windowA, userADisplayName);
const userB = await (0, import_new_user.newUser)(windowB, userBDisplayName);
await (0, import_send_message.sendMessage)(windowA, userB.sessionid, `${testMessage} + ${timeStamp}`);
windowA.locator(`${testMessage} > svg`).waitFor;
await windowA.isVisible("[data-testid=msg-status-outgoing]");
await windowA.waitForTimeout(5500);
await (0, import_send_message.sendMessage)(windowB, userA.sessionid, `${testReply} + ${timeStamp}`);
await windowA.waitForTimeout(5500);
await windowB.click("[data-testid=contact-section]");
await windowA.waitForTimeout(2500);
(0, import_test.expect)(await windowB.innerText(".module-conversation__user__profile-name")).toBe(userA.userName);
await windowA.click("[data-testid=contact-section]");
(0, import_test.expect)(await windowA.innerText(".module-conversation__user__profile-name")).toBe(userB.userName);
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL25ld19jb250YWN0X3Rlc3Quc3BlYy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgX2VsZWN0cm9uLCBleHBlY3QsIHRlc3QgfSBmcm9tICdAcGxheXdyaWdodC90ZXN0JztcbmltcG9ydCB7IG5ld1VzZXIgfSBmcm9tICcuL25ld191c2VyJztcbmltcG9ydCB7IG9wZW5BcHAgfSBmcm9tICcuL29wZW4nO1xuaW1wb3J0IHsgc2VuZE1lc3NhZ2UgfSBmcm9tICcuL3NlbmRfbWVzc2FnZSc7XG5cbmNvbnN0IHVzZXJBRGlzcGxheU5hbWUgPSAndXNlckEnO1xuY29uc3QgdXNlckJEaXNwbGF5TmFtZSA9ICd1c2VyQic7XG5cbmNvbnN0IHRpbWVTdGFtcCA9IERhdGUubm93KCk7XG5cbmNvbnN0IHRlc3RNZXNzYWdlID0gJ1Rlc3QtTWVzc2FnZS0nO1xuY29uc3QgdGVzdFJlcGx5ID0gJ1NlbmRpbmcgUmVwbHkgVGVzdCBNZXNzYWdlJztcblxuLy8gU2VuZCBtZXNzYWdlIGluIG9uZSB0byBvbmUgY29udmVyc2F0aW9uIHdpdGggbmV3IGNvbnRhY3RcbnRlc3QoJ1NlbmQgbWVzc2FnZSB0byBuZXcgY29udGFjdCcsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgW3dpbmRvd0EsIHdpbmRvd0JdID0gYXdhaXQgUHJvbWlzZS5hbGwoW29wZW5BcHAoJzEnKSwgb3BlbkFwcCgnMicpXSk7XG4gIC8vIENyZWF0ZSBVc2VyIEFcbiAgY29uc3QgdXNlckEgPSBhd2FpdCBuZXdVc2VyKHdpbmRvd0EsIHVzZXJBRGlzcGxheU5hbWUpO1xuICAvLyBDcmVhdGUgVXNlciBCXG4gIGNvbnN0IHVzZXJCID0gYXdhaXQgbmV3VXNlcih3aW5kb3dCLCB1c2VyQkRpc3BsYXlOYW1lKTtcbiAgLy8gVXNlciBBIHNlbmRzIG1lc3NhZ2UgdG8gVXNlciBCXG4gIGF3YWl0IHNlbmRNZXNzYWdlKHdpbmRvd0EsIHVzZXJCLnNlc3Npb25pZCwgYCR7dGVzdE1lc3NhZ2V9ICsgJHt0aW1lU3RhbXB9YCk7XG4gIHdpbmRvd0EubG9jYXRvcihgJHt0ZXN0TWVzc2FnZX0gPiBzdmdgKS53YWl0Rm9yO1xuICBhd2FpdCB3aW5kb3dBLmlzVmlzaWJsZSgnW2RhdGEtdGVzdGlkPW1zZy1zdGF0dXMtb3V0Z29pbmddJyk7XG4gIGF3YWl0IHdpbmRvd0Eud2FpdEZvclRpbWVvdXQoNTUwMCk7XG4gIC8vIFVzZXIgQiBzZW5kcyBtZXNzYWdlIHRvIFVzZXIgQiB0byBVU0VSIEFcbiAgYXdhaXQgc2VuZE1lc3NhZ2Uod2luZG93QiwgdXNlckEuc2Vzc2lvbmlkLCBgJHt0ZXN0UmVwbHl9ICsgJHt0aW1lU3RhbXB9YCk7XG4gIGF3YWl0IHdpbmRvd0Eud2FpdEZvclRpbWVvdXQoNTUwMCk7XG4gIC8vIE5hdmlnYXRlIHRvIGNvbnRhY3RzIHRhYiBpbiBVc2VyIEIncyB3aW5kb3dcbiAgYXdhaXQgd2luZG93Qi5jbGljaygnW2RhdGEtdGVzdGlkPWNvbnRhY3Qtc2VjdGlvbl0nKTtcbiAgYXdhaXQgd2luZG93QS53YWl0Rm9yVGltZW91dCgyNTAwKTtcbiAgZXhwZWN0KGF3YWl0IHdpbmRvd0IuaW5uZXJUZXh0KCcubW9kdWxlLWNvbnZlcnNhdGlvbl9fdXNlcl9fcHJvZmlsZS1uYW1lJykpLnRvQmUodXNlckEudXNlck5hbWUpO1xuICAvLyBOYXZpZ2F0ZSB0byBjb250YWN0cyB0YWIgaW4gVXNlciBBJ3Mgd2luZG93XG4gIGF3YWl0IHdpbmRvd0EuY2xpY2soJ1tkYXRhLXRlc3RpZD1jb250YWN0LXNlY3Rpb25dJyk7XG4gIGV4cGVjdChhd2FpdCB3aW5kb3dBLmlubmVyVGV4dCgnLm1vZHVsZS1jb252ZXJzYXRpb25fX3VzZXJfX3Byb2ZpbGUtbmFtZScpKS50b0JlKHVzZXJCLnVzZXJOYW1lKTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsa0JBQXdDO0FBQ3hDLHNCQUF3QjtBQUN4QixrQkFBd0I7QUFDeEIsMEJBQTRCO0FBRTVCLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sbUJBQW1CO0FBRXpCLE1BQU0sWUFBWSxLQUFLLElBQUk7QUFFM0IsTUFBTSxjQUFjO0FBQ3BCLE1BQU0sWUFBWTtBQUdsQixzQkFBSywrQkFBK0IsWUFBWTtBQUM5QyxRQUFNLENBQUMsU0FBUyxXQUFXLE1BQU0sUUFBUSxJQUFJLENBQUMseUJBQVEsR0FBRyxHQUFHLHlCQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRXpFLFFBQU0sUUFBUSxNQUFNLDZCQUFRLFNBQVMsZ0JBQWdCO0FBRXJELFFBQU0sUUFBUSxNQUFNLDZCQUFRLFNBQVMsZ0JBQWdCO0FBRXJELFFBQU0scUNBQVksU0FBUyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsV0FBVztBQUMzRSxVQUFRLFFBQVEsR0FBRyxtQkFBbUIsRUFBRTtBQUN4QyxRQUFNLFFBQVEsVUFBVSxtQ0FBbUM7QUFDM0QsUUFBTSxRQUFRLGVBQWUsSUFBSTtBQUVqQyxRQUFNLHFDQUFZLFNBQVMsTUFBTSxXQUFXLEdBQUcsZUFBZSxXQUFXO0FBQ3pFLFFBQU0sUUFBUSxlQUFlLElBQUk7QUFFakMsUUFBTSxRQUFRLE1BQU0sK0JBQStCO0FBQ25ELFFBQU0sUUFBUSxlQUFlLElBQUk7QUFDakMsMEJBQU8sTUFBTSxRQUFRLFVBQVUsMENBQTBDLENBQUMsRUFBRSxLQUFLLE1BQU0sUUFBUTtBQUUvRixRQUFNLFFBQVEsTUFBTSwrQkFBK0I7QUFDbkQsMEJBQU8sTUFBTSxRQUFRLFVBQVUsMENBQTBDLENBQUMsRUFBRSxLQUFLLE1BQU0sUUFBUTtBQUNqRyxDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=

View File

@ -0,0 +1,40 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var new_user_exports = {};
__export(new_user_exports, {
newUser: () => newUser
});
module.exports = __toCommonJS(new_user_exports);
const newUser = /* @__PURE__ */ __name(async (window, userName) => {
await window.click("text=Create Session ID");
await window.waitForTimeout(1500);
const sessionid = await window.inputValue("[data-testid=session-id-signup]");
await window.click("text=Continue");
await window.fill("#session-input-floating-label", userName);
await window.click("text=Get Started");
await window.click("text=Reveal recovery phrase");
const recoveryPhrase = await window.innerText("[data-testid=recovery-phrase-seed-modal]");
await window.click(".session-icon-button.small");
return { userName, sessionid, recoveryPhrase };
}, "newUser");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
newUser
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL25ld191c2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBfZWxlY3Ryb24sIFBhZ2UgfSBmcm9tICdAcGxheXdyaWdodC90ZXN0JztcblxuZXhwb3J0IGNvbnN0IG5ld1VzZXIgPSBhc3luYyAod2luZG93OiBQYWdlLCB1c2VyTmFtZTogc3RyaW5nKSA9PiB7XG4gIC8vIENyZWF0ZSBVc2VyXG4gIGF3YWl0IHdpbmRvdy5jbGljaygndGV4dD1DcmVhdGUgU2Vzc2lvbiBJRCcpO1xuICAvLyBXYWl0IGZvciBhbmltYXRpb24gZm9yIGZpbmlzaCBjcmVhdGluZyBJRFxuICBhd2FpdCB3aW5kb3cud2FpdEZvclRpbWVvdXQoMTUwMCk7XG4gIC8vU2F2ZSBzZXNzaW9uIElEIHRvIGEgdmFyaWFibGVcbiAgY29uc3Qgc2Vzc2lvbmlkID0gYXdhaXQgd2luZG93LmlucHV0VmFsdWUoJ1tkYXRhLXRlc3RpZD1zZXNzaW9uLWlkLXNpZ251cF0nKTtcbiAgYXdhaXQgd2luZG93LmNsaWNrKCd0ZXh0PUNvbnRpbnVlJyk7XG4gIC8vIElucHV0IHVzZXJuYW1lID0gdGVzdHVzZXJcbiAgYXdhaXQgd2luZG93LmZpbGwoJyNzZXNzaW9uLWlucHV0LWZsb2F0aW5nLWxhYmVsJywgdXNlck5hbWUpO1xuICBhd2FpdCB3aW5kb3cuY2xpY2soJ3RleHQ9R2V0IFN0YXJ0ZWQnKTtcbiAgLy8gc2F2ZSByZWNvdmVyeSBwaHJhc2VcbiAgYXdhaXQgd2luZG93LmNsaWNrKCd0ZXh0PVJldmVhbCByZWNvdmVyeSBwaHJhc2UnKTtcbiAgY29uc3QgcmVjb3ZlcnlQaHJhc2UgPSBhd2FpdCB3aW5kb3cuaW5uZXJUZXh0KCdbZGF0YS10ZXN0aWQ9cmVjb3ZlcnktcGhyYXNlLXNlZWQtbW9kYWxdJyk7XG5cbiAgYXdhaXQgd2luZG93LmNsaWNrKCcuc2Vzc2lvbi1pY29uLWJ1dHRvbi5zbWFsbCcpO1xuICByZXR1cm4geyB1c2VyTmFtZSwgc2Vzc2lvbmlkLCByZWNvdmVyeVBocmFzZSB9O1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFTyxNQUFNLFVBQVUsOEJBQU8sUUFBYyxhQUFxQjtBQUUvRCxRQUFNLE9BQU8sTUFBTSx3QkFBd0I7QUFFM0MsUUFBTSxPQUFPLGVBQWUsSUFBSTtBQUVoQyxRQUFNLFlBQVksTUFBTSxPQUFPLFdBQVcsaUNBQWlDO0FBQzNFLFFBQU0sT0FBTyxNQUFNLGVBQWU7QUFFbEMsUUFBTSxPQUFPLEtBQUssaUNBQWlDLFFBQVE7QUFDM0QsUUFBTSxPQUFPLE1BQU0sa0JBQWtCO0FBRXJDLFFBQU0sT0FBTyxNQUFNLDZCQUE2QjtBQUNoRCxRQUFNLGlCQUFpQixNQUFNLE9BQU8sVUFBVSwwQ0FBMEM7QUFFeEYsUUFBTSxPQUFPLE1BQU0sNEJBQTRCO0FBQy9DLFNBQU8sRUFBRSxVQUFVLFdBQVcsZUFBZTtBQUMvQyxHQWpCdUI7IiwKICAibmFtZXMiOiBbXQp9Cg==

77
test/automation/open.js Normal file
View File

@ -0,0 +1,77 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var open_exports = {};
__export(open_exports, {
getAppDataPath: () => getAppDataPath,
openApp: () => openApp
});
module.exports = __toCommonJS(open_exports);
var import_test = __toESM(require("@playwright/test"));
var import_fs = require("fs");
var path = __toESM(require("path"));
const NODE_ENV = "test-integration";
let appDataPath;
import_test.default.beforeAll(async () => {
appDataPath = await getAppDataPath();
});
const getDirectoriesOfSessionDataPath = /* @__PURE__ */ __name((source) => (0, import_fs.readdirSync)(source, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name).filter((n) => n.startsWith(`Session-${NODE_ENV}`)), "getDirectoriesOfSessionDataPath");
import_test.default.beforeEach(() => {
if (!appDataPath || !appDataPath.length) {
throw new Error("appDataPath unset");
}
const parentFolderOfAllDataPath = path.dirname(appDataPath);
if (!parentFolderOfAllDataPath || parentFolderOfAllDataPath.length < 20) {
throw new Error("parentFolderOfAllDataPath not found or invalid");
}
const allAppDataPath = getDirectoriesOfSessionDataPath(parentFolderOfAllDataPath);
allAppDataPath.map((folder) => {
if (!appDataPath) {
throw new Error("parentFolderOfAllDataPath unset");
}
const pathToRemove = path.join(parentFolderOfAllDataPath, folder);
(0, import_fs.rmdirSync)(pathToRemove, { recursive: true });
});
});
const getAppDataPath = /* @__PURE__ */ __name(async () => {
process.env.NODE_ENV = NODE_ENV;
const electronApp = await import_test._electron.launch({ args: ["main.js"] });
const appPath = await electronApp.evaluate(async ({ app }) => {
return app.getPath("userData");
});
const window = await electronApp.firstWindow();
await window.close();
return appPath;
}, "getAppDataPath");
const openApp = /* @__PURE__ */ __name(async (multi) => {
process.env.NODE_APP_INSTANCE = multi;
process.env.NODE_ENV = NODE_ENV;
const electronApp = await import_test._electron.launch({ args: ["main.js"] });
const window = await electronApp.firstWindow();
await window.reload();
return window;
}, "openApp");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
getAppDataPath,
openApp
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL29wZW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0ZXN0LCB7IF9lbGVjdHJvbiB9IGZyb20gJ0BwbGF5d3JpZ2h0L3Rlc3QnO1xuaW1wb3J0IHsgcmVhZGRpclN5bmMsIHJtZGlyU3luYyB9IGZyb20gJ2ZzJztcblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTk9ERV9FTlYgPSAndGVzdC1pbnRlZ3JhdGlvbic7XG5cbmxldCBhcHBEYXRhUGF0aDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuXG50ZXN0LmJlZm9yZUFsbChhc3luYyAoKSA9PiB7XG4gIGFwcERhdGFQYXRoID0gYXdhaXQgZ2V0QXBwRGF0YVBhdGgoKTtcbn0pO1xuXG5jb25zdCBnZXREaXJlY3Rvcmllc09mU2Vzc2lvbkRhdGFQYXRoID0gKHNvdXJjZTogc3RyaW5nKSA9PlxuICByZWFkZGlyU3luYyhzb3VyY2UsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuICAgIC5maWx0ZXIoZGlyZW50ID0+IGRpcmVudC5pc0RpcmVjdG9yeSgpKVxuICAgIC5tYXAoZGlyZW50ID0+IGRpcmVudC5uYW1lKVxuICAgIC5maWx0ZXIobiA9PiBuLnN0YXJ0c1dpdGgoYFNlc3Npb24tJHtOT0RFX0VOVn1gKSk7XG5cbnRlc3QuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIGlmICghYXBwRGF0YVBhdGggfHwgIWFwcERhdGFQYXRoLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYXBwRGF0YVBhdGggdW5zZXQnKTtcbiAgfVxuICBjb25zdCBwYXJlbnRGb2xkZXJPZkFsbERhdGFQYXRoID0gcGF0aC5kaXJuYW1lKGFwcERhdGFQYXRoKTtcblxuICBpZiAoIXBhcmVudEZvbGRlck9mQWxsRGF0YVBhdGggfHwgcGFyZW50Rm9sZGVyT2ZBbGxEYXRhUGF0aC5sZW5ndGggPCAyMCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncGFyZW50Rm9sZGVyT2ZBbGxEYXRhUGF0aCBub3QgZm91bmQgb3IgaW52YWxpZCcpO1xuICB9XG5cbiAgY29uc3QgYWxsQXBwRGF0YVBhdGggPSBnZXREaXJlY3Rvcmllc09mU2Vzc2lvbkRhdGFQYXRoKHBhcmVudEZvbGRlck9mQWxsRGF0YVBhdGgpO1xuXG4gIGFsbEFwcERhdGFQYXRoLm1hcChmb2xkZXIgPT4ge1xuICAgIGlmICghYXBwRGF0YVBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGFyZW50Rm9sZGVyT2ZBbGxEYXRhUGF0aCB1bnNldCcpO1xuICAgIH1cbiAgICBjb25zdCBwYXRoVG9SZW1vdmUgPSBwYXRoLmpvaW4ocGFyZW50Rm9sZGVyT2ZBbGxEYXRhUGF0aCwgZm9sZGVyKTtcbiAgICBybWRpclN5bmMocGF0aFRvUmVtb3ZlLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGdldEFwcERhdGFQYXRoID0gYXN5bmMgKCkgPT4ge1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViA9IE5PREVfRU5WO1xuICBjb25zdCBlbGVjdHJvbkFwcCA9IGF3YWl0IF9lbGVjdHJvbi5sYXVuY2goeyBhcmdzOiBbJ21haW4uanMnXSB9KTtcbiAgY29uc3QgYXBwUGF0aCA9IGF3YWl0IGVsZWN0cm9uQXBwLmV2YWx1YXRlKGFzeW5jICh7IGFwcCB9KSA9PiB7XG4gICAgcmV0dXJuIGFwcC5nZXRQYXRoKCd1c2VyRGF0YScpO1xuICB9KTtcbiAgY29uc3Qgd2luZG93ID0gYXdhaXQgZWxlY3Ryb25BcHAuZmlyc3RXaW5kb3coKTtcbiAgYXdhaXQgd2luZG93LmNsb3NlKCk7XG5cbiAgcmV0dXJuIGFwcFBhdGg7XG59O1xuXG5leHBvcnQgY29uc3Qgb3BlbkFwcCA9IGFzeW5jIChtdWx0aTogc3RyaW5nKSA9PiB7XG4gIHByb2Nlc3MuZW52Lk5PREVfQVBQX0lOU1RBTkNFID0gbXVsdGk7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WID0gTk9ERV9FTlY7XG4gIGNvbnN0IGVsZWN0cm9uQXBwID0gYXdhaXQgX2VsZWN0cm9uLmxhdW5jaCh7IGFyZ3M6IFsnbWFpbi5qcyddIH0pO1xuICAvLyBHZXQgdGhlIGZpcnN0IHdpbmRvdyB0aGF0IHRoZSBhcHAgb3BlbnMsIHdhaXQgaWYgbmVjZXNzYXJ5LlxuICBjb25zdCB3aW5kb3cgPSBhd2FpdCBlbGVjdHJvbkFwcC5maXJzdFdpbmRvdygpO1xuXG4gIGF3YWl0IHdpbmRvdy5yZWxvYWQoKTtcbiAgcmV0dXJuIHdpbmRvdztcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxrQkFBZ0M7QUFDaEMsZ0JBQXVDO0FBRXZDLFdBQXNCO0FBRXRCLE1BQU0sV0FBVztBQUVqQixJQUFJO0FBRUosb0JBQUssVUFBVSxZQUFZO0FBQ3pCLGdCQUFjLE1BQU0sZUFBZTtBQUNyQyxDQUFDO0FBRUQsTUFBTSxrQ0FBa0Msd0JBQUMsV0FDdkMsMkJBQVksUUFBUSxFQUFFLGVBQWUsS0FBSyxDQUFDLEVBQ3hDLE9BQU8sWUFBVSxPQUFPLFlBQVksQ0FBQyxFQUNyQyxJQUFJLFlBQVUsT0FBTyxJQUFJLEVBQ3pCLE9BQU8sT0FBSyxFQUFFLFdBQVcsV0FBVyxVQUFVLENBQUMsR0FKWjtBQU14QyxvQkFBSyxXQUFXLE1BQU07QUFDcEIsTUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLFFBQVE7QUFDdkMsVUFBTSxJQUFJLE1BQU0sbUJBQW1CO0FBQUEsRUFDckM7QUFDQSxRQUFNLDRCQUE0QixLQUFLLFFBQVEsV0FBVztBQUUxRCxNQUFJLENBQUMsNkJBQTZCLDBCQUEwQixTQUFTLElBQUk7QUFDdkUsVUFBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQUEsRUFDbEU7QUFFQSxRQUFNLGlCQUFpQixnQ0FBZ0MseUJBQXlCO0FBRWhGLGlCQUFlLElBQUksWUFBVTtBQUMzQixRQUFJLENBQUMsYUFBYTtBQUNoQixZQUFNLElBQUksTUFBTSxpQ0FBaUM7QUFBQSxJQUNuRDtBQUNBLFVBQU0sZUFBZSxLQUFLLEtBQUssMkJBQTJCLE1BQU07QUFDaEUsNkJBQVUsY0FBYyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQUEsRUFDN0MsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNLGlCQUFpQixtQ0FBWTtBQUN4QyxVQUFRLElBQUksV0FBVztBQUN2QixRQUFNLGNBQWMsTUFBTSxzQkFBVSxPQUFPLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2hFLFFBQU0sVUFBVSxNQUFNLFlBQVksU0FBUyxPQUFPLEVBQUUsVUFBVTtBQUM1RCxXQUFPLElBQUksUUFBUSxVQUFVO0FBQUEsRUFDL0IsQ0FBQztBQUNELFFBQU0sU0FBUyxNQUFNLFlBQVksWUFBWTtBQUM3QyxRQUFNLE9BQU8sTUFBTTtBQUVuQixTQUFPO0FBQ1QsR0FWOEI7QUFZdkIsTUFBTSxVQUFVLDhCQUFPLFVBQWtCO0FBQzlDLFVBQVEsSUFBSSxvQkFBb0I7QUFDaEMsVUFBUSxJQUFJLFdBQVc7QUFDdkIsUUFBTSxjQUFjLE1BQU0sc0JBQVUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUVoRSxRQUFNLFNBQVMsTUFBTSxZQUFZLFlBQVk7QUFFN0MsUUFBTSxPQUFPLE9BQU87QUFDcEIsU0FBTztBQUNULEdBVHVCOyIsCiAgIm5hbWVzIjogW10KfQo=

View File

@ -0,0 +1,35 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var send_message_exports = {};
__export(send_message_exports, {
sendMessage: () => sendMessage
});
module.exports = __toCommonJS(send_message_exports);
const sendMessage = /* @__PURE__ */ __name(async (window, sessionid, message) => {
await window.click("[data-testid=new-conversation-button]");
await window.fill(".session-id-editable-textarea", sessionid);
await window.click("text=Next");
await window.fill("[data-testid=message-input] * textarea", message);
await window.click("[data-testid=send-message-button]");
}, "sendMessage");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
sendMessage
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC9hdXRvbWF0aW9uL3NlbmRfbWVzc2FnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgX2VsZWN0cm9uLCBQYWdlIH0gZnJvbSAnQHBsYXl3cmlnaHQvdGVzdCc7XG5cbmV4cG9ydCBjb25zdCBzZW5kTWVzc2FnZSA9IGFzeW5jICh3aW5kb3c6IFBhZ2UsIHNlc3Npb25pZDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgYXdhaXQgd2luZG93LmNsaWNrKCdbZGF0YS10ZXN0aWQ9bmV3LWNvbnZlcnNhdGlvbi1idXR0b25dJyk7XG4gIC8vIEVudGVyIHNlc3Npb24gSUQgb2YgVVNFUiBCXG4gIGF3YWl0IHdpbmRvdy5maWxsKCcuc2Vzc2lvbi1pZC1lZGl0YWJsZS10ZXh0YXJlYScsIHNlc3Npb25pZCk7XG4gIC8vIGNsaWNrIG5leHRcbiAgYXdhaXQgd2luZG93LmNsaWNrKCd0ZXh0PU5leHQnKTtcbiAgLy8gdHlwZSBpbnRvIG1lc3NhZ2UgaW5wdXQgYm94XG4gIGF3YWl0IHdpbmRvdy5maWxsKCdbZGF0YS10ZXN0aWQ9bWVzc2FnZS1pbnB1dF0gKiB0ZXh0YXJlYScsIG1lc3NhZ2UpO1xuICAvLyBjbGljayB1cCBhcnJvdyAoc2VuZClcbiAgYXdhaXQgd2luZG93LmNsaWNrKCdbZGF0YS10ZXN0aWQ9c2VuZC1tZXNzYWdlLWJ1dHRvbl0nKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRU8sTUFBTSxjQUFjLDhCQUFPLFFBQWMsV0FBbUIsWUFBb0I7QUFDckYsUUFBTSxPQUFPLE1BQU0sdUNBQXVDO0FBRTFELFFBQU0sT0FBTyxLQUFLLGlDQUFpQyxTQUFTO0FBRTVELFFBQU0sT0FBTyxNQUFNLFdBQVc7QUFFOUIsUUFBTSxPQUFPLEtBQUssMENBQTBDLE9BQU87QUFFbkUsUUFBTSxPQUFPLE1BQU0sbUNBQW1DO0FBQ3hELEdBVjJCOyIsCiAgIm5hbWVzIjogW10KfQo=

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,33 @@
var import_chai = require("chai");
var import_mocha = require("mocha");
var import_protobuf = require("../../../../protobuf");
var import_session = require("../../../../session");
var import_GroupInvitationMessage = require("../../../../session/messages/outgoing/visibleMessage/GroupInvitationMessage");
describe("GroupInvitationMessage", () => {
let message;
const timestamp = Date.now();
const url = "http://localhost";
const name = "test";
(0, import_mocha.beforeEach)(() => {
message = new import_GroupInvitationMessage.GroupInvitationMessage({
timestamp,
url,
name
});
});
it("dataMessage.groupInvitation has url, and serverName set", () => {
var _a, _b;
const plainText = message.plainTextBuffer();
const decoded = import_protobuf.SignalService.Content.decode(plainText);
(0, import_chai.expect)((_a = decoded.dataMessage) == null ? void 0 : _a.openGroupInvitation).to.have.property("url", url);
(0, import_chai.expect)((_b = decoded.dataMessage) == null ? void 0 : _b.openGroupInvitation).to.have.property("name", name);
});
it("correct ttl", () => {
(0, import_chai.expect)(message.ttl()).to.equal(import_session.Constants.TTL_DEFAULT.TTL_MAX);
});
it("has an identifier", () => {
(0, import_chai.expect)(message.identifier).to.not.equal(null, "identifier cannot be null");
(0, import_chai.expect)(message.identifier).to.not.equal(void 0, "identifier cannot be undefined");
});
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vdHMvdGVzdC9zZXNzaW9uL3VuaXQvbWVzc2FnZXMvR3JvdXBJbnZpdGF0aW9uTWVzc2FnZV90ZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBleHBlY3QgfSBmcm9tICdjaGFpJztcbmltcG9ydCB7IGJlZm9yZUVhY2ggfSBmcm9tICdtb2NoYSc7XG5cbmltcG9ydCB7IFNpZ25hbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9wcm90b2J1Zic7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXNzaW9uJztcbmltcG9ydCB7IEdyb3VwSW52aXRhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXNzaW9uL21lc3NhZ2VzL291dGdvaW5nL3Zpc2libGVNZXNzYWdlL0dyb3VwSW52aXRhdGlvbk1lc3NhZ2UnO1xuXG5kZXNjcmliZSgnR3JvdXBJbnZpdGF0aW9uTWVzc2FnZScsICgpID0+IHtcbiAgbGV0IG1lc3NhZ2U6IEdyb3VwSW52aXRhdGlvbk1lc3NhZ2U7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gIGNvbnN0IHVybCA9ICdodHRwOi8vbG9jYWxob3N0JztcbiAgY29uc3QgbmFtZSA9ICd0ZXN0JztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBtZXNzYWdlID0gbmV3IEdyb3VwSW52aXRhdGlvbk1lc3NhZ2Uoe1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgdXJsLFxuICAgICAgbmFtZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ2RhdGFNZXNzYWdlLmdyb3VwSW52aXRhdGlvbiBoYXMgdXJsLCBhbmQgc2VydmVyTmFtZSBzZXQnLCAoKSA9PiB7XG4gICAgY29uc3QgcGxhaW5UZXh0ID0gbWVzc2FnZS5wbGFpblRleHRCdWZmZXIoKTtcbiAgICBjb25zdCBkZWNvZGVkID0gU2lnbmFsU2VydmljZS5Db250ZW50LmRlY29kZShwbGFpblRleHQpO1xuXG4gICAgZXhwZWN0KGRlY29kZWQuZGF0YU1lc3NhZ2U/Lm9wZW5Hcm91cEludml0YXRpb24pLnRvLmhhdmUucHJvcGVydHkoJ3VybCcsIHVybCk7XG4gICAgZXhwZWN0KGRlY29kZWQuZGF0YU1lc3NhZ2U/Lm9wZW5Hcm91cEludml0YXRpb24pLnRvLmhhdmUucHJvcGVydHkoJ25hbWUnLCBuYW1lKTtcbiAgfSk7XG5cbiAgaXQoJ2NvcnJlY3QgdHRsJywgKCkgPT4ge1xuICAgIGV4cGVjdChtZXNzYWdlLnR0bCgpKS50by5lcXVhbChDb25zdGFudHMuVFRMX0RFRkFVTFQuVFRMX01BWCk7XG4gIH0pO1xuXG4gIGl0KCdoYXMgYW4gaWRlbnRpZmllcicsICgpID0+IHtcbiAgICBleHBlY3QobWVzc2FnZS5pZGVudGlmaWVyKS50by5ub3QuZXF1YWwobnVsbCwgJ2lkZW50aWZpZXIgY2Fubm90IGJlIG51bGwnKTtcbiAgICBleHBlY3QobWVzc2FnZS5pZGVudGlmaWVyKS50by5ub3QuZXF1YWwodW5kZWZpbmVkLCAnaWRlbnRpZmllciBjYW5ub3QgYmUgdW5kZWZpbmVkJyk7XG4gIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxrQkFBdUI7QUFDdkIsbUJBQTJCO0FBRTNCLHNCQUE4QjtBQUM5QixxQkFBMEI7QUFDMUIsb0NBQXVDO0FBRXZDLFNBQVMsMEJBQTBCLE1BQU07QUFDdkMsTUFBSTtBQUNKLFFBQU0sWUFBWSxLQUFLLElBQUk7QUFDM0IsUUFBTSxNQUFNO0FBQ1osUUFBTSxPQUFPO0FBRWIsK0JBQVcsTUFBTTtBQUNmLGNBQVUsSUFBSSxxREFBdUI7QUFBQSxNQUNuQztBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBRUQsS0FBRywyREFBMkQsTUFBTTtBQXJCdEU7QUFzQkksVUFBTSxZQUFZLFFBQVEsZ0JBQWdCO0FBQzFDLFVBQU0sVUFBVSw4QkFBYyxRQUFRLE9BQU8sU0FBUztBQUV0RCw0QkFBTyxjQUFRLGdCQUFSLG1CQUFxQixtQkFBbUIsRUFBRSxHQUFHLEtBQUssU0FBUyxPQUFPLEdBQUc7QUFDNUUsNEJBQU8sY0FBUSxnQkFBUixtQkFBcUIsbUJBQW1CLEVBQUUsR0FBRyxLQUFLLFNBQVMsUUFBUSxJQUFJO0FBQUEsRUFDaEYsQ0FBQztBQUVELEtBQUcsZUFBZSxNQUFNO0FBQ3RCLDRCQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLHlCQUFVLFlBQVksT0FBTztBQUFBLEVBQzlELENBQUM7QUFFRCxLQUFHLHFCQUFxQixNQUFNO0FBQzVCLDRCQUFPLFFBQVEsVUFBVSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sMkJBQTJCO0FBQ3pFLDRCQUFPLFFBQVEsVUFBVSxFQUFFLEdBQUcsSUFBSSxNQUFNLFFBQVcsZ0NBQWdDO0FBQUEsRUFDckYsQ0FBQztBQUNILENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -0,0 +1,31 @@
var import_chai = require("chai");
var import_mocha = require("mocha");
var import_protobuf = require("../../../../protobuf");
var import_lodash = require("lodash");
var import_session = require("../../../../session");
var import_ReadReceiptMessage = require("../../../../session/messages/outgoing/controlMessage/receipt/ReadReceiptMessage");
describe("ReceiptMessage", () => {
let readMessage;
let timestamps;
(0, import_mocha.beforeEach)(() => {
timestamps = [987654321, 123456789];
const timestamp = Date.now();
readMessage = new import_ReadReceiptMessage.ReadReceiptMessage({ timestamp, timestamps });
});
it("content of a read receipt is correct", () => {
var _a;
const plainText = readMessage.plainTextBuffer();
const decoded = import_protobuf.SignalService.Content.decode(plainText);
(0, import_chai.expect)(decoded.receiptMessage).to.have.property("type", 1);
const decodedTimestamps = (((_a = decoded.receiptMessage) == null ? void 0 : _a.timestamp) ?? []).map(import_lodash.toNumber);
(0, import_chai.expect)(decodedTimestamps).to.deep.equal(timestamps);
});
it("correct ttl", () => {
(0, import_chai.expect)(readMessage.ttl()).to.equal(import_session.Constants.TTL_DEFAULT.TTL_MAX);
});
it("has an identifier", () => {
(0, import_chai.expect)(readMessage.identifier).to.not.equal(null, "identifier cannot be null");
(0, import_chai.expect)(readMessage.identifier).to.not.equal(void 0, "identifier cannot be undefined");
});
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vdHMvdGVzdC9zZXNzaW9uL3VuaXQvbWVzc2FnZXMvUmVjZWlwdE1lc3NhZ2VfdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZXhwZWN0IH0gZnJvbSAnY2hhaSc7XG5pbXBvcnQgeyBiZWZvcmVFYWNoIH0gZnJvbSAnbW9jaGEnO1xuXG5pbXBvcnQgeyBTaWduYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJvdG9idWYnO1xuaW1wb3J0IHsgdG9OdW1iZXIgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2Vzc2lvbic7XG5pbXBvcnQgeyBSZWFkUmVjZWlwdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXNzaW9uL21lc3NhZ2VzL291dGdvaW5nL2NvbnRyb2xNZXNzYWdlL3JlY2VpcHQvUmVhZFJlY2VpcHRNZXNzYWdlJztcblxuZGVzY3JpYmUoJ1JlY2VpcHRNZXNzYWdlJywgKCkgPT4ge1xuICBsZXQgcmVhZE1lc3NhZ2U6IFJlYWRSZWNlaXB0TWVzc2FnZTtcbiAgbGV0IHRpbWVzdGFtcHM6IEFycmF5PG51bWJlcj47XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdGltZXN0YW1wcyA9IFs5ODc2NTQzMjEsIDEyMzQ1Njc4OV07XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICByZWFkTWVzc2FnZSA9IG5ldyBSZWFkUmVjZWlwdE1lc3NhZ2UoeyB0aW1lc3RhbXAsIHRpbWVzdGFtcHMgfSk7XG4gIH0pO1xuXG4gIGl0KCdjb250ZW50IG9mIGEgcmVhZCByZWNlaXB0IGlzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgY29uc3QgcGxhaW5UZXh0ID0gcmVhZE1lc3NhZ2UucGxhaW5UZXh0QnVmZmVyKCk7XG4gICAgY29uc3QgZGVjb2RlZCA9IFNpZ25hbFNlcnZpY2UuQ29udGVudC5kZWNvZGUocGxhaW5UZXh0KTtcblxuICAgIGV4cGVjdChkZWNvZGVkLnJlY2VpcHRNZXNzYWdlKS50by5oYXZlLnByb3BlcnR5KCd0eXBlJywgMSk7XG4gICAgY29uc3QgZGVjb2RlZFRpbWVzdGFtcHMgPSAoZGVjb2RlZC5yZWNlaXB0TWVzc2FnZT8udGltZXN0YW1wID8/IFtdKS5tYXAodG9OdW1iZXIpO1xuICAgIGV4cGVjdChkZWNvZGVkVGltZXN0YW1wcykudG8uZGVlcC5lcXVhbCh0aW1lc3RhbXBzKTtcbiAgfSk7XG5cbiAgaXQoJ2NvcnJlY3QgdHRsJywgKCkgPT4ge1xuICAgIGV4cGVjdChyZWFkTWVzc2FnZS50dGwoKSkudG8uZXF1YWwoQ29uc3RhbnRzLlRUTF9ERUZBVUxULlRUTF9NQVgpO1xuICB9KTtcblxuICBpdCgnaGFzIGFuIGlkZW50aWZpZXInLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlYWRNZXNzYWdlLmlkZW50aWZpZXIpLnRvLm5vdC5lcXVhbChudWxsLCAnaWRlbnRpZmllciBjYW5ub3QgYmUgbnVsbCcpO1xuICAgIGV4cGVjdChyZWFkTWVzc2FnZS5pZGVudGlmaWVyKS50by5ub3QuZXF1YWwodW5kZWZpbmVkLCAnaWRlbnRpZmllciBjYW5ub3QgYmUgdW5kZWZpbmVkJyk7XG4gIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxrQkFBdUI7QUFDdkIsbUJBQTJCO0FBRTNCLHNCQUE4QjtBQUM5QixvQkFBeUI7QUFDekIscUJBQTBCO0FBQzFCLGdDQUFtQztBQUVuQyxTQUFTLGtCQUFrQixNQUFNO0FBQy9CLE1BQUk7QUFDSixNQUFJO0FBRUosK0JBQVcsTUFBTTtBQUNmLGlCQUFhLENBQUMsV0FBVyxTQUFTO0FBQ2xDLFVBQU0sWUFBWSxLQUFLLElBQUk7QUFDM0Isa0JBQWMsSUFBSSw2Q0FBbUIsRUFBRSxXQUFXLFdBQVcsQ0FBQztBQUFBLEVBQ2hFLENBQUM7QUFFRCxLQUFHLHdDQUF3QyxNQUFNO0FBbEJuRDtBQW1CSSxVQUFNLFlBQVksWUFBWSxnQkFBZ0I7QUFDOUMsVUFBTSxVQUFVLDhCQUFjLFFBQVEsT0FBTyxTQUFTO0FBRXRELDRCQUFPLFFBQVEsY0FBYyxFQUFFLEdBQUcsS0FBSyxTQUFTLFFBQVEsQ0FBQztBQUN6RCxVQUFNLG9CQUFxQixnQkFBUSxtQkFBUixtQkFBd0IsY0FBYSxDQUFDLEdBQUcsSUFBSSxzQkFBUTtBQUNoRiw0QkFBTyxpQkFBaUIsRUFBRSxHQUFHLEtBQUssTUFBTSxVQUFVO0FBQUEsRUFDcEQsQ0FBQztBQUVELEtBQUcsZUFBZSxNQUFNO0FBQ3RCLDRCQUFPLFlBQVksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLHlCQUFVLFlBQVksT0FBTztBQUFBLEVBQ2xFLENBQUM7QUFFRCxLQUFHLHFCQUFxQixNQUFNO0FBQzVCLDRCQUFPLFlBQVksVUFBVSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sMkJBQTJCO0FBQzdFLDRCQUFPLFlBQVksVUFBVSxFQUFFLEdBQUcsSUFBSSxNQUFNLFFBQVcsZ0NBQWdDO0FBQUEsRUFDekYsQ0FBQztBQUNILENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,22 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var import_chai = __toESM(require("chai"));
var import_mocha = require("mocha");
var import_chai_as_promised = __toESM(require("chai-as-promised"));
import_chai.default.use(import_chai_as_promised.default);
(0, import_mocha.describe)("ClosedGroupUpdates", () => {
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vdHMvdGVzdC9zZXNzaW9uL3VuaXQvcmVjZWl2aW5nL0Nsb3NlZEdyb3VwVXBkYXRlc190ZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvLyB0c2xpbnQ6ZGlzYWJsZTogbm8taW1wbGljaXQtZGVwZW5kZW5jaWVzIG1heC1mdW5jLWJvZHktbGVuZ3RoIG5vLXVudXNlZC1leHByZXNzaW9uXG5cbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0IHsgZGVzY3JpYmUgfSBmcm9tICdtb2NoYSc7XG5cbmltcG9ydCBjaGFpQXNQcm9taXNlZCBmcm9tICdjaGFpLWFzLXByb21pc2VkJztcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkIGFzIGFueSk7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWZ1bmMtYm9keS1sZW5ndGhcbmRlc2NyaWJlKCdDbG9zZWRHcm91cFVwZGF0ZXMnLCAoKSA9PiB7XG4gIC8vRklYTUUgQVVEUklDIFRPRE9cbiAgLy8gSW5pdGlhbGl6ZSBuZXcgc3R1YmJlZCBjYWNoZVxuICAvLyBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAvLyBjb25zdCBvdXJEZXZpY2UgPSBUZXN0VXRpbHMuZ2VuZXJhdGVGYWtlUHViS2V5KCk7XG4gIC8vIGNvbnN0IG91ck51bWJlciA9IG91ckRldmljZS5rZXk7XG4gIC8vIGNvbnN0IGdyb3VwSWQgPSBUZXN0VXRpbHMuZ2VuZXJhdGVGYWtlUHViS2V5KCkua2V5O1xuICAvLyBjb25zdCBtZW1iZXJzID0gVGVzdFV0aWxzLmdlbmVyYXRlRmFrZVB1YktleXMoMTApO1xuICAvLyBjb25zdCBzZW5kZXIgPSBtZW1iZXJzWzNdLmtleTtcbiAgLy8gY29uc3QgZ2V0Q29udm8gPSBzYW5kYm94LnN0dWIoQ29udmVyc2F0aW9uQ29udHJvbGxlciwgJ2dldCcpO1xuICAvLyBiZWZvcmVFYWNoKGFzeW5jICgpID0+IHtcbiAgLy8gICAvLyBVdGlscyBTdHVic1xuICAvLyAgIHNhbmRib3guc3R1YihVc2VyVXRpbHMsICdnZXRDdXJyZW50RGV2aWNlUHViS2V5JykucmVzb2x2ZXMob3VyTnVtYmVyKTtcbiAgLy8gfSk7XG4gIC8vIGFmdGVyRWFjaCgoKSA9PiB7XG4gIC8vICAgVGVzdFV0aWxzLnJlc3RvcmVTdHVicygpO1xuICAvLyAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAvLyB9KTtcbiAgLy8gZGVzY3JpYmUoJ2hhbmRsZUNsb3NlZEdyb3VwQ29udHJvbE1lc3NhZ2UnLCAoKSA9PiB7XG4gIC8vICAgZGVzY3JpYmUoJ3BlcmZvcm1JZlZhbGlkJywgKCkgPT4ge1xuICAvLyAgICAgaXQoJ2RvZXMgbm90IHBlcmZvcm0gaWYgY29udm8gZG9lcyBub3QgZXhpc3QnLCBhc3luYyAoKSA9PiB7XG4gIC8vICAgICAgIGNvbnN0IGVudmVsb3BlID0gZ2VuZXJhdGVFbnZlbG9wZVBsdXNDbG9zZWRHcm91cChncm91cElkLCBzZW5kZXIpO1xuICAvLyAgICAgICBjb25zdCBncm91cFVwZGF0ZSA9IGdlbmVyYXRlR3JvdXBVcGRhdGVOYW1lQ2hhbmdlKGdyb3VwSWQpO1xuICAvLyAgICAgICBnZXRDb252by5yZXR1cm5zKHVuZGVmaW5lZCBhcyBhbnkpO1xuICAvLyAgICAgICBhd2FpdCBoYW5kbGVDbG9zZWRHcm91cENvbnRyb2xNZXNzYWdlKGVudmVsb3BlLCBncm91cFVwZGF0ZSk7XG4gIC8vICAgICB9KTtcbiAgLy8gICB9KTtcbiAgLy8gICAvLyBkZXNjcmliZSgnaGFuZGxlQ2xvc2VkR3JvdXBOYW1lQ2hhbmdlZCcsICgpID0+IHtcbiAgLy8gICAvLyAgICAgaXQoJ2RvZXMgbm90IHRyaWdnZXIgYW4gdXBkYXRlIG9mIHRoZSBncm91cCBpZiB0aGUgbmFtZSBpcyB0aGUgc2FtZScsIGFzeW5jICgpID0+IHtcbiAgLy8gICAvLyAgICAgICAgIGNvbnN0IGVudmVsb3BlID0gZ2VuZXJhdGVFbnZlbG9wZVBsdXNDbG9zZWRHcm91cChncm91cElkLCBzZW5kZXIpO1xuICAvLyAgIC8vICAgICAgICAgY29uc3QgZ3JvdXBVcGRhdGUgPSBnZW5lcmF0ZUdyb3VwVXBkYXRlTmFtZUNoYW5nZShncm91cElkKTtcbiAgLy8gICAvLyAgICAgICAgIGF3YWl0IGhhbmRsZUNsb3NlZEdyb3VwQ29udHJvbE1lc3NhZ2UoZW52ZWxvcGUsIGdyb3VwVXBkYXRlKTtcbiAgLy8gICAvLyAgICAgfSk7XG4gIC8vICAgLy8gfSk7XG4gIC8vIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7QUFFQSxrQkFBaUI7QUFDakIsbUJBQXlCO0FBRXpCLDhCQUEyQjtBQUMzQixvQkFBSyxJQUFJLCtCQUFxQjtBQUc5QiwyQkFBUyxzQkFBc0IsTUFBTTtBQW1DckMsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,32 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var import_chai = __toESM(require("chai"));
var sinon = __toESM(require("sinon"));
var import_utils = require("../../../test-utils/utils");
var import_chai_as_promised = __toESM(require("chai-as-promised"));
import_chai.default.use(import_chai_as_promised.default);
describe("SyncUtils", () => {
const sandbox = sinon.createSandbox();
afterEach(() => {
sandbox.restore();
(0, import_utils.restoreStubs)();
});
describe("syncConfigurationIfNeeded", () => {
it("sync if last sync undefined", () => {
});
});
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vdHMvdGVzdC9zZXNzaW9uL3VuaXQvdXRpbHMvU3luY1V0aWxzX3Rlc3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vIHRzbGludDpkaXNhYmxlOiBuby1pbXBsaWNpdC1kZXBlbmRlbmNpZXNcbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgcmVzdG9yZVN0dWJzIH0gZnJvbSAnLi4vLi4vLi4vdGVzdC11dGlscy91dGlscyc7XG5cbmltcG9ydCBjaGFpQXNQcm9taXNlZCBmcm9tICdjaGFpLWFzLXByb21pc2VkJztcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkIGFzIGFueSk7XG5cbmRlc2NyaWJlKCdTeW5jVXRpbHMnLCAoKSA9PiB7XG4gIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICByZXN0b3JlU3R1YnMoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3N5bmNDb25maWd1cmF0aW9uSWZOZWVkZWQnLCAoKSA9PiB7XG4gICAgaXQoJ3N5bmMgaWYgbGFzdCBzeW5jIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIC8vIFRlc3RVdGlscy5zdHViRGF0YSgnZ2V0SXRlbUJ5SWQnKS5yZXNvbHZlcyh1bmRlZmluZWQpO1xuICAgICAgLy8gc2FuZGJveC5zdHViKENvbnZlcnNhdGlvbkNvbnRyb2xsZXIsICdnZXRDb252ZXJzYXRpb25zJykucmV0dXJucyhbXSk7XG4gICAgICAvLyBjb25zdCBnZXRDdXJyZW50Q29uZmlndXJhdGlvbk1lc3NhZ2VTcHkgPSBzYW5kYm94LnNweShNZXNzYWdlVXRpbHMsICdnZXRDdXJyZW50Q29uZmlndXJhdGlvbk1lc3NhZ2UnKTtcbiAgICAgIC8vIGF3YWl0IHN5bmNDb25maWd1cmF0aW9uSWZOZWVkZWQoKTtcbiAgICAgIC8vIGV4cGVjdChnZXRDdXJyZW50Q29uZmlndXJhdGlvbk1lc3NhZ2VTcHkuY2FsbENvdW50KS5lcXVhbCgxKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGtCQUFpQjtBQUNqQixZQUF1QjtBQUN2QixtQkFBNkI7QUFFN0IsOEJBQTJCO0FBQzNCLG9CQUFLLElBQUksK0JBQXFCO0FBRTlCLFNBQVMsYUFBYSxNQUFNO0FBQzFCLFFBQU0sVUFBVSxNQUFNLGNBQWM7QUFFcEMsWUFBVSxNQUFNO0FBQ2QsWUFBUSxRQUFRO0FBQ2hCLG1DQUFhO0FBQUEsRUFDZixDQUFDO0FBRUQsV0FBUyw2QkFBNkIsTUFBTTtBQUMxQyxPQUFHLCtCQUErQixNQUFNO0FBQUEsSUFNeEMsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNILENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,35 @@
var import_chai = require("chai");
var import_isLinkPreviewDateValid = require("../../util/isLinkPreviewDateValid");
describe("isLinkPreviewDateValid", () => {
it("returns false for non-numbers", () => {
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(null));
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(void 0));
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(Date.now().toString()));
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(new Date()));
});
it("returns false for zero", () => {
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(0));
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(-0));
});
it("returns false for NaN", () => {
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(0 / 0));
});
it("returns false for any infinite value", () => {
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(Infinity));
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(-Infinity));
});
it("returns false for timestamps more than a day from now", () => {
const twoDays = 2 * 24 * 60 * 60 * 1e3;
import_chai.assert.isFalse((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(Date.now() + twoDays));
});
it("returns true for timestamps before tomorrow", () => {
import_chai.assert.isTrue((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(Date.now()));
import_chai.assert.isTrue((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(Date.now() + 123));
import_chai.assert.isTrue((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(Date.now() - 123));
import_chai.assert.isTrue((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(new Date(1995, 3, 20).valueOf()));
import_chai.assert.isTrue((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(new Date(1970, 3, 20).valueOf()));
import_chai.assert.isTrue((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(new Date(1969, 3, 20).valueOf()));
import_chai.assert.isTrue((0, import_isLinkPreviewDateValid.isLinkPreviewDateValid)(1));
});
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC90ZXN0LWVsZWN0cm9uL2lzTGlua1ByZXZpZXdEYXRlVmFsaWRfdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnY2hhaSc7XG5cbmltcG9ydCB7IGlzTGlua1ByZXZpZXdEYXRlVmFsaWQgfSBmcm9tICcuLi8uLi91dGlsL2lzTGlua1ByZXZpZXdEYXRlVmFsaWQnO1xuXG5kZXNjcmliZSgnaXNMaW5rUHJldmlld0RhdGVWYWxpZCcsICgpID0+IHtcbiAgaXQoJ3JldHVybnMgZmFsc2UgZm9yIG5vbi1udW1iZXJzJywgKCkgPT4ge1xuICAgIGFzc2VydC5pc0ZhbHNlKGlzTGlua1ByZXZpZXdEYXRlVmFsaWQobnVsbCkpO1xuICAgIGFzc2VydC5pc0ZhbHNlKGlzTGlua1ByZXZpZXdEYXRlVmFsaWQodW5kZWZpbmVkKSk7XG4gICAgYXNzZXJ0LmlzRmFsc2UoaXNMaW5rUHJldmlld0RhdGVWYWxpZChEYXRlLm5vdygpLnRvU3RyaW5nKCkpKTtcbiAgICBhc3NlcnQuaXNGYWxzZShpc0xpbmtQcmV2aWV3RGF0ZVZhbGlkKG5ldyBEYXRlKCkpKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2UgZm9yIHplcm8nLCAoKSA9PiB7XG4gICAgYXNzZXJ0LmlzRmFsc2UoaXNMaW5rUHJldmlld0RhdGVWYWxpZCgwKSk7XG4gICAgYXNzZXJ0LmlzRmFsc2UoaXNMaW5rUHJldmlld0RhdGVWYWxpZCgtMCkpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyBmYWxzZSBmb3IgTmFOJywgKCkgPT4ge1xuICAgIGFzc2VydC5pc0ZhbHNlKGlzTGlua1ByZXZpZXdEYXRlVmFsaWQoMCAvIDApKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2UgZm9yIGFueSBpbmZpbml0ZSB2YWx1ZScsICgpID0+IHtcbiAgICBhc3NlcnQuaXNGYWxzZShpc0xpbmtQcmV2aWV3RGF0ZVZhbGlkKEluZmluaXR5KSk7XG4gICAgYXNzZXJ0LmlzRmFsc2UoaXNMaW5rUHJldmlld0RhdGVWYWxpZCgtSW5maW5pdHkpKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2UgZm9yIHRpbWVzdGFtcHMgbW9yZSB0aGFuIGEgZGF5IGZyb20gbm93JywgKCkgPT4ge1xuICAgIGNvbnN0IHR3b0RheXMgPSAyICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICBhc3NlcnQuaXNGYWxzZShpc0xpbmtQcmV2aWV3RGF0ZVZhbGlkKERhdGUubm93KCkgKyB0d29EYXlzKSk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIHRydWUgZm9yIHRpbWVzdGFtcHMgYmVmb3JlIHRvbW9ycm93JywgKCkgPT4ge1xuICAgIGFzc2VydC5pc1RydWUoaXNMaW5rUHJldmlld0RhdGVWYWxpZChEYXRlLm5vdygpKSk7XG4gICAgYXNzZXJ0LmlzVHJ1ZShpc0xpbmtQcmV2aWV3RGF0ZVZhbGlkKERhdGUubm93KCkgKyAxMjMpKTtcbiAgICBhc3NlcnQuaXNUcnVlKGlzTGlua1ByZXZpZXdEYXRlVmFsaWQoRGF0ZS5ub3coKSAtIDEyMykpO1xuICAgIGFzc2VydC5pc1RydWUoaXNMaW5rUHJldmlld0RhdGVWYWxpZChuZXcgRGF0ZSgxOTk1LCAzLCAyMCkudmFsdWVPZigpKSk7XG4gICAgYXNzZXJ0LmlzVHJ1ZShpc0xpbmtQcmV2aWV3RGF0ZVZhbGlkKG5ldyBEYXRlKDE5NzAsIDMsIDIwKS52YWx1ZU9mKCkpKTtcbiAgICBhc3NlcnQuaXNUcnVlKGlzTGlua1ByZXZpZXdEYXRlVmFsaWQobmV3IERhdGUoMTk2OSwgMywgMjApLnZhbHVlT2YoKSkpO1xuICAgIGFzc2VydC5pc1RydWUoaXNMaW5rUHJldmlld0RhdGVWYWxpZCgxKSk7XG4gIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxrQkFBdUI7QUFFdkIsb0NBQXVDO0FBRXZDLFNBQVMsMEJBQTBCLE1BQU07QUFDdkMsS0FBRyxpQ0FBaUMsTUFBTTtBQUN4Qyx1QkFBTyxRQUFRLDBEQUF1QixJQUFJLENBQUM7QUFDM0MsdUJBQU8sUUFBUSwwREFBdUIsTUFBUyxDQUFDO0FBQ2hELHVCQUFPLFFBQVEsMERBQXVCLEtBQUssSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzVELHVCQUFPLFFBQVEsMERBQXVCLElBQUksS0FBSyxDQUFDLENBQUM7QUFBQSxFQUNuRCxDQUFDO0FBRUQsS0FBRywwQkFBMEIsTUFBTTtBQUNqQyx1QkFBTyxRQUFRLDBEQUF1QixDQUFDLENBQUM7QUFDeEMsdUJBQU8sUUFBUSwwREFBdUIsRUFBRSxDQUFDO0FBQUEsRUFDM0MsQ0FBQztBQUVELEtBQUcseUJBQXlCLE1BQU07QUFDaEMsdUJBQU8sUUFBUSwwREFBdUIsSUFBSSxDQUFDLENBQUM7QUFBQSxFQUM5QyxDQUFDO0FBRUQsS0FBRyx3Q0FBd0MsTUFBTTtBQUMvQyx1QkFBTyxRQUFRLDBEQUF1QixRQUFRLENBQUM7QUFDL0MsdUJBQU8sUUFBUSwwREFBdUIsU0FBUyxDQUFDO0FBQUEsRUFDbEQsQ0FBQztBQUVELEtBQUcseURBQXlELE1BQU07QUFDaEUsVUFBTSxVQUFVLElBQUksS0FBSyxLQUFLLEtBQUs7QUFDbkMsdUJBQU8sUUFBUSwwREFBdUIsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDO0FBQUEsRUFDN0QsQ0FBQztBQUVELEtBQUcsK0NBQStDLE1BQU07QUFDdEQsdUJBQU8sT0FBTywwREFBdUIsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNoRCx1QkFBTyxPQUFPLDBEQUF1QixLQUFLLElBQUksSUFBSSxHQUFHLENBQUM7QUFDdEQsdUJBQU8sT0FBTywwREFBdUIsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDO0FBQ3RELHVCQUFPLE9BQU8sMERBQXVCLElBQUksS0FBSyxNQUFNLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3JFLHVCQUFPLE9BQU8sMERBQXVCLElBQUksS0FBSyxNQUFNLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3JFLHVCQUFPLE9BQU8sMERBQXVCLElBQUksS0FBSyxNQUFNLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3JFLHVCQUFPLE9BQU8sMERBQXVCLENBQUMsQ0FBQztBQUFBLEVBQ3pDLENBQUM7QUFDSCxDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=

34
test/test-utils/index.js Normal file
View File

@ -0,0 +1,34 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var test_utils_exports = {};
__export(test_utils_exports, {
Stubs: () => Stubs,
TestUtils: () => TestUtils
});
module.exports = __toCommonJS(test_utils_exports);
var TestUtils = __toESM(require("./utils"));
var Stubs = __toESM(require("./stubs"));
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Stubs,
TestUtils
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBUZXN0VXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBTdHVicyBmcm9tICcuL3N0dWJzJztcblxuZXhwb3J0IHsgVGVzdFV0aWxzLCBTdHVicyB9O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBMkI7QUFDM0IsWUFBdUI7IiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -0,0 +1,18 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var stubs_exports = {};
module.exports = __toCommonJS(stubs_exports);
__reExport(stubs_exports, require("./sending"), module.exports);
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3N0dWJzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBmcm9tICcuL3NlbmRpbmcnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUEsMEJBQWMsc0JBQWQ7IiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -0,0 +1,44 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var PendingMessageCacheStub_exports = {};
__export(PendingMessageCacheStub_exports, {
PendingMessageCacheStub: () => PendingMessageCacheStub
});
module.exports = __toCommonJS(PendingMessageCacheStub_exports);
var import_sending = require("../../../../session/sending");
class PendingMessageCacheStub extends import_sending.PendingMessageCache {
constructor(dbData = []) {
super();
this.dbData = dbData;
}
getCache() {
return this.cache;
}
async getFromStorage() {
return this.dbData;
}
async saveToDB() {
return;
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
PendingMessageCacheStub
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3N0dWJzL3NlbmRpbmcvUGVuZGluZ01lc3NhZ2VDYWNoZVN0dWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFBlbmRpbmdNZXNzYWdlQ2FjaGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXNzaW9uL3NlbmRpbmcnO1xuaW1wb3J0IHsgUmF3TWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Nlc3Npb24vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgUGVuZGluZ01lc3NhZ2VDYWNoZVN0dWIgZXh0ZW5kcyBQZW5kaW5nTWVzc2FnZUNhY2hlIHtcbiAgcHVibGljIGRiRGF0YTogQXJyYXk8UmF3TWVzc2FnZT47XG4gIGNvbnN0cnVjdG9yKGRiRGF0YTogQXJyYXk8UmF3TWVzc2FnZT4gPSBbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYkRhdGEgPSBkYkRhdGE7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FjaGUoKTogUmVhZG9ubHk8QXJyYXk8UmF3TWVzc2FnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRGcm9tU3RvcmFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYkRhdGE7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2F2ZVRvREIoKSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQW9DO0FBRzdCLE1BQU0sZ0NBQWdDLG1DQUFvQjtBQUFBLEVBRS9ELFlBQVksU0FBNEIsQ0FBQyxHQUFHO0FBQzFDLFVBQU07QUFDTixTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBLEVBRU8sV0FBd0M7QUFDN0MsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLFFBRWdCLGlCQUFpQjtBQUMvQixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsUUFFZ0IsV0FBVztBQUN6QjtBQUFBLEVBQ0Y7QUFDRjtBQWxCTyIsCiAgIm5hbWVzIjogW10KfQo=

View File

@ -0,0 +1,18 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var sending_exports = {};
module.exports = __toCommonJS(sending_exports);
__reExport(sending_exports, require("./PendingMessageCacheStub"), module.exports);
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3N0dWJzL3NlbmRpbmcvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGZyb20gJy4vUGVuZGluZ01lc3NhZ2VDYWNoZVN0dWInO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUEsNEJBQWMsc0NBQWQ7IiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -0,0 +1,61 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var envelope_exports = {};
__export(envelope_exports, {
generateEnvelopePlus: () => generateEnvelopePlus,
generateEnvelopePlusClosedGroup: () => generateEnvelopePlusClosedGroup
});
module.exports = __toCommonJS(envelope_exports);
var import_protobuf = require("../../../protobuf");
var import_uuid = __toESM(require("uuid"));
function generateEnvelopePlusClosedGroup(groupId, sender) {
const envelope = {
senderIdentity: sender,
receivedAt: Date.now(),
timestamp: Date.now() - 2e3,
id: (0, import_uuid.default)(),
type: import_protobuf.SignalService.Envelope.Type.CLOSED_GROUP_MESSAGE,
source: groupId,
content: new Uint8Array(),
toJSON: () => ["fake"]
};
return envelope;
}
function generateEnvelopePlus(sender) {
const envelope = {
receivedAt: Date.now(),
timestamp: Date.now() - 2e3,
id: (0, import_uuid.default)(),
type: import_protobuf.SignalService.Envelope.Type.SESSION_MESSAGE,
source: sender,
senderIdentity: sender,
content: new Uint8Array(),
toJSON: () => ["fake"]
};
return envelope;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
generateEnvelopePlus,
generateEnvelopePlusClosedGroup
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3V0aWxzL2VudmVsb3BlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBFbnZlbG9wZVBsdXMgfSBmcm9tICcuLi8uLi8uLi9yZWNlaXZlci90eXBlcyc7XG5pbXBvcnQgeyBTaWduYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvdG9idWYnO1xuXG5pbXBvcnQgdXVpZCBmcm9tICd1dWlkJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRW52ZWxvcGVQbHVzQ2xvc2VkR3JvdXAoZ3JvdXBJZDogc3RyaW5nLCBzZW5kZXI6IHN0cmluZyk6IEVudmVsb3BlUGx1cyB7XG4gIGNvbnN0IGVudmVsb3BlOiBFbnZlbG9wZVBsdXMgPSB7XG4gICAgc2VuZGVySWRlbnRpdHk6IHNlbmRlcixcbiAgICByZWNlaXZlZEF0OiBEYXRlLm5vdygpLFxuICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSAtIDIwMDAsXG4gICAgaWQ6IHV1aWQoKSxcbiAgICB0eXBlOiBTaWduYWxTZXJ2aWNlLkVudmVsb3BlLlR5cGUuQ0xPU0VEX0dST1VQX01FU1NBR0UsXG4gICAgc291cmNlOiBncm91cElkLFxuICAgIGNvbnRlbnQ6IG5ldyBVaW50OEFycmF5KCksXG4gICAgdG9KU09OOiAoKSA9PiBbJ2Zha2UnXSxcbiAgfTtcblxuICByZXR1cm4gZW52ZWxvcGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUVudmVsb3BlUGx1cyhzZW5kZXI6IHN0cmluZyk6IEVudmVsb3BlUGx1cyB7XG4gIGNvbnN0IGVudmVsb3BlOiBFbnZlbG9wZVBsdXMgPSB7XG4gICAgcmVjZWl2ZWRBdDogRGF0ZS5ub3coKSxcbiAgICB0aW1lc3RhbXA6IERhdGUubm93KCkgLSAyMDAwLFxuICAgIGlkOiB1dWlkKCksXG4gICAgdHlwZTogU2lnbmFsU2VydmljZS5FbnZlbG9wZS5UeXBlLlNFU1NJT05fTUVTU0FHRSxcbiAgICBzb3VyY2U6IHNlbmRlcixcbiAgICBzZW5kZXJJZGVudGl0eTogc2VuZGVyLFxuICAgIGNvbnRlbnQ6IG5ldyBVaW50OEFycmF5KCksXG4gICAgdG9KU09OOiAoKSA9PiBbJ2Zha2UnXSxcbiAgfTtcblxuICByZXR1cm4gZW52ZWxvcGU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQSxzQkFBOEI7QUFFOUIsa0JBQWlCO0FBRVYseUNBQXlDLFNBQWlCLFFBQThCO0FBQzdGLFFBQU0sV0FBeUI7QUFBQSxJQUM3QixnQkFBZ0I7QUFBQSxJQUNoQixZQUFZLEtBQUssSUFBSTtBQUFBLElBQ3JCLFdBQVcsS0FBSyxJQUFJLElBQUk7QUFBQSxJQUN4QixJQUFJLHlCQUFLO0FBQUEsSUFDVCxNQUFNLDhCQUFjLFNBQVMsS0FBSztBQUFBLElBQ2xDLFFBQVE7QUFBQSxJQUNSLFNBQVMsSUFBSSxXQUFXO0FBQUEsSUFDeEIsUUFBUSxNQUFNLENBQUMsTUFBTTtBQUFBLEVBQ3ZCO0FBRUEsU0FBTztBQUNUO0FBYmdCLEFBZVQsOEJBQThCLFFBQThCO0FBQ2pFLFFBQU0sV0FBeUI7QUFBQSxJQUM3QixZQUFZLEtBQUssSUFBSTtBQUFBLElBQ3JCLFdBQVcsS0FBSyxJQUFJLElBQUk7QUFBQSxJQUN4QixJQUFJLHlCQUFLO0FBQUEsSUFDVCxNQUFNLDhCQUFjLFNBQVMsS0FBSztBQUFBLElBQ2xDLFFBQVE7QUFBQSxJQUNSLGdCQUFnQjtBQUFBLElBQ2hCLFNBQVMsSUFBSSxXQUFXO0FBQUEsSUFDeEIsUUFBUSxNQUFNLENBQUMsTUFBTTtBQUFBLEVBQ3ZCO0FBRUEsU0FBTztBQUNUO0FBYmdCIiwKICAibmFtZXMiOiBbXQp9Cg==

View File

@ -0,0 +1,22 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var utils_exports = {};
module.exports = __toCommonJS(utils_exports);
__reExport(utils_exports, require("./timeout"), module.exports);
__reExport(utils_exports, require("./stubbing"), module.exports);
__reExport(utils_exports, require("./pubkey"), module.exports);
__reExport(utils_exports, require("./message"), module.exports);
__reExport(utils_exports, require("./envelope"), module.exports);
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3V0aWxzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBmcm9tICcuL3RpbWVvdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHViYmluZyc7XG5leHBvcnQgKiBmcm9tICcuL3B1YmtleSc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnZlbG9wZSc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQSwwQkFBYyxzQkFBZDtBQUNBLDBCQUFjLHVCQURkO0FBRUEsMEJBQWMscUJBRmQ7QUFHQSwwQkFBYyxzQkFIZDtBQUlBLDBCQUFjLHVCQUpkOyIsCiAgIm5hbWVzIjogW10KfQo=

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,88 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var pubkey_exports = {};
__export(pubkey_exports, {
generateFakeECKeyPair: () => generateFakeECKeyPair,
generateFakePubKey: () => generateFakePubKey,
generateFakePubKeyStr: () => generateFakePubKeyStr,
generateFakePubKeys: () => generateFakePubKeys,
generateFakeSnode: () => generateFakeSnode,
generateFakeSnodeWithEdKey: () => generateFakeSnodeWithEdKey,
generateFakeSnodes: () => generateFakeSnodes
});
module.exports = __toCommonJS(pubkey_exports);
var crypto = __toESM(require("crypto"));
var import_lodash = __toESM(require("lodash"));
var import_keypairs = require("../../../receiver/keypairs");
var import_types = require("../../../session/types");
function generateFakePubKey() {
const numBytes = import_types.PubKey.PUBKEY_LEN / 2 - 1;
const hexBuffer = crypto.randomBytes(numBytes).toString("hex");
const pubkeyString = `05${hexBuffer}`;
return new import_types.PubKey(pubkeyString);
}
function generateFakePubKeyStr() {
const numBytes = import_types.PubKey.PUBKEY_LEN / 2 - 1;
const hexBuffer = crypto.randomBytes(numBytes).toString("hex");
const pubkeyString = `05${hexBuffer}`;
return pubkeyString;
}
function generateFakeECKeyPair() {
const pubkey = generateFakePubKey().toArray();
const privKey = new Uint8Array(crypto.randomBytes(64));
return new import_keypairs.ECKeyPair(pubkey, privKey);
}
function generateFakePubKeys(amount) {
const numPubKeys = amount > 0 ? Math.floor(amount) : 0;
return new Array(numPubKeys).fill(0).map(() => generateFakePubKey());
}
function generateFakeSnode() {
return {
ip: `136.243.${Math.random() * 255}.${Math.random() * 255}`,
port: 22116,
pubkey_x25519: generateFakePubKeyStr(),
pubkey_ed25519: generateFakePubKeyStr()
};
}
function generateFakeSnodeWithEdKey(ed25519Pubkey) {
return {
ip: `136.243.${Math.random() * 255}.${Math.random() * 255}`,
port: 22116,
pubkey_x25519: generateFakePubKeyStr(),
pubkey_ed25519: ed25519Pubkey
};
}
function generateFakeSnodes(amount) {
const ar = import_lodash.default.times(amount, generateFakeSnode);
return ar;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
generateFakeECKeyPair,
generateFakePubKey,
generateFakePubKeyStr,
generateFakePubKeys,
generateFakeSnode,
generateFakeSnodeWithEdKey,
generateFakeSnodes
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3V0aWxzL3B1YmtleS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU25vZGUgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2RhdGEnO1xuaW1wb3J0IHsgRUNLZXlQYWlyIH0gZnJvbSAnLi4vLi4vLi4vcmVjZWl2ZXIva2V5cGFpcnMnO1xuaW1wb3J0IHsgUHViS2V5IH0gZnJvbSAnLi4vLi4vLi4vc2Vzc2lvbi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUZha2VQdWJLZXkoKTogUHViS2V5IHtcbiAgLy8gR2VuZXJhdGVzIGEgbW9jayBwdWJrZXkgZm9yIHRlc3RpbmdcbiAgY29uc3QgbnVtQnl0ZXMgPSBQdWJLZXkuUFVCS0VZX0xFTiAvIDIgLSAxO1xuICBjb25zdCBoZXhCdWZmZXIgPSBjcnlwdG8ucmFuZG9tQnl0ZXMobnVtQnl0ZXMpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3QgcHVia2V5U3RyaW5nID0gYDA1JHtoZXhCdWZmZXJ9YDtcblxuICByZXR1cm4gbmV3IFB1YktleShwdWJrZXlTdHJpbmcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGYWtlUHViS2V5U3RyKCk6IHN0cmluZyB7XG4gIC8vIEdlbmVyYXRlcyBhIG1vY2sgcHVia2V5IGZvciB0ZXN0aW5nXG4gIGNvbnN0IG51bUJ5dGVzID0gUHViS2V5LlBVQktFWV9MRU4gLyAyIC0gMTtcbiAgY29uc3QgaGV4QnVmZmVyID0gY3J5cHRvLnJhbmRvbUJ5dGVzKG51bUJ5dGVzKS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IHB1YmtleVN0cmluZyA9IGAwNSR7aGV4QnVmZmVyfWA7XG5cbiAgcmV0dXJuIHB1YmtleVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRmFrZUVDS2V5UGFpcigpOiBFQ0tleVBhaXIge1xuICBjb25zdCBwdWJrZXkgPSBnZW5lcmF0ZUZha2VQdWJLZXkoKS50b0FycmF5KCk7XG4gIGNvbnN0IHByaXZLZXkgPSBuZXcgVWludDhBcnJheShjcnlwdG8ucmFuZG9tQnl0ZXMoNjQpKTtcbiAgcmV0dXJuIG5ldyBFQ0tleVBhaXIocHVia2V5LCBwcml2S2V5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRmFrZVB1YktleXMoYW1vdW50OiBudW1iZXIpOiBBcnJheTxQdWJLZXk+IHtcbiAgY29uc3QgbnVtUHViS2V5cyA9IGFtb3VudCA+IDAgPyBNYXRoLmZsb29yKGFtb3VudCkgOiAwO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tdW5uZWNlc3NhcnktY2FsbGJhY2std3JhcHBlclxuICByZXR1cm4gbmV3IEFycmF5KG51bVB1YktleXMpLmZpbGwoMCkubWFwKCgpID0+IGdlbmVyYXRlRmFrZVB1YktleSgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRmFrZVNub2RlKCk6IFNub2RlIHtcbiAgcmV0dXJuIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZTogaW5zZWN1cmUtcmFuZG9tXG4gICAgaXA6IGAxMzYuMjQzLiR7TWF0aC5yYW5kb20oKSAqIDI1NX0uJHtNYXRoLnJhbmRvbSgpICogMjU1fWAsXG4gICAgcG9ydDogMjIxMTYsXG4gICAgcHVia2V5X3gyNTUxOTogZ2VuZXJhdGVGYWtlUHViS2V5U3RyKCksXG4gICAgcHVia2V5X2VkMjU1MTk6IGdlbmVyYXRlRmFrZVB1YktleVN0cigpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGYWtlU25vZGVXaXRoRWRLZXkoZWQyNTUxOVB1YmtleTogc3RyaW5nKTogU25vZGUge1xuICByZXR1cm4ge1xuICAgIGlwOiBgMTM2LjI0My4ke01hdGgucmFuZG9tKCkgKiAyNTV9LiR7TWF0aC5yYW5kb20oKSAqIDI1NX1gLFxuICAgIHBvcnQ6IDIyMTE2LFxuICAgIHB1YmtleV94MjU1MTk6IGdlbmVyYXRlRmFrZVB1YktleVN0cigpLFxuICAgIHB1YmtleV9lZDI1NTE5OiBlZDI1NTE5UHVia2V5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGYWtlU25vZGVzKGFtb3VudDogbnVtYmVyKTogQXJyYXk8U25vZGU+IHtcbiAgY29uc3QgYXI6IEFycmF5PFNub2RlPiA9IF8udGltZXMoYW1vdW50LCBnZW5lcmF0ZUZha2VTbm9kZSk7XG4gIHJldHVybiBhcjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUF3QjtBQUN4QixvQkFBYztBQUVkLHNCQUEwQjtBQUMxQixtQkFBdUI7QUFFaEIsOEJBQXNDO0FBRTNDLFFBQU0sV0FBVyxvQkFBTyxhQUFhLElBQUk7QUFDekMsUUFBTSxZQUFZLE9BQU8sWUFBWSxRQUFRLEVBQUUsU0FBUyxLQUFLO0FBQzdELFFBQU0sZUFBZSxLQUFLO0FBRTFCLFNBQU8sSUFBSSxvQkFBTyxZQUFZO0FBQ2hDO0FBUGdCLEFBU1QsaUNBQXlDO0FBRTlDLFFBQU0sV0FBVyxvQkFBTyxhQUFhLElBQUk7QUFDekMsUUFBTSxZQUFZLE9BQU8sWUFBWSxRQUFRLEVBQUUsU0FBUyxLQUFLO0FBQzdELFFBQU0sZUFBZSxLQUFLO0FBRTFCLFNBQU87QUFDVDtBQVBnQixBQVNULGlDQUE0QztBQUNqRCxRQUFNLFNBQVMsbUJBQW1CLEVBQUUsUUFBUTtBQUM1QyxRQUFNLFVBQVUsSUFBSSxXQUFXLE9BQU8sWUFBWSxFQUFFLENBQUM7QUFDckQsU0FBTyxJQUFJLDBCQUFVLFFBQVEsT0FBTztBQUN0QztBQUpnQixBQU1ULDZCQUE2QixRQUErQjtBQUNqRSxRQUFNLGFBQWEsU0FBUyxJQUFJLEtBQUssTUFBTSxNQUFNLElBQUk7QUFHckQsU0FBTyxJQUFJLE1BQU0sVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUNyRTtBQUxnQixBQU9ULDZCQUFvQztBQUN6QyxTQUFPO0FBQUEsSUFFTCxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSTtBQUFBLElBQ3RELE1BQU07QUFBQSxJQUNOLGVBQWUsc0JBQXNCO0FBQUEsSUFDckMsZ0JBQWdCLHNCQUFzQjtBQUFBLEVBQ3hDO0FBQ0Y7QUFSZ0IsQUFVVCxvQ0FBb0MsZUFBOEI7QUFDdkUsU0FBTztBQUFBLElBQ0wsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUk7QUFBQSxJQUN0RCxNQUFNO0FBQUEsSUFDTixlQUFlLHNCQUFzQjtBQUFBLElBQ3JDLGdCQUFnQjtBQUFBLEVBQ2xCO0FBQ0Y7QUFQZ0IsQUFTVCw0QkFBNEIsUUFBOEI7QUFDL0QsUUFBTSxLQUFtQixzQkFBRSxNQUFNLFFBQVEsaUJBQWlCO0FBQzFELFNBQU87QUFDVDtBQUhnQiIsCiAgIm5hbWVzIjogW10KfQo=

View File

@ -0,0 +1,71 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var stubbing_exports = {};
__export(stubbing_exports, {
restoreStubs: () => restoreStubs,
stubData: () => stubData,
stubWindow: () => stubWindow,
stubWindowLog: () => stubWindowLog
});
module.exports = __toCommonJS(stubbing_exports);
var sinon = __toESM(require("sinon"));
const globalAny = global;
const sandbox = sinon.createSandbox();
const Data = require("../../../../ts/data/data");
function stubData(fn) {
return sandbox.stub(Data, fn);
}
function stubWindow(fn, value) {
if (typeof globalAny.window === "undefined") {
globalAny.window = {};
}
const set = /* @__PURE__ */ __name((newValue) => {
globalAny.window[fn] = newValue;
}, "set");
const get = /* @__PURE__ */ __name(() => {
return globalAny.window[fn];
}, "get");
globalAny.window[fn] = value;
return {
get,
set
};
}
function restoreStubs() {
globalAny.window = void 0;
sandbox.restore();
}
const stubWindowLog = /* @__PURE__ */ __name(() => {
stubWindow("log", {
info: (args) => console.info(args),
warn: (args) => console.warn(args),
error: (args) => console.error(args)
});
}, "stubWindowLog");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
restoreStubs,
stubData,
stubWindow,
stubWindowLog
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3V0aWxzL3N0dWJiaW5nLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgKiBhcyBEYXRhU2hhcGUgZnJvbSAnLi4vLi4vLi4vLi4vdHMvZGF0YS9kYXRhJztcblxuY29uc3QgZ2xvYmFsQW55OiBhbnkgPSBnbG9iYWw7XG5jb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4vLyBXZSBoYXZlIHRvIGRvIHRoaXMgaW4gYSB3ZWlyZCB3YXkgYmVjYXVzZSBEYXRhIHVzZXMgbW9kdWxlLmV4cG9ydHNcbi8vICB3aGljaCBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIHNpbm9uIG9yIEltcG9ydE1vY2tcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tcmVxdWlyZS1pbXBvcnRzIG5vLXZhci1yZXF1aXJlc1xuY29uc3QgRGF0YSA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL3RzL2RhdGEvZGF0YScpO1xudHlwZSBEYXRhRnVuY3Rpb24gPSB0eXBlb2YgRGF0YVNoYXBlO1xuXG4vKipcbiAqIFN0dWIgYSBmdW5jdGlvbiBpbnNpZGUgRGF0YS5cbiAqXG4gKiBOb3RlOiBUaGlzIHVzZXMgYSBjdXN0b20gc2FuZGJveC5cbiAqIFBsZWFzZSBjYWxsIGByZXN0b3JlU3R1YnMoKWAgb3IgYHN0dWIucmVzdG9yZSgpYCB0byByZXN0b3JlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHViRGF0YTxLIGV4dGVuZHMga2V5b2YgRGF0YUZ1bmN0aW9uPihmbjogSyk6IHNpbm9uLlNpbm9uU3R1YiB7XG4gIHJldHVybiBzYW5kYm94LnN0dWIoRGF0YSwgZm4pO1xufVxuXG50eXBlIFdpbmRvd1ZhbHVlPEsgZXh0ZW5kcyBrZXlvZiBXaW5kb3c+ID0gUGFydGlhbDxXaW5kb3dbS10+IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFN0dWIgYSB3aW5kb3cgb2JqZWN0LlxuICpcbiAqIE5vdGU6IFRoaXMgdXNlcyBhIGN1c3RvbSBzYW5kYm94LlxuICogUGxlYXNlIGNhbGwgYHJlc3RvcmVTdHVicygpYCBvciBgc3R1Yi5yZXN0b3JlKClgIHRvIHJlc3RvcmUgb3JpZ2luYWwgZnVuY3Rpb25hbGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0dWJXaW5kb3c8SyBleHRlbmRzIGtleW9mIFdpbmRvdz4oZm46IEssIHZhbHVlOiBXaW5kb3dWYWx1ZTxLPikge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXR5cGVvZi11bmRlZmluZWRcbiAgaWYgKHR5cGVvZiBnbG9iYWxBbnkud2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIGdsb2JhbEFueS53aW5kb3cgPSB7fTtcbiAgfVxuXG4gIGNvbnN0IHNldCA9IChuZXdWYWx1ZTogV2luZG93VmFsdWU8Sz4pID0+IHtcbiAgICBnbG9iYWxBbnkud2luZG93W2ZuXSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGdldCA9ICgpID0+IHtcbiAgICByZXR1cm4gZ2xvYmFsQW55LndpbmRvd1tmbl0gYXMgV2luZG93VmFsdWU8Sz47XG4gIH07XG5cbiAgZ2xvYmFsQW55LndpbmRvd1tmbl0gPSB2YWx1ZTtcblxuICByZXR1cm4ge1xuICAgIGdldCxcbiAgICBzZXQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlU3R1YnMoKSB7XG4gIGdsb2JhbEFueS53aW5kb3cgPSB1bmRlZmluZWQ7XG4gIHNhbmRib3gucmVzdG9yZSgpO1xufVxuXG5leHBvcnQgY29uc3Qgc3R1YldpbmRvd0xvZyA9ICgpID0+IHtcbiAgc3R1YldpbmRvdygnbG9nJywge1xuICAgIC8vIHRzbGludDpkaXNhYmxlOiBuby12b2lkLWV4cHJlc3Npb25cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZTogbm8tY29uc29sZVxuICAgIGluZm86IChhcmdzOiBhbnkpID0+IGNvbnNvbGUuaW5mbyhhcmdzKSxcbiAgICB3YXJuOiAoYXJnczogYW55KSA9PiBjb25zb2xlLndhcm4oYXJncyksXG4gICAgZXJyb3I6IChhcmdzOiBhbnkpID0+IGNvbnNvbGUuZXJyb3IoYXJncyksXG4gIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUF1QjtBQUd2QixNQUFNLFlBQWlCO0FBQ3ZCLE1BQU0sVUFBVSxNQUFNLGNBQWM7QUFLcEMsTUFBTSxPQUFPLFFBQVEsMEJBQTBCO0FBU3hDLGtCQUFnRCxJQUF3QjtBQUM3RSxTQUFPLFFBQVEsS0FBSyxNQUFNLEVBQUU7QUFDOUI7QUFGZ0IsQUFZVCxvQkFBNEMsSUFBTyxPQUF1QjtBQUUvRSxNQUFJLE9BQU8sVUFBVSxXQUFXLGFBQWE7QUFDM0MsY0FBVSxTQUFTLENBQUM7QUFBQSxFQUN0QjtBQUVBLFFBQU0sTUFBTSx3QkFBQyxhQUE2QjtBQUN4QyxjQUFVLE9BQU8sTUFBTTtBQUFBLEVBQ3pCLEdBRlk7QUFJWixRQUFNLE1BQU0sNkJBQU07QUFDaEIsV0FBTyxVQUFVLE9BQU87QUFBQSxFQUMxQixHQUZZO0FBSVosWUFBVSxPQUFPLE1BQU07QUFFdkIsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGO0FBcEJnQixBQXNCVCx3QkFBd0I7QUFDN0IsWUFBVSxTQUFTO0FBQ25CLFVBQVEsUUFBUTtBQUNsQjtBQUhnQixBQUtULE1BQU0sZ0JBQWdCLDZCQUFNO0FBQ2pDLGFBQVcsT0FBTztBQUFBLElBR2hCLE1BQU0sQ0FBQyxTQUFjLFFBQVEsS0FBSyxJQUFJO0FBQUEsSUFDdEMsTUFBTSxDQUFDLFNBQWMsUUFBUSxLQUFLLElBQUk7QUFBQSxJQUN0QyxPQUFPLENBQUMsU0FBYyxRQUFRLE1BQU0sSUFBSTtBQUFBLEVBQzFDLENBQUM7QUFDSCxHQVI2QjsiLAogICJuYW1lcyI6IFtdCn0K

View File

@ -0,0 +1,31 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var timeout_exports = {};
__export(timeout_exports, {
timeout: () => timeout
});
module.exports = __toCommonJS(timeout_exports);
async function timeout(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
timeout
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vdHMvdGVzdC90ZXN0LXV0aWxzL3V0aWxzL3RpbWVvdXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCBhc3luYyBmdW5jdGlvbiB0aW1lb3V0KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXN0cmluZy1iYXNlZC1zZXQtdGltZW91dFxuICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQThCLElBQTJCO0FBRXZELFNBQU8sSUFBSSxRQUFRLGFBQVcsV0FBVyxTQUFTLEVBQUUsQ0FBQztBQUN2RDtBQUhzQiIsCiAgIm5hbWVzIjogW10KfQo=

File diff suppressed because one or more lines are too long

173
test/types/Settings_test.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -145,7 +145,7 @@ const SessionSeedModalInner = (props: ModalInnerProps) => {
const dispatch = useDispatch();
useEffect(() => {
setTimeout(() => ($('#seed-input-password') as any).focus(), 100);
setTimeout(() => (jQuery('#seed-input-password') as any).focus(), 100);
void checkHasPassword();
void getRecoveryPhrase();
}, []);

View File

@ -518,7 +518,7 @@ export const NotificationForConvoMenuItem = (): JSX.Element | null => {
};
export function isRtlBody(): boolean {
return ($('body') as any).hasClass('rtl');
return (jQuery('body') as any).hasClass('rtl');
}
export const BlockMenuItem = (): JSX.Element | null => {

View File

@ -1,4 +1,4 @@
import React, { useEffect } from 'react';
import React from 'react';
import { AccentText } from './AccentText';
import { RegistrationStages } from './RegistrationStages';
@ -9,7 +9,7 @@ import { Flex } from '../basic/Flex';
import { setSignInByLinking } from '../../util/storage';
export const SessionRegistrationView = () => {
useEffect(() => {
React.useEffect(() => {
void setSignInByLinking(false);
}, []);
return (

View File

@ -110,7 +110,7 @@ export class SessionSettingsView extends React.Component<SettingsViewProps, Stat
const callMediaSetting = getCallMediaPermissionsSettings();
this.setState({ mediaSetting, callMediaSetting });
setTimeout(() => ($('#password-lock-input') as any).focus(), 100);
setTimeout(() => (jQuery('#password-lock-input') as any).focus(), 100);
}
public componentWillUnmount() {
@ -236,7 +236,7 @@ export class SessionSettingsView extends React.Component<SettingsViewProps, Stat
}
private async onKeyUp(event: any) {
const lockPasswordFocussed = ($('#password-lock-input') as any).is(':focus');
const lockPasswordFocussed = (jQuery('#password-lock-input') as any).is(':focus');
if (event.key === 'Enter' && lockPasswordFocussed) {
await this.validatePasswordLock();

View File

@ -1 +1,10 @@
export const channels = {} as any;
export const channels = {} as Record<string, any>;
// export const addChannel = (id: string, action: any) => {
// (window as any).channels = (window as any).channels || {};
// (window as any).channels[id] = action;
// };
// export const getChannel = (id: string): ((...args: any) => Promise<any>) => {
// return (window as any).channels[id];
// };

67
ts/data/channelsItem.ts Normal file
View File

@ -0,0 +1,67 @@
import _ from 'lodash';
import { StorageItem } from '../node/storage_item';
import { fromArrayBufferToBase64, fromBase64ToArrayBuffer } from '../session/utils/String';
import { channels } from './channels';
function keysToArrayBuffer(keys: any, data: any) {
const updated = _.cloneDeep(data);
// tslint:disable: one-variable-per-declaration
for (let i = 0, max = keys.length; i < max; i += 1) {
const key = keys[i];
const value = _.get(data, key);
if (value) {
_.set(updated, key, fromBase64ToArrayBuffer(value));
}
}
return updated;
}
function keysFromArrayBuffer(keys: any, data: any) {
const updated = _.cloneDeep(data);
for (let i = 0, max = keys.length; i < max; i += 1) {
const key = keys[i];
const value = _.get(data, key);
if (value) {
_.set(updated, key, fromArrayBufferToBase64(value));
}
}
return updated;
}
const ITEM_KEYS: Object = {
identityKey: ['value.pubKey', 'value.privKey'],
profileKey: ['value'],
};
export async function createOrUpdateItem(data: StorageItem): Promise<void> {
const { id } = data;
if (!id) {
throw new Error('createOrUpdateItem: Provided data did not have a truthy id');
}
const keys = (ITEM_KEYS as any)[id];
const updated = Array.isArray(keys) ? keysFromArrayBuffer(keys, data) : data;
await channels.createOrUpdateItem(updated);
}
export async function getItemById(id: string): Promise<StorageItem | undefined> {
const keys = (ITEM_KEYS as any)[id];
const data = await channels.getItemById(id);
return Array.isArray(keys) ? keysToArrayBuffer(keys, data) : data;
}
export async function getAllItems(): Promise<Array<StorageItem>> {
const items = await channels.getAllItems();
return _.map(items, item => {
const { id } = item;
const keys = (ITEM_KEYS as any)[id];
return Array.isArray(keys) ? keysToArrayBuffer(keys, item) : item;
});
}
export async function removeItemById(id: string): Promise<void> {
await channels.removeItemById(id);
}

View File

@ -1,5 +1,3 @@
import { ipcRenderer } from 'electron';
// tslint:disable: no-require-imports no-var-requires one-variable-per-declaration no-void-expression
// tslint:disable: function-name
@ -12,32 +10,21 @@ import {
} from '../models/conversation';
import { MessageCollection, MessageModel } from '../models/message';
import { MessageAttributes, MessageDirection } from '../models/messageType';
import { StorageItem } from '../node/storage_item';
import { HexKeyPair } from '../receiver/keypairs';
import { getConversationController } from '../session/conversations';
import { getSodium } from '../session/crypto';
import { PubKey } from '../session/types';
import { fromArrayBufferToBase64, fromBase64ToArrayBuffer } from '../session/utils/String';
import { ReduxConversationType } from '../state/ducks/conversations';
import { ExpirationTimerOptions } from '../util/expiringMessages';
import { Storage } from '../util/storage';
import { channels } from './channels';
import { channelsToMake as channelstoMakeOpenGroupV2 } from './opengroups';
import { createOrUpdateItem, getItemById } from './channelsItem';
import * as dataInit from './dataInit';
const DATABASE_UPDATE_TIMEOUT = 2 * 60 * 1000; // two minutes
const SQL_CHANNEL_KEY = 'sql-channel';
const ERASE_SQL_KEY = 'erase-sql-key';
const ERASE_ATTACHMENTS_KEY = 'erase-attachments';
const CLEANUP_ORPHANED_ATTACHMENTS_KEY = 'cleanup-orphaned-attachments';
export const _jobs = Object.create(null);
const _DEBUG = false;
let _jobCounter = 0;
let _shuttingDown = false;
let _shutdownCallback: any = null;
let _shutdownPromise: any = null;
export type IdentityKey = {
id: string;
publicKey: ArrayBuffer;
@ -70,141 +57,6 @@ export const hasSyncedInitialConfigurationItem = 'hasSyncedInitialConfigurationI
export const lastAvatarUploadTimestamp = 'lastAvatarUploadTimestamp';
export const hasLinkPreviewPopupBeenDisplayed = 'hasLinkPreviewPopupBeenDisplayed';
const channelsToMake = {
shutdown,
close,
removeDB,
getPasswordHash,
getGuardNodes,
updateGuardNodes,
createOrUpdateItem,
getItemById,
getAllItems,
removeItemById,
getSwarmNodesForPubkey,
updateSwarmNodesForPubkey,
saveConversation,
getConversationById,
updateConversation,
removeConversation,
getAllConversations,
getAllOpenGroupV1Conversations,
getPubkeysInPublicConversation,
getAllGroupsInvolvingId,
searchConversations,
searchMessages,
searchMessagesInConversation,
saveMessage,
cleanSeenMessages,
cleanLastHashes,
updateLastHash,
saveSeenMessageHashes,
saveMessages,
removeMessage,
_removeMessages,
getUnreadByConversation,
getUnreadCountByConversation,
getMessageCountByType,
removeAllMessagesInConversation,
getMessageCount,
getMessageBySenderAndSentAt,
getMessageBySenderAndServerTimestamp,
getMessageBySenderAndTimestamp,
getMessageIdsFromServerIds,
getMessageById,
getMessagesBySentAt,
getExpiredMessages,
getOutgoingWithoutExpiresAt,
getNextExpiringMessage,
getMessagesByConversation,
getLastMessagesByConversation,
getOldestMessageInConversation,
getFirstUnreadMessageIdInConversation,
getFirstUnreadMessageWithMention,
hasConversationOutgoingMessage,
getSeenMessagesByHashList,
getLastHashBySnode,
trimMessages,
getUnprocessedCount,
getAllUnprocessed,
getUnprocessedById,
saveUnprocessed,
updateUnprocessedAttempts,
updateUnprocessedWithData,
removeUnprocessed,
removeAllUnprocessed,
getNextAttachmentDownloadJobs,
saveAttachmentDownloadJob,
resetAttachmentDownloadPending,
setAttachmentDownloadJobPending,
removeAttachmentDownloadJob,
removeAllAttachmentDownloadJobs,
removeAll,
removeAllConversations,
removeOtherData,
cleanupOrphanedAttachments,
// Returning plain JSON
getMessagesWithVisualMediaAttachments,
getMessagesWithFileAttachments,
getAllEncryptionKeyPairsForGroup,
getLatestClosedGroupEncryptionKeyPair,
addClosedGroupEncryptionKeyPair,
removeAllClosedGroupEncryptionKeyPairs,
removeOneOpenGroupV1Message,
// dev performance testing
fillWithTestData,
// open group v2
...channelstoMakeOpenGroupV2,
};
export function init() {
// We listen to a lot of events on ipcRenderer, often on the same channel. This prevents
// any warnings that might be sent to the console in that case.
ipcRenderer.setMaxListeners(0);
_.forEach(channelsToMake, fn => {
if (_.isFunction(fn)) {
makeChannel(fn.name);
}
});
ipcRenderer.on(`${SQL_CHANNEL_KEY}-done`, (_event, jobId, errorForDisplay, result) => {
const job = _getJob(jobId);
if (!job) {
throw new Error(
`Received SQL channel reply to job ${jobId}, but did not have it in our registry!`
);
}
const { resolve, reject, fnName } = job;
if (errorForDisplay) {
return reject(
new Error(`Error received from SQL channel job ${jobId} (${fnName}): ${errorForDisplay}`)
);
}
return resolve(result);
});
}
/**
* When IPC arguments are prepared for the cross-process send, they are JSON.stringified.
* We can't send ArrayBuffers or BigNumbers (what we get from proto library for dates).
@ -250,161 +102,10 @@ function _cleanData(data: any): any {
return data;
}
async function _shutdown() {
if (_shutdownPromise) {
return _shutdownPromise;
}
_shuttingDown = true;
const jobKeys = Object.keys(_jobs);
window?.log?.info(`data.shutdown: starting process. ${jobKeys.length} jobs outstanding`);
// No outstanding jobs, return immediately
if (jobKeys.length === 0) {
return null;
}
// Outstanding jobs; we need to wait until the last one is done
_shutdownPromise = new Promise((resolve, reject) => {
_shutdownCallback = (error: any) => {
window?.log?.info('data.shutdown: process complete');
if (error) {
return reject(error);
}
return resolve(undefined);
};
});
return _shutdownPromise;
}
function _makeJob(fnName: string) {
if (_shuttingDown && fnName !== 'close') {
throw new Error(`Rejecting SQL channel job (${fnName}); application is shutting down`);
}
_jobCounter += 1;
const id = _jobCounter;
if (_DEBUG) {
window?.log?.debug(`SQL channel job ${id} (${fnName}) started`);
}
_jobs[id] = {
fnName,
start: Date.now(),
};
return id;
}
function _updateJob(id: number, data: any) {
const { resolve, reject } = data;
const { fnName, start } = _jobs[id];
_jobs[id] = {
..._jobs[id],
...data,
resolve: (value: any) => {
_removeJob(id);
if (_DEBUG) {
const end = Date.now();
const delta = end - start;
if (delta > 10) {
window?.log?.debug(`SQL channel job ${id} (${fnName}) succeeded in ${end - start}ms`);
}
}
return resolve(value);
},
reject: (error: any) => {
_removeJob(id);
const end = Date.now();
window?.log?.warn(`SQL channel job ${id} (${fnName}) failed in ${end - start}ms`);
return reject(error);
},
};
}
function _removeJob(id: number) {
if (_DEBUG) {
_jobs[id].complete = true;
return;
}
if (_jobs[id].timer) {
global.clearTimeout(_jobs[id].timer);
_jobs[id].timer = null;
}
// tslint:disable-next-line: no-dynamic-delete
delete _jobs[id];
if (_shutdownCallback) {
const keys = Object.keys(_jobs);
if (keys.length === 0) {
_shutdownCallback();
}
}
}
function _getJob(id: number) {
return _jobs[id];
}
function makeChannel(fnName: string) {
channels[fnName] = async (...args: any) => {
const jobId = _makeJob(fnName);
return new Promise((resolve, reject) => {
ipcRenderer.send(SQL_CHANNEL_KEY, jobId, fnName, ...args);
_updateJob(jobId, {
resolve,
reject,
args: _DEBUG ? args : null,
});
_jobs[jobId].timer = setTimeout(
() => reject(new Error(`SQL channel job ${jobId} (${fnName}) timed out`)),
DATABASE_UPDATE_TIMEOUT
);
});
};
}
function keysToArrayBuffer(keys: any, data: any) {
const updated = _.cloneDeep(data);
for (let i = 0, max = keys.length; i < max; i += 1) {
const key = keys[i];
const value = _.get(data, key);
if (value) {
_.set(updated, key, fromBase64ToArrayBuffer(value));
}
}
return updated;
}
function keysFromArrayBuffer(keys: any, data: any) {
const updated = _.cloneDeep(data);
for (let i = 0, max = keys.length; i < max; i += 1) {
const key = keys[i];
const value = _.get(data, key);
if (value) {
_.set(updated, key, fromArrayBufferToBase64(value));
}
}
return updated;
}
// Basic
export async function shutdown(): Promise<void> {
// Stop accepting new SQL jobs, flush outstanding queue
await _shutdown();
await dataInit._shutdown();
await close();
}
// Note: will need to restart the app after calling this, to set up afresh
@ -431,30 +132,6 @@ export async function updateGuardNodes(nodes: Array<string>): Promise<void> {
return channels.updateGuardNodes(nodes);
}
// Items
const ITEM_KEYS: Object = {
identityKey: ['value.pubKey', 'value.privKey'],
profileKey: ['value'],
};
export async function createOrUpdateItem(data: StorageItem): Promise<void> {
const { id } = data;
if (!id) {
throw new Error('createOrUpdateItem: Provided data did not have a truthy id');
}
const keys = (ITEM_KEYS as any)[id];
const updated = Array.isArray(keys) ? keysFromArrayBuffer(keys, data) : data;
await channels.createOrUpdateItem(updated);
}
export async function getItemById(id: string): Promise<StorageItem | undefined> {
const keys = (ITEM_KEYS as any)[id];
const data = await channels.getItemById(id);
return Array.isArray(keys) ? keysToArrayBuffer(keys, data) : data;
}
export async function generateAttachmentKeyIfEmpty() {
const existingKey = await getItemById('local_attachment_encrypted_key');
if (!existingKey) {
@ -469,18 +146,6 @@ export async function generateAttachmentKeyIfEmpty() {
}
}
export async function getAllItems(): Promise<Array<StorageItem>> {
const items = await channels.getAllItems();
return _.map(items, item => {
const { id } = item;
const keys = (ITEM_KEYS as any)[id];
return Array.isArray(keys) ? keysToArrayBuffer(keys, item) : item;
});
}
export async function removeItemById(id: string): Promise<void> {
await channels.removeItemById(id);
}
// Swarm nodes
export async function getSwarmNodesForPubkey(pubkey: string): Promise<Array<string>> {
return channels.getSwarmNodesForPubkey(pubkey);
@ -997,30 +662,15 @@ export async function removeAllConversations(): Promise<void> {
}
export async function cleanupOrphanedAttachments(): Promise<void> {
await callChannel(CLEANUP_ORPHANED_ATTACHMENTS_KEY);
await dataInit.callChannel(CLEANUP_ORPHANED_ATTACHMENTS_KEY);
}
// Note: will need to restart the app after calling this, to set up afresh
export async function removeOtherData(): Promise<void> {
await Promise.all([callChannel(ERASE_SQL_KEY), callChannel(ERASE_ATTACHMENTS_KEY)]);
}
async function callChannel(name: string): Promise<any> {
return new Promise((resolve, reject) => {
ipcRenderer.send(name);
ipcRenderer.once(`${name}-done`, (_event, error) => {
if (error) {
return reject(error);
}
return resolve(undefined);
});
setTimeout(
() => reject(new Error(`callChannel call to ${name} timed out`)),
DATABASE_UPDATE_TIMEOUT
);
});
await Promise.all([
dataInit.callChannel(ERASE_SQL_KEY),
dataInit.callChannel(ERASE_ATTACHMENTS_KEY),
]);
}
// Functions below here return plain JSON instead of Backbone Models

279
ts/data/dataInit.ts Normal file
View File

@ -0,0 +1,279 @@
import { ipcRenderer } from 'electron';
import _ from 'lodash';
import { channels } from './channels';
const channelsToMakeForOpengroupV2 = [
'getAllV2OpenGroupRooms',
'getV2OpenGroupRoom',
'getV2OpenGroupRoomByRoomId',
'saveV2OpenGroupRoom',
'removeV2OpenGroupRoom',
'getAllOpenGroupV2Conversations',
];
const channelsToMake = new Set([
'shutdown',
'close',
'removeDB',
'getPasswordHash',
'getGuardNodes',
'updateGuardNodes',
'createOrUpdateItem',
'getItemById',
'getAllItems',
'removeItemById',
'getSwarmNodesForPubkey',
'updateSwarmNodesForPubkey',
'saveConversation',
'getConversationById',
'updateConversation',
'removeConversation',
'getAllConversations',
'getAllOpenGroupV1Conversations',
'getPubkeysInPublicConversation',
'getAllGroupsInvolvingId',
'searchConversations',
'searchMessages',
'searchMessagesInConversation',
'saveMessage',
'cleanSeenMessages',
'cleanLastHashes',
'updateLastHash',
'saveSeenMessageHashes',
'saveMessages',
'removeMessage',
'_removeMessages',
'getUnreadByConversation',
'getUnreadCountByConversation',
'getMessageCountByType',
'removeAllMessagesInConversation',
'getMessageCount',
'getMessageBySenderAndSentAt',
'getMessageBySenderAndServerTimestamp',
'getMessageBySenderAndTimestamp',
'getMessageIdsFromServerIds',
'getMessageById',
'getMessagesBySentAt',
'getExpiredMessages',
'getOutgoingWithoutExpiresAt',
'getNextExpiringMessage',
'getMessagesByConversation',
'getLastMessagesByConversation',
'getOldestMessageInConversation',
'getFirstUnreadMessageIdInConversation',
'getFirstUnreadMessageWithMention',
'hasConversationOutgoingMessage',
'getSeenMessagesByHashList',
'getLastHashBySnode',
'trimMessages',
'getUnprocessedCount',
'getAllUnprocessed',
'getUnprocessedById',
'saveUnprocessed',
'updateUnprocessedAttempts',
'updateUnprocessedWithData',
'removeUnprocessed',
'removeAllUnprocessed',
'getNextAttachmentDownloadJobs',
'saveAttachmentDownloadJob',
'resetAttachmentDownloadPending',
'setAttachmentDownloadJobPending',
'removeAttachmentDownloadJob',
'removeAllAttachmentDownloadJobs',
'removeAll',
'removeAllConversations',
'removeOtherData',
'cleanupOrphanedAttachments',
'getMessagesWithVisualMediaAttachments',
'getMessagesWithFileAttachments',
'getAllEncryptionKeyPairsForGroup',
'getLatestClosedGroupEncryptionKeyPair',
'addClosedGroupEncryptionKeyPair',
'removeAllClosedGroupEncryptionKeyPairs',
'removeOneOpenGroupV1Message',
'fillWithTestData',
...channelsToMakeForOpengroupV2,
]);
const SQL_CHANNEL_KEY = 'sql-channel';
let _shutdownPromise: any = null;
const DATABASE_UPDATE_TIMEOUT = 2 * 60 * 1000; // two minutes
export const _jobs = Object.create(null);
const _DEBUG = false;
let _jobCounter = 0;
let _shuttingDown = false;
let _shutdownCallback: any = null;
export async function _shutdown() {
if (_shutdownPromise) {
return _shutdownPromise;
}
_shuttingDown = true;
const jobKeys = Object.keys(_jobs);
window?.log?.info(`data.shutdown: starting process. ${jobKeys.length} jobs outstanding`);
// No outstanding jobs, return immediately
if (jobKeys.length === 0) {
return null;
}
// Outstanding jobs; we need to wait until the last one is done
_shutdownPromise = new Promise((resolve, reject) => {
_shutdownCallback = (error: any) => {
window?.log?.info('data.shutdown: process complete');
if (error) {
// tslint:disable: no-void-expression
return reject(error);
}
return resolve(undefined);
};
});
return _shutdownPromise;
}
function _getJob(id: number) {
return _jobs[id];
}
function makeChannel(fnName: string) {
channels[fnName] = async (...args: any) => {
const jobId = _makeJob(fnName);
return new Promise((resolve, reject) => {
ipcRenderer.send(SQL_CHANNEL_KEY, jobId, fnName, ...args);
_updateJob(jobId, {
resolve,
reject,
args: _DEBUG ? args : null,
});
_jobs[jobId].timer = setTimeout(
// tslint:disable: no-void-expression
() => reject(new Error(`SQL channel job ${jobId} (${fnName}) timed out`)),
DATABASE_UPDATE_TIMEOUT
);
});
};
}
export async function callChannel(name: string): Promise<any> {
return new Promise((resolve, reject) => {
ipcRenderer.send(name);
ipcRenderer.once(`${name}-done`, (_event, error) => {
if (error) {
return reject(error);
}
return resolve(undefined);
});
setTimeout(
() => reject(new Error(`callChannel call to ${name} timed out`)),
DATABASE_UPDATE_TIMEOUT
);
});
}
export function initData() {
// We listen to a lot of events on ipcRenderer, often on the same channel. This prevents
// any warnings that might be sent to the console in that case.
ipcRenderer.setMaxListeners(0);
_.forEach(channelsToMake, fn => {
if (_.isFunction(fn)) {
makeChannel(fn.name);
}
});
ipcRenderer.on(`${SQL_CHANNEL_KEY}-done`, (_event, jobId, errorForDisplay, result) => {
const job = _getJob(jobId);
if (!job) {
throw new Error(
`Received SQL channel reply to job ${jobId}, but did not have it in our registry!`
);
}
const { resolve, reject, fnName } = job;
if (errorForDisplay) {
return reject(
new Error(`Error received from SQL channel job ${jobId} (${fnName}): ${errorForDisplay}`)
);
}
return resolve(result);
});
}
function _updateJob(id: number, data: any) {
const { resolve, reject } = data;
const { fnName, start } = _jobs[id];
_jobs[id] = {
..._jobs[id],
...data,
resolve: (value: any) => {
_removeJob(id);
if (_DEBUG) {
const end = Date.now();
const delta = end - start;
if (delta > 10) {
window?.log?.debug(`SQL channel job ${id} (${fnName}) succeeded in ${end - start}ms`);
}
}
return resolve(value);
},
reject: (error: any) => {
_removeJob(id);
const end = Date.now();
window?.log?.warn(`SQL channel job ${id} (${fnName}) failed in ${end - start}ms`);
return reject(error);
},
};
}
function _removeJob(id: number) {
if (_DEBUG) {
_jobs[id].complete = true;
return;
}
if (_jobs[id].timer) {
global.clearTimeout(_jobs[id].timer);
_jobs[id].timer = null;
}
// tslint:disable-next-line: no-dynamic-delete
delete _jobs[id];
if (_shutdownCallback) {
const keys = Object.keys(_jobs);
if (keys.length === 0) {
_shutdownCallback();
}
}
}
function _makeJob(fnName: string) {
if (_shuttingDown && fnName !== 'close') {
throw new Error(`Rejecting SQL channel job (${fnName}); application is shutting down`);
}
_jobCounter += 1;
const id = _jobCounter;
if (_DEBUG) {
window?.log?.debug(`SQL channel job ${id} (${fnName}) started`);
}
_jobs[id] = {
fnName,
start: Date.now(),
};
return id;
}

View File

@ -46,7 +46,7 @@ export async function getV2OpenGroupRoom(
if (!isOpenGroupV2(conversationId)) {
throw new Error(`getV2OpenGroupRoom: this is not a valid v2 id: ${conversationId}`);
}
const opengroupv2Rooms = channels.getV2OpenGroupRoom(conversationId);
const opengroupv2Rooms = await channels.getV2OpenGroupRoom(conversationId);
if (!opengroupv2Rooms) {
return undefined;
@ -84,15 +84,6 @@ export async function removeV2OpenGroupRoom(conversationId: string): Promise<voi
await channels.removeV2OpenGroupRoom(conversationId);
}
export const channelsToMake = {
getAllV2OpenGroupRooms,
getV2OpenGroupRoom,
getV2OpenGroupRoomByRoomId,
saveV2OpenGroupRoom,
removeV2OpenGroupRoom,
getAllOpenGroupV2Conversations,
};
export async function getAllOpenGroupV2Conversations(): Promise<ConversationCollection> {
const conversations = await channels.getAllOpenGroupV2Conversations();

View File

@ -263,11 +263,11 @@ async function createWindow() {
fullscreen: false as boolean | undefined,
backgroundColor: '#000',
webPreferences: {
nodeIntegration: false,
nodeIntegration: true,
enableRemoteModule: true,
nodeIntegrationInWorker: true,
contextIsolation: false,
preload: path.join(__dirname, 'preload.js'),
preload: path.join(__dirname, 'preload.bundled.js'),
nativeWindowOpen: true,
spellcheck: await getSpellCheckSetting(),
},
@ -705,7 +705,7 @@ async function showMainWindow(sqlKey: string, passwordAttempt = false) {
passwordAttempt,
});
appStartInitialSpellcheckSetting = await getSpellCheckSetting();
sqlChannels.initialize();
sqlChannels.initializeSqlChannel();
await initAttachmentsChannel({
userDataPath,

View File

@ -10,7 +10,7 @@ import { ExpirationTimerOptions } from '../util/expiringMessages';
import { Notifications } from '../util/notifications';
import { Registration } from '../util/registration';
import { isSignInByLinking, Storage } from '../util/storage';
import jQuery from 'jquery';
import * as Data from '../data/data';
import Backbone from 'backbone';
import { SessionRegistrationView } from '../components/registration/SessionRegistrationView';
@ -79,9 +79,9 @@ let newVersion = false;
window.document.title = window.getTitle();
// Whisper.events =
// window.Whisper.Events = WhisperEvents ?
// window.Whisper.events = WhisperEvents ?
const WhisperEvents = _.clone(Backbone.Events);
window.Whisper.events = WhisperEvents;
window.log.info('Storage fetch');
void Storage.fetch();
@ -108,7 +108,7 @@ Storage.onready(async () => {
return;
}
first = false;
console.warn('storage is ready');
// Update zoom
window.updateZoomFactor();
@ -228,7 +228,7 @@ async function start() {
});
const appView = new AppView({
el: $('body'),
el: jQuery('body'),
});
ExpirationTimerOptions.initExpiringMessageListener();

View File

@ -1,12 +0,0 @@
// The idea with this file is to make it webpackable for the style guide
import * as Data from '../../ts/data/data';
import * as Util from '../../ts/util';
export const setupSignal = () => {
Data.init();
return {
Util,
};
};

View File

@ -9,11 +9,10 @@ const SQL_CHANNEL_KEY = 'sql-channel';
const ERASE_SQL_KEY = 'erase-sql-key';
// tslint:disable: no-console
export function initialize() {
export function initializeSqlChannel() {
if (initialized) {
throw new Error('sqlChannels: already initialized!');
}
initialized = true;
ipcMain.on(SQL_CHANNEL_KEY, (event, jobId, callName, ...args) => {
try {
@ -43,10 +42,12 @@ export function initialize() {
}
});
console.warn('********* registering get-user-data-path');
ipcMain.on('get-user-data-path', () => {
return app.getPath('userData');
});
ipcMain.on('get-data-path', () => {
return app.getAppPath();
});
initialized = true;
}

View File

@ -7,10 +7,10 @@
*/
import * as fse from 'fs-extra';
import { decryptAttachmentBuffer } from '../../types/Attachment';
import { DURATION } from '../constants';
import { makeObjectUrl, urlToBlob } from '../../types/attachments/VisualAttachment';
import { getAttachmentPath } from '../../types/MessageAttachment';
import { decryptAttachmentBuffer } from '../../node/local_attachments_encrypter';
const urlToDecryptedBlobMap = new Map<
string,

View File

@ -116,23 +116,6 @@ export function mn_decode(str: string, wordsetName: string = MN_DEFAULT_WORDSET)
return out;
}
// Note: the value is the prefix_len
const languages = {
chinese_simplified: 1,
dutch: 4,
electrum: 0,
english: 3,
esperanto: 4,
french: 4,
german: 4,
italian: 4,
japanese: 3,
lojban: 4,
portuguese: 4,
russian: 4,
spanish: 4,
};
const mnWords = {} as Record<
string,
{
@ -141,14 +124,13 @@ const mnWords = {} as Record<
truncWords: Array<any>;
}
>;
for (const [language, prefixLen] of Object.entries(languages)) {
mnWords[language] = {
prefixLen,
// tslint:disable-next-line: non-literal-require
words: require(`../../../mnemonic_languages/${language}`),
truncWords: [],
};
}
mnWords.english = {
prefixLen: 3,
// tslint:disable-next-line: non-literal-require
// tslint:disable-next-line: no-require-imports
words: require('../../../mnemonic_languages/english.json'),
truncWords: [],
};
export function get_languages(): Array<string> {
return Object.keys(mnWords);

View File

@ -0,0 +1,16 @@
// /* global $: false */
// /* global Whisper: false */
import React from 'react';
import { DebugLogView } from '../views/DebugLogView';
// $(document).on('keyup', e => {
// 'use strict';
// if (e.keyCode === 27) {
// window.closeDebugLog();
// }
// });
// Whisper ?
window.ReactDOM.render(<DebugLogView />, document.getElementById('app'));

View File

@ -0,0 +1,13 @@
/* global $, Whisper */
// const $body = $(document.body);
import React from 'react';
import { SessionPasswordPrompt } from '../components/SessionPasswordPrompt';
// // eslint-disable-next-line strict
// window.view = new Whisper.PasswordView();
// $body.html('');
// window.view.$el.prependTo($body);
// className: 'password overlay',
// Component: window.Signal.Components.SessionPasswordPrompt,
window.ReactDOM.render(<SessionPasswordPrompt />, document.getElementById('app'));

View File

@ -65,8 +65,8 @@ if (window.console) {
function getHeader() {
let header = window.navigator.userAgent;
header += ` node/${window.getNodeVersion()}`;
header += ` env/${window.getEnvironment()}`;
header += ` node/${window?.getNodeVersion()}`;
header += ` env/${window?.getEnvironment()}`;
return header;
}
@ -105,7 +105,7 @@ async function fetch() {
});
}
const development = window.getEnvironment() !== 'production';
const development = window && window?.getEnvironment && window?.getEnvironment() !== 'production';
// A modern logging interface for the browser

View File

@ -1,4 +1,4 @@
import * as Data from '../data/data';
import { createOrUpdateItem, getAllItems, removeItemById } from '../data/channelsItem';
let ready = false;
@ -20,7 +20,7 @@ async function put(key: string, value: ValueType) {
const data: InsertedValueType = { id: key, value };
items[key] = data;
await Data.createOrUpdateItem(data);
await createOrUpdateItem(data);
}
function get(key: string, defaultValue?: ValueType) {
@ -43,7 +43,7 @@ async function remove(key: string) {
// tslint:disable-next-line: no-dynamic-delete
delete items[key];
await Data.removeItemById(key);
await removeItemById(key);
}
function onready(callback: () => void) {
@ -65,7 +65,7 @@ function callListeners() {
async function fetch() {
reset();
const array = await Data.getAllItems();
const array = await getAllItems();
// tslint:disable-next-line: one-variable-per-declaration
for (let i = 0, max = array.length; i < max; i += 1) {

11
ts/window.d.ts vendored
View File

@ -52,7 +52,6 @@ declare global {
toggleMediaPermissions: () => Promise<void>;
toggleCallMediaPermissionsTo: (enabled: boolean) => Promise<void>;
getCallMediaPermissions: () => boolean;
updateZoomFactor: () => boolean;
toggleMenuBar: () => void;
toggleSpellCheck: any;
setTheme: (newTheme: string) => any;
@ -78,6 +77,8 @@ declare global {
globalOnlineStatus: boolean;
getTitle: () => string;
getAppInstance: () => string;
getCommitHash: () => string | undefined;
getVersion: () => string;
setAutoHideMenuBar: (val: boolean) => void;
setMenuBarVisibility: (val: boolean) => void;
@ -93,6 +94,12 @@ declare global {
callWorker: (fnName: string, ...args: any) => Promise<any>;
setStartInTray: (val: boolean) => Promise<void>;
getStartInTray: () => Promise<boolean>;
libsession: any;
closeAbout: () => void;
getAutoUpdateEnabled: () => boolean;
setAutoUpdateEnabled: (enabled: boolean) => void;
setZoomFactor: (newZoom: number) => void;
updateZoomFactor: () => void;
Signal: any;
}
}

View File

@ -1,6 +1,5 @@
/* eslint-disable class-methods-use-this */
const path = require('path');
const { Compilation } = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
@ -14,6 +13,15 @@ const optimization = {
// splitChunks: true,
};
const EXTERNAL_MODULE = new Set([
'backbone',
'better-sqlite3',
'fsevents',
'got',
'jquery',
'node-fetch',
]);
module.exports = [
{
// bundling mode
@ -26,9 +34,6 @@ module.exports = [
// entry files
resolve: {
extensions: ['.ts', '.tsx', '.js', '.json'],
// alias: {
// 'better_sqlite3.node': path.resolve(__dirname),
// },
},
entry: './ts/mains/main_node.ts',
target: 'electron-main',
@ -67,6 +72,44 @@ module.exports = [
filename: 'electron_main.js',
},
},
{
entry: './preload.ts',
mode: 'development',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'preload.bundled.js',
},
target: 'electron-main',
resolve: {
extensions: ['.ts', '.tsx', '.js', '.json'],
mainFields: ['browser', 'main'],
},
externals: [
({ request = '' }, callback) => {
if (EXTERNAL_MODULE.has(request)) {
return callback(undefined, `commonjs2 ${request}`);
}
callback();
},
],
module: {
rules: [
{
test: /\.tsx?$/,
include: [path.resolve(__dirname), path.resolve(__dirname, 'js')],
exclude: /node_modules/,
use: [
{
loader: 'ts-loader',
options: { transpileOnly: true },
},
],
},
],
},
},
{
mode: 'development',
@ -81,6 +124,8 @@ module.exports = [
{
test: /\.tsx?$/,
include: [path.resolve(__dirname, 'ts'), path.resolve(__dirname, 'js')],
exclude: /node_modules/,
use: [
{
loader: 'ts-loader',
@ -96,7 +141,7 @@ module.exports = [
optimization,
output: {
path: path.resolve(__dirname, 'dist', 'js'),
filename: 'electron-renderer.js',
filename: 'electron_renderer.js',
},
plugins: [
new HtmlWebpackPlugin({

131
yarn.lock
View File

@ -1099,6 +1099,11 @@
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.0.0.tgz#a3014921991066193f6c8e47290d4d598dfd19e6"
integrity sha512-ZS0vBV7Jn5Z/Q4T3VXauEKMDCV8nWOtJJg90OsDylkYJiQwcWtKuLzohWzrthBkerUF7DLMmJcwOPEP0i/AOXw==
"@types/mustache@^4.1.2":
version "4.1.2"
resolved "https://registry.yarnpkg.com/@types/mustache/-/mustache-4.1.2.tgz#d0e158013c81674a5b6d8780bc3fe234e1804eaf"
integrity sha512-c4OVMMcyodKQ9dpwBwh3ofK9P6U9ZktKU9S+p33UqwMNN1vlv2P0zJZUScTshnx7OEoIIRcCFNQ904sYxZz8kg==
"@types/node-fetch@^2.5.7":
version "2.5.7"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c"
@ -3189,6 +3194,132 @@ es6-error@^4.1.1:
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
esbuild-android-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.29.tgz#c0960c84c9b832bade20831515e89d32549d4769"
integrity sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==
esbuild-android-arm64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.29.tgz#8eceb3abe5abde5489d6a5cbe6a7c1044f71115f"
integrity sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==
esbuild-darwin-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.29.tgz#26f3f14102310ecb8f2d9351c5b7a47a60d2cc8a"
integrity sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==
esbuild-darwin-arm64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.29.tgz#6d2d89dfd937992649239711ed5b86e51b13bd89"
integrity sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==
esbuild-freebsd-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.29.tgz#2cb41a0765d0040f0838280a213c81bbe62d6394"
integrity sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==
esbuild-freebsd-arm64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.29.tgz#e1b79fbb63eaeff324cf05519efa7ff12ce4586a"
integrity sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==
esbuild-linux-32@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.29.tgz#a4a5a0b165b15081bc3227986e10dd4943edb7d6"
integrity sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==
esbuild-linux-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.29.tgz#4c450088c84f8bfd22c51d116f59416864b85481"
integrity sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==
esbuild-linux-arm64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.29.tgz#d1a23993b26cb1f63f740329b2fc09218e498bd1"
integrity sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==
esbuild-linux-arm@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.29.tgz#a7e2fea558525eab812b1fe27d7a2659cd1bb723"
integrity sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==
esbuild-linux-mips64le@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.29.tgz#e708c527f0785574e400828cdbed3d9b17b5ddff"
integrity sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==
esbuild-linux-ppc64le@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.29.tgz#0137d1b38beae36a57176ef45e90740e734df502"
integrity sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==
esbuild-linux-riscv64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.29.tgz#a2f73235347a58029dcacf0fb91c9eb8bebc8abb"
integrity sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==
esbuild-linux-s390x@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.29.tgz#0f7310ff1daec463ead9b9e26b7aa083a9f9f1ee"
integrity sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==
esbuild-netbsd-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.29.tgz#ba9a0d9cb8aed73b684825126927f75d4fe44ff9"
integrity sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==
esbuild-openbsd-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.29.tgz#36dbe2c32d899106791b5f3af73f359213f71b8a"
integrity sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==
esbuild-sunos-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.29.tgz#e5f857c121441ec63bf9b399a2131409a7d344e5"
integrity sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==
esbuild-windows-32@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.29.tgz#9c2f1ab071a828f3901d1d79d205982a74bdda6e"
integrity sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==
esbuild-windows-64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.29.tgz#85fbce7c2492521896451b98d649a7db93e52667"
integrity sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==
esbuild-windows-arm64@0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.29.tgz#0aa7a9a1bc43a63350bcf574d94b639176f065b5"
integrity sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==
esbuild@^0.14.29:
version "0.14.29"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.29.tgz#24ad09c0674cbcb4aa2fe761485524eb1f6b1419"
integrity sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==
optionalDependencies:
esbuild-android-64 "0.14.29"
esbuild-android-arm64 "0.14.29"
esbuild-darwin-64 "0.14.29"
esbuild-darwin-arm64 "0.14.29"
esbuild-freebsd-64 "0.14.29"
esbuild-freebsd-arm64 "0.14.29"
esbuild-linux-32 "0.14.29"
esbuild-linux-64 "0.14.29"
esbuild-linux-arm "0.14.29"
esbuild-linux-arm64 "0.14.29"
esbuild-linux-mips64le "0.14.29"
esbuild-linux-ppc64le "0.14.29"
esbuild-linux-riscv64 "0.14.29"
esbuild-linux-s390x "0.14.29"
esbuild-netbsd-64 "0.14.29"
esbuild-openbsd-64 "0.14.29"
esbuild-sunos-64 "0.14.29"
esbuild-windows-32 "0.14.29"
esbuild-windows-64 "0.14.29"
esbuild-windows-arm64 "0.14.29"
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"