@farbenmeer/bunny 0.3.5 → 0.4.1

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 (69) hide show
  1. package/boilerplate.tar.gz +0 -0
  2. package/dist/cli/build.d.ts.map +1 -1
  3. package/dist/cli/build.js +31 -5
  4. package/dist/cli/build.js.map +1 -1
  5. package/dist/cli/dev.d.ts.map +1 -1
  6. package/dist/cli/dev.js +18 -7
  7. package/dist/cli/dev.js.map +1 -1
  8. package/dist/cli/generate-server.d.ts.map +1 -1
  9. package/dist/cli/generate-server.js +4 -0
  10. package/dist/cli/generate-server.js.map +1 -1
  11. package/dist/cli/init.d.ts.map +1 -1
  12. package/dist/cli/init.js +2 -0
  13. package/dist/cli/init.js.map +1 -1
  14. package/dist/cli/recipes.d.ts +4 -0
  15. package/dist/cli/recipes.d.ts.map +1 -0
  16. package/dist/cli/recipes.js +45 -0
  17. package/dist/cli/recipes.js.map +1 -0
  18. package/dist/cli/start.d.ts.map +1 -1
  19. package/dist/cli/start.js +3 -0
  20. package/dist/cli/start.js.map +1 -1
  21. package/dist/cli.js +3 -1
  22. package/dist/cli.js.map +1 -1
  23. package/dist/client.d.ts +1 -1
  24. package/dist/client.d.ts.map +1 -1
  25. package/dist/client.js +19 -2
  26. package/dist/client.js.map +1 -1
  27. package/dist/constants.d.ts +2 -0
  28. package/dist/constants.d.ts.map +1 -0
  29. package/dist/constants.js +2 -0
  30. package/dist/constants.js.map +1 -0
  31. package/dist/manifest.d.ts +5 -0
  32. package/dist/manifest.d.ts.map +1 -0
  33. package/dist/manifest.js +1 -0
  34. package/dist/manifest.js.map +1 -0
  35. package/dist/server/create-bunny-app.d.ts +18 -0
  36. package/dist/server/create-bunny-app.d.ts.map +1 -0
  37. package/dist/server/create-bunny-app.js +76 -0
  38. package/dist/server/create-bunny-app.js.map +1 -0
  39. package/dist/server/node-http-adapter.d.ts.map +1 -0
  40. package/dist/{node-http-adapter.js → server/node-http-adapter.js} +6 -2
  41. package/dist/server/node-http-adapter.js.map +1 -0
  42. package/dist/server.d.ts +1 -13
  43. package/dist/server.d.ts.map +1 -1
  44. package/dist/server.js +1 -52
  45. package/dist/server.js.map +1 -1
  46. package/dist/worker/cache-static-files.d.ts +3 -0
  47. package/dist/worker/cache-static-files.d.ts.map +1 -0
  48. package/dist/worker/cache-static-files.js +7 -0
  49. package/dist/worker/cache-static-files.js.map +1 -0
  50. package/dist/worker/contants.d.ts +3 -0
  51. package/dist/worker/contants.d.ts.map +1 -0
  52. package/dist/worker/contants.js +3 -0
  53. package/dist/worker/contants.js.map +1 -0
  54. package/dist/worker/serve-static-files.d.ts +3 -0
  55. package/dist/worker/serve-static-files.d.ts.map +1 -0
  56. package/dist/worker/serve-static-files.js +12 -0
  57. package/dist/worker/serve-static-files.js.map +1 -0
  58. package/dist/worker.d.ts +2 -0
  59. package/dist/worker.d.ts.map +1 -0
  60. package/dist/worker.js +35 -0
  61. package/dist/worker.js.map +1 -0
  62. package/package.json +6 -5
  63. package/recipes/better-auth.md +63 -0
  64. package/recipes/drizzle-orm.md +5 -0
  65. package/recipes/farbenmeer-router.md +44 -0
  66. package/recipes/tailwind.md +29 -0
  67. package/dist/node-http-adapter.d.ts.map +0 -1
  68. package/dist/node-http-adapter.js.map +0 -1
  69. /package/dist/{node-http-adapter.d.ts → server/node-http-adapter.d.ts} +0 -0
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,KAAK,SAyFd,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,KAAK,SAsHd,CAAC"}
package/dist/cli/build.js CHANGED
@@ -1,13 +1,14 @@
1
- import { Command } from "commander";
2
- import esbuild from "esbuild";
3
1
  import { existsSync } from "node:fs";
4
- import { mkdir, readFile, rm } from "node:fs/promises";
2
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
5
3
  import path from "node:path";
4
+ import { Command } from "commander";
5
+ import esbuild from "esbuild";
6
6
  import * as vite from "vite";
7
7
  import viteTsconfigPaths from "vite-tsconfig-paths";
8
8
  import { loadEnv } from "../load-env.js";
9
9
  import { generateServer } from "./generate-server.js";
10
10
  import { readConfig } from "./read-config.js";
11
+ import { randomUUID } from "node:crypto";
11
12
  export const build = new Command()
12
13
  .name("build")
13
14
  .option("--sourcemap", "Generate sourcemaps", true)
@@ -17,18 +18,21 @@ export const build = new Command()
17
18
  const config = await readConfig();
18
19
  const bunnyDir = path.join(process.cwd(), ".bunny", "prod");
