@powerhousedao/switchboard 6.0.0-dev.2 → 6.0.0-dev.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/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## 6.0.0-dev.4 (2026-01-16)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **switchboard:** add openssl for Prisma compatibility ([fe7235609](https://github.com/powerhouse-inc/powerhouse/commit/fe7235609))
6
+
7
+ ### ❤️ Thank You
8
+
9
+ - Frank
10
+
11
+ ## 6.0.0-dev.3 (2026-01-16)
12
+
13
+ ### 🚀 Features
14
+
15
+ - **docker:** optimize images with multi-stage builds ([d51a2df9d](https://github.com/powerhouse-inc/powerhouse/commit/d51a2df9d))
16
+
17
+ ### ❤️ Thank You
18
+
19
+ - Frank
20
+
1
21
  ## 6.0.0-dev.2 (2026-01-15)
2
22
 
3
23
  ### 🚀 Features
package/Dockerfile CHANGED
@@ -1,58 +1,80 @@
1
- FROM node:22 AS build
1
+ # Build stage
2
+ FROM node:22-alpine AS build
3
+
2
4
  WORKDIR /app
3
- COPY . .
4
- RUN chmod +x entrypoint.sh
5
+
6
+ # Install build dependencies
7
+ RUN apk add --no-cache python3 make g++ git bash \
8
+ && ln -sf /usr/bin/python3 /usr/bin/python
9
+
10
+ # Setup pnpm
5
11
  ENV PNPM_HOME="/pnpm"
6
12
  ENV PATH="$PNPM_HOME:$PATH"
7
- RUN corepack enable && corepack install --global pnpm@9.8.0
8
- ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
13
+ RUN corepack enable && corepack prepare pnpm@latest --activate
9
14
 
10
- ENV HUSKY=false
15
+ # Configure JSR registry
16
+ RUN pnpm config set @jsr:registry https://npm.jsr.io
11
17
 
12
- # Packages
13
- ENV PH_PACKAGES=""
18
+ # Build arguments
19
+ ARG TAG=latest
20
+ ARG PH_PACKAGES=""
14
21
 
15
- # Nx
16
- ENV NX_SOCKET_DIR="/tmp/nx"
17
- ENV NX_DAEMON=false
22
+ # Install ph-cmd and prisma
23
+ RUN pnpm add -g ph-cmd@$TAG prisma@5.17.0
18
24
 
19
- # Auth
20
- ENV PH_SWITCHBOARD_AUTH_ENABLED=false
21
- ENV PH_SWITCHBOARD_ADMINS_LIST="0x123,0x456"
22
- ENV PH_SWITCHBOARD_USERS_LIST="0x123,0x456"
23
- ENV PH_SWITCHBOARD_GUESTS_LIST="0x123,0x456"
25
+ # Initialize project based on tag
26
+ RUN case "$TAG" in \
27
+ *dev*) ph init project --dev --package-manager pnpm ;; \
28
+ *staging*) ph init project --staging --package-manager pnpm ;; \
29
+ *) ph init project --package-manager pnpm ;; \
30
+ esac
24
31
 
25
- # Database
26
- ENV PH_SWITCHBOARD_DATABASE_URL="dev.db"
27
- ENV PH_SWITCHBOARD_REDIS_URL=""
28
- ENV SKIP_DB_MIGRATIONS="false"
32
+ WORKDIR /app/project
29
33
 
30
- # Heroku Workaround
31
- ENV PORT=4001
34
+ # Install PH packages if provided
35
+ RUN if [ -n "$PH_PACKAGES" ]; then \
36
+ IFS=',' ; for pkg in $PH_PACKAGES; do \
37
+ echo "Installing package: $pkg"; \
38
+ ph install "$pkg"; \
39
+ done; \
40
+ fi
32
41
 
33
- # Switchboard
34
- ENV PH_SWITCHBOARD_PORT=$PORT
42
+ # Final stage - slim node image
43
+ FROM node:22-alpine
35
44
 
36
- # Other
37
- ARG TAG=latest
38
- ENV TAG=$TAG
39
- # RUN apk add --no-cache openssl
40
- # Configure JSR registry for @jsr scoped packages
45
+ WORKDIR /app
46
+
47
+ # Install runtime dependencies (curl for health checks, openssl for Prisma)
48
+ RUN apk add --no-cache curl openssl
49
+
50
+ # Setup pnpm
51
+ ENV PNPM_HOME="/pnpm"
52
+ ENV PATH="$PNPM_HOME:$PATH"
53
+ RUN corepack enable && corepack prepare pnpm@latest --activate
54
+
55
+ # Configure JSR registry
41
56
  RUN pnpm config set @jsr:registry https://npm.jsr.io
