diff --git a/.gitignore b/.gitignore index a5359de..35e9e76 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ client/.env .env.test.local .env.production.local /out +/dist npm-debug.log* yarn-debug.log* diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..e38cd4c --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Main Process", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", + "windows": { + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd" + }, + "args": ["."], + "outputCapture": "std" + } + ] +} diff --git a/electron/decoder/decoder.js b/electron/decoder/decoder.js index 24e0cc3..209645e 100644 --- a/electron/decoder/decoder.js +++ b/electron/decoder/decoder.js @@ -1,17 +1,47 @@ const { DBFFile } = require("dbffile"); const path = require("path"); const _ = require("lodash"); +const log = require("electron-log"); +const { store } = require("../electron-store"); async function DecodeEstimate(filePath) { const parsedFilePath = path.parse(filePath); - let extensionlessFilePath = `${parsedFilePath.dir}\\${parsedFilePath.name}`; - const ret = { + let extensionlessFilePath = path.join( + parsedFilePath.dir, + parsedFilePath.name + ); + const job = { ...(await DecodeAd1File(extensionlessFilePath)), ...(await DecodeVehFile(extensionlessFilePath)), ...(await DecodeTtlFile(extensionlessFilePath)), ...(await DecodeLinFile(extensionlessFilePath)), }; - return ret; + + const ad2 = await DecodeAd2File(extensionlessFilePath); + + if (job.OWNR_FN === "") job.OWNR_FN = ad2.CLMT_FN; + if (job.OWNR_LN === "") job.OWNR_LN = ad2.CLMT_LN; + + const accepted_ins_co = store.get("accepted_ins_co"); + + let returnValue; + if (job.V_MILEAGE <= 20000) { + returnValue = { ERROR: "Vehicle mileage is less than 20,000kms." }; + } else if (!accepted_ins_co.includes(job.INS_CO_NM)) { + returnValue = { + ERROR: `Insurance Company Name is not valid for RPS. (${job.INS_CO_NM})`, + }; + } else if (!job.clm_no) { + returnValue = { + ERROR: `An unique claim number must be set for all jobs sent to RPS.`, + }; + } else { + returnValue = _.transform(job, function (result, val, key) { + result[key.toLowerCase()] = val; + }); + } + + return returnValue; } async function DecodeAd1File(extensionlessFilePath) { @@ -32,7 +62,7 @@ async function DecodeAd1File(extensionlessFilePath) { // "DED_AMT", // "DED_STATUS", // "ASGN_NO", - // "ASGN_DATE", + //"ASGN_DATE", // "ASGN_TYPE", "CLM_NO", // "CLM_OFC_ID", @@ -80,7 +110,7 @@ async function DecodeAd1File(extensionlessFilePath) { // "AGT_CT_PHX", // "AGT_EA", // "AGT_LIC_NO", - // "LOSS_DATE", + "LOSS_DATE", // "LOSS_TYPE", // "LOSS_DESC", // "THEFT_IND", @@ -135,6 +165,13 @@ async function DecodeAd1File(extensionlessFilePath) { // "LOSS_CAT", ]); } + +async function DecodeAd2File(extensionlessFilePath) { + let dbf = await DBFFile.open(`${extensionlessFilePath}B.AD2`); + let records = await dbf.readRecords(1); + return _.pick(records[0], ["CLMT_LN", "CLMT_FN"]); +} + async function DecodeVehFile(extensionlessFilePath) { let dbf = await DBFFile.open(`${extensionlessFilePath}V.VEH`); let records = await dbf.readRecords(1); @@ -152,6 +189,7 @@ async function DecodeVehFile(extensionlessFilePath) { "V_MAKEDESC", "V_MODEL", "V_TYPE", + "V_MILEAGE", // "V_BSTYLE", // "V_TRIMCODE", // "TRIM_COLOR", @@ -174,64 +212,167 @@ async function DecodeTtlFile(extensionlessFilePath) { async function DecodeLinFile(extensionlessFilePath) { let dbf = await DBFFile.open(`${extensionlessFilePath}.LIN`); let records = await dbf.readRecords(); + let joblines = records + .map((record) => { + console.log( + "object", + _.pick(record, [ + "LINE_NO", + "LINE_IND", + // "LINE_REF", + // "TRAN_CODE", + "DB_REF", + "UNQ_SEQ", + // "WHO_PAYS", + "LINE_DESC", + "PART_TYPE", + // "PART_DESCJ", + "GLASS_FLAG", + "OEM_PARTNO", + // "PRICE_INC", + // "ALT_PART_I", + // "TAX_PART", + "DB_PRICE", + "ACT_PRICE", + // "PRICE_J", + // "CERT_PART", + "PART_QTY", + // "ALT_CO_ID", + // "ALT_PARTNO", + // "ALT_OVERRD", + // "ALT_PARTM", + // "PRT_DSMK_P", + // "PRT_DSMK_M", + // "MOD_LBR_TY", + // "DB_HRS", + // "MOD_LB_HRS", + // "LBR_INC", + // "LBR_OP", + // "LBR_HRS_J", + // "LBR_TYP_J", + // "LBR_OP_J", + // "PAINT_STG", + // "PAINT_TONE", + // "LBR_TAX", + // "LBR_AMT", + // "MISC_AMT", + // "MISC_SUBLT", + // "MISC_TAX", + // "BETT_TYPE", + // "BETT_PCTG", + // "BETT_AMT", + // "BETT_TAX", + ]) + ); + return _.transform( + _.pick(record, [ + "LINE_NO", + "LINE_IND", + // "LINE_REF", + // "TRAN_CODE", + "DB_REF", + "UNQ_SEQ", + // "WHO_PAYS", + "LINE_DESC", + "PART_TYPE", + // "PART_DESCJ", - let joblines = records.map((record) => - _.transform( - _.pick(record, [ - // "LINE_NO", - "LINE_IND", - // "LINE_REF", - // "TRAN_CODE", - // "DB_REF", - "UNQ_SEQ", - // "WHO_PAYS", - "LINE_DESC", - "PART_TYPE", - // "PART_DESCJ", - // "GLASS_FLAG", - "OEM_PARTNO", - // "PRICE_INC", - // "ALT_PART_I", - // "TAX_PART", - "DB_PRICE", - "ACT_PRICE", - // "PRICE_J", - // "CERT_PART", - "PART_QTY", - // "ALT_CO_ID", - // "ALT_PARTNO", - // "ALT_OVERRD", - // "ALT_PARTM", - // "PRT_DSMK_P", - // "PRT_DSMK_M", - // "MOD_LBR_TY", - // "DB_HRS", - // "MOD_LB_HRS", - // "LBR_INC", - // "LBR_OP", - // "LBR_HRS_J", - // "LBR_TYP_J", - // "LBR_OP_J", - // "PAINT_STG", - // "PAINT_TONE", - // "LBR_TAX", - // "LBR_AMT", - // "MISC_AMT", - // "MISC_SUBLT", - // "MISC_TAX", - // "BETT_TYPE", - // "BETT_PCTG", - // "BETT_AMT", - // "BETT_TAX", - ]), - function (result, val, key) { - if (key === "UNQ_SEQ") { - return (result[key.toLowerCase()] = val.toString()); + "OEM_PARTNO", + // "PRICE_INC", + // "ALT_PART_I", + // "TAX_PART", + "DB_PRICE", + "ACT_PRICE", + // "PRICE_J", + // "CERT_PART", + "PART_QTY", + // "ALT_CO_ID", + // "ALT_PARTNO", + // "ALT_OVERRD", + // "ALT_PARTM", + // "PRT_DSMK_P", + // "PRT_DSMK_M", + // "MOD_LBR_TY", + // "DB_HRS", + // "MOD_LB_HRS", + // "LBR_INC", + // "LBR_OP", + // "LBR_HRS_J", + // "LBR_TYP_J", + // "LBR_OP_J", + // "PAINT_STG", + // "PAINT_TONE", + // "LBR_TAX", + // "LBR_AMT", + // "MISC_AMT", + // "MISC_SUBLT", + // "MISC_TAX", + // "BETT_TYPE", + // "BETT_PCTG", + // "BETT_AMT", + // "BETT_TAX", + "GLASS_FLAG", + ]), + function (result, val, key) { + //Required because unq_seq gets pulled as a numeric instaed of a string. + console.log("key", key); + if (key === "UNQ_SEQ") { + return (result[key.toLowerCase()] = val.toString()); + } + return (result[key.toLowerCase()] = val); } - return (result[key.toLowerCase()] = val); - } + ); + }) + .filter( + (jobline) => + jobline.part_type && + !jobline.db_ref.startsWith("900") && + !jobline.db_ref.toLowerCase().startsWith("urethane") && + !jobline.db_ref.toLowerCase().startsWith("wheel") && + !jobline.db_ref.toLowerCase().startsWith("hazardous") && + !jobline.db_ref.toLowerCase().startsWith("detail") && + !jobline.db_ref.toLowerCase().startsWith("clean") && + jobline.part_type.toUpperCase() !== "PAG" && + jobline.part_type.toUpperCase() !== "PAS" && + jobline.part_type.toUpperCase() !== "PASL" && + jobline.part_type.toUpperCase() !== "PAE" && + jobline.glass_flag === false ) - ); + .map((jobline) => { + if ( + (jobline.db_price === null || jobline.db_price === 0) && + !!jobline.act_price && + jobline.act_price > 0 + ) { + console.log(1, jobline.line_desc, jobline.db_price, jobline.act_price); + log.info( + "DB Price null/lower than act price", + jobline.line_desc, + jobline.db_price, + jobline.act_price + ); + jobline.db_price = jobline.act_price; + } + + if ( + jobline.db_price && + jobline.act_price && + jobline.act_price > jobline.db_price + ) { + log.info( + "Act price higher than existing db price", + jobline.line_desc, + jobline.db_price, + jobline.act_price + ); + console.log(2, jobline.line_desc, jobline.db_price, jobline.act_price); + jobline.db_price = jobline.act_price; + } + + delete jobline.glass_flag; + return jobline; + }); + return { joblines: { data: joblines } }; } diff --git a/electron/electron-store.js b/electron/electron-store.js index 4e62a8a..9d59c9c 100644 --- a/electron/electron-store.js +++ b/electron/electron-store.js @@ -1,5 +1,5 @@ const Store = require("electron-store"); -const store = new Store({ defaults: { filePaths: [] } }); +const store = new Store({ defaults: { filePaths: [], accepted_ins_co: [] } }); exports.store = store; diff --git a/electron/file-watcher/file-watcher.js b/electron/file-watcher/file-watcher.js index 669acf8..edb58d6 100644 --- a/electron/file-watcher/file-watcher.js +++ b/electron/file-watcher/file-watcher.js @@ -3,7 +3,6 @@ const ipcTypes = require("../../src/ipc.types"); const path = require("path"); const { DecodeEstimate } = require("../decoder/decoder"); const { BrowserWindow } = require("electron"); -const _ = require("lodash"); const { store } = require("../electron-store"); const { NewNotification, @@ -11,7 +10,7 @@ const { var watcher; -function StartWatcher() { +async function StartWatcher() { const filePaths = store.get("filePaths").map((fp) => path.join(fp, "**.[eE][nN][vV]")) || []; console.log("StartWatcher -> filePaths", filePaths); @@ -27,7 +26,9 @@ function StartWatcher() { if (watcher) { try { console.log("Trying to close watcher - it already existed."); - watcher.close().then(); + await watcher.close(); + + console.log("Watcher closed successfully!"); } catch (error) { console.log("Error trying to close Watcher.", error); } @@ -71,6 +72,7 @@ function StartWatcher() { // This event should be triggered everytime something happens. // console.log("Raw event info:", event, path, details); }); + return filePaths; } @@ -103,17 +105,21 @@ async function HandleNewFile(path) { const b = BrowserWindow.getAllWindows()[0]; b.webContents.send(ipcTypes.default.estimate.toRenderer.estimateDecodeStart); const newJob = await DecodeEstimate(path); - const newJobLow = _.transform(newJob, function (result, val, key) { - result[key.toLowerCase()] = val; - }); - b.webContents.send( - ipcTypes.default.estimate.toRenderer.estimateDecodeSuccess, - newJobLow - ); + if (newJob && !newJob.ERROR) { + b.webContents.send( + ipcTypes.default.estimate.toRenderer.estimateDecodeSuccess, + newJob + ); - NewNotification({ - title: "Job Uploaded", - body: "A new job has been uploaded.", - }).show(); + NewNotification({ + title: "Job Uploaded", + body: "A new job has been uploaded.", + }).show(); + } else { + NewNotification({ + title: "Job Ignored", + body: newJob.ERROR, + }).show(); + } } diff --git a/electron/ipc-main-handler.js b/electron/ipc-main-handler.js index e1783fd..6c69626 100644 --- a/electron/ipc-main-handler.js +++ b/electron/ipc-main-handler.js @@ -1,4 +1,6 @@ const { ipcMain } = require("electron"); +const { default: ipcTypes } = require("../src/ipc.types"); +const { store } = require("./electron-store"); const { mainWindow } = require("./main"); //Import Ipc Handlers require("./file-watcher/file-watcher-ipc"); @@ -11,3 +13,7 @@ ipcMain.on("test", async (event, object) => { console.log(mainWindow); event.reply("test-toRenderer", { status: 0, message: null }); }); + +ipcMain.on(ipcTypes.app.toMain.setAcceptableInsCoNm, (event, insCos) => { + store.set("accepted_ins_co", insCos); +}); diff --git a/electron/main.js b/electron/main.js index d5f4545..832b244 100644 --- a/electron/main.js +++ b/electron/main.js @@ -1,31 +1,91 @@ const path = require("path"); -const { app, BrowserWindow, Tray, Menu, ipcMain } = require("electron"); +const { + app, + BrowserWindow, + Tray, + Menu, + ipcMain, + dialog, + shell, + globalShortcut, +} = require("electron"); const isDev = require("electron-is-dev"); const { default: ipcTypes } = require("../src/ipc.types"); const { store } = require("./electron-store"); +const { autoUpdater } = require("electron-updater"); +const log = require("electron-log"); +const { default: logger } = require("redux-logger"); require("./ipc-main-handler"); +autoUpdater.logger = log; +autoUpdater.logger.transports.file.level = "info"; +log.info("App starting..."); + // Conditionally include the dev tools installer to load React Dev Tools let installExtension, REACT_DEVELOPER_TOOLS; -if (isDev) { - const devTools = require("electron-devtools-installer"); - installExtension = devTools.default; - REACT_DEVELOPER_TOOLS = devTools.REACT_DEVELOPER_TOOLS; -} +// if (isDev) { +// const devTools = require("electron-devtools-installer"); +// installExtension = devTools.default; +// REACT_DEVELOPER_TOOLS = devTools.REACT_DEVELOPER_TOOLS; +// } -// Handle creating/removing shortcuts on Windows when installing/uninstalling -if (require("electron-squirrel-startup")) { - app.quit(); -} - -console.log(`${__dirname}/preload.js`); +var menu = Menu.buildFromTemplate([ + { + label: "File", + submenu: [ + { + label: "Relaunch", + click() { + app.exit(); + app.relaunch(); + }, + }, + { + label: "Clear Settings", + click() { + store.reset("filePaths"); + }, + }, + { + label: "Exit", + click() { + app.quit(); + }, + }, + ], + // Other code removed for brevity + }, + { + label: "Help", + submenu: [ + { + label: "Rescue", + click() { + shell.openExternal("http://imexrescue.com"); + }, + }, + { + label: "Check for Updates", + click() { + autoUpdater.checkForUpdatesAndNotify(); + }, + }, + { + label: "Open Log File", + click() { + shell.openPath(store.path); + }, + }, + ], + }, +]); let mainWindow; let tray = null; function createWindow() { makeSingleInstance(); // Create the browser window. - + Menu.setApplicationMenu(menu); mainWindow = new BrowserWindow({ width: 800, height: 600, @@ -34,6 +94,7 @@ function createWindow() { webPreferences: { nodeIntegration: false, enableRemoteModule: false, + webSecurity: true, worldSafeExecuteJavaScript: true, contextIsolation: true, preload: path.join(__dirname, "preload.js"), // use a preload script @@ -44,7 +105,7 @@ function createWindow() { mainWindow.loadURL( isDev ? "http://localhost:3000" - : `file://${path.join(__dirname, "../build/index.html")}` + : `file://${path.join(__dirname, "/../build/index.html")}` ); // mainWindow.on("close", function (event) { @@ -72,6 +133,11 @@ function createWindow() { } mainWindow.maximize(); + autoUpdater.checkForUpdatesAndNotify(); + + globalShortcut.register("CommandOrControl+Shift+I", () => { + mainWindow.webContents.toggleDevTools(); + }); } exports.mainWindow = mainWindow; @@ -83,6 +149,7 @@ app.whenReady().then(() => { if (isDev) { console.log(`Path to Settings File: ${store.path}`); + console.log(`Path to Log File: ${log.log}`); installExtension(REACT_DEVELOPER_TOOLS) .then((name) => console.log(`Added Extension: ${name}`)) .catch((error) => console.log(`An error occurred: , ${error}`)); @@ -95,6 +162,7 @@ app.whenReady().then(() => { }); if (isDev) app.setAppUserModelId(process.execPath); +else app.setAppUserModelId("com.imex.rps"); // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. @@ -152,3 +220,43 @@ function createTray() { appIcon.setContextMenu(contextMenu); return appIcon; } + +autoUpdater.on("checking-for-update", () => { + console.log("Checking for update..."); +}); +autoUpdater.on("update-available", (ev, info) => { + console.log("Update available."); +}); +autoUpdater.on("update-not-available", (ev, info) => { + console.log("Update not available."); +}); +autoUpdater.on("error", (ev, err) => { + console.log("Error in auto-updater."); +}); +autoUpdater.on("download-progress", (ev, progressObj) => { + console.log("Download progress..."); +}); +autoUpdater.on("update-downloaded", (ev, info) => { + console.log("Update downloaded; will install in 5 seconds"); +}); +autoUpdater.on("update-downloaded", (ev, info) => { + if (process.env.NODE_ENV === "production") { + dialog.showMessageBox( + { + type: "info", + title: "Found Updates", + message: "Found updates, do you want update now?", + buttons: ["Sure", "No"], + }, + (buttonIndex) => { + if (buttonIndex === 0) { + const isSilent = true; + const isForceRunAfter = true; + autoUpdater.quitAndInstall(isSilent, isForceRunAfter); + } else { + logger.warn("Error"); + } + } + ); + } +}); diff --git a/electron/notification-wrapper/notification-wrapper.js b/electron/notification-wrapper/notification-wrapper.js index 74f3880..b60cc9b 100644 --- a/electron/notification-wrapper/notification-wrapper.js +++ b/electron/notification-wrapper/notification-wrapper.js @@ -3,6 +3,7 @@ const path = require("path"); function NewNotification(config) { return Notification({ + icon: path.join(__dirname, "../../src/assets/logo512.png"), ...config, }); diff --git a/electron/preload.js b/electron/preload.js index 621d085..8b7886e 100644 --- a/electron/preload.js +++ b/electron/preload.js @@ -1,7 +1,26 @@ console.log("Running preloader!"); const { contextBridge, ipcRenderer } = require("electron"); +const log = require("electron-log"); + +//ipcRenderer.removeAllListeners(); +contextBridge.exposeInMainWorld("logger", { + info: (...msg) => { + log.info(...msg); + }, + debug: (...msg) => { + log.debug(...msg); + }, + warn: (...msg) => { + log.warn(...msg); + }, + error: (...msg) => { + log.error(...msg); + }, + silly: (...msg) => { + log.silly(...msg); + }, +}); -ipcRenderer.removeAllListeners(); contextBridge.exposeInMainWorld("ipcRenderer", { send: (channel, data) => { // whitelist channels diff --git a/hasura/migrations/1602868358764_alter_table_public_joblines_add_column_db_ref/down.yaml b/hasura/migrations/1602868358764_alter_table_public_joblines_add_column_db_ref/down.yaml new file mode 100644 index 0000000..f33849d --- /dev/null +++ b/hasura/migrations/1602868358764_alter_table_public_joblines_add_column_db_ref/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" DROP COLUMN "db_ref"; + type: run_sql diff --git a/hasura/migrations/1602868358764_alter_table_public_joblines_add_column_db_ref/up.yaml b/hasura/migrations/1602868358764_alter_table_public_joblines_add_column_db_ref/up.yaml new file mode 100644 index 0000000..9130dc0 --- /dev/null +++ b/hasura/migrations/1602868358764_alter_table_public_joblines_add_column_db_ref/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" ADD COLUMN "db_ref" text NULL; + type: run_sql diff --git a/hasura/migrations/1602868366028_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602868366028_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..aa74653 --- /dev/null +++ b/hasura/migrations/1602868366028_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - act_price + - db_price + - part_qty + - line_desc + - line_ind + - oem_partno + - part_type + - unq_seq + - created_at + - updated_at + - id + - jobid + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602868366028_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602868366028_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..68abca3 --- /dev/null +++ b/hasura/migrations/1602868366028_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602868376590_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602868376590_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..6b78152 --- /dev/null +++ b/hasura/migrations/1602868376590_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - act_price + - db_price + - part_qty + - line_desc + - line_ind + - oem_partno + - part_type + - unq_seq + - created_at + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602868376590_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602868376590_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..ec4e275 --- /dev/null +++ b/hasura/migrations/1602868376590_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + computed_fields: [] + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602868382612_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602868382612_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..2cbdb6a --- /dev/null +++ b/hasura/migrations/1602868382612_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - act_price + - db_price + - part_qty + - line_desc + - line_ind + - oem_partno + - part_type + - unq_seq + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602868382612_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602868382612_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..3c71d3e --- /dev/null +++ b/hasura/migrations/1602868382612_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602868441871_alter_table_public_joblines_add_column_line_no/down.yaml b/hasura/migrations/1602868441871_alter_table_public_joblines_add_column_line_no/down.yaml new file mode 100644 index 0000000..d5935b1 --- /dev/null +++ b/hasura/migrations/1602868441871_alter_table_public_joblines_add_column_line_no/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" DROP COLUMN "line_no"; + type: run_sql diff --git a/hasura/migrations/1602868441871_alter_table_public_joblines_add_column_line_no/up.yaml b/hasura/migrations/1602868441871_alter_table_public_joblines_add_column_line_no/up.yaml new file mode 100644 index 0000000..a7b184b --- /dev/null +++ b/hasura/migrations/1602868441871_alter_table_public_joblines_add_column_line_no/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" ADD COLUMN "line_no" numeric NULL; + type: run_sql diff --git a/hasura/migrations/1602868447595_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602868447595_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..68abca3 --- /dev/null +++ b/hasura/migrations/1602868447595_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602868447595_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602868447595_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..07751de --- /dev/null +++ b/hasura/migrations/1602868447595_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602868452712_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602868452712_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..ec4e275 --- /dev/null +++ b/hasura/migrations/1602868452712_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + computed_fields: [] + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602868452712_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602868452712_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..3d184ad --- /dev/null +++ b/hasura/migrations/1602868452712_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + computed_fields: [] + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602868457785_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602868457785_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..3c71d3e --- /dev/null +++ b/hasura/migrations/1602868457785_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602868457785_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602868457785_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..09fb18d --- /dev/null +++ b/hasura/migrations/1602868457785_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602869347189_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602869347189_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..0578ffd --- /dev/null +++ b/hasura/migrations/1602869347189_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1602869347189_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602869347189_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..ea3daa7 --- /dev/null +++ b/hasura/migrations/1602869347189_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,15 @@ +- args: + permission: + backend_only: false + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: joblines + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1602869404642_alter_table_public_jobs_add_column_group/down.yaml b/hasura/migrations/1602869404642_alter_table_public_jobs_add_column_group/down.yaml new file mode 100644 index 0000000..9bd67b5 --- /dev/null +++ b/hasura/migrations/1602869404642_alter_table_public_jobs_add_column_group/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "group"; + type: run_sql diff --git a/hasura/migrations/1602869404642_alter_table_public_jobs_add_column_group/up.yaml b/hasura/migrations/1602869404642_alter_table_public_jobs_add_column_group/up.yaml new file mode 100644 index 0000000..b5e3304 --- /dev/null +++ b/hasura/migrations/1602869404642_alter_table_public_jobs_add_column_group/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "group" text NULL; + type: run_sql diff --git a/hasura/migrations/1602869421937_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602869421937_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..3b7af84 --- /dev/null +++ b/hasura/migrations/1602869421937_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - id + - bodyshopid + - created_at + - updated_at + - ro_number + - ins_co_nm + - clm_no + - clm_total + - ownr_ln + - ownr_fn + - v_vin + - v_makedesc + - v_model + - v_model_yr + - v_type + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602869421937_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602869421937_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..cb24b7d --- /dev/null +++ b/hasura/migrations/1602869421937_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602869426871_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602869426871_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..f390ffb --- /dev/null +++ b/hasura/migrations/1602869426871_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - clm_total + - clm_no + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602869426871_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602869426871_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..5f92597 --- /dev/null +++ b/hasura/migrations/1602869426871_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602869432212_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602869432212_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..1dc7e1e --- /dev/null +++ b/hasura/migrations/1602869432212_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - clm_total + - clm_no + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + - created_at + - updated_at + - bodyshopid + - id + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602869432212_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602869432212_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..687f130 --- /dev/null +++ b/hasura/migrations/1602869432212_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602869698796_alter_table_public_jobs_add_column_v_mileage/down.yaml b/hasura/migrations/1602869698796_alter_table_public_jobs_add_column_v_mileage/down.yaml new file mode 100644 index 0000000..80bb4c0 --- /dev/null +++ b/hasura/migrations/1602869698796_alter_table_public_jobs_add_column_v_mileage/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "v_mileage"; + type: run_sql diff --git a/hasura/migrations/1602869698796_alter_table_public_jobs_add_column_v_mileage/up.yaml b/hasura/migrations/1602869698796_alter_table_public_jobs_add_column_v_mileage/up.yaml new file mode 100644 index 0000000..14ca21b --- /dev/null +++ b/hasura/migrations/1602869698796_alter_table_public_jobs_add_column_v_mileage/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "v_mileage" numeric NULL; + type: run_sql diff --git a/hasura/migrations/1602869708868_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602869708868_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..cb24b7d --- /dev/null +++ b/hasura/migrations/1602869708868_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602869708868_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602869708868_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..f5e3c98 --- /dev/null +++ b/hasura/migrations/1602869708868_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602869715323_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602869715323_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..5f92597 --- /dev/null +++ b/hasura/migrations/1602869715323_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602869715323_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602869715323_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..32ee08b --- /dev/null +++ b/hasura/migrations/1602869715323_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602869720762_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602869720762_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..687f130 --- /dev/null +++ b/hasura/migrations/1602869720762_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602869720762_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602869720762_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..aa046ff --- /dev/null +++ b/hasura/migrations/1602869720762_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602870360794_create_table_public_veh_groups/down.yaml b/hasura/migrations/1602870360794_create_table_public_veh_groups/down.yaml new file mode 100644 index 0000000..d3b93f5 --- /dev/null +++ b/hasura/migrations/1602870360794_create_table_public_veh_groups/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."veh_groups"; + type: run_sql diff --git a/hasura/migrations/1602870360794_create_table_public_veh_groups/up.yaml b/hasura/migrations/1602870360794_create_table_public_veh_groups/up.yaml new file mode 100644 index 0000000..3055334 --- /dev/null +++ b/hasura/migrations/1602870360794_create_table_public_veh_groups/up.yaml @@ -0,0 +1,23 @@ +- args: + cascade: false + read_only: false + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + cascade: false + read_only: false + sql: "CREATE TABLE \"public\".\"veh_groups\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"make\" text NOT NULL, \"type\" text NOT NULL, \"group\" + text NOT NULL, PRIMARY KEY (\"id\") );\nCREATE OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_veh_groups_updated_at\"\nBEFORE + UPDATE ON \"public\".\"veh_groups\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_veh_groups_updated_at\" ON \"public\".\"veh_groups\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: veh_groups + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1602870372897_update_permission_user_public_table_veh_groups/down.yaml b/hasura/migrations/1602870372897_update_permission_user_public_table_veh_groups/down.yaml new file mode 100644 index 0000000..7d52713 --- /dev/null +++ b/hasura/migrations/1602870372897_update_permission_user_public_table_veh_groups/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: veh_groups + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1602870372897_update_permission_user_public_table_veh_groups/up.yaml b/hasura/migrations/1602870372897_update_permission_user_public_table_veh_groups/up.yaml new file mode 100644 index 0000000..7d4f270 --- /dev/null +++ b/hasura/migrations/1602870372897_update_permission_user_public_table_veh_groups/up.yaml @@ -0,0 +1,19 @@ +- args: + permission: + allow_aggregations: false + backend_only: false + columns: + - id + - created_at + - updated_at + - make + - type + - group + computed_fields: [] + filter: {} + limit: null + role: user + table: + name: veh_groups + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602870431650_alter_table_public_veh_groups_alter_column_type/down.yaml b/hasura/migrations/1602870431650_alter_table_public_veh_groups_alter_column_type/down.yaml new file mode 100644 index 0000000..ea4b767 --- /dev/null +++ b/hasura/migrations/1602870431650_alter_table_public_veh_groups_alter_column_type/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."veh_groups" ALTER COLUMN "type" SET NOT NULL; + type: run_sql diff --git a/hasura/migrations/1602870431650_alter_table_public_veh_groups_alter_column_type/up.yaml b/hasura/migrations/1602870431650_alter_table_public_veh_groups_alter_column_type/up.yaml new file mode 100644 index 0000000..b6e61f7 --- /dev/null +++ b/hasura/migrations/1602870431650_alter_table_public_veh_groups_alter_column_type/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."veh_groups" ALTER COLUMN "type" DROP NOT NULL; + type: run_sql diff --git a/hasura/migrations/1602873078741_alter_table_public_jobs_add_column_v_age/down.yaml b/hasura/migrations/1602873078741_alter_table_public_jobs_add_column_v_age/down.yaml new file mode 100644 index 0000000..d371886 --- /dev/null +++ b/hasura/migrations/1602873078741_alter_table_public_jobs_add_column_v_age/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "v_age"; + type: run_sql diff --git a/hasura/migrations/1602873078741_alter_table_public_jobs_add_column_v_age/up.yaml b/hasura/migrations/1602873078741_alter_table_public_jobs_add_column_v_age/up.yaml new file mode 100644 index 0000000..6ac8779 --- /dev/null +++ b/hasura/migrations/1602873078741_alter_table_public_jobs_add_column_v_age/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "v_age" numeric NULL; + type: run_sql diff --git a/hasura/migrations/1602873087099_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602873087099_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..f5e3c98 --- /dev/null +++ b/hasura/migrations/1602873087099_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602873087099_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602873087099_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..f990b45 --- /dev/null +++ b/hasura/migrations/1602873087099_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602873093113_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602873093113_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..32ee08b --- /dev/null +++ b/hasura/migrations/1602873093113_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602873093113_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602873093113_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..99f24da --- /dev/null +++ b/hasura/migrations/1602873093113_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602873098109_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602873098109_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..aa046ff --- /dev/null +++ b/hasura/migrations/1602873098109_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602873098109_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602873098109_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..4626eb8 --- /dev/null +++ b/hasura/migrations/1602873098109_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602873194803_alter_table_public_jobs_add_column_asgn_date/down.yaml b/hasura/migrations/1602873194803_alter_table_public_jobs_add_column_asgn_date/down.yaml new file mode 100644 index 0000000..ef01a96 --- /dev/null +++ b/hasura/migrations/1602873194803_alter_table_public_jobs_add_column_asgn_date/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "asgn_date"; + type: run_sql diff --git a/hasura/migrations/1602873194803_alter_table_public_jobs_add_column_asgn_date/up.yaml b/hasura/migrations/1602873194803_alter_table_public_jobs_add_column_asgn_date/up.yaml new file mode 100644 index 0000000..a231d38 --- /dev/null +++ b/hasura/migrations/1602873194803_alter_table_public_jobs_add_column_asgn_date/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "asgn_date" date NULL; + type: run_sql diff --git a/hasura/migrations/1602873201653_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602873201653_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..f990b45 --- /dev/null +++ b/hasura/migrations/1602873201653_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602873201653_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602873201653_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..fe5811f --- /dev/null +++ b/hasura/migrations/1602873201653_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - asgn_date + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602873207955_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602873207955_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..99f24da --- /dev/null +++ b/hasura/migrations/1602873207955_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602873207955_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602873207955_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..e715d98 --- /dev/null +++ b/hasura/migrations/1602873207955_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - asgn_date + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602873213716_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1602873213716_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..4626eb8 --- /dev/null +++ b/hasura/migrations/1602873213716_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602873213716_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1602873213716_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..b7f688a --- /dev/null +++ b/hasura/migrations/1602873213716_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - asgn_date + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602873825801_alter_table_public_jobs_alter_column_asgn_date/down.yaml b/hasura/migrations/1602873825801_alter_table_public_jobs_alter_column_asgn_date/down.yaml new file mode 100644 index 0000000..bc1c975 --- /dev/null +++ b/hasura/migrations/1602873825801_alter_table_public_jobs_alter_column_asgn_date/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."jobs" rename column "loss_date" to "asgn_date"; + type: run_sql diff --git a/hasura/migrations/1602873825801_alter_table_public_jobs_alter_column_asgn_date/up.yaml b/hasura/migrations/1602873825801_alter_table_public_jobs_alter_column_asgn_date/up.yaml new file mode 100644 index 0000000..1f5f622 --- /dev/null +++ b/hasura/migrations/1602873825801_alter_table_public_jobs_alter_column_asgn_date/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."jobs" rename column "asgn_date" to "loss_date"; + type: run_sql diff --git a/hasura/migrations/1602874670231_alter_table_public_joblines_add_column_price_diff/down.yaml b/hasura/migrations/1602874670231_alter_table_public_joblines_add_column_price_diff/down.yaml new file mode 100644 index 0000000..d7aaa1b --- /dev/null +++ b/hasura/migrations/1602874670231_alter_table_public_joblines_add_column_price_diff/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" DROP COLUMN "price_diff"; + type: run_sql diff --git a/hasura/migrations/1602874670231_alter_table_public_joblines_add_column_price_diff/up.yaml b/hasura/migrations/1602874670231_alter_table_public_joblines_add_column_price_diff/up.yaml new file mode 100644 index 0000000..9c8ac58 --- /dev/null +++ b/hasura/migrations/1602874670231_alter_table_public_joblines_add_column_price_diff/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" ADD COLUMN "price_diff" numeric NULL; + type: run_sql diff --git a/hasura/migrations/1602874689611_alter_table_public_joblines_add_column_price_diff_pc/down.yaml b/hasura/migrations/1602874689611_alter_table_public_joblines_add_column_price_diff_pc/down.yaml new file mode 100644 index 0000000..149b942 --- /dev/null +++ b/hasura/migrations/1602874689611_alter_table_public_joblines_add_column_price_diff_pc/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" DROP COLUMN "price_diff_pc"; + type: run_sql diff --git a/hasura/migrations/1602874689611_alter_table_public_joblines_add_column_price_diff_pc/up.yaml b/hasura/migrations/1602874689611_alter_table_public_joblines_add_column_price_diff_pc/up.yaml new file mode 100644 index 0000000..dfe352c --- /dev/null +++ b/hasura/migrations/1602874689611_alter_table_public_joblines_add_column_price_diff_pc/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" ADD COLUMN "price_diff_pc" numeric NULL; + type: run_sql diff --git a/hasura/migrations/1602875306082_run_sql_migration/down.yaml b/hasura/migrations/1602875306082_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1602875306082_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1602875306082_run_sql_migration/up.yaml b/hasura/migrations/1602875306082_run_sql_migration/up.yaml new file mode 100644 index 0000000..76f8070 --- /dev/null +++ b/hasura/migrations/1602875306082_run_sql_migration/up.yaml @@ -0,0 +1,20 @@ +- args: + cascade: true + read_only: false + sql: |- + CREATE OR REPLACE FUNCTION public.calculate_job_line() + RETURNS trigger + LANGUAGE plpgsql + AS $function$ + DECLARE + _new record; + BEGIN + _new := NEW; + _new."price_diff" = _new."db_price" - _new."act_price"; + _new."price_diff_pc" = (_new."db_price" - _new."act_price") / _new."db_price"; + _new."updated_at" = NOW(); + RETURN _new; + END; + $function$ + ; + type: run_sql diff --git a/hasura/migrations/1602875452605_run_sql_migration/down.yaml b/hasura/migrations/1602875452605_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1602875452605_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1602875452605_run_sql_migration/up.yaml b/hasura/migrations/1602875452605_run_sql_migration/up.yaml new file mode 100644 index 0000000..e48f8d7 --- /dev/null +++ b/hasura/migrations/1602875452605_run_sql_migration/up.yaml @@ -0,0 +1,9 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.calculate_job_line()\n RETURNS trigger\n + LANGUAGE plpgsql\nAS $function$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n + _new.\"price_diff\" = _new.\"db_price\" - _new.\"act_price\";\n\nif _new.\"db_price\" + > 0 then \n_new.\"price_diff_pc\" = (_new.\"db_price\" - _new.\"act_price\") + / _new.\"db_price\";\n\nend if;\n\n RETURN _new;\nEND;\n$function$\n;" + type: run_sql diff --git a/hasura/migrations/1602875615937_run_sql_migration/down.yaml b/hasura/migrations/1602875615937_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1602875615937_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1602875615937_run_sql_migration/up.yaml b/hasura/migrations/1602875615937_run_sql_migration/up.yaml new file mode 100644 index 0000000..67561df --- /dev/null +++ b/hasura/migrations/1602875615937_run_sql_migration/up.yaml @@ -0,0 +1,9 @@ +- args: + cascade: true + read_only: false + sql: |- + create trigger calculate_updated_job_line before + update + on + public.joblines for each row execute procedure calculate_job_line(); + type: run_sql diff --git a/hasura/migrations/1602876420093_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602876420093_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..07751de --- /dev/null +++ b/hasura/migrations/1602876420093_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602876420093_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602876420093_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..1b9527e --- /dev/null +++ b/hasura/migrations/1602876420093_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - price_diff + - price_diff_pc + - unq_seq + - updated_at + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1602876426498_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602876426498_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..3d184ad --- /dev/null +++ b/hasura/migrations/1602876426498_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + computed_fields: [] + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602876426498_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602876426498_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..518eff7 --- /dev/null +++ b/hasura/migrations/1602876426498_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - price_diff + - price_diff_pc + - unq_seq + - updated_at + computed_fields: [] + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602876432715_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1602876432715_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 0000000..09fb18d --- /dev/null +++ b/hasura/migrations/1602876432715_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - unq_seq + - updated_at + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602876432715_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1602876432715_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 0000000..f753d5a --- /dev/null +++ b/hasura/migrations/1602876432715_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - act_price + - created_at + - db_price + - db_ref + - id + - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - price_diff + - price_diff_pc + - unq_seq + - updated_at + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602881581659_create_table_public_targets/down.yaml b/hasura/migrations/1602881581659_create_table_public_targets/down.yaml new file mode 100644 index 0000000..58d4141 --- /dev/null +++ b/hasura/migrations/1602881581659_create_table_public_targets/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."targets"; + type: run_sql diff --git a/hasura/migrations/1602881581659_create_table_public_targets/up.yaml b/hasura/migrations/1602881581659_create_table_public_targets/up.yaml new file mode 100644 index 0000000..bdb42ab --- /dev/null +++ b/hasura/migrations/1602881581659_create_table_public_targets/up.yaml @@ -0,0 +1,23 @@ +- args: + cascade: false + read_only: false + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + cascade: false + read_only: false + sql: "CREATE TABLE \"public\".\"targets\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"updated_at\" timestamptz NOT NULL DEFAULT now(), \"created_at\" timestamptz + NOT NULL DEFAULT now(), \"label\" text NOT NULL, \"config\" jsonb NOT NULL DEFAULT + jsonb_build_object(), \"start_date\" date NOT NULL, \"end_date\" date, PRIMARY + KEY (\"id\") );\nCREATE OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_targets_updated_at\"\nBEFORE + UPDATE ON \"public\".\"targets\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_targets_updated_at\" ON \"public\".\"targets\" \nIS + 'trigger to set value of column \"updated_at\" to current timestamp on row update';" + type: run_sql +- args: + name: targets + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1602881591377_update_permission_user_public_table_targets/down.yaml b/hasura/migrations/1602881591377_update_permission_user_public_table_targets/down.yaml new file mode 100644 index 0000000..f39ea3a --- /dev/null +++ b/hasura/migrations/1602881591377_update_permission_user_public_table_targets/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: targets + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1602881591377_update_permission_user_public_table_targets/up.yaml b/hasura/migrations/1602881591377_update_permission_user_public_table_targets/up.yaml new file mode 100644 index 0000000..c50793b --- /dev/null +++ b/hasura/migrations/1602881591377_update_permission_user_public_table_targets/up.yaml @@ -0,0 +1,20 @@ +- args: + permission: + allow_aggregations: false + backend_only: false + columns: + - id + - updated_at + - created_at + - label + - config + - start_date + - end_date + computed_fields: [] + filter: {} + limit: null + role: user + table: + name: targets + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602881684708_drop_table_public_targets/down.yaml b/hasura/migrations/1602881684708_drop_table_public_targets/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1602881684708_drop_table_public_targets/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1602881684708_drop_table_public_targets/up.yaml b/hasura/migrations/1602881684708_drop_table_public_targets/up.yaml new file mode 100644 index 0000000..58d4141 --- /dev/null +++ b/hasura/migrations/1602881684708_drop_table_public_targets/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."targets"; + type: run_sql diff --git a/hasura/migrations/1602881697769_alter_table_public_bodyshops_add_column_targets/down.yaml b/hasura/migrations/1602881697769_alter_table_public_bodyshops_add_column_targets/down.yaml new file mode 100644 index 0000000..29153d6 --- /dev/null +++ b/hasura/migrations/1602881697769_alter_table_public_bodyshops_add_column_targets/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "targets"; + type: run_sql diff --git a/hasura/migrations/1602881697769_alter_table_public_bodyshops_add_column_targets/up.yaml b/hasura/migrations/1602881697769_alter_table_public_bodyshops_add_column_targets/up.yaml new file mode 100644 index 0000000..2656d12 --- /dev/null +++ b/hasura/migrations/1602881697769_alter_table_public_bodyshops_add_column_targets/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "targets" jsonb NULL DEFAULT + jsonb_build_object(); + type: run_sql diff --git a/hasura/migrations/1602881706088_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1602881706088_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 0000000..6854447 --- /dev/null +++ b/hasura/migrations/1602881706088_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,25 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - id + - created_at + - updated_at + - shopname + computed_fields: [] + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602881706088_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1602881706088_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 0000000..a777f71 --- /dev/null +++ b/hasura/migrations/1602881706088_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,26 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - id + - shopname + - targets + - updated_at + computed_fields: [] + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602881715816_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1602881715816_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 0000000..0c08e23 --- /dev/null +++ b/hasura/migrations/1602881715816_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1602881715816_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1602881715816_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 0000000..04abe31 --- /dev/null +++ b/hasura/migrations/1602881715816_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,16 @@ +- args: + permission: + backend_only: false + columns: + - targets + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: bodyshops + schema: public + type: create_update_permission diff --git a/hasura/migrations/1602889815353_alter_table_public_bodyshops_add_column_accepted_ins_co/down.yaml b/hasura/migrations/1602889815353_alter_table_public_bodyshops_add_column_accepted_ins_co/down.yaml new file mode 100644 index 0000000..05743ac --- /dev/null +++ b/hasura/migrations/1602889815353_alter_table_public_bodyshops_add_column_accepted_ins_co/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "accepted_ins_co"; + type: run_sql diff --git a/hasura/migrations/1602889815353_alter_table_public_bodyshops_add_column_accepted_ins_co/up.yaml b/hasura/migrations/1602889815353_alter_table_public_bodyshops_add_column_accepted_ins_co/up.yaml new file mode 100644 index 0000000..4453703 --- /dev/null +++ b/hasura/migrations/1602889815353_alter_table_public_bodyshops_add_column_accepted_ins_co/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "accepted_ins_co" jsonb NULL + DEFAULT jsonb_build_array(); + type: run_sql diff --git a/hasura/migrations/1602889830378_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1602889830378_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 0000000..a777f71 --- /dev/null +++ b/hasura/migrations/1602889830378_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,26 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - id + - shopname + - targets + - updated_at + computed_fields: [] + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1602889830378_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1602889830378_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 0000000..c82a190 --- /dev/null +++ b/hasura/migrations/1602889830378_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,27 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - accepted_ins_co + - created_at + - id + - shopname + - targets + - updated_at + computed_fields: [] + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1603128778624_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1603128778624_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 0000000..a23038f --- /dev/null +++ b/hasura/migrations/1603128778624_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,21 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - targets + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: bodyshops + schema: public + type: create_update_permission diff --git a/hasura/migrations/1603128778624_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1603128778624_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 0000000..b8ad060 --- /dev/null +++ b/hasura/migrations/1603128778624_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,23 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - accepted_ins_co + - shopname + - targets + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: bodyshops + schema: public + type: create_update_permission diff --git a/hasura/migrations/1603130811501_alter_table_public_jobs_add_column_close_date/down.yaml b/hasura/migrations/1603130811501_alter_table_public_jobs_add_column_close_date/down.yaml new file mode 100644 index 0000000..14d5427 --- /dev/null +++ b/hasura/migrations/1603130811501_alter_table_public_jobs_add_column_close_date/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "close_date"; + type: run_sql diff --git a/hasura/migrations/1603130811501_alter_table_public_jobs_add_column_close_date/up.yaml b/hasura/migrations/1603130811501_alter_table_public_jobs_add_column_close_date/up.yaml new file mode 100644 index 0000000..733e08a --- /dev/null +++ b/hasura/migrations/1603130811501_alter_table_public_jobs_add_column_close_date/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "close_date" date NULL; + type: run_sql diff --git a/hasura/migrations/1603130822114_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1603130822114_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..7be4c70 --- /dev/null +++ b/hasura/migrations/1603130822114_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - loss_date + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1603130822114_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1603130822114_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..d88cdc2 --- /dev/null +++ b/hasura/migrations/1603130822114_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,42 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + backend_only: false + check: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + columns: + - bodyshopid + - clm_no + - clm_total + - close_date + - created_at + - group + - id + - ins_co_nm + - loss_date + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1603130828389_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1603130828389_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..048a25d --- /dev/null +++ b/hasura/migrations/1603130828389_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - loss_date + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1603130828389_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1603130828389_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..aaed297 --- /dev/null +++ b/hasura/migrations/1603130828389_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,42 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - bodyshopid + - clm_no + - clm_total + - close_date + - created_at + - group + - id + - ins_co_nm + - loss_date + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + computed_fields: [] + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1603130833789_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1603130833789_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 0000000..6c7005c --- /dev/null +++ b/hasura/migrations/1603130833789_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - loss_date + - bodyshopid + - clm_no + - clm_total + - created_at + - group + - id + - ins_co_nm + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1603130833789_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1603130833789_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 0000000..619edd7 --- /dev/null +++ b/hasura/migrations/1603130833789_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - clm_no + - clm_total + - close_date + - created_at + - group + - id + - ins_co_nm + - loss_date + - ownr_fn + - ownr_ln + - ro_number + - updated_at + - v_age + - v_makedesc + - v_mileage + - v_model + - v_model_yr + - v_type + - v_vin + filter: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1603135634854_run_sql_migration/down.yaml b/hasura/migrations/1603135634854_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1603135634854_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1603135634854_run_sql_migration/up.yaml b/hasura/migrations/1603135634854_run_sql_migration/up.yaml new file mode 100644 index 0000000..af0ec8e --- /dev/null +++ b/hasura/migrations/1603135634854_run_sql_migration/up.yaml @@ -0,0 +1,16 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_jobs(search text)\r\n RETURNS SETOF + jobs\r\n LANGUAGE plpgsql\r\n STABLE\r\nAS $function$ BEGIN if search = '' then + return query\r\nselect *\r\nfrom jobs j;\r\nelse return query\r\nSELECT *\r\nFROM + jobs j2\r\nWHERE ownr_fn ILIKE '%' || search || '%'\r\n or ownr_ln ILIKE + '%' || search || '%'\r\n \r\n or clm_no ILIKE '%' || search || '%'\r\n\r\nORDER + BY \r\n clm_no ILIKE '%' || search || '%'\r\n OR null,\r\n ownr_fn + ILIKE '%' || search || '%'\r\n OR NULL,\r\n ownr_ln ILIKE '%' || search + || '%'\r\n OR NULL;\r\nend if;\r\nEND $function$;" + type: run_sql +- args: + name: search_jobs + schema: public + type: track_function diff --git a/hasura/migrations/1603135748604_run_sql_migration/down.yaml b/hasura/migrations/1603135748604_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1603135748604_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1603135748604_run_sql_migration/up.yaml b/hasura/migrations/1603135748604_run_sql_migration/up.yaml new file mode 100644 index 0000000..fad1f40 --- /dev/null +++ b/hasura/migrations/1603135748604_run_sql_migration/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: true + read_only: false + sql: drop FUNCTION public.search_jobs; + type: run_sql diff --git a/hasura/migrations/1603135755518_run_sql_migration/down.yaml b/hasura/migrations/1603135755518_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1603135755518_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1603135755518_run_sql_migration/up.yaml b/hasura/migrations/1603135755518_run_sql_migration/up.yaml new file mode 100644 index 0000000..982c2bb --- /dev/null +++ b/hasura/migrations/1603135755518_run_sql_migration/up.yaml @@ -0,0 +1,16 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_jobs(search text, startDate date, + endDate date)\n RETURNS SETOF jobs\n LANGUAGE plpgsql\n STABLE\nAS $function$ + BEGIN if search = '' then return query\nselect *\nfrom jobs j;\nelse return + query\nSELECT *\nFROM jobs j2\nWHERE ownr_fn ILIKE '%' || search || '%'\n or + ownr_ln ILIKE '%' || search || '%'\n \n or clm_no ILIKE '%' || search || + '%'\n\nORDER BY \n clm_no ILIKE '%' || search || '%'\n OR null,\n ownr_fn + ILIKE '%' || search || '%'\n OR NULL,\n ownr_ln ILIKE '%' || search || + '%'\n OR NULL;\nend if;\nEND $function$;" + type: run_sql +- args: + name: search_jobs + schema: public + type: track_function diff --git a/hasura/migrations/1603135821609_run_sql_migration/down.yaml b/hasura/migrations/1603135821609_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1603135821609_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1603135821609_run_sql_migration/up.yaml b/hasura/migrations/1603135821609_run_sql_migration/up.yaml new file mode 100644 index 0000000..c8c41d5 --- /dev/null +++ b/hasura/migrations/1603135821609_run_sql_migration/up.yaml @@ -0,0 +1,13 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_jobs(search text, startDate date, + endDate date)\n RETURNS SETOF jobs\n LANGUAGE plpgsql\n STABLE\nAS $function$ + BEGIN if search = '' then return query\nselect *\nfrom jobs j;\nelse return + query\nSELECT *\nFROM jobs j2\nWHERE \nclose_date between startDate and endDate + \ and\n(\nownr_fn ILIKE '%' || search || '%'\n or ownr_ln ILIKE '%' || search + || '%'\n \n or clm_no ILIKE '%' || search || '%')\n\nORDER BY \n clm_no + ILIKE '%' || search || '%'\n OR null,\n ownr_fn ILIKE '%' || search || + '%'\n OR NULL,\n ownr_ln ILIKE '%' || search || '%'\n OR NULL;\nend + if;\nEND $function$;" + type: run_sql diff --git a/hasura/migrations/1603135880002_run_sql_migration/down.yaml b/hasura/migrations/1603135880002_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1603135880002_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1603135880002_run_sql_migration/up.yaml b/hasura/migrations/1603135880002_run_sql_migration/up.yaml new file mode 100644 index 0000000..5c88108 --- /dev/null +++ b/hasura/migrations/1603135880002_run_sql_migration/up.yaml @@ -0,0 +1,18 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_jobs(search text, startDate date, + endDate date)\n RETURNS SETOF jobs\n LANGUAGE plpgsql\n STABLE\nAS $function$ + BEGIN if search = '' then return query\nselect *\nfrom jobs j;\nelse\n\nif startDate + is null || endDate is null then \nreturn query\nSELECT *\nFROM jobs j2\nWHERE + \n\nownr_fn ILIKE '%' || search || '%'\n or ownr_ln ILIKE '%' || search || + '%'\n \n or clm_no ILIKE '%' || search || '%'\nORDER BY \n clm_no ILIKE + '%' || search || '%'\n OR null,\n ownr_fn ILIKE '%' || search || '%'\n + \ OR NULL,\n ownr_ln ILIKE '%' || search || '%'\n OR NULL;\nelse \nreturn + query\nSELECT *\nFROM jobs j2\nWHERE \nclose_date between startDate and endDate + \ and\n(\nownr_fn ILIKE '%' || search || '%'\n or ownr_ln ILIKE '%' || search + || '%'\n \n or clm_no ILIKE '%' || search || '%')\n\nORDER BY \n clm_no + ILIKE '%' || search || '%'\n OR null,\n ownr_fn ILIKE '%' || search || + '%'\n OR NULL,\n ownr_ln ILIKE '%' || search || '%'\n OR NULL;\n\nend + if;\n\n\nend if;\nEND $function$;" + type: run_sql diff --git a/hasura/migrations/1603135999901_run_sql_migration/down.yaml b/hasura/migrations/1603135999901_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1603135999901_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1603135999901_run_sql_migration/up.yaml b/hasura/migrations/1603135999901_run_sql_migration/up.yaml new file mode 100644 index 0000000..a00240f --- /dev/null +++ b/hasura/migrations/1603135999901_run_sql_migration/up.yaml @@ -0,0 +1,18 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_jobs(search text, startdate date, + enddate date)\n RETURNS SETOF jobs\n LANGUAGE plpgsql\n STABLE\nAS $function$ + BEGIN if search = '' then return query\nselect *\nfrom jobs j;\nelse\n\nif (startDate + is null) || (endDate is null) then \nreturn query\nSELECT *\nFROM jobs j2\nWHERE + \n\nownr_fn ILIKE '%' || search || '%'\n or ownr_ln ILIKE '%' || search || + '%'\n \n or clm_no ILIKE '%' || search || '%'\nORDER BY \n clm_no ILIKE + '%' || search || '%'\n OR null,\n ownr_fn ILIKE '%' || search || '%'\n + \ OR NULL,\n ownr_ln ILIKE '%' || search || '%'\n OR NULL;\nelse \nreturn + query\nSELECT *\nFROM jobs j2\nWHERE \nclose_date between startDate and endDate + \ and\n(\nownr_fn ILIKE '%' || search || '%'\n or ownr_ln ILIKE '%' || search + || '%'\n \n or clm_no ILIKE '%' || search || '%')\n\nORDER BY \n clm_no + ILIKE '%' || search || '%'\n OR null,\n ownr_fn ILIKE '%' || search || + '%'\n OR NULL,\n ownr_ln ILIKE '%' || search || '%'\n OR NULL;\n\nend + if;\n\n\nend if;\nEND $function$;" + type: run_sql diff --git a/hasura/migrations/1603136020110_run_sql_migration/down.yaml b/hasura/migrations/1603136020110_run_sql_migration/down.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hasura/migrations/1603136020110_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1603136020110_run_sql_migration/up.yaml b/hasura/migrations/1603136020110_run_sql_migration/up.yaml new file mode 100644 index 0000000..9fd5cec --- /dev/null +++ b/hasura/migrations/1603136020110_run_sql_migration/up.yaml @@ -0,0 +1,18 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_jobs(search text, startdate date, + enddate date)\n RETURNS SETOF jobs\n LANGUAGE plpgsql\n STABLE\nAS $function$ + BEGIN if search = '' then return query\nselect *\nfrom jobs j;\nelse\n\nif (startDate + is null) or (endDate is null) then \nreturn query\nSELECT *\nFROM jobs j2\nWHERE + \n\nownr_fn ILIKE '%' || search || '%'\n or ownr_ln ILIKE '%' || search || + '%'\n \n or clm_no ILIKE '%' || search || '%'\nORDER BY \n clm_no ILIKE + '%' || search || '%'\n OR null,\n ownr_fn ILIKE '%' || search || '%'\n + \ OR NULL,\n ownr_ln ILIKE '%' || search || '%'\n OR NULL;\nelse \nreturn + query\nSELECT *\nFROM jobs j2\nWHERE \nclose_date between startDate and endDate + \ and\n(\nownr_fn ILIKE '%' || search || '%'\n or ownr_ln ILIKE '%' || search + || '%'\n \n or clm_no ILIKE '%' || search || '%')\n\nORDER BY \n clm_no + ILIKE '%' || search || '%'\n OR null,\n ownr_fn ILIKE '%' || search || + '%'\n OR NULL,\n ownr_ln ILIKE '%' || search || '%'\n OR NULL;\n\nend + if;\n\n\nend if;\nEND $function$;" + type: run_sql diff --git a/hasura/migrations/metadata.yaml b/hasura/migrations/metadata.yaml index d660583..2942282 100644 --- a/hasura/migrations/metadata.yaml +++ b/hasura/migrations/metadata.yaml @@ -42,15 +42,30 @@ tables: - role: user permission: columns: - - id + - accepted_ins_co - created_at - - updated_at + - id - shopname + - targets + - updated_at filter: associations: user: authid: _eq: X-Hasura-User-Id + update_permissions: + - role: user + permission: + columns: + - accepted_ins_co + - shopname + - targets + filter: + associations: + user: + authid: + _eq: X-Hasura-User-Id + check: null - table: schema: public name: joblines @@ -70,34 +85,42 @@ tables: _eq: X-Hasura-User-Id columns: - act_price - - db_price - - part_qty - - line_desc - - line_ind - - oem_partno - - part_type - - unq_seq - created_at - - updated_at + - db_price + - db_ref - id - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - price_diff + - price_diff_pc + - unq_seq + - updated_at backend_only: false select_permissions: - role: user permission: columns: - act_price - - db_price - - part_qty - - line_desc - - line_ind - - oem_partno - - part_type - - unq_seq - created_at - - updated_at + - db_price + - db_ref - id - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - price_diff + - price_diff_pc + - unq_seq + - updated_at filter: job: bodyshop: @@ -110,17 +133,21 @@ tables: permission: columns: - act_price - - db_price - - part_qty - - line_desc - - line_ind - - oem_partno - - part_type - - unq_seq - created_at - - updated_at + - db_price + - db_ref - id - jobid + - line_desc + - line_ind + - line_no + - oem_partno + - part_qty + - part_type + - price_diff + - price_diff_pc + - unq_seq + - updated_at filter: job: bodyshop: @@ -129,6 +156,16 @@ tables: authid: _eq: X-Hasura-User-Id check: null + delete_permissions: + - role: user + permission: + filter: + job: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id - table: schema: public name: jobs @@ -154,41 +191,51 @@ tables: authid: _eq: X-Hasura-User-Id columns: - - id - bodyshopid - - created_at - - updated_at - - ro_number - - ins_co_nm - clm_no - clm_total - - ownr_ln + - close_date + - created_at + - group + - id + - ins_co_nm + - loss_date - ownr_fn - - v_vin + - ownr_ln + - ro_number + - updated_at + - v_age - v_makedesc + - v_mileage - v_model - v_model_yr - v_type + - v_vin backend_only: false select_permissions: - role: user permission: columns: - - clm_total + - bodyshopid - clm_no + - clm_total + - close_date + - created_at + - group + - id - ins_co_nm + - loss_date - ownr_fn - ownr_ln - ro_number + - updated_at + - v_age - v_makedesc + - v_mileage - v_model - v_model_yr - v_type - v_vin - - created_at - - updated_at - - bodyshopid - - id filter: bodyshop: associations: @@ -200,21 +247,26 @@ tables: - role: user permission: columns: - - clm_total + - bodyshopid - clm_no + - clm_total + - close_date + - created_at + - group + - id - ins_co_nm + - loss_date - ownr_fn - ownr_ln - ro_number + - updated_at + - v_age - v_makedesc + - v_mileage - v_model - v_model_yr - v_type - v_vin - - created_at - - updated_at - - bodyshopid - - id filter: bodyshop: associations: @@ -263,3 +315,21 @@ tables: authid: _eq: X-Hasura-User-Id check: null +- table: + schema: public + name: veh_groups + select_permissions: + - role: user + permission: + columns: + - id + - created_at + - updated_at + - make + - type + - group + filter: {} +functions: +- function: + schema: public + name: search_jobs diff --git a/package-lock.json b/package-lock.json index b810aa4..7e6cc99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,15 @@ { "name": "imexrps", - "version": "0.0.1", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { + "7zip-bin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.0.3.tgz", + "integrity": "sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==", + "dev": true + }, "@ant-design/colors": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-4.0.5.tgz", @@ -1353,380 +1359,14 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, - "@electron-forge/async-ora": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/async-ora/-/async-ora-6.0.0-beta.53.tgz", - "integrity": "sha512-OcYJvKYgUL/eGGHsvawELgT528hrnUmyAisESx8ZE06i+jEa/c/wfC6fUAFuBGDr8n+yqgOLbF4xfzAvW9jgZQ==", + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, "requires": { - "colors": "^1.4.0", - "debug": "^4.1.0", - "log-symbols": "^4.0.0", - "ora": "^5.0.0", - "pretty-ms": "^7.0.0" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@electron-forge/cli": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-6.0.0-beta.53.tgz", - "integrity": "sha512-+ZtttPDCp7I7KKyvj1r52TM/AZpQRYuPM8X6IjBzgiryJ7BUDyZmsNtjuJtiRH0H9q1HGEUoD6RWFZVLhSEaXQ==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "@electron-forge/core": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "@electron/get": "^1.9.0", - "colors": "^1.4.0", - "commander": "^4.1.1", - "debug": "^4.1.0", - "fs-extra": "^9.0.1", - "inquirer": "^7.3.3", - "semver": "^7.2.1" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@electron-forge/core": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-6.0.0-beta.53.tgz", - "integrity": "sha512-pobdG5LYzMyErPDDMK+IYcvlYueP+qTXNIneOqhp3ztnMJaH6ibvJXoBLP3SOu1miHvIktPqS0w44U9w/4AJ4g==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "@electron-forge/installer-base": "6.0.0-beta.53", - "@electron-forge/installer-deb": "6.0.0-beta.53", - "@electron-forge/installer-dmg": "6.0.0-beta.53", - "@electron-forge/installer-exe": "6.0.0-beta.53", - "@electron-forge/installer-rpm": "6.0.0-beta.53", - "@electron-forge/installer-zip": "6.0.0-beta.53", - "@electron-forge/maker-base": "6.0.0-beta.53", - "@electron-forge/plugin-base": "6.0.0-beta.53", - "@electron-forge/publisher-base": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "@electron-forge/template-base": "6.0.0-beta.53", - "@electron-forge/template-typescript": "6.0.0-beta.53", - "@electron-forge/template-typescript-webpack": "6.0.0-beta.53", - "@electron-forge/template-webpack": "6.0.0-beta.53", - "@electron/get": "^1.9.0", - "@malept/cross-spawn-promise": "^1.1.0", - "colors": "^1.4.0", - "debug": "^4.1.0", - "electron-packager": "^15.0.0", - "electron-rebuild": "^2.0.0", - "find-up": "^5.0.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.5", - "lodash": "^4.17.20", - "log-symbols": "^4.0.0", - "node-fetch": "^2.6.0", - "nugget": "^2.0.1", - "resolve-package": "^1.0.1", - "semver": "^7.2.1", - "source-map-support": "^0.5.13", - "sudo-prompt": "^9.1.1", - "username": "^5.1.0", - "yarn-or-npm": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@electron-forge/installer-base": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-base/-/installer-base-6.0.0-beta.53.tgz", - "integrity": "sha512-4oQmPNssL52/jUWvxqOC7R16VAtbOlh+/NnDqLmUk6fPClxd28mHipGhAGtrJVlwlU9aTsHHESagstiUID138Q==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53" - } - }, - "@electron-forge/installer-darwin": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-darwin/-/installer-darwin-6.0.0-beta.53.tgz", - "integrity": "sha512-pT1Ek89NbLWSN5GS9cj439MGG4yP4SB41OcgVvaqtPkmZqjiWAriXSKaYPcMA791LhzNf6mbl8KVFfiIw6DpwA==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "@electron-forge/installer-base": "6.0.0-beta.53", - "fs-extra": "^9.0.1", - "sudo-prompt": "^9.1.1" - } - }, - "@electron-forge/installer-deb": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-deb/-/installer-deb-6.0.0-beta.53.tgz", - "integrity": "sha512-hqArASsii8ZGuKgKIn4uBoEV/YnXD+Xnl/HxkI0ciu6/zgliWNX+1d1PSsjKyZnPbyACCbgRrRIr3DAQGh2Fog==", - "dev": true, - "requires": { - "@electron-forge/installer-linux": "6.0.0-beta.53" - } - }, - "@electron-forge/installer-dmg": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-dmg/-/installer-dmg-6.0.0-beta.53.tgz", - "integrity": "sha512-kNPpDbCsaD+tgw/NwMZDKU7XYCO44M8DZmZW7b5+miNhRtr01yI5ftR51yBknjNG26c+6qWo3rUdndep9C0J7Q==", - "dev": true, - "requires": { - "@electron-forge/installer-darwin": "6.0.0-beta.53", - "@malept/cross-spawn-promise": "^1.1.0", - "debug": "^4.1.0", - "fs-extra": "^9.0.1" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@electron-forge/installer-exe": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-exe/-/installer-exe-6.0.0-beta.53.tgz", - "integrity": "sha512-be/thRJVNk+MvZSRsw83kcvZ4XbGPD3m5hppQNi8S5vkCI2Jn5rT3rYS+017ch0S6pF64OGhcvuASCk9KXMRLg==", - "dev": true, - "requires": { - "@electron-forge/installer-base": "6.0.0-beta.53", - "open": "^7.2.0" - } - }, - "@electron-forge/installer-linux": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-linux/-/installer-linux-6.0.0-beta.53.tgz", - "integrity": "sha512-odtrSeKnlcK+EgH/3tgRthxVcET288i1gHRKItkhfrRo+8dPuSFapRPaiQ1ToVHlAtTlosyjIKrDznm/6EIaPQ==", - "dev": true, - "requires": { - "@electron-forge/installer-base": "6.0.0-beta.53", - "sudo-prompt": "^9.1.1" - } - }, - "@electron-forge/installer-rpm": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-rpm/-/installer-rpm-6.0.0-beta.53.tgz", - "integrity": "sha512-v7hmthGdxeKuZ7JKzgM9mMrhA7+xcUWndhn9ndWxxYQ1iy372OvjAoxDTAWW+TwZstK058gElmZ57iY4BsKJAw==", - "dev": true, - "requires": { - "@electron-forge/installer-linux": "6.0.0-beta.53" - } - }, - "@electron-forge/installer-zip": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/installer-zip/-/installer-zip-6.0.0-beta.53.tgz", - "integrity": "sha512-x8Y/dQPJ7OWBCF6CQud/ERT7+e8Pk7T24MFwUnOPbSwNaDagD/RwtZuUzuDz9PYnS6+KLKr5rCyIYt4ny5vaIA==", - "dev": true, - "requires": { - "@electron-forge/installer-darwin": "6.0.0-beta.53", - "@malept/cross-spawn-promise": "^1.1.0", - "fs-extra": "^9.0.1" - } - }, - "@electron-forge/maker-base": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-6.0.0-beta.53.tgz", - "integrity": "sha512-3Q77O1ivfKXZDqvOX7UmsUoSBMDokkWvRqPGy9sF1OELYLymnqNLPLoIWKqyfVXTAdnfiEQhoSUS7VTIJ1W6Gg==", - "dev": true, - "requires": { - "@electron-forge/shared-types": "6.0.0-beta.53", - "fs-extra": "^9.0.1", - "which": "^2.0.2" - } - }, - "@electron-forge/maker-deb": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-6.0.0-beta.53.tgz", - "integrity": "sha512-bKhfLFY0qfUUPTYuGiU8N4dJKIjWpDeJlE3oP6h49O5GSHwx/eEjQRS2ckT+410HQ3WYXpZFzVc4A8bUz5ej0Q==", - "dev": true, - "requires": { - "@electron-forge/maker-base": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "electron-installer-debian": "^3.0.0" - } - }, - "@electron-forge/maker-rpm": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-6.0.0-beta.53.tgz", - "integrity": "sha512-tKL1yYVS6uY7XsuJX8JKQGLtdXDjrr1R8S2JnvvaZ3fT+oDQ0vdptcjQ1QqVTzKNN3VDOI46kLG5gyLVNSl4wQ==", - "dev": true, - "requires": { - "@electron-forge/maker-base": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "electron-installer-redhat": "^3.2.0" - } - }, - "@electron-forge/maker-squirrel": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-6.0.0-beta.53.tgz", - "integrity": "sha512-CoaJPFrxWnOHOgWAmit9OtnBD/JqUPy1hGrMugrjmRvR4xQNQU5mHF2oeY2dQlgYg2Ecdiw1Rf4o8qI/KXu/RQ==", - "dev": true, - "requires": { - "@electron-forge/maker-base": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "electron-winstaller": "^4.0.1", - "fs-extra": "^9.0.1" - } - }, - "@electron-forge/maker-zip": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-6.0.0-beta.53.tgz", - "integrity": "sha512-FwpRSAmYTts0cFVHsWfGG+r3vI8Yyf53cFxAarE7Lll+Efu6I9S43CbusDZR1cB3Ywy2TXs2Kv09rXYJv6OY0A==", - "dev": true, - "requires": { - "@electron-forge/maker-base": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "cross-zip": "^3.0.0", - "fs-extra": "^9.0.1" - } - }, - "@electron-forge/plugin-base": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-6.0.0-beta.53.tgz", - "integrity": "sha512-yF5XKoerM+wNIrpDlFnrVrlQZL7AaFeO85Krt8k97JqUILoMJSlltkB7vw3+o1or2speowMknjAHiM+/lVBKiw==", - "dev": true, - "requires": { - "@electron-forge/shared-types": "6.0.0-beta.53" - } - }, - "@electron-forge/publisher-base": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-6.0.0-beta.53.tgz", - "integrity": "sha512-ZwQmQuaDtcoltncqEs3qTXPqJQvCAnavfHm/aS889FaiEc5B1lpdzcSFoobiJIVODP4dKJ3PFMDALeNmVu7iGw==", - "dev": true, - "requires": { - "@electron-forge/shared-types": "6.0.0-beta.53" - } - }, - "@electron-forge/shared-types": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.0.0-beta.53.tgz", - "integrity": "sha512-9aurSLerLV/xnmOca6wj1oeYZOtLfJAxZcXmKcz/MYsMz1RoiHR/bdN47JfzvJ4f0o3lb12perxhS8mZTTVfnA==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "electron-packager": "^15.0.0", - "electron-rebuild": "^2.0.0", - "ora": "^5.0.0" - } - }, - "@electron-forge/template-base": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-6.0.0-beta.53.tgz", - "integrity": "sha512-EghExFKjwkUZMgXCrKZOdabMovU2AjGRyCDk841eJ77+Y/SrzP/mcnL3I59JZelE9T2GE/6aLjh0dzDIYx+4bw==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "debug": "^4.1.0", - "fs-extra": "^9.0.1", - "username": "^5.1.0" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@electron-forge/template-typescript": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/template-typescript/-/template-typescript-6.0.0-beta.53.tgz", - "integrity": "sha512-HS5IOq2UOjyFIsEU5tPRPzsC6C2m5RWh4XC5aD2rGV9qn9Z5G9zdsZts48hQpENJriVJ2PFIcGcoi2gMa55YHQ==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "@electron-forge/template-base": "6.0.0-beta.53", - "fs-extra": "^9.0.1" - } - }, - "@electron-forge/template-typescript-webpack": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/template-typescript-webpack/-/template-typescript-webpack-6.0.0-beta.53.tgz", - "integrity": "sha512-uYRR2NYPTyzU0WKUdQXU5dbyoql1yzMTMxOjuddTV4pv+iOTX9pA2SZq5kAVpcdfyzECzNV2wf2/bgo8kT9F0g==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "@electron-forge/template-base": "6.0.0-beta.53", - "fs-extra": "^9.0.1" - } - }, - "@electron-forge/template-webpack": { - "version": "6.0.0-beta.53", - "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-6.0.0-beta.53.tgz", - "integrity": "sha512-8fONJQUlklXY+EDxbufdZHcZjPGLmSZBbjx1DmsFXyO4z7Wn/7ZAsBiWQNt8HnRch4HF2HbSK/JwlZJo2BNBVA==", - "dev": true, - "requires": { - "@electron-forge/async-ora": "6.0.0-beta.53", - "@electron-forge/shared-types": "6.0.0-beta.53", - "@electron-forge/template-base": "6.0.0-beta.53", - "fs-extra": "^9.0.1" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" } }, "@electron/get": { @@ -1832,9 +1472,9 @@ "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==" }, "@firebase/auth": { - "version": "0.14.9", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.14.9.tgz", - "integrity": "sha512-PxYa2r5qUEdheXTvqROFrMstK8W4uPiP7NVfp+2Bec+AjY5PxZapCx/YFDLkU0D7YBI82H74PtZrzdJZw7TJ4w==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz", + "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==", "requires": { "@firebase/auth-types": "0.10.1" } @@ -1891,15 +1531,15 @@ } }, "@firebase/firestore": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.17.3.tgz", - "integrity": "sha512-wRdrgeSBJ50eo63x8GnO8NgVNe3vBw2xhKhyMXl0JTWQIbxnlMjAHcz7b85VvsqPLI7U70PgWQnfQtJOXRCNUA==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz", + "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==", "requires": { "@firebase/component": "0.1.19", - "@firebase/firestore-types": "1.13.0", + "@firebase/firestore-types": "1.14.0", "@firebase/logger": "0.2.6", "@firebase/util": "0.3.2", - "@firebase/webchannel-wrapper": "0.3.0", + "@firebase/webchannel-wrapper": "0.4.0", "@grpc/grpc-js": "^1.0.0", "@grpc/proto-loader": "^0.5.0", "node-fetch": "2.6.1", @@ -1907,9 +1547,9 @@ } }, "@firebase/firestore-types": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.13.0.tgz", - "integrity": "sha512-QF5CAuYOHE6Zbsn1uEg6wkl836iP+i6C0C/Zs3kF60eebxZvTWp8JSZk19Ar+jj4w+ye8/7H5olu5CqDNjWpEA==" + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz", + "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw==" }, "@firebase/functions": { "version": "0.5.1", @@ -2046,9 +1686,9 @@ } }, "@firebase/webchannel-wrapper": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.3.0.tgz", - "integrity": "sha512-VniCGPIgSGNEgOkh5phb3iKmSGIzcwrccy3IomMFRWPCMiCk2y98UQNJEoDs1yIHtZMstVjYWKYxnunIGzC5UQ==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz", + "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ==" }, "@graphql-typed-document-node/core": { "version": "3.1.0", @@ -2079,9 +1719,9 @@ } }, "@types/node": { - "version": "12.12.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.67.tgz", - "integrity": "sha512-R48tgL2izApf+9rYNH+3RBMbRpPeW3N8f0I9HMhggeq4UXwBDqumJ14SDs4ctTMhG11pIOduZ4z3QWGOiMc9Vg==" + "version": "12.12.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.68.tgz", + "integrity": "sha512-3RW2s24ewB7F9dAHvgb9FRvNHn6nO9IK6Eaknbz7HTOe2a5GVne5XbUh5+YA+kcCn67glyHhClUUdFP73LWrgQ==" }, "camelcase": { "version": "5.3.1", @@ -2098,54 +1738,11 @@ "wrap-ansi": "^6.2.0" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -2703,15 +2300,6 @@ "@types/yargs": "^13.0.0" } }, - "@malept/cross-spawn-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.0.tgz", - "integrity": "sha512-GeIK5rfU1Yd7BZJQPTGZMMmcZy5nhRToPXZcjaDwQDRSewdhp648GT2E4dh+L7+Io7AOW6WQ+GR44QSzja4qxg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -2995,17 +2583,11 @@ "@babel/types": "^7.3.0" } }, - "@types/cacheable-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", - "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } + "@types/debug": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", + "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", + "dev": true }, "@types/eslint-visitor-keys": { "version": "1.0.0", @@ -3017,7 +2599,6 @@ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.2.tgz", "integrity": "sha512-jp0RI6xfZpi5JL8v7WQwpBEQTq63RqW2kxwTZt+m27LcJqQdPVU1yGnT1ZI4EtCDynQQJtIGyQahkiCGCS7e+A==", "dev": true, - "optional": true, "requires": { "@types/node": "*" } @@ -3031,12 +2612,6 @@ "@types/node": "*" } }, - "@types/http-cache-semantics": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", - "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==", - "dev": true - }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -3064,15 +2639,6 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" }, - "@types/keyv": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", - "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/long": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", @@ -3098,14 +2664,10 @@ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "requires": { - "@types/node": "*" - } + "@types/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==" }, "@types/stack-utils": { "version": "1.0.1", @@ -3125,16 +2687,6 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" }, - "@types/yauzl": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", - "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, "@types/zen-observable": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.1.tgz", @@ -3586,6 +3138,55 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -3625,9 +3226,9 @@ } }, "antd": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/antd/-/antd-4.7.0.tgz", - "integrity": "sha512-qXXgclUmx6InkNce5BsIie9GR/39FGsVikwTMObofnVVALv+uOLH4D14reX7K50QldDXHZ7jIPU1JTkcNgtBoA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/antd/-/antd-4.7.2.tgz", + "integrity": "sha512-baMyvvNRB0rqhUxi4cSaH4AG9Cd2W7TjAJnOrVTow8y5E45g3JU31+dAVUHWvtht6LTiWh4BLiKfCdZrSYBeEA==", "requires": { "@ant-design/colors": "^4.0.5", "@ant-design/css-animation": "^1.7.2", @@ -3652,7 +3253,7 @@ "rc-image": "~3.2.1", "rc-input-number": "~6.1.0", "rc-mentions": "~1.5.0", - "rc-menu": "~8.7.1", + "rc-menu": "~8.8.2", "rc-motion": "^2.2.0", "rc-notification": "~4.5.2", "rc-pagination": "~3.1.0", @@ -3665,7 +3266,7 @@ "rc-steps": "~4.1.0", "rc-switch": "~3.2.0", "rc-table": "~7.10.0", - "rc-tabs": "~11.6.0", + "rc-tabs": "~11.7.0", "rc-textarea": "~0.3.0", "rc-tooltip": "~5.0.0", "rc-tree": "~3.10.0", @@ -3691,6 +3292,83 @@ "resolved": "https://registry.npmjs.org/apollo-link-logger/-/apollo-link-logger-2.0.0.tgz", "integrity": "sha512-UBiQZM4KAcJokWRsYrMkyqOvWhnHXPEjNhhGMA1D/quHDk8YUjNmnwqf6KQtq8R8qNW3mQx3AeaWWxNRP3Q9+w==" }, + "app-builder-bin": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.10.tgz", + "integrity": "sha512-Jd+GW68lR0NeetgZDo47PdWBEPdnD+p0jEa7XaxjRC8u6Oo/wgJsfKUkORRgr2NpkD19IFKN50P6JYy04XHFLQ==", + "dev": true + }, + "app-builder-lib": { + "version": "22.9.1", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.9.1.tgz", + "integrity": "sha512-KfXim/fiNwFW2SKffsjEMdAU7RbbEXn62x5YyXle1b4j9X/wEHW9iwox8De6y0hJdR+/kCC/49lI+VgNwLhV7A==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@develar/schema-utils": "~2.6.5", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.9.1", + "builder-util-runtime": "8.7.2", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.0", + "ejs": "^3.1.5", + "electron-publish": "22.9.1", + "fs-extra": "^9.0.1", + "hosted-git-info": "^3.0.5", + "is-ci": "^2.0.0", + "isbinaryfile": "^4.0.6", + "js-yaml": "^3.14.0", + "lazy-val": "^1.0.4", + "minimatch": "^3.0.4", + "normalize-package-data": "^2.5.0", + "read-config-file": "6.0.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.2", + "temp-file": "^3.3.7" + }, + "dependencies": { + "debug": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.0.tgz", + "integrity": "sha512-jjO6JD2rKfiZQnBoRzhRTbXjHLGLfH+UtGkWLc/UXAh/rzZMyjbgn0NcfFpqT8nd1kTtFnDiJcrIFkq4UKeJVg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "hosted-git-info": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.6.tgz", + "integrity": "sha512-VRvqVD5T6t9HdmNDWTwbi8H/EC722MemAhOSP5QvYAXpDAY0Nhu2I/i+bXsktu4sU5LVHSh/wmXtVU8bDtjedQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -3900,27 +3578,6 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "asar": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/asar/-/asar-3.0.3.tgz", - "integrity": "sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "chromium-pickle-js": "^0.2.0", - "commander": "^5.0.0", - "glob": "^7.1.6", - "minimatch": "^3.0.4" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - } - } - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -3988,6 +3645,12 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, "async-foreach": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", @@ -4011,8 +3674,7 @@ "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "atob": { "version": "2.1.2", @@ -4024,12 +3686,6 @@ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.3.2.tgz", "integrity": "sha512-MAiqx5ir1nOoMeG2vLXJnj4oFROJYB1hMqa2aAo6GQVIkPdkIcrq9W9SR0OaRtvEowO7Y2bsXqKFuDMTO4iOAQ==" }, - "author-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", - "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", - "dev": true - }, "autoprefixer": { "version": "9.8.6", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", @@ -4669,6 +4325,15 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -4682,6 +4347,15 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5" + } + }, "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -4749,6 +4423,63 @@ "dev": true, "optional": true }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4930,22 +4661,6 @@ "isarray": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -4957,12 +4672,6 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -4978,6 +4687,69 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, + "builder-util": { + "version": "22.9.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.9.1.tgz", + "integrity": "sha512-5hN/XOaYu4ZQUS6F+5CXE6jTo+NAnVqAxDuKGSaHWb9bejfv/rluChTLoY3/nJh7RFjkoyVjvFJv7zQDB1QmHw==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@types/debug": "^4.1.5", + "@types/fs-extra": "^9.0.1", + "app-builder-bin": "3.5.10", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", + "debug": "^4.3.0", + "fs-extra": "^9.0.1", + "is-ci": "^2.0.0", + "js-yaml": "^3.14.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.3.7" + }, + "dependencies": { + "debug": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.0.tgz", + "integrity": "sha512-jjO6JD2rKfiZQnBoRzhRTbXjHLGLfH+UtGkWLc/UXAh/rzZMyjbgn0NcfFpqT8nd1kTtFnDiJcrIFkq4UKeJVg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "builder-util-runtime": { + "version": "8.7.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.2.tgz", + "integrity": "sha512-xBqv+8bg6cfnzAQK1k3OGpfaHg+QkPgIgpEkXNhouZ0WiUkyZCftuRc2LYzQrLucFywpa14Xbc6+hTbpq83yRA==", + "requires": { + "debug": "^4.1.1", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -5067,12 +4839,6 @@ "unset-value": "^1.0.0" } }, - "cacheable-lookup": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz", - "integrity": "sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w==", - "dev": true - }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -5403,6 +5169,12 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -5411,21 +5183,15 @@ "restore-cursor": "^3.1.0" } }, - "cli-spinners": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", - "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", - "dev": true - }, "cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, "cliui": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.1.tgz", - "integrity": "sha512-rcvHOWyGyid6I1WjT/3NatKj2kDt9OdSHSXpyLXaMWFbKpGACNW8pRhhdPUq9MWUOdwn8Rz9AVETjF4105rZZQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.2.tgz", + "integrity": "sha512-lhpKkuUj67j5JgZIPZxLe7nSa4MQoojzRVWQyzMqBp2hBg6gwRjUDAwC1YDeBaC3APDBKNnjWbv2mlDF4XgOSA==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -5452,12 +5218,6 @@ } } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, "clone-deep": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", @@ -5610,12 +5370,6 @@ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5639,12 +5393,6 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, - "compare-version": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", - "dev": true - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -6006,6 +5754,49 @@ "proto-list": "~1.2.1" } }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, "confusing-browser-globals": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", @@ -6187,37 +5978,6 @@ "sha.js": "^2.4.8" } }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cross-zip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-3.1.0.tgz", - "integrity": "sha512-aX02l0SD3KE27pMl69gkxDdDM5D3u9Ic4Je+2b1B2fP0dWnlWWY6ns2Vk5DEgCXJRhL3GasSpicNQRNbDkq0+w==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -6236,6 +5996,12 @@ "randomfill": "^1.0.3" } }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, "css": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", @@ -6482,13 +6248,6 @@ "cssom": "0.3.x" } }, - "cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", - "dev": true, - "optional": true - }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -6511,6 +6270,73 @@ "type": "^1.0.1" } }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "d3-time-format": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", + "requires": { + "d3-time": "1" + } + }, "damerau-levenshtein": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", @@ -6592,6 +6418,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -6609,8 +6440,7 @@ "deep-diff": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", - "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=", - "dev": true + "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=" }, "deep-equal": { "version": "1.1.1", @@ -6645,15 +6475,6 @@ "ip-regex": "^2.1.0" } }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, "defer-to-connect": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", @@ -6784,12 +6605,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true - }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -6871,6 +6686,31 @@ "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", "dev": true }, + "dmg-builder": { + "version": "22.9.1", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.9.1.tgz", + "integrity": "sha512-jc+DAirqmQrNT6KbDHdfEp8D1kD0DBTnsLhwUR3MX+hMBun5bT134LQzpdK0GKvd22GqF8L1Cz/NOgaVjscAXQ==", + "dev": true, + "requires": { + "app-builder-lib": "22.9.1", + "builder-util": "22.9.1", + "fs-extra": "^9.0.1", + "iconv-lite": "^0.6.2", + "js-yaml": "^3.14.0", + "sanitize-filename": "^1.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -6914,6 +6754,14 @@ "utila": "~0.4" } }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -7041,6 +6889,15 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "ejs": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } + }, "electron": { "version": "10.1.3", "resolved": "https://registry.npmjs.org/electron/-/electron-10.1.3.tgz", @@ -7081,6 +6938,39 @@ } } }, + "electron-builder": { + "version": "22.9.1", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.9.1.tgz", + "integrity": "sha512-GXPt8l5Mxwm1QKYopUM6/Tdh9W3695G6Ax+IFyj5pQ51G4SD5L1uq4/RkPSsOgs3rP7jNSV6g6OfDzdtVufPdA==", + "dev": true, + "requires": { + "@types/yargs": "^15.0.5", + "app-builder-lib": "22.9.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.9.1", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", + "dmg-builder": "22.9.1", + "fs-extra": "^9.0.1", + "is-ci": "^2.0.0", + "lazy-val": "^1.0.4", + "read-config-file": "6.0.0", + "sanitize-filename": "^1.6.3", + "update-notifier": "^4.1.1", + "yargs": "^16.0.3" + }, + "dependencies": { + "@types/yargs": { + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.8.tgz", + "integrity": "sha512-b0BYzFUzBpOhPjpl1wtAHU994jBeKF4TKVlT7ssFv44T617XNcPdRoG4AzHLVshLzlrF7i3lTelH7UbuNYV58Q==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, "electron-devtools-installer": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.1.1.tgz", @@ -7103,422 +6993,38 @@ } } }, - "electron-installer-common": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.10.3.tgz", - "integrity": "sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==", - "dev": true, - "optional": true, - "requires": { - "@malept/cross-spawn-promise": "^1.0.0", - "@types/fs-extra": "^9.0.1", - "asar": "^3.0.0", - "debug": "^4.1.1", - "fs-extra": "^9.0.0", - "glob": "^7.1.4", - "lodash": "^4.17.15", - "parse-author": "^2.0.0", - "semver": "^7.1.1", - "tmp-promise": "^3.0.2" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "optional": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "optional": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "tmp-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", - "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", - "dev": true, - "optional": true, - "requires": { - "tmp": "^0.2.0" - } - } - } - }, - "electron-installer-debian": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-3.1.0.tgz", - "integrity": "sha512-k6KChvx0Fw8XTlCqwwbBfh19yGQaKjGdbugokmr1IpzINOm4QFyACKMTHAYFHW5LCBUZQShZD96hwxUZ+8Kx+w==", - "dev": true, - "optional": true, - "requires": { - "@malept/cross-spawn-promise": "^1.0.0", - "debug": "^4.1.1", - "electron-installer-common": "^0.10.2", - "fs-extra": "^9.0.0", - "get-folder-size": "^2.0.1", - "lodash": "^4.17.4", - "word-wrap": "^1.2.3", - "yargs": "^15.0.1" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "optional": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "optional": true, - "requires": { - "decamelize": "^1.2.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "which-module": "^2.0.0" - } - } - } - }, - "electron-installer-redhat": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/electron-installer-redhat/-/electron-installer-redhat-3.2.0.tgz", - "integrity": "sha512-XMA+fQj3ULNVMl4eG+hIvrYITEqP1pfpERvx6kRwuPd06vdtB4KucL9241DAHT0NR5E9gnyJHM9Y6N24kk0mcA==", - "dev": true, - "optional": true, - "requires": { - "@malept/cross-spawn-promise": "^1.0.0", - "debug": "^4.1.1", - "electron-installer-common": "^0.10.2", - "fs-extra": "^9.0.0", - "lodash": "^4.17.15", - "word-wrap": "^1.2.3", - "yargs": "^15.1.0" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "optional": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "optional": true, - "requires": { - "decamelize": "^1.2.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "which-module": "^2.0.0" - } - } - } - }, "electron-is-dev": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz", "integrity": "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw==" }, - "electron-notarize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.0.0.tgz", - "integrity": "sha512-dsib1IAquMn0onCrNMJ6gtEIZn/azG8hZMCYOuZIMVMUeRMgBYHK1s5TK9P8xAcrAjh/2aN5WYHzgVSWX314og==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "fs-extra": "^9.0.1" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } + "electron-log": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.2.4.tgz", + "integrity": "sha512-CXbDU+Iwi+TjKzugKZmTRIORIPe3uQRqgChUl19fkW/reFUn5WP7dt+cNGT3bkLV8xfPilpkPFv33HgtmLLewQ==" }, - "electron-osx-sign": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.17.tgz", - "integrity": "sha512-wUJPmZJQCs1zgdlQgeIpRcvrf7M5/COQaOV68Va1J/SgmWx5KL2otgg+fAae7luw6qz9R8Gvu/Qpe9tAOu/3xQ==", + "electron-publish": { + "version": "22.9.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.9.1.tgz", + "integrity": "sha512-ducLjRJLEeU87FaTCWaUyDjCoLXHkawkltP2zqS/n2PyGke54ZIql0tBuUheht4EpR8AhFbVJ11spSn1gy8r6w==", "dev": true, "requires": { - "bluebird": "^3.5.0", - "compare-version": "^0.1.2", - "debug": "^2.6.8", - "isbinaryfile": "^3.0.2", - "minimist": "^1.2.0", - "plist": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "electron-packager": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-15.1.0.tgz", - "integrity": "sha512-THNm4bz1DfvR9f0g51+NjuAYELflM8+1vhQ/iv/G8vyZNKzSMuFd5doobngQKq3rRsLdPNZVnGqDdgS884d7Og==", - "dev": true, - "requires": { - "@electron/get": "^1.6.0", - "asar": "^3.0.0", - "debug": "^4.0.1", - "electron-notarize": "^1.0.0", - "electron-osx-sign": "^0.4.11", - "extract-zip": "^2.0.0", - "filenamify": "^4.1.0", - "fs-extra": "^9.0.0", - "galactus": "^0.2.1", - "get-package-info": "^1.0.0", - "junk": "^3.1.0", - "parse-author": "^2.0.0", - "plist": "^3.0.0", - "rcedit": "^2.0.0", - "resolve": "^1.1.6", - "semver": "^7.1.3", - "yargs-parser": "^19.0.1" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "electron-rebuild": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-2.2.0.tgz", - "integrity": "sha512-qbrCoBSmbL/f6OwfRXg5cihAJ0TwbgRKmyK7helR6XNlaoPO42ny/+4yCTXJrYa0ZhkvcdY+gZE/wu2p19gFHg==", - "dev": true, - "requires": { - "@malept/cross-spawn-promise": "^1.1.0", - "colors": "^1.3.3", - "debug": "^4.1.1", - "detect-libc": "^1.0.3", + "@types/fs-extra": "^9.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.9.1", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", "fs-extra": "^9.0.1", - "got": "^11.7.0", - "lzma-native": "^6.0.1", - "node-abi": "^2.19.1", - "node-gyp": "^7.1.0", - "ora": "^5.1.0", - "tar": "^6.0.5", - "yargs": "^16.0.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", - "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" - } - }, - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - } - }, - "defer-to-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", - "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "got": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/got/-/got-11.7.0.tgz", - "integrity": "sha512-7en2XwH2MEqOsrK0xaKhbWibBoZqy+f1RSUoIeF1BLcnf+pyQdDsljWMfmOh+QKJwuvDIiKx38GtPh5wFdGGjg==", - "dev": true, - "requires": { - "@sindresorhus/is": "^3.1.1", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "p-cancelable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", - "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", - "dev": true - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } - } + "lazy-val": "^1.0.4", + "mime": "^2.4.6" } }, - "electron-squirrel-startup": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/electron-squirrel-startup/-/electron-squirrel-startup-1.0.0.tgz", - "integrity": "sha1-GbTlWTP6Dvj1VnhLnGYPdyVGoLg=", + "electron-reload": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/electron-reload/-/electron-reload-1.5.0.tgz", + "integrity": "sha512-L9X6LzsL3Bt2j0eJ4/MBrI9Vt902KvVUtBB7J4qrL1A9sXqC2fE0lpvUAlOThpJYh6zWO1l86U/YiEN9bDURHw==", "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } + "chokidar": "^3.0.2" } }, "electron-store": { @@ -7542,90 +7048,18 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.578.tgz", "integrity": "sha512-z4gU6dA1CbBJsAErW5swTGAaU2TBzc2mPAonJb00zqW1rOraDo2zfBMDRvaz9cVic+0JEZiYbHWPw/fTaZlG2Q==" }, - "electron-winstaller": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-4.0.1.tgz", - "integrity": "sha512-wgdABzcMFpREjFCHZKQ5g5JF5jGqa8YCAsVD5Tb3sJhdj63AtuCu/2o++nVESlZZugKDv6Hxo6Wi8c3knEkbgA==", - "dev": true, - "optional": true, + "electron-updater": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.3.5.tgz", + "integrity": "sha512-5jjN7ebvfj1cLI0VZMdCnJk6aC4bP+dy7ryBf21vArR0JzpRVk0OZHA2QBD+H5rm6ZSeDYHOY6+8PrMEqJ4wlQ==", "requires": { - "asar": "^2.0.1", - "debug": "^4.1.1", - "fs-extra": "^7.0.1", - "lodash.template": "^4.2.2", - "temp": "^0.9.0" - }, - "dependencies": { - "asar": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/asar/-/asar-2.1.0.tgz", - "integrity": "sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA==", - "dev": true, - "optional": true, - "requires": { - "@types/glob": "^7.1.1", - "chromium-pickle-js": "^0.2.0", - "commander": "^2.20.0", - "cuint": "^0.2.2", - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "tmp-promise": "^1.0.5" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true - }, - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.1.2" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "optional": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "optional": true - } + "@types/semver": "^7.3.1", + "builder-util-runtime": "8.7.2", + "fs-extra": "^9.0.1", + "js-yaml": "^3.14.0", + "lazy-val": "^1.0.4", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.2" } }, "elliptic": { @@ -7876,6 +7310,12 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -8546,15 +7986,6 @@ } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "expect": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", @@ -8766,44 +8197,6 @@ } } }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -8925,21 +8318,19 @@ "schema-utils": "^2.5.0" } }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true }, - "filenamify": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.2.0.tgz", - "integrity": "sha512-pkgE+4p7N1n7QieOopmn3TqJaefjdWXwEkj2XLZJLKfOgcQKkn11ahvGNgTD8mLggexLiDFQxeTs14xVU22XPA==", + "filelist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", + "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", "dev": true, "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" + "minimatch": "^3.0.4" } }, "filesize": { @@ -9051,67 +8442,61 @@ } }, "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "dependencies": { "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" } }, "p-limit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", - "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", - "dev": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" } }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" } } }, "firebase": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.23.0.tgz", - "integrity": "sha512-0b1zi0H8jT4KqyPabldzPhyKTeptw5E5a7KkjWW3MBMVV/LjbC6/NKhRR8sGQNbsbS2LnTvyEENWbqkZP2ZXtw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz", + "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==", "requires": { "@firebase/analytics": "0.6.0", "@firebase/app": "0.6.11", "@firebase/app-types": "0.6.1", - "@firebase/auth": "0.14.9", + "@firebase/auth": "0.15.0", "@firebase/database": "0.6.13", - "@firebase/firestore": "1.17.3", + "@firebase/firestore": "1.18.0", "@firebase/functions": "0.5.1", "@firebase/installations": "0.4.17", "@firebase/messaging": "0.7.1", @@ -9152,59 +8537,6 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" }, - "flora-colossus": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz", - "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "fs-extra": "^7.0.0" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -9352,7 +8684,6 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -9360,15 +8691,6 @@ "universalify": "^1.0.0" } }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -9450,52 +8772,6 @@ "integrity": "sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA==", "dev": true }, - "galactus": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz", - "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=", - "dev": true, - "requires": { - "debug": "^3.1.0", - "flora-colossus": "^1.0.0", - "fs-extra": "^4.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, - "gar": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz", - "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==", - "dev": true, - "optional": true - }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -9572,54 +8848,11 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "get-folder-size": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/get-folder-size/-/get-folder-size-2.0.1.tgz", - "integrity": "sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==", - "dev": true, - "optional": true, - "requires": { - "gar": "^1.0.4", - "tiny-each-async": "2.0.3" - } - }, - "get-installed-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", - "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", - "dev": true, - "requires": { - "global-modules": "1.0.0" - } - }, "get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, - "get-package-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", - "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=", - "dev": true, - "requires": { - "bluebird": "^3.1.1", - "debug": "^2.2.0", - "lodash.get": "^4.0.0", - "read-pkg-up": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -9688,39 +8921,13 @@ "serialize-error": "^7.0.1" } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", "dev": true, "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "ini": "^1.3.5" } }, "global-tunnel-ng": { @@ -9788,16 +8995,16 @@ } }, "google-auth-library": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.1.tgz", - "integrity": "sha512-0WfExOx3FrLYnY88RICQxvpaNzdwjz44OsHqHkIoAJfjY6Jck6CZRl1ASWadk+wbJ0LhkQ8rNY4zZebKml4Ghg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.2.tgz", + "integrity": "sha512-X9EUX8R+kIpsf55KdSPhFWF0RNyBGuBc1zeYc/5Sjuk65eIYqq91rINJVBD22pp+w/PuM2fasHiA6H2xYjxTIQ==", "requires": { "arrify": "^2.0.0", "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "fast-text-encoding": "^1.0.0", "gaxios": "^3.0.0", - "gcp-metadata": "^4.1.0", + "gcp-metadata": "^4.2.0", "gtoken": "^5.0.4", "jws": "^4.0.0", "lru-cache": "^6.0.0" @@ -9988,6 +9195,12 @@ } } }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -10065,15 +9278,6 @@ "react-is": "^16.7.0" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -10261,16 +9465,6 @@ "sshpk": "^1.7.0" } }, - "http2-wrapper": { - "version": "1.0.0-beta.5.2", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", - "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -10344,15 +9538,6 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -10389,6 +9574,12 @@ "resolve-from": "^3.0.0" } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", @@ -10741,17 +9932,35 @@ "is-extglob": "^2.1.1" } }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "dependencies": { + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + } + } }, "is-negative-zero": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -10883,19 +10092,22 @@ "is-docker": "^2.0.0" } }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true }, "isexe": { "version": "2.0.0", @@ -11003,6 +10215,82 @@ "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dev": true, + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", @@ -11559,6 +10847,7 @@ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1" } } @@ -12726,7 +12015,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", - "dev": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^1.0.0" @@ -12769,12 +12057,6 @@ "set-immediate-shim": "~1.0.1" } }, - "junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true - }, "jwa": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", @@ -12830,11 +12112,25 @@ "webpack-sources": "^1.1.0" } }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, + "lazy-val": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz", + "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==" + }, "left-pad": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", @@ -12989,6 +12285,11 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, "lodash.escape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", @@ -13001,17 +12302,10 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, "lodash.memoize": { "version": "4.1.2", @@ -13040,20 +12334,16 @@ "lodash._reinterpolate": "^3.0.0" } }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, - "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, "loglevel": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", @@ -13111,18 +12401,6 @@ } } }, - "lzma-native": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-6.0.1.tgz", - "integrity": "sha512-O6oWF0xe1AFvOCjU8uOZBZ/lhjaMNwHfVNaqVMqmoQXlRwBcFWpCAToiZOdXcKVMdo/5s/D0a2QgA5laMErxHQ==", - "dev": true, - "requires": { - "node-addon-api": "^1.6.0", - "node-pre-gyp": "^0.11.0", - "readable-stream": "^2.3.5", - "rimraf": "^2.7.1" - } - }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -13157,15 +12435,6 @@ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -13194,6 +12463,11 @@ "escape-string-regexp": "^4.0.0" } }, + "math-expression-evaluator": { + "version": "1.2.22", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz", + "integrity": "sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ==" + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -13214,17 +12488,6 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -13527,16 +12790,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, "minipass-collect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", @@ -13606,15 +12859,6 @@ } } }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.0" - } - }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -13801,34 +13045,6 @@ } } }, - "needle": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", - "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -13858,29 +13074,6 @@ "tslib": "^1.10.0" } }, - "node-abi": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.1.tgz", - "integrity": "sha512-HbtmIuByq44yhAzK7b9j/FelKlHYISKQn0mtvcBrU5QBkhoCMp5bu8Hv5AI34DcKfOAcJBcOEMwLlwO62FFu9A==", - "dev": true, - "requires": { - "semver": "^5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true - }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -13891,24 +13084,6 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, - "node-gyp": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.0.tgz", - "integrity": "sha512-rjlHQlnl1dqiDZxZYiKqQdrjias7V+81OVR5PTzZioCBtWkNdrKy06M05HLKxy/pcKikKRCabeDRoZaEc6nIjw==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^4.0.3", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^2.6.3", - "semver": "^7.3.2", - "tar": "^6.0.1", - "which": "^2.0.2" - } - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -13989,47 +13164,6 @@ } } }, - "node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "dev": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - } - } - }, "node-releases": { "version": "1.1.61", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", @@ -14160,16 +13294,6 @@ } } }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -14207,15 +13331,6 @@ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", "dev": true }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, "npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", @@ -14227,23 +13342,6 @@ "pify": "^3.0.0" } }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dev": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -14278,32 +13376,6 @@ "boolbase": "~1.0.0" } }, - "nugget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", - "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", - "dev": true, - "requires": { - "debug": "^2.1.3", - "minimist": "^1.1.0", - "pretty-bytes": "^1.0.2", - "progress-stream": "^1.1.0", - "request": "^2.45.0", - "single-line-log": "^1.1.2", - "throttleit": "0.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -14619,22 +13691,6 @@ "word-wrap": "~1.2.3" } }, - "ora": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", - "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.4.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -14673,12 +13729,6 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-each-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", @@ -14692,12 +13742,6 @@ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -14740,6 +13784,26 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -14791,15 +13855,6 @@ "safe-buffer": "^5.1.1" } }, - "parse-author": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", - "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", - "dev": true, - "requires": { - "author-regex": "^1.0.0" - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -14808,18 +13863,6 @@ "error-ex": "^1.2.0" } }, - "parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -15064,17 +14107,6 @@ } } }, - "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", - "dev": true, - "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" - } - }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -16101,16 +15133,6 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" - } - }, "pretty-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", @@ -16159,15 +15181,6 @@ } } }, - "pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, - "requires": { - "parse-ms": "^2.1.0" - } - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -16183,16 +15196,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, - "progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", - "dev": true, - "requires": { - "speedometer": "~0.1.2", - "through2": "~0.2.3" - } - }, "promise": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", @@ -16269,9 +15272,9 @@ }, "dependencies": { "@types/node": { - "version": "13.13.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.25.tgz", - "integrity": "sha512-6ZMK4xRcF2XrPdKmPYQxZkdHKV18xKgUFVvhIgw2iwaaO6weleLPHLBGPZmLhjo+m1N+MZXRAoBEBCCVqgO2zQ==" + "version": "13.13.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.26.tgz", + "integrity": "sha512-+48LLqolaKj/WnIY1crfLseaGQMIDISBy3PTXVOZ7w/PBaRUv+H8t94++atzfoBAvorbUYz6Xq9vh1fHrg33ig==" } } }, @@ -16354,6 +15357,15 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -16365,9 +15377,9 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { - "version": "6.13.5", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz", - "integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==", + "version": "6.13.6", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.6.tgz", + "integrity": "sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ==", "requires": { "decode-uri-component": "^0.2.0", "split-on-first": "^1.0.0", @@ -16389,12 +15401,6 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -16541,9 +15547,9 @@ } }, "rc-dialog": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.4.1.tgz", - "integrity": "sha512-ezdI0RLqPZyOirWg5zQK0/hUeKNIi+kfxWFAMMpawsz7Ycbwr7fq/zEU3uQRbp6bFV+9BbGLr2b9HsK2Jg0xKg==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.4.2.tgz", + "integrity": "sha512-8JZcJn2uJyC1pXCOsVQZH2z6norAF7NFVQ+2K0Ej83+YAZ0ZsxDDQuJGyBfnAi5M1pGJ4o+ETgSpj7VLXNwHDQ==", "requires": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.6", @@ -16617,9 +15623,9 @@ } }, "rc-menu": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.7.1.tgz", - "integrity": "sha512-CuuJ9oS1oPAfenqAMa3CZZE7RrPcPTHV3310cf6RO2uJgE9ztqasRFMEBwtruH16OexTr0igTCXySm+e2/TBQg==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.8.3.tgz", + "integrity": "sha512-C9sT0SBXmUbVWRUseXASousacRVPnOm5aXdyJR569WIvZwbs2IncpGNmAcft1R5ZuFE3Y+SZZ5FYvtGtbCzkIQ==", "requires": { "@babel/runtime": "^7.10.1", "classnames": "2.x", @@ -16663,9 +15669,9 @@ } }, "rc-picker": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.3.0.tgz", - "integrity": "sha512-UArXxifQqkwEvICWDe456Fx2LnCSbh3wYuEdPXSKJR3mIEjlF5qabNSEaoCykFZB3GtvDSmlsIMjXB8FMfRJ/A==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.3.3.tgz", + "integrity": "sha512-ah4ucCnAs8ss7GgV7sF7MGgRlyfP4753z+OjnF4X7cIrntygklQqiFDBZYS02RX773vhJ+jc6AbyoR7hI4aGng==", "requires": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.1", @@ -16673,7 +15679,7 @@ "dayjs": "^1.8.30", "moment": "^2.24.0", "rc-trigger": "^5.0.4", - "rc-util": "^5.0.1", + "rc-util": "^5.4.0", "shallowequal": "^1.1.0" } }, @@ -16766,9 +15772,9 @@ } }, "rc-tabs": { - "version": "11.6.2", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.6.2.tgz", - "integrity": "sha512-7Z5Lg+nP/H4V7dIlewrOC0+aogRVH3ASjTy4VIletYOeStGPWYSfwBnUTBdcCXcUuWuyyKnNkYrUD0yaRqUCIA==", + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.0.tgz", + "integrity": "sha512-nYwQcgML2drM0iau4aa6HI4qyyZSW0WpspCAtO5KGjXwHzUJcvv3qgLVuoQOWQaDDHXkI9Jj8U7Y/Hcrdyj1Kw==", "requires": { "@babel/runtime": "^7.11.2", "classnames": "2.x", @@ -16855,25 +15861,19 @@ } }, "rc-virtual-list": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.1.1.tgz", - "integrity": "sha512-hkDj4+xEdeYKe8sX7rft/rvh6uutiGHnqdn17//YhHdWoeDfP+TmGbzG2HEHrNdJIMEb/yNxu+KVEWd7JTJ9MA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.2.0.tgz", + "integrity": "sha512-NZb+Z4tGkfrCNXprVUlLJxoRVIELwLmlY5nHwiV3pj4eA9Of8thpQwtT+AomwcZjKhC7R/EDtpk2ATMJXX5s3Q==", "requires": { "classnames": "^2.2.6", "rc-resize-observer": "^0.2.3", "rc-util": "^5.0.7" } }, - "rcedit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.2.0.tgz", - "integrity": "sha512-dhFtYmQS+V8qQIANyX6zDK+sO50ayDePKApi46ZPK8I6QeyyTDD6LManMa7a3p3c9mLM4zi9QBP41pfhQ9p7Sg==", - "dev": true - }, "react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -17166,9 +16166,9 @@ } }, "react-dom": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", - "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -17211,6 +16211,17 @@ "react-is": "^16.9.0" } }, + "react-resize-detector": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-2.3.0.tgz", + "integrity": "sha512-oCAddEWWeFWYH5FAcHdBYcZjAw9fMzRUK9sWSx6WvSSOPVRxcHd5zTIGy/mOus+AhN/u6T4TMiWxvq79PywnJQ==", + "requires": { + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "prop-types": "^15.6.0", + "resize-observer-polyfill": "^1.5.0" + } + }, "react-router": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", @@ -17345,6 +16356,17 @@ } } }, + "react-smooth": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.5.tgz", + "integrity": "sha512-eW057HT0lFgCKh8ilr0y2JaH2YbNcuEdFpxyg7Gf/qDKk9hqGMyXryZJ8iMGJEuKH0+wxS0ccSsBBB3W8yCn8w==", + "requires": { + "lodash": "~4.17.4", + "prop-types": "^15.6.0", + "raf": "^3.4.0", + "react-transition-group": "^2.5.0" + } + }, "react-test-renderer": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz", @@ -17357,6 +16379,30 @@ "scheduler": "^0.19.1" } }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "read-config-file": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz", + "integrity": "sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA==", + "dev": true, + "requires": { + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "js-yaml": "^3.13.1", + "json5": "^2.1.2", + "lazy-val": "^1.0.4" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -17416,6 +16462,39 @@ "util.promisify": "^1.0.0" } }, + "recharts": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-1.8.5.tgz", + "integrity": "sha512-tM9mprJbXVEBxjM7zHsIy6Cc41oO/pVYqyAsOHLxlJrbNBuLs0PHB3iys2M+RqCF0//k8nJtZF6X6swSkWY3tg==", + "requires": { + "classnames": "^2.2.5", + "core-js": "^2.6.10", + "d3-interpolate": "^1.3.0", + "d3-scale": "^2.1.0", + "d3-shape": "^1.2.0", + "lodash": "^4.17.5", + "prop-types": "^15.6.0", + "react-resize-detector": "^2.3.0", + "react-smooth": "^1.0.5", + "recharts-scale": "^0.4.2", + "reduce-css-calc": "^1.3.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + } + } + }, + "recharts-scale": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.3.tgz", + "integrity": "sha512-t8p5sccG9Blm7c1JQK/ak9O8o95WGhNXD7TXg/BW5bYbVlr6eCeRBNpgyigD4p6pSSMehC5nSvBUPj6F68rbFA==", + "requires": { + "decimal.js-light": "^2.4.1" + } + }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -17433,6 +16512,31 @@ "strip-indent": "^1.0.1" } }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "requires": { + "balanced-match": "^1.0.0" + } + }, "redux": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", @@ -17446,7 +16550,6 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", "integrity": "sha1-91VZZvMJjzyIYExEnPC69XeCdL8=", - "dev": true, "requires": { "deep-diff": "^0.3.5" } @@ -17557,6 +16660,24 @@ "unicode-match-property-value-ecmascript": "^1.2.0" } }, + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", @@ -17735,12 +16856,6 @@ "path-parse": "^1.0.6" } }, - "resolve-alpn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", - "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==", - "dev": true - }, "resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", @@ -17749,30 +16864,11 @@ "resolve-from": "^3.0.0" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, - "resolve-package": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-package/-/resolve-package-1.0.1.tgz", - "integrity": "sha1-aG9wsYi9fWdfW7xCgszaBgq7nSc=", - "dev": true, - "requires": { - "get-installed-path": "^2.0.3" - } - }, "resolve-pathname": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", @@ -18361,6 +17457,23 @@ "dev": true, "optional": true }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -18616,15 +17729,6 @@ } } }, - "single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", - "dev": true, - "requires": { - "string-width": "^1.0.1" - } - }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -18967,12 +18071,6 @@ } } }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", - "dev": true - }, "split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -19043,6 +18141,12 @@ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" }, + "stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -19348,23 +18452,6 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } - } - }, "style-loader": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", @@ -19427,12 +18514,6 @@ } } }, - "sudo-prompt": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", - "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", - "dev": true - }, "sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", @@ -19604,89 +18685,49 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, - "tar": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", - "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "temp-file": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.7.tgz", + "integrity": "sha512-9tBJKt7GZAQt/Rg0QzVWA8Am8c1EFl+CAv04/aBVqlx5oyfQ508sFIABshQ0xbZu6mBrFLWIUXO/bbLYghW70g==", "dev": true, "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "async-exit-hook": "^2.0.1", + "fs-extra": "^8.1.0" }, "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "minipass": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "yallist": { + "jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true } } }, - "temp": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.1.tgz", - "integrity": "sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA==", - "dev": true, - "optional": true, - "requires": { - "rimraf": "~2.6.2" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - } - } + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true }, "terser": { "version": "4.8.0", @@ -19876,53 +18917,11 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" }, - "throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9", - "xtend": "~2.1.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -19941,13 +18940,6 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, - "tiny-each-async": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tiny-each-async/-/tiny-each-async-2.0.3.tgz", - "integrity": "sha1-jru/1tYpXxNwAD+7NxYq/loKUdE=", - "dev": true, - "optional": true - }, "tiny-invariant": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", @@ -19971,29 +18963,6 @@ "os-tmpdir": "~1.0.2" } }, - "tmp-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.1.0.tgz", - "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==", - "dev": true, - "optional": true, - "requires": { - "bluebird": "^3.5.0", - "tmp": "0.1.0" - }, - "dependencies": { - "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", - "dev": true, - "optional": true, - "requires": { - "rimraf": "^2.6.3" - } - } - } - }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -20081,23 +19050,6 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } - } - }, "true-case-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", @@ -20200,6 +19152,15 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript-compare": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", @@ -20282,11 +19243,19 @@ "imurmurhash": "^0.1.4" } }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" }, "unpipe": { "version": "1.0.0", @@ -20350,6 +19319,39 @@ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -20412,16 +19414,6 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, - "username": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", - "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "mem": "^4.3.0" - } - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -20637,6 +19629,7 @@ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1" } }, @@ -20697,15 +19690,6 @@ "minimalistic-assert": "^1.0.0" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -20990,6 +19974,7 @@ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1" } }, @@ -21323,6 +20308,34 @@ "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -21584,28 +20597,22 @@ "async-limiter": "~1.0.0" } }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, - "xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "dev": true - }, "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", @@ -21619,23 +20626,6 @@ "@babel/runtime-corejs3": "^7.8.3" } }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "requires": { - "object-keys": "~0.4.0" - }, - "dependencies": { - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true - } - } - }, "y18n": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.2.tgz", @@ -21689,82 +20679,15 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" } - }, - "yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-yYsjuSkjbLMBp16eaOt7/siKTjNVjMm3SoJnIg3sEh/JsvqVVDyjRKmaJV4cl+lNIgq6QEco2i3gDebJl7/vLA==", - "dev": true } } }, "yargs-parser": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-19.0.4.tgz", - "integrity": "sha512-eXeQm7yXRjPFFyf1voPkZgXQZJjYfjgQUmGPbD2TLtZeIYzvacgWX7sQ5a1HsRgVP+pfKAkRZDNtTGev4h9vhw==", + "version": "20.2.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.2.tgz", + "integrity": "sha512-XmrpXaTl6noDsf1dKpBuUNCOHqjs0g3jRMXf/ztRxdOmb+er8kE5z5b55Lz3p5u2T8KJ59ENBnASS8/iapVJ5g==", "dev": true }, - "yarn-or-npm": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz", - "integrity": "sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.5", - "pkg-dir": "^4.2.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index 1e28ad1..b1895c6 100644 --- a/package.json +++ b/package.json @@ -1,37 +1,41 @@ { "name": "imexrps", "productName": "ImEX RPS", - "author": "Patrick Fic ", + "author": "ImEX Systems Inc. ", "description": "ImEX RPS", - "version": "0.0.1", + "version": "1.0.0", "main": "electron/main.js", "homepage": "./", "dependencies": { "@apollo/client": "^3.2.4", "@fingerprintjs/fingerprintjs": "^2.1.4", - "antd": "^4.7.0", + "antd": "^4.7.2", "apollo-link-logger": "^2.0.0", "chokidar": "^3.4.3", "dbffile": "^1.4.3", "dinero.js": "^1.8.1", "dotenv": "^8.2.0", "electron-is-dev": "^1.2.0", - "electron-squirrel-startup": "^1.0.0", + "electron-log": "^4.2.4", + "electron-reload": "^1.5.0", "electron-store": "^6.0.1", - "firebase": "^7.23.0", + "electron-updater": "^4.3.5", + "firebase": "^7.24.0", "graphql": "^15.3.0", "lodash": "^4.17.20", "moment": "^2.29.1", "node-notifier": "^8.0.0", "node-sass": "^4.14.1", - "query-string": "^6.13.5", - "react": "^16.13.1", - "react-dom": "^16.13.1", + "query-string": "^6.13.6", + "react": "^16.14.0", + "react-dom": "^16.14.0", "react-infinite-scroller": "^1.2.4", "react-redux": "^7.2.1", "react-router-dom": "^5.2.0", "react-scripts": "3.4.3", + "recharts": "^1.8.5", "redux": "^4.0.5", + "redux-logger": "^3.0.6", "redux-persist": "^6.0.0", "redux-saga": "^1.1.3", "reselect": "^4.0.0", @@ -43,10 +47,12 @@ "test": "react-scripts test", "eject": "react-scripts eject", "dev": "concurrently -k \"npm start\" \"npm:electron\"", - "electron": "wait-on tcp:3000 && electron-forge start", - "eo": "electron-forge start", - "package": "react-scripts build && electron-forge package", - "make": "react-scripts build && electron-forge make" + "electron": "wait-on tcp:3000 && electron .", + "pack": "electron-builder --dir", + "dist": "npm run build && electron-builder", + "distp": "npm run build && electron-builder --publish always", + "distpnb": "npm run build && electron-builder --publish always", + "postinstall": "npm run build && electron-builder install-app-deps" }, "eslintConfig": { "extends": "react-app" @@ -64,42 +70,52 @@ ] }, "devDependencies": { - "@electron-forge/cli": "^6.0.0-beta.53", - "@electron-forge/maker-deb": "^6.0.0-beta.53", - "@electron-forge/maker-rpm": "^6.0.0-beta.53", - "@electron-forge/maker-squirrel": "^6.0.0-beta.53", - "@electron-forge/maker-zip": "^6.0.0-beta.53", "concurrently": "^5.3.0", "electron": "^10.1.3", + "electron-builder": "^22.9.1", "electron-devtools-installer": "^3.1.1", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", - "redux-logger": "^3.0.6", "wait-on": "^5.2.0" }, - "config": { - "forge": { - "packagerConfig": {}, - "makers": [ + "build": { + "extends": null, + "appId": "com.imex.rps", + "copyright": "Copyright © Snapt Software Inc.", + "files": [ + "build/**", + "electron/**", + "src/ipc.types.js", + "src/assets/**" + ], + "publish": { + "provider": "s3", + "bucket": "rps-updater", + "region": "ca-central-1" + }, + "win": { + "target": "nsis", + "icon": "src/icons/win/icon.ico" + }, + "dmg": { + "contents": [ { - "name": "@electron-forge/maker-squirrel", - "config": {} + "x": 110, + "y": 150 }, { - "name": "@electron-forge/maker-zip", - "platforms": [ - "darwin" - ] - }, - { - "name": "@electron-forge/maker-deb", - "config": {} - }, - { - "name": "@electron-forge/maker-rpm", - "config": {} + "x": 240, + "y": 150, + "type": "link", + "path": "/Applications" } ] + }, + "linux": { + "target": [ + "AppImage", + "deb" + ] } } } diff --git a/src/App/App.styles.scss b/src/App/App.styles.scss index 8b0e57c..7a09eba 100644 --- a/src/App/App.styles.scss +++ b/src/App/App.styles.scss @@ -50,3 +50,19 @@ body { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); background-color: #188fff; } +.jobs-list-container { + height: 100%; +} + +.jobs-list-infinite-container { + overflow-y: auto; + overflow-x: hidden; + height: 100%; +} + + + +//Required for the tab with infinite loading +.ant-tabs-content { + height: 100%; +} diff --git a/src/components/atoms/form-list-move-arrows/form-list-move-arrows.atom.jsx b/src/components/atoms/form-list-move-arrows/form-list-move-arrows.atom.jsx new file mode 100644 index 0000000..5e01d5b --- /dev/null +++ b/src/components/atoms/form-list-move-arrows/form-list-move-arrows.atom.jsx @@ -0,0 +1,22 @@ +import React from "react"; +import { UpOutlined, DownOutlined } from "@ant-design/icons"; + +export default function FormListMoveArrows({ move, index, total }) { + const upDisabled = index === 0; + const downDisabled = index === total - 1; + + const handleUp = () => { + move(index, index - 1); + }; + + const handleDown = () => { + move(index, index - 1); + }; + + return ( +
+ + +
+ ); +} diff --git a/src/components/atoms/jobs-parts-graph/jobs-parts-graph.atom.jsx b/src/components/atoms/jobs-parts-graph/jobs-parts-graph.atom.jsx new file mode 100644 index 0000000..358d889 --- /dev/null +++ b/src/components/atoms/jobs-parts-graph/jobs-parts-graph.atom.jsx @@ -0,0 +1,87 @@ +import { Skeleton, Typography } from "antd"; +import Dinero from "dinero.js"; +import React, { useMemo } from "react"; +import { Cell, Pie, PieChart, ResponsiveContainer } from "recharts"; +import ErrorResultAtom from "../error-result/error-result.atom"; +import partTypeConverterAtom from "../part-type-converter/part-type-converter.atom"; +export default function JobPartsGraphAtom({ + job, + loading, + price = "act_price", +}) { + const data = useMemo(() => { + if (!job) return []; + + const sums = job.joblines.reduce((acc, val) => { + if (!acc[val.part_type]) { + acc[val.part_type] = Dinero(); + } + + acc[val.part_type] = acc[val.part_type].add( + Dinero({ amount: Math.round((val[price] || 0) * 100) }) + ); + + return acc; + }, {}); + + return Object.keys(sums).map((key) => { + return { + name: key, + value: sums[key].getAmount() / 100, + label: sums[key].toFormat(), + color: getColor(key), + }; + }); + }, [job, price]); + + if (loading) return ; + if (!job) return ; + + return ( +
+ + {price === "act_price" ? "Actual Price" : "Database Price"} + + + + + `${partTypeConverterAtom(entry.name)} (${entry.label})` + } + labelLine + > + {data.map((entry, index) => ( + + ))} + + + +
+ ); +} + +const getColor = (key) => { + switch (key) { + case "PAA": + return "slategray"; + case "PAL": + return "dodgeblue"; + case "PAN": + return "seagreen"; + default: + return "slategray"; + } +}; diff --git a/src/components/atoms/layout-form-row/layout-form-row.atom.jsx b/src/components/atoms/layout-form-row/layout-form-row.atom.jsx new file mode 100644 index 0000000..94b1b1a --- /dev/null +++ b/src/components/atoms/layout-form-row/layout-form-row.atom.jsx @@ -0,0 +1,60 @@ +import React from "react"; +import { Row, Col, Typography } from "antd"; +import "./layout-form-row.styles.scss"; + +export default function LayoutFormRow({ + header, + children, + grow = false, + ...restProps +}) { + if (!!!children.length) { + //We have only one element. It's going to get the whole thing. + return ( +
+ {header ? ( + {header} + ) : null} + {children} +
+ ); + } + const rowGutter = { gutter: [16, 16] }; + + const colSpan = (spanOverride) => { + if (spanOverride) return { span: spanOverride }; + return { + xs: { + span: !grow ? 24 : Math.max(12, 24 / children.length), + }, + sm: { + span: !grow ? 12 : Math.max(12, 24 / children.length), + }, + md: { + span: !grow ? 8 : Math.max(8, 24 / children.length), + }, + lg: { + span: !grow ? 6 : Math.max(6, 24 / children.length), + }, + xl: { + span: !grow ? 4 : Math.max(4, 24 / children.length), + }, + }; + }; + + return ( +
+ {header ? {header} : null} + + {children.map( + (c, idx) => + c && ( + + {c} + + ) + )} + +
+ ); +} diff --git a/src/components/atoms/layout-form-row/layout-form-row.styles.scss b/src/components/atoms/layout-form-row/layout-form-row.styles.scss new file mode 100644 index 0000000..faf24cc --- /dev/null +++ b/src/components/atoms/layout-form-row/layout-form-row.styles.scss @@ -0,0 +1,20 @@ +//Override Antd Row margin to save space on forms. +.imex-form-row { + .ant-row { + margin-bottom: 0rem; + + .ant-form-item-label { + padding: 0rem; + } + + label { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; + display: inline-block; + padding: 0rem; + margin: 0rem; + } + } +} diff --git a/src/components/atoms/part-type-converter/part-type-converter.atom.jsx b/src/components/atoms/part-type-converter/part-type-converter.atom.jsx new file mode 100644 index 0000000..624027a --- /dev/null +++ b/src/components/atoms/part-type-converter/part-type-converter.atom.jsx @@ -0,0 +1,14 @@ +export default (part_type) => { + switch (part_type) { + case "PAA": + return "A/M"; + case "PAE": + return "Exist."; + case "PAN": + return "OEM"; + case "PAL": + return "LKQ"; + default: + return "?"; + } +}; diff --git a/src/components/atoms/price-diff-pc-formatter/price-diff-pc-formatter.atom.jsx b/src/components/atoms/price-diff-pc-formatter/price-diff-pc-formatter.atom.jsx new file mode 100644 index 0000000..d5c7628 --- /dev/null +++ b/src/components/atoms/price-diff-pc-formatter/price-diff-pc-formatter.atom.jsx @@ -0,0 +1,31 @@ +import { AlertFilled } from "@ant-design/icons"; +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectSelectedJobTargetPc } from "../../../redux/application/application.selectors"; +import "./price-diff-pc-formatter.styles.scss"; + +const mapStateToProps = createStructuredSelector({ + selectedJobTargetPc: selectSelectedJobTargetPc, +}); + +export function PriceDiffPcFormatterAtom({ + price_diff_pc, + selectedJobTargetPc, +}) { + return ( +
selectedJobTargetPc ? "green" : "red", + display: "flex", + alignItems: "center", + }} + > + {(price_diff_pc * 100).toFixed(1)}% + {price_diff_pc === 1 ? ( + + ) : null} +
+ ); +} +export default connect(mapStateToProps, null)(PriceDiffPcFormatterAtom); diff --git a/src/components/atoms/price-diff-pc-formatter/price-diff-pc-formatter.styles.scss b/src/components/atoms/price-diff-pc-formatter/price-diff-pc-formatter.styles.scss new file mode 100644 index 0000000..bd4b9f5 --- /dev/null +++ b/src/components/atoms/price-diff-pc-formatter/price-diff-pc-formatter.styles.scss @@ -0,0 +1,9 @@ +.blink_me { + animation: blinker 1s linear infinite; +} + +@keyframes blinker { + 50% { + opacity: 0; + } +} diff --git a/src/components/atoms/watcher-status/watcher-status.atom.jsx b/src/components/atoms/watcher-status/watcher-status.atom.jsx index 45fcd45..306af0e 100644 --- a/src/components/atoms/watcher-status/watcher-status.atom.jsx +++ b/src/components/atoms/watcher-status/watcher-status.atom.jsx @@ -14,8 +14,8 @@ const mapStateToProps = createStructuredSelector({ export function WatcherStatusAtom({ watcherStatus, watcherError }) { return ( -
- {watcherStatus} +
+ {watcherStatus} {watcherError && }
); diff --git a/src/components/molecules/close-date-display/close-date-display.molecule.jsx b/src/components/molecules/close-date-display/close-date-display.molecule.jsx new file mode 100644 index 0000000..d9a29ed --- /dev/null +++ b/src/components/molecules/close-date-display/close-date-display.molecule.jsx @@ -0,0 +1,44 @@ +import { useMutation } from "@apollo/client"; +import { DatePicker, message, Spin } from "antd"; +import moment from "moment"; +import React, { useState } from "react"; +import { UPDATE_JOB } from "../../../graphql/jobs.queries"; + +export default function CloseDateDisplayMolecule({ jobId, close_date }) { + const [editMode, setEditMode] = useState(false); + const [value, setValue] = useState(moment(close_date)); + const [loading, setLoading] = useState(false); + const [updateJob] = useMutation(UPDATE_JOB); + + const handleChange = async (newDate) => { + setLoading(true); + setValue(newDate); + const result = await updateJob({ + variables: { jobId: jobId, job: { close_date: newDate } }, + }); + + if (!result.errors) { + message.success("Close date updated."); + } else { + message.error("Error updating job."); + } + setLoading(false); + }; + + if (editMode) + return ( +
setEditMode(false)}> + + {loading && } +
+ ); + + return ( +
setEditMode(true)}> + {value.isValid() ? value.format("MM/DD/yyyy") : "No date set"} +
+ ); +} diff --git a/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx b/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx index bb0b16c..911584d 100644 --- a/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx +++ b/src/components/molecules/jobs-detail-description/jobs-detail-description.molecule.jsx @@ -1,7 +1,8 @@ -import { Descriptions, Skeleton } from "antd"; +import { Descriptions, PageHeader, Skeleton } from "antd"; import React from "react"; import CurrencyFormatterAtom from "../../atoms/currency-formatter/currency-formatter.atom"; import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; +import CloseDateDisplayMolecule from "../close-date-display/close-date-display.molecule"; export default function JobsDetailDescriptionMolecule({ loading, job }) { if (loading) return ; @@ -10,22 +11,23 @@ export default function JobsDetailDescriptionMolecule({ loading, job }) { return (
- - {job.clm_no} - - {job.ins_co_nm} - - {`${job.ownr_fn} ${job.ownr_ln}`} - {`${job.v_model_yr} ${job.v_makedesc} ${job.v_model}`} - - {job.clm_total} - - + + + {`${job.ownr_fn} ${job.ownr_ln}`} + {`${job.v_model_yr} ${job.v_makedesc} ${job.v_model}`} + + {job.clm_total} + + {job.group} + {job.v_age} + + + + +
); } diff --git a/src/components/molecules/jobs-lines-table/jobs-lines-table.molecule.jsx b/src/components/molecules/jobs-lines-table/jobs-lines-table.molecule.jsx index 6c59a12..526961a 100644 --- a/src/components/molecules/jobs-lines-table/jobs-lines-table.molecule.jsx +++ b/src/components/molecules/jobs-lines-table/jobs-lines-table.molecule.jsx @@ -1,8 +1,11 @@ import { Table } from "antd"; import React from "react"; import CurrencyFormatterAtom from "../../atoms/currency-formatter/currency-formatter.atom"; +import partTypeConverterAtom from "../../atoms/part-type-converter/part-type-converter.atom"; +import PriceDiffPcFormatterAtom from "../../atoms/price-diff-pc-formatter/price-diff-pc-formatter.atom"; -export default function JobLinesTableMolecule({ loading, jobLines }) { +export default function JobLinesTableMolecule({ loading, job }) { + const { joblines } = job; const columns = [ { title: "#", @@ -23,6 +26,7 @@ export default function JobLinesTableMolecule({ loading, jobLines }) { title: "Part Type", dataIndex: "part_type", key: "part_type", + render: (text, record) => partTypeConverterAtom(text), }, { title: "Part Number", @@ -48,9 +52,26 @@ export default function JobLinesTableMolecule({ loading, jobLines }) { ), }, { - title: "Qty.", - dataIndex: "part_qty", - key: "part_qty", + title: "Price Diff.", + dataIndex: "price_diff", + key: "price_diff", + + render: (text, record) => ( + {record.price_diff} + ), + }, + { + title: "Price Diff. %", + dataIndex: "price_diff_pc", + key: "price_diff_pc", + + render: (text, record) => ( + + ), }, ]; @@ -62,10 +83,10 @@ export default function JobLinesTableMolecule({ loading, jobLines }) { loading={loading} size="small" pagination={false} - dataSource={jobLines} + dataSource={joblines} scroll={{ x: true, - //y: "40rem" + y: "20rem", }} />
diff --git a/src/components/molecules/jobs-list-item/jobs-list-item.molecule.jsx b/src/components/molecules/jobs-list-item/jobs-list-item.molecule.jsx new file mode 100644 index 0000000..8dfdbc9 --- /dev/null +++ b/src/components/molecules/jobs-list-item/jobs-list-item.molecule.jsx @@ -0,0 +1,62 @@ +import { List } from "antd"; +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { setSelectedJobId } from "../../../redux/application/application.actions"; +import { selectSelectedJobId } from "../../../redux/application/application.selectors"; +import TimeAgoFormatter from "../../atoms/time-ago-formatter/time-ago-formatter.atom"; +import "./jobs-list-item.styles.scss"; + +const mapStateToProps = createStructuredSelector({ + selectedJobId: selectSelectedJobId, +}); +const mapDispatchToProps = (dispatch) => ({ + setSelectedJobId: (jobId) => dispatch(setSelectedJobId(jobId)), +}); + +export function JobsListItemMolecule({ + selectedJobId, + setSelectedJobId, + item, +}) { + const handleSelect = (jobId) => { + setSelectedJobId(jobId); + }; + + return ( + handleSelect(item.id)} + > +
+
+ {item.clm_no || "No Claim Number"} + + {item.updated_at} + +
+ +
{item.ins_co_nm || "No Insurance Co."}
+
{`${item.ownr_fn} ${item.ownr_ln}`}
+
+ {`${item.v_model_yr} ${item.v_makedesc} ${item.v_model} ${item.v_vin}`} +
+
+
+ ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(JobsListItemMolecule); diff --git a/src/components/molecules/jobs-list-item/jobs-list-item.styles.scss b/src/components/molecules/jobs-list-item/jobs-list-item.styles.scss new file mode 100644 index 0000000..6f209f1 --- /dev/null +++ b/src/components/molecules/jobs-list-item/jobs-list-item.styles.scss @@ -0,0 +1,22 @@ + +.jobs-list-item { + padding: 0; + margin: 0; + + .jobs-list-item-content { + &-selected { + border-left: 3px solid #1890ff; + } + + display: inline; + margin: 0.5rem; + padding: 0.5rem; + width: 100%; + } + + cursor: pointer; + &:hover { + background-color: #e6f7ff; + } + } + \ No newline at end of file diff --git a/src/components/molecules/jobs-search-fields/jobs-search-fields.molecule.jsx b/src/components/molecules/jobs-search-fields/jobs-search-fields.molecule.jsx new file mode 100644 index 0000000..45765d0 --- /dev/null +++ b/src/components/molecules/jobs-search-fields/jobs-search-fields.molecule.jsx @@ -0,0 +1,38 @@ +import { SearchOutlined } from "@ant-design/icons"; +import { Button, DatePicker, Form, Input } from "antd"; +import React from "react"; +export default function JobsSearchFieldsMolecule({ callSearchQuery }) { + const [form] = Form.useForm(); + + const handleFinish = (values) => { + callSearchQuery({ + variables: { + search: values.search, + startDate: (values.dateRange && values.dateRange[0]) || null, + endDate: (values.dateRange && values.dateRange[1]) || null, + }, + }); + }; + + return ( +
+
+ + + + + + + +
+
+ ); +} diff --git a/src/components/molecules/jobs-targets-stats/jobs-targets-stats.molecule.jsx b/src/components/molecules/jobs-targets-stats/jobs-targets-stats.molecule.jsx new file mode 100644 index 0000000..b5dc058 --- /dev/null +++ b/src/components/molecules/jobs-targets-stats/jobs-targets-stats.molecule.jsx @@ -0,0 +1,81 @@ +import { Skeleton, Statistic } from "antd"; +import Dinero from "dinero.js"; +import React, { useMemo } from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectSelectedJobTargetPc } from "../../../redux/application/application.selectors"; +import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; + +const mapStateToProps = createStructuredSelector({ + selectedJobTargetPc: selectSelectedJobTargetPc, +}); +const mapDispatchToProps = (dispatch) => ({ + //setUserLanguage: language => dispatch(setUserLanguage(language)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(JobsTargetsStatsMolecule); + +export function JobsTargetsStatsMolecule({ + loading, + job, + selectedJobTargetPc, +}) { + const currentRpsDollars = useMemo(() => { + if (!job) { + return 0; + } + return job.joblines.reduce((acc, val) => { + if (val.price_diff > 0) { + return acc.add( + Dinero({ amount: Math.round((val.price_diff || 0) * 100) }) + ); + } else { + return acc; + } + }, Dinero()); + }, [job]); + + const currentRpsPc = useMemo(() => { + //TODO Redo this to do total of db price - act price / db price + if (!job) { + return 0; + } + const dbPriceSum = job.joblines.reduce((acc, val) => { + return acc + val.db_price; + }, 0); + return (currentRpsDollars.getAmount() / dbPriceSum).toFixed(1); + }, [job, currentRpsDollars]); + + if (loading) return ; + if (!job) return ; + + return ( +
+ + currentRpsPc ? "tomato" : "seagreen", + }} + value={currentRpsPc} + suffix="%" + /> + +
+ ); +} diff --git a/src/components/molecules/shop-settings-form/shop-settings-form.molecule.jsx b/src/components/molecules/shop-settings-form/shop-settings-form.molecule.jsx new file mode 100644 index 0000000..c06355e --- /dev/null +++ b/src/components/molecules/shop-settings-form/shop-settings-form.molecule.jsx @@ -0,0 +1,130 @@ +import { Button, Input, Form, Select, InputNumber, Typography } from "antd"; +import FormListMoveArrows from "../../atoms/form-list-move-arrows/form-list-move-arrows.atom"; +import React from "react"; +import LayoutFormRow from "../../atoms/layout-form-row/layout-form-row.atom"; +import { DeleteFilled } from "@ant-design/icons"; + +export default function ShopSettingsFormMolecule({ form, saveLoading }) { + return ( +
+ Shop Settings + + + + + + + + + + + + + + + + + + + + +
+ { + remove(field.name); + }} + /> + +
+
+ + ))} + + + +
+ ); + }} + + + ); +} diff --git a/src/components/organisms/filepaths-list/filepaths-list.organism.jsx b/src/components/organisms/filepaths-list/filepaths-list.organism.jsx index 382d977..1e5c267 100644 --- a/src/components/organisms/filepaths-list/filepaths-list.organism.jsx +++ b/src/components/organisms/filepaths-list/filepaths-list.organism.jsx @@ -1,4 +1,4 @@ -import { List } from "antd"; +import { List, Typography } from "antd"; import React, { useEffect } from "react"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; @@ -24,7 +24,7 @@ export function FilePathsList({ watchedPaths }) { console.log("watchedPaths", watchedPaths); return (
- File Paths + Watcher File Paths
diff --git a/src/components/organisms/jobs-detail/jobs-detail.organism.jsx b/src/components/organisms/jobs-detail/jobs-detail.organism.jsx index b4b5d14..e05f725 100644 --- a/src/components/organisms/jobs-detail/jobs-detail.organism.jsx +++ b/src/components/organisms/jobs-detail/jobs-detail.organism.jsx @@ -1,13 +1,16 @@ import { useQuery } from "@apollo/client"; import { Result } from "antd"; -import React from "react"; +import React, { useEffect } from "react"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { QUERY_JOB_BY_PK } from "../../../graphql/jobs.queries"; +import { setSelectedJobTargetPc } from "../../../redux/application/application.actions"; import { selectSelectedJobId } from "../../../redux/application/application.selectors"; import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; +import JobsPartsGraphAtom from "../../atoms/jobs-parts-graph/jobs-parts-graph.atom"; import JobsDetailDescriptionMolecule from "../../molecules/jobs-detail-description/jobs-detail-description.molecule"; import JobsLinesTableMolecule from "../../molecules/jobs-lines-table/jobs-lines-table.molecule"; +import JobsTargetsStatsMolecule from "../../molecules/jobs-targets-stats/jobs-targets-stats.molecule"; import "./jobs-detail.organism.styles.scss"; const mapStateToProps = createStructuredSelector({ @@ -16,14 +19,23 @@ const mapStateToProps = createStructuredSelector({ }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) + setSelectedJobTargetPc: (job) => dispatch(setSelectedJobTargetPc(job)), }); -export function JobsDetailOrganism({ selectedJobId }) { +export function JobsDetailOrganism({ selectedJobId, setSelectedJobTargetPc }) { const { loading, error, data } = useQuery(QUERY_JOB_BY_PK, { variables: { jobId: selectedJobId }, skip: !selectedJobId, }); + useEffect(() => { + if (data) + setSelectedJobTargetPc({ + group: data.jobs_by_pk.group, + v_age: data.jobs_by_pk.v_age, + }); + }, [data, setSelectedJobTargetPc]); + if (!selectedJobId) return ; if (error) return ( @@ -32,6 +44,7 @@ export function JobsDetailOrganism({ selectedJobId }) { errorMessage={JSON.stringify(error)} /> ); + return (
- {selectedJobId} + +
+ + +
); } diff --git a/src/components/organisms/jobs-detail/jobs-detail.organism.styles.scss b/src/components/organisms/jobs-detail/jobs-detail.organism.styles.scss index 2a8eb4a..ec34fd5 100644 --- a/src/components/organisms/jobs-detail/jobs-detail.organism.styles.scss +++ b/src/components/organisms/jobs-detail/jobs-detail.organism.styles.scss @@ -1,5 +1,4 @@ .jobs-detail-container { height: 100%; overflow-y: auto; - } diff --git a/src/components/organisms/jobs-list-latest/jobs-list-latest.organism.jsx b/src/components/organisms/jobs-list-latest/jobs-list-latest.organism.jsx new file mode 100644 index 0000000..ea66ce0 --- /dev/null +++ b/src/components/organisms/jobs-list-latest/jobs-list-latest.organism.jsx @@ -0,0 +1,100 @@ +import { SyncOutlined } from "@ant-design/icons"; +import { useQuery } from "@apollo/client"; +import { Dropdown, List, Menu, Spin } from "antd"; +import React, { useState } from "react"; +import InfiniteScroll from "react-infinite-scroller"; +import { QUERY_ALL_JOBS_PAGINATED } from "../../../graphql/jobs.queries"; +import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; +import JobsListItemMolecule from "../../molecules/jobs-list-item/jobs-list-item.molecule"; + +const limit = 20; +export default function JobsTableOrganism() { + const [state, setState] = useState({ hasMore: true }); + + const { loading, error, data, refetch, fetchMore } = useQuery( + QUERY_ALL_JOBS_PAGINATED, + { + variables: { + offset: 0, + limit: limit, + order: [{ updated_at: "desc" }], + }, + } + ); + + const menu = ( + + refetch()}> + + Reload + + + ); + + const handleInfiniteOnLoad = (page) => { + fetchMore({ + variables: { + offset: limit * page, + }, + updateQuery: (prev, { fetchMoreResult }) => { + if (!fetchMoreResult) { + console.log("No more results. Fetch More was empty."); + setState({ ...state, hasMore: false }); + return prev; + } + + const newCache = Object.assign({}, prev, { + jobs: [...prev.jobs, ...fetchMoreResult.jobs], + }); + + if ( + newCache.jobs.length >= data && + data.jobs_aggregate.aggregate.count + ) { + console.log("No more results."); + setState({ ...state, hasMore: false }); + } + + return newCache; + }, + }); + }; + + if (error) + return ( + + ); + + return ( +
+
+ + + } + > + {loading && state.hasMore && ( +
+ +
+ )} +
+
+
+
+ {`${data ? data.jobs.length : 0} jobs loaded. ${ + data ? data.jobs_aggregate.aggregate.count : 0 + } total jobs.`} +
+ ); +} diff --git a/src/components/organisms/jobs-list-search/jobs-list-search.organism.jsx b/src/components/organisms/jobs-list-search/jobs-list-search.organism.jsx new file mode 100644 index 0000000..fb527dc --- /dev/null +++ b/src/components/organisms/jobs-list-search/jobs-list-search.organism.jsx @@ -0,0 +1,102 @@ +import { SyncOutlined } from "@ant-design/icons"; +import { useLazyQuery } from "@apollo/client"; +import { Dropdown, List, Menu, Spin } from "antd"; +import React, { useState } from "react"; +import InfiniteScroll from "react-infinite-scroller"; +import { SEARCH_JOBS_PAGINATED } from "../../../graphql/jobs.queries"; +import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; +import JobsListItemMolecule from "../../molecules/jobs-list-item/jobs-list-item.molecule"; +import JobsSearchFieldsMolecule from "../../molecules/jobs-search-fields/jobs-search-fields.molecule"; + +const limit = 20; +export default function JobsTableOrganism() { + const [state, setState] = useState({ hasMore: true }); + + const [ + callSearch, + { loading, error, data, refetch, fetchMore }, + ] = useLazyQuery(SEARCH_JOBS_PAGINATED, { + variables: { + offset: 0, + limit: limit, + }, + }); + + const menu = ( + + refetch()}> + + Reload + + + ); + + const handleInfiniteOnLoad = (page) => { + if (fetchMore) + fetchMore({ + variables: { + offset: limit * page, + }, + updateQuery: (prev, { fetchMoreResult }) => { + if (!fetchMoreResult) { + console.log("No more results. Fetch More was empty."); + setState({ ...state, hasMore: false }); + return prev; + } + + const newCache = Object.assign({}, prev, { + jobs: [...prev.search_jobs, ...fetchMoreResult.search_jobs], + }); + + if ( + newCache.jobs.length >= data && + data.search_jobs_aggregate.aggregate.count + ) { + console.log("No more results."); + setState({ ...state, hasMore: false }); + } + + return newCache; + }, + }); + }; + + if (error) + return ( + + ); + + return ( +
+ +
+ + + } + > + {loading && state.hasMore && ( +
+ +
+ )} +
+
+
+
+ {`${data ? data.search_jobs.length : 0} jobs loaded. ${ + data ? data.search_jobs_aggregate.aggregate.count : 0 + } total jobs.`} +
+ ); +} diff --git a/src/components/organisms/jobs-list/jobs-list.organism.jsx b/src/components/organisms/jobs-list/jobs-list.organism.jsx deleted file mode 100644 index 2583451..0000000 --- a/src/components/organisms/jobs-list/jobs-list.organism.jsx +++ /dev/null @@ -1,138 +0,0 @@ -import { SyncOutlined } from "@ant-design/icons"; -import { useQuery } from "@apollo/client"; -import { Button, List, Space, Spin, Typography } from "antd"; -import React, { useState } from "react"; -import InfiniteScroll from "react-infinite-scroller"; -import { connect } from "react-redux"; -import { createStructuredSelector } from "reselect"; -import { QUERY_ALL_JOBS_PAGINATED } from "../../../graphql/jobs.queries"; -import { setSelectedJobId } from "../../../redux/application/application.actions"; -import { selectSelectedJobId } from "../../../redux/application/application.selectors"; -import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; -import TimeAgoFormatter from "../../atoms/time-ago-formatter/time-ago-formatter.atom"; -import "./jobs-list.organism.styles.scss"; -const mapStateToProps = createStructuredSelector({ - selectedJobId: selectSelectedJobId, -}); -const mapDispatchToProps = (dispatch) => ({ - setSelectedJobId: (jobId) => dispatch(setSelectedJobId(jobId)), -}); - -const limit = 20; -export function JobsTableOrganism({ selectedJobId, setSelectedJobId }) { - const [state, setState] = useState({ hasMore: true }); - - const { loading, error, data, refetch, fetchMore } = useQuery( - QUERY_ALL_JOBS_PAGINATED, - { - variables: { - offset: 0, - limit: limit, - order: [{ updated_at: "desc" }], - }, - } - ); - - const handleInfiniteOnLoad = (page) => { - fetchMore({ - variables: { - offset: limit * page, - }, - updateQuery: (prev, { fetchMoreResult }) => { - if (!fetchMoreResult) { - console.log("No more results. Fetch More was empty."); - setState({ ...state, hasMore: false }); - return prev; - } - - const newCache = Object.assign({}, prev, { - jobs: [...prev.jobs, ...fetchMoreResult.jobs], - }); - - if ( - newCache.jobs.length >= data && - data.jobs_aggregate.aggregate.count - ) { - console.log("No more results."); - setState({ ...state, hasMore: false }); - } - - return newCache; - }, - }); - }; - - const handleSelect = (jobId) => { - setSelectedJobId(jobId); - }; - - if (error) - return ( - - ); - - return ( -
- -
- - ( - handleSelect(item.id)} - > -
-
- - {`${item.clm_no}${ - item.ins_co_nm ? ` | ${item.ins_co_nm}` : "" - }`} - - - {item.updated_at} - -
- - {`${item.ownr_fn} ${item.ownr_ln}`} - - {`${item.v_model_yr} ${item.v_makedesc} ${item.v_model} ${item.v_vin}`} - - -
-
- )} - > - {loading && state.hasMore && ( -
- -
- )} -
-
-
- {`${data ? data.jobs.length : 0} jobs loaded. ${ - data ? data.jobs_aggregate.aggregate.count : 0 - } total jobs.`} -
- ); -} -export default connect(mapStateToProps, mapDispatchToProps)(JobsTableOrganism); diff --git a/src/components/organisms/jobs-list/jobs-list.organism.styles.scss b/src/components/organisms/jobs-list/jobs-list.organism.styles.scss deleted file mode 100644 index 8662529..0000000 --- a/src/components/organisms/jobs-list/jobs-list.organism.styles.scss +++ /dev/null @@ -1,30 +0,0 @@ -.jobs-list-container { - height: 100%; -} - -.jobs-list-infinite-container { - overflow-y: auto; - overflow-x: hidden; - height: 100%; -} - -.jobs-list-item { - padding: 0; - margin: 0; - - .jobs-list-item-content { - &-selected { - border-left: 3px solid #1890ff; - } - - display: inline; - margin: 0.5rem; - padding: 0.5rem; - width: 100%; - } - - cursor: pointer; - &:hover { - background-color: #e6f7ff; - } -} diff --git a/src/components/organisms/shop-settings/shop-settings.organism.jsx b/src/components/organisms/shop-settings/shop-settings.organism.jsx new file mode 100644 index 0000000..981ef37 --- /dev/null +++ b/src/components/organisms/shop-settings/shop-settings.organism.jsx @@ -0,0 +1,72 @@ +import { useMutation, useQuery } from "@apollo/client"; +import { Form, notification, Skeleton } from "antd"; +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { QUERY_BODYSHOP, UPDATE_SHOP } from "../../../graphql/bodyshop.queries"; +import { setBodyshop } from "../../../redux/user/user.actions"; +import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; +import ShopSettingsFormMolecule from "../../molecules/shop-settings-form/shop-settings-form.molecule"; + +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = (dispatch) => ({ + //setUserLanguage: language => dispatch(setUserLanguage(language)) + setBodyshop: (shop) => dispatch(setBodyshop(shop)), +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(ShopSettingsOrganism); + +export function ShopSettingsOrganism({ setBodyshop }) { + const { loading, error, data } = useQuery(QUERY_BODYSHOP); + const [form] = Form.useForm(); + const [updateBodyshop] = useMutation(UPDATE_SHOP); + const [saveLoading, setSaveLoading] = useState(false); + + useEffect(() => { + if (data) form.resetFields(); + }, [form, data]); + + const handleFinish = async (values) => { + setSaveLoading(true); + + const result = await updateBodyshop({ + variables: { id: data.bodyshops[0].id, shop: values }, + }); + + if (!result.errors) { + notification["success"]({ message: "Settings saved successfully." }); + // console.log("r", result.data.update_bodyshops.returning[0]); + setBodyshop(result.data.update_bodyshops.returning[0]); + form.resetFields(); + } else { + notification["error"]({ + message: "Error while saving settings " + error, + }); + } + setSaveLoading(false); + }; + + return ( +
+
+ {loading && } + {error && } + + +
+ ); +} diff --git a/src/components/organisms/sider-menu/sider-menu.organism.jsx b/src/components/organisms/sider-menu/sider-menu.organism.jsx index 042545d..7c02dd4 100644 --- a/src/components/organisms/sider-menu/sider-menu.organism.jsx +++ b/src/components/organisms/sider-menu/sider-menu.organism.jsx @@ -8,15 +8,18 @@ import React from "react"; import { Link } from "react-router-dom"; import ipcTypes from "../../../ipc.types"; import SiderSignOut from "../../molecules/sider-sign-out/sider-sign-out.molecule"; +import { useLocation } from "react-router-dom"; const { ipcRenderer } = window; export default function SiderMenuOrganism() { + const { pathname } = useLocation(); + return ( - - }> + + }> Jobs - }> + }> Settings diff --git a/src/components/organisms/watcher-manager/watcher-manager.organism.jsx b/src/components/organisms/watcher-manager/watcher-manager.organism.jsx index 7e55813..791466f 100644 --- a/src/components/organisms/watcher-manager/watcher-manager.organism.jsx +++ b/src/components/organisms/watcher-manager/watcher-manager.organism.jsx @@ -1,3 +1,4 @@ +import { Typography } from "antd"; import React from "react"; import WatcherStatusAtom from "../../atoms/watcher-status/watcher-status.atom"; import WatcherStartMolecule from "../../molecules/watcher-start/watcher-start.molecule"; @@ -6,6 +7,7 @@ import WatcherStopMolecule from "../../molecules/watcher-stop/watcher-stop.molec export default function WatcherManagerOrganism() { return (
+ Watcher Status diff --git a/src/components/pages/jobs/jobs.page.jsx b/src/components/pages/jobs/jobs.page.jsx index 8954478..f2ef40c 100644 --- a/src/components/pages/jobs/jobs.page.jsx +++ b/src/components/pages/jobs/jobs.page.jsx @@ -1,9 +1,10 @@ -import { Col, Row } from "antd"; +import { Col, Row, Tabs } from "antd"; import React from "react"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; -import JobsListOrganism from "../../organisms/jobs-list/jobs-list.organism"; import JobsDetailOrganism from "../../organisms/jobs-detail/jobs-detail.organism"; +import JobsListOrganism from "../../organisms/jobs-list-latest/jobs-list-latest.organism"; +import JobsListSearchOrganism from "../../organisms/jobs-list-search/jobs-list-search.organism"; const mapStateToProps = createStructuredSelector({}); const mapDispatchToProps = (dispatch) => ({}); @@ -12,11 +13,17 @@ export function JobsPage() { return (
- - + + + + + + + + + - - + diff --git a/src/components/pages/routes/routes.page.jsx b/src/components/pages/routes/routes.page.jsx index 9277028..30e2638 100644 --- a/src/components/pages/routes/routes.page.jsx +++ b/src/components/pages/routes/routes.page.jsx @@ -19,8 +19,8 @@ export function RoutesPage() { - + diff --git a/src/components/pages/settings/settings.page.jsx b/src/components/pages/settings/settings.page.jsx index 2f2c555..fbed9b4 100644 --- a/src/components/pages/settings/settings.page.jsx +++ b/src/components/pages/settings/settings.page.jsx @@ -1,11 +1,22 @@ +import { Col, Row } from "antd"; import React from "react"; import FilePathsListOrganism from "../../organisms/filepaths-list/filepaths-list.organism"; +import ShopSettingsOrganism from "../../organisms/shop-settings/shop-settings.organism"; import WatcherManagerOrganism from "../../organisms/watcher-manager/watcher-manager.organism"; + export default function SettingsPage() { return (
- - + + + + + + + + + +
); } diff --git a/src/graphql/bodyshop.queries.js b/src/graphql/bodyshop.queries.js index 2c8c8bd..d36e62d 100644 --- a/src/graphql/bodyshop.queries.js +++ b/src/graphql/bodyshop.queries.js @@ -4,6 +4,20 @@ export const QUERY_BODYSHOP = gql` bodyshops { id shopname + targets + accepted_ins_co + } + } +`; +export const UPDATE_SHOP = gql` + mutation UPDATE_SHOP($id: uuid, $shop: bodyshops_set_input!) { + update_bodyshops(where: { id: { _eq: $id } }, _set: $shop) { + returning { + id + shopname + targets + accepted_ins_co + } } } `; diff --git a/src/graphql/jobs.queries.js b/src/graphql/jobs.queries.js index 094d56c..c378d31 100644 --- a/src/graphql/jobs.queries.js +++ b/src/graphql/jobs.queries.js @@ -41,8 +41,6 @@ export const QUERY_ALL_JOBS_PAGINATED = gql` id ins_co_nm clm_no - clm_total - ro_number updated_at } jobs_aggregate { @@ -53,6 +51,40 @@ export const QUERY_ALL_JOBS_PAGINATED = gql` } `; +export const SEARCH_JOBS_PAGINATED = gql` + query SEARCH_JOBS_PAGINATED( + $offset: Int + $limit: Int + $search: String + $startDate: date + $endDate: date + ) { + search_jobs( + offset: $offset + limit: $limit + args: { enddate: $endDate, search: $search, startdate: $startDate } + ) { + ownr_fn + ownr_ln + v_vin + v_model_yr + v_model + v_makedesc + id + ins_co_nm + clm_no + updated_at + } + search_jobs_aggregate( + args: { enddate: $endDate, search: $search, startdate: $startDate } + ) { + aggregate { + count(distinct: true) + } + } + } +`; + export const QUERY_JOB_BY_PK = gql` query QUERY_JOB_BY_PK($jobId: uuid!) { jobs_by_pk(id: $jobId) { @@ -68,7 +100,11 @@ export const QUERY_JOB_BY_PK = gql` clm_total ro_number updated_at - joblines(order_by: { unq_seq: asc }) { + group + v_age + loss_date + close_date + joblines(order_by: { line_no: asc }) { id act_price db_price @@ -78,6 +114,8 @@ export const QUERY_JOB_BY_PK = gql` part_qty part_type unq_seq + price_diff + price_diff_pc } } } @@ -118,6 +156,7 @@ export const UPDATE_JOB = gql` clm_total ro_number updated_at + close_date joblines(order_by: { unq_seq: asc }) { id act_price diff --git a/src/graphql/veh_group.queries.js b/src/graphql/veh_group.queries.js new file mode 100644 index 0000000..c2c517f --- /dev/null +++ b/src/graphql/veh_group.queries.js @@ -0,0 +1,21 @@ +import gql from "graphql-tag"; + +export const QUERY_GROUPS_BY_MAKE_TYPE = gql` + query QUERY_GROUPS_BY_MAKE_TYPE( + $make: String! + $type: String + $isNull: Boolean + ) { + veh_groups( + where: { + _and: { make: { _eq: $make } } + type: { _eq: $type, _is_null: $isNull } + } + ) { + id + group + make + type + } + } +`; diff --git a/src/ipc.types.js b/src/ipc.types.js index 50b067e..db36934 100644 --- a/src/ipc.types.js +++ b/src/ipc.types.js @@ -4,6 +4,11 @@ exports.default = { test: { start: "test-start", }, + app: { + toMain: { + setAcceptableInsCoNm: "setAcceptableInsCoNm", + }, + }, fileWatcher: { toMain: { filepathsGet: "filewatcher__filepathsget", diff --git a/src/ipc/ipc-estimate-utils.js b/src/ipc/ipc-estimate-utils.js index 586fffd..8b684e9 100644 --- a/src/ipc/ipc-estimate-utils.js +++ b/src/ipc/ipc-estimate-utils.js @@ -6,22 +6,43 @@ import { QUERY_JOB_BY_CLM_NO, UPDATE_JOB, } from "../graphql/jobs.queries"; +import { QUERY_GROUPS_BY_MAKE_TYPE } from "../graphql/veh_group.queries"; import { store } from "../redux/store"; +import moment from "moment"; +const { logger } = window; export async function UpsertEstimate(job) { const shopId = store.getState().user.bodyshop.id; + logger.info("Beginning Upserting job from Renderer."); + const parsedYr = parseInt(job.v_model_yr); + console.log("UpsertEstimate -> parsedYr", parsedYr); + + logger.info( + moment(job.loss_date).year() - + (parsedYr >= 0 ? 2000 + parsedYr : 1900 + parsedYr) + ); + + job = { + ...job, + group: await DetermineVehicleGroup(job), + v_age: + moment(job.loss_date).year() - + (parsedYr >= 0 ? 2000 + parsedYr : 1900 + parsedYr), + }; - //Using the claim number, find out if the job exists. If it doesnt, then we need to create it. const existingJobs = await client.query({ query: QUERY_JOB_BY_CLM_NO, variables: { clm_no: job.clm_no }, }); + if (existingJobs.data.jobs.length === 1) { let suppDelta = await GetSupplementDelta( existingJobs.data.jobs[0].id, existingJobs.data.jobs[0].joblines, job.joblines.data ); + + logger.info("Attemping to update job record."); await client.mutate({ mutation: gql` ${suppDelta} @@ -33,10 +54,12 @@ export async function UpsertEstimate(job) { mutation: UPDATE_JOB, variables: { jobId: existingJobs.data.jobs[0].id, job: job }, }); + logger.info("Job updated succesfully."); console.log("UpsertEstimate -> updatedJob", updatedJob); } else { - console.log("Insert a new job recort.", job); + logger.info("Attemping to insert job record."); + const result = await client.mutate({ mutation: INSERT_NEW_JOB, variables: { @@ -44,6 +67,8 @@ export async function UpsertEstimate(job) { }, refetchQueries: ["QUERY_ALL_JOBS_PAGINATED"], }); + logger.info("Job inserted succesfully."); + console.log("UpsertEstimate -> result", result); } } @@ -129,3 +154,42 @@ const generateRemoveQuery = (lineToRemove, index) => { id }`; }; + +const DetermineVehicleGroup = async (job) => { + logger.info( + "Searching for vehicle groups.!", + job.v_makedesc.toUpperCase(), + job.v_type ? job.v_type.toUpperCase() : null + ); + + const vehicleGroups = await client.query({ + query: QUERY_GROUPS_BY_MAKE_TYPE, + variables: { + make: job.v_makedesc.toUpperCase(), + type: + job.v_type && job.v_type.toUpperCase() !== "PC" + ? job.v_type.toUpperCase() + : null, + isNull: job.v_type && job.v_type.toUpperCase() !== "PC" ? false : true, + }, + }); + + if (vehicleGroups.data.veh_groups.length === 1) { + logger.info("Found 1 vehicle group.!", vehicleGroups.data.veh_groups[0]); + return vehicleGroups.data.veh_groups[0].group; + } else if (vehicleGroups.data.veh_groups.length === 0) { + //Uh-oh, should only be 1. + logger.info("No vehicle groups found."); + return null; + } else { + //Should never be here. + alert("Fatal error. Multiple vehicle groups found for this claim."); + logger.error( + "Found multiple vehicle groups!", + job.v_makedesc.toUpperCase(), + job.v_type ? job.v_type.toUpperCase() : null + ); + } + + return ""; +}; diff --git a/src/redux/application/application.actions.js b/src/redux/application/application.actions.js index a5f9bfa..6eb245d 100644 --- a/src/redux/application/application.actions.js +++ b/src/redux/application/application.actions.js @@ -29,3 +29,12 @@ export const setSelectedJobId = (jobId) => ({ type: ApplicationActionTypes.SET_SELECTED_JOB_ID, payload: jobId, }); +export const setSelectedJobTargetPc = ({ group, v_age }) => ({ + type: ApplicationActionTypes.SET_SELECTED_JOB_TARGET_PC, + payload: { group, v_age }, +}); + +export const setSelectedJobTargetPcSuccess = (pct) => ({ + type: ApplicationActionTypes.SET_SELECTED_JOB_TARGET_PC_SUCCESS, + payload: pct, +}); diff --git a/src/redux/application/application.reducer.js b/src/redux/application/application.reducer.js index c29a546..2e25874 100644 --- a/src/redux/application/application.reducer.js +++ b/src/redux/application/application.reducer.js @@ -4,6 +4,7 @@ const INITIAL_STATE = { watchedPaths: [], watcherError: null, selectedJobId: null, + selectedJobTargetPc: 100, }; const applicationReducer = (state = INITIAL_STATE, action) => { @@ -33,6 +34,11 @@ const applicationReducer = (state = INITIAL_STATE, action) => { ...state, watcherError: action.payload, }; + case ApplicationActionTypes.SET_SELECTED_JOB_TARGET_PC_SUCCESS: + return { + ...state, + selectedJobTargetPc: action.payload, + }; case ApplicationActionTypes.SET_SELECTED_JOB_ID: return { ...state, selectedJobId: action.payload }; default: diff --git a/src/redux/application/application.sagas.js b/src/redux/application/application.sagas.js index 4d19439..38fbe52 100644 --- a/src/redux/application/application.sagas.js +++ b/src/redux/application/application.sagas.js @@ -1,13 +1,30 @@ -//import { all, call, takeLatest } from "redux-saga/effects"; -//import ApplicationActionTypes from "./application.types"; +import { all, call, takeLatest, select, put } from "redux-saga/effects"; +import { setSelectedJobTargetPcSuccess } from "./application.actions"; +import ApplicationActionTypes from "./application.types"; -// export function* onJoinRoom() { -// yield takeLatest(ApplicationActionTypes.JOIN_ROOM, joinRoom); -// } -// export function* joinRoom({ payload: roomId }) { -// // console.log("function*joinRoom -> roomId", roomId); -// } +export function* onSetTargetPc() { + yield takeLatest( + ApplicationActionTypes.SET_SELECTED_JOB_TARGET_PC, + CalculateTarget + ); +} +export function* CalculateTarget({ payload }) { + const { group, v_age } = payload; + const targets = yield select((state) => state.user.bodyshop.targets); + + const targetsForGroup = targets.filter((t) => t.group === group); + if (!targetsForGroup) return 0; + const targetPc = targetsForGroup.filter( + (t) => t.ageGte <= v_age && (t.ageLt ? t.ageLt > v_age : true) + ); + if (targetPc.length === 0) yield put(setSelectedJobTargetPcSuccess(100)); + else if (targetPc.length === 1) + yield put(setSelectedJobTargetPcSuccess(targetPc[0].target)); + else { + yield put(setSelectedJobTargetPcSuccess(100)); + } +} export function* applicationSagas() { - //yield all([call(onJoinRoom)]); + yield all([call(onSetTargetPc)]); } diff --git a/src/redux/application/application.selectors.js b/src/redux/application/application.selectors.js index 8fcd74e..db993f7 100644 --- a/src/redux/application/application.selectors.js +++ b/src/redux/application/application.selectors.js @@ -16,7 +16,13 @@ export const selectWatcherError = createSelector( [selectApplication], (application) => application.watcherError ); + export const selectSelectedJobId = createSelector( [selectApplication], (application) => application.selectedJobId ); + +export const selectSelectedJobTargetPc = createSelector( + [selectApplication], + (application) => application.selectedJobTargetPc +); diff --git a/src/redux/application/application.types.js b/src/redux/application/application.types.js index 72b30fc..bac9945 100644 --- a/src/redux/application/application.types.js +++ b/src/redux/application/application.types.js @@ -5,5 +5,7 @@ const ApplicationActionTypes = { SET_WATCHER_STATUS: "SET_WATCHER_STATUS", SET_WATCHER_ERROR: "SET_WATCHER_ERROR", SET_SELECTED_JOB_ID: "SET_SELECTED_JOB_ID", + SET_SELECTED_JOB_TARGET_PC: "SET_SELECTED_JOB_TARGET_PC", + SET_SELECTED_JOB_TARGET_PC_SUCCESS: "SET_SELECTED_JOB_TARGET_PC_SUCCESS", }; export default ApplicationActionTypes; diff --git a/src/redux/user/user.sagas.js b/src/redux/user/user.sagas.js index f0e602c..77b4075 100644 --- a/src/redux/user/user.sagas.js +++ b/src/redux/user/user.sagas.js @@ -113,7 +113,10 @@ export function* signInSuccessSaga({ payload }) { const shop = yield client.query({ query: QUERY_BODYSHOP }); yield put(setBodyshop(shop.data.bodyshops[0])); - + ipcRenderer.send( + ipcTypes.default.app.toMain.setAcceptableInsCoNm, + shop.data.bodyshops[0].accepted_ins_co + ); ipcRenderer.send(ipcTypes.default.fileWatcher.toMain.start); // LogRocket.identify(payload.email); // if (!payload.email.includes("@imex.")) yield put(setInstanceId(payload.uid)); diff --git a/src/serviceWorker.js b/src/serviceWorker.js deleted file mode 100644 index 4562ae5..0000000 --- a/src/serviceWorker.js +++ /dev/null @@ -1,149 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === "localhost" || - // [::1] is the IPv6 localhost address. - window.location.hostname === "[::1]" || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -export function register(config) { - if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener("load", () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - "This web app is being served cache-first by a service " + - "worker. To learn more, visit https://bit.ly/CRA-PWA" - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl, config) { - navigator.serviceWorker - .register(swUrl) - .then((registration) => { - // Start addition--- - // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#manual_updates - // Added code, as our application will be open for a long time and we are a SPA, we need - // to trigger checks for updates frequently - setInterval(() => { - console.log("Checking if service worker was updated in server"); - registration.update(); - }, 15 * 60 * 1000); // Every 15 mins check - // End addition--- - - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === "installed") { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - "New content is available and will be used when all " + - "tabs for this page are closed. See https://bit.ly/CRA-PWA." - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log("Content is cached for offline use."); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch((error) => { - console.error("Error during service worker registration:", error); - }); -} - -function checkValidServiceWorker(swUrl, config) { - // Check if the service worker can be found. If it can't reload the page. - console.log("Seeing if service worker cna be found."); - fetch(swUrl) - .then((response) => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get("content-type"); - if ( - response.status === 404 || - (contentType != null && contentType.indexOf("javascript") === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - console.log("No service worker found. Unregistering."); - navigator.serviceWorker.ready.then((registration) => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - console.log("Service worker found. Registering."); - - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log( - "No internet connection found. App is running in offline mode." - ); - }); -} - -export function unregister() { - if ("serviceWorker" in navigator) { - navigator.serviceWorker.ready.then((registration) => { - registration.unregister(); - }); - } -}