@farbenmeer/bunny 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +3 -0
- package/dist/cli/build.d.ts.map +1 -1
- package/dist/cli/build.js +53 -21
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/dev.d.ts +0 -1
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +86 -8
- package/dist/cli/dev.js.map +1 -0
- package/dist/cli/generate-server.d.ts +2 -0
- package/dist/cli/generate-server.d.ts.map +1 -0
- package/dist/cli/generate-server.js +13 -0
- package/dist/cli/generate-server.js.map +1 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +21 -16
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/start.d.ts.map +1 -1
- package/dist/cli/start.js +11 -4
- package/dist/cli/start.js.map +1 -0
- package/dist/cli.js +6 -7
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +2 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +20 -2
- package/dist/client.js.map +1 -0
- package/dist/node-http-adapter.d.ts +4 -0
- package/dist/node-http-adapter.d.ts.map +1 -0
- package/dist/node-http-adapter.js +34 -0
- package/dist/node-http-adapter.js.map +1 -0
- package/dist/server.d.ts +7 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +28 -1
- package/dist/server.js.map +1 -0
- package/package.json +36 -35
- package/boilerplate.tar.gz +0 -0
- package/dist/auth/adapter-drizzle-sqlite/index.d.ts +0 -2
- package/dist/auth/adapter-drizzle-sqlite/index.d.ts.map +0 -1
- package/dist/auth/adapter-drizzle-sqlite/index.js +0 -1
- package/dist/auth/adapter-drizzle-sqlite/schema.d.ts +0 -2
- package/dist/auth/adapter-drizzle-sqlite/schema.d.ts.map +0 -1
- package/dist/auth/adapter-drizzle-sqlite/schema.js +0 -1
- package/dist/cli/migrate.d.ts +0 -4
- package/dist/cli/migrate.d.ts.map +0 -1
- package/dist/cli/migrate.js +0 -14
- package/dist/cli/server.d.ts +0 -2
- package/dist/cli/server.d.ts.map +0 -1
- package/dist/cli/server.js +0 -39
- package/dist/cli/tailwind-plugin.d.ts +0 -4
- package/dist/cli/tailwind-plugin.d.ts.map +0 -1
- package/dist/cli/tailwind-plugin.js +0 -15
package/cli.js
ADDED
package/dist/cli/build.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,KAAK,SA8Dd,CAAC"}
|
package/dist/cli/build.js
CHANGED
|
@@ -1,30 +1,62 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import
|
|
2
|
+
import esbuild from "esbuild";
|
|
3
|
+
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
3
4
|
import path from "node:path";
|
|
4
|
-
import { generateServer } from "./server";
|
|
5
|
-
import
|
|
5
|
+
import { generateServer } from "./generate-server.js";
|
|
6
|
+
import * as vite from "vite";
|
|
7
|
+
import { generateOpenAPISchema } from "@farbenmeer/tapi/server";
|
|
8
|
+
import { existsSync } from "node:fs";
|
|
9
|
+
import viteTsconfigPaths from "vite-tsconfig-paths";
|
|
6
10
|
export const build = new Command()
|
|
7
11
|
.name("build")
|
|
8
|
-
.option("--sourcemap", "Generate sourcemaps",
|
|
9
|
-
.
|
|
12
|
+
.option("--sourcemap", "Generate sourcemaps", true)
|
|
13
|
+
.option("--standalone", "Generate standalone server", false)
|
|
14
|
+
.description("Bunny Production Build")
|
|
10
15
|
.action(async (options) => {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
const bunnyDir = path.join(process.cwd(), ".bunny", "prod");
|
|
17
|
+
const srcDir = path.join(process.cwd(), "src");
|
|
18
|
+
if (existsSync(bunnyDir)) {
|
|
19
|
+
await rm(bunnyDir, { recursive: true, force: true });
|
|
20
|
+
}
|
|
21
|
+
await mkdir(bunnyDir, { recursive: true });
|
|
22
|
+
await vite.build({
|
|
23
|
+
configFile: false,
|
|
24
|
+
root: srcDir,
|
|
25
|
+
build: {
|
|
26
|
+
outDir: path.join(bunnyDir, "dist"),
|
|
27
|
+
sourcemap: options.sourcemap,
|
|
28
|
+
rollupOptions: {
|
|
29
|
+
input: path.join(srcDir, "index.html"),
|
|
30
|
+
},
|
|
31
|
+
emptyOutDir: false,
|
|
25
32
|
},
|
|
33
|
+
mode: "production",
|
|
34
|
+
plugins: [viteTsconfigPaths()],
|
|
35
|
+
});
|
|
36
|
+
await esbuild.build({
|
|
37
|
+
entryPoints: [path.join(srcDir, "api.ts")],
|
|
38
|
+
bundle: true,
|
|
39
|
+
outdir: bunnyDir,
|
|
26
40
|
sourcemap: options.sourcemap,
|
|
27
|
-
|
|
28
|
-
|
|
41
|
+
platform: "node",
|
|
42
|
+
target: "node24",
|
|
43
|
+
outExtension: {
|
|
44
|
+
".js": ".cjs",
|
|
45
|
+
},
|
|
46
|
+
packages: options.standalone ? "bundle" : "external",
|
|
29
47
|
});
|
|
48
|
+
const { api } = await import(path.join(bunnyDir, "api.cjs"));
|
|
49
|
+
const wellKnownDir = path.join(bunnyDir, "dist", ".well-known");
|
|
50
|
+
const packageJson = JSON.parse(await readFile(path.join(process.cwd(), "package.json"), "utf8"));
|
|
51
|
+
await mkdir(wellKnownDir);
|
|
52
|
+
await writeFile(path.join(wellKnownDir, "openapi.json"), JSON.stringify(await generateOpenAPISchema(api, {
|
|
53
|
+
info: {
|
|
54
|
+
title: packageJson.name,
|
|
55
|
+
version: packageJson.version,
|
|
56
|
+
},
|
|
57
|
+
})));
|
|
58
|
+
if (options.standalone) {
|
|
59
|
+
await writeFile(path.join(bunnyDir, "server.js"), generateServer());
|
|
60
|
+
}
|
|
30
61
|
});
|
|
62
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/dev.d.ts
CHANGED
package/dist/cli/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,GAAG,SA2FZ,CAAC"}
|
package/dist/cli/dev.js
CHANGED
|
@@ -1,15 +1,93 @@
|
|
|
1
|
+
import { createRequestHandler, generateOpenAPISchema, } from "@farbenmeer/tapi/server";
|
|
1
2
|
import { Command } from "commander";
|
|
2
|
-
import
|
|
3
|
+
import connect from "connect";
|
|
4
|
+
import esbuild from "esbuild";
|
|
5
|
+
import { mkdir, readFile, rm } from "node:fs/promises";
|
|
6
|
+
import http from "node:http";
|
|
3
7
|
import path from "node:path";
|
|
4
|
-
import {
|
|
5
|
-
import "
|
|
8
|
+
import { createServer } from "vite";
|
|
9
|
+
import { fromResponse, toRequest } from "../node-http-adapter.js";
|
|
10
|
+
import viteTsconfigPaths from "vite-tsconfig-paths";
|
|
11
|
+
import { existsSync } from "node:fs";
|
|
6
12
|
export const dev = new Command()
|
|
7
13
|
.name("dev")
|
|
8
14
|
.description("Bunny Development server")
|
|
9
|
-
.
|
|
10
|
-
|
|
15
|
+
.option("--port <port>", "Port to listen on", "3000")
|
|
16
|
+
.action(async ({ port }) => {
|
|
17
|
+
const bunnyDir = path.join(process.cwd(), ".bunny/dev");
|
|
18
|
+
if (existsSync(bunnyDir)) {
|
|
19
|
+
await rm(bunnyDir, { recursive: true });
|
|
20
|
+
}
|
|
11
21
|
await mkdir(bunnyDir, { recursive: true });
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
22
|
+
const srcDir = path.join(process.cwd(), "src");
|
|
23
|
+
const viteServer = await createServer({
|
|
24
|
+
configFile: false,
|
|
25
|
+
root: srcDir,
|
|
26
|
+
server: {
|
|
27
|
+
middlewareMode: true,
|
|
28
|
+
},
|
|
29
|
+
mode: "development",
|
|
30
|
+
plugins: [viteTsconfigPaths()],
|
|
31
|
+
});
|
|
32
|
+
const app = connect();
|
|
33
|
+
let apiRequestHandler;
|
|
34
|
+
let openAPISchema;
|
|
35
|
+
async function reload() {
|
|
36
|
+
const { api } = await import(path.resolve(bunnyDir, `api.cjs?ts=${Date.now()}`));
|
|
37
|
+
apiRequestHandler = createRequestHandler(api, {
|
|
38
|
+
basePath: "/api",
|
|
39
|
+
});
|
|
40
|
+
const packageJson = JSON.parse(await readFile(path.join(process.cwd(), "package.json"), "utf8"));
|
|
41
|
+
const schema = await generateOpenAPISchema(api, {
|
|
42
|
+
info: {
|
|
43
|
+
title: packageJson.name,
|
|
44
|
+
version: packageJson.version,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
openAPISchema = JSON.stringify(schema);
|
|
48
|
+
}
|
|
49
|
+
const esbuildContext = await esbuild.context({
|
|
50
|
+
entryPoints: [path.resolve(srcDir, "api.ts")],
|
|
51
|
+
bundle: true,
|
|
52
|
+
packages: "external",
|
|
53
|
+
outdir: bunnyDir,
|
|
54
|
+
platform: "node",
|
|
55
|
+
target: "node24",
|
|
56
|
+
outExtension: { ".js": ".cjs" },
|
|
57
|
+
plugins: [
|
|
58
|
+
{
|
|
59
|
+
name: "bunny-hot-reload",
|
|
60
|
+
setup(build) {
|
|
61
|
+
build.onEnd(async () => {
|
|
62
|
+
await reload();
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
});
|
|
68
|
+
await esbuildContext.watch();
|
|
69
|
+
app.use(async (req, res, next) => {
|
|
70
|
+
if (!req.url)
|
|
71
|
+
return next();
|
|
72
|
+
const forwarded = req.headers["x-forwarded-for"];
|
|
73
|
+
const host = forwarded ?? req.headers["host"] ?? `localhost:${port}`;
|
|
74
|
+
const url = new URL(req.url, `http://${host}`);
|
|
75
|
+
if (/^\/api(\/|$)/.test(url.pathname)) {
|
|
76
|
+
const request = toRequest(req, url);
|
|
77
|
+
const response = await apiRequestHandler(request);
|
|
78
|
+
fromResponse(res, response);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (url.pathname === "/.well-known/openapi.json") {
|
|
82
|
+
res.setHeader("Content-Type", "application/json");
|
|
83
|
+
res.write(openAPISchema);
|
|
84
|
+
res.end();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
next();
|
|
88
|
+
});
|
|
89
|
+
app.use(viteServer.middlewares);
|
|
90
|
+
http.createServer(app).listen(parseInt(port, 10));
|
|
91
|
+
console.log(`Dev-Server started on port ${port}`);
|
|
15
92
|
});
|
|
93
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-server.d.ts","sourceRoot":"","sources":["../../src/cli/generate-server.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,WAW7B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function generateServer() {
|
|
2
|
+
return `
|
|
3
|
+
import api from "./api.cjs"
|
|
4
|
+
import { startBunnyServer } from "@farbenmeer/bunny/server"
|
|
5
|
+
|
|
6
|
+
startBunnyServer({
|
|
7
|
+
port: 3000,
|
|
8
|
+
api,
|
|
9
|
+
dist: __dirname + "/dist",
|
|
10
|
+
});
|
|
11
|
+
`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=generate-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-server.js","sourceRoot":"","sources":["../../src/cli/generate-server.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;CASR,CAAC;AACF,CAAC"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,IAAI,SA4Cb,CAAC"}
|
package/dist/cli/init.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import { $ } from "bun";
|
|
2
1
|
import { Command } from "commander";
|
|
3
|
-
import {
|
|
2
|
+
import { exec } from "node:child_process";
|
|
3
|
+
import { access, constants, mkdir, readdir, readFile } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
|
+
import { promisify } from "node:util";
|
|
6
|
+
import ownPackageJson from "../../package.json" with { type: "json" };
|
|
7
|
+
import { exit } from "node:process";
|
|
8
|
+
const $ = promisify(exec);
|
|
5
9
|
export const init = new Command()
|
|
6
10
|
.name("init")
|
|
7
11
|
.description("Initialize a new project")
|
|
8
12
|
.argument("[name]", "Name of the project")
|
|
9
13
|
.action(async (name) => {
|
|
14
|
+
console.error("sorry, WIP...");
|
|
15
|
+
exit(1);
|
|
10
16
|
console.info("Initializing project...");
|
|
11
17
|
if (name) {
|
|
12
18
|
const dirPath = path.join(process.cwd(), name);
|
|
13
|
-
if (await
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
19
|
+
if ((await readdir(dirPath, { recursive: true })).length > 0) {
|
|
20
|
+
console.error(`Directory ${name} already exists and contains files.`);
|
|
21
|
+
process.exit(1);
|
|
18
22
|
}
|
|
19
23
|
else {
|
|
20
24
|
await mkdir(dirPath, { recursive: true });
|
|
@@ -23,18 +27,19 @@ export const init = new Command()
|
|
|
23
27
|
}
|
|
24
28
|
else {
|
|
25
29
|
const pkgPath = path.join(process.cwd(), "package.json");
|
|
26
|
-
|
|
30
|
+
try {
|
|
31
|
+
await access(pkgPath, constants.F_OK);
|
|
27
32
|
console.error(`Package.json already exists.`);
|
|
28
33
|
process.exit(1);
|
|
29
34
|
}
|
|
35
|
+
catch { }
|
|
30
36
|
}
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
await $ `
|
|
37
|
-
await $ `bun run generate`;
|
|
38
|
-
await $ `bun run migrate`;
|
|
37
|
+
const pm = process.env.npm_config_user_agent?.match(/^(pnpm|yarn|npm|bun)/)?.[1] ??
|
|
38
|
+
"npm";
|
|
39
|
+
const packageJson = JSON.parse(await readFile(path.join(process.cwd(), "boilerplate/package.json"), "utf8"));
|
|
40
|
+
packageJson.name = path.basename(process.cwd());
|
|
41
|
+
packageJson.dependencies["@farbenmeer/bunny"] = `^${ownPackageJson.version}`;
|
|
42
|
+
await $(`${pm} install`);
|
|
39
43
|
console.log("Project initialized successfully!");
|
|
40
44
|
});
|
|
45
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,cAAc,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,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,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC,CAAC,CAAA;IACP,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,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,qCAAqC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,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;IAED,MAAM,EAAE,GACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC;IAER,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,MAAM,QAAQ,CACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,EACpD,MAAM,CACP,CACF,CAAC;IACF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,WAAW,CAAC,YAAY,CACtB,mBAAmB,CACpB,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;IAEjC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
package/dist/cli/start.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,KAAK,SAcd,CAAC"}
|
package/dist/cli/start.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { startBunnyServer } from "../server.js";
|
|
3
4
|
export const start = new Command()
|
|
4
5
|
.name("start")
|
|
5
6
|
.description("Bunny Production server")
|
|
6
|
-
.
|
|
7
|
-
|
|
7
|
+
.option("--port <number>", "Port number", "3000")
|
|
8
|
+
.action((options) => {
|
|
9
|
+
const bunnyDir = path.join(process.cwd(), ".bunny", "prod");
|
|
8
10
|
process.env.NODE_ENV = "production";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
const { api } = require(path.join(bunnyDir, "api.js"));
|
|
12
|
+
startBunnyServer({
|
|
13
|
+
api,
|
|
14
|
+
port: parseInt(options.port, 10),
|
|
15
|
+
dist: path.join(bunnyDir, "dist"),
|
|
16
|
+
});
|
|
11
17
|
});
|
|
18
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +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,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,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,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;IACpC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvD,gBAAgB,CAAC;QACf,GAAG;QACH,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
-
import { init } from "./cli/init";
|
|
4
|
-
import { dev } from "./cli/dev";
|
|
5
|
-
import { build } from "./cli/build";
|
|
6
|
-
import { start } from "./cli/start";
|
|
7
|
-
import { migrate } from "./cli/migrate";
|
|
3
|
+
import { init } from "./cli/init.js";
|
|
4
|
+
import { dev } from "./cli/dev.js";
|
|
5
|
+
import { build } from "./cli/build.js";
|
|
6
|
+
import { start } from "./cli/start.js";
|
|
8
7
|
const program = new Command();
|
|
9
8
|
program
|
|
10
9
|
.name("bunny")
|
|
@@ -13,6 +12,6 @@ program
|
|
|
13
12
|
.addCommand(init)
|
|
14
13
|
.addCommand(dev)
|
|
15
14
|
.addCommand(build)
|
|
16
|
-
.addCommand(start)
|
|
17
|
-
.addCommand(migrate);
|
|
15
|
+
.addCommand(start);
|
|
18
16
|
await program.parseAsync(process.argv);
|
|
17
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "@farbenmeer/tapi/client";
|
|
2
2
|
export * from "@farbenmeer/react-tapi";
|
|
3
|
-
|
|
4
|
-
export
|
|
3
|
+
import { type ReactNode } from "react";
|
|
4
|
+
export declare function startBunnyClient(app: ReactNode): void;
|
|
5
5
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.
|
|
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"}
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
2
|
export * from "@farbenmeer/tapi/client";
|
|
2
3
|
export * from "@farbenmeer/react-tapi";
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
import { StrictMode, Suspense } from "react";
|
|
5
|
+
import { createRoot } from "react-dom/client";
|
|
6
|
+
export function startBunnyClient(app) {
|
|
7
|
+
let elem = document.getElementById("__bunny");
|
|
8
|
+
if (!elem) {
|
|
9
|
+
elem = document.createElement("div");
|
|
10
|
+
elem.id = "__bunny";
|
|
11
|
+
document.body.insertBefore(elem, document.body.firstChild);
|
|
12
|
+
}
|
|
13
|
+
const wrapped = (_jsx(StrictMode, { children: _jsx(Suspense, { children: app }) }));
|
|
14
|
+
if (import.meta.hot) {
|
|
15
|
+
const root = (import.meta.hot.data.root ??= createRoot(elem));
|
|
16
|
+
root.render(wrapped);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
createRoot(elem).render(wrapped);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
export declare function toRequest(req: IncomingMessage, url: URL): Request;
|
|
3
|
+
export declare function fromResponse(node: ServerResponse, web: Response): void;
|
|
4
|
+
//# sourceMappingURL=node-http-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,QAG/D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
import stream from "node:stream";
|
|
3
|
+
export function toRequest(req, url) {
|
|
4
|
+
const headers = new Headers();
|
|
5
|
+
for (const key in req.headers) {
|
|
6
|
+
const value = req.headers[key];
|
|
7
|
+
if (value != null) {
|
|
8
|
+
if (Array.isArray(value)) {
|
|
9
|
+
value.forEach((v) => headers.append(key, v));
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
headers.append(key, value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
let body;
|
|
17
|
+
if (req.method !== "GET" && req.method !== "HEAD") {
|
|
18
|
+
// Convert Node.js Readable stream to Web API ReadableStream
|
|
19
|
+
body = Readable.toWeb(req);
|
|
20
|
+
}
|
|
21
|
+
const request_options = {
|
|
22
|
+
method: req.method,
|
|
23
|
+
headers: headers,
|
|
24
|
+
body: body,
|
|
25
|
+
duplex: "half",
|
|
26
|
+
};
|
|
27
|
+
const request = new Request(url.toString(), request_options);
|
|
28
|
+
return request;
|
|
29
|
+
}
|
|
30
|
+
export function fromResponse(node, web) {
|
|
31
|
+
node.setHeaders(web.headers);
|
|
32
|
+
web.body?.pipeTo(stream.Writable.toWeb(node));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=node-http-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,UAAU,YAAY,CAAC,IAAoB,EAAE,GAAa;IAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
export * from "@farbenmeer/tapi/server";
|
|
2
|
-
|
|
2
|
+
import type { ApiDefinition } from "@farbenmeer/tapi/server";
|
|
3
|
+
interface BunnyServerOptions {
|
|
4
|
+
port: number;
|
|
5
|
+
api: ApiDefinition<any>;
|
|
6
|
+
dist: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function startBunnyServer({ port, api, dist }: BunnyServerOptions): import("node:http").Server<typeof import("node:http").IncomingMessage, typeof import("node:http").ServerResponse>;
|
|
3
9
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,kBAAkB,qHA2BvE"}
|
package/dist/server.js
CHANGED
|
@@ -1,2 +1,29 @@
|
|
|
1
1
|
export * from "@farbenmeer/tapi/server";
|
|
2
|
-
|
|
2
|
+
import { createRequestHandler } from "@farbenmeer/tapi/server";
|
|
3
|
+
import connect from "connect";
|
|
4
|
+
import serveStatic from "serve-static";
|
|
5
|
+
import { fromResponse, toRequest } from "./node-http-adapter.js";
|
|
6
|
+
export function startBunnyServer({ port, api, dist }) {
|
|
7
|
+
const app = connect();
|
|
8
|
+
const apiRequestHandler = createRequestHandler(api, { basePath: "/api" });
|
|
9
|
+
app.use(async (req, res, next) => {
|
|
10
|
+
if (!req.url)
|
|
11
|
+
return next();
|
|
12
|
+
const forwarded = req.headers["x-forwarded-for"];
|
|
13
|
+
const host = forwarded ?? req.headers["host"] ?? `localhost:${port}`;
|
|
14
|
+
const url = new URL(req.url, `http://${host}`);
|
|
15
|
+
if (/^\/api(\/|$)/.test(url.pathname)) {
|
|
16
|
+
const request = toRequest(req, url);
|
|
17
|
+
const response = await apiRequestHandler(request);
|
|
18
|
+
fromResponse(res, response);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
next();
|
|
22
|
+
});
|
|
23
|
+
app.use(serveStatic(dist));
|
|
24
|
+
const server = app.listen(port, () => {
|
|
25
|
+
console.log(`Server started on port ${port}`);
|
|
26
|
+
});
|
|
27
|
+
return server;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQjE,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAsB;IACtE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1E,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,OAAO,IAAI,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,aAAa,IAAI,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QAE/C,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClD,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farbenmeer/bunny",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Michel Smola",
|
|
6
6
|
"email": "michel.smola@farbenmeer.de"
|
|
@@ -10,56 +10,57 @@
|
|
|
10
10
|
"main": "dist/index.js",
|
|
11
11
|
"private": false,
|
|
12
12
|
"license": "MIT",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/farbenmeer/tapi.git"
|
|
16
|
+
},
|
|
13
17
|
"files": [
|
|
14
18
|
"dist",
|
|
15
|
-
"boilerplate
|
|
19
|
+
"boilerplate"
|
|
16
20
|
],
|
|
17
21
|
"bin": {
|
|
18
|
-
"bunny": "./
|
|
19
|
-
"@farbenmeer/bunny": "./
|
|
22
|
+
"bunny": "./cli.js",
|
|
23
|
+
"@farbenmeer/bunny": "./cli.js"
|
|
20
24
|
},
|
|
21
25
|
"exports": {
|
|
22
26
|
"./client": {
|
|
23
|
-
"
|
|
24
|
-
"
|
|
27
|
+
"types": "./dist/client.d.ts",
|
|
28
|
+
"default": "./dist/client.js"
|
|
25
29
|
},
|
|
26
30
|
"./server": {
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
},
|
|
30
|
-
"./auth/adapter-drizzle-sqlite": {
|
|
31
|
-
"default": "./dist/auth/adapter-drizzle-sqlite/index.js",
|
|
32
|
-
"types": "./dist/auth/adapter-drizzle-sqlite/index.d.ts"
|
|
33
|
-
},
|
|
34
|
-
"./auth/adapter-drizzle-sqlite/schema": {
|
|
35
|
-
"default": "./dist/auth/adapter-drizzle-sqlite/schema.js",
|
|
36
|
-
"types": "./dist/auth/adapter-drizzle-sqlite/schema.d.ts"
|
|
37
|
-
},
|
|
38
|
-
"./bun-plugin-tailwind": {
|
|
39
|
-
"default": "./dist/cli/tailwind-plugin.js",
|
|
40
|
-
"types": "./dist/cli/tailwind-plugin.d.ts"
|
|
31
|
+
"types": "./dist/server.d.ts",
|
|
32
|
+
"default": "./dist/server.js"
|
|
41
33
|
}
|
|
42
34
|
},
|
|
43
|
-
"scripts": {
|
|
44
|
-
"build": "tsc --noEmit false",
|
|
45
|
-
"pack:boilerplate": "bun --cwd=\"../4-bunny-boilerplate\" pm pack --filename=\"packages/3-bunny/boilerplate.tar.gz\"",
|
|
46
|
-
"cli": "bun src/cli.ts",
|
|
47
|
-
"release": "bun run build && bun run pack:boilerplate && bun publish"
|
|
48
|
-
},
|
|
49
35
|
"dependencies": {
|
|
50
|
-
"@farbenmeer/react-tapi": "^0.1.5",
|
|
51
|
-
"@farbenmeer/tapi": "^0.1.9",
|
|
52
|
-
"@farbenmeer/bun-auth": "^0.1.4",
|
|
53
|
-
"@farbenmeer/router": "^0.1.0",
|
|
54
|
-
"@tailwindcss/postcss": "^4.1.12",
|
|
55
36
|
"commander": "^14.0.0",
|
|
56
|
-
"
|
|
57
|
-
"
|
|
37
|
+
"connect": "^3.7.0",
|
|
38
|
+
"esbuild": "^0.27.2",
|
|
39
|
+
"serve-static": "^2.2.1",
|
|
40
|
+
"vite": "^7.3.0",
|
|
41
|
+
"vite-tsconfig-paths": "^6.0.3",
|
|
42
|
+
"@farbenmeer/react-tapi": "^1.0.0",
|
|
43
|
+
"@farbenmeer/router": "^0.2.0",
|
|
44
|
+
"@farbenmeer/tapi": "^0.2.0"
|
|
58
45
|
},
|
|
59
46
|
"devDependencies": {
|
|
60
|
-
"@types/
|
|
47
|
+
"@types/connect": "^3.4.38",
|
|
48
|
+
"@types/node": "^25.0.3",
|
|
49
|
+
"@types/react": "^19.2.7",
|
|
50
|
+
"@types/react-dom": "^19",
|
|
51
|
+
"@types/serve-static": "^2.2.0",
|
|
52
|
+
"react": "^19.2.3",
|
|
53
|
+
"react-dom": "^19"
|
|
61
54
|
},
|
|
62
55
|
"peerDependencies": {
|
|
56
|
+
"react": "^19.2.3",
|
|
57
|
+
"react-dom": "^19",
|
|
63
58
|
"typescript": "^5"
|
|
59
|
+
},
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "tsc --noEmit false",
|
|
62
|
+
"pack:boilerplate": "pnpm --dir=\"../4-bunny-boilerplate\" pack --out=\"../3-bunny/boilerplate.tar.gz\"",
|
|
63
|
+
"cli": "node dist/cli.js",
|
|
64
|
+
"release": "pnpm run build && pnpm run pack:boilerplate && pnpm publish --no-git-checks"
|
|
64
65
|
}
|
|
65
|
-
}
|
|
66
|
+
}
|
package/boilerplate.tar.gz
DELETED
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/adapter-drizzle-sqlite/index.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "@farbenmeer/bun-auth/adapter-drizzle-sqlite";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/auth/adapter-drizzle-sqlite/schema.ts"],"names":[],"mappings":"AAAA,cAAc,oDAAoD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "@farbenmeer/bun-auth/adapter-drizzle-sqlite/schema";
|
package/dist/cli/migrate.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,mBAAmB,CAAC;AAE3B,eAAO,MAAM,OAAO,SAShB,CAAC"}
|
package/dist/cli/migrate.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import * as migrator from "drizzle-orm/bun-sqlite/migrator";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import "./tailwind-plugin";
|
|
5
|
-
export const migrate = new Command()
|
|
6
|
-
.name("migrate")
|
|
7
|
-
.description("Apply Database Migrations")
|
|
8
|
-
.action(async () => {
|
|
9
|
-
const dbPath = path.join(process.cwd(), "src", "lib", "db");
|
|
10
|
-
const { db } = await import(dbPath);
|
|
11
|
-
migrator.migrate(db, {
|
|
12
|
-
migrationsFolder: path.join(process.cwd(), "drizzle"),
|
|
13
|
-
});
|
|
14
|
-
});
|
package/dist/cli/server.d.ts
DELETED
package/dist/cli/server.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"AAEA,wBAAsB,cAAc,oBAqDnC"}
|
package/dist/cli/server.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
export async function generateServer() {
|
|
3
|
-
const serverFile = path.join(process.cwd(), ".bunny", "server.ts");
|
|
4
|
-
const hasAuth = await Bun.file(path.join(process.cwd(), "src", "auth.ts")).exists();
|
|
5
|
-
const hasApi = await Bun.file(path.join(process.cwd(), "src", "api.ts")).exists();
|
|
6
|
-
await Bun.write(serverFile, `
|
|
7
|
-
import { serve } from "bun";
|
|
8
|
-
${hasApi
|
|
9
|
-
? 'import { api } from "api"; import { createRequestHandler } from "@farbenmeer/bunny/server";'
|
|
10
|
-
: ""}
|
|
11
|
-
${hasAuth
|
|
12
|
-
? 'import { auth } from "auth"; import { createAuthRoute } from "@farbenmeer/bunny/server";'
|
|
13
|
-
: ""}
|
|
14
|
-
import client from "index.html";
|
|
15
|
-
|
|
16
|
-
${hasApi
|
|
17
|
-
? 'const tapiHandler = createRequestHandler(api, { basePath: "/api" });'
|
|
18
|
-
: ""}
|
|
19
|
-
|
|
20
|
-
const server = serve({
|
|
21
|
-
routes: {
|
|
22
|
-
${hasAuth ? '"/api/auth/*": createAuthRoute(auth),' : ""}
|
|
23
|
-
${hasApi ? '"/api/*": (req) => tapiHandler(new Request(req)),' : ""}
|
|
24
|
-
"/*": client,
|
|
25
|
-
},
|
|
26
|
-
port: 3000,
|
|
27
|
-
development: process.env.NODE_ENV === "development" && {
|
|
28
|
-
// Enable browser hot reloading in development
|
|
29
|
-
hmr: true,
|
|
30
|
-
|
|
31
|
-
// Echo console logs from the browser to the server
|
|
32
|
-
console: true,
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
console.log(\`🚀 Server running at \${server.url}\`);
|
|
37
|
-
`);
|
|
38
|
-
return serverFile;
|
|
39
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-plugin.d.ts","sourceRoot":"","sources":["../../src/cli/tailwind-plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAKrC,QAAA,MAAM,cAAc,EAAE,SAUrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import postcssTailwind from "@tailwindcss/postcss";
|
|
2
|
-
import postcss from "postcss";
|
|
3
|
-
const processCss = postcss([postcssTailwind({})]);
|
|
4
|
-
const tailwindPlugin = {
|
|
5
|
-
name: "Tailwind CSS",
|
|
6
|
-
setup(build) {
|
|
7
|
-
build.onLoad({ filter: /\.(css)$/ }, async ({ path }) => {
|
|
8
|
-
console.log("process", path);
|
|
9
|
-
const contents = await Bun.file(path).text();
|
|
10
|
-
const result = await processCss.process(contents, { from: path });
|
|
11
|
-
return { contents: result.css, loader: "css" };
|
|
12
|
-
});
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
export default tailwindPlugin;
|