@batijs/cli 0.0.658 → 0.0.659

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/boilerplates/@batijs/auth0/bati.config.mjs +1 -1
  2. package/dist/boilerplates/@batijs/authjs/bati.config.mjs +2 -16
  3. package/dist/boilerplates/@batijs/aws/bati.config.mjs +1 -13
  4. package/dist/boilerplates/@batijs/better-auth/bati.config.mjs +2 -17
  5. package/dist/boilerplates/@batijs/biome/bati.config.mjs +2 -16
  6. package/dist/boilerplates/@batijs/cloudflare/bati.config.mjs +1 -15
  7. package/dist/boilerplates/@batijs/compiled/bati.config.mjs +1 -13
  8. package/dist/boilerplates/@batijs/d1/bati.config.mjs +1 -1
  9. package/dist/boilerplates/@batijs/d1-kysely/bati.config.mjs +1 -1
  10. package/dist/boilerplates/@batijs/d1-sqlite/bati.config.mjs +4 -18
  11. package/dist/boilerplates/@batijs/docker-compose/bati.config.mjs +2 -15
  12. package/dist/boilerplates/@batijs/dokploy/bati.config.mjs +2 -14
  13. package/dist/boilerplates/@batijs/drizzle/bati.config.mjs +1 -17
  14. package/dist/boilerplates/@batijs/edgeone/bati.config.mjs +2 -14
  15. package/dist/boilerplates/@batijs/elysia/bati.config.mjs +2 -15
  16. package/dist/boilerplates/@batijs/eslint/bati.config.mjs +2 -14
  17. package/dist/boilerplates/@batijs/express/bati.config.mjs +2 -15
  18. package/dist/boilerplates/@batijs/fastify/bati.config.mjs +2 -15
  19. package/dist/boilerplates/@batijs/google-analytics/bati.config.mjs +2 -14
  20. package/dist/boilerplates/@batijs/hono/bati.config.mjs +2 -15
  21. package/dist/boilerplates/@batijs/kysely/bati.config.mjs +2 -16
  22. package/dist/boilerplates/@batijs/mantine/bati.config.mjs +2 -14
  23. package/dist/boilerplates/@batijs/netlify/bati.config.mjs +4 -18
  24. package/dist/boilerplates/@batijs/oxlint/bati.config.mjs +2 -14
  25. package/dist/boilerplates/@batijs/plausible.io/bati.config.mjs +4 -18
  26. package/dist/boilerplates/@batijs/pnpm/bati.config.mjs +1 -1
  27. package/dist/boilerplates/@batijs/postgres/bati.config.mjs +1 -13
  28. package/dist/boilerplates/@batijs/prettier/bati.config.mjs +2 -14
  29. package/dist/boilerplates/@batijs/prisma/bati.config.mjs +2 -20
  30. package/dist/boilerplates/@batijs/react/bati.config.mjs +2 -14
  31. package/dist/boilerplates/@batijs/react-better-auth/bati.config.mjs +1 -1
  32. package/dist/boilerplates/@batijs/react-sentry/bati.config.mjs +1 -1
  33. package/dist/boilerplates/@batijs/sentry/bati.config.mjs +1 -14
  34. package/dist/boilerplates/@batijs/shadcn-ui/bati.config.mjs +4 -19
  35. package/dist/boilerplates/@batijs/shared/bati.config.mjs +1 -94
  36. package/dist/boilerplates/@batijs/shared-agents/bati.config.mjs +1 -1
  37. package/dist/boilerplates/@batijs/shared-agents/hooks/after.mjs +2 -2
  38. package/dist/boilerplates/@batijs/shared-agents/hooks/asset-boilerplates/shared-agents/compose.mjs +13 -20
  39. package/dist/boilerplates/@batijs/shared-agents/hooks/asset-packages/features/dist/{features-CPCPsYbg.mjs → features-CGdfnf9U.mjs} +105 -27
  40. package/dist/boilerplates/@batijs/shared-agents/hooks/asset-packages/features/dist/index.mjs +1 -1
  41. package/dist/boilerplates/@batijs/shared-db/bati.config.mjs +1 -1
  42. package/dist/boilerplates/@batijs/shared-env/bati.config.mjs +1 -1
  43. package/dist/boilerplates/@batijs/shared-server/bati.config.mjs +1 -1
  44. package/dist/boilerplates/@batijs/shared-todo/bati.config.mjs +1 -1
  45. package/dist/boilerplates/@batijs/solid/bati.config.mjs +4 -18
  46. package/dist/boilerplates/@batijs/solid-better-auth/bati.config.mjs +1 -1
  47. package/dist/boilerplates/@batijs/solid-sentry/bati.config.mjs +1 -1
  48. package/dist/boilerplates/@batijs/sqlite/bati.config.mjs +1 -13
  49. package/dist/boilerplates/@batijs/storybook/bati.config.mjs +2 -14
  50. package/dist/boilerplates/@batijs/tailwindcss/bati.config.mjs +2 -27
  51. package/dist/boilerplates/@batijs/telefunc/bati.config.mjs +4 -20
  52. package/dist/boilerplates/@batijs/trpc/bati.config.mjs +4 -19
  53. package/dist/boilerplates/@batijs/ts-rest/bati.config.mjs +2 -14
  54. package/dist/boilerplates/@batijs/universal-deploy/bati.config.mjs +4 -21
  55. package/dist/boilerplates/@batijs/vercel/bati.config.mjs +1 -13
  56. package/dist/boilerplates/@batijs/vue/bati.config.mjs +2 -14
  57. package/dist/boilerplates/@batijs/vue-better-auth/bati.config.mjs +1 -1
  58. package/dist/boilerplates/@batijs/vue-sentry/bati.config.mjs +1 -1
  59. package/dist/index.js +2 -3
  60. package/package.json +5 -5
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,21 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("authjs") || meta.BATI.has("auth0");
13
13
  },
