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.
- package/README.md +1 -1
- package/cli/bin.d.ts +1 -1
- package/cli/bin.js +46 -10
- package/cli/bin.js.map +3 -3
- package/cli/index.d.ts +1 -1
- package/cli/index.js +4 -4
- package/cli/index.js.map +1 -1
- package/cli/src/cli.d.ts +1 -1
- package/cli/src/commands/analyze.d.ts +1 -1
- package/cli/src/commands/build.d.ts +1 -1
- package/cli/src/commands/dev.d.ts +1 -1
- package/cli/src/commands/gen.d.ts +1 -1
- package/cli/src/commands/index.d.ts +1 -1
- package/cli/src/commands/init.d.ts +1 -1
- package/cli/src/commands/lib/assets.d.ts +1 -1
- package/cli/src/commands/lib/bundler.d.ts +1 -1
- package/cli/src/commands/lib/command.d.ts +1 -1
- package/cli/src/commands/lib/env.d.ts +1 -1
- package/cli/src/commands/lib/index.d.ts +1 -1
- package/cli/src/commands/lib/log.d.ts +1 -1
- package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
- package/cli/src/commands/lib/markdown/index.d.ts +1 -1
- package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
- package/cli/src/commands/lib/production.d.ts +1 -1
- package/cli/src/commands/lib/server.d.ts +1 -1
- package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
- package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
- package/cli/src/commands/lib/tailwind.d.ts +1 -1
- package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- package/cli/src/commands/og.d.ts +1 -1
- package/cli/src/commands/start.d.ts +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +42 -6
- package/core/index.js.map +3 -3
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +1 -1
- package/core/src/content/discovery.d.ts +1 -1
- package/core/src/content/index.d.ts +1 -1
- package/core/src/content/metadata.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/llms/extractor.d.ts +1 -1
- package/core/src/llms/formatter.d.ts +1 -1
- package/core/src/llms/full-generator.d.ts +1 -1
- package/core/src/llms/index-generator.d.ts +1 -1
- package/core/src/llms/index.d.ts +1 -1
- package/core/src/og/discovery.d.ts +1 -1
- package/core/src/og/index.d.ts +1 -1
- package/core/src/og/meta.d.ts +1 -1
- package/core/src/og/render.d.ts +1 -1
- package/core/src/og/types.d.ts +1 -1
- package/core/src/robots/discovery.d.ts +1 -1
- package/core/src/robots/generator.d.ts +1 -1
- package/core/src/robots/index.d.ts +1 -1
- package/core/src/robots/policies.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/generator.d.ts +1 -1
- package/core/src/rss/index.d.ts +1 -1
- package/core/src/sitemap/discovery.d.ts +1 -1
- package/core/src/sitemap/generator.d.ts +1 -1
- package/core/src/sitemap/index.d.ts +1 -1
- package/core/src/ssr/index.d.ts +1 -1
- package/core/src/ssr/lib/cache.d.ts +1 -1
- package/core/src/ssr/lib/collections.d.ts +1 -1
- package/core/src/ssr/lib/compression.d.ts +1 -1
- package/core/src/ssr/lib/compute/content.d.ts +1 -1
- package/core/src/ssr/lib/compute/index.d.ts +1 -1
- package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
- package/core/src/ssr/lib/compute/routes.d.ts +1 -1
- package/core/src/ssr/lib/data.d.ts +1 -1
- package/core/src/ssr/lib/html.d.ts +1 -1
- package/core/src/ssr/lib/imports.d.ts +1 -1
- package/core/src/ssr/lib/index.d.ts +1 -1
- package/core/src/ssr/lib/layouts.d.ts +1 -1
- package/core/src/ssr/lib/metadata.d.ts +1 -1
- package/core/src/ssr/lib/mime.d.ts +1 -1
- package/core/src/ssr/lib/modules.d.ts +1 -1
- package/core/src/ssr/lib/path.d.ts +1 -1
- package/core/src/ssr/lib/preload.d.ts +1 -1
- package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
- package/core/src/ssr/lib/scripts/collections.d.ts.map +1 -1
- package/core/src/ssr/lib/scripts/data.d.ts +1 -1
- package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
- package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
- package/core/src/ssr/lib/scripts/index.d.ts +1 -1
- package/core/src/ssr/lib/seed.d.ts +1 -1
- package/core/src/ssr/lib/serialize.d.ts +1 -1
- package/core/src/ssr/lib/setup.d.ts +1 -1
- package/core/src/ssr/lib/styles.d.ts +1 -1
- package/core/src/ssr/lib/template.d.ts +1 -1
- package/core/src/ssr/lib/types.d.ts +1 -1
- package/core/src/ssr/render.d.ts +1 -1
- package/core/src/ssr/stream.d.ts +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +42 -6
- package/elysia/index.js.map +3 -3
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/assets.d.ts +1 -1
- package/elysia/src/libs/cache.d.ts +1 -1
- package/elysia/src/libs/caching.d.ts +1 -1
- package/elysia/src/libs/http.d.ts +1 -1
- package/elysia/src/libs/image.d.ts +1 -1
- package/elysia/src/libs/index.d.ts +1 -1
- package/elysia/src/libs/llms.d.ts +1 -1
- package/elysia/src/libs/response.d.ts +1 -1
- package/elysia/src/libs/serving.d.ts +1 -1
- package/elysia/src/plugin.d.ts +1 -1
- package/elysia/src/routes/artifacts.d.ts +1 -1
- package/elysia/src/routes/content.d.ts +1 -1
- package/elysia/src/routes/image.d.ts +1 -1
- package/elysia/src/routes/index.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts +1 -1
- package/elysia/src/routes/llms.d.ts +1 -1
- package/elysia/src/routes/og.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/robots.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/search.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts +1 -1
- package/elysia/src/routes/static.d.ts +1 -1
- package/elysia/src/types.d.ts +1 -1
- package/package.json +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.js +152 -33
- package/react/index.js.map +3 -3
- package/react/src/components/ClientOnly.d.ts +1 -1
- package/react/src/components/ContentRoute.d.ts +1 -1
- package/react/src/components/Image.d.ts +1 -1
- package/react/src/components/LazyRoute.d.ts +1 -1
- package/react/src/components/Link.d.ts +1 -1
- package/react/src/components/Markdown.d.ts +1 -1
- package/react/src/components/Outlet.d.ts +1 -1
- package/react/src/components/index.d.ts +1 -1
- package/react/src/hooks/index.d.ts +1 -1
- package/react/src/hooks/useContent.d.ts +62 -11
- package/react/src/hooks/useContent.d.ts.map +1 -1
- package/react/src/hooks/useData.d.ts +1 -1
- package/react/src/hooks/useFeed.d.ts +1 -1
- package/react/src/hooks/useLayoutData.d.ts +1 -1
- package/react/src/hooks/useLlms.d.ts +1 -1
- package/react/src/hooks/useNavigate.d.ts +1 -1
- package/react/src/hooks/useParams.d.ts +1 -1
- package/react/src/hooks/useRouter.d.ts +1 -1
- package/react/src/hooks/useSearch.d.ts +1 -1
- package/react/src/hooks/useSearchParams.d.ts +1 -1
- package/react/src/hooks/useToc.d.ts +1 -1
- package/react/src/index.d.ts +1 -1
- package/react/src/lib/collection.d.ts +1 -1
- package/react/src/lib/content.d.ts +1 -1
- package/react/src/lib/head.d.ts +1 -1
- package/react/src/lib/index.d.ts +1 -1
- package/react/src/lib/lazy-route.d.ts +1 -1
- package/react/src/lib/route-loader.d.ts +1 -1
- package/react/src/providers/ContentProvider.d.ts +1 -1
- package/react/src/providers/RerouteProvider.d.ts +1 -1
- package/react/src/providers/RouterProvider.d.ts +1 -1
- package/react/src/providers/index.d.ts +1 -1
- package/react/src/types/any.d.ts +1 -1
- package/react/src/types/index.d.ts +1 -1
- package/react/src/types/router.d.ts +1 -1
- package/telemetry/react.d.ts +1 -1
- package/telemetry/react.js +2 -2
- package/telemetry/react.js.map +1 -1
- package/telemetry/server.d.ts +1 -1
- package/telemetry/server.js +2 -2
- package/telemetry/server.js.map +1 -1
- package/telemetry/src/react/api.d.ts +1 -1
- package/telemetry/src/react/context.d.ts +1 -1
- package/telemetry/src/react/index.d.ts +1 -1
- package/telemetry/src/react/telemetry.d.ts +1 -1
- package/telemetry/src/server/context.d.ts +1 -1
- package/telemetry/src/server/index.d.ts +1 -1
- package/telemetry/src/server/instrumentation.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts +1 -1
- package/telemetry/src/server/sourcemap.d.ts +1 -1
package/elysia/src/index.d.ts
CHANGED
package/elysia/src/plugin.d.ts
CHANGED
package/elysia/src/types.d.ts
CHANGED
package/package.json
CHANGED
package/react/index.d.ts
CHANGED
package/react/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* reroute-js v0.
|
|
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
|
|
684
|
-
|
|
685
|
-
|
|
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
|
|
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
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
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
|
-
|
|
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
|
-
|
|
767
|
-
|
|
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 === "
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
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=
|
|
3114
|
+
//# debugId=F0DAC0FB1C9ADD1164756E2164756E21
|