19
20
  const srcDir = path.join(process.cwd(), "src");
21
+ const distDir = path.join(bunnyDir, "dist");
20
22
  if (existsSync(bunnyDir)) {
21
23
  await rm(bunnyDir, { recursive: true, force: true });
22
24
  }
23
25
  await mkdir(bunnyDir, { recursive: true });
24
26
  loadEnv("production");
25
- await vite.build({
27
+ const buildId = randomUUID();
28
+ await writeFile(path.join(bunnyDir, "buildId.txt"), buildId);
29
+ const clientBuildOutput = await vite.build({
26
30
  configFile: false,
27
31
  root: srcDir,
28
32
  mode: "production",
29
33
  ...config.vite,
30
34
  build: {
31
- outDir: path.join(bunnyDir, "dist"),
35
+ outDir: distDir,
32
36
  sourcemap: options.sourcemap,
33
37
  emptyOutDir: false,
34
38
  ...config.vite?.build,
@@ -56,6 +60,7 @@ export const build = new Command()
56
60
  platform: "node",
57
61
  target: "node24",
58
62
  entryNames: "server",
63
+ outExtension: { ".js": ".cjs" },
59
64
  packages: "bundle",
60
65
  metafile: true,
61
66
  });
@@ -88,5 +93,26 @@ export const build = new Command()
88
93
  console.log("Output Size:", Math.round(apiMeta.bytes / 1000), "kiB");
89
94
  }
90
95
  }
96
+ const clientFiles = Array.isArray(clientBuildOutput)
97
+ ? clientBuildOutput
98
+ : [clientBuildOutput];
99
+ const manifest = {
100
+ buildId,
101
+ staticCachedFiles: clientFiles.flatMap((build) => build.output.map((file) => `/${file.fileName}`)),
102
+ };
103
+ await esbuild.build({
104
+ entryPoints: [path.resolve(import.meta.dirname, "../worker.js")],
105
+ bundle: true,
106
+ minify: true,
107
+ sourcemap: options.sourcemap,
108
+ platform: "browser",
109
+ target: "es2020",
110
+ outdir: path.join(bunnyDir, "dist"),
111
+ entryNames: "sw",
112
+ define: {
113
+ __BUNNY_MANIFEST: JSON.stringify(JSON.stringify(manifest)),
114
+ },
115
+ });
116
+ console.log("Bunny: Built Service Worker");
91
117
  });
92
118
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,GAAG,SAuIZ,CAAC"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,GAAG,SAmJZ,CAAC"}
package/dist/cli/dev.js CHANGED
@@ -8,7 +8,7 @@ import path from "node:path";
8
8
  import { createServer } from "vite";
9
9
  import viteTsconfigPaths from "vite-tsconfig-paths";
10
10
  import { loadEnv } from "../load-env.js";
11
- import { fromResponse, toRequest } from "../node-http-adapter.js";
11
+ import { fromResponse, toRequest } from "../server/node-http-adapter.js";
12
12
  import { readConfig } from "./read-config.js";
13
13
  export const dev = new Command()
14
14
  .name("dev")
@@ -45,7 +45,6 @@ export const dev = new Command()
45
45
  hooks: {
46
46
  error: (error) => {
47
47
  console.error(error);
48
- return error;
49
48
  },
50
49
  },
51
50
  });
@@ -73,7 +72,7 @@ export const dev = new Command()
73
72
  name: "bunny-hot-reload",
74
73
  setup(build) {
75
74
  build.onEnd(async (result) => {
76
- console.log("Bunny: Hot-Reload Server");
75
+ console.info("Bunny: Hot-Reload Server");
77
76
  result.warnings.forEach((warning) => {
78
77
  console.warn("Bunny Server:", warning);
79
78
  });
@@ -88,9 +87,9 @@ export const dev = new Command()
88
87
  const apiMeta = result.metafile?.outputs[entryPoint];
89
88
  if (!apiMeta)
90
89
  throw new Error("Api Metadata not found");
91
- console.log("Bunny: Built API");
92
- console.log("User Modules:", Object.keys(apiMeta.inputs));
93
- console.log("Output Size:", Math.round(apiMeta.bytes / 1000), "kiB");
90
+ console.info("Bunny: Built API");
91
+ console.info("User Modules:", Object.keys(apiMeta.inputs));
92
+ console.info("Output Size:", Math.round(apiMeta.bytes / 1000), "kiB");
94
93
  await reload(path.join(process.cwd(), entryPoint));
95
94
  });
96
95
  },
@@ -122,10 +121,22 @@ export const dev = new Command()
122
121
  res.end();
123
122
  return;
124
123
  }
124
+ if (url.pathname === "/sw.js") {
125
+ res.appendHeader("Cache-Control", "no-store");
126
+ res.write(`
127
+ self.addEventListener('install', async (event) => {
128
+ console.info("Remove Service Worker");
129
+ await self.skipWaiting();
130
+ self.registration.unregister();
131
+ });
132
+ `);
133
+ res.end();
134
+ return;
135
+ }
125
136
  next();
126
137
  });
127
138
  app.use(viteServer.middlewares);
128
139
  app.listen(parseInt(port, 10));
129
- console.log(`Dev-Server started on port ${port}`);
140
+ console.info(`Dev-Server started on port ${port}`);
130
141
  });