14
- knip: { entry: ["server/authjs-handler.ts"] },
15
- skills(meta) {
16
- return [{
17
- name: "auth",
18
- description: "How authentication works in this app (Auth.js). Use when reading the session, protecting a route, or configuring providers.",
19
- body: `Auth.js. Config + providers live in \`server/authjs-handler.ts\` (\`authjsConfig.providers\`, base path \`/api/auth\`); \`authjsSessionMiddleware\` populates \`pageContext.session\`.
20
-
21
- - **Read the session:** \`pageContext.session\` (an Auth.js \`Session | null\`; the user is \`session.user\`).
22
- - **Protect a route:** add a \`+guard.ts\` beside the page — \`if (!pageContext.session) throw redirect("/login")\`.
23
- - **Add a provider:** add it to the \`providers\` array in \`server/authjs-handler.ts\`${meta.BATI.has("auth0") ? " (the Auth0 provider is already wired; its credentials are in `.env`)" : ""}.
24
- - **Secret:** replace the placeholder \`secret\` (\`"MY_SECRET"\`) — see https://authjs.dev/reference/core#secret.
25
-
26
- See https://authjs.dev.`
27
- }];
28
- }
14
+ knip: { entry: ["server/authjs-handler.ts"] }
29
15
  });
30
16
  //#endregion
31
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -31,18 +31,6 @@ var bati_config_default = t({
31
31
  "esbuild",
32
32
  "npm-run-all2"
33
33
  ]
34
- },
35
- skills(meta) {
36
- return [{
37
- name: "deploy",
38
- description: "How to deploy this app to AWS Lambda. Use when deploying or configuring the CDK stack.",
39
- body: `Deploys to AWS Lambda via AWS CDK. The Lambda entry is \`entry_aws_lambda.ts\`; the stack is \`cdk/lib/vike-stack.ts\`.
40
-
41
- - **Deploy:** \`${meta.BATI.pmRun} deploy:aws\` (builds, then \`cdk deploy --all\`). Ensure AWS credentials are configured.
42
- - **Env vars:** configure them on the Lambda via the CDK stack; locally they're in \`.env\`.
43
-
44
- See https://docs.aws.amazon.com/cdk and \`TODO.md\`.`
45
- }];
46
34
  }
47
35
  });
48
36
  //#endregion
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -42,22 +42,7 @@ var bati_config_default = t({
42
42
  step: `Configure Better Auth (secret, GitHub OAuth, migrations). Check ${bold("TODO.md")} for details`
43
43
  }];
44
44
  },
