@batijs/cli 0.0.657 → 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.
- package/dist/boilerplates/@batijs/auth0/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/authjs/bati.config.mjs +2 -16
- package/dist/boilerplates/@batijs/aws/bati.config.mjs +1 -13
- package/dist/boilerplates/@batijs/better-auth/bati.config.mjs +2 -17
- package/dist/boilerplates/@batijs/biome/bati.config.mjs +2 -16
- package/dist/boilerplates/@batijs/cloudflare/bati.config.mjs +1 -15
- package/dist/boilerplates/@batijs/compiled/bati.config.mjs +1 -13
- package/dist/boilerplates/@batijs/d1/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/d1-kysely/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/d1-sqlite/bati.config.mjs +4 -18
- package/dist/boilerplates/@batijs/docker-compose/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/dokploy/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/drizzle/bati.config.mjs +1 -17
- package/dist/boilerplates/@batijs/edgeone/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/elysia/bati.config.mjs +2 -15
- package/dist/boilerplates/@batijs/eslint/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/express/bati.config.mjs +2 -15
- package/dist/boilerplates/@batijs/fastify/bati.config.mjs +2 -15
- package/dist/boilerplates/@batijs/google-analytics/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/hono/bati.config.mjs +2 -15
- package/dist/boilerplates/@batijs/kysely/bati.config.mjs +2 -16
- package/dist/boilerplates/@batijs/mantine/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/netlify/bati.config.mjs +4 -18
- package/dist/boilerplates/@batijs/oxlint/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/plausible.io/bati.config.mjs +4 -18
- package/dist/boilerplates/@batijs/pnpm/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/postgres/bati.config.mjs +1 -13
- package/dist/boilerplates/@batijs/prettier/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/prisma/bati.config.mjs +2 -20
- package/dist/boilerplates/@batijs/react/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/react-better-auth/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/react-sentry/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/sentry/bati.config.mjs +1 -14
- package/dist/boilerplates/@batijs/shadcn-ui/bati.config.mjs +4 -19
- package/dist/boilerplates/@batijs/shared/bati.config.mjs +1 -94
- package/dist/boilerplates/@batijs/shared-agents/bati.config.mjs +2 -7
- package/dist/boilerplates/@batijs/shared-agents/hooks/after.mjs +17 -7
- package/dist/boilerplates/@batijs/shared-agents/hooks/asset-boilerplates/shared-agents/compose.mjs +14 -35
- package/dist/boilerplates/@batijs/shared-agents/hooks/asset-packages/features/dist/{features-CStxEDu3.mjs → features-CGdfnf9U.mjs} +110 -84
- package/dist/boilerplates/@batijs/shared-agents/hooks/asset-packages/features/dist/index.mjs +5 -158
- package/dist/boilerplates/@batijs/shared-db/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/shared-env/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/shared-server/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/shared-todo/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/solid/bati.config.mjs +4 -18
- package/dist/boilerplates/@batijs/solid-better-auth/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/solid-sentry/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/sqlite/bati.config.mjs +1 -13
- package/dist/boilerplates/@batijs/storybook/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/tailwindcss/bati.config.mjs +2 -27
- package/dist/boilerplates/@batijs/telefunc/bati.config.mjs +4 -20
- package/dist/boilerplates/@batijs/trpc/bati.config.mjs +4 -19
- package/dist/boilerplates/@batijs/ts-rest/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/universal-deploy/bati.config.mjs +4 -21
- package/dist/boilerplates/@batijs/vercel/bati.config.mjs +1 -13
- package/dist/boilerplates/@batijs/vue/bati.config.mjs +2 -14
- package/dist/boilerplates/@batijs/vue-better-auth/bati.config.mjs +1 -1
- package/dist/boilerplates/@batijs/vue-sentry/bati.config.mjs +1 -1
- package/dist/index.js +2 -6
- package/package.json +5 -5
- package/dist/boilerplates/@batijs/shared-agents/hooks/asset-boilerplates/shared-agents/agents-md.mjs +0 -70
|
@@ -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`),
|
|
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("hono");
|
|
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 Hono + 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 Hono \`app\` is built in \`server/hono.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 Hono \`app\` in \`server/hono.ts\`, e.g. \`app.get("/api/hello", (c) => c.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://hono.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`),
|
|
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
|
|
@@ -22,21 +22,7 @@ var bati_config_default = t({
|
|
|
22
22
|
step: `${packageManager} kysely:migrate`
|
|
23
23
|
}];
|
|
24
24
|
},
|
|
25
|
-
knip: { entry: ["database/kysely/migrations/*.ts"] }
|
|
26
|
-
skills(meta) {
|
|
27
|
-
const run = meta.BATI.pmRun;
|
|
28
|
-
return [{
|
|
29
|
-
name: "kysely",
|
|
30
|
-
description: "How to work with the database via the Kysely query builder in this app. Use when adding a table, writing a query, or running a migration.",
|
|
31
|
-
body: `Kysely query builder on ${meta.BATI.has("postgres") ? "PostgreSQL" : meta.BATI.hasD1 ? "Cloudflare D1 (SQLite)" : "SQLite"}. Typed DB interface in \`database/kysely/types.ts\`, queries in \`database/kysely/queries/\`, connection in \`database/kysely/db.ts\`. Migrations are hand-written in \`database/kysely/migrations/\`.
|
|
32
|
-
|
|
33
|
-
- **Add a table:** add a migration file in \`database/kysely/migrations/\` (e.g. \`002_*.ts\`) exporting \`up\`/\`down\`, and add the table to the \`Database\` interface in \`database/kysely/types.ts\`.
|
|
34
|
-
- **Run migrations:** \`${meta.BATI.hasD1 ? "wrangler d1 migrations apply MY_VIKE_DEMO_DATABASE --local" : `${run} kysely:migrate`}\`.
|
|
35
|
-
- **Write queries:** add functions in \`database/kysely/queries/\` using the typed \`db\`; on the server it's available as \`context.db\`.
|
|
36
|
-
|
|
37
|
-
See https://kysely.dev.`
|
|
38
|
-
}];
|
|
39
|
-
}
|
|
25
|
+
knip: { entry: ["database/kysely/migrations/*.ts"] }
|
|
40
26
|
});
|
|
41
27
|
//#endregion
|
|
42
28
|
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`),
|
|
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
|
|
@@ -12,19 +12,7 @@ var bati_config_default = t({
|
|
|
12
12
|
if(meta) {
|
|
13
13
|
return meta.BATI.has("mantine") && meta.BATI.has("react");
|
|
14
14
|
},
|
|
15
|
-
knip: { ignoreDependencies: ["postcss"] }
|
|
16
|
-
skills() {
|
|
17
|
-
return [{
|
|
18
|
-
name: "mantine",
|
|
19
|
-
description: "How to use Mantine components in this app. Use when building UI with Mantine.",
|
|
20
|
-
body: `Mantine (React). \`MantineProvider\` wraps the app in \`pages/+Layout.tsx\`; global styles are in \`pages/Layout.css\`; PostCSS is set up in \`postcss.config.cjs\`.
|
|
21
|
-
|
|
22
|
-
- **Use a component:** import from \`@mantine/core\` (or another \`@mantine/*\` package) and render it inside the provider.
|
|
23
|
-
- **Theme:** pass a theme to \`MantineProvider\` in \`pages/+Layout.tsx\`.
|
|
24
|
-
|
|
25
|
-
See https://mantine.dev.`
|
|
26
|
-
}];
|
|
27
|
-
}
|
|
15
|
+
knip: { ignoreDependencies: ["postcss"] }
|
|
28
16
|
});
|
|
29
17
|
//#endregion
|
|
30
18
|
export { bati_config_default as default };
|
|
@@ -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`),
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
skills(meta) {
|
|
15
|
-
return [{
|
|
16
|
-
name: "deploy",
|
|
17
|
-
description: "How to deploy this app to Netlify. Use when deploying or managing environment variables.",
|
|
18
|
-
body: `Deploys to Netlify.
|
|
19
|
-
|
|
20
|
-
- **Deploy:** push to a Netlify-connected Git repo, or run \`netlify deploy\` (Netlify CLI). \`${meta.BATI.pmRun} build\` builds locally.
|
|
21
|
-
- **Env vars:** set them in the Netlify dashboard (Site settings → Environment variables); locally they're in \`.env\`.
|
|
22
|
-
|
|
23
|
-
See https://docs.netlify.com and \`TODO.md\`.`
|
|
24
|
-
}];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
10
|
+
var bati_config_default = t({ if(meta) {
|
|
11
|
+
return meta.BATI.has("netlify");
|
|
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`),
|
|
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("oxlint");
|
|
13
13
|
},
|
|
14
|
-
knip: { ignoreDependencies: ["oxlint", "oxlint-tsgolint"] }
|
|
15
|
-
skills(meta) {
|
|
16
|
-
return [{
|
|
17
|
-
name: "oxlint",
|
|
18
|
-
description: "How linting works in this app (Oxlint). Use when running the linter or adjusting lint rules.",
|
|
19
|
-
body: `Oxlint — a fast Rust-based linter (config in \`.oxlintrc.json\`).
|
|
20
|
-
|
|
21
|
-
- **Lint:** \`${meta.BATI.pmRun} lint\` (\`oxlint --type-aware\`).
|
|
22
|
-
- **Rules:** edit \`.oxlintrc.json\`.
|
|
23
|
-
|
|
24
|
-
See https://oxc.rs/docs/guide/usage/linter.html.`
|
|
25
|
-
}];
|
|
26
|
-
}
|
|
14
|
+
knip: { ignoreDependencies: ["oxlint", "oxlint-tsgolint"] }
|
|
27
15
|
});
|
|
28
16
|
//#endregion
|
|
29
17
|
export { bati_config_default as default };
|
|
@@ -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`),
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
skills() {
|
|
15
|
-
return [{
|
|
16
|
-
name: "analytics",
|
|
17
|
-
description: "How analytics works in this app (Plausible). Use when configuring analytics or tracking events.",
|
|
18
|
-
body: `Plausible analytics. The tracking script lives in \`pages/+Head.*\`.
|
|
19
|
-
|
|
20
|
-
- **Configure:** set the \`data-domain\` attribute on the Plausible \`<script>\` to your domain.
|
|
21
|
-
- **Custom events:** use the Plausible script API (\`window.plausible("<event>")\`); enable the events extension on the script tag if needed.
|
|
22
|
-
|
|
23
|
-
See https://plausible.io/docs.`
|
|
24
|
-
}];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
10
|
+
var bati_config_default = t({ if(meta) {
|
|
11
|
+
return meta.BATI.has("plausible.io");
|
|
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`),
|
|
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`),
|
|
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
|
|
@@ -20,18 +20,6 @@ var bati_config_default = t({
|
|
|
20
20
|
type: "command",
|
|
21
21
|
step: `${packageManager} postgres:migrate`
|
|
22
22
|
}];
|
|
23
|
-
},
|
|
24
|
-
skills(meta) {
|
|
25
|
-
return [{
|
|
26
|
-
name: "database",
|
|
27
|
-
description: "How to work with the database in this app (raw PostgreSQL / postgres.js). Use when querying, adding a table, or migrating.",
|
|
28
|
-
body: `Raw PostgreSQL via postgres.js (no ORM). The client is in \`database/postgres/db.ts\`, schema in \`database/postgres/schema/\`, queries in \`database/postgres/queries/\`. Connection comes from \`DATABASE_URL\` in \`.env\`.
|
|
29
|
-
|
|
30
|
-
- **Add a table:** add it to \`database/postgres/schema/\` and migrate with \`${meta.BATI.pmRun} postgres:migrate\`.
|
|
31
|
-
- **Write queries:** add functions in \`database/postgres/queries/\` using the \`sql\` client; on the server it's available as \`context.db\`.
|
|
32
|
-
|
|
33
|
-
See https://github.com/porsager/postgres.`
|
|
34
|
-
}];
|
|
35
23
|
}
|
|
36
24
|
});
|
|
37
25
|
//#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`),
|
|
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("prettier");
|
|
13
13
|
},
|
|
14
|
-
knip: { ignoreDependencies: ["prettier", "eslint-config-prettier"] }
|
|
15
|
-
skills(meta) {
|
|
16
|
-
return [{
|
|
17
|
-
name: "prettier",
|
|
18
|
-
description: "How formatting works in this app (Prettier). Use when formatting code or adjusting formatting rules.",
|
|
19
|
-
body: `Prettier handles code formatting (config in \`prettier.config.js\`).
|
|
20
|
-
|
|
21
|
-
- **Format:** \`${meta.BATI.pmExec} prettier --write .\`.
|
|
22
|
-
- **Rules:** edit \`prettier.config.js\`.
|
|
23
|
-
|
|
24
|
-
See https://prettier.io/docs.`
|
|
25
|
-
}];
|
|
26
|
-
}
|
|
14
|
+
knip: { ignoreDependencies: ["prettier", "eslint-config-prettier"] }
|
|
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`),
|
|
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
|
|
@@ -26,25 +26,7 @@ var bati_config_default = t({
|
|
|
26
26
|
step: `Then define your models and run ${packageManager} prisma migrate dev — https://www.prisma.io/docs/getting-started`
|
|
27
27
|
}];
|
|
28
28
|
},
|
|
29
|
-
knip: { ignoreDependencies: ["@prisma/client", "prisma"] }
|
|
30
|
-
skills(meta) {
|
|
31
|
-
const run = meta.BATI.pmRun;
|
|
32
|
-
const exec = meta.BATI.pmExec;
|
|
33
|
-
const provider = meta.BATI.has("postgres") ? "postgresql" : "sqlite";
|
|
34
|
-
return [{
|
|
35
|
-
name: "prisma",
|
|
36
|
-
description: "How to work with the database via Prisma in this app. Use when defining a model, running a migration, or querying with the Prisma client.",
|
|
37
|
-
body: `Prisma (self-managed) on ${provider}. It uses the \`DATABASE_URL\` in \`.env\`.
|
|
38
|
-
|
|
39
|
-
- **First-time setup:** \`${exec} prisma init --datasource-provider ${provider}\` (creates \`prisma/schema.prisma\`).
|
|
40
|
-
- **Add or change a model:** edit \`prisma/schema.prisma\`.
|
|
41
|
-
- **Create & apply a migration:** \`${exec} prisma migrate dev\`.
|
|
42
|
-
- **Generate the client / inspect data:** \`${run} prisma:generate\` / \`${run} prisma:studio\`.
|
|
43
|
-
- **Query:** \`import { PrismaClient } from "@prisma/client"\`.
|
|
44
|
-
|
|
45
|
-
See https://www.prisma.io/docs.`
|
|
46
|
-
}];
|
|
47
|
-
}
|
|
29
|
+
knip: { ignoreDependencies: ["@prisma/client", "prisma"] }
|
|
48
30
|
});
|
|
49
31
|
//#endregion
|
|
50
32
|
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`),
|
|
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("react");
|
|
13
13
|
},
|
|
14
|
-
knip: { ignoreDependencies: ["react-dom", "@types/react-dom"] }
|
|
15
|
-
skills() {
|
|
16
|
-
return [{
|
|
17
|
-
name: "ui-framework",
|
|
18
|
-
description: "React conventions in this app. Use when writing components or handling SSR/hydration.",
|
|
19
|
-
body: `This app renders with React via \`vike-react\`. Components are \`.tsx\` files (pages under \`pages/\`, shared ones in \`components/\`).
|
|
20
|
-
|
|
21
|
-
- **SSR-safe:** components render on the server first — guard browser-only APIs (\`window\`, \`document\`, \`localStorage\`) behind \`useEffect\` or a \`typeof window !== "undefined"\` check to avoid hydration mismatches.
|
|
22
|
-
- **Page data:** read it with \`useData()\` (see the \`vike-data-fetching\` skill) rather than fetching in the component body.
|
|
23
|
-
|
|
24
|
-
See https://vike.dev/react.`
|
|
25
|
-
}];
|
|
26
|
-
}
|
|
14
|
+
knip: { ignoreDependencies: ["react-dom", "@types/react-dom"] }
|
|
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`),
|
|
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`),
|
|
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`),
|
|
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
|
|
@@ -28,19 +28,6 @@ var bati_config_default = t({
|
|
|
28
28
|
type: "text",
|
|
29
29
|
step: `Add your Sentry DSN to the .env file. Check ${bold("TODO.md")} for details`
|
|
30
30
|
}];
|
|
31
|
-
},
|
|
32
|
-
skills(meta) {
|
|
33
|
-
const sdk = meta.BATI.has("vue") ? "@sentry/vue" : meta.BATI.has("solid") ? "@sentry/solid" : "@sentry/react";
|
|
34
|
-
return [{
|
|
35
|
-
name: "sentry",
|
|
36
|
-
description: "How error tracking works in this app (Sentry). Use when capturing errors or configuring Sentry.",
|
|
37
|
-
body: `Sentry error tracking. Browser init is in \`sentry.browser.config.ts\` (using \`${sdk}\`); the \`sentryVitePlugin\` (source maps) is in \`vite.config.ts\`.
|
|
38
|
-
|
|
39
|
-
- **Configure:** set \`SENTRY_DSN\` + \`PUBLIC_ENV__SENTRY_DSN\` in \`.env\`, and the org/project in \`.env.sentry-build-plugin\`.
|
|
40
|
-
- **Capture errors:** \`import * as Sentry from "${sdk}"\` and call \`Sentry.captureException(err)\`; uncaught errors are reported automatically.
|
|
41
|
-
|
|
42
|
-
See https://docs.sentry.io.`
|
|
43
|
-
}];
|
|
44
31
|
}
|
|
45
32
|
});
|
|
46
33
|
//#endregion
|
|
@@ -3,27 +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`),
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
skills(meta) {
|
|
15
|
-
return [{
|
|
16
|
-
name: "shadcn-ui",
|
|
17
|
-
description: "How to use shadcn/ui in this app. Use when adding a shadcn/ui component or working with its styling.",
|
|
18
|
-
body: `shadcn/ui on Tailwind — components are copied into your project (you own them). \`components.json\` holds the config and the \`cn()\` class-merge helper is in \`lib/utils.ts\`.
|
|
19
|
-
|
|
20
|
-
- **Add a component:** \`${meta.BATI.pmDlx} shadcn@latest add <name>\` (e.g. \`button\`); it's written under the components path configured in \`components.json\`.
|
|
21
|
-
- **Use it:** import from that components path and compose classes with \`cn()\`.
|
|
22
|
-
- Styling is Tailwind-based (see the \`styling\` skill).
|
|
23
|
-
|
|
24
|
-
See https://ui.shadcn.com.`
|
|
25
|
-
}];
|
|
26
|
-
}
|
|
27
|
-
});
|
|
10
|
+
var bati_config_default = t({ if(meta) {
|
|
11
|
+
return meta.BATI.has("shadcn-ui");
|
|
12
|
+
} });
|
|
28
13
|
//#endregion
|
|
29
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`),
|
|
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
|
|
@@ -12,99 +12,6 @@ var bati_config_default = t({
|
|
|
12
12
|
knip: {
|
|
13
13
|
ignore: ["*.spec.ts"],
|
|
14
14
|
ignoreDependencies: ["@batijs/tests-utils", "turbo"]
|
|
15
|
-
},
|
|
16
|
-
skills(meta) {
|
|
17
|
-
const pageFile = meta.BATI.has("vue") ? "+Page.vue" : "+Page.tsx";
|
|
18
|
-
const uiPkg = meta.BATI.has("vue") ? "vike-vue" : meta.BATI.has("solid") ? "vike-solid" : "vike-react";
|
|
19
|
-
return [
|
|
20
|
-
{
|
|
21
|
-
name: "vike-routing",
|
|
22
|
-
description: "How to add pages and routes in this Vike app. Use when creating a page, adding a route, route parameters, a layout, or an error page.",
|
|
23
|
-
body: `Routing is file-based under \`pages/\`.
|
|
24
|
-
|
|
25
|
-
- A route is a directory containing a \`${pageFile}\` component, e.g. \`pages/about/${pageFile}\` → \`/about\`.
|
|
26
|
-
- The index route is \`pages/index/${pageFile}\` → \`/\`.
|
|
27
|
-
- **Parameterized routes:** add a \`+route.ts\` exporting a Route String (e.g. \`"/product/@id"\`); read the value from \`pageContext.routeParams\`.
|
|
28
|
-
- **Layouts / wrappers:** add \`+Layout.*\` (nested layout) or \`+Wrapper.*\` beside or above a page.
|
|
29
|
-
- **Error page:** \`pages/_error/+Page.*\` renders 404s and runtime errors.
|
|
30
|
-
|
|
31
|
-
See https://vike.dev/routing.`
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: "vike-data-fetching",
|
|
35
|
-
description: "How to load data for a page in this Vike app. Use when a page needs server or client data, or you're working with +data / useData.",
|
|
36
|
-
body: `- Add a \`+data.ts\` beside the page's component and export a \`data()\` function. It runs on the server (and on the client during client-side navigation) and receives \`pageContext\`.
|
|
37
|
-
- Read the result in the component with \`useData<DataType>()\` (from \`${uiPkg}\`).
|
|
38
|
-
- Only values listed in the \`passToClient\` config are serialized to the client; \`+data\` results are passed automatically.
|
|
39
|
-
- For request-time logic such as auth checks or redirects, use a \`+guard.ts\`.
|
|
40
|
-
|
|
41
|
-
See https://vike.dev/data.`
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: "vike-config",
|
|
45
|
-
description: "How Vike configuration works in this app. Use when changing global or per-route config, the page title/head, prerendering, or SSR settings.",
|
|
46
|
-
body: `- \`+config.ts\` files configure Vike. A \`+config.ts\` directly under \`pages/\` is global; one inside a route directory applies to that route and its descendants.
|
|
47
|
-
- Set the document title and meta tags via \`+Head.*\`, \`+title\`, and \`+description\`.
|
|
48
|
-
- UI-framework integration is provided by \`${uiPkg}\` (already configured).
|
|
49
|
-
- Toggle SSR / prerendering via the \`ssr\` / \`prerender\` settings in \`+config.ts\`.
|
|
50
|
-
|
|
51
|
-
See https://vike.dev/config.`
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: "vike-navigation",
|
|
55
|
-
description: "How to navigate between pages in this Vike app. Use when adding links, redirecting, navigating programmatically, or prefetching.",
|
|
56
|
-
body: `- **Links:** plain \`<a href="/...">\` works — Vike intercepts it for client-side navigation. Highlight the active link by comparing \`pageContext.urlPathname\` (see the \`vike-pagecontext\` skill).
|
|
57
|
-
- **Programmatic:** \`import { navigate } from "vike/client/router"\`, then \`await navigate("/path", { keepScrollPosition })\`.
|
|
58
|
-
- **Redirect:** in a \`+guard.ts\` or \`+data.ts\`, \`import { redirect } from "vike/abort"\`, then \`throw redirect("/login")\`.
|
|
59
|
-
- **Prefetch:** set \`+prefetchStaticAssets\` to \`"hover"\` / \`"viewport"\` in config, or call \`prefetch("/path")\` from \`vike/client/router\`.
|
|
60
|
-
|
|
61
|
-
See https://vike.dev/navigate.`
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: "vike-render-modes",
|
|
65
|
-
description: "How rendering modes work in this Vike app (SSR / SSG / SPA / streaming). Use when changing how a page is rendered or pre-rendered.",
|
|
66
|
-
body: `Set these in a \`+config.ts\` (global under \`pages/\`, or per-route):
|
|
67
|
-
- **\`ssr\`** — \`true\` (default) renders on the server then hydrates; \`false\` makes the page client-only (SPA).
|
|
68
|
-
- **\`prerender\`** — \`true\` builds the page to static HTML at build time (SSG). For parameterized routes (\`/movie/@id\`), add a \`+onBeforePrerenderStart.ts\` returning the list of URLs to pre-render.
|
|
69
|
-
- **\`stream\`** — toggle HTML streaming.
|
|
70
|
-
|
|
71
|
-
See https://vike.dev/pre-rendering.`
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: "vike-pagecontext",
|
|
75
|
-
description: "How to use pageContext in this Vike app. Use when reading request/route info in a component or passing custom values to the client.",
|
|
76
|
-
body: `\`pageContext\` carries request + render info — common props: \`routeParams\`, \`urlPathname\` / \`urlParsed\`, \`data\` (from \`+data\`), \`isClientSide\`.
|
|
77
|
-
- **Read it in a component:** \`import { usePageContext } from "${uiPkg}/usePageContext"\`, then \`const pageContext = usePageContext()\`.
|
|
78
|
-
- **Custom values:** set them on \`pageContext\` from a hook (\`+onBeforeRender\` or \`+data\`), and add their names to \`+passToClient\` so they reach the browser.
|
|
79
|
-
- **Types:** \`PageContext\` / \`PageContextServer\` / \`PageContextClient\` from \`vike/types\`.
|
|
80
|
-
|
|
81
|
-
See https://vike.dev/pageContext.`
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: "vike-hooks",
|
|
85
|
-
description: "The Vike hook system in this app. Use when you need a lifecycle hook — data orchestration, page-transition effects, post-hydration setup, or global init.",
|
|
86
|
-
body: `Hooks are \`+<name>.ts\` files (or keys in \`+config.ts\`) placed beside a page or globally under \`pages/\`. App-level hooks:
|
|
87
|
-
- **\`+onBeforeRender\`** (server) — advanced data orchestration; can set any \`pageContext\` prop.
|
|
88
|
-
- **\`+onPageTransitionStart\` / \`+onPageTransitionEnd\`** (client) — run around client-side navigation (e.g. a loading indicator); \`pageContext.isBackwardNavigation\` is available.
|
|
89
|
-
- **\`+onHydrationEnd\`** (client) — runs once after the first page hydrates; good for third-party / DOM-only init.
|
|
90
|
-
- **\`+onCreateGlobalContext\`** (server & client) — runs once when the global context is created; global / auth / store init.
|
|
91
|
-
- \`+data\` and \`+guard\` are the common data/auth hooks (see the \`vike-data-fetching\` skill); \`+onBeforePrerenderStart\` lists URLs for SSG (see \`vike-render-modes\`).
|
|
92
|
-
- \`+onRenderHtml\` / \`+onRenderClient\` / \`+onCreateApp\` are provided by \`${uiPkg}\` — you rarely write these.
|
|
93
|
-
|
|
94
|
-
See https://vike.dev/hooks.`
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
name: "vike-error-pages",
|
|
98
|
-
description: "How error pages work in this Vike app. Use when handling 404s, access errors, or rendering an error page by status code.",
|
|
99
|
-
body: `The error page is \`pages/_error/${pageFile}\` — Vike renders it for 404s and uncaught errors.
|
|
100
|
-
- **Trigger it:** \`import { render } from "vike/abort"\`, then \`throw render(404)\` (or \`401\` / \`403\` / \`500\`), optionally \`throw render(403, "Forbidden")\` to pass a reason. Use \`throw redirect("/login")\` (from \`vike/abort\`) to redirect instead.
|
|
101
|
-
- **Read the error** in \`_error\`: \`const { abortStatusCode, abortReason, is404 } = usePageContext()\` (from \`${uiPkg}/usePageContext\`).
|
|
102
|
-
- **Custom reason type:** augment \`Vike.PageContext\` with \`abortReason\` in a \`.d.ts\`.
|
|
103
|
-
- Pre-rendering emits the error page as \`dist/client/404.html\`.
|
|
104
|
-
|
|
105
|
-
See https://vike.dev/error-page.`
|
|
106
|
-
}
|
|
107
|
-
];
|
|
108
15
|
}
|
|
109
16
|
});
|
|
110
17
|
//#endregion
|
|
@@ -3,15 +3,10 @@ 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`),
|
|
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
|
-
enforce: "post",
|
|
12
|
-
if(meta) {
|
|
13
|
-
return meta.BATI.hasAiAgent;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
10
|
+
var bati_config_default = t({ enforce: "post" });
|
|
16
11
|
//#endregion
|
|
17
12
|
export { bati_config_default as default };
|