@batijs/cli 0.0.629 → 0.0.630

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 (39) hide show
  1. package/dist/{asset-package.json-WJvmKmkO.js → asset-package.json-BKz7RIOA.js} +4 -2
  2. package/dist/asset-package.json-DKULIe-Z.js +26 -0
  3. package/dist/asset-package.json-DoD27uYD.js +26 -0
  4. package/dist/{asset-package.json-CHD5b5fl.js → asset-package.json-Y6cFx6TQ.js} +1 -0
  5. package/dist/boilerplates/@batijs/aws/files/$package.json.js +1 -1
  6. package/dist/boilerplates/@batijs/docker-compose/bati.config.mjs +17 -0
  7. package/dist/boilerplates/@batijs/docker-compose/files/$.dockerignore.js +19 -0
  8. package/dist/boilerplates/@batijs/docker-compose/files/$Dockerfile.js +81 -0
  9. package/dist/boilerplates/@batijs/docker-compose/files/docker-compose.yml +28 -0
  10. package/dist/boilerplates/@batijs/dokploy/bati.config.mjs +23 -0
  11. package/dist/boilerplates/@batijs/dokploy/files/$TODO.md.js +28 -0
  12. package/dist/boilerplates/@batijs/dokploy/files/$package.json.js +13 -0
  13. package/dist/boilerplates/@batijs/dokploy/files/asset-package.json.mjs +24 -0
  14. package/dist/boilerplates/@batijs/eslint/files/$package.json.js +3 -2
  15. package/dist/boilerplates/@batijs/eslint/files/asset-package.json.mjs +1 -0
  16. package/dist/boilerplates/@batijs/express/files/$package.json.js +5 -2
  17. package/dist/boilerplates/@batijs/fastify/files/$package.json.js +2 -3
  18. package/dist/boilerplates/@batijs/h3/files/$package.json.js +1 -2
  19. package/dist/boilerplates/@batijs/hono/files/$package.json.js +1 -2
  20. package/dist/boilerplates/@batijs/kysely/files/$package.json.js +1 -1
  21. package/dist/boilerplates/@batijs/kysely/files/$vite.config.ts.js +20 -0
  22. package/dist/boilerplates/@batijs/kysely/files/asset-package.json.mjs +4 -2
  23. package/dist/boilerplates/@batijs/kysely/files/vite-plugin-input.ts +28 -0
  24. package/dist/boilerplates/@batijs/kysely/types/vite-plugin-input.d.mts +17 -0
  25. package/dist/boilerplates/@batijs/oxlint/bati.config.mjs +6 -3
  26. package/dist/boilerplates/@batijs/pnpm/files/$pnpm-workspace.yaml.js +20 -13
  27. package/dist/boilerplates/@batijs/shadcn-ui/files/$package.json.js +2 -3
  28. package/dist/boilerplates/@batijs/shared/files/$package.json.js +23 -0
  29. package/dist/boilerplates/@batijs/sqlite/files/$package.json.js +2 -2
  30. package/dist/boilerplates/@batijs/storybook/files/$package.json.js +9 -0
  31. package/dist/boilerplates/@batijs/storybook/files/asset-package.json.mjs +24 -0
  32. package/dist/boilerplates/@batijs/vercel/files/$package.json.js +1 -1
  33. package/dist/boilerplates/@batijs/vue-sentry/files/$package.json.js +1 -1
  34. package/dist/boilerplates/boilerplates.json +13 -0
  35. package/dist/index.js +6 -3
  36. package/package.json +3 -3
  37. package/dist/boilerplates/@batijs/shared/files/package.json +0 -15
  38. /package/dist/{asset-package.json-CGHsBMPO.js → asset-package2.json-CGHsBMPO.js} +0 -0
  39. /package/dist/{asset-package.json-JaXo-ozU.js → asset-package2.json-JaXo-ozU.js} +0 -0
@@ -32,14 +32,16 @@ var package_default = {
32
32
  "./database/kysely/migrate": { "types": "./dist/types/database/kysely/migrate.d.mts" },
33
33
  "./database/kysely/migrations/001_create_todos_table": { "types": "./dist/types/database/kysely/migrations/001_create_todos_table.d.mts" },
34
34
  "./database/kysely/queries/todos": { "types": "./dist/types/database/kysely/queries/todos.d.mts" },
35
- "./database/kysely/types": { "types": "./dist/types/database/kysely/types.d.mts" }
35
+ "./database/kysely/types": { "types": "./dist/types/database/kysely/types.d.mts" },
36
+ "./vite-plugin-input": { "types": "./dist/types/vite-plugin-input.d.mts" }
36
37
  },
37
38
  typesVersions: { "*": {
38
39
  "database/kysely/db": ["./dist/types/database/kysely/db.d.mts"],
39
40
  "database/kysely/migrate": ["./dist/types/database/kysely/migrate.d.mts"],
40
41
  "database/kysely/migrations/001_create_todos_table": ["./dist/types/database/kysely/migrations/001_create_todos_table.d.mts"],
41
42
  "database/kysely/queries/todos": ["./dist/types/database/kysely/queries/todos.d.mts"],
42
- "database/kysely/types": ["./dist/types/database/kysely/types.d.mts"]
43
+ "database/kysely/types": ["./dist/types/database/kysely/types.d.mts"],
44
+ "vite-plugin-input": ["./dist/types/vite-plugin-input.d.mts"]
43
45
  } },
