refactor: improve type safety and browser compatibility - Replace any types with SqlValue[] in migration system - Add browser-compatible implementations of Node.js modules (crypto, fs, path) - Update Vite config to handle Node.js module polyfills - Remove outdated migration documentation files

This commit is contained in:
Matt Raymer
2025-05-25 23:37:08 -04:00
parent 9492018fd6
commit 152499a34f
7 changed files with 1035 additions and 206 deletions

View File

@@ -0,0 +1,2 @@
// Empty module to satisfy Node.js built-in module imports
export default {};

View File

@@ -0,0 +1,17 @@
// Minimal crypto module implementation for browser using Web Crypto API
const crypto = {
...window.crypto,
// Add any Node.js crypto methods that might be needed
randomBytes: (size) => {
const buffer = new Uint8Array(size);
window.crypto.getRandomValues(buffer);
return buffer;
},
createHash: () => ({
update: () => ({
digest: () => new Uint8Array(32) // Return empty hash
})
})
};
export default crypto;

View File

@@ -0,0 +1,18 @@
// Minimal fs module implementation for browser
const fs = {
readFileSync: () => {
throw new Error('fs.readFileSync is not supported in browser');
},
writeFileSync: () => {
throw new Error('fs.writeFileSync is not supported in browser');
},
existsSync: () => false,
mkdirSync: () => {},
readdirSync: () => [],
statSync: () => ({
isDirectory: () => false,
isFile: () => false
})
};
export default fs;

View File

@@ -0,0 +1,13 @@
// Minimal path module implementation for browser
const path = {
resolve: (...parts) => parts.join('/'),
join: (...parts) => parts.join('/'),
dirname: (p) => p.split('/').slice(0, -1).join('/'),
basename: (p) => p.split('/').pop(),
extname: (p) => {
const parts = p.split('.');
return parts.length > 1 ? '.' + parts.pop() : '';
}
};
export default path;