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

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,10 @@ 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'));
294
- }
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
249
  return jsonResponse(500, {
302
250
  error: 'Public directory not found',
303
- paths: {
304
- tried: candidates,
305
- dirname: __dirname,
306
- realdir: __realdir,
307
- diagnostics,
308
- },
251
+ message: 'Studio UI assets could not be located. This may be a deployment issue.',
252
+ suggestion: 'Try reinstalling the package or check deployment logs for errors.',
309
253
  });
310
254
  }
311
255
  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.8",
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,69 @@
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
+
20
+ // Check if either public directory exists
21
+ const hasPublicInDist = fs.existsSync(publicInDist) && fs.existsSync(path.join(publicInDist, 'index.html'));
22
+ const hasPublicInRoot = fs.existsSync(publicInRoot) && fs.existsSync(path.join(publicInRoot, 'index.html'));
23
+
24
+ if (hasPublicInDist || hasPublicInRoot) {
25
+ console.log('[better-auth-studio] ✓ Public directory found');
26
+
27
+ // Ensure both locations have the public files for maximum compatibility
28
+ if (hasPublicInRoot && !hasPublicInDist) {
29
+ try {
30
+ if (!fs.existsSync(distDir)) {
31
+ fs.mkdirSync(distDir, { recursive: true });
32
+ }
33
+ copyRecursive(publicInRoot, publicInDist);
34
+ console.log('[better-auth-studio] ✓ Copied public/ to dist/public/');
35
+ } catch (err) {
36
+ console.warn('[better-auth-studio] Warning: Could not copy to dist/public:', err.message);
37
+ }
38
+ } else if (hasPublicInDist && !hasPublicInRoot) {
39
+ try {
40
+ copyRecursive(publicInDist, publicInRoot);
41
+ console.log('[better-auth-studio] ✓ Copied dist/public/ to public/');
42
+ } catch (err) {
43
+ console.warn('[better-auth-studio] Warning: Could not copy to public:', err.message);
44
+ }
45
+ }
46
+ } else {
47
+ console.warn('[better-auth-studio] ⚠ Warning: Public directory not found. Studio UI may not work correctly.');
48
+ console.warn('[better-auth-studio] Please report this issue at: https://github.com/better-auth/better-auth-studio/issues');
49
+ }
50
+
51
+ function copyRecursive(src, dest) {
52
+ if (!fs.existsSync(dest)) {
53
+ fs.mkdirSync(dest, { recursive: true });
54
+ }
55
+
56
+ const entries = fs.readdirSync(src, { withFileTypes: true });
57
+
58
+ for (const entry of entries) {
59
+ const srcPath = path.join(src, entry.name);
60
+ const destPath = path.join(dest, entry.name);
61
+
62
+ if (entry.isDirectory()) {
63
+ copyRecursive(srcPath, destPath);
64
+ } else {
65
+ fs.copyFileSync(srcPath, destPath);
66
+ }
67
+ }
68
+ }
69
+