reroute-js 0.35.0 → 0.36.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.
Files changed (178) hide show
  1. package/README.md +1 -1
  2. package/cli/bin.d.ts +1 -1
  3. package/cli/bin.js +46 -10
  4. package/cli/bin.js.map +3 -3
  5. package/cli/index.d.ts +1 -1
  6. package/cli/index.js +4 -4
  7. package/cli/index.js.map +1 -1
  8. package/cli/src/cli.d.ts +1 -1
  9. package/cli/src/commands/analyze.d.ts +1 -1
  10. package/cli/src/commands/build.d.ts +1 -1
  11. package/cli/src/commands/dev.d.ts +1 -1
  12. package/cli/src/commands/gen.d.ts +1 -1
  13. package/cli/src/commands/index.d.ts +1 -1
  14. package/cli/src/commands/init.d.ts +1 -1
  15. package/cli/src/commands/lib/assets.d.ts +1 -1
  16. package/cli/src/commands/lib/bundler.d.ts +1 -1
  17. package/cli/src/commands/lib/command.d.ts +1 -1
  18. package/cli/src/commands/lib/env.d.ts +1 -1
  19. package/cli/src/commands/lib/index.d.ts +1 -1
  20. package/cli/src/commands/lib/log.d.ts +1 -1
  21. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  23. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  24. package/cli/src/commands/lib/production.d.ts +1 -1
  25. package/cli/src/commands/lib/server.d.ts +1 -1
  26. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  27. package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
  28. package/cli/src/commands/lib/tailwind.d.ts +1 -1
  29. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  30. package/cli/src/commands/lib/version.d.ts +1 -1
  31. package/cli/src/commands/og.d.ts +1 -1
  32. package/cli/src/commands/start.d.ts +1 -1
  33. package/cli/src/index.d.ts +1 -1
  34. package/core/index.d.ts +1 -1
  35. package/core/index.js +42 -6
  36. package/core/index.js.map +3 -3
  37. package/core/src/bundler/hash.d.ts +1 -1
  38. package/core/src/bundler/index.d.ts +1 -1
  39. package/core/src/config.d.ts +1 -1
  40. package/core/src/content/discovery.d.ts +1 -1
  41. package/core/src/content/index.d.ts +1 -1
  42. package/core/src/content/metadata.d.ts +1 -1
  43. package/core/src/index.d.ts +1 -1
  44. package/core/src/llms/extractor.d.ts +1 -1
  45. package/core/src/llms/formatter.d.ts +1 -1
  46. package/core/src/llms/full-generator.d.ts +1 -1
  47. package/core/src/llms/index-generator.d.ts +1 -1
  48. package/core/src/llms/index.d.ts +1 -1
  49. package/core/src/og/discovery.d.ts +1 -1
  50. package/core/src/og/index.d.ts +1 -1
  51. package/core/src/og/meta.d.ts +1 -1
  52. package/core/src/og/render.d.ts +1 -1
  53. package/core/src/og/types.d.ts +1 -1
  54. package/core/src/robots/discovery.d.ts +1 -1
  55. package/core/src/robots/generator.d.ts +1 -1
  56. package/core/src/robots/index.d.ts +1 -1
  57. package/core/src/robots/policies.d.ts +1 -1
  58. package/core/src/rss/discovery.d.ts +1 -1
  59. package/core/src/rss/generator.d.ts +1 -1
  60. package/core/src/rss/index.d.ts +1 -1
  61. package/core/src/sitemap/discovery.d.ts +1 -1
  62. package/core/src/sitemap/generator.d.ts +1 -1
  63. package/core/src/sitemap/index.d.ts +1 -1
  64. package/core/src/ssr/index.d.ts +1 -1
  65. package/core/src/ssr/lib/cache.d.ts +1 -1
  66. package/core/src/ssr/lib/collections.d.ts +1 -1
  67. package/core/src/ssr/lib/compression.d.ts +1 -1
  68. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  69. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  70. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  71. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  72. package/core/src/ssr/lib/data.d.ts +1 -1
  73. package/core/src/ssr/lib/html.d.ts +1 -1
  74. package/core/src/ssr/lib/imports.d.ts +1 -1
  75. package/core/src/ssr/lib/index.d.ts +1 -1
  76. package/core/src/ssr/lib/layouts.d.ts +1 -1
  77. package/core/src/ssr/lib/metadata.d.ts +1 -1
  78. package/core/src/ssr/lib/mime.d.ts +1 -1
  79. package/core/src/ssr/lib/modules.d.ts +1 -1
  80. package/core/src/ssr/lib/path.d.ts +1 -1
  81. package/core/src/ssr/lib/preload.d.ts +1 -1
  82. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  83. package/core/src/ssr/lib/scripts/collections.d.ts.map +1 -1
  84. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  85. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  86. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  87. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  88. package/core/src/ssr/lib/seed.d.ts +1 -1
  89. package/core/src/ssr/lib/serialize.d.ts +1 -1
  90. package/core/src/ssr/lib/setup.d.ts +1 -1
  91. package/core/src/ssr/lib/styles.d.ts +1 -1
  92. package/core/src/ssr/lib/template.d.ts +1 -1
  93. package/core/src/ssr/lib/types.d.ts +1 -1
  94. package/core/src/ssr/render.d.ts +1 -1
  95. package/core/src/ssr/stream.d.ts +1 -1
  96. package/elysia/index.d.ts +1 -1
  97. package/elysia/index.js +42 -6
  98. package/elysia/index.js.map +3 -3
  99. package/elysia/src/index.d.ts +1 -1
  100. package/elysia/src/libs/assets.d.ts +1 -1
  101. package/elysia/src/libs/cache.d.ts +1 -1
  102. package/elysia/src/libs/caching.d.ts +1 -1
  103. package/elysia/src/libs/http.d.ts +1 -1
  104. package/elysia/src/libs/image.d.ts +1 -1
  105. package/elysia/src/libs/index.d.ts +1 -1
  106. package/elysia/src/libs/llms.d.ts +1 -1
  107. package/elysia/src/libs/response.d.ts +1 -1
  108. package/elysia/src/libs/serving.d.ts +1 -1
  109. package/elysia/src/plugin.d.ts +1 -1
  110. package/elysia/src/routes/artifacts.d.ts +1 -1
  111. package/elysia/src/routes/content.d.ts +1 -1
  112. package/elysia/src/routes/image.d.ts +1 -1
  113. package/elysia/src/routes/index.d.ts +1 -1
  114. package/elysia/src/routes/internal.d.ts +1 -1
  115. package/elysia/src/routes/llms.d.ts +1 -1
  116. package/elysia/src/routes/og.d.ts +1 -1
  117. package/elysia/src/routes/redirects.d.ts +1 -1
  118. package/elysia/src/routes/robots.d.ts +1 -1
  119. package/elysia/src/routes/rss.d.ts +1 -1
  120. package/elysia/src/routes/search.d.ts +1 -1
  121. package/elysia/src/routes/sitemap.d.ts +1 -1
  122. package/elysia/src/routes/ssr.d.ts +1 -1
  123. package/elysia/src/routes/static.d.ts +1 -1
  124. package/elysia/src/types.d.ts +1 -1
  125. package/package.json +1 -1
  126. package/react/index.d.ts +1 -1
  127. package/react/index.js +152 -33
  128. package/react/index.js.map +3 -3
  129. package/react/src/components/ClientOnly.d.ts +1 -1
  130. package/react/src/components/ContentRoute.d.ts +1 -1
  131. package/react/src/components/Image.d.ts +1 -1
  132. package/react/src/components/LazyRoute.d.ts +1 -1
  133. package/react/src/components/Link.d.ts +1 -1
  134. package/react/src/components/Markdown.d.ts +1 -1
  135. package/react/src/components/Outlet.d.ts +1 -1
  136. package/react/src/components/index.d.ts +1 -1
  137. package/react/src/hooks/index.d.ts +1 -1
  138. package/react/src/hooks/useContent.d.ts +62 -11
  139. package/react/src/hooks/useContent.d.ts.map +1 -1
  140. package/react/src/hooks/useData.d.ts +1 -1
  141. package/react/src/hooks/useFeed.d.ts +1 -1
  142. package/react/src/hooks/useLayoutData.d.ts +1 -1
  143. package/react/src/hooks/useLlms.d.ts +1 -1
  144. package/react/src/hooks/useNavigate.d.ts +1 -1
  145. package/react/src/hooks/useParams.d.ts +1 -1
  146. package/react/src/hooks/useRouter.d.ts +1 -1
  147. package/react/src/hooks/useSearch.d.ts +1 -1
  148. package/react/src/hooks/useSearchParams.d.ts +1 -1
  149. package/react/src/hooks/useToc.d.ts +1 -1
  150. package/react/src/index.d.ts +1 -1
  151. package/react/src/lib/collection.d.ts +1 -1
  152. package/react/src/lib/content.d.ts +1 -1
  153. package/react/src/lib/head.d.ts +1 -1
  154. package/react/src/lib/index.d.ts +1 -1
  155. package/react/src/lib/lazy-route.d.ts +1 -1
  156. package/react/src/lib/route-loader.d.ts +1 -1
  157. package/react/src/providers/ContentProvider.d.ts +1 -1
  158. package/react/src/providers/RerouteProvider.d.ts +1 -1
  159. package/react/src/providers/RouterProvider.d.ts +1 -1
  160. package/react/src/providers/index.d.ts +1 -1
  161. package/react/src/types/any.d.ts +1 -1
  162. package/react/src/types/index.d.ts +1 -1
  163. package/react/src/types/router.d.ts +1 -1
  164. package/telemetry/react.d.ts +1 -1
  165. package/telemetry/react.js +2 -2
  166. package/telemetry/react.js.map +1 -1
  167. package/telemetry/server.d.ts +1 -1
  168. package/telemetry/server.js +2 -2
  169. package/telemetry/server.js.map +1 -1
  170. package/telemetry/src/react/api.d.ts +1 -1
  171. package/telemetry/src/react/context.d.ts +1 -1
  172. package/telemetry/src/react/index.d.ts +1 -1
  173. package/telemetry/src/react/telemetry.d.ts +1 -1
  174. package/telemetry/src/server/context.d.ts +1 -1
  175. package/telemetry/src/server/index.d.ts +1 -1
  176. package/telemetry/src/server/instrumentation.d.ts +1 -1
  177. package/telemetry/src/server/plugin.d.ts +1 -1
  178. package/telemetry/src/server/sourcemap.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reroute-js",
