Files
gsc-web-kit/package.json
Claude 85a31eb3d6 feat(auth): force re-auth on failed refresh
requireAuth() now redirects on user.error so SSR catches stale sessions
that the cookie-presence middleware can't see. New SessionExpirationGuard
(client) listens on useSession() and calls signIn("keycloak") when the
JWT carries RefreshAccessTokenError or RefreshTokenMissing. Without it,
a tab idle past the Keycloak SSO lifetime sat on a dead accessToken
until a downstream API 401'd, with no UI-level redirect.

Bumps to 0.4.1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:44:29 +02:00

111 lines
3.0 KiB
JSON

{
"name": "@gsc/web-kit",
"version": "0.4.1",
"description": "GSC web app skeleton — layout, auth, data, forms, feedback, navigation, chrome. Built on @limitless/ui. Drop into a Next.js app and just write pages.",
"license": "MIT",
"type": "module",
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"dist",
"migrations"
],
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
},
"./css": "./dist/styles/index.css",
"./layout": {
"types": "./dist/layout/index.d.ts",
"import": "./dist/layout/index.js"
},
"./auth": {
"types": "./dist/auth/index.d.ts",
"import": "./dist/auth/index.js"
},
"./auth/server": {
"types": "./dist/auth/server.d.ts",
"import": "./dist/auth/server.js"
},
"./auth/middleware": {
"types": "./dist/auth/middleware.d.ts",
"import": "./dist/auth/middleware.js"
},
"./shell": {
"types": "./dist/shell/index.d.ts",
"import": "./dist/shell/index.js"
},
"./shell/server": {
"types": "./dist/shell/server.d.ts",
"import": "./dist/shell/server.js"
},
"./chrome": {
"types": "./dist/chrome/index.d.ts",
"import": "./dist/chrome/index.js"
},
"./data": {
"types": "./dist/data/index.d.ts",
"import": "./dist/data/index.js"
},
"./forms": {
"types": "./dist/forms/index.d.ts",
"import": "./dist/forms/index.js"
},
"./feedback": {
"types": "./dist/feedback/index.d.ts",
"import": "./dist/feedback/index.js"
},
"./navigation": {
"types": "./dist/navigation/index.d.ts",
"import": "./dist/navigation/index.js"
},
"./api": {
"types": "./dist/api/index.d.ts",
"import": "./dist/api/index.js"
},
"./utils": {
"types": "./dist/utils/index.d.ts",
"import": "./dist/utils/index.js"
},
"./migrations/nav-schema.up.sql": "./migrations/nav-schema.up.sql",
"./migrations/nav-apps-seed.up.sql": "./migrations/nav-apps-seed.up.sql",
"./migrations/nav-menu-items-template.sql": "./migrations/nav-menu-items-template.sql"
},
"sideEffects": [
"**/*.css"
],
"scripts": {
"build": "tsc -p tsconfig.json --noEmit false",
"postbuild": "node ./scripts/postbuild.cjs",
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@limitless/ui": "file:../limitless-ui",
"zod": "^3.23.0"
},
"peerDependencies": {
"@gsc/chat": "*",
"bootstrap": "^5.3.3",
"next": ">=15.0.0",
"next-auth": "^5.0.0-beta.25",
"next-intl": "^4.6.0",
"react": "^18.2.0 || ^19.0.0",
"react-dom": "^18.2.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"bootstrap": { "optional": true },
"@gsc/chat": { "optional": true }
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"next": "16.1.1",
"next-auth": "^5.0.0-beta.25",
"next-intl": "^4.6.1",
"typescript": "^5.4.0"
}
}