diff --git a/README.md b/README.md index 47c03f60..a8ec188a 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,6 @@ PUBLIC_GRAPHQL_ENDPOINT=api.mycompany.com:443 turbo dev To update the packages to their latest versions in `package.json` ```shell -# TODO: not at available for pnpm pnpm up --latest -r pnpm audit --fix ``` diff --git a/apps/console-fb/package.json b/apps/console-fb/package.json index e4ffe1e8..60107d47 100644 --- a/apps/console-fb/package.json +++ b/apps/console-fb/package.json @@ -27,36 +27,36 @@ "generate": "concurrently pnpm:generate:*" }, "devDependencies": { - "@auth/core": "0.20.0", - "@auth/hasura-adapter": "0.2.13", - "@auth/sveltekit": "0.5.2", + "@auth/core": "0.21.0", + "@auth/hasura-adapter": "0.2.14", + "@auth/sveltekit": "0.6.0", "@ethercorps/sveltekit-og": "3.0.0", "@neoconfetti/svelte": "2.2.1", "@neodrag/svelte": "2.0.3", "@popperjs/core": "2.11.8", - "@skeletonlabs/skeleton": "2.7.0", + "@skeletonlabs/skeleton": "2.7.1", "@spectacular/eslint-config": "workspace:*", "@spectacular/prettier-config": "workspace:*", "@spectacular/typescript-config": "workspace:*", "@spectacular/utils": "workspace:*", "@svelte-put/resize": "3.0.0", "@sveltejs/adapter-auto": "3.1.0", - "@sveltejs/adapter-node": "3.0.0", - "@sveltejs/adapter-vercel": "4.0.4", + "@sveltejs/adapter-node": "3.0.1", + "@sveltejs/adapter-vercel": "4.0.5", "@sveltejs/enhanced-img": "0.1.8", - "@sveltejs/kit": "2.3.2", + "@sveltejs/kit": "2.3.3", "@sveltejs/vite-plugin-svelte": "3.0.1", "@tailwindcss/container-queries": "0.1.1", "@testing-library/jest-dom": "6.2.0", "@testing-library/svelte": "4.0.5", "@types/gtag.js": "0.0.18", "@types/js-cookie": "3.0.6", - "@types/node": "20.11.3", + "@types/node": "20.11.5", "@typescript-eslint/eslint-plugin": "6.19.0", "@typescript-eslint/parser": "6.19.0", "@vercel/analytics": "1.1.1", "@vite-pwa/sveltekit": "0.3.0", - "@vitest/coverage-v8": "1.2.0", + "@vitest/coverage-v8": "1.2.1", "autoprefixer": "10.4.16", "c8": "9.1.0", "cross-fetch": "4.0.0", @@ -80,13 +80,13 @@ "js-cookie": "3.0.5", "jsdom": "23.2.0", "layercake": "8.0.2", - "msw": "2.1.0", + "msw": "2.1.2", "postcss": "8.4.33", "postcss-preset-env": "9.3.0", - "prettier": "3.2.2", + "prettier": "3.2.4", "prettier-plugin-svelte": "3.1.2", "prettier-plugin-tailwindcss": "0.5.11", - "svelte": "4.2.8", + "svelte": "4.2.9", "svelte-adapter-bun": "0.5.1", "svelte-check": "3.6.3", "svelte-headless-table": "0.18.1", @@ -94,7 +94,7 @@ "svelte-select": "5.8.3", "svelte-time-distance": "0.0.3", "sveltekit-flash-message": "2.3.1", - "sveltekit-rate-limiter": "0.4.2", + "sveltekit-rate-limiter": "0.4.3", "sveltekit-superforms": "1.13.3", "sveltekit-view-transition": "0.5.3", "tailwind-merge": "2.2.0", @@ -105,13 +105,13 @@ "vite": "5.0.11", "vite-plugin-pwa": "0.17.4", "vite-plugin-tailwind-purgecss": "0.2.0", - "vitest": "1.2.0", + "vitest": "1.2.1", "workbox-window": "7.0.0", "zod": "3.22.4" }, "optionalDependencies": { - "@playwright/test": "1.40.1", - "@vitest/ui": "1.2.0" + "@playwright/test": "1.41.0", + "@vitest/ui": "1.2.1" }, "dependencies": { "cookie": "0.6.0" diff --git a/apps/console-sc/package.json b/apps/console-sc/package.json index 86e2e65d..980eea87 100644 --- a/apps/console-sc/package.json +++ b/apps/console-sc/package.json @@ -25,13 +25,13 @@ "@spectacular/utils": "workspace:*", "@sveltejs/adapter-auto": "3.1.0", "@sveltejs/enhanced-img": "0.1.8", - "@sveltejs/kit": "2.3.2", + "@sveltejs/kit": "2.3.3", "@sveltejs/vite-plugin-svelte": "3.0.1", "@tailwindcss/container-queries": "0.1.1", "@tailwindcss/forms": "0.5.7", "@tailwindcss/typography": "0.5.10", "@types/eslint": "8.56.2", - "@types/node": "20.11.3", + "@types/node": "20.11.5", "@typescript-eslint/eslint-plugin": "6.19.0", "@typescript-eslint/parser": "6.19.0", "@vincjo/datatables": "1.14.2", @@ -44,17 +44,17 @@ "eslint-config-prettier": "9.1.0", "eslint-plugin-svelte": "2.35.1", "formsnap": "0.4.2", - "lucide-svelte": "0.309.0", + "lucide-svelte": "0.311.0", "postcss": "8.4.33", "postcss-import": "16.0.0", "postcss-load-config": "5.0.2", "postcss-nested": "6.0.1", - "prettier": "3.2.2", + "prettier": "3.2.4", "prettier-plugin-svelte": "3.1.2", "prettier-plugin-tailwindcss": "0.5.11", - "svelte": "4.2.8", + "svelte": "4.2.9", "svelte-check": "3.6.3", - "sveltekit-rate-limiter": "0.4.2", + "sveltekit-rate-limiter": "0.4.3", "sveltekit-superforms": "1.13.3", "sveltekit-view-transition": "0.5.3", "tailwind-merge": "2.2.0", @@ -66,12 +66,12 @@ "typescript": "5.3.3", "vite": "5.0.11", "vite-plugin-tailwind-purgecss": "0.2.0", - "vite-tsconfig-paths": "4.2.3", - "vitest": "1.2.0", + "vite-tsconfig-paths": "4.3.1", + "vitest": "1.2.1", "zod": "3.22.4" }, "optionalDependencies": { - "@playwright/test": "1.40.1", - "@vitest/ui": "1.2.0" + "@playwright/test": "1.41.0", + "@vitest/ui": "1.2.1" } } diff --git a/apps/console/.env.example b/apps/console/.env.example index 239d15e9..39646c35 100644 --- a/apps/console/.env.example +++ b/apps/console/.env.example @@ -1,4 +1,8 @@ VERCEL_ENV=dev +# RATE_LIMIT_SECRET: On UNIX systems you can use `openssl rand -hex 32` or +# https://generate-secret.vercel.app/64 to generate a secret. +# or copy (openssl rand -hex 64) output here +RATE_LIMIT_SECRET='fill-me-in' ### Privacy and Terms ### PUBLIC_TERMS_PRIVACY_COMPANY='Your Company' diff --git a/apps/console/package.json b/apps/console/package.json index e2455dbb..16931707 100644 --- a/apps/console/package.json +++ b/apps/console/package.json @@ -28,10 +28,10 @@ "@floating-ui/dom": "1.5.4", "@fontsource-variable/inter": "5.0.16", "@inlang/cli": "2.4.0", - "@inlang/paraglide-js": "1.2.0", - "@inlang/paraglide-js-adapter-vite": "1.2.2", + "@inlang/paraglide-js": "1.2.1", + "@inlang/paraglide-js-adapter-vite": "1.2.4", "@nhost/nhost-js": "3.0.1", - "@skeletonlabs/skeleton": "2.7.0", + "@skeletonlabs/skeleton": "2.7.1", "@skeletonlabs/tw-plugin": "0.3.1", "@spectacular/eslint-config": "workspace:*", "@spectacular/prettier-config": "workspace:*", @@ -39,23 +39,23 @@ "@spectacular/typescript-config": "workspace:*", "@spectacular/utils": "workspace:*", "@sveltejs/adapter-auto": "3.1.0", - "@sveltejs/adapter-node": "3.0.0", - "@sveltejs/adapter-vercel": "4.0.4", + "@sveltejs/adapter-node": "3.0.1", + "@sveltejs/adapter-vercel": "4.0.5", "@sveltejs/enhanced-img": "0.1.8", - "@sveltejs/kit": "2.3.2", + "@sveltejs/kit": "2.3.3", "@sveltejs/vite-plugin-svelte": "3.0.1", "@tailwindcss/container-queries": "0.1.1", "@tailwindcss/forms": "0.5.7", "@tailwindcss/typography": "0.5.10", "@types/d3-scale": "4.0.8", "@types/eslint": "8.56.2", - "@types/node": "20.11.3", + "@types/node": "20.11.5", "@typescript-eslint/eslint-plugin": "6.19.0", "@typescript-eslint/parser": "6.19.0", "@vercel/analytics": "1.1.1", "@vincjo/datatables": "1.14.2", - "@vitest/coverage-v8": "1.2.0", - "@xyflow/svelte": "0.0.33", + "@vitest/coverage-v8": "1.2.1", + "@xyflow/svelte": "0.0.34", "autoprefixer": "10.4.16", "d3-array": "3.2.4", "d3-scale": "4.0.2", @@ -69,19 +69,19 @@ "houdini": "1.2.36", "houdini-svelte": "1.2.36", "layerchart": "0.27.1", - "lucide-svelte": "0.309.0", + "lucide-svelte": "0.311.0", "postcss": "8.4.33", - "prettier": "3.2.2", + "prettier": "3.2.4", "prettier-plugin-svelte": "3.1.2", "prettier-plugin-tailwindcss": "0.5.11", - "svelte": "4.2.8", + "svelte": "4.2.9", "svelte-adapter-bun": "0.5.1", "svelte-check": "3.6.3", "svelte-meta-tags": "3.1.0", "svelte-ux": "0.57.3", "sveltekit-flash-message": "2.3.1", - "sveltekit-rate-limiter": "0.4.2", - "sveltekit-superforms": "2.0.0-alpha.18", + "sveltekit-rate-limiter": "0.4.3", + "sveltekit-superforms": "2.0.0-alpha.22", "sveltekit-view-transition": "0.5.3", "tailwind-merge": "2.2.0", "tailwind-variants": "0.1.20", @@ -91,13 +91,13 @@ "typescript": "5.3.3", "vite": "5.0.11", "vite-plugin-tailwind-purgecss": "0.2.0", - "vite-tsconfig-paths": "4.2.3", - "vitest": "1.2.0", + "vite-tsconfig-paths": "4.3.1", + "vitest": "1.2.1", "xstate": "4.38.3", "zod": "3.22.4" }, "optionalDependencies": { - "@playwright/test": "1.40.1", - "@vitest/ui": "1.2.0" + "@playwright/test": "1.41.0", + "@vitest/ui": "1.2.1" } } diff --git a/apps/console/project.inlang/project_id b/apps/console/project.inlang/project_id new file mode 100644 index 00000000..2e8c2f67 --- /dev/null +++ b/apps/console/project.inlang/project_id @@ -0,0 +1 @@ +e6731b45f2ca8b05c752c4fecae9b158497987233dcfaa0d6965a2672be8ea04 \ No newline at end of file diff --git a/apps/console/src/lib/server/limiter/limiter.ts b/apps/console/src/lib/server/limiter/limiter.ts index 30778847..06fedcc3 100644 --- a/apps/console/src/lib/server/limiter/limiter.ts +++ b/apps/console/src/lib/server/limiter/limiter.ts @@ -1,7 +1,7 @@ -import { RateLimiter } from 'sveltekit-rate-limiter/server'; -import { RATE_LIMITER_KEY } from '$env/static/private'; +import { RetryAfterRateLimiter } from 'sveltekit-rate-limiter/server'; +import { RATE_LIMIT_SECRET } from '$env/static/private'; -export const limiter = new RateLimiter({ +export const limiter = new RetryAfterRateLimiter({ // A rate is defined as [number, unit] rates: { IP: [10, 'h'], // IP address limiter @@ -9,7 +9,7 @@ export const limiter = new RateLimiter({ cookie: { // Cookie limiter name: 'limiterid', // Unique cookie name for this limiter - secret: RATE_LIMITER_KEY, // Use $env/static/private + secret: RATE_LIMIT_SECRET, // Use $env/static/private rate: [2, 'm'], preflight: true // Require preflight call (see load function) } diff --git a/apps/console/src/lib/server/middleware/links.ts b/apps/console/src/lib/server/middleware/links.ts deleted file mode 100644 index 26296bb4..00000000 --- a/apps/console/src/lib/server/middleware/links.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { Handle } from '@sveltejs/kit'; -import { redirect } from '@sveltejs/kit'; -import { Logger } from '@spectacular/utils'; -export const log = new Logger('server:middleware:dead-links'); - -const dead_links_redirect_to: Record = { - '/api/fragments': '/api/fragment', - '/api/vite': '/api/vite-plugin', - '/blog/feed': ' /blog/feed.xml', - '/api/cli': '/api/command-line', - '/intro/fragments': '/intro/reusing-parts-of-a-query', - '/api/graphql': '/api/graphql-magic', - '/guides/plugin': '/guides/plugin-directory' -}; -/** - * Handle Dead Links - */ -export const links = (async ({ event, resolve }) => { - // If we have a value, let's redirect - const redirectTo = dead_links_redirect_to[event.url.pathname]; - if (redirectTo) { - log.debug(`redirecting ${event.url.pathname} to ${redirectTo}`); - redirect(303, `${event.url.origin}${redirectTo}`); - } - const result = await resolve(event); - return result; -}) satisfies Handle; diff --git a/apps/console/src/lib/server/middleware/rate-limiter.ts b/apps/console/src/lib/server/middleware/rate-limiter.ts new file mode 100644 index 00000000..5e89cf52 --- /dev/null +++ b/apps/console/src/lib/server/middleware/rate-limiter.ts @@ -0,0 +1,44 @@ +import type { Handle } from '@sveltejs/kit'; +import { Logger, startsWith } from '@spectacular/utils'; +import { dev } from '$app/environment'; +import { limiter } from '$lib/server/limiter/limiter'; + +/** + * Rate Limit some routes + * This should be the first middleware. + */ +const log = new Logger('server:middleware:limiter'); +const rateLimitedPaths = ['/auth/sign-up', '/auth/forgot-password', '/auth/change-password', '/downlaod']; + +export const rateLimiter = (async ({ event, resolve }) => { + const { + url: { pathname } + } = event; + + // bypass limiter for all protected routes. + if (dev || !startsWith(pathname, rateLimitedPaths)) { + return await resolve(event); + } + + await limiter.cookieLimiter?.preflight(event); + + const status = await limiter.check(event); + log.debug({ status }); + + console.log(status); + if (status.limited) { + event.setHeaders({ + 'Retry-After': status.retryAfter.toString() + }); + return new Response('Too many requests', { + status: 429, + headers: { + 'Retry-After': status.retryAfter.toString() + }, + statusText: 'You have made too many requests, please try again later.' + }); + } + + const response = await resolve(event); + return response; +}) satisfies Handle; diff --git a/apps/console/src/routes/[[lang=lang]]/auth/sign-up/+page.server.ts b/apps/console/src/routes/[[lang=lang]]/auth/sign-up/+page.server.ts index 2941c4dc..2a608d7c 100644 --- a/apps/console/src/routes/[[lang=lang]]/auth/sign-up/+page.server.ts +++ b/apps/console/src/routes/[[lang=lang]]/auth/sign-up/+page.server.ts @@ -1,4 +1,4 @@ -import { fail, error as swError } from '@sveltejs/kit'; +import { fail } from '@sveltejs/kit'; import { redirect as redirectWithFlash } from 'sveltekit-flash-message/server'; import { message, setError, superValidate } from 'sveltekit-superforms'; import { zod } from 'sveltekit-superforms/adapters'; @@ -40,13 +40,25 @@ export const actions = { cookies, locals: { lang, nhost } } = event; - // Every call to `isLimited` counts as a hit towards the rate limit for the event. - if (await limiter.isLimited(event)) swError(429); const form = await superValidate(request, zod(signUpSchema)); + const status = await limiter.check(event); + if (status.limited) { + event.setHeaders({ + 'Retry-After': status.retryAfter.toString() + }); + return message( + form, + { + type: 'error', + message: `Rate limit has been reached. Please retry after ${status.retryAfter} seconds` + }, + { status: 429 } + ); + } + log.debug({ lang, nhost }); - log.debug('raw form:', form); // await sleep(8000) if (!form.valid) return fail(400, { form }); diff --git a/apps/docs/README.md b/apps/docs/README.md index 94f75025..c19bf17a 100644 --- a/apps/docs/README.md +++ b/apps/docs/README.md @@ -41,14 +41,14 @@ Static assets, like favicons, can be placed in the `public/` directory. All commands are run from the root of the project, from a terminal: -| Command | Action | -| :------------------------- | :----------------------------------------------- | -| `pnpm install` | Installs dependencies | -| `turbo dev` | Starts local dev server at `localhost:4321` | -| `turbo build` | Build your production site to `./dist/` | -| `turbo preview` | Preview your build locally, before deploying | -| `turbo astro ...` | Run CLI commands like `astro add`, `astro check` | -| `turbo astro -- --help` | Get help using the Astro CLI | +| Command | Action | +| :---------------------- | :----------------------------------------------- | +| `pnpm install` | Installs dependencies | +| `turbo dev` | Starts local dev server at `localhost:4321` | +| `turbo build` | Build your production site to `./dist/` | +| `turbo preview` | Preview your build locally, before deploying | +| `turbo astro ...` | Run CLI commands like `astro add`, `astro check` | +| `turbo astro -- --help` | Get help using the Astro CLI | ## 👀 Want to learn more? diff --git a/apps/docs/package.json b/apps/docs/package.json index 0a70bec1..72ff73d4 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -23,7 +23,7 @@ "@astrojs/vercel": "6.1.4", "@fontsource-variable/inter": "5.0.16", "@fontsource/source-code-pro": "5.0.16", - "astro": "4.1.2", + "astro": "4.1.3", "sharp": "0.33.2", "tailwindcss": "3.4.1", "typescript": "5.3.3" diff --git a/apps/nhapp/package.json b/apps/nhapp/package.json index 751696f1..e500bfc3 100644 --- a/apps/nhapp/package.json +++ b/apps/nhapp/package.json @@ -15,10 +15,10 @@ }, "devDependencies": { "@nhost/nhost-js": "3.0.1", - "@playwright/test": "1.40.1", + "@playwright/test": "1.41.0", "@sveltejs/adapter-auto": "3.1.0", "@sveltejs/enhanced-img": "0.1.8", - "@sveltejs/kit": "2.3.2", + "@sveltejs/kit": "2.3.3", "@sveltejs/vite-plugin-svelte": "3.0.1", "@types/js-cookie": "3.0.6", "autoprefixer": "10.4.16", @@ -26,21 +26,21 @@ "eslint-config-prettier": "9.1.0", "eslint-plugin-svelte": "2.35.1", "postcss": "8.4.33", - "prettier": "3.2.2", + "prettier": "3.2.4", "prettier-plugin-svelte": "3.1.2", - "svelte": "4.2.8", + "svelte": "4.2.9", "svelte-check": "3.6.3", "tailwindcss": "3.4.1", "typescript": "5.3.3", "vite": "5.0.11", - "vitest": "1.2.0" + "vitest": "1.2.1" }, "dependencies": { "@apollo/client": "3.8.9", "graphql": "16.8.1", "graphql-tag": "2.12.6", "js-cookie": "3.0.5", - "playwright": "1.40.1", + "playwright": "1.41.0", "react": "18.2.0", "uuid": "9.0.1", "xstate": "4.38.3" diff --git a/apps/playground/package.json b/apps/playground/package.json index 29c7cc28..71301993 100644 --- a/apps/playground/package.json +++ b/apps/playground/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@floating-ui/dom": "1.5.4", "@fontsource-variable/inter": "5.0.16", - "@skeletonlabs/skeleton": "2.7.0", + "@skeletonlabs/skeleton": "2.7.1", "@skeletonlabs/tw-plugin": "0.3.1", "@spectacular/eslint-config": "workspace:*", "@spectacular/prettier-config": "workspace:*", @@ -33,10 +33,10 @@ "@spectacular/typescript-config": "workspace:*", "@spectacular/utils": "workspace:*", "@sveltejs/adapter-auto": "3.1.0", - "@sveltejs/adapter-node": "3.0.0", - "@sveltejs/adapter-vercel": "4.0.4", + "@sveltejs/adapter-node": "3.0.1", + "@sveltejs/adapter-vercel": "4.0.5", "@sveltejs/enhanced-img": "0.1.8", - "@sveltejs/kit": "2.3.2", + "@sveltejs/kit": "2.3.3", "@sveltejs/vite-plugin-svelte": "3.0.1", "@tailwindcss/container-queries": "0.1.1", "@tailwindcss/forms": "0.5.7", @@ -45,13 +45,13 @@ "@tsparticles/slim": "3.1.0", "@tsparticles/svelte": "3.0.0", "@types/d3-scale": "4.0.8", - "@types/node": "20.11.3", + "@types/node": "20.11.5", "@typescript-eslint/eslint-plugin": "6.19.0", "@typescript-eslint/parser": "6.19.0", "@vercel/analytics": "1.1.1", "@vincjo/datatables": "1.14.2", - "@vitest/coverage-v8": "1.2.0", - "@xyflow/svelte": "0.0.33", + "@vitest/coverage-v8": "1.2.1", + "@xyflow/svelte": "0.0.34", "autoprefixer": "10.4.16", "d3-array": "3.2.4", "d3-scale": "4.0.2", @@ -63,18 +63,18 @@ "eslint-plugin-svelte": "2.35.1", "formsnap": "0.4.2", "layerchart": "0.27.1", - "lucide-svelte": "0.309.0", + "lucide-svelte": "0.311.0", "postcss": "8.4.33", - "prettier": "3.2.2", + "prettier": "3.2.4", "prettier-plugin-svelte": "3.1.2", "prettier-plugin-tailwindcss": "0.5.11", - "svelte": "4.2.8", + "svelte": "4.2.9", "svelte-adapter-bun": "0.5.1", "svelte-check": "3.6.3", "svelte-meta-tags": "3.1.0", "svelte-ux": "0.57.3", "sveltekit-flash-message": "2.3.1", - "sveltekit-rate-limiter": "0.4.2", + "sveltekit-rate-limiter": "0.4.3", "sveltekit-superforms": "1.13.3", "sveltekit-view-transition": "0.5.3", "tailwind-merge": "2.2.0", @@ -86,12 +86,12 @@ "typescript": "5.3.3", "vite": "5.0.11", "vite-plugin-tailwind-purgecss": "0.2.0", - "vite-tsconfig-paths": "4.2.3", - "vitest": "1.2.0", + "vite-tsconfig-paths": "4.3.1", + "vitest": "1.2.1", "zod": "3.22.4" }, "optionalDependencies": { - "@playwright/test": "1.40.1", - "@vitest/ui": "1.2.0" + "@playwright/test": "1.41.0", + "@vitest/ui": "1.2.1" } } diff --git a/apps/web/package.json b/apps/web/package.json index 151fc361..e544a250 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -22,7 +22,7 @@ "devDependencies": { "@astrojs/check": "0.4.1", "@astrojs/mdx": "2.0.4", - "@astrojs/partytown": "2.0.3", + "@astrojs/partytown": "2.0.4", "@astrojs/sitemap": "3.0.4", "@astrojs/starlight": "0.15.3", "@astrojs/svelte": "5.0.3", @@ -35,14 +35,14 @@ "@spectacular/typescript-config": "workspace:*", "@spectacular/utils": "workspace:*", "@tailwindcss/typography": "0.5.10", - "astro": "4.1.2", + "astro": "4.1.3", "astro-seo": "0.8.0", - "lucide-svelte": "0.309.0", + "lucide-svelte": "0.311.0", "mode-watcher": "0.1.2", - "svelte": "4.2.8", + "svelte": "4.2.9", "tailwind-merge": "2.2.0", "tailwindcss": "3.4.1", "typescript": "5.3.3", - "vitest": "1.2.0" + "vitest": "1.2.1" } } diff --git a/docs/nhost.md b/docs/nhost.md index e16924f3..4be9364f 100644 --- a/docs/nhost.md +++ b/docs/nhost.md @@ -40,12 +40,15 @@ nhost config example nhost config validate # Shows configuration after resolving secrets nhost config show -nhost config show subdomain local -nhost config show subdomain bggkthwysdvphygfecpa +nhost config show --subdomain local +# This command is mostly useful to verify configuration overlays. +nhost config show --subdomain bggkthwysdvphygfecpa # Get cloud configuration nhost config pull ``` +Refer: [configuration-overlays](https://docs.nhost.io/guides/cli/configuration-overlays) + #### Run ```shell diff --git a/nhost/nhost.toml b/nhost/nhost.toml index ea0405db..27edd1fd 100644 --- a/nhost/nhost.toml +++ b/nhost/nhost.toml @@ -215,6 +215,12 @@ version = '0.3.1' # the request can be validated. webhookSecret = '{{ secrets.GRAPHITE_WEBHOOK_SECRET }}' +[ai.resources] +[ai.resources.compute] +# Dedicated resources allocated for the service +cpu = 128 +memory = 256 + [ai.autoEmbeddings] # How often to run the job that keeps embeddings up to date synchPeriodMinutes = 5 @@ -225,10 +231,7 @@ apiKey = '{{ secrets.OPENAI_API_KEY }}' # OpenAI organization to use. organization = 'my-org' -[ai.resources.compute] -# Dedicated resources allocated for the service -cpu = 128 -memory = 256 + [observability] [observability.grafana] diff --git a/nhost/overlays/bggkthwysdvphygfecpa.json b/nhost/overlays/bggkthwysdvphygfecpa.json index 478bb7bf..1b730f81 100644 --- a/nhost/overlays/bggkthwysdvphygfecpa.json +++ b/nhost/overlays/bggkthwysdvphygfecpa.json @@ -25,5 +25,9 @@ { "op": "remove", "path": "/postgres/settings/maxReplicationSlots" + }, + { + "op": "remove", + "path": "/ai" } ] diff --git a/package.json b/package.json index 8816b036..8cc10301 100644 --- a/package.json +++ b/package.json @@ -65,12 +65,12 @@ "husky": "8.0.3", "lint-staged": "15.2.0", "markuplint": "3.15.0", - "prettier": "3.2.2", + "prettier": "3.2.4", "prettier-plugin-astro": "0.12.3", "prettier-plugin-svelte": "3.1.2", "prettier-plugin-tailwindcss": "0.5.11", "turbo": "1.11.3", - "vitest": "1.2.0" + "vitest": "1.2.1" }, "packageManager": "pnpm@8.9.0", "engines": { diff --git a/packages/skeleton-ui/components/form/text-field.svelte b/packages/skeleton-ui/components/form/text-field.svelte index d3746ba1..d43158d5 100644 --- a/packages/skeleton-ui/components/form/text-field.svelte +++ b/packages/skeleton-ui/components/form/text-field.svelte @@ -2,22 +2,25 @@ // Ref: https://github.com/hansaskov/my-skeleton-app/blob/master/src/lib/components/form/TextField.svelte import type { z, AnyZodObject } from 'zod'; import type { ZodValidation, FormPathLeaves } from 'sveltekit-superforms'; - import { formFieldProxy } from 'sveltekit-superforms/client'; -import type {SuperForm} from 'sveltekit-superforms/client'; + import { formFieldProxy } from 'sveltekit-superforms/client'; + import type { SuperForm } from 'sveltekit-superforms/client'; type T = $$Generic; export let form: SuperForm, App.Superforms.Message>; export let field: FormPathLeaves>; - // Hack to get the types working correctly: See github issue "https://github.com/ciscoheat/sveltekit-superforms/issues/260" - const { path, value, errors, constraints, } = formFieldProxy(form as SuperForm, unknown>, field); + // Hack to get the types working correctly: See github issue "https://github.com/ciscoheat/sveltekit-superforms/issues/260" + const { path, value, errors, constraints } = formFieldProxy( + form as SuperForm, unknown>, + field + ); export let titleName: string | undefined = undefined; export let useError = true; -