Fizu123 commited on
Commit
f66eff3
·
verified ·
1 Parent(s): e6935e0

Upload 6 files

Browse files
Files changed (6) hide show
  1. .env +2 -0
  2. index.js +127 -0
  3. initialize-db.js +113 -0
  4. package-lock.json +1735 -0
  5. package.json +20 -0
  6. sqlite.db +0 -0
.env ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ BETTER_AUTH_SECRET=dd1a1a736c8bb8e8ce98dedd17300b164f9d6990fba02f1cf376a809a4644704
2
+ BETTER_AUTH_URL=http://localhost:8002
index.js ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ require('dotenv').config();
2
+ const express = require('express');
3
+ const cors = require('cors');
4
+ const Database = require('better-sqlite3');
5
+ const { betterAuth } = require('better-auth');
6
+ const { toNodeHandler } = require('better-auth/node');
7
+
8
+ // Initialize Express app
9
+ const app = express();
10
+ const port = 8002;
11
+
12
+ /* -------------------------
13
+ Logging & CORS Configuration
14
+ ------------------------- */
15
+ app.use((req, res, next) => {
16
+ console.log(`[${new Date().toISOString()}] ${req.method} ${req.url} - Origin: ${req.headers.origin}`);
17
+ next();
18
+ });
19
+
20
+ app.use(
21
+ cors({
22
+ origin: (origin, callback) => {
23
+ // Allow all local origins for development
24
+ if (!origin || origin.includes('localhost') || origin.includes('127.0.0.1')) {
25
+ callback(null, true);
26
+ } else {
27
+ callback(null, true); // Be permissive in dev
28
+ }
29
+ },
30
+ credentials: true,
31
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'],
32
+ allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With', 'x-better-auth-request'],
33
+ optionsSuccessStatus: 200, // Important for older browsers/preflight
34
+ })
35
+ );
36
+
37
+ /* -------------------------
38
+ Body Parsers
39
+ ------------------------- */
40
+ app.use(express.json());
41
+ app.use(express.urlencoded({ extended: true }));
42
+
43
+ /* -------------------------
44
+ Better Auth Setup
45
+ ------------------------- */
46
+ const auth = betterAuth({
47
+ database: new Database('./sqlite.db', {
48
+ fileMustExist: false,
49
+ }),
50
+ secret: process.env.BETTER_AUTH_SECRET || 'dd1a1a736c8bb8e8ce98dedd17300b164f9d6990fba02f1cf376a809a4644704',
51
+
52
+ // Must match backend server URL
53
+ baseURL: process.env.BETTER_AUTH_URL || 'http://localhost:8002',
54
+
55
+ // Trusted origins for multi-origin/cross-port setups
56
+ trustedOrigins: [
57
+ 'http://localhost:3000',
58
+ 'http://localhost:3001',
59
+ 'http://localhost:3002',
60
+ 'http://127.0.0.1:3000',
61
+ 'http://127.0.0.1:3001',
62
+ 'http://127.0.0.1:3002'
63
+ ],
64
+
65
+ emailAndPassword: {
66
+ enabled: true,
67
+ requireEmailVerification: false,
68
+ sendActivationEmail: false,
69
+ password: {
70
+ enabled: true,
71
+ minLength: 6,
72
+ },
73
+ },
74
+
75
+ user: {
76
+ additionalFields: {
77
+ softwareBackground: {
78
+ type: 'string',
79
+ required: false,
80
+ },
81
+ hardwareBackground: {
82
+ type: 'string',
83
+ required: false,
84
+ },
85
+ roboticsExperience: {
86
+ type: 'string',
87
+ required: false,
88
+ },
89
+ },
90
+ },
91
+
92
+ account: {
93
+ accountLinking: {
94
+ enabled: true,
95
+ },
96
+ },
97
+
98
+ session: {
99
+ expiresIn: 7 * 24 * 60 * 60, // 7 days
100
+ updateAge: 24 * 60 * 60, // 24 hours
101
+ },
102
+ });
103
+
104
+ /* -------------------------
105
+ Auth Routes
106
+ ------------------------- */
107
+ app.use('/api/auth', toNodeHandler(auth));
108
+
109
+ /* -------------------------
110
+ Health Check Routes
111
+ ------------------------- */
112
+ app.get('/', (req, res) => {
113
+ res.send('Auth server is running!');
114
+ });
115
+
116
+ app.get('/health', (req, res) => {
117
+ res.json({ status: 'OK', message: 'Auth server is healthy' });
118
+ });
119
+
120
+ /* -------------------------
121
+ Start Server
122
+ ------------------------- */
123
+ app.listen(port, '0.0.0.0', () => {
124
+ console.log(`✅ Auth server is running and listening on all interfaces!`);
125
+ console.log(`👉 Local: http://127.0.0.1:${port}`);
126
+ console.log(`👉 Network: http://localhost:${port}`);
127
+ });
initialize-db.js ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Permissive "Relaxed" Database Schema for Better Auth
2
+ // This version removes NOT NULL constraints from all columns except ID
3
+ // to prevent "NOT NULL constraint failed" errors while we determine
4
+ // the exact naming convention Better Auth is using on your system.
5
+
6
+ const Database = require('better-sqlite3');
7
+ const path = require('path');
8
+
9
+ const dbPath = path.join(__dirname, 'sqlite.db');
10
+ const db = new Database(dbPath);
11
+
12
+ console.log('🚀 Starting "Relaxed" Database Repair...');
13
+
14
+ try {
15
+ db.pragma('journal_mode = WAL');
16
+
17
+ // 1. User Table - All nullable except id
18
+ console.log('Creating/Repairing "user" table...');
19
+ db.prepare(`
20
+ CREATE TABLE IF NOT EXISTS user (
21
+ id TEXT PRIMARY KEY,
22
+ name TEXT,
23
+ email TEXT UNIQUE,
24
+ email_verified BOOLEAN,
25
+ emailVerified BOOLEAN,
26
+ image TEXT,
27
+ created_at DATETIME,
28
+ createdAt DATETIME,
29
+ updated_at DATETIME,
30
+ updatedAt DATETIME,
31
+ software_background TEXT,
32
+ softwareBackground TEXT,
33
+ hardware_background TEXT,
34
+ hardwareBackground TEXT,
35
+ robotics_experience TEXT,
36
+ roboticsExperience TEXT
37
+ )
38
+ `).run();
39
+
40
+ // 2. Account Table - All nullable except id
41
+ console.log('Creating/Repairing "account" table...');
42
+ db.prepare(`
43
+ CREATE TABLE IF NOT EXISTS account (
44
+ id TEXT PRIMARY KEY,
45
+ user_id TEXT,
46
+ userId TEXT,
47
+ account_id TEXT,
48
+ accountId TEXT,
49
+ provider_id TEXT,
50
+ providerId TEXT,
51
+ access_token TEXT,
52
+ accessToken TEXT,
53
+ refresh_token TEXT,
54
+ refreshToken TEXT,
55
+ id_token TEXT,
56
+ idToken TEXT,
57
+ expires_at DATETIME,
58
+ expiresAt DATETIME,
59
+ password TEXT,
60
+ created_at DATETIME,
61
+ createdAt DATETIME,
62
+ updated_at DATETIME,
63
+ updatedAt DATETIME
64
+ )
65
+ `).run();
66
+
67
+ // 3. Session Table - All nullable except id
68
+ console.log('Creating/Repairing "session" table...');
69
+ db.prepare(`
70
+ CREATE TABLE IF NOT EXISTS session (
71
+ id TEXT PRIMARY KEY,
72
+ user_id TEXT,
73
+ userId TEXT,
74
+ token TEXT UNIQUE,
75
+ expires_at DATETIME,
76
+ expiresAt DATETIME,
77
+ ip_address TEXT,
78
+ ipAddress TEXT,
79
+ user_agent TEXT,
80
+ userAgent TEXT,
81
+ created_at DATETIME,
82
+ createdAt DATETIME,
83
+ updated_at DATETIME,
84
+ updatedAt DATETIME
85
+ )
86
+ `).run();
87
+
88
+ // 4. Verification Table - All nullable except id
89
+ console.log('Creating/Repairing "verification" table...');
90
+ db.prepare(`
91
+ CREATE TABLE IF NOT EXISTS verification (
92
+ id TEXT PRIMARY KEY,
93
+ identifier TEXT,
94
+ value TEXT,
95
+ expires_at DATETIME,
96
+ expiresAt DATETIME,
97
+ created_at DATETIME,
98
+ createdAt DATETIME,
99
+ updated_at DATETIME,
100
+ updatedAt DATETIME
101
+ )
102
+ `).run();
103
+
104
+ console.log('✅ Relaxed database schema is ready!');
105
+ const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all();
106
+ console.log('Current Database Map:', tables.map(t => t.name).join(', '));
107
+
108
+ } catch (error) {
109
+ console.error('❌ Critical error during schema creation:', error);
110
+ } finally {
111
+ db.close();
112
+ console.log('👋 Database connection closed.');
113
+ }
package-lock.json ADDED
@@ -0,0 +1,1735 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "auth-server",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "auth-server",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "better-auth": "^1.4.9",
12
+ "better-sqlite3": "^12.5.0",
13
+ "cors": "^2.8.5",
14
+ "dotenv": "^17.2.3",
15
+ "express": "^5.2.1"
16
+ },
17
+ "devDependencies": {
18
+ "nodemon": "^3.0.1"
19
+ }
20
+ },
21
+ "node_modules/@better-auth/core": {
22
+ "version": "1.4.9",
23
+ "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.4.9.tgz",
24
+ "integrity": "sha512-JT2q4NDkQzN22KclUEoZ7qU6tl9HUTfK1ctg2oWlT87SEagkwJcnrUwS9VznL+u9ziOIfY27P0f7/jSnmvLcoQ==",
25
+ "dependencies": {
26
+ "@standard-schema/spec": "^1.0.0",
27
+ "zod": "^4.1.12"
28
+ },
29
+ "peerDependencies": {
30
+ "@better-auth/utils": "0.3.0",
31
+ "@better-fetch/fetch": "1.1.21",
32
+ "better-call": "1.1.7",
33
+ "jose": "^6.1.0",
34
+ "kysely": "^0.28.5",
35
+ "nanostores": "^1.0.1"
36
+ }
37
+ },
38
+ "node_modules/@better-auth/telemetry": {
39
+ "version": "1.4.9",
40
+ "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.4.9.tgz",
41
+ "integrity": "sha512-Tthy1/Gmx+pYlbvRQPBTKfVei8+pJwvH1NZp+5SbhwA6K2EXIaoonx/K6N/AXYs2aKUpyR4/gzqDesDjL7zd6A==",
42
+ "dependencies": {
43
+ "@better-auth/utils": "0.3.0",
44
+ "@better-fetch/fetch": "1.1.21"
45
+ },
46
+ "peerDependencies": {
47
+ "@better-auth/core": "1.4.9"
48
+ }
49
+ },
50
+ "node_modules/@better-auth/utils": {
51
+ "version": "0.3.0",
52
+ "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.0.tgz",
53
+ "integrity": "sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw=="
54
+ },
55
+ "node_modules/@better-fetch/fetch": {
56
+ "version": "1.1.21",
57
+ "resolved": "https://registry.npmjs.org/@better-fetch/fetch/-/fetch-1.1.21.tgz",
58
+ "integrity": "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A=="
59
+ },
60
+ "node_modules/@noble/ciphers": {
61
+ "version": "2.1.1",
62
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz",
63
+ "integrity": "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==",
64
+ "engines": {
65
+ "node": ">= 20.19.0"
66
+ },
67
+ "funding": {
68
+ "url": "https://paulmillr.com/funding/"
69
+ }
70
+ },
71
+ "node_modules/@noble/hashes": {
72
+ "version": "2.0.1",
73
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
74
+ "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
75
+ "engines": {
76
+ "node": ">= 20.19.0"
77
+ },
78
+ "funding": {
79
+ "url": "https://paulmillr.com/funding/"
80
+ }
81
+ },
82
+ "node_modules/@standard-schema/spec": {
83
+ "version": "1.1.0",
84
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
85
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="
86
+ },
87
+ "node_modules/accepts": {
88
+ "version": "2.0.0",
89
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
90
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
91
+ "dependencies": {
92
+ "mime-types": "^3.0.0",
93
+ "negotiator": "^1.0.0"
94
+ },
95
+ "engines": {
96
+ "node": ">= 0.6"
97
+ }
98
+ },
99
+ "node_modules/anymatch": {
100
+ "version": "3.1.3",
101
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
102
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
103
+ "dev": true,
104
+ "dependencies": {
105
+ "normalize-path": "^3.0.0",
106
+ "picomatch": "^2.0.4"
107
+ },
108
+ "engines": {
109
+ "node": ">= 8"
110
+ }
111
+ },
112
+ "node_modules/balanced-match": {
113
+ "version": "1.0.2",
114
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
115
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
116
+ "dev": true
117
+ },
118
+ "node_modules/base64-js": {
119
+ "version": "1.5.1",
120
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
121
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
122
+ "funding": [
123
+ {
124
+ "type": "github",
125
+ "url": "https://github.com/sponsors/feross"
126
+ },
127
+ {
128
+ "type": "patreon",
129
+ "url": "https://www.patreon.com/feross"
130
+ },
131
+ {
132
+ "type": "consulting",
133
+ "url": "https://feross.org/support"
134
+ }
135
+ ]
136
+ },
137
+ "node_modules/better-auth": {
138
+ "version": "1.4.9",
139
+ "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.4.9.tgz",
140
+ "integrity": "sha512-usSdjuyTzZwIvM8fjF8YGhPncxV3MAg3dHUO9uPUnf0yklXUSYISiH1+imk6/Z+UBqsscyyPRnbIyjyK97p7YA==",
141
+ "dependencies": {
142
+ "@better-auth/core": "1.4.9",
143
+ "@better-auth/telemetry": "1.4.9",
144
+ "@better-auth/utils": "0.3.0",
145
+ "@better-fetch/fetch": "1.1.21",
146
+ "@noble/ciphers": "^2.0.0",
147
+ "@noble/hashes": "^2.0.0",
148
+ "better-call": "1.1.7",
149
+ "defu": "^6.1.4",
150
+ "jose": "^6.1.0",
151
+ "kysely": "^0.28.5",
152
+ "nanostores": "^1.0.1",
153
+ "zod": "^4.1.12"
154
+ },
155
+ "peerDependencies": {
156
+ "@lynx-js/react": "*",
157
+ "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
158
+ "@sveltejs/kit": "^2.0.0",
159
+ "@tanstack/react-start": "^1.0.0",
160
+ "better-sqlite3": "^12.0.0",
161
+ "drizzle-kit": ">=0.31.4",
162
+ "drizzle-orm": ">=0.41.0",
163
+ "mongodb": "^6.0.0 || ^7.0.0",
164
+ "mysql2": "^3.0.0",
165
+ "next": "^14.0.0 || ^15.0.0 || ^16.0.0",
166
+ "pg": "^8.0.0",
167
+ "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0",
168
+ "react": "^18.0.0 || ^19.0.0",
169
+ "react-dom": "^18.0.0 || ^19.0.0",
170
+ "solid-js": "^1.0.0",
171
+ "svelte": "^4.0.0 || ^5.0.0",
172
+ "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0",
173
+ "vue": "^3.0.0"
174
+ },
175
+ "peerDependenciesMeta": {
176
+ "@lynx-js/react": {
177
+ "optional": true
178
+ },
179
+ "@prisma/client": {
180
+ "optional": true
181
+ },
182
+ "@sveltejs/kit": {
183
+ "optional": true
184
+ },
185
+ "@tanstack/react-start": {
186
+ "optional": true
187
+ },
188
+ "better-sqlite3": {
189
+ "optional": true
190
+ },
191
+ "drizzle-kit": {
192
+ "optional": true
193
+ },
194
+ "drizzle-orm": {
195
+ "optional": true
196
+ },
197
+ "mongodb": {
198
+ "optional": true
199
+ },
200
+ "mysql2": {
201
+ "optional": true
202
+ },
203
+ "next": {
204
+ "optional": true
205
+ },
206
+ "pg": {
207
+ "optional": true
208
+ },
209
+ "prisma": {
210
+ "optional": true
211
+ },
212
+ "react": {
213
+ "optional": true
214
+ },
215
+ "react-dom": {
216
+ "optional": true
217
+ },
218
+ "solid-js": {
219
+ "optional": true
220
+ },
221
+ "svelte": {
222
+ "optional": true
223
+ },
224
+ "vitest": {
225
+ "optional": true
226
+ },
227
+ "vue": {
228
+ "optional": true
229
+ }
230
+ }
231
+ },
232
+ "node_modules/better-call": {
233
+ "version": "1.1.7",
234
+ "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.1.7.tgz",
235
+ "integrity": "sha512-6gaJe1bBIEgVebQu/7q9saahVzvBsGaByEnE8aDVncZEDiJO7sdNB28ot9I6iXSbR25egGmmZ6aIURXyQHRraQ==",
236
+ "dependencies": {
237
+ "@better-auth/utils": "^0.3.0",
238
+ "@better-fetch/fetch": "^1.1.4",
239
+ "rou3": "^0.7.10",
240
+ "set-cookie-parser": "^2.7.1"
241
+ },
242
+ "peerDependencies": {
243
+ "zod": "^4.0.0"
244
+ },
245
+ "peerDependenciesMeta": {
246
+ "zod": {
247
+ "optional": true
248
+ }
249
+ }
250
+ },
251
+ "node_modules/better-sqlite3": {
252
+ "version": "12.5.0",
253
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.5.0.tgz",
254
+ "integrity": "sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==",
255
+ "hasInstallScript": true,
256
+ "dependencies": {
257
+ "bindings": "^1.5.0",
258
+ "prebuild-install": "^7.1.1"
259
+ },
260
+ "engines": {
261
+ "node": "20.x || 22.x || 23.x || 24.x || 25.x"
262
+ }
263
+ },
264
+ "node_modules/binary-extensions": {
265
+ "version": "2.3.0",
266
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
267
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
268
+ "dev": true,
269
+ "engines": {
270
+ "node": ">=8"
271
+ },
272
+ "funding": {
273
+ "url": "https://github.com/sponsors/sindresorhus"
274
+ }
275
+ },
276
+ "node_modules/bindings": {
277
+ "version": "1.5.0",
278
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
279
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
280
+ "dependencies": {
281
+ "file-uri-to-path": "1.0.0"
282
+ }
283
+ },
284
+ "node_modules/bl": {
285
+ "version": "4.1.0",
286
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
287
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
288
+ "dependencies": {
289
+ "buffer": "^5.5.0",
290
+ "inherits": "^2.0.4",
291
+ "readable-stream": "^3.4.0"
292
+ }
293
+ },
294
+ "node_modules/body-parser": {
295
+ "version": "2.2.1",
296
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
297
+ "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
298
+ "dependencies": {
299
+ "bytes": "^3.1.2",
300
+ "content-type": "^1.0.5",
301
+ "debug": "^4.4.3",
302
+ "http-errors": "^2.0.0",
303
+ "iconv-lite": "^0.7.0",
304
+ "on-finished": "^2.4.1",
305
+ "qs": "^6.14.0",
306
+ "raw-body": "^3.0.1",
307
+ "type-is": "^2.0.1"
308
+ },
309
+ "engines": {
310
+ "node": ">=18"
311
+ },
312
+ "funding": {
313
+ "type": "opencollective",
314
+ "url": "https://opencollective.com/express"
315
+ }
316
+ },
317
+ "node_modules/brace-expansion": {
318
+ "version": "1.1.12",
319
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
320
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
321
+ "dev": true,
322
+ "dependencies": {
323
+ "balanced-match": "^1.0.0",
324
+ "concat-map": "0.0.1"
325
+ }
326
+ },
327
+ "node_modules/braces": {
328
+ "version": "3.0.3",
329
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
330
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
331
+ "dev": true,
332
+ "dependencies": {
333
+ "fill-range": "^7.1.1"
334
+ },
335
+ "engines": {
336
+ "node": ">=8"
337
+ }
338
+ },
339
+ "node_modules/buffer": {
340
+ "version": "5.7.1",
341
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
342
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
343
+ "funding": [
344
+ {
345
+ "type": "github",
346
+ "url": "https://github.com/sponsors/feross"
347
+ },
348
+ {
349
+ "type": "patreon",
350
+ "url": "https://www.patreon.com/feross"
351
+ },
352
+ {
353
+ "type": "consulting",
354
+ "url": "https://feross.org/support"
355
+ }
356
+ ],
357
+ "dependencies": {
358
+ "base64-js": "^1.3.1",
359
+ "ieee754": "^1.1.13"
360
+ }
361
+ },
362
+ "node_modules/bytes": {
363
+ "version": "3.1.2",
364
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
365
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
366
+ "engines": {
367
+ "node": ">= 0.8"
368
+ }
369
+ },
370
+ "node_modules/call-bind-apply-helpers": {
371
+ "version": "1.0.2",
372
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
373
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
374
+ "dependencies": {
375
+ "es-errors": "^1.3.0",
376
+ "function-bind": "^1.1.2"
377
+ },
378
+ "engines": {
379
+ "node": ">= 0.4"
380
+ }
381
+ },
382
+ "node_modules/call-bound": {
383
+ "version": "1.0.4",
384
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
385
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
386
+ "dependencies": {
387
+ "call-bind-apply-helpers": "^1.0.2",
388
+ "get-intrinsic": "^1.3.0"
389
+ },
390
+ "engines": {
391
+ "node": ">= 0.4"
392
+ },
393
+ "funding": {
394
+ "url": "https://github.com/sponsors/ljharb"
395
+ }
396
+ },
397
+ "node_modules/chokidar": {
398
+ "version": "3.6.0",
399
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
400
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
401
+ "dev": true,
402
+ "dependencies": {
403
+ "anymatch": "~3.1.2",
404
+ "braces": "~3.0.2",
405
+ "glob-parent": "~5.1.2",
406
+ "is-binary-path": "~2.1.0",
407
+ "is-glob": "~4.0.1",
408
+ "normalize-path": "~3.0.0",
409
+ "readdirp": "~3.6.0"
410
+ },
411
+ "engines": {
412
+ "node": ">= 8.10.0"
413
+ },
414
+ "funding": {
415
+ "url": "https://paulmillr.com/funding/"
416
+ },
417
+ "optionalDependencies": {
418
+ "fsevents": "~2.3.2"
419
+ }
420
+ },
421
+ "node_modules/chownr": {
422
+ "version": "1.1.4",
423
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
424
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
425
+ },
426
+ "node_modules/concat-map": {
427
+ "version": "0.0.1",
428
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
429
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
430
+ "dev": true
431
+ },
432
+ "node_modules/content-disposition": {
433
+ "version": "1.0.1",
434
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
435
+ "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
436
+ "engines": {
437
+ "node": ">=18"
438
+ },
439
+ "funding": {
440
+ "type": "opencollective",
441
+ "url": "https://opencollective.com/express"
442
+ }
443
+ },
444
+ "node_modules/content-type": {
445
+ "version": "1.0.5",
446
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
447
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
448
+ "engines": {
449
+ "node": ">= 0.6"
450
+ }
451
+ },
452
+ "node_modules/cookie": {
453
+ "version": "0.7.2",
454
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
455
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
456
+ "engines": {
457
+ "node": ">= 0.6"
458
+ }
459
+ },
460
+ "node_modules/cookie-signature": {
461
+ "version": "1.2.2",
462
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
463
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
464
+ "engines": {
465
+ "node": ">=6.6.0"
466
+ }
467
+ },
468
+ "node_modules/cors": {
469
+ "version": "2.8.5",
470
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
471
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
472
+ "dependencies": {
473
+ "object-assign": "^4",
474
+ "vary": "^1"
475
+ },
476
+ "engines": {
477
+ "node": ">= 0.10"
478
+ }
479
+ },
480
+ "node_modules/debug": {
481
+ "version": "4.4.3",
482
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
483
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
484
+ "dependencies": {
485
+ "ms": "^2.1.3"
486
+ },
487
+ "engines": {
488
+ "node": ">=6.0"
489
+ },
490
+ "peerDependenciesMeta": {
491
+ "supports-color": {
492
+ "optional": true
493
+ }
494
+ }
495
+ },
496
+ "node_modules/decompress-response": {
497
+ "version": "6.0.0",
498
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
499
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
500
+ "dependencies": {
501
+ "mimic-response": "^3.1.0"
502
+ },
503
+ "engines": {
504
+ "node": ">=10"
505
+ },
506
+ "funding": {
507
+ "url": "https://github.com/sponsors/sindresorhus"
508
+ }
509
+ },
510
+ "node_modules/deep-extend": {
511
+ "version": "0.6.0",
512
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
513
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
514
+ "engines": {
515
+ "node": ">=4.0.0"
516
+ }
517
+ },
518
+ "node_modules/defu": {
519
+ "version": "6.1.4",
520
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
521
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="
522
+ },
523
+ "node_modules/depd": {
524
+ "version": "2.0.0",
525
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
526
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
527
+ "engines": {
528
+ "node": ">= 0.8"
529
+ }
530
+ },
531
+ "node_modules/detect-libc": {
532
+ "version": "2.1.2",
533
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
534
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
535
+ "engines": {
536
+ "node": ">=8"
537
+ }
538
+ },
539
+ "node_modules/dotenv": {
540
+ "version": "17.2.3",
541
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
542
+ "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
543
+ "engines": {
544
+ "node": ">=12"
545
+ },
546
+ "funding": {
547
+ "url": "https://dotenvx.com"
548
+ }
549
+ },
550
+ "node_modules/dunder-proto": {
551
+ "version": "1.0.1",
552
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
553
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
554
+ "dependencies": {
555
+ "call-bind-apply-helpers": "^1.0.1",
556
+ "es-errors": "^1.3.0",
557
+ "gopd": "^1.2.0"
558
+ },
559
+ "engines": {
560
+ "node": ">= 0.4"
561
+ }
562
+ },
563
+ "node_modules/ee-first": {
564
+ "version": "1.1.1",
565
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
566
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
567
+ },
568
+ "node_modules/encodeurl": {
569
+ "version": "2.0.0",
570
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
571
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
572
+ "engines": {
573
+ "node": ">= 0.8"
574
+ }
575
+ },
576
+ "node_modules/end-of-stream": {
577
+ "version": "1.4.5",
578
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
579
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
580
+ "dependencies": {
581
+ "once": "^1.4.0"
582
+ }
583
+ },
584
+ "node_modules/es-define-property": {
585
+ "version": "1.0.1",
586
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
587
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
588
+ "engines": {
589
+ "node": ">= 0.4"
590
+ }
591
+ },
592
+ "node_modules/es-errors": {
593
+ "version": "1.3.0",
594
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
595
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
596
+ "engines": {
597
+ "node": ">= 0.4"
598
+ }
599
+ },
600
+ "node_modules/es-object-atoms": {
601
+ "version": "1.1.1",
602
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
603
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
604
+ "dependencies": {
605
+ "es-errors": "^1.3.0"
606
+ },
607
+ "engines": {
608
+ "node": ">= 0.4"
609
+ }
610
+ },
611
+ "node_modules/escape-html": {
612
+ "version": "1.0.3",
613
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
614
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
615
+ },
616
+ "node_modules/etag": {
617
+ "version": "1.8.1",
618
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
619
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
620
+ "engines": {
621
+ "node": ">= 0.6"
622
+ }
623
+ },
624
+ "node_modules/expand-template": {
625
+ "version": "2.0.3",
626
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
627
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
628
+ "engines": {
629
+ "node": ">=6"
630
+ }
631
+ },
632
+ "node_modules/express": {
633
+ "version": "5.2.1",
634
+ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
635
+ "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
636
+ "dependencies": {
637
+ "accepts": "^2.0.0",
638
+ "body-parser": "^2.2.1",
639
+ "content-disposition": "^1.0.0",
640
+ "content-type": "^1.0.5",
641
+ "cookie": "^0.7.1",
642
+ "cookie-signature": "^1.2.1",
643
+ "debug": "^4.4.0",
644
+ "depd": "^2.0.0",
645
+ "encodeurl": "^2.0.0",
646
+ "escape-html": "^1.0.3",
647
+ "etag": "^1.8.1",
648
+ "finalhandler": "^2.1.0",
649
+ "fresh": "^2.0.0",
650
+ "http-errors": "^2.0.0",
651
+ "merge-descriptors": "^2.0.0",
652
+ "mime-types": "^3.0.0",
653
+ "on-finished": "^2.4.1",
654
+ "once": "^1.4.0",
655
+ "parseurl": "^1.3.3",
656
+ "proxy-addr": "^2.0.7",
657
+ "qs": "^6.14.0",
658
+ "range-parser": "^1.2.1",
659
+ "router": "^2.2.0",
660
+ "send": "^1.1.0",
661
+ "serve-static": "^2.2.0",
662
+ "statuses": "^2.0.1",
663
+ "type-is": "^2.0.1",
664
+ "vary": "^1.1.2"
665
+ },
666
+ "engines": {
667
+ "node": ">= 18"
668
+ },
669
+ "funding": {
670
+ "type": "opencollective",
671
+ "url": "https://opencollective.com/express"
672
+ }
673
+ },
674
+ "node_modules/file-uri-to-path": {
675
+ "version": "1.0.0",
676
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
677
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
678
+ },
679
+ "node_modules/fill-range": {
680
+ "version": "7.1.1",
681
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
682
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
683
+ "dev": true,
684
+ "dependencies": {
685
+ "to-regex-range": "^5.0.1"
686
+ },
687
+ "engines": {
688
+ "node": ">=8"
689
+ }
690
+ },
691
+ "node_modules/finalhandler": {
692
+ "version": "2.1.1",
693
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
694
+ "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
695
+ "dependencies": {
696
+ "debug": "^4.4.0",
697
+ "encodeurl": "^2.0.0",
698
+ "escape-html": "^1.0.3",
699
+ "on-finished": "^2.4.1",
700
+ "parseurl": "^1.3.3",
701
+ "statuses": "^2.0.1"
702
+ },
703
+ "engines": {
704
+ "node": ">= 18.0.0"
705
+ },
706
+ "funding": {
707
+ "type": "opencollective",
708
+ "url": "https://opencollective.com/express"
709
+ }
710
+ },
711
+ "node_modules/forwarded": {
712
+ "version": "0.2.0",
713
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
714
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
715
+ "engines": {
716
+ "node": ">= 0.6"
717
+ }
718
+ },
719
+ "node_modules/fresh": {
720
+ "version": "2.0.0",
721
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
722
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
723
+ "engines": {
724
+ "node": ">= 0.8"
725
+ }
726
+ },
727
+ "node_modules/fs-constants": {
728
+ "version": "1.0.0",
729
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
730
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
731
+ },
732
+ "node_modules/fsevents": {
733
+ "version": "2.3.3",
734
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
735
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
736
+ "dev": true,
737
+ "hasInstallScript": true,
738
+ "optional": true,
739
+ "os": [
740
+ "darwin"
741
+ ],
742
+ "engines": {
743
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
744
+ }
745
+ },
746
+ "node_modules/function-bind": {
747
+ "version": "1.1.2",
748
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
749
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
750
+ "funding": {
751
+ "url": "https://github.com/sponsors/ljharb"
752
+ }
753
+ },
754
+ "node_modules/get-intrinsic": {
755
+ "version": "1.3.0",
756
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
757
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
758
+ "dependencies": {
759
+ "call-bind-apply-helpers": "^1.0.2",
760
+ "es-define-property": "^1.0.1",
761
+ "es-errors": "^1.3.0",
762
+ "es-object-atoms": "^1.1.1",
763
+ "function-bind": "^1.1.2",
764
+ "get-proto": "^1.0.1",
765
+ "gopd": "^1.2.0",
766
+ "has-symbols": "^1.1.0",
767
+ "hasown": "^2.0.2",
768
+ "math-intrinsics": "^1.1.0"
769
+ },
770
+ "engines": {
771
+ "node": ">= 0.4"
772
+ },
773
+ "funding": {
774
+ "url": "https://github.com/sponsors/ljharb"
775
+ }
776
+ },
777
+ "node_modules/get-proto": {
778
+ "version": "1.0.1",
779
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
780
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
781
+ "dependencies": {
782
+ "dunder-proto": "^1.0.1",
783
+ "es-object-atoms": "^1.0.0"
784
+ },
785
+ "engines": {
786
+ "node": ">= 0.4"
787
+ }
788
+ },
789
+ "node_modules/github-from-package": {
790
+ "version": "0.0.0",
791
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
792
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="
793
+ },
794
+ "node_modules/glob-parent": {
795
+ "version": "5.1.2",
796
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
797
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
798
+ "dev": true,
799
+ "dependencies": {
800
+ "is-glob": "^4.0.1"
801
+ },
802
+ "engines": {
803
+ "node": ">= 6"
804
+ }
805
+ },
806
+ "node_modules/gopd": {
807
+ "version": "1.2.0",
808
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
809
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
810
+ "engines": {
811
+ "node": ">= 0.4"
812
+ },
813
+ "funding": {
814
+ "url": "https://github.com/sponsors/ljharb"
815
+ }
816
+ },
817
+ "node_modules/has-flag": {
818
+ "version": "3.0.0",
819
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
820
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
821
+ "dev": true,
822
+ "engines": {
823
+ "node": ">=4"
824
+ }
825
+ },
826
+ "node_modules/has-symbols": {
827
+ "version": "1.1.0",
828
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
829
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
830
+ "engines": {
831
+ "node": ">= 0.4"
832
+ },
833
+ "funding": {
834
+ "url": "https://github.com/sponsors/ljharb"
835
+ }
836
+ },
837
+ "node_modules/hasown": {
838
+ "version": "2.0.2",
839
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
840
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
841
+ "dependencies": {
842
+ "function-bind": "^1.1.2"
843
+ },
844
+ "engines": {
845
+ "node": ">= 0.4"
846
+ }
847
+ },
848
+ "node_modules/http-errors": {
849
+ "version": "2.0.1",
850
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
851
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
852
+ "dependencies": {
853
+ "depd": "~2.0.0",
854
+ "inherits": "~2.0.4",
855
+ "setprototypeof": "~1.2.0",
856
+ "statuses": "~2.0.2",
857
+ "toidentifier": "~1.0.1"
858
+ },
859
+ "engines": {
860
+ "node": ">= 0.8"
861
+ },
862
+ "funding": {
863
+ "type": "opencollective",
864
+ "url": "https://opencollective.com/express"
865
+ }
866
+ },
867
+ "node_modules/iconv-lite": {
868
+ "version": "0.7.1",
869
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz",
870
+ "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==",
871
+ "dependencies": {
872
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
873
+ },
874
+ "engines": {
875
+ "node": ">=0.10.0"
876
+ },
877
+ "funding": {
878
+ "type": "opencollective",
879
+ "url": "https://opencollective.com/express"
880
+ }
881
+ },
882
+ "node_modules/ieee754": {
883
+ "version": "1.2.1",
884
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
885
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
886
+ "funding": [
887
+ {
888
+ "type": "github",
889
+ "url": "https://github.com/sponsors/feross"
890
+ },
891
+ {
892
+ "type": "patreon",
893
+ "url": "https://www.patreon.com/feross"
894
+ },
895
+ {
896
+ "type": "consulting",
897
+ "url": "https://feross.org/support"
898
+ }
899
+ ]
900
+ },
901
+ "node_modules/ignore-by-default": {
902
+ "version": "1.0.1",
903
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
904
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
905
+ "dev": true
906
+ },
907
+ "node_modules/inherits": {
908
+ "version": "2.0.4",
909
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
910
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
911
+ },
912
+ "node_modules/ini": {
913
+ "version": "1.3.8",
914
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
915
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
916
+ },
917
+ "node_modules/ipaddr.js": {
918
+ "version": "1.9.1",
919
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
920
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
921
+ "engines": {
922
+ "node": ">= 0.10"
923
+ }
924
+ },
925
+ "node_modules/is-binary-path": {
926
+ "version": "2.1.0",
927
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
928
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
929
+ "dev": true,
930
+ "dependencies": {
931
+ "binary-extensions": "^2.0.0"
932
+ },
933
+ "engines": {
934
+ "node": ">=8"
935
+ }
936
+ },
937
+ "node_modules/is-extglob": {
938
+ "version": "2.1.1",
939
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
940
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
941
+ "dev": true,
942
+ "engines": {
943
+ "node": ">=0.10.0"
944
+ }
945
+ },
946
+ "node_modules/is-glob": {
947
+ "version": "4.0.3",
948
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
949
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
950
+ "dev": true,
951
+ "dependencies": {
952
+ "is-extglob": "^2.1.1"
953
+ },
954
+ "engines": {
955
+ "node": ">=0.10.0"
956
+ }
957
+ },
958
+ "node_modules/is-number": {
959
+ "version": "7.0.0",
960
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
961
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
962
+ "dev": true,
963
+ "engines": {
964
+ "node": ">=0.12.0"
965
+ }
966
+ },
967
+ "node_modules/is-promise": {
968
+ "version": "4.0.0",
969
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
970
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
971
+ },
972
+ "node_modules/jose": {
973
+ "version": "6.1.3",
974
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz",
975
+ "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==",
976
+ "funding": {
977
+ "url": "https://github.com/sponsors/panva"
978
+ }
979
+ },
980
+ "node_modules/kysely": {
981
+ "version": "0.28.9",
982
+ "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.9.tgz",
983
+ "integrity": "sha512-3BeXMoiOhpOwu62CiVpO6lxfq4eS6KMYfQdMsN/2kUCRNuF2YiEr7u0HLHaQU+O4Xu8YXE3bHVkwaQ85i72EuA==",
984
+ "engines": {
985
+ "node": ">=20.0.0"
986
+ }
987
+ },
988
+ "node_modules/math-intrinsics": {
989
+ "version": "1.1.0",
990
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
991
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
992
+ "engines": {
993
+ "node": ">= 0.4"
994
+ }
995
+ },
996
+ "node_modules/media-typer": {
997
+ "version": "1.1.0",
998
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
999
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
1000
+ "engines": {
1001
+ "node": ">= 0.8"
1002
+ }
1003
+ },
1004
+ "node_modules/merge-descriptors": {
1005
+ "version": "2.0.0",
1006
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
1007
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
1008
+ "engines": {
1009
+ "node": ">=18"
1010
+ },
1011
+ "funding": {
1012
+ "url": "https://github.com/sponsors/sindresorhus"
1013
+ }
1014
+ },
1015
+ "node_modules/mime-db": {
1016
+ "version": "1.54.0",
1017
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
1018
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
1019
+ "engines": {
1020
+ "node": ">= 0.6"
1021
+ }
1022
+ },
1023
+ "node_modules/mime-types": {
1024
+ "version": "3.0.2",
1025
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
1026
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
1027
+ "dependencies": {
1028
+ "mime-db": "^1.54.0"
1029
+ },
1030
+ "engines": {
1031
+ "node": ">=18"
1032
+ },
1033
+ "funding": {
1034
+ "type": "opencollective",
1035
+ "url": "https://opencollective.com/express"
1036
+ }
1037
+ },
1038
+ "node_modules/mimic-response": {
1039
+ "version": "3.1.0",
1040
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
1041
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
1042
+ "engines": {
1043
+ "node": ">=10"
1044
+ },
1045
+ "funding": {
1046
+ "url": "https://github.com/sponsors/sindresorhus"
1047
+ }
1048
+ },
1049
+ "node_modules/minimatch": {
1050
+ "version": "3.1.2",
1051
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1052
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1053
+ "dev": true,
1054
+ "dependencies": {
1055
+ "brace-expansion": "^1.1.7"
1056
+ },
1057
+ "engines": {
1058
+ "node": "*"
1059
+ }
1060
+ },
1061
+ "node_modules/minimist": {
1062
+ "version": "1.2.8",
1063
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
1064
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
1065
+ "funding": {
1066
+ "url": "https://github.com/sponsors/ljharb"
1067
+ }
1068
+ },
1069
+ "node_modules/mkdirp-classic": {
1070
+ "version": "0.5.3",
1071
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
1072
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
1073
+ },
1074
+ "node_modules/ms": {
1075
+ "version": "2.1.3",
1076
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1077
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1078
+ },
1079
+ "node_modules/nanostores": {
1080
+ "version": "1.1.0",
1081
+ "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.1.0.tgz",
1082
+ "integrity": "sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==",
1083
+ "funding": [
1084
+ {
1085
+ "type": "github",
1086
+ "url": "https://github.com/sponsors/ai"
1087
+ }
1088
+ ],
1089
+ "engines": {
1090
+ "node": "^20.0.0 || >=22.0.0"
1091
+ }
1092
+ },
1093
+ "node_modules/napi-build-utils": {
1094
+ "version": "2.0.0",
1095
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
1096
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="
1097
+ },
1098
+ "node_modules/negotiator": {
1099
+ "version": "1.0.0",
1100
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
1101
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
1102
+ "engines": {
1103
+ "node": ">= 0.6"
1104
+ }
1105
+ },
1106
+ "node_modules/node-abi": {
1107
+ "version": "3.85.0",
1108
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz",
1109
+ "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==",
1110
+ "dependencies": {
1111
+ "semver": "^7.3.5"
1112
+ },
1113
+ "engines": {
1114
+ "node": ">=10"
1115
+ }
1116
+ },
1117
+ "node_modules/nodemon": {
1118
+ "version": "3.1.11",
1119
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz",
1120
+ "integrity": "sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==",
1121
+ "dev": true,
1122
+ "dependencies": {
1123
+ "chokidar": "^3.5.2",
1124
+ "debug": "^4",
1125
+ "ignore-by-default": "^1.0.1",
1126
+ "minimatch": "^3.1.2",
1127
+ "pstree.remy": "^1.1.8",
1128
+ "semver": "^7.5.3",
1129
+ "simple-update-notifier": "^2.0.0",
1130
+ "supports-color": "^5.5.0",
1131
+ "touch": "^3.1.0",
1132
+ "undefsafe": "^2.0.5"
1133
+ },
1134
+ "bin": {
1135
+ "nodemon": "bin/nodemon.js"
1136
+ },
1137
+ "engines": {
1138
+ "node": ">=10"
1139
+ },
1140
+ "funding": {
1141
+ "type": "opencollective",
1142
+ "url": "https://opencollective.com/nodemon"
1143
+ }
1144
+ },
1145
+ "node_modules/normalize-path": {
1146
+ "version": "3.0.0",
1147
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1148
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1149
+ "dev": true,
1150
+ "engines": {
1151
+ "node": ">=0.10.0"
1152
+ }
1153
+ },
1154
+ "node_modules/object-assign": {
1155
+ "version": "4.1.1",
1156
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1157
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1158
+ "engines": {
1159
+ "node": ">=0.10.0"
1160
+ }
1161
+ },
1162
+ "node_modules/object-inspect": {
1163
+ "version": "1.13.4",
1164
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
1165
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
1166
+ "engines": {
1167
+ "node": ">= 0.4"
1168
+ },
1169
+ "funding": {
1170
+ "url": "https://github.com/sponsors/ljharb"
1171
+ }
1172
+ },
1173
+ "node_modules/on-finished": {
1174
+ "version": "2.4.1",
1175
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1176
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1177
+ "dependencies": {
1178
+ "ee-first": "1.1.1"
1179
+ },
1180
+ "engines": {
1181
+ "node": ">= 0.8"
1182
+ }
1183
+ },
1184
+ "node_modules/once": {
1185
+ "version": "1.4.0",
1186
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1187
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1188
+ "dependencies": {
1189
+ "wrappy": "1"
1190
+ }
1191
+ },
1192
+ "node_modules/parseurl": {
1193
+ "version": "1.3.3",
1194
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1195
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1196
+ "engines": {
1197
+ "node": ">= 0.8"
1198
+ }
1199
+ },
1200
+ "node_modules/path-to-regexp": {
1201
+ "version": "8.3.0",
1202
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
1203
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
1204
+ "funding": {
1205
+ "type": "opencollective",
1206
+ "url": "https://opencollective.com/express"
1207
+ }
1208
+ },
1209
+ "node_modules/picomatch": {
1210
+ "version": "2.3.1",
1211
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1212
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1213
+ "dev": true,
1214
+ "engines": {
1215
+ "node": ">=8.6"
1216
+ },
1217
+ "funding": {
1218
+ "url": "https://github.com/sponsors/jonschlinkert"
1219
+ }
1220
+ },
1221
+ "node_modules/prebuild-install": {
1222
+ "version": "7.1.3",
1223
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
1224
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
1225
+ "dependencies": {
1226
+ "detect-libc": "^2.0.0",
1227
+ "expand-template": "^2.0.3",
1228
+ "github-from-package": "0.0.0",
1229
+ "minimist": "^1.2.3",
1230
+ "mkdirp-classic": "^0.5.3",
1231
+ "napi-build-utils": "^2.0.0",
1232
+ "node-abi": "^3.3.0",
1233
+ "pump": "^3.0.0",
1234
+ "rc": "^1.2.7",
1235
+ "simple-get": "^4.0.0",
1236
+ "tar-fs": "^2.0.0",
1237
+ "tunnel-agent": "^0.6.0"
1238
+ },
1239
+ "bin": {
1240
+ "prebuild-install": "bin.js"
1241
+ },
1242
+ "engines": {
1243
+ "node": ">=10"
1244
+ }
1245
+ },
1246
+ "node_modules/proxy-addr": {
1247
+ "version": "2.0.7",
1248
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1249
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1250
+ "dependencies": {
1251
+ "forwarded": "0.2.0",
1252
+ "ipaddr.js": "1.9.1"
1253
+ },
1254
+ "engines": {
1255
+ "node": ">= 0.10"
1256
+ }
1257
+ },
1258
+ "node_modules/pstree.remy": {
1259
+ "version": "1.1.8",
1260
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1261
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
1262
+ "dev": true
1263
+ },
1264
+ "node_modules/pump": {
1265
+ "version": "3.0.3",
1266
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
1267
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
1268
+ "dependencies": {
1269
+ "end-of-stream": "^1.1.0",
1270
+ "once": "^1.3.1"
1271
+ }
1272
+ },
1273
+ "node_modules/qs": {
1274
+ "version": "6.14.0",
1275
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
1276
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
1277
+ "dependencies": {
1278
+ "side-channel": "^1.1.0"
1279
+ },
1280
+ "engines": {
1281
+ "node": ">=0.6"
1282
+ },
1283
+ "funding": {
1284
+ "url": "https://github.com/sponsors/ljharb"
1285
+ }
1286
+ },
1287
+ "node_modules/range-parser": {
1288
+ "version": "1.2.1",
1289
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1290
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1291
+ "engines": {
1292
+ "node": ">= 0.6"
1293
+ }
1294
+ },
1295
+ "node_modules/raw-body": {
1296
+ "version": "3.0.2",
1297
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
1298
+ "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
1299
+ "dependencies": {
1300
+ "bytes": "~3.1.2",
1301
+ "http-errors": "~2.0.1",
1302
+ "iconv-lite": "~0.7.0",
1303
+ "unpipe": "~1.0.0"
1304
+ },
1305
+ "engines": {
1306
+ "node": ">= 0.10"
1307
+ }
1308
+ },
1309
+ "node_modules/rc": {
1310
+ "version": "1.2.8",
1311
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
1312
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
1313
+ "dependencies": {
1314
+ "deep-extend": "^0.6.0",
1315
+ "ini": "~1.3.0",
1316
+ "minimist": "^1.2.0",
1317
+ "strip-json-comments": "~2.0.1"
1318
+ },
1319
+ "bin": {
1320
+ "rc": "cli.js"
1321
+ }
1322
+ },
1323
+ "node_modules/readable-stream": {
1324
+ "version": "3.6.2",
1325
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
1326
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
1327
+ "dependencies": {
1328
+ "inherits": "^2.0.3",
1329
+ "string_decoder": "^1.1.1",
1330
+ "util-deprecate": "^1.0.1"
1331
+ },
1332
+ "engines": {
1333
+ "node": ">= 6"
1334
+ }
1335
+ },
1336
+ "node_modules/readdirp": {
1337
+ "version": "3.6.0",
1338
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1339
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1340
+ "dev": true,
1341
+ "dependencies": {
1342
+ "picomatch": "^2.2.1"
1343
+ },
1344
+ "engines": {
1345
+ "node": ">=8.10.0"
1346
+ }
1347
+ },
1348
+ "node_modules/rou3": {
1349
+ "version": "0.7.12",
1350
+ "resolved": "https://registry.npmjs.org/rou3/-/rou3-0.7.12.tgz",
1351
+ "integrity": "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="
1352
+ },
1353
+ "node_modules/router": {
1354
+ "version": "2.2.0",
1355
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
1356
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
1357
+ "dependencies": {
1358
+ "debug": "^4.4.0",
1359
+ "depd": "^2.0.0",
1360
+ "is-promise": "^4.0.0",
1361
+ "parseurl": "^1.3.3",
1362
+ "path-to-regexp": "^8.0.0"
1363
+ },
1364
+ "engines": {
1365
+ "node": ">= 18"
1366
+ }
1367
+ },
1368
+ "node_modules/safe-buffer": {
1369
+ "version": "5.2.1",
1370
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1371
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1372
+ "funding": [
1373
+ {
1374
+ "type": "github",
1375
+ "url": "https://github.com/sponsors/feross"
1376
+ },
1377
+ {
1378
+ "type": "patreon",
1379
+ "url": "https://www.patreon.com/feross"
1380
+ },
1381
+ {
1382
+ "type": "consulting",
1383
+ "url": "https://feross.org/support"
1384
+ }
1385
+ ]
1386
+ },
1387
+ "node_modules/safer-buffer": {
1388
+ "version": "2.1.2",
1389
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1390
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1391
+ },
1392
+ "node_modules/semver": {
1393
+ "version": "7.7.3",
1394
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
1395
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
1396
+ "bin": {
1397
+ "semver": "bin/semver.js"
1398
+ },
1399
+ "engines": {
1400
+ "node": ">=10"
1401
+ }
1402
+ },
1403
+ "node_modules/send": {
1404
+ "version": "1.2.1",
1405
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
1406
+ "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
1407
+ "dependencies": {
1408
+ "debug": "^4.4.3",
1409
+ "encodeurl": "^2.0.0",
1410
+ "escape-html": "^1.0.3",
1411
+ "etag": "^1.8.1",
1412
+ "fresh": "^2.0.0",
1413
+ "http-errors": "^2.0.1",
1414
+ "mime-types": "^3.0.2",
1415
+ "ms": "^2.1.3",
1416
+ "on-finished": "^2.4.1",
1417
+ "range-parser": "^1.2.1",
1418
+ "statuses": "^2.0.2"
1419
+ },
1420
+ "engines": {
1421
+ "node": ">= 18"
1422
+ },
1423
+ "funding": {
1424
+ "type": "opencollective",
1425
+ "url": "https://opencollective.com/express"
1426
+ }
1427
+ },
1428
+ "node_modules/serve-static": {
1429
+ "version": "2.2.1",
1430
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz",
1431
+ "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
1432
+ "dependencies": {
1433
+ "encodeurl": "^2.0.0",
1434
+ "escape-html": "^1.0.3",
1435
+ "parseurl": "^1.3.3",
1436
+ "send": "^1.2.0"
1437
+ },
1438
+ "engines": {
1439
+ "node": ">= 18"
1440
+ },
1441
+ "funding": {
1442
+ "type": "opencollective",
1443
+ "url": "https://opencollective.com/express"
1444
+ }
1445
+ },
1446
+ "node_modules/set-cookie-parser": {
1447
+ "version": "2.7.2",
1448
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
1449
+ "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="
1450
+ },
1451
+ "node_modules/setprototypeof": {
1452
+ "version": "1.2.0",
1453
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1454
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1455
+ },
1456
+ "node_modules/side-channel": {
1457
+ "version": "1.1.0",
1458
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
1459
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
1460
+ "dependencies": {
1461
+ "es-errors": "^1.3.0",
1462
+ "object-inspect": "^1.13.3",
1463
+ "side-channel-list": "^1.0.0",
1464
+ "side-channel-map": "^1.0.1",
1465
+ "side-channel-weakmap": "^1.0.2"
1466
+ },
1467
+ "engines": {
1468
+ "node": ">= 0.4"
1469
+ },
1470
+ "funding": {
1471
+ "url": "https://github.com/sponsors/ljharb"
1472
+ }
1473
+ },
1474
+ "node_modules/side-channel-list": {
1475
+ "version": "1.0.0",
1476
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
1477
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
1478
+ "dependencies": {
1479
+ "es-errors": "^1.3.0",
1480
+ "object-inspect": "^1.13.3"
1481
+ },
1482
+ "engines": {
1483
+ "node": ">= 0.4"
1484
+ },
1485
+ "funding": {
1486
+ "url": "https://github.com/sponsors/ljharb"
1487
+ }
1488
+ },
1489
+ "node_modules/side-channel-map": {
1490
+ "version": "1.0.1",
1491
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
1492
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
1493
+ "dependencies": {
1494
+ "call-bound": "^1.0.2",
1495
+ "es-errors": "^1.3.0",
1496
+ "get-intrinsic": "^1.2.5",
1497
+ "object-inspect": "^1.13.3"
1498
+ },
1499
+ "engines": {
1500
+ "node": ">= 0.4"
1501
+ },
1502
+ "funding": {
1503
+ "url": "https://github.com/sponsors/ljharb"
1504
+ }
1505
+ },
1506
+ "node_modules/side-channel-weakmap": {
1507
+ "version": "1.0.2",
1508
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
1509
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
1510
+ "dependencies": {
1511
+ "call-bound": "^1.0.2",
1512
+ "es-errors": "^1.3.0",
1513
+ "get-intrinsic": "^1.2.5",
1514
+ "object-inspect": "^1.13.3",
1515
+ "side-channel-map": "^1.0.1"
1516
+ },
1517
+ "engines": {
1518
+ "node": ">= 0.4"
1519
+ },
1520
+ "funding": {
1521
+ "url": "https://github.com/sponsors/ljharb"
1522
+ }
1523
+ },
1524
+ "node_modules/simple-concat": {
1525
+ "version": "1.0.1",
1526
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
1527
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
1528
+ "funding": [
1529
+ {
1530
+ "type": "github",
1531
+ "url": "https://github.com/sponsors/feross"
1532
+ },
1533
+ {
1534
+ "type": "patreon",
1535
+ "url": "https://www.patreon.com/feross"
1536
+ },
1537
+ {
1538
+ "type": "consulting",
1539
+ "url": "https://feross.org/support"
1540
+ }
1541
+ ]
1542
+ },
1543
+ "node_modules/simple-get": {
1544
+ "version": "4.0.1",
1545
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
1546
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
1547
+ "funding": [
1548
+ {
1549
+ "type": "github",
1550
+ "url": "https://github.com/sponsors/feross"
1551
+ },
1552
+ {
1553
+ "type": "patreon",
1554
+ "url": "https://www.patreon.com/feross"
1555
+ },
1556
+ {
1557
+ "type": "consulting",
1558
+ "url": "https://feross.org/support"
1559
+ }
1560
+ ],
1561
+ "dependencies": {
1562
+ "decompress-response": "^6.0.0",
1563
+ "once": "^1.3.1",
1564
+ "simple-concat": "^1.0.0"
1565
+ }
1566
+ },
1567
+ "node_modules/simple-update-notifier": {
1568
+ "version": "2.0.0",
1569
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
1570
+ "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
1571
+ "dev": true,
1572
+ "dependencies": {
1573
+ "semver": "^7.5.3"
1574
+ },
1575
+ "engines": {
1576
+ "node": ">=10"
1577
+ }
1578
+ },
1579
+ "node_modules/statuses": {
1580
+ "version": "2.0.2",
1581
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
1582
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
1583
+ "engines": {
1584
+ "node": ">= 0.8"
1585
+ }
1586
+ },
1587
+ "node_modules/string_decoder": {
1588
+ "version": "1.3.0",
1589
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
1590
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
1591
+ "dependencies": {
1592
+ "safe-buffer": "~5.2.0"
1593
+ }
1594
+ },
1595
+ "node_modules/strip-json-comments": {
1596
+ "version": "2.0.1",
1597
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1598
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
1599
+ "engines": {
1600
+ "node": ">=0.10.0"
1601
+ }
1602
+ },
1603
+ "node_modules/supports-color": {
1604
+ "version": "5.5.0",
1605
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1606
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1607
+ "dev": true,
1608
+ "dependencies": {
1609
+ "has-flag": "^3.0.0"
1610
+ },
1611
+ "engines": {
1612
+ "node": ">=4"
1613
+ }
1614
+ },
1615
+ "node_modules/tar-fs": {
1616
+ "version": "2.1.4",
1617
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
1618
+ "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
1619
+ "dependencies": {
1620
+ "chownr": "^1.1.1",
1621
+ "mkdirp-classic": "^0.5.2",
1622
+ "pump": "^3.0.0",
1623
+ "tar-stream": "^2.1.4"
1624
+ }
1625
+ },
1626
+ "node_modules/tar-stream": {
1627
+ "version": "2.2.0",
1628
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
1629
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
1630
+ "dependencies": {
1631
+ "bl": "^4.0.3",
1632
+ "end-of-stream": "^1.4.1",
1633
+ "fs-constants": "^1.0.0",
1634
+ "inherits": "^2.0.3",
1635
+ "readable-stream": "^3.1.1"
1636
+ },
1637
+ "engines": {
1638
+ "node": ">=6"
1639
+ }
1640
+ },
1641
+ "node_modules/to-regex-range": {
1642
+ "version": "5.0.1",
1643
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1644
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1645
+ "dev": true,
1646
+ "dependencies": {
1647
+ "is-number": "^7.0.0"
1648
+ },
1649
+ "engines": {
1650
+ "node": ">=8.0"
1651
+ }
1652
+ },
1653
+ "node_modules/toidentifier": {
1654
+ "version": "1.0.1",
1655
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1656
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1657
+ "engines": {
1658
+ "node": ">=0.6"
1659
+ }
1660
+ },
1661
+ "node_modules/touch": {
1662
+ "version": "3.1.1",
1663
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
1664
+ "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
1665
+ "dev": true,
1666
+ "bin": {
1667
+ "nodetouch": "bin/nodetouch.js"
1668
+ }
1669
+ },
1670
+ "node_modules/tunnel-agent": {
1671
+ "version": "0.6.0",
1672
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1673
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
1674
+ "dependencies": {
1675
+ "safe-buffer": "^5.0.1"
1676
+ },
1677
+ "engines": {
1678
+ "node": "*"
1679
+ }
1680
+ },
1681
+ "node_modules/type-is": {
1682
+ "version": "2.0.1",
1683
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
1684
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
1685
+ "dependencies": {
1686
+ "content-type": "^1.0.5",
1687
+ "media-typer": "^1.1.0",
1688
+ "mime-types": "^3.0.0"
1689
+ },
1690
+ "engines": {
1691
+ "node": ">= 0.6"
1692
+ }
1693
+ },
1694
+ "node_modules/undefsafe": {
1695
+ "version": "2.0.5",
1696
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1697
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
1698
+ "dev": true
1699
+ },
1700
+ "node_modules/unpipe": {
1701
+ "version": "1.0.0",
1702
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1703
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1704
+ "engines": {
1705
+ "node": ">= 0.8"
1706
+ }
1707
+ },
1708
+ "node_modules/util-deprecate": {
1709
+ "version": "1.0.2",
1710
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1711
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
1712
+ },
1713
+ "node_modules/vary": {
1714
+ "version": "1.1.2",
1715
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1716
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1717
+ "engines": {
1718
+ "node": ">= 0.8"
1719
+ }
1720
+ },
1721
+ "node_modules/wrappy": {
1722
+ "version": "1.0.2",
1723
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1724
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
1725
+ },
1726
+ "node_modules/zod": {
1727
+ "version": "4.2.1",
1728
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz",
1729
+ "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==",
1730
+ "funding": {
1731
+ "url": "https://github.com/sponsors/colinhacks"
1732
+ }
1733
+ }
1734
+ }
1735
+ }
package.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "auth-server",
3
+ "version": "1.0.0",
4
+ "description": "Better Auth server for physical AI book",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "start": "node index.js",
8
+ "dev": "nodemon index.js"
9
+ },
10
+ "dependencies": {
11
+ "better-auth": "^1.4.9",
12
+ "better-sqlite3": "^12.5.0",
13
+ "express": "^5.2.1",
14
+ "cors": "^2.8.5",
15
+ "dotenv": "^17.2.3"
16
+ },
17
+ "devDependencies": {
18
+ "nodemon": "^3.0.1"
19
+ }
20
+ }
sqlite.db ADDED
Binary file (45.1 kB). View file