Skip to content

Commit b9c5bc0

Browse files
committed
feat(connect)!: set legacyGet header to false on cache.get and data.get #531
1 parent ad3b64c commit b9c5bc0

File tree

7 files changed

+65
-32
lines changed

7 files changed

+65
-32
lines changed

packages/connect/deno/services/cache.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@ export const get = (key: string) => (h: HyperRequestFunction) => {
2020
service,
2121
method: Method.GET,
2222
headers: new Headers({
23-
[HYPER_LEGACY_GET_HEADER]: "true",
23+
/**
24+
* Once the legacy flag is removed hyper,
25+
* this will effectively do nothing
26+
*
27+
* TODO: remove when legacy flag is removed from hyper
28+
*/
29+
[HYPER_LEGACY_GET_HEADER]: "false",
2430
}),
2531
resource: key,
2632
});

packages/connect/deno/services/data.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@ export const get = (id: string) => (hyper: HyperRequestFunction) => {
1818
service,
1919
method: Method.GET,
2020
headers: new Headers({
21-
[HYPER_LEGACY_GET_HEADER]: "true",
21+
/**
22+
* Once the legacy flag is removed hyper,
23+
* this will effectively do nothing
24+
*
25+
* TODO: remove when legacy flag is removed from hyper
26+
*/
27+
[HYPER_LEGACY_GET_HEADER]: "false",
2228
}),
2329
resource: id,
2430
});

packages/connect/deno/tests/cache.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ test("cache.get", async () => {
3838
assertEquals(h.service, "cache");
3939
assertEquals(h.method, "GET");
4040
assertEquals(h.resource, "game-1");
41-
assertEquals(h.headers?.get(HYPER_LEGACY_GET_HEADER), "true");
41+
assertEquals(h.headers?.get(HYPER_LEGACY_GET_HEADER), "false");
4242
return Promise.resolve(new Request("http://localhost"));
4343
};
4444

packages/connect/deno/tests/connect.ts

Lines changed: 0 additions & 22 deletions
This file was deleted.

packages/connect/deno/tests/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ test("data.get", async () => {
3939
assertEquals(h.service, "data");
4040
assertEquals(h.method, "GET");
4141
assertEquals(h.resource, "game-1");
42-
assertEquals(h.headers?.get(HYPER_LEGACY_GET_HEADER), "true");
42+
assertEquals(h.headers?.get(HYPER_LEGACY_GET_HEADER), "false");
4343
return Promise.resolve(new Request("http://localhost"));
4444
};
4545

packages/connect/deno/tests/mod.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// deno-lint-ignore-file ban-ts-comment
2+
import { assertEquals } from "../dev_deps.ts";
3+
import { connect } from "../mod.ts";
4+
5+
const test = Deno.test;
6+
7+
test("mod", async (t) => {
8+
await t.step("not found", async () => {
9+
globalThis.fetch = () =>
10+
Promise.resolve(
11+
new Response(JSON.stringify({ ok: false }), {
12+
status: 404,
13+
headers: { "content-type": "application/json" },
14+
})
15+
);
16+
17+
const hyper = connect("http://localhost:6363/test");
18+
const result = await hyper.data.get("test-1");
19+
assertEquals(result.ok, false);
20+
// @ts-ignore
21+
assertEquals(result.status, 404);
22+
});
23+
24+
await t.step("found", async () => {
25+
globalThis.fetch = () =>
26+
Promise.resolve(
27+
new Response(JSON.stringify({ ok: true, doc: { _id: "test-1" } }), {
28+
status: 404,
29+
headers: { "content-type": "application/json" },
30+
})
31+
);
32+
33+
const hyper = connect("http://localhost:6363/test");
34+
const result = await hyper.data.get("test-1");
35+
assertEquals(result.ok, true);
36+
// @ts-ignore
37+
assertEquals(result.doc, { _id: "test-1" });
38+
});
39+
});

packages/connect/deno/types.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@ export interface QueryOptions {
6767
useIndex?: string;
6868
}
6969

70-
// TODO: exception to the rule of returning a Result shape.
71-
// TODO: This will change to be just a regular result in a major version
72-
export type HyperGetResult<Type extends Obj = Obj> = Type | NotOkResult;
70+
export type HyperGetDocResult<Type extends Obj = Obj> =
71+
| (OkResult & { doc: Type })
72+
| NotOkResult;
7373

7474
export type HyperDocsResult<Type extends Obj = Obj> =
7575
| (OkResult & { docs: Type[] })
7676
| NotOkResult;
7777
export interface HyperData {
7878
add: <Type extends Obj = Obj>(doc: Type) => Promise<IdResult>;
79-
get: <Type extends Obj = Obj>(id: string) => Promise<HyperGetResult<Type>>;
79+
get: <Type extends Obj = Obj>(id: string) => Promise<HyperGetDocResult<Type>>;
8080
list: <Type extends Obj = Obj>(
8181
options?: ListOptions,
8282
) => Promise<HyperDocsResult<Type>>;
@@ -100,7 +100,9 @@ export interface HyperCache {
100100
value: Type,
101101
ttl?: string,
102102
) => Promise<Result>;
103-
get: <Type extends Obj = Obj>(key: string) => Promise<HyperGetResult<Type>>;
103+
get: <Type extends Obj = Obj>(
104+
key: string,
105+
) => Promise<HyperGetDocResult<Type>>;
104106
remove: (key: string) => Promise<Result>;
105107
set: <Type extends Obj = Obj>(
106108
key: string,
@@ -123,7 +125,9 @@ export type HyperSearchLoadResult<Type extends Obj = Obj> =
123125
export interface HyperSearch {
124126
add: <Type extends Obj = Obj>(key: string, doc: Type) => Promise<Result>;
125127
remove: (key: string) => Promise<Result>;
126-
get: <Type extends Obj = Obj>(key: string) => Promise<HyperGetResult<Type>>;
128+
get: <Type extends Obj = Obj>(
129+
key: string,
130+
) => Promise<(OkResult & { key: string; doc: Type }) | NotOkResult>;
127131
update: <Type extends Obj = Obj>(key: string, doc: Type) => Promise<Result>;
128132
query: <Type extends Obj = Obj>(
129133
query: string,

0 commit comments

Comments
 (0)