@toapi/server 1.2.0 → 1.2.2

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.
@@ -38,12 +38,10 @@ export declare const api: import("./define-api.js").ApiDefinition<{
38
38
  title: string;
39
39
  }, never, never, never, never, never, never, never, never>>;
40
40
  } & {
41
- "/formData": import("@toapi/common").MaybePromise<import("@toapi/common").Route<{}, never, never, {
42
- [k: string]: FormDataEntryValue;
43
- }, {}, undefined, never, never, never, never, never, never, never, never>>;
41
+ "/formData": import("@toapi/common").MaybePromise<import("@toapi/common").Route<{}, never, never, Record<string, string>, {}, undefined, never, never, never, never, never, never, never, never>>;
44
42
  } & {
45
43
  "/authorized": import("@toapi/common").MaybePromise<import("@toapi/common").Route<{}, {
46
- authorized: boolean;
44
+ authorized: true;
47
45
  }, {}, never, never, never, never, never, never, never, never, never, never, never>>;
48
46
  } & {
49
47
  "/files/*path": import("@toapi/common").MaybePromise<import("@toapi/common").Route<{
@@ -79,9 +77,7 @@ export declare const api: import("./define-api.js").ApiDefinition<{
79
77
  value: number;
80
78
  }, void, unknown>, {}, never, never, never, never, never, never, never, never, never, never, never>>;
81
79
  } & {
82
- "/optionalQuery": import("@toapi/common").MaybePromise<import("@toapi/common").Route<{}, {
83
- optional: string | undefined;
84
- }, {
80
+ "/optionalQuery": import("@toapi/common").MaybePromise<import("@toapi/common").Route<{}, {}, {
85
81
  optional: string | undefined;
86
82
  }, never, never, never, never, never, never, never, never, never, never, never>>;
87
83
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.mock.d.ts","sourceRoot":"","sources":["../src/api.mock.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAKlE,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AAErD,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0LZ,CAAC"}
1
+ {"version":3,"file":"api.mock.d.ts","sourceRoot":"","sources":["../src/api.mock.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAKlE,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AAErD,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkMZ,CAAC"}
package/dist/api.mock.js CHANGED
@@ -53,9 +53,15 @@ export const api = defineApi({
53
53
  .route("/formData", {
54
54
  POST: defineHandler({
55
55
  authorize: () => true,
56
- }, async (req) => TResponse.json(Object.fromEntries(await req.formData()), {
57
- cache: { tags: ["movies"] },
58
- })),
56
+ }, async (req) => {
57
+ const data = {};
58
+ for (const [key, value] of await req.formData()) {
59
+ if (typeof value === "string") {
60
+ data[key] = value;
61
+ }
62
+ }
63
+ return TResponse.json(data, { cache: { tags: ["movies"] } });
64
+ }),
59
65
  })
60
66
  .route("/authorized", {
61
67
  GET: defineHandler({
@@ -125,6 +131,7 @@ export const api = defineApi({
125
131
  },
126
132
  authorize: () => true,
127
133
  }, async (req) => {
128
- return TResponse.json(req.query());
134
+ const query = req.query();
135
+ return TResponse.json(query.optional === undefined ? {} : query);
129
136
  }),
130
137
  });
@@ -1 +1 @@
1
- {"version":3,"file":"revalidation-stream.d.ts","sourceRoot":"","sources":["../src/revalidation-stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,UAAU,OAAO;IACf,KAAK,EAAE,KAAK,CAAC;CACd;AAED,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,YAwCvD"}
1
+ {"version":3,"file":"revalidation-stream.d.ts","sourceRoot":"","sources":["../src/revalidation-stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,UAAU,OAAO;IACf,KAAK,EAAE,KAAK,CAAC;CACd;AAED,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,YA0CvD"}
@@ -18,10 +18,12 @@ export function streamRevalidatedTags({ cache }) {
18
18
  // send tags to client
19
19
  controller.enqueue(textEncoder.encode(`${tags.join(" ")}\n`));
20
20
  });
21
- // keepalive
22
- interval = setInterval(() => {
23
- controller.enqueue("\n");
24
- }, KEEPALIVE_INTERVAL);
21
+ // keepalive. The first one is sent right away so the response headers
22
+ // are flushed immediately instead of only once the interval first
23
+ // fires — consumers skip empty lines, so this is a no-op for them.
24
+ const keepalive = () => controller.enqueue(textEncoder.encode("\n"));
25
+ keepalive();
26
+ interval = setInterval(keepalive, KEEPALIVE_INTERVAL);
25
27
  },
26
28
  cancel() {
27
29
  if (interval)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toapi/server",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "author": {
5
5
  "name": "Michel Smola",
6
6
  "email": "michel.smola@farbenmeer.de"
@@ -21,13 +21,13 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "zod-openapi": "^6.0.0",
24
- "@toapi/common": "^1.2.0"
24
+ "@toapi/common": "^1.2.2"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^25.0.3",
28
28
  "vitest": "^4.0.16",
29
29
  "zod": "^4.0.17",
30
- "@farbenmeer/tag-based-cache": "0.5.1"
30
+ "@toapi/cache": "^0.5.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "typescript": "^5 || ^6.0.0",