storytellurx/vite.config.ts
Elias Rhouzlane 3cba5f2f83 chore: port to autokit 39
- Packages pinned at the latest release set (autokit 39.0.0, autokit-client-db 17.0.1,
  autokit-admin 24.2.0, autokit-admin-ai 4.4.4, autokit-ai 9.0.13, autokit-analytique 5.2.0,
  autokit-auth 17.6.4, autokit-auth-notification 5.2.4, autokit-media 9.7.4,
  autokit-migration 20.0.18, autokit-notification 14.1.1, autokit-operator 11.0.0, ui 4.0.1,
  media 2.2.0, kysely-sqlite-blob 0.6.0), one copy of each. The ffmpeg lazy-import patch moves
  to autokit-media 9.7.4 unchanged.
- Admin: createAdmin with the site's plugins indexed by admin.plugins(...), authored through
  src/plugins/program.ts; the create menu reads each table's create door.
- Deployment: platformDeployment(MF_TIMELINE ?? DENO_TIMELINE) beside the Bunny APP_DATABASE
  override. Imports move to the autokit doors (env from /server, roles and provider tables
  from /program, seeds from /session).

The plan rebuilds users, personas and notifications (every column copied) and renews the auth,
provider and search triggers: destructive, so production is applied deliberately with
`db apply --destructive --yes` before this revision routes.
2026-10-30 16:15:05 +01:00

80 lines
2.6 KiB
TypeScript

import {
autokitLintJsPlugins,
autokitLintRules,
autokitVitePreset,
} from "@bureaudouble/autokit/vite";
import { env } from "@bureaudouble/autokit/server";
import tailwindcss from "@tailwindcss/vite";
import stylex from "@stylexjs/unplugin";
import pluginRouter from "@tanstack/eslint-plugin-router";
import { tanstackStart } from "@tanstack/react-start/plugin/vite";
import react from "@vitejs/plugin-react";
import { defineConfig } from "vite-plus";
import { readBuildRevision } from "./scripts/build-revision.ts";
const routerRecommendedRules = pluginRouter.configs.recommended.rules ?? {};
export default defineConfig({
define: {
__APP_REVISION__: JSON.stringify(readBuildRevision(import.meta.dirname)),
},
test: { include: ["src/**/*.test.ts"], setupFiles: ["./src/tests/offline.setup.ts"] },
lint: {
options: { typeAware: true, typeCheck: true },
jsPlugins: [
...autokitLintJsPlugins.filter((plugin) => plugin !== "oxlint-tailwindcss"),
"@tanstack/eslint-plugin-router",
],
rules: {
...Object.fromEntries(
Object.entries(autokitLintRules).filter(
([rule]) => !rule.startsWith("tailwindcss/") && rule !== "react/react-compiler",
),
),
"@tanstack/router/create-route-property-order":
routerRecommendedRules["@tanstack/router/create-route-property-order"] ?? "warn",
"@tanstack/router/route-param-names":
routerRecommendedRules["@tanstack/router/route-param-names"] ?? "error",
},
},
fmt: {
ignorePatterns: [
"src/routeTree.gen.ts",
"src/apps/product/content/*.archive.md",
"src/apps/product/content/about-description.html",
"src/apps/product/personas/*/archive.md",
".tanstack-start/",
".tanstack/",
".claude/",
],
},
resolve: {
tsconfigPaths: true,
},
server: {
port: Number(env("SERVER_PORT", false) ?? "3000"),
strictPort: true,
},
plugins: [
...autokitVitePreset({
// Optional WebGPU effects feature-detect support and keep CSS fallbacks usable.
ignoreBrowserApis: ["api.Navigator.gpu"],
}),
stylex.vite({
runtimeInjection: false,
styleResolution: "application-order",
useCSSLayers: { before: ["reset", "base"], prefix: "stx" },
sxPropName: false,
cssInjectionTarget: (filepath) => /(?:^|\/)atomic-[^/]+\.css$/.test(filepath),
unstable_moduleResolution: { type: "commonJS", rootDir: import.meta.dirname },
aliases: { "#/*": [`${import.meta.dirname}/src/*`] },
}),
tanstackStart({
router: {
addExtensions: true,
},
}),
react(),
tailwindcss(),
],
});