44
46
  nx: { "tags": ["type:boilerplate"] }
45
47
  };
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+
3
+ //#region ../../boilerplates/storybook/dist/files/asset-package.json.mjs
4
+ var package_default = {
5
+ name: "@batijs/storybook",
6
+ "private": true,
7
+ version: "0.0.1",
8
+ description: "",
9
+ type: "module",
10
+ scripts: {
11
+ "check-types": "tsc --noEmit",
12
+ "build": "bati-compile-boilerplate"
13
+ },
14
+ keywords: [],
15
+ author: "",
16
+ license: "MIT",
17
+ devDependencies: {
18
+ "@batijs/compile": "workspace:*",
19
+ "@batijs/core": "workspace:",
20
+ "@types/node": "^20.19.37"
21
+ },
22
+ files: ["dist/"],
23
+ nx: { "tags": ["type:boilerplate"] }
24
+ };
25
+ //#endregion
26
+ export { package_default as default };
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+
3
+ //#region ../../boilerplates/dokploy/dist/files/asset-package.json.mjs
4
+ var package_default = {
5
+ name: "@batijs/dokploy",
6
+ "private": true,
7
+ version: "0.0.1",
8
+ description: "",
9
+ type: "module",
10
+ scripts: {
11
+ "check-types": "tsc --noEmit",
12
+ "build": "bati-compile-boilerplate"
13
+ },
14
+ keywords: [],
15
+ author: "",
16
+ license: "MIT",
17
+ devDependencies: {
18
+ "@batijs/compile": "workspace:*",
19
+ "@batijs/core": "workspace:",
20
+ "@types/node": "^20.19.37"
21
+ },
22
+ nx: { "tags": ["type:boilerplate"] },
23
+ files: ["dist/"]
24
+ };
25
+ //#endregion
26
+ export { package_default as default };
@@ -25,6 +25,7 @@ var package_default = {
25
25
  "eslint-plugin-solid": "^0.14.5",
26
26
  "eslint-plugin-vue": "^10.9.1",
27
27
  "globals": "^17.6.0",
28
+ "jiti": "^2.6.1",
28
29
  "typescript-eslint": "^8.59.4",
29
30
  "vue-eslint-parser": "^10.4.0"
30
31
  },