57
+
58
+ # Install ph-cmd and prisma globally (needed at runtime)
59
+ ARG TAG=latest
42
60
  RUN pnpm add -g ph-cmd@$TAG prisma@5.17.0
43
61
 
44
- RUN case "$TAG" in \
45
- *dev*) ph init project --dev --package-manager pnpm ;; \
46
- *staging*) ph init project --staging --package-manager pnpm ;; \
47
- *) ph init project --package-manager pnpm ;; \
48
- esac
62
+ # Copy built project from build stage
63
+ COPY --from=build /app/project /app/project
49
64
 
50
65
  WORKDIR /app/project
51
66
 
52
- # Install curl for health checks
53
- RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
67
+ # Copy entrypoint
68
+ COPY entrypoint.sh /app/entrypoint.sh
69
+ RUN chmod +x /app/entrypoint.sh
70
+
71
+ # Environment variables
72
+ ENV NODE_ENV=production
73
+ ENV PORT=3000
74
+ ENV DATABASE_URL=""
75
+ ENV SKIP_DB_MIGRATIONS="false"
54
76
 
55
- EXPOSE $PORT
77
+ EXPOSE ${PORT}
56
78
 
57
79
  HEALTHCHECK --interval=30s --timeout=3s --start-period=30s --retries=3 \
58
80
  CMD curl -f http://localhost:${PORT}/health || exit 1
package/entrypoint.sh CHANGED
@@ -1,22 +1,11 @@
1
1
  #!/bin/sh
2
2
  set -e
3
3
 
4
- if [ ! -z "$PH_PACKAGES" ]; then
5
- # Convert comma-separated list to space-separated
6
- PACKAGES=$(echo $PH_PACKAGES | tr ',' ' ')
7
- # Install each package
8
- for pkg in $PACKAGES; do
9
- echo "[entrypoint] Installing package: $pkg"
10
- ph install $pkg
11
- done
4
+ # Run Prisma db push if DATABASE_URL is postgres and migrations not skipped
5
+ if [ -n "$DATABASE_URL" ] && echo "$DATABASE_URL" | grep -q "^postgres" && [ "$SKIP_DB_MIGRATIONS" != "true" ]; then
6
+ echo "[entrypoint] Running Prisma db push..."
7
+ prisma db push --schema node_modules/document-drive/dist/prisma/schema.prisma --skip-generate
12
8
  fi
13
9
 
14
- # Check if DATABASE_URL starts with postgres and run Prisma db push
15
- if [ ! -z "$DATABASE_URL" ] && echo "$DATABASE_URL" | grep -q "^postgres" && [ "$SKIP_DB_MIGRATIONS" != "true" ]; then
16
- echo "[entrypoint] DATABASE_URL starts with postgres, running Prisma db push..."
17
- prisma db push --schema node_modules/document-drive/dist/prisma/schema.prisma --skip-generate
18
- fi
19
-
20
- echo "[entrypoint] Starting switchboard..."
21
- export SWITCHBOARD_PORT="${PORT:-4001}"
22
- ph switchboard --port $SWITCHBOARD_PORT
10
+ echo "[entrypoint] Starting switchboard on port ${PORT:-3000}..."
11
+ exec ph switchboard --port ${PORT:-3000}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powerhousedao/switchboard",
3
3
  "type": "module",
4
- "version": "6.0.0-dev.2",
4
+ "version": "6.0.0-dev.4",
5
5
  "main": "dist/src/index.js",
6
6
  "exports": {
7
7
  ".": {
@@ -42,12 +42,12 @@
42
42
  "kysely-pglite-dialect": "^1.1.1",
43
43
  "pg": "^8.13.0",
44
44
  "redis": "^4.7.0",
45
- "@powerhousedao/config": "6.0.0-dev.2",
46
- "@powerhousedao/reactor": "6.0.0-dev.2",
47
- "@powerhousedao/reactor-api": "6.0.0-dev.2",
48
- "@renown/sdk": "6.0.0-dev.2",
49
- "document-drive": "6.0.0-dev.2",
50
- "document-model": "6.0.0-dev.2"
45
+ "@powerhousedao/config": "6.0.0-dev.4",
46
+ "@powerhousedao/reactor": "6.0.0-dev.4",
47
+ "@powerhousedao/reactor-api": "6.0.0-dev.4",
48
+ "@renown/sdk": "6.0.0-dev.4",
49
+ "document-drive": "6.0.0-dev.4",
50
+ "document-model": "6.0.0-dev.4"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/express": "^4.17.25",