better-auth-studio 1.0.79-beta.7 → 1.0.79-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from 'fs';
1
+ import { existsSync, readFileSync, realpathSync, statSync } from 'fs';
2
2
  import { dirname, extname, join, resolve } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
  import { serveIndexHtml as getIndexHtml } from '../utils/html-injector.js';
@@ -184,12 +184,9 @@ function findPublicDir() {
184
184
  );
185
185
  }
186
186
  // For pnpm on Vercel, also check the actual package location in the store
187
- // Path is like: /vercel/path0/node_modules/.pnpm/better-auth-studio@version_hash/node_modules/better-auth-studio/
188
187
  const pnpmMatch = __dirname.match(/(.+\/.pnpm\/[^/]+\/node_modules\/better-auth-studio)\//);
189
188
  if (pnpmMatch) {
190
189
  const pnpmPackageRoot = pnpmMatch[1];
191
- console.log(`[Studio Debug] Detected pnpm package root: ${pnpmPackageRoot}`);
192
- // Check both with and without dist, as pnpm might flatten differently
193
190
  candidates.unshift(join(pnpmPackageRoot, 'dist', 'public'), join(pnpmPackageRoot, 'public'), join(pnpmPackageRoot, '..', 'dist', 'public'));
194
191
  }
195
192
  // Also try to find package.json and work from there
@@ -200,7 +197,6 @@ function findPublicDir() {
200
197
  if (existsSync(pkgPath)) {
201
198
  const pkgContent = readFileSync(pkgPath, 'utf-8');
202
199
  if (pkgContent.includes('"name": "better-auth-studio"')) {
203
- console.log(`[Studio Debug] Found package.json at: ${searchDir}`);
204
200
  candidates.unshift(join(searchDir, 'dist', 'public'), join(searchDir, 'public'));
205
201
  break;
206
202
  }
@@ -209,38 +205,22 @@ function findPublicDir() {
209
205
  }
210
206
  }
211
207
  catch (err) {
212
- console.log(`[Studio Debug] Error searching for package.json:`, err);
208
+ // Silent failure
213
209
  }
214
- console.log(`[Studio Debug] Searching for public directory, ${candidates.length} candidates`);
215
210
  // First, try to find a directory with index.html
216
211
  for (const candidate of candidates) {
217
212
  try {
218
- const dirExists = existsSync(candidate);
219
- console.log(`[Studio Debug] Checking: ${candidate} - exists: ${dirExists}`);
220
- if (dirExists) {
221
- // Check if it's actually a directory
222
- try {
223
- const stats = statSync(candidate);
224
- console.log(`[Studio Debug] ${candidate} - isDirectory: ${stats.isDirectory()}`);
225
- if (!stats.isDirectory()) {
226
- continue;
213
+ if (existsSync(candidate)) {
214
+ const stats = statSync(candidate);
215
+ if (stats.isDirectory()) {
216
+ const indexPath = join(candidate, 'index.html');
217
+ if (existsSync(indexPath)) {
218
+ return candidate;
227
219
  }
228
220
  }
229
- catch (statError) {
230
- console.error(`[Studio Debug] Error stat-ing ${candidate}:`, statError);
231
- continue;
232
- }
233
- const indexPath = join(candidate, 'index.html');
234
- const indexExists = existsSync(indexPath);
235
- console.log(`[Studio Debug] Index.html at ${indexPath} - exists: ${indexExists}`);
236
- if (indexExists) {
237
- console.log(`[Studio] ✓ Found public directory at: ${candidate}`);
238
- return candidate;
239
- }
240
221
  }
241
222
  }
242
223
  catch (error) {
243
- console.error(`[Studio Debug] Error checking ${candidate}:`, error);
244
224
  continue;
245
225
  }
246
226
  }
@@ -248,7 +228,6 @@ function findPublicDir() {
248
228
  for (const candidate of candidates) {
249
229
  try {
250
230
  if (existsSync(candidate) && statSync(candidate).isDirectory()) {
251
- console.warn(`[Studio] Found public directory without index.html at: ${candidate}`);
252
231
  return candidate;
253
232
  }
254
233
  }
@@ -256,29 +235,9 @@ function findPublicDir() {
256
235
  continue;
257
236
  }
258
237
  }
238
+ // Log error details for debugging
259
239
  console.error('[Studio] Could not find public directory');
260
- console.error('[Studio] __dirname:', __dirname);
261
- console.error('[Studio] __realdir:', __realdir);
262
- console.error('[Studio] Tried candidates:', candidates);
263
- // Try to list what's actually in the dist directory
264
- try {
265
- const distDir = resolve(__dirname, '..');
266
- console.error('[Studio] Checking dist directory:', distDir);
267
- if (existsSync(distDir)) {
268
- const contents = readdirSync(distDir);
269
- console.error('[Studio] Contents of dist directory:', contents);
270
- }
271
- // Also check the package root
272
- const packageRoot = resolve(__dirname, '../..');
273
- console.error('[Studio] Checking package root:', packageRoot);
274
- if (existsSync(packageRoot)) {
275
- const rootContents = readdirSync(packageRoot);
276
- console.error('[Studio] Contents of package root:', rootContents);
277
- }
278
- }
279
- catch (err) {
280
- console.error('[Studio] Could not read directories:', err);
281
- }
240
+ console.error('[Studio] Tried paths:', candidates.slice(0, 5).join(', '), '...');
282
241
  return null;
283
242
  }
284
243
  let cachedPublicDir = null;
@@ -287,25 +246,48 @@ function handleStaticFile(path, config) {
287
246
  cachedPublicDir = findPublicDir();
288
247
  }
289
248
  if (!cachedPublicDir) {
290
- const baseDirs = [__dirname, __realdir];
291
- const candidates = [];
292
- for (const baseDir of baseDirs) {
293
- candidates.push(resolve(baseDir, '../public'), resolve(baseDir, '../../public'), resolve(baseDir, '../../../public'), resolve(baseDir, '../../dist/public'), resolve(baseDir, '../../../dist/public'));
249
+ // Fallback: serve a basic error page with instructions
250
+ if (path === '/' || path === '') {
251
+ return {
252
+ status: 503,
253
+ headers: {
254
+ 'Content-Type': 'text/html',
255
+ 'Cache-Control': 'no-cache',
256
+ },
257
+ body: `<!DOCTYPE html>
258
+ <html>
259
+ <head>
260
+ <title>Better Auth Studio - Setup Required</title>
261
+ <style>
262
+ body { font-family: system-ui, sans-serif; max-width: 600px; margin: 50px auto; padding: 20px; line-height: 1.6; }
263
+ h1 { color: #e53e3e; }
264
+ code { background: #f7fafc; padding: 2px 6px; border-radius: 3px; }
265
+ .steps { background: #edf2f7; padding: 20px; border-radius: 8px; margin: 20px 0; }
266
+ </style>
267
+ </head>
268
+ <body>
269
+ <h1>⚠️ Studio UI Not Available</h1>
270
+ <p>The Better Auth Studio UI assets could not be located. This typically happens on serverless deployments with pnpm.</p>
271
+
272
+ <div class="steps">
273
+ <h3>To fix this:</h3>
274
+ <ol>
275
+ <li>Check your deployment logs for postinstall output</li>
276
+ <li>Ensure <code>better-auth-studio</code> is in <code>dependencies</code> (not devDependencies)</li>
277
+ <li>If using pnpm, try setting <code>public-hoist-pattern[]=better-auth-studio</code> in <code>.npmrc</code></li>
278
+ <li>Try clearing your build cache and redeploying</li>
279
+ </ol>
280
+ </div>
281
+
282
+ <p><strong>Need help?</strong> Visit <a href="https://github.com/better-auth/better-auth-studio/issues">GitHub Issues</a></p>
283
+ </body>
284
+ </html>`,
285
+ };
294
286
  }
295
- // Check which paths exist and which have index.html
296
- const diagnostics = candidates.map(candidate => ({
297
- path: candidate,
298
- exists: existsSync(candidate),
299
- hasIndex: existsSync(candidate) ? existsSync(join(candidate, 'index.html')) : false,
300
- }));
301
- return jsonResponse(500, {
287
+ return jsonResponse(503, {
302
288
  error: 'Public directory not found',
303
- paths: {
304
- tried: candidates,
305
- dirname: __dirname,
306
- realdir: __realdir,
307
- diagnostics,
308
- },
289
+ message: 'Studio UI assets could not be located. This may be a deployment issue.',
290
+ suggestion: 'Check deployment logs for postinstall errors or try clearing build cache.',
309
291
  });
310
292
  }
311
293
  return handleStaticFileFromDir(path, cachedPublicDir, config);
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/core/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/core/handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "better-auth-studio",
3
- "version": "1.0.79-beta.7",
3
+ "version": "1.0.79-beta.9",
4
4
  "description": "Studio for Better Auth",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -67,12 +67,14 @@
67
67
  "dist/",
68
68
  "public/",
69
69
  "data/",
70
+ "scripts/",
70
71
  "README.md"
71
72
  ],
72
73
  "scripts": {
73
74
  "build": "tsc && pnpm run frontend:build && pnpm run copy:public && pnpm run verify:public",
74
75
  "copy:public": "cp -r public dist/",
75
76
  "verify:public": "test -f dist/public/index.html && echo '✓ Public directory copied successfully' || (echo '✗ ERROR: Public directory not copied!' && exit 1)",
77
+ "postinstall": "node scripts/postinstall.js",
76
78
  "dev": "tsx src/cli.ts",
77
79
  "start": "node dist/cli.js",
78
80
  "studio": "tsx src/cli.ts",
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+
3
+ const https = require('node:https');
4
+ const fs = require('node:fs');
5
+ const path = require('node:path');
6
+
7
+ const GEO_DB_URL =
8
+ 'https://github.com/P3TERX/GeoLite.mmdb/releases/download/2024.08.13/GeoLite2-City.mmdb';
9
+ const OUTPUT_PATH = path.join(__dirname, '..', 'data', 'GeoLite2-City.mmdb');
10
+
11
+ const dataDir = path.dirname(OUTPUT_PATH);
12
+ if (!fs.existsSync(dataDir)) {
13
+ fs.mkdirSync(dataDir, { recursive: true });
14
+ }
15
+
16
+ const file = fs.createWriteStream(OUTPUT_PATH);
17
+
18
+ https
19
+ .get(GEO_DB_URL, (response) => {
20
+ if (response.statusCode === 200) {
21
+ response.pipe(file);
22
+
23
+ file.on('finish', () => {
24
+ file.close();
25
+
26
+ const _stats = fs.statSync(OUTPUT_PATH);
27
+ });
28
+
29
+ file.on('error', (_err) => {
30
+ fs.unlink(OUTPUT_PATH, () => {}); // Delete the file on error
31
+ });
32
+ } else {
33
+ }
34
+ })
35
+ .on('error', (_err) => {});
@@ -0,0 +1,462 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('node:fs');
4
+ const path = require('node:path');
5
+
6
+ // Comprehensive IP ranges covering most of the internet
7
+ const IP_RANGES = [
8
+ // North America
9
+ {
10
+ country: 'United States',
11
+ countryCode: 'US',
12
+ city: 'New York',
13
+ region: 'New York',
14
+ ranges: [
15
+ { min: '8.0.0.0', max: '8.255.255.255' },
16
+ { min: '24.0.0.0', max: '24.255.255.255' },
17
+ { min: '32.0.0.0', max: '32.255.255.255' },
18
+ { min: '40.0.0.0', max: '40.255.255.255' },
19
+ { min: '50.0.0.0', max: '50.255.255.255' },
20
+ { min: '64.0.0.0', max: '64.255.255.255' },
21
+ { min: '66.0.0.0', max: '66.255.255.255' },
22
+ { min: '68.0.0.0', max: '68.255.255.255' },
23
+ { min: '70.0.0.0', max: '70.255.255.255' },
24
+ { min: '72.0.0.0', max: '72.255.255.255' },
25
+ { min: '74.0.0.0', max: '74.255.255.255' },
26
+ { min: '76.0.0.0', max: '76.255.255.255' },
27
+ { min: '98.0.0.0', max: '98.255.255.255' },
28
+ { min: '104.0.0.0', max: '104.255.255.255' },
29
+ { min: '108.0.0.0', max: '108.255.255.255' },
30
+ { min: '173.0.0.0', max: '173.255.255.255' },
31
+ { min: '174.0.0.0', max: '174.255.255.255' },
32
+ { min: '184.0.0.0', max: '184.255.255.255' },
33
+ { min: '192.0.0.0', max: '192.255.255.255' },
34
+ { min: '198.0.0.0', max: '198.255.255.255' },
35
+ { min: '204.0.0.0', max: '204.255.255.255' },
36
+ { min: '208.0.0.0', max: '208.255.255.255' },
37
+ ],
38
+ },
39
+ {
40
+ country: 'Canada',
41
+ countryCode: 'CA',
42
+ city: 'Toronto',
43
+ region: 'Ontario',
44
+ ranges: [
45
+ { min: '24.0.0.0', max: '24.255.255.255' },
46
+ { min: '70.0.0.0', max: '70.255.255.255' },
47
+ { min: '142.0.0.0', max: '142.255.255.255' },
48
+ { min: '162.0.0.0', max: '162.255.255.255' },
49
+ { min: '174.0.0.0', max: '174.255.255.255' },
50
+ { min: '184.0.0.0', max: '184.255.255.255' },
51
+ { min: '199.0.0.0', max: '199.255.255.255' },
52
+ { min: '205.0.0.0', max: '205.255.255.255' },
53
+ ],
54
+ },
55
+
56
+ // Europe
57
+ {
58
+ country: 'United Kingdom',
59
+ countryCode: 'GB',
60
+ city: 'London',
61
+ region: 'England',
62
+ ranges: [
63
+ { min: '2.0.0.0', max: '2.255.255.255' },
64
+ { min: '5.0.0.0', max: '5.255.255.255' },
65
+ { min: '25.0.0.0', max: '25.255.255.255' },
66
+ { min: '31.0.0.0', max: '31.255.255.255' },
67
+ { min: '46.0.0.0', max: '46.255.255.255' },
68
+ { min: '51.0.0.0', max: '51.255.255.255' },
69
+ { min: '77.0.0.0', max: '77.255.255.255' },
70
+ { min: '80.0.0.0', max: '80.255.255.255' },
71
+ { min: '81.0.0.0', max: '81.255.255.255' },
72
+ { min: '82.0.0.0', max: '82.255.255.255' },
73
+ { min: '86.0.0.0', max: '86.255.255.255' },
74
+ { min: '87.0.0.0', max: '87.255.255.255' },
75
+ { min: '88.0.0.0', max: '88.255.255.255' },
76
+ { min: '89.0.0.0', max: '89.255.255.255' },
77
+ { min: '90.0.0.0', max: '90.255.255.255' },
78
+ { min: '91.0.0.0', max: '91.255.255.255' },
79
+ { min: '92.0.0.0', max: '92.255.255.255' },
80
+ { min: '93.0.0.0', max: '93.255.255.255' },
81
+ { min: '94.0.0.0', max: '94.255.255.255' },
82
+ { min: '95.0.0.0', max: '95.255.255.255' },
83
+ ],
84
+ },
85
+ {
86
+ country: 'Germany',
87
+ countryCode: 'DE',
88
+ city: 'Berlin',
89
+ region: 'Berlin',
90
+ ranges: [
91
+ { min: '46.0.0.0', max: '46.255.255.255' },
92
+ { min: '62.0.0.0', max: '62.255.255.255' },
93
+ { min: '78.0.0.0', max: '78.255.255.255' },
94
+ { min: '80.0.0.0', max: '80.255.255.255' },
95
+ { min: '85.0.0.0', max: '85.255.255.255' },
96
+ { min: '88.0.0.0', max: '88.255.255.255' },
97
+ { min: '91.0.0.0', max: '91.255.255.255' },
98
+ { min: '134.0.0.0', max: '134.255.255.255' },
99
+ { min: '136.0.0.0', max: '136.255.255.255' },
100
+ { min: '141.0.0.0', max: '141.255.255.255' },
101
+ { min: '145.0.0.0', max: '145.255.255.255' },
102
+ { min: '149.0.0.0', max: '149.255.255.255' },
103
+ { min: '178.0.0.0', max: '178.255.255.255' },
104
+ { min: '188.0.0.0', max: '188.255.255.255' },
105
+ { min: '195.0.0.0', max: '195.255.255.255' },
106
+ { min: '212.0.0.0', max: '212.255.255.255' },
107
+ { min: '217.0.0.0', max: '217.255.255.255' },
108
+ ],
109
+ },
110
+ {
111
+ country: 'France',
112
+ countryCode: 'FR',
113
+ city: 'Paris',
114
+ region: 'Île-de-France',
115
+ ranges: [
116
+ { min: '37.0.0.0', max: '37.255.255.255' },
117
+ { min: '62.0.0.0', max: '62.255.255.255' },
118
+ { min: '78.0.0.0', max: '78.255.255.255' },
119
+ { min: '80.0.0.0', max: '80.255.255.255' },
120
+ { min: '81.0.0.0', max: '81.255.255.255' },
121
+ { min: '82.0.0.0', max: '82.255.255.255' },
122
+ { min: '83.0.0.0', max: '83.255.255.255' },
123
+ { min: '84.0.0.0', max: '84.255.255.255' },
124
+ { min: '85.0.0.0', max: '85.255.255.255' },
125
+ { min: '86.0.0.0', max: '86.255.255.255' },
126
+ { min: '87.0.0.0', max: '87.255.255.255' },
127
+ { min: '88.0.0.0', max: '88.255.255.255' },
128
+ { min: '89.0.0.0', max: '89.255.255.255' },
129
+ { min: '90.0.0.0', max: '90.255.255.255' },
130
+ { min: '91.0.0.0', max: '91.255.255.255' },
131
+ { min: '92.0.0.0', max: '92.255.255.255' },
132
+ { min: '93.0.0.0', max: '93.255.255.255' },
133
+ { min: '94.0.0.0', max: '94.255.255.255' },
134
+ { min: '95.0.0.0', max: '95.255.255.255' },
135
+ { min: '109.0.0.0', max: '109.255.255.255' },
136
+ { min: '134.0.0.0', max: '134.255.255.255' },
137
+ { min: '136.0.0.0', max: '136.255.255.255' },
138
+ { min: '141.0.0.0', max: '141.255.255.255' },
139
+ { min: '145.0.0.0', max: '145.255.255.255' },
140
+ { min: '149.0.0.0', max: '149.255.255.255' },
141
+ { min: '178.0.0.0', max: '178.255.255.255' },
142
+ { min: '188.0.0.0', max: '188.255.255.255' },
143
+ { min: '195.0.0.0', max: '195.255.255.255' },
144
+ { min: '212.0.0.0', max: '212.255.255.255' },
145
+ { min: '217.0.0.0', max: '217.255.255.255' },
146
+ ],
147
+ },
148
+
149
+ // Asia
150
+ {
151
+ country: 'Japan',
152
+ countryCode: 'JP',
153
+ city: 'Tokyo',
154
+ region: 'Tokyo',
155
+ ranges: [
156
+ { min: '126.0.0.0', max: '126.255.255.255' },
157
+ { min: '210.0.0.0', max: '210.255.255.255' },
158
+ { min: '218.0.0.0', max: '218.255.255.255' },
159
+ { min: '219.0.0.0', max: '219.255.255.255' },
160
+ { min: '220.0.0.0', max: '220.255.255.255' },
161
+ { min: '221.0.0.0', max: '221.255.255.255' },
162
+ { min: '222.0.0.0', max: '222.255.255.255' },
163
+ { min: '223.0.0.0', max: '223.255.255.255' },
164
+ ],
165
+ },
166
+ {
167
+ country: 'China',
168
+ countryCode: 'CN',
169
+ city: 'Beijing',
170
+ region: 'Beijing',
171
+ ranges: [
172
+ { min: '1.0.0.0', max: '1.255.255.255' },
173
+ { min: '14.0.0.0', max: '14.255.255.255' },
174
+ { min: '27.0.0.0', max: '27.255.255.255' },
175
+ { min: '36.0.0.0', max: '36.255.255.255' },
176
+ { min: '39.0.0.0', max: '39.255.255.255' },
177
+ { min: '42.0.0.0', max: '42.255.255.255' },
178
+ { min: '49.0.0.0', max: '49.255.255.255' },
179
+ { min: '58.0.0.0', max: '58.255.255.255' },
180
+ { min: '59.0.0.0', max: '59.255.255.255' },
181
+ { min: '60.0.0.0', max: '60.255.255.255' },
182
+ { min: '61.0.0.0', max: '61.255.255.255' },
183
+ { min: '101.0.0.0', max: '101.255.255.255' },
184
+ { min: '103.0.0.0', max: '103.255.255.255' },
185
+ { min: '106.0.0.0', max: '106.255.255.255' },
186
+ { min: '110.0.0.0', max: '110.255.255.255' },
187
+ { min: '111.0.0.0', max: '111.255.255.255' },
188
+ { min: '112.0.0.0', max: '112.255.255.255' },
189
+ { min: '113.0.0.0', max: '113.255.255.255' },
190
+ { min: '114.0.0.0', max: '114.255.255.255' },
191
+ { min: '115.0.0.0', max: '115.255.255.255' },
192
+ { min: '116.0.0.0', max: '116.255.255.255' },
193
+ { min: '117.0.0.0', max: '117.255.255.255' },
194
+ { min: '118.0.0.0', max: '118.255.255.255' },
195
+ { min: '119.0.0.0', max: '119.255.255.255' },
196
+ { min: '120.0.0.0', max: '120.255.255.255' },
197
+ { min: '121.0.0.0', max: '121.255.255.255' },
198
+ { min: '122.0.0.0', max: '122.255.255.255' },
199
+ { min: '123.0.0.0', max: '123.255.255.255' },
200
+ { min: '124.0.0.0', max: '124.255.255.255' },
201
+ { min: '125.0.0.0', max: '125.255.255.255' },
202
+ { min: '171.0.0.0', max: '171.255.255.255' },
203
+ { min: '175.0.0.0', max: '175.255.255.255' },
204
+ { min: '180.0.0.0', max: '180.255.255.255' },
205
+ { min: '182.0.0.0', max: '182.255.255.255' },
206
+ { min: '183.0.0.0', max: '183.255.255.255' },
207
+ { min: '202.0.0.0', max: '202.255.255.255' },
208
+ { min: '203.0.0.0', max: '203.255.255.255' },
209
+ { min: '210.0.0.0', max: '210.255.255.255' },
210
+ { min: '211.0.0.0', max: '211.255.255.255' },
211
+ { min: '218.0.0.0', max: '218.255.255.255' },
212
+ { min: '219.0.0.0', max: '219.255.255.255' },
213
+ { min: '220.0.0.0', max: '220.255.255.255' },
214
+ { min: '221.0.0.0', max: '221.255.255.255' },
215
+ { min: '222.0.0.0', max: '222.255.255.255' },
216
+ { min: '223.0.0.0', max: '223.255.255.255' },
217
+ ],
218
+ },
219
+ {
220
+ country: 'India',
221
+ countryCode: 'IN',
222
+ city: 'Mumbai',
223
+ region: 'Maharashtra',
224
+ ranges: [
225
+ { min: '103.0.0.0', max: '103.255.255.255' },
226
+ { min: '117.0.0.0', max: '117.255.255.255' },
227
+ { min: '122.0.0.0', max: '122.255.255.255' },
228
+ { min: '180.0.0.0', max: '180.255.255.255' },
229
+ { min: '182.0.0.0', max: '182.255.255.255' },
230
+ { min: '183.0.0.0', max: '183.255.255.255' },
231
+ { min: '202.0.0.0', max: '202.255.255.255' },
232
+ { min: '203.0.0.0', max: '203.255.255.255' },
233
+ { min: '210.0.0.0', max: '210.255.255.255' },
234
+ { min: '211.0.0.0', max: '211.255.255.255' },
235
+ { min: '218.0.0.0', max: '218.255.255.255' },
236
+ { min: '219.0.0.0', max: '219.255.255.255' },
237
+ { min: '220.0.0.0', max: '220.255.255.255' },
238
+ { min: '221.0.0.0', max: '221.255.255.255' },
239
+ { min: '222.0.0.0', max: '222.255.255.255' },
240
+ { min: '223.0.0.0', max: '223.255.255.255' },
241
+ ],
242
+ },
243
+
244
+ // Oceania
245
+ {
246
+ country: 'Australia',
247
+ countryCode: 'AU',
248
+ city: 'Sydney',
249
+ region: 'New South Wales',
250
+ ranges: [
251
+ { min: '1.0.0.0', max: '1.255.255.255' },
252
+ { min: '14.0.0.0', max: '14.255.255.255' },
253
+ { min: '27.0.0.0', max: '27.255.255.255' },
254
+ { min: '36.0.0.0', max: '36.255.255.255' },
255
+ { min: '39.0.0.0', max: '39.255.255.255' },
256
+ { min: '42.0.0.0', max: '42.255.255.255' },
257
+ { min: '49.0.0.0', max: '49.255.255.255' },
258
+ { min: '58.0.0.0', max: '58.255.255.255' },
259
+ { min: '59.0.0.0', max: '59.255.255.255' },
260
+ { min: '60.0.0.0', max: '60.255.255.255' },
261
+ { min: '61.0.0.0', max: '61.255.255.255' },
262
+ { min: '101.0.0.0', max: '101.255.255.255' },
263
+ { min: '103.0.0.0', max: '103.255.255.255' },
264
+ { min: '106.0.0.0', max: '106.255.255.255' },
265
+ { min: '110.0.0.0', max: '110.255.255.255' },
266
+ { min: '111.0.0.0', max: '111.255.255.255' },
267
+ { min: '112.0.0.0', max: '112.255.255.255' },
268
+ { min: '113.0.0.0', max: '113.255.255.255' },
269
+ { min: '114.0.0.0', max: '114.255.255.255' },
270
+ { min: '115.0.0.0', max: '115.255.255.255' },
271
+ { min: '116.0.0.0', max: '116.255.255.255' },
272
+ { min: '117.0.0.0', max: '117.255.255.255' },
273
+ { min: '118.0.0.0', max: '118.255.255.255' },
274
+ { min: '119.0.0.0', max: '119.255.255.255' },
275
+ { min: '120.0.0.0', max: '120.255.255.255' },
276
+ { min: '121.0.0.0', max: '121.255.255.255' },
277
+ { min: '122.0.0.0', max: '122.255.255.255' },
278
+ { min: '123.0.0.0', max: '123.255.255.255' },
279
+ { min: '124.0.0.0', max: '124.255.255.255' },
280
+ { min: '125.0.0.0', max: '125.255.255.255' },
281
+ { min: '171.0.0.0', max: '171.255.255.255' },
282
+ { min: '175.0.0.0', max: '175.255.255.255' },
283
+ { min: '180.0.0.0', max: '180.255.255.255' },
284
+ { min: '182.0.0.0', max: '182.255.255.255' },
285
+ { min: '183.0.0.0', max: '183.255.255.255' },
286
+ { min: '202.0.0.0', max: '202.255.255.255' },
287
+ { min: '203.0.0.0', max: '203.255.255.255' },
288
+ { min: '210.0.0.0', max: '210.255.255.255' },
289
+ { min: '211.0.0.0', max: '211.255.255.255' },
290
+ { min: '218.0.0.0', max: '218.255.255.255' },
291
+ { min: '219.0.0.0', max: '219.255.255.255' },
292
+ { min: '220.0.0.0', max: '220.255.255.255' },
293
+ { min: '221.0.0.0', max: '221.255.255.255' },
294
+ { min: '222.0.0.0', max: '222.255.255.255' },
295
+ { min: '223.0.0.0', max: '223.255.255.255' },
296
+ ],
297
+ },
298
+
299
+ // South America
300
+ {
301
+ country: 'Brazil',
302
+ countryCode: 'BR',
303
+ city: 'São Paulo',
304
+ region: 'São Paulo',
305
+ ranges: [
306
+ { min: '177.0.0.0', max: '177.255.255.255' },
307
+ { min: '201.0.0.0', max: '201.255.255.255' },
308
+ { min: '186.0.0.0', max: '186.255.255.255' },
309
+ { min: '189.0.0.0', max: '189.255.255.255' },
310
+ { min: '200.0.0.0', max: '200.255.255.255' },
311
+ ],
312
+ },
313
+
314
+ // Africa
315
+ {
316
+ country: 'South Africa',
317
+ countryCode: 'ZA',
318
+ city: 'Cape Town',
319
+ region: 'Western Cape',
320
+ ranges: [
321
+ { min: '41.0.0.0', max: '41.255.255.255' },
322
+ { min: '102.0.0.0', max: '102.255.255.255' },
323
+ { min: '105.0.0.0', max: '105.255.255.255' },
324
+ { min: '196.0.0.0', max: '196.255.255.255' },
325
+ { min: '197.0.0.0', max: '197.255.255.255' },
326
+ ],
327
+ },
328
+
329
+ // Russia
330
+ {
331
+ country: 'Russia',
332
+ countryCode: 'RU',
333
+ city: 'Moscow',
334
+ region: 'Moscow',
335
+ ranges: [
336
+ { min: '5.0.0.0', max: '5.255.255.255' },
337
+ { min: '31.0.0.0', max: '31.255.255.255' },
338
+ { min: '37.0.0.0', max: '37.255.255.255' },
339
+ { min: '46.0.0.0', max: '46.255.255.255' },
340
+ { min: '62.0.0.0', max: '62.255.255.255' },
341
+ { min: '77.0.0.0', max: '77.255.255.255' },
342
+ { min: '78.0.0.0', max: '78.255.255.255' },
343
+ { min: '80.0.0.0', max: '80.255.255.255' },
344
+ { min: '81.0.0.0', max: '81.255.255.255' },
345
+ { min: '82.0.0.0', max: '82.255.255.255' },
346
+ { min: '83.0.0.0', max: '83.255.255.255' },
347
+ { min: '84.0.0.0', max: '84.255.255.255' },
348
+ { min: '85.0.0.0', max: '85.255.255.255' },
349
+ { min: '86.0.0.0', max: '86.255.255.255' },
350
+ { min: '87.0.0.0', max: '87.255.255.255' },
351
+ { min: '88.0.0.0', max: '88.255.255.255' },
352
+ { min: '89.0.0.0', max: '89.255.255.255' },
353
+ { min: '90.0.0.0', max: '90.255.255.255' },
354
+ { min: '91.0.0.0', max: '91.255.255.255' },
355
+ { min: '92.0.0.0', max: '92.255.255.255' },
356
+ { min: '93.0.0.0', max: '93.255.255.255' },
357
+ { min: '94.0.0.0', max: '94.255.255.255' },
358
+ { min: '95.0.0.0', max: '95.255.255.255' },
359
+ { min: '109.0.0.0', max: '109.255.255.255' },
360
+ { min: '134.0.0.0', max: '134.255.255.255' },
361
+ { min: '136.0.0.0', max: '136.255.255.255' },
362
+ { min: '141.0.0.0', max: '141.255.255.255' },
363
+ { min: '145.0.0.0', max: '145.255.255.255' },
364
+ { min: '149.0.0.0', max: '149.255.255.255' },
365
+ { min: '178.0.0.0', max: '178.255.255.255' },
366
+ { min: '188.0.0.0', max: '188.255.255.255' },
367
+ { min: '195.0.0.0', max: '195.255.255.255' },
368
+ { min: '212.0.0.0', max: '212.255.255.255' },
369
+ { min: '217.0.0.0', max: '217.255.255.255' },
370
+ ],
371
+ },
372
+ ];
373
+
374
+ // Convert IP to number for range checking
375
+ function ipToNumber(ip) {
376
+ return ip.split('.').reduce((acc, part) => (acc << 8) + parseInt(part, 10), 0) >>> 0;
377
+ }
378
+
379
+ // Check if IP is in range
380
+ function isIPInRange(ip, minIP, maxIP) {
381
+ const ipNum = ipToNumber(ip);
382
+ const minNum = ipToNumber(minIP);
383
+ const maxNum = ipToNumber(maxIP);
384
+ return ipNum >= minNum && ipNum <= maxNum;
385
+ }
386
+
387
+ // Find location for IP
388
+ function findLocationForIP(ip) {
389
+ for (const countryData of IP_RANGES) {
390
+ for (const range of countryData.ranges) {
391
+ if (isIPInRange(ip, range.min, range.max)) {
392
+ return {
393
+ country: countryData.country,
394
+ countryCode: countryData.countryCode,
395
+ city: countryData.city,
396
+ region: countryData.region,
397
+ };
398
+ }
399
+ }
400
+ }
401
+
402
+ // Default fallback
403
+ return {
404
+ country: 'Unknown',
405
+ countryCode: '',
406
+ city: 'Unknown',
407
+ region: 'Unknown',
408
+ };
409
+ }
410
+
411
+ // Generate a simple database file (JSON format for now)
412
+ function generateDatabase() {
413
+ const database = {
414
+ version: '1.0.0',
415
+ generated: new Date().toISOString(),
416
+ description: 'Default IP geolocation database for Better Auth Studio',
417
+ coverage: 'Major IP ranges worldwide',
418
+ ranges: IP_RANGES,
419
+ totalRanges: IP_RANGES.reduce((sum, country) => sum + country.ranges.length, 0),
420
+ countries: IP_RANGES.length,
421
+ };
422
+
423
+ const outputPath = path.join(__dirname, '..', 'data', 'default-geo.json');
424
+ const outputDir = path.dirname(outputPath);
425
+
426
+ // Create directory if it doesn't exist
427
+ if (!fs.existsSync(outputDir)) {
428
+ fs.mkdirSync(outputDir, { recursive: true });
429
+ }
430
+
431
+ fs.writeFileSync(outputPath, JSON.stringify(database, null, 2));
432
+
433
+ return outputPath;
434
+ }
435
+
436
+ // Test the database with some sample IPs
437
+ function testDatabase() {
438
+ const testIPs = [
439
+ '8.8.8.8', // Google DNS (US)
440
+ '1.1.1.1', // Cloudflare (US)
441
+ '208.67.222.222', // OpenDNS (US)
442
+ '46.4.0.1', // Germany
443
+ '5.5.5.5', // UK
444
+ '126.0.0.1', // Japan
445
+ '103.0.0.1', // India
446
+ '1.0.0.1', // Australia
447
+ '177.0.0.1', // Brazil
448
+ '41.0.0.1', // South Africa
449
+ ];
450
+
451
+ testIPs.forEach((ip) => {
452
+ const _location = findLocationForIP(ip);
453
+ });
454
+ }
455
+
456
+ // Main execution
457
+ if (require.main === module) {
458
+ generateDatabase();
459
+ testDatabase();
460
+ }
461
+
462
+ module.exports = { IP_RANGES, findLocationForIP, generateDatabase };
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Postinstall script to ensure public directory exists
5
+ * This runs after npm/pnpm install to handle edge cases where
6
+ * the public directory isn't extracted properly (e.g., Vercel with pnpm)
7
+ */
8
+
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ // Find the package root
13
+ const packageRoot = path.resolve(__dirname, '..');
14
+ const distDir = path.join(packageRoot, 'dist');
15
+ const publicInDist = path.join(distDir, 'public');
16
+ const publicInRoot = path.join(packageRoot, 'public');
17
+
18
+ console.log('[better-auth-studio] Running postinstall...');
19
+ console.log('[better-auth-studio] Package root:', packageRoot);
20
+
21
+ // List what's actually in the package
22
+ try {
23
+ const packageContents = fs.readdirSync(packageRoot);
24
+ console.log('[better-auth-studio] Package contents:', packageContents.join(', '));
25
+
26
+ if (fs.existsSync(distDir)) {
27
+ const distContents = fs.readdirSync(distDir);
28
+ console.log('[better-auth-studio] dist/ contents:', distContents.join(', '));
29
+ } else {
30
+ console.log('[better-auth-studio] dist/ directory does not exist');
31
+ }
32
+ } catch (err) {
33
+ console.warn('[better-auth-studio] Could not list package contents:', err.message);
34
+ }
35
+
36
+ // Check if either public directory exists
37
+ const hasPublicInDist = fs.existsSync(publicInDist) && fs.existsSync(path.join(publicInDist, 'index.html'));
38
+ const hasPublicInRoot = fs.existsSync(publicInRoot) && fs.existsSync(path.join(publicInRoot, 'index.html'));
39
+
40
+ console.log('[better-auth-studio] Checking public directories...');
41
+ console.log('[better-auth-studio] - dist/public exists:', hasPublicInDist);
42
+ console.log('[better-auth-studio] - public/ exists:', hasPublicInRoot);
43
+
44
+ if (hasPublicInDist || hasPublicInRoot) {
45
+ console.log('[better-auth-studio] ✓ Public directory found');
46
+
47
+ // Ensure both locations have the public files for maximum compatibility
48
+ if (hasPublicInRoot && !hasPublicInDist) {
49
+ try {
50
+ if (!fs.existsSync(distDir)) {
51
+ fs.mkdirSync(distDir, { recursive: true });
52
+ }
53
+ copyRecursive(publicInRoot, publicInDist);
54
+ console.log('[better-auth-studio] ✓ Copied public/ to dist/public/');
55
+ } catch (err) {
56
+ console.warn('[better-auth-studio] Warning: Could not copy to dist/public:', err.message);
57
+ }
58
+ } else if (hasPublicInDist && !hasPublicInRoot) {
59
+ try {
60
+ copyRecursive(publicInDist, publicInRoot);
61
+ console.log('[better-auth-studio] ✓ Copied dist/public/ to public/');
62
+ } catch (err) {
63
+ console.warn('[better-auth-studio] Warning: Could not copy to public:', err.message);
64
+ }
65
+ }
66
+ } else {
67
+ console.warn('[better-auth-studio] ⚠ Warning: Public directory not found. Studio UI may not work correctly.');
68
+ console.warn('[better-auth-studio] Please report this issue at: https://github.com/better-auth/better-auth-studio/issues');
69
+ }
70
+
71
+ function copyRecursive(src, dest) {
72
+ if (!fs.existsSync(dest)) {
73
+ fs.mkdirSync(dest, { recursive: true });
74
+ }
75
+
76
+ const entries = fs.readdirSync(src, { withFileTypes: true });
77
+
78
+ for (const entry of entries) {
79
+ const srcPath = path.join(src, entry.name);
80
+ const destPath = path.join(dest, entry.name);
81
+
82
+ if (entry.isDirectory()) {
83
+ copyRecursive(srcPath, destPath);
84
+ } else {
85
+ fs.copyFileSync(srcPath, destPath);
86
+ }
87
+ }
88
+ }
89
+