@@ -18,7 +18,7 @@ async function getPackageJson(props) {
18
18
  }).setScript("cdk", {
19
19
  value: "cdk",
20
20
  precedence: 0
21
- }).addDependencies([
21
+ }).addDevDependencies([
22
22
  "aws-cdk-lib",
23
23
  "constructs",
24
24
  "source-map-support"
@@ -0,0 +1,17 @@
1
+ //#region ../../packages/core/dist/config.js
2
+ function e(e, t) {
3
+ if (!e) throw Error(t);
4
+ }
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`)), t;
7
+ }
8
+ //#endregion
9
+ //#region bati.config.ts
10
+ var bati_config_default = t({
11
+ if(meta) {
12
+ return meta.BATI.has("dokploy");
13
+ },
14
+ enforce: "post"
15
+ });
16
+ //#endregion
17
+ export { bati_config_default as default };
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+
3
+ //#region ../../boilerplates/docker-compose/dist/files/$.dockerignore.mjs
4
+ async function getDockerignore(props) {
5
+ const lines = [
6
+ "node_modules",
7
+ ".git",
8
+ "dist",
9
+ ".env",
10
+ ".env.*",
11
+ "!.env.example",
12
+ "*.log",
13
+ ".DS_Store"
14
+ ];
15
+ if (props.meta.BATI_TEST) lines.push("# e2e plumbing (lives in the sibling `<app>.e2e/` workspace, never the image)", "batijs-tests-utils-*.tgz", "bati.config.json", "vitest.config.ts", "*.spec.ts");
16
+ return `${lines.join("\n")}\n`;
17
+ }
18
+ //#endregion
19
+ export { getDockerignore as default };
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { dockerPackageManager, dockerfile, packageManager } from "@batijs/core";
4
+ //#region ../../boilerplates/docker-compose/dist/files/$Dockerfile.mjs
5
+ async function getDockerfile(props) {
6
+ const { meta } = props;
7
+ let pm = packageManager();
8
+ const deps = Object.keys({
9
+ ...props.packageJson.dependencies,
10
+ ...props.packageJson.devDependencies
11
+ });
12
+ if (pm.name === "bun" && deps.includes("better-sqlite3")) pm = {
13
+ name: "npm",
14
+ run: "npm run",
15
+ exec: "npx"
16
+ };
17
+ const nodeCli = pm.name === "bun" ? "bun" : "node";
18
+ const run = pm.run;
19
+ const config = dockerPackageManager(pm.name, { frozenLockfile: !meta.BATI_TEST });
20
+ const startupMigrations = [];
21
+ const migrationCopies = [];
22
+ if (meta.BATI.has("sqlite")) {
23
+ startupMigrations.push(`${run} sqlite:migrate`);
24
+ migrationCopies.push({
25
+ sources: ["/app/database/sqlite"],
26
+ dest: "./database/sqlite",
27
+ from: "builder"
28
+ });
29
+ }
30
+ if (meta.BATI.has("drizzle")) {
31
+ startupMigrations.push(`${run} drizzle:migrate`);
32
+ migrationCopies.push({
33
+ sources: ["/app/database/migrations"],
34
+ dest: "./database/migrations",
35
+ from: "deps-dev"
36
+ });
37
+ migrationCopies.push({
38
+ sources: ["/app/drizzle.config.ts"],
39
+ dest: "./drizzle.config.ts",
40
+ from: "builder"
41
+ });
42
+ }
43
+ if (meta.BATI.has("kysely")) {
44
+ startupMigrations.push(`${nodeCli} ./dist/server/migrate.mjs`);
45
+ migrationCopies.push({
46
+ sources: ["/app/database/kysely/migrations"],
47
+ dest: "./dist/server/migrations",
48
+ from: "builder"
49
+ });
50
+ }
51
+ const startCmd = startupMigrations.length > 0 ? [
52
+ "sh",
53
+ "-c",
54
+ [...startupMigrations, `${nodeCli} ./dist/server/index.mjs`].join(" && ")
55
+ ] : [nodeCli, "./dist/server/index.mjs"];
56
+ const installSources = ["package.json", ...config.lockfiles];
57
+ return `${dockerfile().from(config.image, {
58
+ as: "deps-dev",
59
+ comment: "install all dependencies (devDeps + deps) for build & migrations"
60
+ }).workdir("/app").when(config.corepack, (b) => b.run("corepack enable")).copy(["."], ".").run(config.install).when(meta.BATI.has("drizzle"), (b) => b.env({ DATABASE_URL: "/app/database/sqlite.db" }).run(`${run} drizzle:generate`)).from(config.image, {
61
+ as: "deps-prod",
62
+ comment: "install production-only dependencies for the runtime image"
63
+ }).workdir("/app").when(config.corepack, (b) => b.run("corepack enable")).copy(installSources, "./").run(config.installProd).from(config.image, {
64
+ as: "builder",
65
+ comment: "build the application"
66
+ }).workdir("/app").when(config.corepack, (b) => b.run("corepack enable")).copy(["/app/node_modules"], "./node_modules", { from: "deps-dev" }).copy(["."], ".").run(`${run} build`).from(config.image, {
67
+ as: "runner",
68
+ comment: "production runtime image"
69
+ }).workdir("/app").env({
70
+ NODE_ENV: "production",
71
+ PORT: "3000"
72
+ }).when(!meta.BATI.hasD1 && meta.BATI.hasDatabase, (b) => b.env({ DATABASE_URL: "/app/database/sqlite.db" }, { comment: "non-D1 database" })).when(meta.BATI.has("auth0"), (b) => b.env({
73
+ AUTH0_CLIENT_ID: "",
74
+ AUTH0_CLIENT_SECRET: "",
75
+ AUTH0_ISSUER_BASE_URL: ""
76
+ }, { comment: "auth0" })).when(meta.BATI.has("sentry"), (b) => b.env({ SENTRY_DSN: "" }, { comment: "sentry" })).when(config.corepack, (b) => b.run("corepack enable")).copy(installSources, "./").copy(["/app/node_modules"], "./node_modules", { from: "deps-prod" }).copy(["/app/dist"], "./dist", { from: "builder" }).pipe((b) => {
77
+ for (const { sources, dest, from } of migrationCopies) b.copy(sources, dest, { from });
78
+ }).expose(3e3).cmd(startCmd).build()}\n`;
79
+ }
80
+ //#endregion
81
+ export { getDockerfile as default };
@@ -0,0 +1,28 @@
1
+ services:
2
+ app:
3
+ build:
4
+ context: .
5
+ dockerfile: Dockerfile
6
+ ports:
7
+ - "${PORT:-3000}:3000"
8
+ environment:
9
+ - NODE_ENV=production
10
+ - PORT=3000
11
+ # !BATI.hasD1 && BATI.hasDatabase
12
+ - DATABASE_URL=${DATABASE_URL:-/app/data/db.sqlite}
13
+ # BATI.has("auth0")
14
+ - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
15
+ # BATI.has("auth0")
16
+ - AUTH0_CLIENT_SECRET=${AUTH0_CLIENT_SECRET}
17
+ # BATI.has("auth0")
18
+ - AUTH0_ISSUER_BASE_URL=${AUTH0_ISSUER_BASE_URL}
19
+ # BATI.has("sentry")
20
+ - SENTRY_DSN=${SENTRY_DSN}
21
+ # BATI.hasDatabase
22
+ volumes:
23
+ - sqlite_data:/app/data
24
+ restart: unless-stopped
25
+
26
+ # BATI.hasDatabase
27
+ volumes:
28
+ sqlite_data:
@@ -0,0 +1,23 @@
1
+ //#region ../../packages/core/dist/config.js
2
+ function e(e, t) {
3
+ if (!e) throw Error(t);
4
+ }
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`)), t;
7
+ }
8
+ //#endregion
9
+ //#region bati.config.ts
10
+ var bati_config_default = t({
11
+ if(meta) {
12
+ return meta.BATI.has("dokploy");
13
+ },
14
+ nextSteps(_meta, _packageManager, { bold }) {
15
+ return [{
16
+ type: "text",
17
+ step: `${bold("dokploy")}: Check ${bold("TODO.md")} for remaining steps.`
18
+ }];
19
+ },
20
+ enforce: "post"
21
+ });
22
+ //#endregion
23
+ export { bati_config_default as default };
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { loadMarkdown } from "@batijs/core";
4
+ //#region ../../boilerplates/dokploy/dist/files/$TODO.md.mjs
5
+ async function getTodo(props) {
6
+ const content = await loadMarkdown(props);
7
+ content.addMarkdownFeature(`
8
+ ## Dokploy
9
+
10
+ 1. **Push your repository** to a Git provider (GitHub, GitLab, Bitbucket, etc.)
11
+
12
+ 2. **Install Dokploy** on your VPS if you haven't already:
13
+ \`\`\`sh
14
+ curl -sSL https://dokploy.com/install.sh | sudo sh
15
+ \`\`\`
16
+
17
+ 3. **Open Dokploy** at \`http://<your-server-ip>:3000\` and complete the initial setup.
18
+
19
+ 4. **Create a new application** in the Dokploy dashboard and connect it to your repository.
20
+
21
+ 5. **Deploy** — Dokploy will use the \`docker-compose.yml\` at the root of your repository to build and start your application.
22
+
23
+ See also: https://docs.dokploy.com
24
+ `, "dokploy");
25
+ return content;
26
+ }
27
+ //#endregion
28
+ export { getTodo as default };
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { loadPackageJson } from "@batijs/core";
4
+ //#region ../../boilerplates/dokploy/dist/files/$package.json.mjs
5
+ async function getPackageJson(props) {
6
+ return (await loadPackageJson(props, await import("../../../../asset-package.json-DoD27uYD.js").then((x) => x.default))).setScript("prod", {
7
+ value: "docker compose up -d --build",
8
+ precedence: 25,
9
+ warnIfReplaced: true
10
+ });
11
+ }
12
+ //#endregion
13
+ export { getPackageJson as default };
@@ -0,0 +1,24 @@
1
+ //#region package.json
2
+ var package_default = {
3
+ name: "@batijs/dokploy",
4
+ "private": true,
5
+ version: "0.0.1",
6
+ description: "",
7
+ type: "module",
8
+ scripts: {
9
+ "check-types": "tsc --noEmit",
10
+ "build": "bati-compile-boilerplate"
11
+ },
12
+ keywords: [],
13
+ author: "",
14
+ license: "MIT",
15
+ devDependencies: {
16
+ "@batijs/compile": "workspace:*",
17
+ "@batijs/core": "workspace:",
18
+ "@types/node": "^20.19.37"
19
+ },
20
+ nx: { "tags": ["type:boilerplate"] },
21
+ files: ["dist/"]
22
+ };
23
+ //#endregion
24
+ export { package_default as default };
@@ -3,14 +3,15 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/eslint/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- return (await loadPackageJson(props, await import("../../../../asset-package.json-CHD5b5fl.js").then((x) => x.default))).setScript("lint", {
6
+ return (await loadPackageJson(props, await import("../../../../asset-package.json-Y6cFx6TQ.js").then((x) => x.default))).setScript("lint", {
7
7
  value: "eslint .",
8
8
  precedence: 0
9
9
  }).addDevDependencies([
10
10
  "eslint",
11
11
  "@eslint/js",
12
12
  "typescript-eslint",
13
- "globals"
13
+ "globals",
14
+ "jiti"
14
15
  ]).addDevDependencies(["eslint-plugin-prettier", "eslint-config-prettier"], props.meta.BATI.has("prettier")).addDevDependencies(["eslint-plugin-vue", "vue-eslint-parser"], props.meta.BATI.has("vue")).addDevDependencies(["eslint-plugin-react"], props.meta.BATI.has("react")).addDevDependencies(["eslint-plugin-solid"], props.meta.BATI.has("solid"));
15
16
  }
16
17
  //#endregion
@@ -23,6 +23,7 @@ var package_default = {
23
23
  "eslint-plugin-solid": "^0.14.5",
24
24
  "eslint-plugin-vue": "^10.9.1",
25
25
  "globals": "^17.6.0",
26
+ "jiti": "^2.6.1",
26
27
  "typescript-eslint": "^8.59.4",
27
28
  "vue-eslint-parser": "^10.4.0"
28
29
  },
@@ -3,10 +3,13 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/express/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- return (await loadPackageJson(props, await import("../../../../asset-package.json-CDtoELCL.js").then((x) => x.default))).addDevDependencies(["@types/express"]).addDependencies([
6
+ return (await loadPackageJson(props, await import("../../../../asset-package.json-CDtoELCL.js").then((x) => x.default))).addDevDependencies([
7
+ "@types/express",
8
+ "@types/node",
9
+ "vite"
10
+ ]).addDependencies([
7
11
  "@vikejs/express",
8
12
  "express",
9
- "vite",
10
13
  "vike"
11
14
  ]).addDependencies(["dotenv"], props.meta.BATI.has("auth0") || props.meta.BATI.hasDatabase);
12
15
  }
@@ -3,12 +3,11 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/fastify/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- return (await loadPackageJson(props, await import("../../../../asset-package.json-BWBP2Nt4.js").then((x) => x.default))).addDevDependencies(["@types/node"]).addDependencies([
6
+ return (await loadPackageJson(props, await import("../../../../asset-package.json-BWBP2Nt4.js").then((x) => x.default))).addDevDependencies(["@types/node", "vite"]).addDependencies([
7
7
  "@vikejs/fastify",
8
8
  "fastify",
9
9
  "fastify-raw-body",
10
- "vike",
11
- "vite"
10
+ "vike"
12
11
  ]).addDependencies(["dotenv"], props.meta.BATI.has("auth0") || props.meta.BATI.hasDatabase);
13
12
  }
14
13
  //#endregion
@@ -3,10 +3,9 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/h3/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- return (await loadPackageJson(props, await import("../../../../asset-package.json-s_vdtPYz.js").then((x) => x.default))).addDependencies([
6
+ return (await loadPackageJson(props, await import("../../../../asset-package.json-s_vdtPYz.js").then((x) => x.default))).addDevDependencies(["@types/node", "vite"]).addDependencies([
7
7
  "h3",
8
8
  "vike",
9
- "vite",
10
9
  "@vikejs/h3",
11
10
  "@universal-middleware/core"
12
11
  ]).addDependencies(["@auth/core"], props.meta.BATI.has("authjs") || props.meta.BATI.has("auth0")).addDependencies(["dotenv"], (props.meta.BATI.has("auth0") || props.meta.BATI.hasDatabase) && !props.meta.BATI.has("cloudflare"));
@@ -3,10 +3,9 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/hono/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- return (await loadPackageJson(props, await import("../../../../asset-package.json-D9HnGbn-.js").then((x) => x.default))).addDevDependencies(["@types/node"]).addDevDependencies(["@types/aws-lambda"], props.meta.BATI.has("aws")).addDependencies([
6
+ return (await loadPackageJson(props, await import("../../../../asset-package.json-D9HnGbn-.js").then((x) => x.default))).addDevDependencies(["@types/node", "vite"]).addDevDependencies(["@types/aws-lambda"], props.meta.BATI.has("aws")).addDependencies([
7
7
  "@vikejs/hono",
8
8
  "hono",
9
- "vite",
10
9
  "vike"
11
10
  ]).addDependencies(["dotenv"], (props.meta.BATI.has("auth0") || props.meta.BATI.hasDatabase) && !props.meta.BATI.has("cloudflare"));
12
11
  }
@@ -3,7 +3,7 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/kysely/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- const packageJson = await loadPackageJson(props, await import("../../../../asset-package.json-WJvmKmkO.js").then((x) => x.default));
6
+ const packageJson = await loadPackageJson(props, await import("../../../../asset-package.json-BKz7RIOA.js").then((x) => x.default));
7
7
  if (props.meta.BATI.hasD1) return packageJson.addDependencies(["kysely", "kysely-d1"]);
8
8
  return packageJson.setScript("kysely:migrate", {
9
9
  value: "tsx ./database/kysely/migrate.ts",
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { addVitePlugin, loadAsMagicast } from "@batijs/core";
4
+ //#region ../../boilerplates/kysely/dist/files/$vite.config.ts.mjs
5
+ async function getViteConfig(props) {
6
+ if (props.meta.BATI.hasD1) return;
7
+ const mod = await loadAsMagicast(props);
8
+ addVitePlugin(mod, {
9
+ from: "./vite-plugin-input.js",
10
+ constructor: "inputPlugin",
11
+ imported: "inputPlugin",
12
+ options: {
13
+ name: "migrate",
14
+ entry: "database/kysely/migrate.ts"
15
+ }
16
+ });
17
+ return mod.generate().code;
18
+ }
19
+ //#endregion
20
+ export { getViteConfig as default };
@@ -30,14 +30,16 @@ var package_default = {
30
30
  "./database/kysely/migrate": { "types": "./dist/types/database/kysely/migrate.d.mts" },
31
31
  "./database/kysely/migrations/001_create_todos_table": { "types": "./dist/types/database/kysely/migrations/001_create_todos_table.d.mts" },
32
32
  "./database/kysely/queries/todos": { "types": "./dist/types/database/kysely/queries/todos.d.mts" },
33
- "./database/kysely/types": { "types": "./dist/types/database/kysely/types.d.mts" }
33
+ "./database/kysely/types": { "types": "./dist/types/database/kysely/types.d.mts" },
34
+ "./vite-plugin-input": { "types": "./dist/types/vite-plugin-input.d.mts" }
34
35
  },
35
36
  typesVersions: { "*": {
36
37
  "database/kysely/db": ["./dist/types/database/kysely/db.d.mts"],
37
38
  "database/kysely/migrate": ["./dist/types/database/kysely/migrate.d.mts"],
38
39
  "database/kysely/migrations/001_create_todos_table": ["./dist/types/database/kysely/migrations/001_create_todos_table.d.mts"],
39
40
  "database/kysely/queries/todos": ["./dist/types/database/kysely/queries/todos.d.mts"],
40
- "database/kysely/types": ["./dist/types/database/kysely/types.d.mts"]
41
+ "database/kysely/types": ["./dist/types/database/kysely/types.d.mts"],
42
+ "vite-plugin-input": ["./dist/types/vite-plugin-input.d.mts"]
41
43
  } },
42
44
  nx: { "tags": ["type:boilerplate"] }
43
45
  };
@@ -0,0 +1,28 @@
1
+ /*{ @if (!it.BATI.hasD1) }*/
2
+ import type { Plugin } from "vite";
3
+
4
+ /**
5
+ * Add entries to the ssr build step. Used to compile kysely migration scripts
6
+ */
7
+ export function inputPlugin({ name, entry, env = "ssr" }: { name: string; entry: string; env?: string }): Plugin {
8
+ return {
9
+ name: `input-plugin:${name}`,
10
+
11
+ config() {
12
+ return {
13
+ environments: {
14
+ [env]: {
15
+ build: {
16
+ rolldownOptions: {
17
+ input: {
18
+ [name]: entry,
19
+ },
20
+ },
21
+ },
22
+ },
23
+ },
24
+ };
25
+ },
26
+ };
27
+ }
28
+ /*{ /if }*/
@@ -0,0 +1,17 @@
1
+ import { Plugin } from "vite";
2
+
3
+ //#region files/vite-plugin-input.d.ts
4
+ /**
5
+ * Add entries to the ssr build step. Used to compile kysely migration scripts
6
+ */
7
+ declare function inputPlugin({
8
+ name,
9
+ entry,
10
+ env
11
+ }: {
12
+ name: string;
13
+ entry: string;
14
+ env?: string;
15
+ }): Plugin;
16
+ //#endregion
17
+ export { inputPlugin };
@@ -7,8 +7,11 @@ function t(t) {
7
7
  }
8
8
  //#endregion
9
9
  //#region bati.config.ts
10
- var bati_config_default = t({ if(meta) {
11
- return meta.BATI.has("oxlint");
12
- } });
10
+ var bati_config_default = t({
11
+ if(meta) {
12
+ return meta.BATI.has("oxlint");
13
+ },
14
+ knip: { ignoreDependencies: ["oxlint", "oxlint-tsgolint"] }
15
+ });
13
16
  //#endregion
14
17
  export { bati_config_default as default };
@@ -1,25 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { loadYaml } from "@batijs/core";
3
+ import { YAMLMap, loadYaml } from "@batijs/core";
4
4
  //#region ../../boilerplates/pnpm/dist/files/$pnpm-workspace.yaml.mjs
5
- const dependenciesApproveBuild = [
6
- "@biomejs/biome",
7
- "@sentry/cli",
8
- "@tailwindcss/oxide",
9
- "better-sqlite3",
10
- "esbuild",
11
- "sharp",
12
- "workerd"
13
- ];
5
+ const dependenciesApproveBuild = {
6
+ "@biomejs/biome": true,
7
+ "@sentry/cli": true,
8
+ "@tailwindcss/oxide": true,
9
+ "better-sqlite3": true,
10
+ esbuild: true,
11
+ sharp: true,
12
+ workerd: true,
13
+ tsx: ["esbuild"]
14
+ };
14
15
  function intersect(a, b) {
15
16
  return a.filter((x) => b.includes(x));
16
17
  }
17
18
  async function getPnpmWorkspace(props) {
18
- const intersection = intersect(dependenciesApproveBuild, [...Object.keys(props.packageJson.dependencies ?? {}), ...Object.keys(props.packageJson.devDependencies ?? {})]);
19
+ const deps = [...Object.keys(props.packageJson.dependencies ?? {}), ...Object.keys(props.packageJson.devDependencies ?? {})];
20
+ const intersection = intersect(Object.keys(dependenciesApproveBuild), deps);
19
21
  if (intersection.length === 0) return;
20
22
  const pnpmWorkspace = await loadYaml(props, { fallbackEmpty: true });
21
- if (!pnpmWorkspace.has("onlyBuiltDependencies")) pnpmWorkspace.set("onlyBuiltDependencies", []);
22
- for (const pack of intersection) pnpmWorkspace.addIn(["onlyBuiltDependencies"], pack);
23
+ let allowBuilds = pnpmWorkspace.get("allowBuilds", true);
24
+ if (!allowBuilds) {
25
+ allowBuilds = new YAMLMap();
26
+ pnpmWorkspace.set("allowBuilds", allowBuilds);
27
+ }
28
+ for (const pack of intersection) if (dependenciesApproveBuild[pack] === true) allowBuilds.set(pack, true);
29
+ else if (Array.isArray(dependenciesApproveBuild[pack])) for (const pack2 of dependenciesApproveBuild[pack]) allowBuilds.set(pack2, true);
23
30
  return pnpmWorkspace;
24
31
  }
25
32
  //#endregion
@@ -12,9 +12,8 @@ async function getPackageJson(props) {
12
12
  "clsx",
13
13
  "tailwind-merge",
14
14
  "lucide-react",
15
- "@radix-ui/react-icons",
16
- "tw-animate-css"
17
- ]);
15
+ "@radix-ui/react-icons"
16
+ ]).addDevDependencies(["tw-animate-css"]);
18
17
  }
19
18
  //#endregion
20
19
  export { getPackageJson as default };
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+
3
+ //#region ../../boilerplates/shared/dist/files/$package.json.mjs
4
+ async function getPackageJson(props) {
5
+ const split = props.target.split(/[\\/]/);
6
+ split.pop();
7
+ return {
8
+ name: split.pop(),
9
+ scripts: {
10
+ dev: "vike dev",
11
+ build: "vike build",
12
+ preview: "vike build && vike preview"
13
+ },
14
+ dependencies: { vike: "0.4.259" },
15
+ devDependencies: {
16
+ typescript: "^6.0.3",
17
+ vite: "^8.0.13"
18
+ },
19
+ type: "module"
20
+ };
21
+ }
22
+ //#endregion
23
+ export { getPackageJson as default };
@@ -4,9 +4,9 @@ import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/sqlite/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
6
  return (await loadPackageJson(props, await import("../../../../asset-package.json-Cx9SXQz5.js").then((x) => x.default))).setScript("sqlite:migrate", {
7
- value: "tsx ./database/sqlite/schema/all.ts",
7
+ value: `tsx ./database/sqlite/schema/all.ts`,
8
8
  precedence: 1
9
- }).addDevDependencies(["@types/better-sqlite3"]).addDevDependencies(["tsx"], ["sqlite:migrate"]).addDependencies(["better-sqlite3", "dotenv"]);
9
+ }).addDevDependencies(["@types/better-sqlite3"]).addDependencies(["better-sqlite3"]).addDevDependencies(["tsx"], ["sqlite:migrate"]).addDependencies(["dotenv"]);
10
10
  }
