@infuro/cms-core 1.0.42 → 1.0.43
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/admin.cjs +57 -17
- package/dist/admin.d.cts +3 -1
- package/dist/admin.d.ts +3 -1
- package/dist/admin.js +57 -17
- package/dist/api.cjs +32 -32
- package/dist/api.js +1 -1
- package/dist/{chunk-W2NL365N.js → chunk-IX7X4ILO.js} +66 -33
- package/dist/{chunk-GINYYPXK.cjs → chunk-SCPKMZG5.cjs} +66 -33
- package/dist/index.cjs +201 -201
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/dist/admin.cjs
CHANGED
|
@@ -492,7 +492,7 @@ var init_admin_config_context = __esm({
|
|
|
492
492
|
var CMS_VERSION;
|
|
493
493
|
var init_cms_version = __esm({
|
|
494
494
|
"src/lib/cms-version.ts"() {
|
|
495
|
-
CMS_VERSION = "1.0.
|
|
495
|
+
CMS_VERSION = "1.0.43" ;
|
|
496
496
|
}
|
|
497
497
|
});
|
|
498
498
|
function useCatalogCategories(enabled = true) {
|
|
@@ -6708,9 +6708,10 @@ var init_CategoryAutocomplete = __esm({
|
|
|
6708
6708
|
__name(CategoryAutocomplete, "CategoryAutocomplete");
|
|
6709
6709
|
}
|
|
6710
6710
|
});
|
|
6711
|
-
function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select author...", className = "" }) {
|
|
6711
|
+
function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select author...", className = "", groupName = ADMIN_GROUP_NAME }) {
|
|
6712
6712
|
const [inputValue, setInputValue] = React26.useState("");
|
|
6713
6713
|
const [suggestions, setSuggestions] = React26.useState([]);
|
|
6714
|
+
const [selectedUser, setSelectedUser] = React26.useState(null);
|
|
6714
6715
|
const [isLoading, setIsLoading] = React26.useState(false);
|
|
6715
6716
|
const [showSuggestions, setShowSuggestions] = React26.useState(false);
|
|
6716
6717
|
const inputRef = React26.useRef(null);
|
|
@@ -6719,14 +6720,18 @@ function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select
|
|
|
6719
6720
|
setIsLoading(true);
|
|
6720
6721
|
try {
|
|
6721
6722
|
const params = new URLSearchParams();
|
|
6722
|
-
if (query.trim())
|
|
6723
|
-
params.append("search", query);
|
|
6724
|
-
}
|
|
6723
|
+
if (query.trim()) params.append("search", query);
|
|
6725
6724
|
params.append("limit", "50");
|
|
6725
|
+
const group = groupName.trim() || ADMIN_GROUP_NAME;
|
|
6726
|
+
params.append("groupName", group);
|
|
6726
6727
|
const response = await fetch(`/api/users?${params}`);
|
|
6727
6728
|
if (response.ok) {
|
|
6728
6729
|
const data = await response.json();
|
|
6729
|
-
|
|
6730
|
+
const rows = Array.isArray(data.data) ? data.data : [];
|
|
6731
|
+
setSuggestions(rows.filter((u) => {
|
|
6732
|
+
const g = u.group?.name;
|
|
6733
|
+
return g == null || g === group;
|
|
6734
|
+
}));
|
|
6730
6735
|
}
|
|
6731
6736
|
} catch (error) {
|
|
6732
6737
|
console.error("Error fetching users:", error);
|
|
@@ -6740,28 +6745,57 @@ function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select
|
|
|
6740
6745
|
}, 300);
|
|
6741
6746
|
return () => clearTimeout(timeoutId);
|
|
6742
6747
|
}, [
|
|
6743
|
-
inputValue
|
|
6748
|
+
inputValue,
|
|
6749
|
+
groupName
|
|
6750
|
+
]);
|
|
6751
|
+
React26.useEffect(() => {
|
|
6752
|
+
if (selectedUserId == null) {
|
|
6753
|
+
setSelectedUser(null);
|
|
6754
|
+
return;
|
|
6755
|
+
}
|
|
6756
|
+
if (selectedUser?.id === selectedUserId) return;
|
|
6757
|
+
let cancelled = false;
|
|
6758
|
+
(async () => {
|
|
6759
|
+
try {
|
|
6760
|
+
const res = await fetch(`/api/users/${selectedUserId}`);
|
|
6761
|
+
if (!res.ok || cancelled) return;
|
|
6762
|
+
const data = await res.json();
|
|
6763
|
+
if (!cancelled && data?.id != null) {
|
|
6764
|
+
setSelectedUser({
|
|
6765
|
+
id: Number(data.id),
|
|
6766
|
+
name: String(data.name ?? ""),
|
|
6767
|
+
email: String(data.email ?? "")
|
|
6768
|
+
});
|
|
6769
|
+
}
|
|
6770
|
+
} catch {
|
|
6771
|
+
}
|
|
6772
|
+
})();
|
|
6773
|
+
return () => {
|
|
6774
|
+
cancelled = true;
|
|
6775
|
+
};
|
|
6776
|
+
}, [
|
|
6777
|
+
selectedUserId,
|
|
6778
|
+
selectedUser?.id
|
|
6744
6779
|
]);
|
|
6745
6780
|
const handleInputChange = /* @__PURE__ */ __name((e) => {
|
|
6746
|
-
|
|
6747
|
-
setInputValue(value);
|
|
6781
|
+
setInputValue(e.target.value);
|
|
6748
6782
|
setShowSuggestions(true);
|
|
6749
6783
|
}, "handleInputChange");
|
|
6750
6784
|
const handleSuggestionSelect = /* @__PURE__ */ __name((user) => {
|
|
6751
6785
|
onUserChange(user.id);
|
|
6786
|
+
setSelectedUser(user);
|
|
6752
6787
|
setInputValue("");
|
|
6753
6788
|
setShowSuggestions(false);
|
|
6754
6789
|
setSuggestions([]);
|
|
6755
6790
|
}, "handleSuggestionSelect");
|
|
6756
6791
|
const handleRemoveUser = /* @__PURE__ */ __name(() => {
|
|
6757
6792
|
onUserChange(null);
|
|
6793
|
+
setSelectedUser(null);
|
|
6758
6794
|
}, "handleRemoveUser");
|
|
6759
6795
|
const handleKeyPress = /* @__PURE__ */ __name((e) => {
|
|
6760
6796
|
if (e.key === "Enter") {
|
|
6761
6797
|
e.preventDefault();
|
|
6762
|
-
if (suggestions.length > 0)
|
|
6763
|
-
handleSuggestionSelect(suggestions[0]);
|
|
6764
|
-
}
|
|
6798
|
+
if (suggestions.length > 0) handleSuggestionSelect(suggestions[0]);
|
|
6765
6799
|
} else if (e.key === "Escape") {
|
|
6766
6800
|
setShowSuggestions(false);
|
|
6767
6801
|
inputRef.current?.blur();
|
|
@@ -6776,14 +6810,13 @@ function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select
|
|
|
6776
6810
|
document.addEventListener("mousedown", handleClickOutside);
|
|
6777
6811
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
6778
6812
|
}, []);
|
|
6779
|
-
const selectedUser = suggestions.find((user) => user.id === selectedUserId);
|
|
6780
6813
|
return /* @__PURE__ */ React.createElement("div", {
|
|
6781
6814
|
className: `relative ${className}`
|
|
6782
6815
|
}, selectedUser && /* @__PURE__ */ React.createElement("div", {
|
|
6783
6816
|
className: "mb-2"
|
|
6784
6817
|
}, /* @__PURE__ */ React.createElement(Badge, {
|
|
6785
6818
|
className: "flex items-center gap-1"
|
|
6786
|
-
}, selectedUser.name
|
|
6819
|
+
}, selectedUser.name || selectedUser.email || `User #${selectedUser.id}`, /* @__PURE__ */ React.createElement(LucideIcons.X, {
|
|
6787
6820
|
size: 12,
|
|
6788
6821
|
className: "cursor-pointer hover:text-red-500",
|
|
6789
6822
|
onClick: handleRemoveUser
|
|
@@ -6827,6 +6860,7 @@ var init_UserAutocomplete = __esm({
|
|
|
6827
6860
|
"use client";
|
|
6828
6861
|
init_input();
|
|
6829
6862
|
init_badge();
|
|
6863
|
+
init_permission_entities();
|
|
6830
6864
|
__name(UserAutocomplete, "UserAutocomplete");
|
|
6831
6865
|
}
|
|
6832
6866
|
});
|
|
@@ -7257,7 +7291,8 @@ function BlogEditor({ existingBlog, duplicateSource }) {
|
|
|
7257
7291
|
selectedUserId: authorId,
|
|
7258
7292
|
onUserChange: setAuthorId,
|
|
7259
7293
|
placeholder: "Select author...",
|
|
7260
|
-
className: "w-full"
|
|
7294
|
+
className: "w-full",
|
|
7295
|
+
groupName: "Administrator"
|
|
7261
7296
|
})), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(ImageUpload, {
|
|
7262
7297
|
value: coverImage,
|
|
7263
7298
|
onChange: setCoverImage,
|
|
@@ -13991,7 +14026,11 @@ function ScheduleAuthorSelect({ value, onChange, disabled }) {
|
|
|
13991
14026
|
(async () => {
|
|
13992
14027
|
setLoading(true);
|
|
13993
14028
|
try {
|
|
13994
|
-
const
|
|
14029
|
+
const params = new URLSearchParams({
|
|
14030
|
+
limit: "100",
|
|
14031
|
+
groupName: ADMIN_GROUP_NAME
|
|
14032
|
+
});
|
|
14033
|
+
const res = await fetch(`/api/users?${params}`);
|
|
13995
14034
|
if (!res.ok || cancelled) return;
|
|
13996
14035
|
const data = await res.json();
|
|
13997
14036
|
const rows = Array.isArray(data.data) ? data.data : [];
|
|
@@ -14024,7 +14063,7 @@ function ScheduleAuthorSelect({ value, onChange, disabled }) {
|
|
|
14024
14063
|
}, /* @__PURE__ */ React.createElement(SelectTrigger, {
|
|
14025
14064
|
className: "w-full"
|
|
14026
14065
|
}, /* @__PURE__ */ React.createElement(SelectValue, {
|
|
14027
|
-
placeholder: users.length === 0 ? "No
|
|
14066
|
+
placeholder: users.length === 0 ? "No administrators found" : "Select author"
|
|
14028
14067
|
})), /* @__PURE__ */ React.createElement(SelectContent, {
|
|
14029
14068
|
className: "max-h-72"
|
|
14030
14069
|
}, users.map((u) => /* @__PURE__ */ React.createElement(SelectItem, {
|
|
@@ -14036,6 +14075,7 @@ var init_ScheduleAuthorSelect = __esm({
|
|
|
14036
14075
|
"src/admin/ScheduleAuthorSelect.tsx"() {
|
|
14037
14076
|
"use client";
|
|
14038
14077
|
init_select();
|
|
14078
|
+
init_permission_entities();
|
|
14039
14079
|
__name(userLabel, "userLabel");
|
|
14040
14080
|
__name(ScheduleAuthorSelect, "ScheduleAuthorSelect");
|
|
14041
14081
|
}
|
package/dist/admin.d.cts
CHANGED
|
@@ -407,8 +407,10 @@ interface UserAutocompleteProps {
|
|
|
407
407
|
onUserChange: (userId: number | null) => void;
|
|
408
408
|
placeholder?: string;
|
|
409
409
|
className?: string;
|
|
410
|
+
/** When set, only users in this group are listed (default: Administrator / super admins). */
|
|
411
|
+
groupName?: string;
|
|
410
412
|
}
|
|
411
|
-
declare function UserAutocomplete({ selectedUserId, onUserChange, placeholder, className }: UserAutocompleteProps): react_jsx_runtime.JSX.Element;
|
|
413
|
+
declare function UserAutocomplete({ selectedUserId, onUserChange, placeholder, className, groupName, }: UserAutocompleteProps): react_jsx_runtime.JSX.Element;
|
|
412
414
|
|
|
413
415
|
interface ComponentSettingsProps {
|
|
414
416
|
meta: ComponentMeta;
|
package/dist/admin.d.ts
CHANGED
|
@@ -407,8 +407,10 @@ interface UserAutocompleteProps {
|
|
|
407
407
|
onUserChange: (userId: number | null) => void;
|
|
408
408
|
placeholder?: string;
|
|
409
409
|
className?: string;
|
|
410
|
+
/** When set, only users in this group are listed (default: Administrator / super admins). */
|
|
411
|
+
groupName?: string;
|
|
410
412
|
}
|
|
411
|
-
declare function UserAutocomplete({ selectedUserId, onUserChange, placeholder, className }: UserAutocompleteProps): react_jsx_runtime.JSX.Element;
|
|
413
|
+
declare function UserAutocomplete({ selectedUserId, onUserChange, placeholder, className, groupName, }: UserAutocompleteProps): react_jsx_runtime.JSX.Element;
|
|
412
414
|
|
|
413
415
|
interface ComponentSettingsProps {
|
|
414
416
|
meta: ComponentMeta;
|
package/dist/admin.js
CHANGED
|
@@ -457,7 +457,7 @@ var init_admin_config_context = __esm({
|
|
|
457
457
|
var CMS_VERSION;
|
|
458
458
|
var init_cms_version = __esm({
|
|
459
459
|
"src/lib/cms-version.ts"() {
|
|
460
|
-
CMS_VERSION = "1.0.
|
|
460
|
+
CMS_VERSION = "1.0.43" ;
|
|
461
461
|
}
|
|
462
462
|
});
|
|
463
463
|
function useCatalogCategories(enabled = true) {
|
|
@@ -6673,9 +6673,10 @@ var init_CategoryAutocomplete = __esm({
|
|
|
6673
6673
|
__name(CategoryAutocomplete, "CategoryAutocomplete");
|
|
6674
6674
|
}
|
|
6675
6675
|
});
|
|
6676
|
-
function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select author...", className = "" }) {
|
|
6676
|
+
function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select author...", className = "", groupName = ADMIN_GROUP_NAME }) {
|
|
6677
6677
|
const [inputValue, setInputValue] = useState("");
|
|
6678
6678
|
const [suggestions, setSuggestions] = useState([]);
|
|
6679
|
+
const [selectedUser, setSelectedUser] = useState(null);
|
|
6679
6680
|
const [isLoading, setIsLoading] = useState(false);
|
|
6680
6681
|
const [showSuggestions, setShowSuggestions] = useState(false);
|
|
6681
6682
|
const inputRef = useRef(null);
|
|
@@ -6684,14 +6685,18 @@ function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select
|
|
|
6684
6685
|
setIsLoading(true);
|
|
6685
6686
|
try {
|
|
6686
6687
|
const params = new URLSearchParams();
|
|
6687
|
-
if (query.trim())
|
|
6688
|
-
params.append("search", query);
|
|
6689
|
-
}
|
|
6688
|
+
if (query.trim()) params.append("search", query);
|
|
6690
6689
|
params.append("limit", "50");
|
|
6690
|
+
const group = groupName.trim() || ADMIN_GROUP_NAME;
|
|
6691
|
+
params.append("groupName", group);
|
|
6691
6692
|
const response = await fetch(`/api/users?${params}`);
|
|
6692
6693
|
if (response.ok) {
|
|
6693
6694
|
const data = await response.json();
|
|
6694
|
-
|
|
6695
|
+
const rows = Array.isArray(data.data) ? data.data : [];
|
|
6696
|
+
setSuggestions(rows.filter((u) => {
|
|
6697
|
+
const g = u.group?.name;
|
|
6698
|
+
return g == null || g === group;
|
|
6699
|
+
}));
|
|
6695
6700
|
}
|
|
6696
6701
|
} catch (error) {
|
|
6697
6702
|
console.error("Error fetching users:", error);
|
|
@@ -6705,28 +6710,57 @@ function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select
|
|
|
6705
6710
|
}, 300);
|
|
6706
6711
|
return () => clearTimeout(timeoutId);
|
|
6707
6712
|
}, [
|
|
6708
|
-
inputValue
|
|
6713
|
+
inputValue,
|
|
6714
|
+
groupName
|
|
6715
|
+
]);
|
|
6716
|
+
useEffect(() => {
|
|
6717
|
+
if (selectedUserId == null) {
|
|
6718
|
+
setSelectedUser(null);
|
|
6719
|
+
return;
|
|
6720
|
+
}
|
|
6721
|
+
if (selectedUser?.id === selectedUserId) return;
|
|
6722
|
+
let cancelled = false;
|
|
6723
|
+
(async () => {
|
|
6724
|
+
try {
|
|
6725
|
+
const res = await fetch(`/api/users/${selectedUserId}`);
|
|
6726
|
+
if (!res.ok || cancelled) return;
|
|
6727
|
+
const data = await res.json();
|
|
6728
|
+
if (!cancelled && data?.id != null) {
|
|
6729
|
+
setSelectedUser({
|
|
6730
|
+
id: Number(data.id),
|
|
6731
|
+
name: String(data.name ?? ""),
|
|
6732
|
+
email: String(data.email ?? "")
|
|
6733
|
+
});
|
|
6734
|
+
}
|
|
6735
|
+
} catch {
|
|
6736
|
+
}
|
|
6737
|
+
})();
|
|
6738
|
+
return () => {
|
|
6739
|
+
cancelled = true;
|
|
6740
|
+
};
|
|
6741
|
+
}, [
|
|
6742
|
+
selectedUserId,
|
|
6743
|
+
selectedUser?.id
|
|
6709
6744
|
]);
|
|
6710
6745
|
const handleInputChange = /* @__PURE__ */ __name((e) => {
|
|
6711
|
-
|
|
6712
|
-
setInputValue(value);
|
|
6746
|
+
setInputValue(e.target.value);
|
|
6713
6747
|
setShowSuggestions(true);
|
|
6714
6748
|
}, "handleInputChange");
|
|
6715
6749
|
const handleSuggestionSelect = /* @__PURE__ */ __name((user) => {
|
|
6716
6750
|
onUserChange(user.id);
|
|
6751
|
+
setSelectedUser(user);
|
|
6717
6752
|
setInputValue("");
|
|
6718
6753
|
setShowSuggestions(false);
|
|
6719
6754
|
setSuggestions([]);
|
|
6720
6755
|
}, "handleSuggestionSelect");
|
|
6721
6756
|
const handleRemoveUser = /* @__PURE__ */ __name(() => {
|
|
6722
6757
|
onUserChange(null);
|
|
6758
|
+
setSelectedUser(null);
|
|
6723
6759
|
}, "handleRemoveUser");
|
|
6724
6760
|
const handleKeyPress = /* @__PURE__ */ __name((e) => {
|
|
6725
6761
|
if (e.key === "Enter") {
|
|
6726
6762
|
e.preventDefault();
|
|
6727
|
-
if (suggestions.length > 0)
|
|
6728
|
-
handleSuggestionSelect(suggestions[0]);
|
|
6729
|
-
}
|
|
6763
|
+
if (suggestions.length > 0) handleSuggestionSelect(suggestions[0]);
|
|
6730
6764
|
} else if (e.key === "Escape") {
|
|
6731
6765
|
setShowSuggestions(false);
|
|
6732
6766
|
inputRef.current?.blur();
|
|
@@ -6741,14 +6775,13 @@ function UserAutocomplete({ selectedUserId, onUserChange, placeholder = "Select
|
|
|
6741
6775
|
document.addEventListener("mousedown", handleClickOutside);
|
|
6742
6776
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
6743
6777
|
}, []);
|
|
6744
|
-
const selectedUser = suggestions.find((user) => user.id === selectedUserId);
|
|
6745
6778
|
return /* @__PURE__ */ React.createElement("div", {
|
|
6746
6779
|
className: `relative ${className}`
|
|
6747
6780
|
}, selectedUser && /* @__PURE__ */ React.createElement("div", {
|
|
6748
6781
|
className: "mb-2"
|
|
6749
6782
|
}, /* @__PURE__ */ React.createElement(Badge, {
|
|
6750
6783
|
className: "flex items-center gap-1"
|
|
6751
|
-
}, selectedUser.name
|
|
6784
|
+
}, selectedUser.name || selectedUser.email || `User #${selectedUser.id}`, /* @__PURE__ */ React.createElement(X, {
|
|
6752
6785
|
size: 12,
|
|
6753
6786
|
className: "cursor-pointer hover:text-red-500",
|
|
6754
6787
|
onClick: handleRemoveUser
|
|
@@ -6792,6 +6825,7 @@ var init_UserAutocomplete = __esm({
|
|
|
6792
6825
|
"use client";
|
|
6793
6826
|
init_input();
|
|
6794
6827
|
init_badge();
|
|
6828
|
+
init_permission_entities();
|
|
6795
6829
|
__name(UserAutocomplete, "UserAutocomplete");
|
|
6796
6830
|
}
|
|
6797
6831
|
});
|
|
@@ -7222,7 +7256,8 @@ function BlogEditor({ existingBlog, duplicateSource }) {
|
|
|
7222
7256
|
selectedUserId: authorId,
|
|
7223
7257
|
onUserChange: setAuthorId,
|
|
7224
7258
|
placeholder: "Select author...",
|
|
7225
|
-
className: "w-full"
|
|
7259
|
+
className: "w-full",
|
|
7260
|
+
groupName: "Administrator"
|
|
7226
7261
|
})), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(ImageUpload, {
|
|
7227
7262
|
value: coverImage,
|
|
7228
7263
|
onChange: setCoverImage,
|
|
@@ -13956,7 +13991,11 @@ function ScheduleAuthorSelect({ value, onChange, disabled }) {
|
|
|
13956
13991
|
(async () => {
|
|
13957
13992
|
setLoading(true);
|
|
13958
13993
|
try {
|
|
13959
|
-
const
|
|
13994
|
+
const params = new URLSearchParams({
|
|
13995
|
+
limit: "100",
|
|
13996
|
+
groupName: ADMIN_GROUP_NAME
|
|
13997
|
+
});
|
|
13998
|
+
const res = await fetch(`/api/users?${params}`);
|
|
13960
13999
|
if (!res.ok || cancelled) return;
|
|
13961
14000
|
const data = await res.json();
|
|
13962
14001
|
const rows = Array.isArray(data.data) ? data.data : [];
|
|
@@ -13989,7 +14028,7 @@ function ScheduleAuthorSelect({ value, onChange, disabled }) {
|
|
|
13989
14028
|
}, /* @__PURE__ */ React.createElement(SelectTrigger, {
|
|
13990
14029
|
className: "w-full"
|
|
13991
14030
|
}, /* @__PURE__ */ React.createElement(SelectValue, {
|
|
13992
|
-
placeholder: users.length === 0 ? "No
|
|
14031
|
+
placeholder: users.length === 0 ? "No administrators found" : "Select author"
|
|
13993
14032
|
})), /* @__PURE__ */ React.createElement(SelectContent, {
|
|
13994
14033
|
className: "max-h-72"
|
|
13995
14034
|
}, users.map((u) => /* @__PURE__ */ React.createElement(SelectItem, {
|
|
@@ -14001,6 +14040,7 @@ var init_ScheduleAuthorSelect = __esm({
|
|
|
14001
14040
|
"src/admin/ScheduleAuthorSelect.tsx"() {
|
|
14002
14041
|
"use client";
|
|
14003
14042
|
init_select();
|
|
14043
|
+
init_permission_entities();
|
|
14004
14044
|
__name(userLabel, "userLabel");
|
|
14005
14045
|
__name(ScheduleAuthorSelect, "ScheduleAuthorSelect");
|
|
14006
14046
|
}
|
package/dist/api.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkSCPKMZG5_cjs = require('./chunk-SCPKMZG5.cjs');
|
|
4
4
|
require('./chunk-22FFHLTO.cjs');
|
|
5
5
|
require('./chunk-UCKN4BBY.cjs');
|
|
6
6
|
require('./chunk-7NMT3GBR.cjs');
|
|
@@ -20,127 +20,127 @@ require('./chunk-USNT2KNT.cjs');
|
|
|
20
20
|
|
|
21
21
|
Object.defineProperty(exports, "createAnalyticsHandlers", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkSCPKMZG5_cjs.createAnalyticsHandlers; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "createBlogBySlugHandler", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkSCPKMZG5_cjs.createBlogBySlugHandler; }
|
|
28
28
|
});
|
|
29
29
|
Object.defineProperty(exports, "createChangePasswordHandler", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunkSCPKMZG5_cjs.createChangePasswordHandler; }
|
|
32
32
|
});
|
|
33
33
|
Object.defineProperty(exports, "createCmsApiHandler", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
35
|
+
get: function () { return chunkSCPKMZG5_cjs.createCmsApiHandler; }
|
|
36
36
|
});
|
|
37
37
|
Object.defineProperty(exports, "createCrudByIdHandler", {
|
|
38
38
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
39
|
+
get: function () { return chunkSCPKMZG5_cjs.createCrudByIdHandler; }
|
|
40
40
|
});
|
|
41
41
|
Object.defineProperty(exports, "createCrudHandler", {
|
|
42
42
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
43
|
+
get: function () { return chunkSCPKMZG5_cjs.createCrudHandler; }
|
|
44
44
|
});
|
|
45
45
|
Object.defineProperty(exports, "createDashboardStatsHandler", {
|
|
46
46
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
47
|
+
get: function () { return chunkSCPKMZG5_cjs.createDashboardStatsHandler; }
|
|
48
48
|
});
|
|
49
49
|
Object.defineProperty(exports, "createEcommerceAnalyticsHandler", {
|
|
50
50
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkSCPKMZG5_cjs.createEcommerceAnalyticsHandler; }
|
|
52
52
|
});
|
|
53
53
|
Object.defineProperty(exports, "createForgotPasswordHandler", {
|
|
54
54
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
55
|
+
get: function () { return chunkSCPKMZG5_cjs.createForgotPasswordHandler; }
|
|
56
56
|
});
|
|
57
57
|
Object.defineProperty(exports, "createFormBySlugHandler", {
|
|
58
58
|
enumerable: true,
|
|
59
|
-
get: function () { return
|
|
59
|
+
get: function () { return chunkSCPKMZG5_cjs.createFormBySlugHandler; }
|
|
60
60
|
});
|
|
61
61
|
Object.defineProperty(exports, "createInviteAcceptHandler", {
|
|
62
62
|
enumerable: true,
|
|
63
|
-
get: function () { return
|
|
63
|
+
get: function () { return chunkSCPKMZG5_cjs.createInviteAcceptHandler; }
|
|
64
64
|
});
|
|
65
65
|
Object.defineProperty(exports, "createJobScheduleHandlers", {
|
|
66
66
|
enumerable: true,
|
|
67
|
-
get: function () { return
|
|
67
|
+
get: function () { return chunkSCPKMZG5_cjs.createJobScheduleHandlers; }
|
|
68
68
|
});
|
|
69
69
|
Object.defineProperty(exports, "createLlmAgentKnowledgeHandlers", {
|
|
70
70
|
enumerable: true,
|
|
71
|
-
get: function () { return
|
|
71
|
+
get: function () { return chunkSCPKMZG5_cjs.createLlmAgentKnowledgeHandlers; }
|
|
72
72
|
});
|
|
73
73
|
Object.defineProperty(exports, "createMediaZipExtractHandler", {
|
|
74
74
|
enumerable: true,
|
|
75
|
-
get: function () { return
|
|
75
|
+
get: function () { return chunkSCPKMZG5_cjs.createMediaZipExtractHandler; }
|
|
76
76
|
});
|
|
77
77
|
Object.defineProperty(exports, "createSetPasswordHandler", {
|
|
78
78
|
enumerable: true,
|
|
79
|
-
get: function () { return
|
|
79
|
+
get: function () { return chunkSCPKMZG5_cjs.createSetPasswordHandler; }
|
|
80
80
|
});
|
|
81
81
|
Object.defineProperty(exports, "createSettingsApiHandlers", {
|
|
82
82
|
enumerable: true,
|
|
83
|
-
get: function () { return
|
|
83
|
+
get: function () { return chunkSCPKMZG5_cjs.createSettingsApiHandlers; }
|
|
84
84
|
});
|
|
85
85
|
Object.defineProperty(exports, "createStorefrontApiHandler", {
|
|
86
86
|
enumerable: true,
|
|
87
|
-
get: function () { return
|
|
87
|
+
get: function () { return chunkSCPKMZG5_cjs.createStorefrontApiHandler; }
|
|
88
88
|
});
|
|
89
89
|
Object.defineProperty(exports, "createUploadHandler", {
|
|
90
90
|
enumerable: true,
|
|
91
|
-
get: function () { return
|
|
91
|
+
get: function () { return chunkSCPKMZG5_cjs.createUploadHandler; }
|
|
92
92
|
});
|
|
93
93
|
Object.defineProperty(exports, "createUserAuthApiRouter", {
|
|
94
94
|
enumerable: true,
|
|
95
|
-
get: function () { return
|
|
95
|
+
get: function () { return chunkSCPKMZG5_cjs.createUserAuthApiRouter; }
|
|
96
96
|
});
|
|
97
97
|
Object.defineProperty(exports, "createUserAvatarHandler", {
|
|
98
98
|
enumerable: true,
|
|
99
|
-
get: function () { return
|
|
99
|
+
get: function () { return chunkSCPKMZG5_cjs.createUserAvatarHandler; }
|
|
100
100
|
});
|
|
101
101
|
Object.defineProperty(exports, "createUserProfileHandler", {
|
|
102
102
|
enumerable: true,
|
|
103
|
-
get: function () { return
|
|
103
|
+
get: function () { return chunkSCPKMZG5_cjs.createUserProfileHandler; }
|
|
104
104
|
});
|
|
105
105
|
Object.defineProperty(exports, "createUsersApiHandlers", {
|
|
106
106
|
enumerable: true,
|
|
107
|
-
get: function () { return
|
|
107
|
+
get: function () { return chunkSCPKMZG5_cjs.createUsersApiHandlers; }
|
|
108
108
|
});
|
|
109
109
|
Object.defineProperty(exports, "createVendorDashboardHandler", {
|
|
110
110
|
enumerable: true,
|
|
111
|
-
get: function () { return
|
|
111
|
+
get: function () { return chunkSCPKMZG5_cjs.createVendorDashboardHandler; }
|
|
112
112
|
});
|
|
113
113
|
Object.defineProperty(exports, "createVendorOnboardHandlers", {
|
|
114
114
|
enumerable: true,
|
|
115
|
-
get: function () { return
|
|
115
|
+
get: function () { return chunkSCPKMZG5_cjs.createVendorOnboardHandlers; }
|
|
116
116
|
});
|
|
117
117
|
Object.defineProperty(exports, "getPublicSettingsGroup", {
|
|
118
118
|
enumerable: true,
|
|
119
|
-
get: function () { return
|
|
119
|
+
get: function () { return chunkSCPKMZG5_cjs.getPublicSettingsGroup; }
|
|
120
120
|
});
|
|
121
121
|
Object.defineProperty(exports, "mergeGuardrailsIntoSystemPrompt", {
|
|
122
122
|
enumerable: true,
|
|
123
|
-
get: function () { return
|
|
123
|
+
get: function () { return chunkSCPKMZG5_cjs.mergeGuardrailsIntoSystemPrompt; }
|
|
124
124
|
});
|
|
125
125
|
Object.defineProperty(exports, "parseLlmAgentValidationRules", {
|
|
126
126
|
enumerable: true,
|
|
127
|
-
get: function () { return
|
|
127
|
+
get: function () { return chunkSCPKMZG5_cjs.parseLlmAgentValidationRules; }
|
|
128
128
|
});
|
|
129
129
|
Object.defineProperty(exports, "simpleDecrypt", {
|
|
130
130
|
enumerable: true,
|
|
131
|
-
get: function () { return
|
|
131
|
+
get: function () { return chunkSCPKMZG5_cjs.simpleDecrypt; }
|
|
132
132
|
});
|
|
133
133
|
Object.defineProperty(exports, "simpleEncrypt", {
|
|
134
134
|
enumerable: true,
|
|
135
|
-
get: function () { return
|
|
135
|
+
get: function () { return chunkSCPKMZG5_cjs.simpleEncrypt; }
|
|
136
136
|
});
|
|
137
137
|
Object.defineProperty(exports, "validateUserMessageAgainstAgentRules", {
|
|
138
138
|
enumerable: true,
|
|
139
|
-
get: function () { return
|
|
139
|
+
get: function () { return chunkSCPKMZG5_cjs.validateUserMessageAgainstAgentRules; }
|
|
140
140
|
});
|
|
141
141
|
Object.defineProperty(exports, "validateUserMessageAgainstStructuredRules", {
|
|
142
142
|
enumerable: true,
|
|
143
|
-
get: function () { return
|
|
143
|
+
get: function () { return chunkSCPKMZG5_cjs.validateUserMessageAgainstStructuredRules; }
|
|
144
144
|
});
|
|
145
145
|
Object.defineProperty(exports, "createCmsAuthBundle", {
|
|
146
146
|
enumerable: true,
|
package/dist/api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-
|
|
1
|
+
export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-IX7X4ILO.js';
|
|
2
2
|
import './chunk-NNQBWDCI.js';
|
|
3
3
|
import './chunk-HCIRL37O.js';
|
|
4
4
|
import './chunk-JXF23MPG.js';
|
|
@@ -8625,6 +8625,12 @@ function createUploadHandler(config) {
|
|
|
8625
8625
|
parentId
|
|
8626
8626
|
});
|
|
8627
8627
|
} catch (err) {
|
|
8628
|
+
console.error("[upload] File upload failed", {
|
|
8629
|
+
error: err instanceof Error ? err.message : String(err),
|
|
8630
|
+
stack: err instanceof Error ? err.stack : void 0,
|
|
8631
|
+
name: err instanceof Error ? err.name : void 0,
|
|
8632
|
+
metadata: err && typeof err === "object" && "$metadata" in err ? err.$metadata : void 0
|
|
8633
|
+
});
|
|
8628
8634
|
return json({
|
|
8629
8635
|
error: "File upload failed"
|
|
8630
8636
|
}, {
|
|
@@ -9330,41 +9336,68 @@ function createUsersApiHandlers(config) {
|
|
|
9330
9336
|
const page = Math.max(1, parseInt(url.searchParams.get("page") || "1", 10));
|
|
9331
9337
|
const limit = Math.min(100, parseInt(url.searchParams.get("limit") || "10", 10));
|
|
9332
9338
|
const skip = (page - 1) * limit;
|
|
9333
|
-
const
|
|
9339
|
+
const sortFieldRaw = url.searchParams.get("sortField") || "createdAt";
|
|
9340
|
+
const allowedSort = /* @__PURE__ */ new Set([
|
|
9341
|
+
"createdAt",
|
|
9342
|
+
"updatedAt",
|
|
9343
|
+
"name",
|
|
9344
|
+
"email",
|
|
9345
|
+
"id",
|
|
9346
|
+
"blocked"
|
|
9347
|
+
]);
|
|
9348
|
+
const sortField = allowedSort.has(sortFieldRaw) ? sortFieldRaw : "createdAt";
|
|
9334
9349
|
const sortOrder = url.searchParams.get("sortOrder") === "desc" ? "DESC" : "ASC";
|
|
9335
|
-
const search = url.searchParams.get("search");
|
|
9336
|
-
const
|
|
9337
|
-
|
|
9338
|
-
name: ILike(`%${search}%`),
|
|
9339
|
-
deleted: false
|
|
9340
|
-
},
|
|
9341
|
-
{
|
|
9342
|
-
email: ILike(`%${search}%`),
|
|
9343
|
-
deleted: false
|
|
9344
|
-
}
|
|
9345
|
-
] : {
|
|
9350
|
+
const search = url.searchParams.get("search")?.trim() || "";
|
|
9351
|
+
const groupName = url.searchParams.get("groupName")?.trim() || "";
|
|
9352
|
+
const qb = userRepo().createQueryBuilder("u").leftJoinAndSelect("u.group", "g").where("u.deleted = :deleted", {
|
|
9346
9353
|
deleted: false
|
|
9347
|
-
}
|
|
9348
|
-
|
|
9349
|
-
|
|
9350
|
-
|
|
9351
|
-
|
|
9352
|
-
|
|
9353
|
-
|
|
9354
|
-
|
|
9355
|
-
|
|
9356
|
-
|
|
9357
|
-
|
|
9358
|
-
|
|
9359
|
-
|
|
9360
|
-
|
|
9361
|
-
|
|
9362
|
-
|
|
9363
|
-
|
|
9364
|
-
|
|
9365
|
-
|
|
9366
|
-
|
|
9367
|
-
|
|
9354
|
+
}).orderBy(`u.${sortField}`, sortOrder).skip(skip).take(limit).select([
|
|
9355
|
+
"u.id",
|
|
9356
|
+
"u.name",
|
|
9357
|
+
"u.email",
|
|
9358
|
+
"u.blocked",
|
|
9359
|
+
"u.createdAt",
|
|
9360
|
+
"u.updatedAt",
|
|
9361
|
+
"u.groupId",
|
|
9362
|
+
"g.id",
|
|
9363
|
+
"g.name"
|
|
9364
|
+
]);
|
|
9365
|
+
if (search) {
|
|
9366
|
+
qb.andWhere("(u.name ILIKE :search OR u.email ILIKE :search)", {
|
|
9367
|
+
search: `%${search}%`
|
|
9368
|
+
});
|
|
9369
|
+
}
|
|
9370
|
+
if (groupName) {
|
|
9371
|
+
if (!entityMap.user_groups) {
|
|
9372
|
+
return json({
|
|
9373
|
+
total: 0,
|
|
9374
|
+
page,
|
|
9375
|
+
limit,
|
|
9376
|
+
totalPages: 0,
|
|
9377
|
+
data: []
|
|
9378
|
+
});
|
|
9379
|
+
}
|
|
9380
|
+
const groupRepo = dataSource.getRepository(entityMap.user_groups);
|
|
9381
|
+
const group = await groupRepo.findOne({
|
|
9382
|
+
where: {
|
|
9383
|
+
name: groupName,
|
|
9384
|
+
deleted: false
|
|
9385
|
+
}
|
|
9386
|
+
});
|
|
9387
|
+
if (!group) {
|
|
9388
|
+
return json({
|
|
9389
|
+
total: 0,
|
|
9390
|
+
page,
|
|
9391
|
+
limit,
|
|
9392
|
+
totalPages: 0,
|
|
9393
|
+
data: []
|
|
9394
|
+
});
|
|
9395
|
+
}
|
|
9396
|
+
qb.andWhere("u.groupId = :groupId", {
|
|
9397
|
+
groupId: Number(group.id)
|
|
9398
|
+
});
|
|
9399
|
+
}
|
|
9400
|
+
const [data, total] = await qb.getManyAndCount();
|
|
9368
9401
|
return json({
|
|
9369
9402
|
total,
|
|
9370
9403
|
page,
|