diff --git a/app/src/cli/commands/create/npm.ts b/app/src/cli/commands/create/npm.ts index 97376ea..49fd2c0 100644 --- a/app/src/cli/commands/create/npm.ts +++ b/app/src/cli/commands/create/npm.ts @@ -7,9 +7,9 @@ export type TPackageJson = Partial<{ main: string; version: string; scripts: Record; - dependencies: Record; - devDependencies: Record; - optionalDependencies: Record; + dependencies: Record; + devDependencies: Record; + optionalDependencies: Record; [key: string]: any; }>; diff --git a/app/src/cli/commands/create/templates/cloudflare.ts b/app/src/cli/commands/create/templates/cloudflare.ts index 8f0b0d9..58f2a9c 100644 --- a/app/src/cli/commands/create/templates/cloudflare.ts +++ b/app/src/cli/commands/create/templates/cloudflare.ts @@ -107,7 +107,7 @@ async function createLibsql(ctx: TemplateSetupCtx) { ...pkg, scripts: { ...pkg.scripts, - db: "turso db", + db: "turso dev", dev: "npm run db && wrangler dev" } })); diff --git a/app/src/cli/commands/create/templates/index.ts b/app/src/cli/commands/create/templates/index.ts index 34b6b9f..469827f 100644 --- a/app/src/cli/commands/create/templates/index.ts +++ b/app/src/cli/commands/create/templates/index.ts @@ -1,4 +1,6 @@ import { cloudflare } from "./cloudflare"; +import { nextjs } from "./nextjs"; +import { remix } from "./remix"; export type TemplateSetupCtx = { template: Template; @@ -32,6 +34,9 @@ export type Template = { }; export const templates: Template[] = [ + cloudflare, + nextjs, + remix, { key: "node", title: "Node.js Basic", @@ -48,27 +53,6 @@ export const templates: Template[] = [ path: "gh:bknd-io/bknd/examples/bun", ref: true }, - cloudflare, - { - key: "remix", - title: "Remix Basic", - integration: "remix", - description: "A basic bknd Remix starter", - path: "gh:bknd-io/bknd/examples/remix", - ref: true - }, - { - // @todo: add `concurrently`? - key: "nextjs", - title: "Next.js Basic", - integration: "nextjs", - description: "A basic bknd Next.js starter", - path: "gh:bknd-io/bknd/examples/nextjs", - scripts: { - install: "npm install --force" - }, - ref: true - }, { key: "astro", title: "Astro Basic", diff --git a/app/src/cli/commands/create/templates/nextjs.ts b/app/src/cli/commands/create/templates/nextjs.ts new file mode 100644 index 0000000..bd36c2a --- /dev/null +++ b/app/src/cli/commands/create/templates/nextjs.ts @@ -0,0 +1,29 @@ +import { overridePackageJson } from "cli/commands/create/npm"; +import type { Template } from "."; + +// @todo: add `concurrently`? +export const nextjs = { + key: "nextjs", + title: "Next.js Basic", + integration: "nextjs", + description: "A basic bknd Next.js starter", + path: "gh:bknd-io/bknd/examples/nextjs", + scripts: { + install: "npm install --force" + }, + ref: true, + preinstall: async (ctx) => { + // locally it's required to overwrite react, here it is not + await overridePackageJson( + (pkg) => ({ + ...pkg, + dependencies: { + ...pkg.dependencies, + react: undefined, + "react-dom": undefined + } + }), + { dir: ctx.dir } + ); + } +} as const satisfies Template; diff --git a/app/src/cli/commands/create/templates/remix.ts b/app/src/cli/commands/create/templates/remix.ts new file mode 100644 index 0000000..42d494e --- /dev/null +++ b/app/src/cli/commands/create/templates/remix.ts @@ -0,0 +1,25 @@ +import { overridePackageJson } from "cli/commands/create/npm"; +import type { Template } from "."; + +export const remix = { + key: "remix", + title: "Remix Basic", + integration: "remix", + description: "A basic bknd Remix starter", + path: "gh:bknd-io/bknd/examples/remix", + ref: true, + preinstall: async (ctx) => { + // locally it's required to overwrite react + await overridePackageJson( + (pkg) => ({ + ...pkg, + dependencies: { + ...pkg.dependencies, + react: "^18.2.0", + "react-dom": "^18.2.0" + } + }), + { dir: ctx.dir } + ); + } +} as const satisfies Template; diff --git a/bun.lockb b/bun.lockb index 796c220..63c76bc 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..c918180 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1 @@ +*/package-lock.json \ No newline at end of file diff --git a/examples/astro/package.json b/examples/astro/package.json index ed5f51e..7437959 100644 --- a/examples/astro/package.json +++ b/examples/astro/package.json @@ -7,8 +7,6 @@ "start": "astro dev", "build": "astro check && astro build", "preview": "astro preview", - "db": "turso dev --db-file test.db", - "db:check": "sqlite3 test.db \"PRAGMA wal_checkpoint(FULL);\"", "astro": "astro" }, "dependencies": { @@ -17,7 +15,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "astro": "^4.16.16", - "bknd": "workspace:*", + "bknd": "file:../../app", "react": "^18.3.1", "react-dom": "^18.3.1", "typescript": "^5.7.2" diff --git a/examples/bun/index.ts b/examples/bun/index.ts index bc8666b..a900a6f 100644 --- a/examples/bun/index.ts +++ b/examples/bun/index.ts @@ -8,10 +8,7 @@ import { type BunBkndConfig, serve } from "bknd/adapter/bun"; const config: BunBkndConfig = { connection: { url: ":memory:" - }, - // this is only required to run inside the same workspace - // leave blank if you're running this from a different project - distPath: "../../app/dist" + } }; serve(config); diff --git a/examples/bun/package.json b/examples/bun/package.json index 0892eec..46ea7ab 100644 --- a/examples/bun/package.json +++ b/examples/bun/package.json @@ -4,10 +4,11 @@ "type": "module", "private": true, "scripts": { - "dev": "bun run --hot index.ts" + "dev": "bun run --hot index.ts", + "start": "bun run index.ts" }, "dependencies": { - "bknd": "workspace:*" + "bknd": "file:../../app" }, "devDependencies": { "@types/bun": "latest" diff --git a/examples/cloudflare-worker/build.ts b/examples/cloudflare-worker/build.ts deleted file mode 100644 index 746b59e..0000000 --- a/examples/cloudflare-worker/build.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { $ } from "bun"; -//import { NodeModulesPolyfillPlugin } from "@esbuild-plugins/node-modules-polyfill"; -import esbuild from "esbuild"; - -const result = await esbuild.build({ - //plugins: [NodeModulesPolyfillPlugin()], - platform: "browser", - conditions: ["worker", "browser"], - entryPoints: ["./src/index.ts"], - outdir: "dist", - external: ["__STATIC_CONTENT_MANIFEST", "cloudflare:workers"], - format: "esm", - target: "es2022", - keepNames: true, - bundle: true, - metafile: true, - minify: true, - loader: { - ".html": "copy" - }, - define: { - IS_CLOUDFLARE_WORKER: "true" - } -}); - -await Bun.write("dist/meta.json", JSON.stringify(result.metafile)); -await $`gzip dist/index.js -c > dist/index.js.gz`; diff --git a/examples/cloudflare-worker/package.json b/examples/cloudflare-worker/package.json index 21e9b64..851d777 100644 --- a/examples/cloudflare-worker/package.json +++ b/examples/cloudflare-worker/package.json @@ -4,19 +4,17 @@ "private": true, "scripts": { "deploy": "wrangler deploy", - "db": "turso dev", "dev": "wrangler dev", "start": "wrangler dev", - "test": "vitest", "cf-typegen": "wrangler types" }, "dependencies": { - "bknd": "workspace:*", + "bknd": "file:../../app", "kysely-d1": "^0.3.0" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20241106.0", - "typescript": "^5.5.2", - "wrangler": "^3.86.0" + "@cloudflare/workers-types": "^4.20240620.0", + "typescript": "^5.5.3", + "wrangler": "^3.108.1" } } \ No newline at end of file diff --git a/examples/cloudflare-worker/wrangler.toml__ b/examples/cloudflare-worker/wrangler.toml__ deleted file mode 100644 index 1399d79..0000000 --- a/examples/cloudflare-worker/wrangler.toml__ +++ /dev/null @@ -1,20 +0,0 @@ -#:schema node_modules/wrangler/config-schema.json -name = "bknd-cf-worker-example" -main = "src/index.ts" -compatibility_date = "2025-02-04" -compatibility_flags = ["nodejs_compat"] -workers_dev = true -minify = true -assets = { directory = "../../app/dist/static" } - -[observability] -enabled = true - -[[d1_databases]] -binding = "DB" -database_name = "bknd-cf-example" -database_id = "7ad67953-2bbf-47fc-8696-f4517dbfe674" - -[[r2_buckets]] -binding = "BUCKET" -bucket_name = "bknd-cf-example" \ No newline at end of file diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index fc734a4..0a273a5 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -3,20 +3,17 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "npm run db & next dev", "db": "turso dev --db-file test.db", - "db:check": "sqlite3 test.db \"PRAGMA wal_checkpoint(FULL);\"", "build": "next build", - "start": "next start", + "start": "npm run db & next start", "lint": "next lint" }, "dependencies": { - "bknd": "workspace:*", - "next": "15.0.2" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" + "bknd": "file:../../app", + "next": "15.0.2", + "react": "file:../../node_modules/react", + "react-dom": "file:../../node_modules/react-dom" }, "devDependencies": { "typescript": "^5", diff --git a/examples/node/index.js b/examples/node/index.js index 8bb8422..edb6b80 100644 --- a/examples/node/index.js +++ b/examples/node/index.js @@ -8,10 +8,7 @@ import { serve } from "bknd/adapter/node"; const config = { connection: { url: ":memory:" - }, - // this is only required to run inside the same workspace - // leave blank if you're running this from a different project - distPath: "../../app/dist" + } }; serve(config); diff --git a/examples/node/package.json b/examples/node/package.json index 630b647..dfa1cd9 100644 --- a/examples/node/package.json +++ b/examples/node/package.json @@ -8,7 +8,7 @@ "dev": "tsx --watch index.js" }, "dependencies": { - "bknd": "workspace:*", + "bknd": "file:../../app", "@hono/node-server": "^1.13.3" }, "devDependencies": { diff --git a/examples/remix/package.json b/examples/remix/package.json index af957ff..5d90eb5 100644 --- a/examples/remix/package.json +++ b/examples/remix/package.json @@ -15,10 +15,10 @@ "@remix-run/node": "^2.15.2", "@remix-run/react": "^2.15.2", "@remix-run/serve": "^2.15.2", - "bknd": "workspace:*", + "bknd": "file:../../app", "isbot": "^5.1.18", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "file:../../node_modules/react", + "react-dom": "file:../../node_modules/react-dom", "remix-utils": "^7.0.0" }, "devDependencies": { diff --git a/package.json b/package.json index 4983624..8340b34 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ "workspaces": [ "app", "docs", - "packages/*", - "examples/*" + "packages/*" ] } \ No newline at end of file