druxt 0.25.1-dev.20261029031407 → 0.25.1-dev.20261031205554

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/dist/druxt.esm.js CHANGED
@@ -54,11 +54,12 @@ const consumerId = (axios) => {
54
54
  };
55
55
  const headersHaveCredentials = (headers, sessionCookie) => {
56
56
  const session = new RegExp(`(?:^|;\\s*)(?:${sessionCookie})=`, "i");
57
- return Object.entries(headers || {}).some(([name, value]) => {
57
+ return Object.entries(headers || {}).some(([name, raw]) => {
58
+ const value = Array.isArray(raw) ? raw.join("; ") : raw;
58
59
  if (!value || typeof value === "object")
59
60
  return false;
60
61
  const header = name.toLowerCase();
61
- return header === "authorization" || header === "cookie" && session.test(String(value));
62
+ return header === "authorization" || header === "origin" || header === "cookie" && session.test(String(value));
62
63
  });
63
64
  };
64
65
  const configHasCredentials = (config, sessionCookie = DRUPAL_SESSION_COOKIE) => {
@@ -109,7 +110,7 @@ const parseCacheLifetime = (headers) => {
109
110
  if (directives.some((d) => ["private", "no-store", "no-cache"].includes(d)))
110
111
  return 0;
111
112
  const vary = header("vary").toLowerCase().split(",").map((v) => v.trim()).filter(Boolean);
112
- if (vary.some((v) => !["cookie", "x-consumer-id", "accept-encoding"].includes(v)))
113
+ if (vary.some((v) => !["cookie", "x-consumer-id", "accept-encoding", "origin"].includes(v)))
113
114
  return 0;
114
115
  const seconds = (name) => {
115
116
  const directive = directives.find((d) => d.startsWith(`${name}=`));
@@ -202,6 +203,15 @@ const lifetimes = new WeakMap();
202
203
  const DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
203
204
  const CACHE_SAFE_OPTIONS = ["validateStatus", "timeout"];
204
205
  const requestOptions = ({ bypassCache } = {}) => bypassCache ? [{ bypassCache: true }] : [];
206
+ const isNested = (value) => value !== null && typeof value === "object";
207
+ const stringifyNested = (value, name) => Object.entries(value).map(([key, item]) => {
208
+ if (!name && (!isNested(item) || Array.isArray(item)))
209
+ return stringify({ [key]: item });
210
+ if (item === null || typeof item === "undefined")
211
+ return "";
212
+ const nested = name ? `${name}[${encodeURIComponent(key)}]` : encodeURIComponent(key);
213
+ return isNested(item) ? stringifyNested(item, nested) : `${nested}=${encodeURIComponent(item)}`;
214
+ }).filter((part) => part).join("&");
205
215
  class DruxtClient {
206
216
  constructor(baseUrl, options = {}) {
207
217
  this.log = consola.create({ defaults: {
@@ -289,8 +299,8 @@ class DruxtClient {
289
299
  if (typeof query === "object" && typeof query.getQueryString === "function" && (query = query.getQueryString())) {
290
300
  return [url, query].join("?");
291
301
  }
292
- if (typeof query === "object" && Object.keys(query).length) {
293
- return [url, stringify(query)].join("?");
302
+ if (typeof query === "object" && (query = stringifyNested(query))) {
303
+ return [url, query].join("?");
294
304
  }
295
305
  return url;
296
306
  }
@@ -553,7 +563,7 @@ const cacheClearHandler = (secret) => (req, res) => {
553
563
  };
554
564
 
555
565
  var name = "druxt";
556
- var version = "0.25.1-dev.20261029031407";
566
+ var version = "0.25.1-dev.20261031205554";
557
567
  var description = "The Fully Decoupled Drupal Framework for Nuxt.js.";
558
568
  var keywords = [
559
569
  "cms",
package/dist/druxt.ssr.js CHANGED
@@ -67,11 +67,12 @@ const consumerId = (axios) => {
67
67
  };
68
68
  const headersHaveCredentials = (headers, sessionCookie) => {
69
69
  const session = new RegExp(`(?:^|;\\s*)(?:${sessionCookie})=`, "i");
70
- return Object.entries(headers || {}).some(([name, value]) => {
70
+ return Object.entries(headers || {}).some(([name, raw]) => {
71
+ const value = Array.isArray(raw) ? raw.join("; ") : raw;
71
72
  if (!value || typeof value === "object")
72
73
  return false;
73
74
  const header = name.toLowerCase();
74
- return header === "authorization" || header === "cookie" && session.test(String(value));
75
+ return header === "authorization" || header === "origin" || header === "cookie" && session.test(String(value));
75
76
  });
76
77
  };
77
78
  const configHasCredentials = (config, sessionCookie = DRUPAL_SESSION_COOKIE) => {
@@ -122,7 +123,7 @@ const parseCacheLifetime = (headers) => {
122
123
  if (directives.some((d) => ["private", "no-store", "no-cache"].includes(d)))
123
124
  return 0;
124
125
  const vary = header("vary").toLowerCase().split(",").map((v) => v.trim()).filter(Boolean);
125
- if (vary.some((v) => !["cookie", "x-consumer-id", "accept-encoding"].includes(v)))
126
+ if (vary.some((v) => !["cookie", "x-consumer-id", "accept-encoding", "origin"].includes(v)))
126
127
  return 0;
127
128
  const seconds = (name) => {
128
129
  const directive = directives.find((d) => d.startsWith(`${name}=`));
@@ -215,6 +216,15 @@ const lifetimes = new WeakMap();
215
216
  const DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
216
217
  const CACHE_SAFE_OPTIONS = ["validateStatus", "timeout"];
217
218
  const requestOptions = ({ bypassCache } = {}) => bypassCache ? [{ bypassCache: true }] : [];
219
+ const isNested = (value) => value !== null && typeof value === "object";
220
+ const stringifyNested = (value, name) => Object.entries(value).map(([key, item]) => {
221
+ if (!name && (!isNested(item) || Array.isArray(item)))
222
+ return querystring.stringify({ [key]: item });
223
+ if (item === null || typeof item === "undefined")
224
+ return "";
225
+ const nested = name ? `${name}[${encodeURIComponent(key)}]` : encodeURIComponent(key);
226
+ return isNested(item) ? stringifyNested(item, nested) : `${nested}=${encodeURIComponent(item)}`;
227
+ }).filter((part) => part).join("&");
218
228
  class DruxtClient {
219
229
  constructor(baseUrl, options = {}) {
220
230
  this.log = consola__default["default"].create({ defaults: {
@@ -302,8 +312,8 @@ class DruxtClient {
302
312
  if (typeof query === "object" && typeof query.getQueryString === "function" && (query = query.getQueryString())) {
303
313
  return [url, query].join("?");
304
314
  }
305
- if (typeof query === "object" && Object.keys(query).length) {
306
- return [url, querystring.stringify(query)].join("?");
315
+ if (typeof query === "object" && (query = stringifyNested(query))) {
316
+ return [url, query].join("?");
307
317
  }
308
318
  return url;
309
319
  }
@@ -566,7 +576,7 @@ const cacheClearHandler = (secret) => (req, res) => {
566
576
  };
567
577
 
568
578
  var name = "druxt";
569
- var version = "0.25.1-dev.20261029031407";
579
+ var version = "0.25.1-dev.20261031205554";
570
580
  var description = "The Fully Decoupled Drupal Framework for Nuxt.js.";
571
581
  var keywords = [
572
582
  "cms",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "druxt",
3
- "version": "0.25.1-dev.20261029031407",
3
+ "version": "0.25.1-dev.20261031205554",
4
4
  "description": "The Fully Decoupled Drupal Framework for Nuxt.js.",
5
5
  "keywords": [
6
6
  "cms",