11
11
  //#endregion
12
12
  export { getPackageJson as default };
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { loadPackageJson } from "@batijs/core";
4
+ //#region ../../boilerplates/storybook/dist/files/$package.json.mjs
5
+ async function getPackageJson(props) {
6
+ return (await loadPackageJson(props, await import("../../../../asset-package.json-DKULIe-Z.js").then((x) => x.default))).addDevDependencies(["@types/node"]);
7
+ }
8
+ //#endregion
9
+ export { getPackageJson as default };
@@ -0,0 +1,24 @@
1
+ //#region package.json
2
+ var package_default = {
3
+ name: "@batijs/storybook",
4
+ "private": true,
5
+ version: "0.0.1",
6
+ description: "",
7
+ type: "module",
8
+ scripts: {
9
+ "check-types": "tsc --noEmit",
10
+ "build": "bati-compile-boilerplate"
11
+ },
12
+ keywords: [],
13
+ author: "",
14
+ license: "MIT",
15
+ devDependencies: {
16
+ "@batijs/compile": "workspace:*",
17
+ "@batijs/core": "workspace:",
18
+ "@types/node": "^20.19.37"
19
+ },
20
+ files: ["dist/"],
21
+ nx: { "tags": ["type:boilerplate"] }
22
+ };
23
+ //#endregion
24
+ export { package_default as default };
@@ -3,7 +3,7 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/vercel/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- return (await loadPackageJson(props, await import("../../../../asset-package.json-JaXo-ozU.js").then((x) => x.default))).removeScript("prod").addDependencies(["vite-plugin-vercel"]);
6
+ return (await loadPackageJson(props, await import("../../../../asset-package2.json-JaXo-ozU.js").then((x) => x.default))).removeScript("prod").addDevDependencies(["vite-plugin-vercel"]);
7
7
  }