45
- knip: { entry: ["server/better-auth-handler.ts", "database/better-auth/migrate.ts"] },
46
- skills(meta) {
47
- const run = meta.BATI.pmRun;
48
- return [{
49
- name: "auth",
50
- description: "How authentication works in this app (Better Auth). Use when reading the signed-in user, protecting a route, or configuring providers.",
51
- body: `Better Auth. Server config + providers live in \`server/better-auth.ts\`; the route and session middleware are in \`server/better-auth-handler.ts\` (the middleware populates \`pageContext.user\`). Login/signup/account pages and the \`AuthNav\` component are framework-specific (under \`pages/\` and \`components/\`).
52
-
53
- - **Read the user:** \`pageContext.user\` (on the server and during client-side navigation).
54
- - **Protect a route:** add a \`+guard.ts\` beside the page — \`if (!pageContext.user) throw redirect("/login")\` (see \`pages/account/+guard.ts\`).
55
- - **Add a provider:** configure it in \`server/better-auth.ts\`; OAuth credentials go in \`.env\`.
56
- - **Tables:** Better Auth owns its user/session tables — ${meta.BATI.has("drizzle") ? "they're created by Drizzle's migrate flow" : meta.BATI.hasD1 ? "they're applied via a wrangler D1 migration" : `run \`${run} better-auth:migrate\` to create them`}.
57
-
58
- See https://better-auth.com/docs.`
59
- }];
60
- }
45
+ knip: { entry: ["server/better-auth-handler.ts", "database/better-auth/migrate.ts"] }
61
46
  });
62
47
  //#endregion
63
48
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,21 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("biome");
13
13
  },
14
- knip: { ignoreDependencies: ["@biomejs/biome"] },
15
- skills(meta) {
16
- const run = meta.BATI.pmRun;
17
- return [{
18
- name: "biome",
19
- description: "How linting and formatting work in this app (Biome). Use when running lint/format or adjusting rules.",
20
- body: `Biome handles both linting and formatting (config in \`biome.json\`).
21
-
22
- - **Lint:** \`${run} lint\` (\`biome lint --write .\`).
23
- - **Format:** \`${run} format\` (\`biome format --write .\`).
24
- - **Rules:** edit \`biome.json\`.
25
-
26
- See https://biomejs.dev.`
27
- }];
28
- }
14
+ knip: { ignoreDependencies: ["@biomejs/biome"] }
29
15
  });
30
16
  //#endregion
31
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -25,20 +25,6 @@ var bati_config_default = t({
25
25
  "cloudflare",
26
26
  "@cloudflare/vite-plugin"
27
27
  ]
28
- },
29
- skills(meta) {
30
- const run = meta.BATI.pmRun;
31
- return [{
32
- name: "deploy",
33
- description: "How to deploy this app to Cloudflare. Use when deploying, configuring bindings, or managing secrets.",
34
- body: `Deploys to Cloudflare Workers via Wrangler. The worker entry is \`cloudflare-entry.ts\`; config is \`wrangler.jsonc\`.
35
-
36
- - **Deploy:** \`${run} deploy\` (runs \`vike build && wrangler deploy\`).
37
- - **Types:** \`${run} generate-types\` after changing bindings.
38
- - **Secrets:** \`wrangler secret put <NAME>\` for production; non-secret vars live in \`wrangler.jsonc\` (\`vars\`).${meta.BATI.hasD1 ? " D1 is bound as `DB`; apply migrations with `wrangler d1 migrations apply`." : ""}
39
-
40
- See https://developers.cloudflare.com/workers and \`TODO.md\`.`
41
- }];
42
28
  }
43
29
  });
44
30
  //#endregion
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -19,18 +19,6 @@ var bati_config_default = t({
19
19
  "vite-plugin-compiled-react"
20
20
  ],
21
21
  vite: false
22
- },
23
- skills() {
24
- return [{
25
- name: "styling",
26
- description: "How styling works in this app (Compiled CSS-in-JS). Use when styling a component.",
27
- body: `This app uses Compiled (\`@compiled/react\`) for CSS-in-JS; styles are extracted at build time by the Vite plugin (already configured).
28
-
29
- - **Style components:** pass a \`css={{ ... }}\` prop with an object of CSS properties, e.g. \`<div css={{ fontWeight: "700", fontSize: "1.875rem" }} />\`.
30
- - Styles are colocated with components; there is no global utility framework.
31
-
32
- See https://compiledcssinjs.com.`
33
- }];
34
22
  }