131
142
  //# sourceMappingURL=dev.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-server.d.ts","sourceRoot":"","sources":["../../src/cli/generate-server.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,UAc5C"}
1
+ {"version":3,"file":"generate-server.d.ts","sourceRoot":"","sources":["../../src/cli/generate-server.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,UAkB5C"}
@@ -1,6 +1,10 @@
1
1
  export function generateServer(apiPath, apiInfo) {
2
2
  return `
3
3
  const { createBunnyApp } = require("@farbenmeer/bunny/server")
4
+ const { readFileSync } = require("fs")
5
+ const path = require("path")
6
+
7
+ const buildId = readFileSync(path.resolve(__dirname, "buildId.txt"), "utf-8")
4
8
 
5
9
  createBunnyApp({
6
10
  api: () => import("${apiPath}"),
@@ -1 +1 @@
1
- {"version":3,"file":"generate-server.js","sourceRoot":"","sources":["../../src/cli/generate-server.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,OAA2C;IAE3C,OAAO;;;;uBAIc,OAAO;;;cAGhB,OAAO,CAAC,KAAK;gBACX,OAAO,CAAC,OAAO;;;CAG9B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"generate-server.js","sourceRoot":"","sources":["../../src/cli/generate-server.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,OAA2C;IAE3C,OAAO;;;;;;;;uBAQc,OAAO;;;cAGhB,OAAO,CAAC,KAAK;gBACX,OAAO,CAAC,OAAO;;;CAG9B,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,eAAO,MAAM,IAAI,SAgFb,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,IAAI,SAkFb,CAAC"}
package/dist/cli/init.js CHANGED
@@ -5,6 +5,7 @@ import path from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { promisify } from "node:util";
7
7
  import * as tar from "tar";
8
+ import { copyRecipes } from "./recipes.js";
8
9
  const $ = promisify(exec);
9
10
  export const init = new Command()
10
11
  .name("init")
@@ -61,6 +62,7 @@ export const init = new Command()
61
62
  const result = await $(`${pm} install`);
62
63
  console.log(result.stdout);
63
64
  console.error(result.stderr);
65
+ await copyRecipes();
64
66
  console.log("Project initialized successfully!");
65
67
  });
66
68
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE;KAC9B,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,0BAA0B,CAAC;KACvC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KACzC,MAAM,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACxC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,qCAAqC,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAElD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9B,6BAA6B,CAC9B,CAAC;IACF,MAAM,GAAG,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,eAAe,EAAE,CAAC;KACnB,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEzD,MAAM,EAAE,GACN,CAAC,OAAO,CAAC,GAAG;QACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CACtC,sBAAsB,CACvB,EAAE,CAAC,CAAC,CAAC,CAAC;QACT,KAAK,CAAC;IAER,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACjE,CAAC;IAEF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;IAE9B,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACrC,CAAC;IAEF,IAAI,UAAU,GAAG,MAAM,QAAQ,CAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EACtC,MAAM,CACP,CAAC;IAEF,UAAU,GAAG,UAAU;SACpB,OAAO,CACN,0BAA0B,EAC1B,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,4BAA4B,CAC5D;SACA,OAAO,CAAC,wBAAwB,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC;IAErE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE7B,MAAM,WAAW,EAAE,CAAC;IAEpB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ export declare const recipes: Command;
3
+ export declare function copyRecipes(only?: string): Promise<void>;
4
+ //# sourceMappingURL=recipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/cli/recipes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,OAAO,SAyBhB,CAAC;AAEL,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,iBAsB9C"}
@@ -0,0 +1,45 @@
1
+ import { Command } from "commander";
2
+ import { copyFile, mkdir, readdir } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ export const recipes = new Command()
6
+ .name("recipes")
7
+ .description("Get the latest recipes for adding functionality to your project")
8
+ .option("--only <recipe>", "Only add the specified recipe")
9
+ .option("--list", "List all available recipes")
10
+ .action(async ({ only, list }) => {
11
+ if (list) {
12
+ const sourceDir = path.resolve(fileURLToPath(import.meta.url), "../../../recipes");
13
+ const availableRecipes = await readdir(sourceDir);
14
+ console.log("Available recipes:");
15
+ for (const recipe of availableRecipes) {
16
+ const match = recipe.match(/(.+)\.md$/);
17
+ if (!match)
18
+ continue;
19
+ const [, name] = match;
20
+ console.log(`- ${name}`);
21
+ }
22
+ return;
23
+ }
24
+ await copyRecipes(only);
25
+ });
26
+ export async function copyRecipes(only) {
27
+ const sourceDir = path.resolve(fileURLToPath(import.meta.url), "../../../recipes");
28
+ const targetDir = path.resolve(process.cwd(), "recipes");
29
+ await mkdir(targetDir, { recursive: true });
30
+ if (only) {
31
+ const sourcePath = path.join(sourceDir, `${only}.md`);
32
+ const targetPath = path.join(targetDir, `${only}.md`);
33
+ await copyFile(sourcePath, targetPath);
34
+ console.log(`Copied ${only} recipe to ${targetPath}`);
35
+ return;
36
+ }
37
+ const availableRecipes = await readdir(sourceDir);
38
+ for (const recipe of availableRecipes) {
39
+ const sourcePath = path.join(sourceDir, recipe);
40
+ const targetPath = path.join(targetDir, recipe);
41
+ await copyFile(sourcePath, targetPath);
42
+ }
43
+ console.log(`Copied ${availableRecipes.length} recipes to ${targetDir}`);
44
+ }
45
+ //# sourceMappingURL=recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/cli/recipes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CACV,iEAAiE,CAClE;KACA,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;IAC/B,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAC5B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9B,kBAAkB,CACnB,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAa;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAC5B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9B,kBAAkB,CACnB,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACtD,MAAM,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc,UAAU,EAAE,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,UAAU,gBAAgB,CAAC,MAAM,eAAe,SAAS,EAAE,CAAC,CAAC;AAC3E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,KAAK,SAmBd,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,KAAK,SAwBd,CAAC"}
package/dist/cli/start.js CHANGED
@@ -10,12 +10,15 @@ export const start = new Command()
10
10
  const bunnyDir = path.join(process.cwd(), ".bunny", "prod");
11
11
  const packageJson = JSON.parse(await readFile(path.join(process.cwd(), "package.json"), "utf-8"));
12
12
  process.env.NODE_ENV = "production";
13
+ const buildId = await readFile(path.join(bunnyDir, "buildId.txt"), "utf-8");
14
+ console.info(`Starting Bunny Production Server\nBuild ${buildId}`);
13
15
  createBunnyApp({
14
16
  api: () => import(path.join(bunnyDir, "api.cjs")),
15
17
  dist: path.join(bunnyDir, "dist"),
16
18
  apiInfo: {
17
19
  title: packageJson.name,
18
20
  version: packageJson.version,
21
+ buildId,
19
22
  },
20
23
  }).listen(parseInt(options.port, 10));
21
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,EAAE;KAC/B,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,MAAM,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAClE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;IAEpC,cAAc,CAAC;QACb,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;QACjC,OAAO,EAAE;YACP,KAAK,EAAE,WAAW,CAAC,IAAI;YACvB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B;KACF,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,EAAE;KAC/B,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,MAAM,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAClE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;IAEpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;IAE5E,OAAO,CAAC,IAAI,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;IAEnE,cAAc,CAAC;QACb,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;QACjC,OAAO,EAAE;YACP,KAAK,EAAE,WAAW,CAAC,IAAI;YACvB,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,OAAO;SACR;KACF,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
package/dist/cli.js CHANGED
@@ -4,6 +4,7 @@ import { init } from "./cli/init.js";
4
4
  import { dev } from "./cli/dev.js";
5
5
  import { build } from "./cli/build.js";
6
6
  import { start } from "./cli/start.js";
7
+ import { recipes } from "./cli/recipes.js";
7
8
  const program = new Command();
8
9
  program
9
10
  .name("bunny")
@@ -12,6 +13,7 @@ program
12
13
  .addCommand(init)
13
14
  .addCommand(dev)
14
15
  .addCommand(build)
15
- .addCommand(start);
16
+ .addCommand(start)
17
+ .addCommand(recipes);
16
18
  await program.parseAsync(process.argv);
17
19
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,OAAO,CAAC;KAChB,UAAU,CAAC,IAAI,CAAC;KAChB,UAAU,CAAC,GAAG,CAAC;KACf,UAAU,CAAC,KAAK,CAAC;KACjB,UAAU,CAAC,KAAK,CAAC,CAAC;AAErB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,OAAO,CAAC;KAChB,UAAU,CAAC,IAAI,CAAC;KAChB,UAAU,CAAC,GAAG,CAAC;KACf,UAAU,CAAC,KAAK,CAAC;KACjB,UAAU,CAAC,KAAK,CAAC;KACjB,UAAU,CAAC,OAAO,CAAC,CAAC;AAEvB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from "@farbenmeer/tapi/client";
2
1
  export * from "@farbenmeer/react-tapi";
2
+ export * from "@farbenmeer/tapi/client";
3
3
  import { type ReactNode } from "react";
4
4
  export declare function startBunnyClient(app: ReactNode): void;
5
5
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG7D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,QAqB9C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAG7D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,QAsC9C"}
package/dist/client.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export * from "@farbenmeer/tapi/client";
3
2
  export * from "@farbenmeer/react-tapi";
3
+ export * from "@farbenmeer/tapi/client";
4
4
  import { StrictMode, Suspense } from "react";
5
5
  import { createRoot } from "react-dom/client";
6
6
  export function startBunnyClient(app) {
@@ -12,11 +12,28 @@ export function startBunnyClient(app) {
12
12
  }
13
13
  const wrapped = (_jsx(StrictMode, { children: _jsx(Suspense, { children: app }) }));
14
14
  if (import.meta.hot) {
15
- const root = (import.meta.hot.data.root ??= createRoot(elem));
15
+ if (!import.meta.hot.data.root) {
16
+ import.meta.hot.data.root = createRoot(elem);
17
+ }
18
+ const root = import.meta.hot.data.root;
16
19
  root.render(wrapped);
17
20
  }
18
21
  else {
19
22
  createRoot(elem).render(wrapped);
20
23
  }
24
+ if (import.meta.env.PROD) {
25
+ if ("serviceWorker" in navigator) {
26
+ try {
27
+ navigator.serviceWorker.register("/sw.js", {
28
+ scope: "/",
29
+ updateViaCache: "none",
30
+ });
31
+ console.info("Bunny: Service worker registered");
32
+ }
33
+ catch (error) {
34
+ console.error("Bunny: Failed to register service worker", error);
35
+ }
36
+ }
37
+ }
21
38
  }
22
39
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":";AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,UAAU,gBAAgB,CAAC,GAAc;IAC7C,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,CACd,KAAC,UAAU,cACT,KAAC,QAAQ,cAAE,GAAG,GAAY,GACf,CACd,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":";AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAkB,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,UAAU,gBAAgB,CAAC,GAAc;IAC7C,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,CACd,KAAC,UAAU,cACT,KAAC,QAAQ,cAAE,GAAG,GAAY,GACf,CACd,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,eAAe,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBACzC,KAAK,EAAE,GAAG;oBACV,cAAc,EAAE,MAAM;iBACvB,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const INVALIDATIONS_ROUTE = "/__bunny/invalidations";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const INVALIDATIONS_ROUTE = "/__bunny/invalidations";
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface BunnyManifest {
2
+ buildId: string;
3
+ staticCachedFiles: string[];
4
+ }
5
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { ApiDefinition } from "@farbenmeer/tapi/server";
2
+ import connect from "connect";
3
+ import type { Cache } from "@farbenmeer/tapi/server";
4
+ interface BunnyServerOptions {
5
+ api: () => Promise<{
6
+ api: ApiDefinition<any>;
7
+ cache?: Cache;
8
+ }>;
9
+ dist: string;
10
+ apiInfo: {
11
+ title: string;
12
+ version: string;
13
+ buildId: string;
14
+ };
15
+ }
16
+ export declare function createBunnyApp({ api, dist, apiInfo }: BunnyServerOptions): connect.Server;
17
+ export {};
18
+ //# sourceMappingURL=create-bunny-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-bunny-app.d.ts","sourceRoot":"","sources":["../../src/server/create-bunny-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,OAAO,CAAC;QAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kBAAkB,kBAmFxE"}
@@ -0,0 +1,76 @@
1
+ import { createRequestHandler, generateOpenAPISchema, PubSub, streamRevalidatedTags, } from "@farbenmeer/tapi/server";
2
+ import connect from "connect";
3
+ import serveStatic from "serve-static";
4
+ import { INVALIDATIONS_ROUTE } from "../constants.js";
5
+ import { loadEnv } from "../load-env.js";
6
+ import { fromResponse, toRequest } from "./node-http-adapter.js";
7
+ export function createBunnyApp({ api, dist, apiInfo }) {
8
+ loadEnv("production");
9
+ const app = connect();
10
+ const cache = api().then(({ cache = new PubSub() }) => cache);
11
+ const apiRequestHandler = api().then(async ({ api }) => createRequestHandler(api, {
12
+ basePath: "/api",
13
+ hooks: {
14
+ error: (error) => {
15
+ console.error(error);
16
+ },
17
+ },
18
+ cache: await cache,
19
+ }));
20
+ let openApiJson;
21
+ app.use(async (req, res, next) => {
22
+ if (!req.url)
23
+ return next();
24
+ const forwarded = req.headers["x-forwarded-for"];
25
+ const host = forwarded ?? req.headers["host"] ?? `localhost:3000`;
26
+ const url = new URL(req.url, `http://${host}`);
27
+ if (/^\/api(\/|$)/.test(url.pathname)) {
28
+ const request = toRequest(req, url);
29
+ const response = await apiRequestHandler.then((handle) => handle(request));
30
+ if (response.status < 300) {
31
+ console.info(`Bunny: ${request.method} ${url.pathname} ${response.status} ${response.statusText}`);
32
+ }
33
+ else {
34
+ console.error(`Bunny: ${request.method} ${url.pathname} ${response.status} ${response.statusText}`);
35
+ }
36
+ await fromResponse(res, response);
37
+ return;
38
+ }
39
+ if (url.pathname === "/.well-known/openapi.json") {
40
+ if (!openApiJson) {
41
+ openApiJson = JSON.stringify(await generateOpenAPISchema((await api()).api, {
42
+ info: apiInfo,
43
+ }));
44
+ }
45
+ res.setHeader("Content-Type", "application/json");
46
+ res.write(openApiJson);
47
+ res.end();
48
+ return;
49
+ }
50
+ if (url.pathname === INVALIDATIONS_ROUTE) {
51
+ const response = streamRevalidatedTags({
52
+ cache: await cache,
53
+ buildId: apiInfo.buildId,
54
+ });
55
+ console.info(`Bunny: Starting Invalidation Stream`);
56
+ response.headers.forEach((value, key) => {
57
+ res.appendHeader(key, value);
58
+ });
59
+ if (res.closed) {
60
+ return;
61
+ }
62
+ res.flushHeaders();
63
+ if (response.body) {
64
+ for await (const chunk of response.body) {
65
+ res.write(chunk);
66
+ }
67
+ }
68
+ console.info("Bunny: Closed Invalidation Stream");
69
+ return;
70
+ }
71
+ next();
72
+ });
73
+ app.use(serveStatic(dist));
74
+ return app;
75
+ }
76
+ //# sourceMappingURL=create-bunny-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-bunny-app.js","sourceRoot":"","sources":["../../src/server/create-bunny-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-http-adapter.d.ts","sourceRoot":"","sources":["../../src/server/node-http-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CA2BjE;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,iBAmBrE"}
@@ -6,7 +6,9 @@ export function toRequest(req, url) {
6
6
  const value = req.headers[key];
7
7
  if (value != null) {
8
8
  if (Array.isArray(value)) {
9
- value.forEach((v) => headers.append(key, v));
9
+ value.forEach((v) => {
10
+ headers.append(key, v);
11
+ });
10
12
  }
11
13
  else {
12
14
  headers.append(key, value);
@@ -31,7 +33,9 @@ export async function fromResponse(node, web) {
31
33
  try {
32
34
  node.statusCode = web.status;
33
35
  node.statusMessage = web.statusText;
34
- web.headers.forEach((value, key) => node.appendHeader(key, value));
36
+ web.headers.forEach((value, key) => {
37
+ node.appendHeader(key, value);
38
+ });
35
39
  if (node.closed) {
36
40
  console.warn("Response was closed before it was fully written");
37
41
  return;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-http-adapter.js","sourceRoot":"","sources":["../../src/server/node-http-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,SAAS,CAAC,GAAoB,EAAE,GAAQ;IACtD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAClB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,IAAgC,CAAC;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClD,4DAA4D;QAC5D,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC/C,CAAC;IACD,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,MAAe;KACxB,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAoB,EAAE,GAAa;IACpE,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;QACpC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,15 +1,3 @@
1
1
  export * from "@farbenmeer/tapi/server";
2
- import type { ApiDefinition } from "@farbenmeer/tapi/server";
3
- import connect from "connect";
4
- interface BunnyServerOptions {
5
- api: () => Promise<{
6
- api: ApiDefinition<any>;
7
- }>;
8
- dist: string;
9
- apiInfo: {
10
- title: string;
11
- version: string;
12
- };
13
- }
14
- export declare function createBunnyApp({ api, dist, apiInfo }: BunnyServerOptions): connect.Server;
2
+ export { createBunnyApp } from "./server/create-bunny-app.js";
15
3
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAK7D,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,OAAO,CAAC;QAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kBAAkB,kBA4DxE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/server.js CHANGED
@@ -1,54 +1,3 @@
1
1
  export * from "@farbenmeer/tapi/server";
2
- import { createRequestHandler, generateOpenAPISchema, } from "@farbenmeer/tapi/server";
3
- import connect from "connect";
4
- import serveStatic from "serve-static";
5
- import { loadEnv } from "./load-env.js";
6
- import { fromResponse, toRequest } from "./node-http-adapter.js";
7
- export function createBunnyApp({ api, dist, apiInfo }) {
8
- loadEnv("production");
9
- const app = connect();
10
- const apiRequestHandler = api().then(({ api }) => createRequestHandler(api, {
11
- basePath: "/api",
12
- hooks: {
13
- error: (error) => {
14
- console.error(error);
15
- return error;
16
- },
17
- },
18
- }));
19
- let openApiJson;
20
- app.use(async (req, res, next) => {
21
- if (!req.url)
22
- return next();
23
- const forwarded = req.headers["x-forwarded-for"];
24
- const host = forwarded ?? req.headers["host"] ?? `localhost:3000`;
25
- const url = new URL(req.url, `http://${host}`);
26
- if (/^\/api(\/|$)/.test(url.pathname)) {
27
- const request = toRequest(req, url);
28
- const response = await apiRequestHandler.then((handle) => handle(request));
29
- if (response.status < 300) {
30
- console.info(`Bunny: ${request.method} ${url.pathname} ${response.status} ${response.statusText}`);
31
- }
32
- else {
33
- console.error(`Bunny: ${request.method} ${url.pathname} ${response.status} ${response.statusText}`);
34
- }
35
- await fromResponse(res, response);
36
- return;
37
- }
38
- if (url.pathname === "/.well-known/openapi.json") {
39
- if (!openApiJson) {
40
- openApiJson = JSON.stringify(await generateOpenAPISchema((await api()).api, {
41
- info: apiInfo,
42
- }));
43
- }
44
- res.setHeader("Content-Type", "application/json");
45
- res.write(openApiJson);
46
- res.end();
47
- return;
48
- }
49
- next();
50
- });
51
- app.use(serveStatic(dist));
52
- return app;
53
- }
2
+ export { createBunnyApp } from "./server/create-bunny-app.js";
54
3
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BunnyManifest } from "../manifest";
2
+ export declare function cacheStaticFiles(manifest: BunnyManifest): Promise<void>;
3
+ //# sourceMappingURL=cache-static-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-static-files.d.ts","sourceRoot":"","sources":["../../src/worker/cache-static-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,iBAM7D"}
@@ -0,0 +1,7 @@
1
+ import { STATIC_CACHE_PREFIX } from "./contants";
2
+ export async function cacheStaticFiles(manifest) {
3
+ const staticCache = await self.caches.open(STATIC_CACHE_PREFIX + manifest.buildId);
4
+ await staticCache.addAll(manifest.staticCachedFiles);
5
+ console.info("Bunny: Cached", manifest.staticCachedFiles);
6
+ }
7
+ //# sourceMappingURL=cache-static-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-static-files.js","sourceRoot":"","sources":["../../src/worker/cache-static-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAuB;IAC5D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACxC,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CACvC,CAAC;IACF,MAAM,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const STATIC_CACHE_PREFIX = "bunny-static-cache-";
2
+ export declare const API_CACHE_PREFIX = "bunny-api-cache-";
3
+ //# sourceMappingURL=contants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contants.d.ts","sourceRoot":"","sources":["../../src/worker/contants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const STATIC_CACHE_PREFIX = "bunny-static-cache-";
2
+ export const API_CACHE_PREFIX = "bunny-api-cache-";
3
+ //# sourceMappingURL=contants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contants.js","sourceRoot":"","sources":["../../src/worker/contants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BunnyManifest } from "../manifest";
2
+ export declare function serveStaticFile(manifest: BunnyManifest, req: Request | URL): Promise<Response>;
3
+ //# sourceMappingURL=serve-static-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-static-files.d.ts","sourceRoot":"","sources":["../../src/worker/serve-static-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,OAAO,GAAG,GAAG,qBAcnB"}
@@ -0,0 +1,12 @@
1
+ import { STATIC_CACHE_PREFIX } from "./contants";
2
+ export async function serveStaticFile(manifest, req) {
3
+ const staticCache = await self.caches.open(STATIC_CACHE_PREFIX + manifest.buildId);
4
+ const cached = await staticCache.match(req);
5
+ if (cached) {
6
+ return cached;
7
+ }
8
+ const res = await fetch(req);
9
+ await staticCache.put(req, res.clone());
10
+ return res;
11
+ }
12
+ //# sourceMappingURL=serve-static-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-static-files.js","sourceRoot":"","sources":["../../src/worker/serve-static-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAuB,EACvB,GAAkB;IAElB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACxC,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CACvC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":""}
package/dist/worker.js ADDED
@@ -0,0 +1,35 @@
1
+ import { handleTapiRequest, listenForInvalidations, } from "@farbenmeer/tapi/worker";
2
+ import { INVALIDATIONS_ROUTE } from "./constants";
3
+ import { cacheStaticFiles } from "./worker/cache-static-files";
4
+ import { serveStaticFile } from "./worker/serve-static-files";
5
+ const manifest = JSON.parse(__BUNNY_MANIFEST);
6
+ const apiPathPattern = /^\/api(\/|$)/;
7
+ console.info("Bunny: Set up Worker", manifest.buildId);
8
+ self.addEventListener("install", (event) => {
9
+ event.waitUntil(cacheStaticFiles(manifest).then(() => self.skipWaiting()));
10
+ });
11
+ const staticFilePaths = new Set(manifest.staticCachedFiles);
12
+ self.addEventListener("fetch", (event) => {
13
+ const url = new URL(event.request.url);
14
+ // ignore requests for other origins
15
+ if (url.host !== self.location.host)
16
+ return;
17
+ // ignore requests for service worker script
18
+ if (url.pathname === "/sw.js")
19
+ return;
20
+ console.info("Bunny Worker", event.request.method, url.pathname);
21
+ if (staticFilePaths.has(url.pathname)) {
22
+ event.respondWith(serveStaticFile(manifest, event.request));
23
+ return;
24
+ }
25
+ if (apiPathPattern.test(url.pathname)) {
26
+ event.respondWith(handleTapiRequest(manifest.buildId, event.request));
27
+ return;
28
+ }
29
+ event.respondWith(serveStaticFile(manifest, new URL("/index.html", url)));
30
+ });
31
+ listenForInvalidations({
32
+ buildId: manifest.buildId,
33
+ url: INVALIDATIONS_ROUTE,
34
+ }).catch((error) => console.error("Bunny: Failed to listen for invalidations", error));
35
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAK9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAkB,CAAC;AAC/D,MAAM,cAAc,GAAG,cAAc,CAAC;AAEtC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAEvD,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;IACzC,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE5D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,oCAAoC;IACpC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO;IAC5C,4CAA4C;IAC5C,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO;IAEtC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjE,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,sBAAsB,CAAC;IACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;IACzB,GAAG,EAAE,mBAAmB;CACzB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAClE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farbenmeer/bunny",
3
- "version": "0.3.5",
3
+ "version": "0.4.1",
4
4
  "author": {
5
5
  "name": "Michel Smola",
6
6
  "email": "michel.smola@farbenmeer.de"
@@ -16,7 +16,8 @@
16
16
  },
17
17
  "files": [
18
18
  "dist",
19
- "boilerplate.tar.gz"
19
+ "boilerplate.tar.gz",
20
+ "recipes"
20
21
  ],
21
22
  "bin": {
22
23
  "bunny": "./cli.js",
@@ -44,9 +45,9 @@
44
45
  "tar": "^7.5.4",
45
46
  "vite": "^7.3.0",
46
47
  "vite-tsconfig-paths": "^6.0.3",
47
- "@farbenmeer/react-tapi": "^6.0.0",
48
- "@farbenmeer/router": "^0.6.0",
49
- "@farbenmeer/tapi": "^0.7.0"
48
+ "@farbenmeer/react-tapi": "^7.0.1",
49
+ "@farbenmeer/tapi": "^0.9.0",
50
+ "@farbenmeer/router": "^0.6.1"
50
51
  },
51
52
  "devDependencies": {
52
53
  "@types/connect": "^3.4.38",
@@ -0,0 +1,63 @@
1
+ # better-auth Setup for Bunny
2
+
3
+ To setup [better-auth](https://better-auth.com/) with bunny:
4
+
5
+ * Add `better-auth` as a dependency
6
+
7
+ ```bash
8
+ pnpm add better-auth
9
+ ```
10
+
11
+ * Create your better-auth configuration file at `src/lib/auth.ts` and follow the better-auth [documentation](https://better-auth.com/docs) to configure it.
12
+
13
+ * Create your better-auth request handler at `src/api/auth.ts` as follows:
14
+
15
+ ```ts
16
+ import { defineHandler } from "@farbenmeer/bunny/server";
17
+ import { auth } from "lib/auth";
18
+
19
+ export const GET = defineHandler(
20
+ {
21
+ authorize: () => true,
22
+ },
23
+ (req) => {
24
+ return auth.handler(req);
25
+ },
26
+ );
27
+
28
+ export const POST = defineHandler(
29
+ {
30
+ authorize: () => true,
31
+ },
32
+ (req) => {
33
+ return auth.handler(req);
34
+ },
35
+ );
36
+ ```
37
+
38
+ * Add the following route to your `src/api.ts` file:
39
+ ```ts
40
+ .route("/auth/*", import("./api/auth"))
41
+ ```
42
+
43
+ Without other modifications, your api.ts file should look like this:
44
+
45
+ ```ts
46
+
47
+ import { defineApi } from "@farbenmeer/bunny/server";
48
+
49
+ export const api = defineApi()
50
+ .route("/auth/*", import("./api/auth"))
51
+ .route("/hello", import("./api/hello"));
52
+
53
+ ```
54
+
55
+ * If not already done, add the file `src/lib/auth-client.ts` with the following content:
56
+
57
+ ```ts
58
+ import { createAuthClient } from "better-auth/react";
59
+
60
+ export const authClient = createAuthClient({});
61
+ ```
62
+
63
+ Then you are ready to use better-auth with bunny.
@@ -0,0 +1,5 @@
1
+ # Drizzle ORM Setup for Bunny
2
+
3
+ To setup [drizzle-orm](https://orm.drizzle.team/) with bunny you just follow the regular setup instructions for drizzle-orm.
4
+
5
+ I recommend putting the drizzle schema files in the folder `src/schema` and the drizzle client in `src/lib/db.ts`:
@@ -0,0 +1,44 @@
1
+ # @farbenmeer/router setup for Bunny
2
+
3
+ to setup the farbenmeer router package:
4
+
5
+ ## Install the dependency:
6
+ ```bash
7
+ pnpm add @farbenmeer/router
8
+ ```
9
+
10
+ ## Setup the router's provider
11
+ Adjust src/index.tsx so the `<App />` component is wrapped with the `<Router>`,
12
+ in the simplest case (no additional providers) src/index.tsx should look like this:
13
+
14
+ ```tsx
15
+ import { startBunnyClient } from "@farbenmeer/bunny/client";
16
+ import { Router } from "@farbenmeer/router";
17
+ import { App } from "app/app";
18
+
19
+ startBunnyClient(
20
+ <Router>
21
+ <App />
22
+ </Router>,
23
+ );
24
+ ```
25
+
26
+ ## Setup the first route
27
+ In src/app/app.tsx:
28
+
29
+ Add the necessary imports
30
+ ```tsx
31
+ import { Switch, Route } from "@farbenmeer/router";
32
+ ```
33
+
34
+ Add a `<Switch>` with example routes to the app-component:
35
+ ```tsx
36
+ <Switch>
37
+ <Route path="/" exact>
38
+ <div>Home</div>
39
+ </Route>
40
+ <Route>
41
+ <div>404</div>
42
+ </Route>
43
+ </Switch>
44
+ ```
@@ -0,0 +1,29 @@
1
+ # Tailwind CSS Setup for Bunny
2
+
3
+ To setup [tailwindcss](https://tailwindcss.com/) with bunny:
4
+
5
+ * Add `@tailwindcss/vite` as a dev dependency
6
+
7
+ ```bash
8
+ pnpm add -D @tailwindcss/vite
9
+ ```
10
+
11
+ * Create or update `bunny.config.ts`, add the tailwindcss plugin to the vite config options:
12
+
13
+ ```typescript
14
+ // bunny.config.ts
15
+ import { defineConfig } from '@farbenmeer/bunny';
16
+ import tailwindcss from '@tailwindcss/vite';
17
+
18
+ export default defineConfig({
19
+ vite: {
20
+ plugins: [tailwindcss()],
21
+ },
22
+ });
23
+ ```
24
+
25
+ * Import tailwindcss in your main css file:
26
+ ```css
27
+ /* src/main.css */
28
+ @import "tailwindcss";
29
+ ```
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-http-adapter.d.ts","sourceRoot":"","sources":["../src/node-http-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAyBjE;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,iBAiBrE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-http-adapter.js","sourceRoot":"","sources":["../src/node-http-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,SAAS,CAAC,GAAoB,EAAE,GAAQ;IACtD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,IAAgC,CAAC;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClD,4DAA4D;QAC5D,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC/C,CAAC;IACD,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,MAAe;KACxB,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAoB,EAAE,GAAa;IACpE,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;QACpC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}