8
8
  //#endregion
9
9
  export { getPackageJson as default };
@@ -3,7 +3,7 @@
3
3
  import { loadPackageJson } from "@batijs/core";
4
4
  //#region ../../boilerplates/vue-sentry/dist/files/$package.json.mjs
5
5
  async function getPackageJson(props) {
6
- return (await loadPackageJson(props, await import("../../../../asset-package.json-CGHsBMPO.js").then((x) => x.default))).addDependencies(["@sentry/vue"]);
6
+ return (await loadPackageJson(props, await import("../../../../asset-package2.json-CGHsBMPO.js").then((x) => x.default))).addDependencies(["@sentry/vue"]);
7
7
  }
8
8
  //#endregion
9
9
  export { getPackageJson as default };
@@ -53,6 +53,18 @@
53
53
  "files"
54
54
  ]
55
55
  },
56
+ {
57
+ "folder": "@batijs/docker-compose",
58
+ "subfolders": [
59
+ "files"
60
+ ]
61
+ },
62
+ {
63
+ "folder": "@batijs/dokploy",
64
+ "subfolders": [
65
+ "files"
66
+ ]
67
+ },
56
68
  {
57
69
  "folder": "@batijs/drizzle",
58
70
  "subfolders": [
@@ -219,6 +231,7 @@
219
231
  {
220
232
  "folder": "@batijs/storybook",
221
233
  "subfolders": [
234
+ "files",
222
235
  "hooks"
223
236
  ]
224
237
  },
package/dist/index.js CHANGED
@@ -154,7 +154,9 @@ async function transformFileAfterExec(filepath, fileContent) {
154
154
  case ".env.production.local":
155
155
  case ".html":
156
156
  case ".md":
157
- case ".toml": return fileContent;
157
+ case ".toml":
158
+ case "Dockerfile":
159
+ case ".dockerignore": return fileContent;
158
160
  case ".json":
159
161
  case ".jsonc":
160
162
  if (typeof fileContent === "string") return fileContent;
@@ -2617,7 +2619,7 @@ function kebabCase(str, joiner) {
2617
2619
  //#endregion
2618
2620
  //#region package.json
2619
2621
  var name = "@batijs/cli";
2620
- var version = "0.0.629";
2622
+ var version = "0.0.630";
2621
2623
  var description = "Next-gen scaffolder. Get started with fully-functional apps, and choose any tool you want";
2622
2624
  //#endregion
2623
2625
  //#region rules.ts
@@ -2638,6 +2640,7 @@ const rulesMessages = {
2638
2640
  [RulesMessage.ERROR_COMPILED_R_REACT]: error(`${inverse(bold("React"))} is required when using ${inverse(bold("Compiled"))}`),
2639
2641
  [RulesMessage.ERROR_MANTINE_R_REACT]: error(`${inverse(bold("React"))} is required when using ${inverse(bold("Mantine"))}`),
2640
2642
  [RulesMessage.ERROR_DRIZZLE_R_SERVER]: error(`A ${inverse(bold("Server"))} is required when using ${inverse(bold("Drizzle"))}`),
2643
+ [RulesMessage.ERROR_SQLITE_R_SERVER]: error(`A ${inverse(bold("Server"))} is required when using ${inverse(bold("SQLite"))}`),
2641
2644
  [RulesMessage.ERROR_KYSELY_R_SERVER]: error(`A ${inverse(bold("Server"))} is required when using ${inverse(bold("Kysely"))}`),
2642
2645
  [RulesMessage.ERROR_DATA_R_SERVER]: error(`A ${inverse(bold("Server"))} is required when using ${inverse(bold("Data fetching"))}`),
2643
2646
  [RulesMessage.ERROR_CLOUDFLARE_R_COMPAT_SERVER]: error(`${inverse(bold("Cloudflare"))} is only compatible with ${inverse(bold("Hono"))} or ${inverse(bold("H3"))}.
@@ -3003,7 +3006,7 @@ async function run() {
3003
3006
  await checkFlagsIncludesUiFramework(flags);
3004
3007
  checkRules(flags);
3005
3008
  const meta = {
3006
- BATI: new BatiSet(flags, features),
3009
+ BATI: new BatiSet(flags, features, pm.name),
3007
3010
  BATI_TEST: Boolean(process.env.BATI_TEST),
3008
3011
  BATI_SKIP_GIT: args["skip-git"],
3009
3012
  BATI_IS_CI: Boolean(process.env.CI)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@batijs/cli",
3
- "version": "0.0.629",
3
+ "version": "0.0.630",
4
4
  "type": "module",
5
5
  "keywords": [],
6
6
  "description": "Next-gen scaffolder. Get started with fully-functional apps, and choose any tool you want",
@@ -20,8 +20,8 @@
20
20
  "typescript": "^6.0.3",
21
21
  "unplugin-purge-polyfills": "^0.1.0",
22
22
  "vite": "^8.0.14",
23
- "@batijs/compile": "0.0.629",
24
- "@batijs/build": "0.0.629"
23
+ "@batijs/build": "0.0.630",
24
+ "@batijs/compile": "0.0.630"
25
25
  },
26
26
  "dependencies": {
27
27
  "@batijs/core": "",
@@ -1,15 +0,0 @@
1
- {
2
- "scripts": {
3
- "dev": "vike dev",
4
- "build": "vike build",
5
- "preview": "vike build && vike preview"
6
- },
7
- "dependencies": {
8
- "vike": "0.4.259"
9
- },
10
- "devDependencies": {
11
- "typescript": "^6.0.3",
12
- "vite": "^8.0.14"
13
- },
14
- "type": "module"
15
- }