35
23
  });
36
24
  //#endregion
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -3,26 +3,12 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
10
- var bati_config_default = t({
11
- if(meta) {
12
- return meta.BATI.hasD1 && !meta.BATI.hasOrm;
13
- },
14
- skills(meta) {
15
- return [{
16
- name: "database",
17
- description: "How to work with the database in this app (raw Cloudflare D1 / SQLite, no ORM). Use when querying, adding a table, or migrating.",
18
- body: `Raw Cloudflare D1 (SQLite) with no ORM. Queries are in \`database/d1/queries/\`; SQL migrations in \`database/migrations/\`. The D1 binding is \`DB\`, available on the server as \`context.db\` (a \`D1Database\`).
19
-
20
- - **Add a table:** add a \`.sql\` migration to \`database/migrations/\`, then apply it with \`${meta.BATI.pmRun} d1:migrate\` (locally) or \`wrangler d1 migrations apply <name>\`.
21
- - **Write queries:** add functions in \`database/d1/queries/\` using D1's prepared-statement API, e.g. \`db.prepare("SELECT * FROM todos").all()\` or \`db.prepare("INSERT INTO todos (text) VALUES (?)").bind(text).run()\`.
22
-
23
- See https://developers.cloudflare.com/d1.`
24
- }];
25
- }
26
- });
10
+ var bati_config_default = t({ if(meta) {
11
+ return meta.BATI.hasD1 && !meta.BATI.hasOrm;
12
+ } });
27
13
  //#endregion
28
14
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,20 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("docker");
13
13
  },
14
- enforce: "post",
15
- skills(meta) {
16
- if (meta.BATI.has("dokploy")) return [];
17
- return [{
18
- name: "deploy",
19
- description: "How to build and run this app with Docker. Use when containerizing or deploying via Docker.",
20
- body: `Ships a multi-stage \`Dockerfile\` and \`docker-compose.yml\`.
21
-
22
- - **Build & run:** \`docker compose up --build\` (or \`docker build\` + \`docker run\`).
23
- - **Env vars:** set them in \`docker-compose.yml\` / the container environment; don't bake secrets into the image.
24
-
25
- See https://docs.docker.com and \`TODO.md\`.`
26
- }];
27
- }
14
+ enforce: "post"
28
15
  });
29
16
  //#endregion
30
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -17,19 +17,7 @@ var bati_config_default = t({
17
17
  step: `${bold("dokploy")}: Check ${bold("TODO.md")} for remaining steps.`
18
18
  }];
19
19
  },
20
- enforce: "post",
21
- skills() {
22
- return [{
23
- name: "deploy",
24
- description: "How to deploy this app with Dokploy. Use when deploying to a Dokploy server.",
25
- body: `Deploys via Dokploy (self-hosted PaaS) using the app's \`Dockerfile\`.
26
-
27
- - **Deploy:** connect the Git repo in your Dokploy dashboard; Dokploy builds and runs the container.
28
- - **Env vars:** set them in the Dokploy app's Environment settings.
29
-
30
- See https://docs.dokploy.com and \`TODO.md\`.`
31
- }];
32
- }
20
+ enforce: "post"
33
21
  });
34
22
  //#endregion
35
23
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -31,22 +31,6 @@ var bati_config_default = t({
31
31
  step: `${packageManager} drizzle:migrate`
32
32
  }
33
33
  ];
