- 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.
80 lines
2.6 KiB
TypeScript
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(),
|
|
],
|
|
});
|