From 9ae358dfdd55b4ff23bb62bae95332c1e0e7b5ce Mon Sep 17 00:00:00 2001 From: Lea3D <47499451+Lea3D@users.noreply.github.com> Date: Sat, 14 Jun 2025 01:41:55 +0200 Subject: [PATCH] Automatically load argon2 library --- README.md | 4 ++++ generator.js | 38 +++++++++++++++++++++++++------------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index c18a323..d6bd83d 100644 --- a/README.md +++ b/README.md @@ -184,6 +184,10 @@ Prerequisites: - emscripten with WebAssembly support ([howto](http://webassembly.org/getting-started/developers-guide/)) - CMake +`generator.js` will automatically load `docs/dist/argon2.js` if the library is not yet present. +To avoid an extra network request, you can still include `argon2.js` manually before `generator.js`. + + ## License [MIT](https://opensource.org/licenses/MIT) diff --git a/generator.js b/generator.js index 90787ee..9d16e61 100644 --- a/generator.js +++ b/generator.js @@ -1,15 +1,16 @@ document.addEventListener('DOMContentLoaded', () => { 'use strict'; - if (!window.argon2) { - console.error('argon2 library not present – ensure is loaded BEFORE generator.js'); - return; - } + const init = () => { + if (!window.argon2) { + console.error('argon2 library still not loaded'); + return; + } - const { hash, ArgonType } = window.argon2; - const goBtn = document.getElementById('go'); - const copyBtn = document.getElementById('copy'); - const outField = document.getElementById('out'); + const { hash, ArgonType } = window.argon2; + const goBtn = document.getElementById('go'); + const copyBtn = document.getElementById('copy'); + const outField = document.getElementById('out'); goBtn.addEventListener('click', async () => { const pass = document.getElementById('pass').value; @@ -39,9 +40,20 @@ document.addEventListener('DOMContentLoaded', () => { } }); - copyBtn.addEventListener('click', () => { - navigator.clipboard.writeText(outField.value) - .then(() => console.log('Copied to clipboard')) - .catch(err => console.error('Copy failed', err)); - }); + copyBtn.addEventListener('click', () => { + navigator.clipboard.writeText(outField.value) + .then(() => console.log('Copied to clipboard')) + .catch(err => console.error('Copy failed', err)); + }); + }; + + if (window.argon2) { + init(); + } else { + const script = document.createElement('script'); + script.src = 'docs/dist/argon2.js'; + script.onload = init; + script.onerror = () => console.error('Failed to load argon2 library'); + document.head.appendChild(script); + } }); \ No newline at end of file