1
0
mirror of https://gitlab.com/psono/psono-client synced 2025-04-19 03:22:16 +03:00

Switched to dynamic imports

Signed-off-by: Sascha Pfeiffer <sascha.pfeiffer@esaqa.com>
This commit is contained in:
Sascha Pfeiffer 2025-02-02 19:25:02 +01:00
parent fc0526a4fd
commit b6d1f72434
7 changed files with 49 additions and 24 deletions

View File

@ -1,7 +1,6 @@
/**
* Service which handles the actual parsing of the exported JSON
*/
import * as XLSX from "xlsx";
import cryptoLibrary from "./crypto-library";
import helperService from "./helper";
@ -278,13 +277,15 @@ function gatherSecrets(datastore, secrets, csv) {
* @param {ArrayBuffer} data The raw data to parse
* @returns {Array} The array of arrays representing the CSV
*/
function parseXls(data) {
const workbook = XLSX.read(data, { type: "array" });
async function parseXls(data) {
const XLSX = await import('xlsx');
const workbook = XLSX.read(data, {type: "array"});
const sheetName = workbook.SheetNames[0];
const sheet = workbook.Sheets[sheetName];
const jsonData = XLSX.utils.sheet_to_json(sheet, { header: 1 });
const jsonData = XLSX.utils.sheet_to_json(sheet, {header: 1});
if (jsonData.length > 0) {
return jsonData
@ -308,7 +309,7 @@ function parseXls(data) {
*
* @returns {{datastore, secrets: Array} | null}
*/
function parser(data, binary) {
async function parser(data, binary) {
const d = new Date();
const n = d.toISOString();
@ -321,7 +322,7 @@ function parser(data, binary) {
let jsonData;
try {
jsonData = parseXls(binary);
jsonData = await parseXls(binary);
} catch (err) {
return null;
}

View File

@ -185,15 +185,15 @@ function getParser(type) {
*
* @returns {*} Returns a tree structure with folders and items
*/
function parseExport(data) {
async function parseExport(data) {
const parse = getParser(data["type"]);
if (parse === null) {
return Promise.reject({ errors: ["PARSER_NOT_FOUND"] });
return Promise.reject({errors: ["PARSER_NOT_FOUND"]});
}
const parsed_data = parse(data["data"], data["binary"]);
const parsed_data = await parse(data["data"], data["binary"]);
if (parsed_data === null) {
return Promise.reject({ errors: ["FILE_FORMAT_WRONG"] });
return Promise.reject({errors: ["FILE_FORMAT_WRONG"]});
}
data["data"] = parsed_data;

View File

@ -36,13 +36,13 @@ module.exports = () => {
// should be last so all files are cached
new InjectManifest({
swSrc: './src/webclient/service-worker.js',
swDest: './webclient/service-worker.js',
swDest: './service-worker.js',
exclude: [
/authenticate\.html/
],
modifyURLPrefix: {
'webclient/': './',
'./webclient/': './',
'/': './',
'././': './',
},
compileSrc: true,
maximumFileSizeToCacheInBytes: 30000000,

View File

@ -21,9 +21,15 @@ module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
entry: {
'chrome/data/js/bundle.min.js': './src/js/index.js',
'chrome/data/js/crypto-worker.js': './src/js/crypto-worker.js',
'chrome/data/js/background-chrome.js': './src/js/background-chrome.js',
'js/bundle.min.js': './src/js/index.js',
'js/crypto-worker.js': './src/js/crypto-worker.js',
'js/background-chrome.js': './src/js/background-chrome.js',
},
output: {
filename: '[name]',
path: path.resolve(__dirname, 'build', 'chrome', 'data'),
chunkFilename: 'js/[name].js',
publicPath: '/data/',
},
plugins: [
new webpack.DefinePlugin({
@ -46,7 +52,7 @@ module.exports = merge(common, {
new JsonPostProcessPlugin({
matchers: [{
matcher: /^chrome\/manifest.json$/,
matcher: /^\.\.\/manifest.json$/,
action: (currentJsonContent) => ({ ...currentJsonContent, version: version })
}]
}),

View File

@ -20,8 +20,14 @@ module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
entry: {
'electron/js/bundle.min.js': './src/js/index.js',
'electron/js/crypto-worker.js': './src/js/crypto-worker.js',
'js/bundle.min.js': './src/js/index.js',
'js/crypto-worker.js': './src/js/crypto-worker.js',
},
output: {
filename: '[name]',
path: path.resolve(__dirname, 'build', 'electron'),
chunkFilename: 'js/[name].js',
publicPath: '/',
},
plugins: [
new webpack.DefinePlugin({

View File

@ -21,8 +21,14 @@ module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
entry: {
'firefox/data/js/bundle.min.js': './src/js/index.js',
'firefox/data/js/crypto-worker.js': './src/js/crypto-worker.js',
'js/bundle.min.js': './src/js/index.js',
'js/crypto-worker.js': './src/js/crypto-worker.js',
},
output: {
filename: '[name]',
path: path.resolve(__dirname, 'build', 'firefox', 'data'),
chunkFilename: 'js/[name].js',
publicPath: '/data/',
},
plugins: [
new webpack.DefinePlugin({
@ -45,7 +51,7 @@ module.exports = merge(common, {
new JsonPostProcessPlugin({
matchers: [{
matcher: /^firefox\/manifest.json$/,
matcher: /^\.\.\/manifest.json$/,
action: (currentJsonContent) => ({ ...currentJsonContent, version: version })
}]
}),

View File

@ -9,8 +9,14 @@ module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
entry: {
'webclient/js/bundle.min.js': './src/js/index.js',
'webclient/js/crypto-worker.js': './src/js/crypto-worker.js',
'js/bundle.min.js': './src/js/index.js',
'js/crypto-worker.js': './src/js/crypto-worker.js',
},
output: {
filename: '[name]',
path: path.resolve(__dirname, 'build', 'webclient'),
chunkFilename: 'js/[name].js',
publicPath: '/',
},
devServer: {
static: {