pgserve 0.1.1 → 0.1.4

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.
package/Makefile CHANGED
@@ -157,6 +157,9 @@ publish: check-git check-npm check-files ## 🚀 Publish to npm (auto-bumps vers
157
157
  @echo "$(CYAN)Current version: v$(VERSION)$(RESET)"
158
158
  @echo ""
159
159
  @echo "$(CYAN)📈 Bumping patch version...$(RESET)"
160
+ @NEW_VER=$$(node -e "const p=require('./package.json'); const v=p.version.split('.'); v[2]=parseInt(v[2])+1; console.log(v.join('.'))"); \
161
+ git tag -d "v$$NEW_VER" 2>/dev/null || true; \
162
+ git push origin --delete "v$$NEW_VER" 2>/dev/null || true
160
163
  @npm version patch -m "chore: bump version to %s"
161
164
  @NEW_VERSION=$$(grep '"version"' package.json | head -1 | sed 's/.*"version": "\(.*\)".*/\1/'); \
162
165
  echo "$(GREEN)✅ Version bumped to $$NEW_VERSION$(RESET)"; \
package/README.md CHANGED
@@ -314,7 +314,7 @@ Built on top of:
314
314
 
315
315
  ## 📧 Support
316
316
 
317
- - **Issues**: [GitHub Issues](https://github.com/namastexlabs/pglite-embedded-server/issues)
317
+ - **Issues**: [GitHub Issues](https://github.com/namastexlabs/pgserve/issues)
318
318
  - **Email**: labs@namastex.com
319
319
  - **Website**: [namastex.com](https://namastex.com)
320
320
 
@@ -57,10 +57,9 @@ COMMANDS:
57
57
 
58
58
  router Start multi-tenant router (single port, auto-provision)
59
59
  --port <number> PostgreSQL port (default: 8432)
60
- --dir <path> Base directory for databases (default: ./data)
60
+ --data <path> Base directory for databases (enables persistence)
61
61
  --max <number> Max concurrent databases (default: 100)
62
62
  --log <level> Log level: error, warn, info, debug (default: info)
63
- --memory Use in-memory databases (ephemeral, for testing)
64
63
  --no-provision Disable auto-provisioning
65
64
 
66
65
  📦 LEGACY MODE (Single instance):
@@ -89,15 +88,18 @@ COMMANDS:
89
88
  EXAMPLES:
90
89
  🚀 Multi-tenant mode (RECOMMENDED):
91
90
 
92
- # Start router on default port 8432
93
- pgserve router
91
+ # Start router (in-memory mode, default)
92
+ pgserve
94
93
 
95
- # Start on custom port with custom data directory
96
- pgserve router --port 8433 --dir /var/lib/pglite
94
+ # Start with persistent storage
95
+ pgserve --data ./data
96
+
97
+ # Custom port with persistence
98
+ pgserve --port 8433 --data /var/lib/pglite
97
99
 
98
100
  # Connect clients:
99
- # postgresql://localhost:8432/user123 → auto-creates ./data/user123/
100
- # postgresql://localhost:8432/app456 → auto-creates ./data/app456/
101
+ # postgresql://localhost:8432/user123 → in-memory db "user123"
102
+ # postgresql://localhost:8432/app456 → in-memory db "app456"
101
103
 
102
104
  📦 Legacy mode:
103
105
 
@@ -352,16 +354,15 @@ async function cmdRouter() {
352
354
  const portIndex = args.indexOf('--port');
353
355
  const port = portIndex >= 0 ? parseInt(args[portIndex + 1], 10) : 8432;
354
356
 
355
- const dirIndex = args.indexOf('--dir');
356
- const dataDir = dirIndex >= 0 ? args[dirIndex + 1] : './data';
357
+ const dataIndex = args.indexOf('--data');
358
+ const dataDir = dataIndex >= 0 ? args[dataIndex + 1] : null;
359
+ const memoryMode = dataDir === null;
357
360
 
358
361
  const maxIndex = args.indexOf('--max');
359
362
  const maxInstances = maxIndex >= 0 ? parseInt(args[maxIndex + 1], 10) : 100;
360
363
 
361
364
  const logIndex = args.indexOf('--log');
362
365
  const logLevel = logIndex >= 0 ? args[logIndex + 1] : 'info';
363
-
364
- const memoryMode = args.includes('--memory');
365
366
  const autoProvision = !args.includes('--no-provision');
366
367
 
367
368
  try {
@@ -1,10 +1,10 @@
1
1
  module.exports = {
2
2
  apps: [
3
3
  {
4
- name: 'PGlite Local Server',
4
+ name: 'pgserve',
5
5
  script: './bin/pglite-server.js',
6
- args: 'start ./data/genieos-local --port 12000 --log info',
7
- cwd: '/home/namastex/dev/pglite-embedded-server',
6
+ args: 'router --port 8432',
7
+ cwd: '/home/namastex/dev/pgserve',
8
8
  interpreter: 'node',
9
9
  instances: 1,
10
10
  autorestart: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pgserve",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "description": "Multi-instance PostgreSQL embedded server using PGlite - zero config, auto-port allocation, perfect for development and embedded apps",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -25,12 +25,12 @@
25
25
  "license": "MIT",
26
26
  "repository": {
27
27
  "type": "git",
28
- "url": "https://github.com/namastexlabs/pglite-embedded-server.git"
28
+ "url": "https://github.com/namastexlabs/pgserve.git"
29
29
  },
30
30
  "bugs": {
31
- "url": "https://github.com/namastexlabs/pglite-embedded-server/issues"
31
+ "url": "https://github.com/namastexlabs/pgserve/issues"
32
32
  },
33
- "homepage": "https://github.com/namastexlabs/pglite-embedded-server#readme",
33
+ "homepage": "https://github.com/namastexlabs/pgserve#readme",
34
34
  "dependencies": {
35
35
  "@electric-sql/pglite": "^0.3.14",
36
36
  "@electric-sql/pglite-socket": "^0.0.19",
package/src/protocol.js CHANGED
@@ -176,6 +176,9 @@ export async function readStartupMessage(socket) {
176
176
  socket.on('data', onData);
177
177
  socket.on('error', onError);
178
178
 
179
+ // Resume socket AFTER listeners are set up (prevents race condition)
180
+ socket.resume();
181
+
179
182
  // Timeout after 5 seconds
180
183
  setTimeout(() => {
181
184
  if (resolved) return;
package/src/router.js CHANGED
@@ -152,8 +152,8 @@ export class MultiTenantRouter extends EventEmitter {
152
152
  // Track connection
153
153
  this.connections.add(socket);
154
154
 
155
- // Resume socket (was paused on connect)
156
- socket.resume();
155
+ // NOTE: Don't resume here - let readStartupMessage() resume after setting up listeners
156
+ // This prevents race condition where data arrives before listener is attached
157
157
 
158
158
  let dbName = null;
159
159
  let handler = null;