3
- "version": "0.35.0",
3
+ "version": "0.36.1",
4
4
  "type": "module",
5
5
  "author": "stewones <hi@stewan.io>",
6
6
  "scripts": {
package/react/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
package/react/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.35.0
2
+ * reroute-js v0.36.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -670,6 +670,44 @@ function sortByDate(order) {
670
670
  return order === "asc" ? da - db : db - da;
671
671
  };
672
672
  }
673
+ function compareForSort(a, b) {
674
+ if (a == null && b == null)
675
+ return 0;
676
+ if (a == null)
677
+ return 1;
678
+ if (b == null)
679
+ return -1;
680
+ if (typeof a === "string" && typeof b === "string") {
681
+ const dateA = Date.parse(a);
682
+ const dateB = Date.parse(b);
683
+ if (!(Number.isNaN(dateA) || Number.isNaN(dateB))) {
684
+ return dateA - dateB;
685
+ }
686
+ }
687
+ if (a instanceof Date && b instanceof Date) {
688
+ return a.getTime() - b.getTime();
689
+ }
690
+ if (typeof a === "number" && typeof b === "number") {
691
+ return a - b;
692
+ }
693
+ return String(a).localeCompare(String(b));
694
+ }
695
+ function createSortFunction(sortSpec) {
696
+ const fields = Object.keys(sortSpec);
697
+ return (a, b) => {
698
+ for (const field of fields) {
699
+ const direction = sortSpec[field];
700
+ const multiplier = direction === -1 || direction === "desc" ? -1 : 1;
701
+ const aVal = getNestedValue(a, field);
702
+ const bVal = getNestedValue(b, field);
703
+ const comparison = compareForSort(aVal, bVal);
704
+ if (comparison !== 0) {
705
+ return comparison * multiplier;
706
+ }
707
+ }
708
+ return 0;
709
+ };
710
+ }
673
711
  function getNestedValue(obj, path) {
674
712
  const parts = path.split(".");
675
713
  let current = obj;
@@ -680,26 +718,98 @@ function getNestedValue(obj, path) {
680
718
  }
681
719
  return current;
682
720
  }
