@codewheel/jsonapi-frontend-client 1.0.3 → 1.0.4
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 +4 -0
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +42 -14
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +18 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -61,6 +61,10 @@ await resolvePath("/about-us", {
|
|
|
61
61
|
})
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
### Caching note (Next.js / SSR)
|
|
65
|
+
|
|
66
|
+
If you pass `Authorization` (or `Cookie`) headers, this client defaults to `cache: "no-store"` unless you explicitly set `options.init.cache`.
|
|
67
|
+
|
|
64
68
|
## Query building (optional)
|
|
65
69
|
|
|
66
70
|
This client doesn’t require a query builder, but `drupal-jsonapi-params` works well:
|
package/dist/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAuD,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBlE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAa5D;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAuD,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBlE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAa5D;AAwBD,wBAAsB,YAAY,CAAC,CAAC,GAAG,eAAe,EACpD,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,GACA,OAAO,CAAC,CAAC,CAAC,CAuDZ;AAED,wBAAsB,SAAS,CAAC,CAAC,GAAG,eAAe,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,GACA,OAAO,CAAC,CAAC,CAAC,CAyDZ"}
|
package/dist/fetch.js
CHANGED
|
@@ -46,6 +46,9 @@ function buildSafeUrl(input, base, options) {
|
|
|
46
46
|
}
|
|
47
47
|
return url;
|
|
48
48
|
}
|
|
49
|
+
function hasAuthLikeHeaders(headers) {
|
|
50
|
+
return headers.has("authorization") || headers.has("cookie");
|
|
51
|
+
}
|
|
49
52
|
export async function fetchJsonApi(jsonapiPath, options) {
|
|
50
53
|
const base = getDrupalBaseUrlFromOptions({ baseUrl: options?.baseUrl, envKey: options?.envKey });
|
|
51
54
|
const fetcher = getFetch(options?.fetch);
|
|
@@ -63,15 +66,28 @@ export async function fetchJsonApi(jsonapiPath, options) {
|
|
|
63
66
|
if (!headers.has("Accept")) {
|
|
64
67
|
headers.set("Accept", "application/vnd.api+json");
|
|
65
68
|
}
|
|
66
|
-
const
|
|
69
|
+
const hasExplicitCache = options?.init?.cache !== undefined;
|
|
70
|
+
const disableCaching = hasAuthLikeHeaders(headers) && !hasExplicitCache;
|
|
71
|
+
const init = {
|
|
67
72
|
...options?.init,
|
|
68
73
|
headers,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
74
|
+
};
|
|
75
|
+
if (disableCaching) {
|
|
76
|
+
init.cache = "no-store";
|
|
77
|
+
// Avoid mixing Next.js cache options with no-store.
|
|
78
|
+
delete init.next;
|
|
79
|
+
}
|
|
80
|
+
const fetchInit = disableCaching
|
|
81
|
+
? init
|
|
82
|
+
: {
|
|
83
|
+
...init,
|
|
84
|
+
next: {
|
|
85
|
+
...(options?.init?.next ?? {}),
|
|
86
|
+
revalidate: options?.revalidate,
|
|
87
|
+
tags: Array.from(new Set([...(options?.init?.next?.tags ?? []), ...tags])),
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
const res = await fetcher(url.toString(), fetchInit);
|
|
75
91
|
if (!res.ok) {
|
|
76
92
|
throw new Error(`JSON:API fetch failed: ${res.status} ${res.statusText}`);
|
|
77
93
|
}
|
|
@@ -99,15 +115,27 @@ export async function fetchView(dataUrl, options) {
|
|
|
99
115
|
if (!headers.has("Accept")) {
|
|
100
116
|
headers.set("Accept", "application/vnd.api+json");
|
|
101
117
|
}
|
|
102
|
-
const
|
|
118
|
+
const hasExplicitCache = options?.init?.cache !== undefined;
|
|
119
|
+
const disableCaching = hasAuthLikeHeaders(headers) && !hasExplicitCache;
|
|
120
|
+
const init = {
|
|
103
121
|
...options?.init,
|
|
104
122
|
headers,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
123
|
+
};
|
|
124
|
+
if (disableCaching) {
|
|
125
|
+
init.cache = "no-store";
|
|
126
|
+
delete init.next;
|
|
127
|
+
}
|
|
128
|
+
const fetchInit = disableCaching
|
|
129
|
+
? init
|
|
130
|
+
: {
|
|
131
|
+
...init,
|
|
132
|
+
next: {
|
|
133
|
+
...(options?.init?.next ?? {}),
|
|
134
|
+
revalidate: options?.revalidate,
|
|
135
|
+
tags: Array.from(new Set([...(options?.init?.next?.tags ?? []), ...tags])),
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
const res = await fetcher(url.toString(), fetchInit);
|
|
111
139
|
if (!res.ok) {
|
|
112
140
|
throw new Error(`View fetch failed: ${res.status} ${res.statusText}`);
|
|
113
141
|
}
|
package/dist/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAuD,MAAM,gBAAgB,CAAA;AAE1G;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,GACA,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAuD,MAAM,gBAAgB,CAAA;AAE1G;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,GACA,OAAO,CAAC,eAAe,CAAC,CA8C1B"}
|
package/dist/resolve.js
CHANGED
|
@@ -15,14 +15,26 @@ export async function resolvePath(path, options) {
|
|
|
15
15
|
if (!headers.has("Accept")) {
|
|
16
16
|
headers.set("Accept", "application/vnd.api+json");
|
|
17
17
|
}
|
|
18
|
-
const
|
|
18
|
+
const hasExplicitCache = options?.init?.cache !== undefined;
|
|
19
|
+
const disableCaching = (headers.has("authorization") || headers.has("cookie")) && !hasExplicitCache;
|
|
20
|
+
const init = {
|
|
19
21
|
...options?.init,
|
|
20
22
|
headers,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
23
|
+
};
|
|
24
|
+
if (disableCaching) {
|
|
25
|
+
init.cache = "no-store";
|
|
26
|
+
delete init.next;
|
|
27
|
+
}
|
|
28
|
+
const fetchInit = disableCaching
|
|
29
|
+
? init
|
|
30
|
+
: {
|
|
31
|
+
...init,
|
|
32
|
+
next: {
|
|
33
|
+
...(options?.init?.next ?? {}),
|
|
34
|
+
revalidate: options?.revalidate,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
const res = await fetcher(url.toString(), fetchInit);
|
|
26
38
|
if (!res.ok) {
|
|
27
39
|
throw new Error(`Resolver failed: ${res.status} ${res.statusText}`);
|
|
28
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codewheel/jsonapi-frontend-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "TypeScript client helpers for Drupal drupal/jsonapi_frontend",
|
|
5
5
|
"homepage": "https://github.com/code-wheel/jsonapi-frontend-client#readme",
|
|
6
6
|
"repository": {
|