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 +3 -0
- package/README.md +1 -1
- package/bin/pglite-server.js +13 -12
- package/ecosystem.config.cjs +3 -3
- package/package.json +4 -4
- package/src/protocol.js +3 -0
- package/src/router.js +2 -2
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/
|
|
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
|
|
package/bin/pglite-server.js
CHANGED
|
@@ -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
|
-
--
|
|
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
|
|
93
|
-
pgserve
|
|
91
|
+
# Start router (in-memory mode, default)
|
|
92
|
+
pgserve
|
|
94
93
|
|
|
95
|
-
# Start
|
|
96
|
-
pgserve
|
|
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 →
|
|
100
|
-
# postgresql://localhost:8432/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
|
|
356
|
-
const dataDir =
|
|
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 {
|
package/ecosystem.config.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
apps: [
|
|
3
3
|
{
|
|
4
|
-
name: '
|
|
4
|
+
name: 'pgserve',
|
|
5
5
|
script: './bin/pglite-server.js',
|
|
6
|
-
args: '
|
|
7
|
-
cwd: '/home/namastex/dev/
|
|
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.
|
|
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/
|
|
28
|
+
"url": "https://github.com/namastexlabs/pgserve.git"
|
|
29
29
|
},
|
|
30
30
|
"bugs": {
|
|
31
|
-
"url": "https://github.com/namastexlabs/
|
|
31
|
+
"url": "https://github.com/namastexlabs/pgserve/issues"
|
|
32
32
|
},
|
|
33
|
-
"homepage": "https://github.com/namastexlabs/
|
|
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
|
-
//
|
|
156
|
-
|
|
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;
|