683
- function applyFilter(items, filter) {
684
- if (!filter)
685
- return items;
721
+ function compareValues(itemValue, operator, filterValue) {
722
+ const normalize = (val) => {
723
+ if (val == null)
724
+ return null;
725
+ if (val instanceof Date)
726
+ return val.getTime();
727
+ if (typeof val === "string") {
728
+ const date = Date.parse(val);
729
+ if (!Number.isNaN(date))
730
+ return date;
731
+ }
732
+ return val;
733
+ };
734
+ const normalizedItem = normalize(itemValue);
735
+ const normalizedFilter = normalize(filterValue);
736
+ switch (operator) {
737
+ case "$gt":
738
+ return normalizedItem != null && normalizedItem > normalizedFilter;
739
+ case "$gte":
740
+ return normalizedItem != null && normalizedItem >= normalizedFilter;
741
+ case "$lt":
742
+ return normalizedItem != null && normalizedItem < normalizedFilter;
743
+ case "$lte":
744
+ return normalizedItem != null && normalizedItem <= normalizedFilter;
745
+ case "$eq":
746
+ return itemValue === filterValue;
747
+ case "$ne":
748
+ return itemValue !== filterValue;
749
+ case "$in":
750
+ return Array.isArray(filterValue) && filterValue.includes(itemValue);
751
+ case "$nin":
752
+ return Array.isArray(filterValue) && !filterValue.includes(itemValue);
753
+ case "$regex": {
754
+ const regex = filterValue instanceof RegExp ? filterValue : new RegExp(filterValue);
755
+ return regex.test(String(itemValue ?? ""));
756
+ }
757
+ case "$exists":
758
+ return filterValue ? itemValue !== undefined : itemValue === undefined;
759
+ default:
760
+ return false;
761
+ }
762
+ }
763
+ function isOperatorObject(value) {
764
+ if (typeof value !== "object" || value === null || value instanceof RegExp || value instanceof Date) {
765
+ return false;
766
+ }
767
+ const keys = Object.keys(value);
768
+ return keys.length > 0 && keys.every((k) => k.startsWith("$"));
769
+ }
770
+ function matchesFilter(item, filter) {
686
771
  if (typeof filter === "function") {
687
- return items.filter(filter);
772
+ return filter(item);
773
+ }
774
+ if ("$and" in filter && Array.isArray(filter.$and)) {
775
+ return filter.$and.every((f) => matchesFilter(item, f));
776
+ }
777
+ if ("$or" in filter && Array.isArray(filter.$or)) {
778
+ return filter.$or.some((f) => matchesFilter(item, f));
688
779
  }
689
- return items.filter((item) => {
690
- for (const key in filter) {
691
- const filterValue = filter[key];
692
- const itemValue = getNestedValue(item, key);
693
- if (filterValue instanceof RegExp) {
694
- if (!filterValue.test(String(itemValue ?? ""))) {
780
+ if ("$not" in filter && filter.$not) {
781
+ return !matchesFilter(item, filter.$not);
782
+ }
783
+ for (const key in filter) {
784
+ if (key === "$and" || key === "$or" || key === "$not")
785
+ continue;
786
+ const filterValue = filter[key];
787
+ const itemValue = getNestedValue(item, key);
788
+ if (filterValue instanceof RegExp) {
789
+ if (!filterValue.test(String(itemValue ?? ""))) {
790
+ return false;
791
+ }
792
+ continue;
793
+ }
794
+ if (isOperatorObject(filterValue)) {
795
+ for (const operator in filterValue) {
796
+ const opValue = filterValue[operator];
797
+ if (!compareValues(itemValue, operator, opValue)) {
695
798
  return false;
696
799
  }
697
- } else if (itemValue !== filterValue) {
698
- return false;
699
800
  }
801
+ continue;
700
802
  }
701
- return true;
702
- });
803
+ if (itemValue !== filterValue) {
804
+ return false;
805
+ }
806
+ }
807
+ return true;
808
+ }
809
+ function applyFilter(items, filter) {
810
+ if (!filter)
811
+ return items;
812
+ return items.filter((item) => matchesFilter(item, filter));
703
813
  }
704
814
  function prefetchContent(entry) {
705
815
  if (typeof window === "undefined")
@@ -763,18 +873,8 @@ function useContent(params) {
763
873
  }
764
874
  const rec = g.__REROUTE_SSR_ACCESSED__;
765
875
  const existing = rec[collection] || {};
766
- const isCustomSort = typeof sort === "function";
767
- const sortKey = isCustomSort ? "custom" : sort === false ? "none" : typeof sort === "string" ? sort === "date-asc" ? "date-asc" : "date-desc" : typeof sort === "object" && sort && sort.date === "asc" ? "date-asc" : "date-desc";
768
- existing.sort = existing.sort && existing.sort !== sortKey ? "custom" : existing.sort || sortKey;
769
- const requested = typeof limit === "number" && limit > 0 ? limit : Infinity;
770
- existing.limit = Math.max(existing.limit || 0, requested);
771
- if (filter && typeof filter === "object" && !Array.isArray(filter)) {
772
- const filterSlug = filter.slug;
773
- if (typeof filterSlug === "string") {
774
- if (!existing.slugs)
775
- existing.slugs = new Set;
776
- existing.slugs.add(filterSlug);
777
- }
876
+ if (!existing.accessedItems) {
877
+ existing.accessedItems = new Set;
778
878
  }
779
879
  if (fields) {
780
880
  if (existing.fields !== "all") {
@@ -866,15 +966,34 @@ function useContent(params) {
866
966
  return [];
867
967
  let cloned = [...list];
868
968
  cloned = applyFilter(cloned, filter);
869
- if (typeof sort === "function")
969
+ if (typeof sort === "function") {
870
970
  cloned = cloned.sort(sort);
871
- else if (typeof sort === "string") {
872
- cloned = cloned.sort(sortByDate(sort === "date-asc" ? "asc" : "desc"));
873
- } else if (sort && typeof sort === "object" && sort.date) {
874
- cloned = cloned.sort(sortByDate(sort.date === "asc" ? "asc" : "desc"));
971
+ } else if (sort && typeof sort === "object") {
972
+ if ("date" in sort && Object.keys(sort).length === 1) {
973
+ cloned = cloned.sort(sortByDate(sort.date === "asc" ? "asc" : "desc"));
974
+ } else {
975
+ cloned = cloned.sort(createSortFunction(sort));
976
+ }
875
977
  }
876
978
  if (typeof limit === "number" && limit >= 0)
877
979
  cloned = cloned.slice(0, limit);
980
+ if (typeof window === "undefined") {
981
+ try {
982
+ const g = globalThis;
983
+ const rec = g.__REROUTE_SSR_ACCESSED__;
984
+ if (rec?.[collection]) {
985
+ const accessedItems = rec[collection].accessedItems;
986
+ if (accessedItems) {
987
+ for (const item of cloned) {
988
+ const key = item.name || item.slug;
989
+ if (key) {
990
+ accessedItems.add(key);
991
+ }
992
+ }
993
+ }
994
+ }
995
+ } catch {}
996
+ }
878
997
  return cloned;
879
998
  }, [index, collection, sort, limit, filter]);
880
999
  useEffect3(() => {
@@ -2992,4 +3111,4 @@ export {
2992
3111
  ClientOnly
2993
3112
  };
2994
3113
 
2995
- //# debugId=23CFBB5812BF111B64756E2164756E21
3114
+ //# debugId=F0DAC0FB1C9ADD1164756E2164756E21