From 2a60c292a62a078ad62c1bf43d86b3e1b5d3d567 Mon Sep 17 00:00:00 2001 From: buzz-lightsnack-2007 <73412182+buzz-lightsnack-2007@users.noreply.github.com> Date: Mon, 29 Apr 2024 08:48:03 +0800 Subject: [PATCH] add comparison for session storage --- scripts/secretariat.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/secretariat.js b/scripts/secretariat.js index 8261966..91ba696 100644 --- a/scripts/secretariat.js +++ b/scripts/secretariat.js @@ -376,6 +376,32 @@ class session { // Write! store(DATA[`inject`]); } + + /* Compare a data against the stored data. Useful when comparing dictionaries. + + @param {string} PATH the name + @param {object} DATA the data to compare to + */ + static async compare(PATH, DATA) { + /* The actual comparison of data. */ + async function comparison(DATA_ONE, DATA_TWO) { + let RESULT = true; + + // The first round of checking is on the data type. + RESULT = ((typeof DATA_ONE == typeof DATA_TWO) ? ((Array.isArray(DATA_TWO) == Array.isArray(DATA_ONE)) && !((DATA_ONE == null && DATA_TWO != null) || (DATA_ONE != null && DATA_TWO == null))) : false) ? ((typeof DATA_ONE).includes(`obj`) ? (await hash.digest(DATA_ONE, {"output": "Number"}) == await hash.digest(DATA_TWO, {"output": "Number"})) : DATA_ONE == DATA_TWO) : false; + + return (RESULT); + } + + + let COMPARISON = {}; + COMPARISON[`test`] = (PATH) ? DATA : DATA[1]; + COMPARISON[`against`] = (PATH) ? (await session.read((Array.isArray(PATH)) ? [...PATH] : PATH)) : DATA[0]; + COMPARISON[`result`] = comparison(COMPARISON[`against`], COMPARISON[`test`]); + + // Return the result. + return (COMPARISON[`result`]); + } } /* Compare a data against the stored data. Useful when comparing dictionaries.