Conversation
dargmuesli
commented
Feb 20, 2026
- feat(postgraphile)!: upgrade to v5 #10
feat(postgraphile)!: upgrade to v5
## [2.0.0-beta.1](1.0.19...2.0.0-beta.1) (2026-02-20) ### ⚠ BREAKING CHANGES * **postgraphile:** upgrade to v5 ### Features * **postgraphile:** upgrade to v5 ([892c80b](892c80b))
## [2.0.0-beta.2](2.0.0-beta.1...2.0.0-beta.2) (2026-02-20) ### Bug Fixes * **postgres:** readd connection string ([f3f7d82](f3f7d82))
|
🎉 This PR is included in version 2.0.0-beta.2 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
## [2.0.0-beta.3](2.0.0-beta.2...2.0.0-beta.3) (2026-02-24) ### Bug Fixes * **postgis:** update plugin with geojson/srid fix ([59bf0c5](59bf0c5))
|
🎉 This PR is included in version 2.0.0-beta.3 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
## [2.0.0-beta.4](2.0.0-beta.3...2.0.0-beta.4) (2026-02-26) ### Bug Fixes * **grafast:** correct context claim value encoding ([369cfe9](369cfe9))
|
🎉 This PR is included in version 2.0.0-beta.4 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
There was a problem hiding this comment.
Pull request overview
This PR modernizes the container/image setup around PostGraphile v5 by introducing a TypeScript-based Graphile preset, JWT-aware request context, and updated tooling (pnpm, ESLint/Prettier, TS config) to support a v2 release line.
Changes:
- Add Graphile v5 preset/config with JWT verification and masked error shaping.
- Introduce TypeScript + ESLint/Prettier configuration and pnpm-based dependency management.
- Rework Dockerfile into a multi-stage build with separate lint/build/production stages and a runtime entrypoint.
Reviewed changes
Copilot reviewed 13 out of 17 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
Dockerfile |
New multi-stage build for dev/lint/build/prod PostGraphile image. |
docker-entrypoint.sh |
Loads env vars from /run/environment-variables and installs deps in non-prod. |
src/graphile.config.ts |
Defines the PostGraphile v5 preset (services, JWT signing options, dev flags). |
src/graphile.ts |
Implements Grafast context JWT verification + Grafserv error masking. |
src/environment.ts |
Adds helper to validate required environment variables. |
eslint.config.ts |
Adds ESLint flat config integrating TS + JSON + Prettier. |
tsconfig.json |
Adds strict TypeScript compiler options for the project. |
package.json |
Defines deps/scripts/tooling for pnpm/TypeScript/ESLint-based workflow. |
pnpm-lock.yaml |
Locks dependency graph for pnpm. |
graphile-postgis-v0.2.0.tgz |
Bundles a local @graphile/postgis plugin tarball dependency. |
.prettierrc.json |
Enables Prettier config (single quotes, no semicolons). |
.gitignore / .dockerignore |
Ignores node_modules and .eslintcache. |
.vscode/* |
Updates editor defaults and recommended extensions. |
.renovaterc.json |
Tweaks Renovate config inheritance. |
CHANGELOG.md |
Updates changelog entries for 2.0.0-beta.* releases. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
| ENV NODE_ENV=production | ||
|
|
||
| USER node | ||
| ENTRYPOINT ["docker-entrypoint.sh"] |
There was a problem hiding this comment.
In the production stage, ENTRYPOINT ["docker-entrypoint.sh"] likely won’t resolve because the script is copied into the WORKDIR and the WORKDIR isn’t on PATH. Use an absolute path (e.g. /srv/app/docker-entrypoint.sh) or a relative path that includes ./ so the container can start reliably.
| ENTRYPOINT ["docker-entrypoint.sh"] | |
| ENTRYPOINT ["/srv/app/docker-entrypoint.sh"] |
| USER node | ||
| ENTRYPOINT ["/srv/app/docker-entrypoint.sh"] |
There was a problem hiding this comment.
The development stage sets ENTRYPOINT ["/srv/app/docker-entrypoint.sh"] but the image never copies docker-entrypoint.sh into /srv/app (and /srv/app is declared as a VOLUME, so it will be empty by default). Unless callers always bind-mount the repository into /srv/app, the container will fail to start. Consider copying the entrypoint script into a non-volume path (or at least into /srv/app before declaring the volume).
| USER node | |
| ENTRYPOINT ["/srv/app/docker-entrypoint.sh"] | |
| COPY ./docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh | |
| USER node | |
| ENTRYPOINT ["docker-entrypoint.sh"] |
| plugins: { js }, | ||
| extends: ['js/recommended'], | ||
| }, | ||
| tseslint.configs.recommended, |
There was a problem hiding this comment.
tseslint.configs.recommended is typically a config array; placing it as a single element inside defineConfig([ ... ]) can produce a nested array and cause ESLint to ignore the config or error while loading. Prefer spreading it (e.g. ...tseslint.configs.recommended) or switching to tseslint.config(...) to compose configs.
| tseslint.configs.recommended, | |
| ...tseslint.configs.recommended, |
| "type": "module", | ||
| "version": "1.0.14" | ||
| } |
There was a problem hiding this comment.
The PR title/changelog indicate a v2 (2.0.0-beta.*) release line, but package.json still declares version 1.0.14. If this package is versioned/published (or referenced by tooling), this mismatch can confuse release automation and consumers; consider updating the version to match the intended release series or documenting that semantic-release tags are authoritative.
## [2.0.0-beta.5](2.0.0-beta.4...2.0.0-beta.5) (2026-03-14) ### Bug Fixes * **deps:** update postgraphile ([b84ee8c](b84ee8c))
|
🎉 This PR is included in version 2.0.0-beta.5 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
feat(jwt)!: use ecdsa key
## [2.0.0-beta.6](2.0.0-beta.5...2.0.0-beta.6) (2026-03-14) ### ⚠ BREAKING CHANGES * **jwt:** use ecdsa key ### Features * **jwt:** use ecdsa key ([65b70d1](65b70d1))
|
🎉 This PR is included in version 2.0.0-beta.6 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |