feat: Add complete PDPA compliance pages

- Admin dashboard (/admin/consent-logs) with password auth
- Consent API (/api/consent) with SQLite + IP hashing
- Privacy Policy (Thai) - PDPA Section 36 compliant
- Terms & Conditions (Thai) - 9 standard clauses
- .env.example template with Umami placeholder

All pages preserve current design system.
This commit is contained in:
Kunthawat
2026-03-10 21:28:23 +07:00
parent e98b9f2bff
commit b2e427791b
3282 changed files with 302503 additions and 435 deletions

View File

@@ -0,0 +1,17 @@
import type * as proto from "./shared/proto.js";
/** JavaScript values that you can receive from the database in a statement result. */
export type Value = null | string | number | bigint | ArrayBuffer;
/** JavaScript values that you can send to the database as an argument. */
export type InValue = Value | boolean | Uint8Array | Date | RegExp | object;
/** Possible representations of SQLite integers in JavaScript:
*
* - `"number"` (default): returns SQLite integers as JavaScript `number`-s (double precision floats).
* `number` cannot precisely represent integers larger than 2^53-1 in absolute value, so attempting to read
* larger integers will throw a `RangeError`.
* - `"bigint"`: returns SQLite integers as JavaScript `bigint`-s (arbitrary precision integers). Bigints can
* precisely represent all SQLite integers.
* - `"string"`: returns SQLite integers as strings.
*/
export type IntMode = "number" | "bigint" | "string";
export declare function valueToProto(value: InValue): proto.Value;
export declare function valueFromProto(value: proto.Value, intMode: IntMode): Value;