34
- },
35
- skills(meta) {
36
- const run = meta.BATI.pmRun;
37
- return [{
38
- name: "drizzle",
39
- description: "How to work with the database via Drizzle ORM in this app. Use when adding or changing a table, writing a query, or running a migration.",
40
- body: `Drizzle ORM on ${meta.BATI.has("postgres") ? "PostgreSQL" : meta.BATI.hasD1 ? "Cloudflare D1 (SQLite)" : "SQLite"}. Schema in \`database/drizzle/schema/\`, queries in \`database/drizzle/queries/\`, connection in \`database/drizzle/db.ts\`, drizzle-kit config in \`drizzle.config.ts\`.
41
-
42
- - **Add or change a table:** edit the schema in \`database/drizzle/schema/\`.
43
- - **Generate a migration:** \`${run} drizzle:generate\`.
44
- - **Apply migrations:** \`${meta.BATI.hasD1 ? "wrangler d1 migrations apply MY_VIKE_DEMO_DATABASE --local" : `${run} drizzle:migrate`}\`.
45
- - **Write queries:** add functions in \`database/drizzle/queries/\`; on the server the db is available as \`context.db\`.
46
- - **Inspect data:** \`${run} drizzle:studio\`.
47
-
48
- See https://orm.drizzle.team.`
49
- }];
50
34
  }
51
35
  });
52
36
  //#endregion
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,19 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("edgeone");
13
13
  },
14
- knip: { ignore: [".edgeone/**"] },
15
- skills(meta) {
16
- return [{
17
- name: "deploy",
18
- description: "How to deploy this app to EdgeOne Pages. Use when deploying or managing environment variables.",
19
- body: `Deploys to Tencent EdgeOne Pages.
20
-
21
- - **Deploy:** push to an EdgeOne-connected Git repo (or use the EdgeOne CLI). \`${meta.BATI.pmRun} build\` builds locally.
22
- - **Env vars:** set them in the EdgeOne Pages dashboard; locally they're in \`.env\`.
23
-
24
- See https://edgeone.ai/document/pages and \`TODO.md\`.`
25
- }];
26
- }
14
+ knip: { ignore: [".edgeone/**"] }
27
15
  });
28
16
  //#endregion
29
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,20 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("elysia");
13
13
  },
14
- knip: { entry: ["+server.ts"] },
15
- skills() {
16
- return [{
17
- name: "server",
18
- description: "How to add a server route or middleware in this Elysia + Vike app. Use when adding an API endpoint, middleware, or changing server behavior.",
19
- body: `The server entry is \`+server.ts\` (it exports a Vike \`Server\`). The Elysia \`app\` is built in \`server/elysia.ts\`, where \`vike(app, [...])\` mounts Vike as the catch-all and the array holds Universal Middlewares (db, auth, RPC handlers).
20
-
21
- - **Add an API route:** register it on the Elysia \`app\` in \`server/elysia.ts\`, e.g. \`app.get("/api/hello", () => ({ ok: true }))\`.
22
- - **Add middleware:** chain Elysia methods on \`app\`, or push a Universal Middleware handler into the \`vike(app, [...])\` array to share Vike's \`context\`.
23
- - \`PORT\` is read from the environment.
24
-
25
- See https://vike.dev/server and https://elysiajs.com.`
26
- }];
27
- }
14
+ knip: { entry: ["+server.ts"] }
28
15
  });
29
16
  //#endregion
30
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,19 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("eslint");
13
13
  },
14
- knip: { ignoreDependencies: ["eslint"] },
15
- skills(meta) {
16
- return [{
17
- name: "eslint",
18
- description: "How linting works in this app (ESLint). Use when running the linter or adjusting lint rules.",
19
- body: `ESLint with a flat config in \`eslint.config.ts\`.
20
-
21
- - **Lint:** \`${meta.BATI.pmRun} lint\` (\`eslint .\`).
22
- - **Rules:** edit \`eslint.config.ts\`.
23
-
24
- See https://eslint.org.`
25
- }];
26
- }
14
+ knip: { ignoreDependencies: ["eslint"] }
27
15
  });
28
16
  //#endregion
29
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,20 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("express");
13
13
  },
14
- knip: { entry: ["+server.ts"] },
15
- skills() {
16
- return [{
17
- name: "server",
18
- description: "How to add a server route or middleware in this Express + Vike app. Use when adding an API endpoint, middleware, or changing server behavior.",
19
- body: `The server entry is \`+server.ts\`, which builds an Express \`app\` and mounts Vike with \`vike(app, [...])\` (the array holds Universal Middlewares: db, auth, RPC handlers).
20
-
21
- - **Add an API route:** register it on the Express \`app\` before the \`vike(app, …)\` call, e.g. \`app.get("/api/hello", (req, res) => res.json({ ok: true }))\`.
22
- - **Add middleware:** use \`app.use(...)\`, or push a Universal Middleware handler into the \`vike(app, [...])\` array to share Vike's \`context\`.
23
- - \`PORT\` is read from the environment.
24
-
25
- See https://vike.dev/server and https://expressjs.com.`
26
- }];
27
- }
14
+ knip: { entry: ["+server.ts"] }
28
15
  });
