Commit Graph

32 Commits

Author SHA1 Message Date
BilalG1
b3d0ab66cc
fix(stack-shared): make process.env access browser-safe (#1391)
## Summary

- Bare `process.env.X` accesses in `stack-shared` throw `ReferenceError:
process is not defined` when the package is bundled into a browser app
without a `process` shim (e.g. a plain Vite app). The most reachable
offenders are in `StackAssertionError`'s constructor and
`schema-fields.ts`'s Neon Basic-auth validator, both of which can run on
the client during normal sign-in flows with `@stackframe/react`.
- Extracted a zero-dependency `getProcessEnv` helper at
`packages/stack-shared/src/utils/process-env.tsx` and routed the bare
references through it. Returns `undefined` when `process` is not
defined; otherwise behaves like a normal `process.env[name]` read, so
Next.js/webpack inlining is unchanged on the server.
- Touched: `schema-fields.ts:884` (`STACK_INTEGRATION_CLIENTS_CONFIG`),
`utils/errors.tsx:81` (`NEXT_PUBLIC_STACK_DEBUGGER_ON_ASSERTION_ERROR`),
`utils/promises.tsx` (`NODE_ENV` in `runAsynchronouslyWithAlert`),
`utils/esbuild.tsx:16` (`NODE_ENV`, also reordered the `typeof process`
guard so the env access is unreachable in browsers).

## Why a separate helper module

`utils/env.tsx` already exists but its `getEnvVariable` explicitly
throws in the browser, so it can't be reused here. The new module has
zero imports so it can be safely consumed from low-level utilities like
`errors.tsx` without creating a cycle (env.tsx ↔ errors.tsx).

## Test plan

- [x] `pnpm lint` passes
- [x] `pnpm typecheck` passes
- [ ] Reproduced the original failure in a Vite + `@stackframe/react`
app: sign-in flow logged `ReferenceError: process is not defined` from
`StackAssertionError`, plus `clientSecret must not be empty` cascading
from the same path
- [ ] Verify the same flow in a Vite app no longer throws once
`@stackframe/react` is rebuilt against this `stack-shared` change
- [ ] Confirm Next.js consumer behavior is unchanged (env vars still
inlined at build time for `NEXT_PUBLIC_*`)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Release Notes

* **Refactor**
* Improved environment variable handling across shared utilities for
enhanced browser compatibility and safety. Introduced a new utility for
dynamic, browser-safe environment variable access that prevents errors
in non-Node.js environments.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 10:59:49 -07:00
Konstantin Wohlwend
e24d47b80f Even more better error messages 2025-07-30 13:16:14 -07:00
Konstantin Wohlwend
dd8783af09 Docstring for captureError 2025-07-29 01:37:26 -07:00
Konstantin Wohlwend
fe5db59c30 Widget playground mobile mode
Some checks failed
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
Docker Emulator Test / docker (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Test / docker (push) Has been cancelled
Runs E2E API Tests / build (22.x) (push) Has been cancelled
Runs E2E API Tests with external source of truth / build (22.x) (push) Has been cancelled
Lint & build / lint_and_build (latest) (push) Has been cancelled
Dev Environment Test / restart-dev-and-test (push) Has been cancelled
Run setup tests / setup-tests (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
2025-07-14 20:04:43 -07:00
Konstantin Wohlwend
8717a70adc No more instanceof KnownError 2025-05-15 12:13:19 -07:00
Konstantin Wohlwend
b5069c4782 No more instanceof StatusError 2025-05-15 11:35:53 -07:00
Konsti Wohlwend
c9941762fb
Better RetryErrors (#553)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-04-04 09:40:28 -07:00
Konsti Wohlwend
f2f1b9df82
Tenancies (#418)
Co-authored-by: Zai Shi <zaishi00@outlook.com>
2025-02-07 22:54:04 -08:00
Konsti Wohlwend
cf95bb707f
Raw project query (#382) 2024-12-28 11:47:09 -08:00
Konstantin Wohlwend
eae6bc34d8 Improved error capturing
Some checks failed
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
Docker Build and Push / Docker Build and Push Server (push) Has been cancelled
Runs E2E API Tests / build (20.x) (push) Has been cancelled
Lint & build / lint_and_build (20.x) (push) Has been cancelled
Lint & build / lint_and_build (22.x) (push) Has been cancelled
Mirror main branch to main-mirror-for-wdb / lint_and_build (push) Has been cancelled
Publish Docs / run (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
2024-12-14 15:49:15 -08:00
Konstantin Wohlwend
c33ce8ab4f Retry Prisma transactions automatically 2024-12-12 13:34:42 -08:00
Konstantin Wohlwend
b0db0a5f78 StackAssertion cause is now in extraData 2024-12-11 17:36:43 -08:00
Konstantin Wohlwend
6bf2c2b33d Fix USER_AUTHENTICATION_REQUIRED error on signout 2024-12-11 14:46:17 -08:00
Konstantin Wohlwend
a03a7f503e Add docs for concatStacktraces 2024-11-19 22:51:37 +01:00
Konstantin Wohlwend
dd89cc501b Remove test error 2024-11-19 04:04:44 +01:00
Konstantin Wohlwend
539e10981e Concat runAsynchronously stacktraces 2024-11-19 03:53:48 +01:00
Konstantin Wohlwend
c182cebec6 MFA for non-password apps 2024-08-11 13:30:05 -07:00
Stan Wohlwend
009f62bde8 Improved error messages 2024-07-26 16:06:59 -07:00
Zai Shi
54027d58a2
New client (#135)
Co-authored-by: Konsti Wohlwend <n2d4xc@gmail.com>
2024-07-19 22:07:44 -07:00
Konsti Wohlwend
b0f233a44c
More backend endpoint implementations (#126)
Co-authored-by: Zai Shi <fomalhautb@users.noreply.github.com>
2024-07-13 22:04:53 -07:00
Konsti Wohlwend
53450206f5
Create users & auth endpoints in backend (#85) 2024-07-01 22:42:08 -07:00
Stan Wohlwend
d95696ee96 Refactor TokenStore into Session 2024-06-06 12:30:17 +02:00
Stan Wohlwend
a28e3b381a Admin access token expiration handling 2024-05-25 12:09:18 +02:00
Stan Wohlwend
dec622ed9e
CRUD schemas (#28) 2024-05-12 20:29:14 +02:00
Stan Wohlwend
9ff2cff5c5
Organizations & RBAC (#22)
* added organizations route

* added orgganizations/[orgId] and orgganizations/[orgId]/users routes

* added more routes

* restructured dashboard pages, added organization page

* fixed redirect bug

* updated sidebar

* added mock orgnizations

* fixed breadcrumbs

* added edit org modal

* added memeber table

* added permission table

* Orgs & perms backend

* Fix build errors

* updated permission ui

* org -> team for frontend

* added enable team UI

* Stack App for teams

* formatted schema

* renamed all orgs to teams

* fixed docusaurus bug

* disabled docusaurus build progress bar

* added member profile and direct permission to profile

* removed dead code, memberProfile -> member

* removed teams attribute from the user object

* added /teams endpoint

* added create team endpoint

* added add-user endpoint

* moved add-user

* added server side get teams

* updated schema formatting

* added team enabled endpoints

* fixed type error

* moved get current teams to current-user/teams

* improved interface

* added create team

* hooked up team to frontend

* added hooked up team name with team member page

* added list team users

* added useUsers to team object

* fixed list team user bug

* added team update

* added list permissions and use permission on app

* added create permission

* list permission

* added permission list

* added inherited permission list

* add edit permission model

* restructured permission graph

* updated style

* added delete permission

* fixed delete permission bug

* added inheritence update

* fixed await bug

* fixed selection bug

* added permission update

* fixed update bug

* fixed team update refresh

* added remove user from team

* restructured permission and permission definition

* updated permission definition structure

* updated list permissions and grant permissions

* fixed list user permissions

* added grant permission

* fixed list permission

* added direct option to list team use permission

* fixed bugs

* fixed bugs

* added revoke permission

* inherited from -> contains

* added client list permission

* restructured stack-app teams and permissions

* fixed server teams and permissions

* fixed bug

* fixed bugs

* added teams pages to demo

* added styled component compiler

* added list teams

* added join and leave teams

* fixed prisma onDelete

* fixed type bugs

* removed on permission change for now

* added member

* fixed user and server user

* fixed imports

* added create team

* added more content to demo

* fixed recursion bug

* fixed recursion stack out of bound bug

* removed teamsEnabled

* added create team on sign-up options

* added create team on signup

* queriable -> queryable, fixed migration file

* fixed migration file

* fixed demo build error

* fixed license accidental change

* fixed tab styling

* added required to create permission id

* added more ui error hints

* fixed seed wrong setting

* default team name

* improved permission list ui

* improved demo display

* Update README.md

---------

Co-authored-by: Zai Shi <zaishi00@outlook.com>
2024-05-08 12:43:56 +02:00
Stan Wohlwend
74f3fe2e49
Middleware support (#29) 2024-05-05 17:33:36 +02:00
Stan Wohlwend
02fe7bee2f StatusError name 2024-04-15 14:10:23 +02:00
Stan Wohlwend
ff3fb4a542 Remove unnecessary console.log 2024-04-14 21:54:44 +02:00
Stan Wohlwend
6fe5ca45eb Report all errors to Sentry 2024-04-14 13:32:31 +02:00
Stan Wohlwend
33823065b6 Rework known errors 2024-03-25 20:59:16 -07:00
Stan Wohlwend
1774908984
Initiate backend rework (#6) 2024-03-18 01:40:40 -07:00
Stan Wohlwend
ced0be74b3 Move code (initial commit) 2024-02-28 14:35:30 +01:00