✅ COMPLETED: 1. Dockerfile uses port 80 (astro preview) 2. BaseLayout imports globals.css 3. globals.css with Tailwind v4 @theme syntax 4. index.astro has Header, Footer, FixedContact 5. All image references fixed to existing files 6. Hero uses hdpe_pipe_main.jpg 7. Product cards use hdpe001.jpg 8. pt-20 on main for fixed header ✅ TESTED LOCALLY: - Build: 15 pages in 1.27s - Docker build successful - Port 80 working - Images load - CSS works Ready for Easypanel deployment.
50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
import { defineDriver } from "./utils/index.mjs";
|
|
import {
|
|
get,
|
|
set,
|
|
clear,
|
|
del,
|
|
keys,
|
|
createStore
|
|
} from "idb-keyval";
|
|
const DRIVER_NAME = "idb-keyval";
|
|
export default defineDriver((opts = {}) => {
|
|
const base = opts.base && opts.base.length > 0 ? `${opts.base}:` : "";
|
|
const makeKey = (key) => base + key;
|
|
let customStore;
|
|
if (opts.dbName && opts.storeName) {
|
|
customStore = createStore(opts.dbName, opts.storeName);
|
|
}
|
|
return {
|
|
name: DRIVER_NAME,
|
|
options: opts,
|
|
async hasItem(key) {
|
|
const item = await get(makeKey(key), customStore);
|
|
return item === void 0 ? false : true;
|
|
},
|
|
async getItem(key) {
|
|
const item = await get(makeKey(key), customStore);
|
|
return item ?? null;
|
|
},
|
|
async getItemRaw(key) {
|
|
const item = await get(makeKey(key), customStore);
|
|
return item ?? null;
|
|
},
|
|
setItem(key, value) {
|
|
return set(makeKey(key), value, customStore);
|
|
},
|
|
setItemRaw(key, value) {
|
|
return set(makeKey(key), value, customStore);
|
|
},
|
|
removeItem(key) {
|
|
return del(makeKey(key), customStore);
|
|
},
|
|
getKeys() {
|
|
return keys(customStore);
|
|
},
|
|
clear() {
|
|
return clear(customStore);
|
|
}
|
|
};
|
|
});
|