29
16
  //#endregion
30
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -11,20 +11,7 @@ var bati_config_default = t({
11
11
  if(meta) {
12
12
  return meta.BATI.has("fastify");
13
13
  },
14
- knip: { entry: ["+server.ts"] },
15
- skills() {
16
- return [{
17
- name: "server",
18
- description: "How to add a server route or middleware in this Fastify + Vike app. Use when adding an API endpoint, middleware, or changing server behavior.",
19
- body: `The server entry is \`+server.ts\`, which builds a Fastify \`app\` and mounts Vike with \`await vike(app, [...])\` (the array holds Universal Middlewares: db, auth, RPC handlers). The \`fastify-raw-body\` plugin is registered so middlewares can read the request body.
20
-
21
- - **Add an API route:** register it on the Fastify \`app\` before the \`vike(app, …)\` call, e.g. \`app.get("/api/hello", () => ({ ok: true }))\`, or \`app.register(myPlugin)\`.
22
- - **Add middleware:** push a Universal Middleware handler into the \`vike(app, [...])\` array to share Vike's \`context\`.
23
- - \`PORT\` is read from the environment.
24
-
25
- See https://vike.dev/server and https://fastify.dev.`
26
- }];
27
- }
14
+ knip: { entry: ["+server.ts"] }
28
15
  });
29
16
  //#endregion
30
17
  export { bati_config_default as default };
@@ -3,7 +3,7 @@ function e(e, t) {
3
3
  if (!e) throw Error(t);
4
4
  }
5
5
  function t(t) {
6
- return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), `skills` in t && e(typeof t.skills == `function`, `'skills' must be a function of meta`), t;
6
+ return `enforce` in t && e(t.enforce === `pre` || t.enforce === `post`, `'enforce' must be 'pre' or 'post', was ${t.enforce}`), `if` in t && e(typeof t.if == `function`, `'if' must be a function`), `nextSteps` in t && e(typeof t.nextSteps == `function`, `'nextSteps' must be a function`), `knip` in t && (e(typeof t.knip == `object` && t.knip !== null, `'knip' must be an object`), `entry` in t.knip && e(Array.isArray(t.knip.entry), `'knip.entry' must be an array`), `ignoreDependencies` in t.knip && e(Array.isArray(t.knip.ignoreDependencies), `'knip.ignoreDependencies' must be an array`), `ignore` in t.knip && e(Array.isArray(t.knip.ignore), `'knip.ignore' must be an array`), `vite` in t.knip && e(typeof t.knip.vite == `boolean`, `'knip.vite' must be a boolean`)), `env` in t && e(typeof t.env == `function`, `'env' must be a function of meta`), `deploy` in t && e(Array.isArray(t.deploy) || typeof t.deploy == `function`, `'deploy' must be an array or a function of meta`), t;
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
@@ -18,19 +18,7 @@ var bati_config_default = t({
18
18
  comment: `Google Analytics
19
19
 
20
20
  See the documentation https://support.google.com/analytics/answer/9304153?hl=en#zippy=%2Cweb`
21
- }],
22
- skills() {
23
- return [{
24
- name: "analytics",
25
- description: "How analytics works in this app (Google Analytics). Use when configuring analytics or tracking events.",
26
- body: `Google Analytics (gtag). The tag is injected in \`pages/+Head.*\` and reads \`PUBLIC_ENV__GOOGLE_ANALYTICS\`.
27
-
28
- - **Configure:** set \`PUBLIC_ENV__GOOGLE_ANALYTICS\` (your \`G-XXXX\` measurement ID) in \`.env\`.
29
- - **Track events:** call \`gtag("event", "<name>", { ... })\` in the browser.
30
-
31
- See https://developers.google.com/analytics.`
32
- }];
33
- }
21
+ }]
34
22
  });
35
23
  //#endregion
36
24
  export { bati_config_default as default };