Fantasy-Map-Generator/public/libs/indexedDB.js
Azgaar 9e0eb03618
[Migration] NPM (#1266)
* chore: add npm + vite for progressive enhancement

* fix: update Dockerfile to copy only the dist folder contents

* fix: update Dockerfile to use multi-stage build for optimized production image

* fix: correct nginx config file copy command in Dockerfile

* chore: add netlify configuration for build and redirects

* fix: add NODE_VERSION to environment in Netlify configuration

* remove wrong dist folder

* Update package.json

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: split public and src

* migrating all util files from js to ts

* feat: Implement HeightmapGenerator and Voronoi module

- Added HeightmapGenerator class for generating heightmaps with various tools (Hill, Pit, Range, Trough, Strait, etc.).
- Introduced Voronoi class for creating Voronoi diagrams using Delaunator.
- Updated index.html to include new modules.
- Created index.ts to manage module imports.
- Enhanced arrayUtils and graphUtils with type definitions and improved functionality.
- Added utility functions for generating grids and calculating Voronoi cells.

* chore: add GitHub Actions workflow for deploying to GitHub Pages

* fix: update branch name in GitHub Actions workflow from 'main' to 'master'

* chore: update package.json to specify Node.js engine version and remove unused launch.json

* Initial plan

* Update copilot guidelines to reflect NPM/Vite/TypeScript migration

Co-authored-by: Azgaar <26469650+Azgaar@users.noreply.github.com>

* Update src/modules/heightmap-generator.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/utils/graphUtils.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/heightmap-generator.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: Add TIME and ERROR variables to global scope in HeightmapGenerator

* fix: Update base path in vite.config.ts for Netlify deployment

* fix: Update Node.js version in Dockerfile to 24-alpine

---------

Co-authored-by: Marc Emmanuel <marc.emmanuel@tado.com>
Co-authored-by: Marc Emmanuel <marcwissler@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Azgaar <26469650+Azgaar@users.noreply.github.com>
2026-01-22 12:20:12 +01:00

65 lines
1.7 KiB
JavaScript

let db;
const DATABASE_NAME = "d2";
const STORE_NAME = "s";
const openDatabase = () => {
return new Promise((resolve, reject) => {
if (db) resolve();
if (!window.indexedDB) return reject("IndexedDB is not supported");
const request = window.indexedDB.open(DATABASE_NAME);
request.onsuccess = event => {
db = event.target.result;
resolve();
};
request.onerror = event => {
console.error("IndexedDB request error");
reject();
};
request.onupgradeneeded = event => {
db = event.target.result;
const objectStore = db.createObjectStore(STORE_NAME, {keyPath: "key"});
objectStore.transaction.oncomplete = () => {
db = event.target.result;
};
};
});
};
const ldb = {
get: key => {
return new Promise((resolve, reject) => {
openDatabase().then(() => {
const hasStore = Array.from(db.objectStoreNames).includes(STORE_NAME);
if (!hasStore) return reject("IndexedDB: no store found");
const transaction = db.transaction(STORE_NAME, "readonly");
const objectStore = transaction.objectStore(STORE_NAME);
const getRequest = objectStore.get(key);
getRequest.onsuccess = event => {
const result = event.target.result?.value || null;
resolve(result);
};
});
});
},
set: (keyName, value) => {
return new Promise(resolve => {
openDatabase().then(() => {
const transaction = db.transaction(STORE_NAME, "readwrite");
const objectStore = transaction.objectStore([STORE_NAME]);
const putRequest = objectStore.put({key: keyName, value});
putRequest.onsuccess = () => {
resolve();
};
});
});
}
};