princejs 1.8.5 → 1.9.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.
package/Readme.md CHANGED
@@ -12,7 +12,6 @@
12
12
  ---
13
13
 
14
14
  ## 🚀 Quick Start
15
- s
16
15
  ```bash
17
16
  bun create princejs my-app
18
17
  cd my-app
@@ -79,10 +78,79 @@ app
79
78
 
80
79
  ### Route-level Middleware
81
80
 
81
+ ### Plugin System
82
+
83
+ You can share bundles of routes and middleware as plugins.
84
+
85
+ ```ts
86
+ import { prince, type PrincePlugin } from "princejs";
87
+
88
+ const usersPlugin: PrincePlugin<{ prefix?: string }> = (app, opts) => {
89
+ const base = opts?.prefix ?? "";
90
+
91
+ // plugin-wide middleware
92
+ app.use((req, next) => {
93
+ (req as any).fromPlugin = true;
94
+ return next();
95
+ });
96
+
97
+ // plugin routes
98
+ app.get(`${base}/users`, (req) => ({
99
+ ok: true,
100
+ fromPlugin: (req as any).fromPlugin,
101
+ }));
102
+ };
103
+
104
+ const app = prince();
105
+ app.plugin(usersPlugin, { prefix: "/api" });
106
+ ```
107
+
82
108
  ### Database (SQLite)
83
109
 
84
110
  ---
85
111
 
112
+ ## Deploy (Vercel, Workers, Deno)
113
+
114
+ Official adapters let you run the same Prince app on Vercel Edge, Cloudflare Workers, and Deno Deploy.
115
+
116
+ **Vercel (Edge)** — `api/[[...route]].ts`:
117
+
118
+ ```ts
119
+ import { prince } from "princejs";
120
+ import { toVercel } from "princejs/vercel";
121
+
122
+ const app = prince();
123
+ app.get("/", () => ({ message: "Hello from Vercel!" }));
124
+
125
+ export default toVercel(app);
126
+ ```
127
+
128
+ **Cloudflare Workers** — `src/index.ts`:
129
+
130
+ ```ts
131
+ import { prince } from "princejs";
132
+ import { toWorkers } from "princejs/cloudflare";
133
+
134
+ const app = prince();
135
+ app.get("/", () => ({ message: "Hello from Workers!" }));
136
+
137
+ export default toWorkers(app);
138
+ ```
139
+
140
+ **Deno Deploy** — `main.ts`:
141
+
142
+ ```ts
143
+ import { prince } from "princejs";
144
+ import { toDeno } from "princejs/deno";
145
+
146
+ const app = prince();
147
+ app.get("/", () => ({ message: "Hello from Deno!" }));
148
+
149
+ Deno.serve(toDeno(app));
150
+ ```
151
+
152
+ ---
153
+
86
154
  ## Performance With Oha (oha -c 100 -z 30s)
87
155
 
88
156
  | Framework | Req/s | Total |
@@ -235,4 +303,4 @@ GitHub: [https://github.com/MatthewTheCoder1218/princejs](https://github.com/Mat
235
303
 
236
304
  ---
237
305
 
238
- **PrinceJS: Small in size. Giant in capability. 🚀**
306
+ **PrinceJS: Small in size. Giant in capability. 🚀**
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Official Cloudflare Workers deploy adapter for PrinceJS
3
+ *
4
+ * @example
5
+ * // src/index.ts (Worker entry)
6
+ * import { prince } from "princejs";
7
+ * import { toWorkers } from "princejs/cloudflare";
8
+ *
9
+ * const app = prince();
10
+ * app.get("/", () => ({ message: "Hello from Workers!" }));
11
+ *
12
+ * export default toWorkers(app);
13
+ *
14
+ * @example
15
+ * // wrangler.toml
16
+ * // [build]
17
+ * // command = "bun run build"
18
+ * // [build.upload]
19
+ * // format = "modules"
20
+ * // main = "dist/worker.js"
21
+ */
22
+ export type PrinceApp = {
23
+ fetch(request: Request): Promise<Response>;
24
+ };
25
+ export interface WorkerEnv {
26
+ [key: string]: unknown;
27
+ }
28
+ /** Cloudflare Workers ExecutionContext (pass-through, no Bun dependency) */
29
+ export interface ExecutionContext {
30
+ waitUntil(promise: Promise<unknown>): void;
31
+ passThroughOnException(): void;
32
+ }
33
+ /**
34
+ * Returns a Cloudflare Workers fetch handler for your Prince app.
35
+ * Use as the default export of your Worker.
36
+ */
37
+ export declare function toWorkers(app: PrinceApp): {
38
+ fetch(request: Request, env: WorkerEnv, ctx: ExecutionContext): Promise<Response>;
39
+ };
40
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,sBAAsB,IAAI,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG;IACzC,KAAK,CACH,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtB,CAMA"}
@@ -0,0 +1,11 @@
1
+ // src/adapters/cloudflare.ts
2
+ function toWorkers(app) {
3
+ return {
4
+ fetch(request, _env, _ctx) {
5
+ return app.fetch(request);
6
+ }
7
+ };
8
+ }
9
+ export {
10
+ toWorkers
11
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Official Deno Deploy adapter for PrinceJS
3
+ *
4
+ * @example
5
+ * // main.ts
6
+ * import { prince } from "princejs";
7
+ * import { toDeno } from "princejs/deno";
8
+ *
9
+ * const app = prince();
10
+ * app.get("/", () => ({ message: "Hello from Deno Deploy!" }));
11
+ *
12
+ * Deno.serve(toDeno(app));
13
+ *
14
+ * @example
15
+ * // With options (port, hostname, etc.)
16
+ * Deno.serve({ port: 8080 }, toDeno(app));
17
+ */
18
+ export type PrinceApp = {
19
+ fetch(request: Request): Promise<Response>;
20
+ };
21
+ /**
22
+ * Returns a Deno.serve()-compatible fetch handler for your Prince app.
23
+ * Pass the result to Deno.serve() as the second argument (or first for default options).
24
+ */
25
+ export declare function toDeno(app: PrinceApp): (request: Request) => Promise<Response>;
26
+ //# sourceMappingURL=deno.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deno.d.ts","sourceRoot":"","sources":["../../src/adapters/deno.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAE9E"}
@@ -0,0 +1,7 @@
1
+ // src/adapters/deno.ts
2
+ function toDeno(app) {
3
+ return (request) => app.fetch(request);
4
+ }
5
+ export {
6
+ toDeno
7
+ };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Official Vercel deploy adapter for PrinceJS
3
+ * Use with Vercel Edge Runtime or Edge API Routes
4
+ *
5
+ * @example
6
+ * // api/[[...route]].ts (Edge Runtime)
7
+ * import { prince } from "princejs";
8
+ * import { toVercel } from "princejs/vercel";
9
+ *
10
+ * const app = prince();
11
+ * app.get("/", () => ({ message: "Hello from Vercel!" }));
12
+ *
13
+ * export default toVercel(app);
14
+ *
15
+ * @example
16
+ * // vercel.json - use Edge for API
17
+ * // { "functions": { "api/**": { "runtime": "edge" } } }
18
+ */
19
+ export type PrinceApp = {
20
+ fetch(request: Request): Promise<Response>;
21
+ };
22
+ /**
23
+ * Returns a Vercel Edge-compatible handler for your Prince app.
24
+ * Use as the default export of your API route.
25
+ */
26
+ export declare function toVercel(app: PrinceApp): (req: Request) => Promise<Response>;
27
+ //# sourceMappingURL=vercel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/adapters/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAE5E"}
@@ -0,0 +1,7 @@
1
+ // src/adapters/vercel.ts
2
+ function toVercel(app) {
3
+ return (req) => app.fetch(req);
4
+ }
5
+ export {
6
+ toVercel
7
+ };
package/dist/prince.d.ts CHANGED
@@ -19,6 +19,7 @@ interface WebSocketHandler {
19
19
  drain?: (ws: any) => void;
20
20
  }
21
21
  type RouteHandler = (req: PrinceRequest) => Promise<HandlerResult> | HandlerResult;
22
+ export type PrincePlugin<TOptions = any> = (app: Prince, options?: TOptions) => void | Promise<void>;
22
23
  declare class ResponseBuilder {
23
24
  private _status;
24
25
  private _headers;
@@ -44,6 +45,18 @@ export declare class Prince {
44
45
  private routeCache;
45
46
  constructor(devMode?: boolean);
46
47
  use(mw: Middleware): this;
48
+ /**
49
+ * Lightweight plugin system: allows sharing bundles of routes/middleware.
50
+ *
51
+ * @example
52
+ * const usersPlugin: PrincePlugin<{ prefix?: string }> = (app, opts) => {
53
+ * const base = opts?.prefix ?? "";
54
+ * app.get(`${base}/users`, () => [{ id: 1 }]);
55
+ * };
56
+ *
57
+ * app.plugin(usersPlugin, { prefix: "/api" });
58
+ */
59
+ plugin<TOptions = any>(plugin: PrincePlugin<TOptions>, options?: TOptions): this;
47
60
  error(fn: (err: any, req: PrinceRequest) => Response): this;
48
61
  json(data: any, status?: number): Response;
49
62
  response(): ResponseBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"prince.d.ts","sourceRoot":"","sources":["../src/prince.ts"],"names":[],"mappings":"AAIA,KAAK,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC3G,KAAK,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1E,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAClD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3B;AAED,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAoBnF,cAAM,eAAe;IACnB,OAAO,CAAC,OAAO,CAAO;IACtB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,KAAK,CAAa;IAE1B,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKjC,IAAI,CAAC,IAAI,EAAE,GAAG;IAMd,IAAI,CAAC,IAAI,EAAE,MAAM;IAMjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAMjB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAM;IAMlC,KAAK;CAGN;AAED,qBAAa,MAAM;IAgBL,OAAO,CAAC,OAAO;IAf3B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,YAAY,CAAC,CAA6C;IAClE,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,UAAU,CAKb;gBAEe,OAAO,UAAQ;IAEnC,GAAG,CAAC,EAAE,EAAE,UAAU;IAKlB,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,KAAK,QAAQ;IAKpD,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,SAAM;IAO5B,QAAQ;IAKR,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;IACzD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;IAC3D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;IAC1D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;IAC5D,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB;IAK3C,OAAO,CAAC,GAAG;IA6BX,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,SAAS;IAkEjB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,UAAU;YA+CJ,SAAS;YAoCT,cAAc;IAmDtB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4B5C,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAa5C,MAAM,CAAC,IAAI,SAAO;CA8CnB;AAED,eAAO,MAAM,MAAM,GAAI,aAAW,WAAoB,CAAC"}
1
+ {"version":3,"file":"prince.d.ts","sourceRoot":"","sources":["../src/prince.ts"],"names":[],"mappings":"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"}
package/dist/prince.js CHANGED
@@ -55,6 +55,10 @@ class Prince {
55
55
  this.middlewares.push(mw);
56
56
  return this;
57
57
  }
58
+ plugin(plugin, options) {
59
+ plugin(this, options);
60
+ return this;
61
+ }
58
62
  error(fn) {
59
63
  this.errorHandler = fn;
60
64
  return this;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "princejs",
3
- "version": "1.8.5",
3
+ "version": "1.9.1",
4
4
  "description": "An easy and fast backend framework that is among the top three — by a 13yo developer, for developers.",
5
5
  "main": "dist/prince.js",
6
6
  "types": "dist/prince.d.ts",
@@ -32,6 +32,18 @@
32
32
  "./db": {
33
33
  "import": "./dist/db.js",
34
34
  "types": "./dist/db.d.ts"
35
+ },
36
+ "./vercel": {
37
+ "import": "./dist/adapters/vercel.js",
38
+ "types": "./dist/adapters/vercel.d.ts"
39
+ },
40
+ "./cloudflare": {
41
+ "import": "./dist/adapters/cloudflare.js",
42
+ "types": "./dist/adapters/cloudflare.d.ts"
43
+ },
44
+ "./deno": {
45
+ "import": "./dist/adapters/deno.js",
46
+ "types": "./dist/adapters/deno.d.ts"
35
47
  }
36
48
  },
37
49
  "files": [
@@ -95,7 +107,7 @@
95
107
  "jose": "^6.1.2"
96
108
  },
97
109
  "scripts": {
98
- "build:js": "bun build src/prince.ts --outdir dist --target bun && bun build src/middleware.ts --outdir dist --target bun && bun build src/helpers.ts --outdir dist --target bun && bun build src/scheduler.ts --outdir dist --target bun && bun build bin/create.ts --outdir dist --target bun && bun build src/jsx.ts --outdir dist --target bun && bun build src/db.ts --outdir dist --target bun --format esm",
110
+ "build:js": "bun build src/prince.ts --outdir dist --target bun && bun build src/middleware.ts --outdir dist --target bun && bun build src/helpers.ts --outdir dist --target bun && bun build src/scheduler.ts --outdir dist --target bun && bun build bin/create.ts --outdir dist --target bun && bun build src/jsx.ts --outdir dist --target bun && bun build src/db.ts --outdir dist --target bun --format esm && bun build src/adapters/vercel.ts --outdir dist/adapters --format esm && bun build src/adapters/cloudflare.ts --outdir dist/adapters --format esm && bun build src/adapters/deno.ts --outdir dist/adapters --format esm",
99
111
  "build:types": "tsc --emitDeclarationOnly --skipLibCheck",
100
112
  "build": "bun run build:js && bun run build:types",
101
113
  "test": "bun test",