@withwiz/cms-kit 0.1.0
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.ko.md +146 -0
- package/README.md +146 -0
- package/dist/chunk-2REYWBQ6.js +32 -0
- package/dist/chunk-2REYWBQ6.js.map +1 -0
- package/dist/chunk-2SYUEQ6J.mjs +17 -0
- package/dist/chunk-2SYUEQ6J.mjs.map +1 -0
- package/dist/chunk-3ILEMZAL.mjs +32 -0
- package/dist/chunk-3ILEMZAL.mjs.map +1 -0
- package/dist/chunk-3Y2TQCHU.mjs +33 -0
- package/dist/chunk-3Y2TQCHU.mjs.map +1 -0
- package/dist/chunk-4LSFAAZW.js +1 -0
- package/dist/chunk-4LSFAAZW.js.map +1 -0
- package/dist/chunk-4W3X7OKF.js +100 -0
- package/dist/chunk-4W3X7OKF.js.map +1 -0
- package/dist/chunk-5JUIMXNF.js +108 -0
- package/dist/chunk-5JUIMXNF.js.map +1 -0
- package/dist/chunk-5RDMODGV.mjs +34 -0
- package/dist/chunk-5RDMODGV.mjs.map +1 -0
- package/dist/chunk-6ES4W2DL.mjs +1 -0
- package/dist/chunk-6ES4W2DL.mjs.map +1 -0
- package/dist/chunk-6EZ3QE5N.js +71 -0
- package/dist/chunk-6EZ3QE5N.js.map +1 -0
- package/dist/chunk-6JFERXNE.mjs +16 -0
- package/dist/chunk-6JFERXNE.mjs.map +1 -0
- package/dist/chunk-7SWW3ZIN.js +17 -0
- package/dist/chunk-7SWW3ZIN.js.map +1 -0
- package/dist/chunk-AXR56AUD.mjs +1 -0
- package/dist/chunk-AXR56AUD.mjs.map +1 -0
- package/dist/chunk-BE7JDL64.js +154 -0
- package/dist/chunk-BE7JDL64.js.map +1 -0
- package/dist/chunk-BHN2SRZC.js +51 -0
- package/dist/chunk-BHN2SRZC.js.map +1 -0
- package/dist/chunk-BJTO5JO5.mjs +11 -0
- package/dist/chunk-BJTO5JO5.mjs.map +1 -0
- package/dist/chunk-BWKKHCDG.mjs +164 -0
- package/dist/chunk-BWKKHCDG.mjs.map +1 -0
- package/dist/chunk-C5WFZJM4.js +218 -0
- package/dist/chunk-C5WFZJM4.js.map +1 -0
- package/dist/chunk-CGVFB23E.mjs +123 -0
- package/dist/chunk-CGVFB23E.mjs.map +1 -0
- package/dist/chunk-D2VDTRXO.js +1 -0
- package/dist/chunk-D2VDTRXO.js.map +1 -0
- package/dist/chunk-D75ADHVM.mjs +181 -0
- package/dist/chunk-D75ADHVM.mjs.map +1 -0
- package/dist/chunk-DCIF4XJL.js +309 -0
- package/dist/chunk-DCIF4XJL.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +11 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/dist/chunk-DSORCGJK.js +44 -0
- package/dist/chunk-DSORCGJK.js.map +1 -0
- package/dist/chunk-E5YUAOJI.js +27 -0
- package/dist/chunk-E5YUAOJI.js.map +1 -0
- package/dist/chunk-EG6NVPP2.js +164 -0
- package/dist/chunk-EG6NVPP2.js.map +1 -0
- package/dist/chunk-EL7YGOTY.js +1 -0
- package/dist/chunk-EL7YGOTY.js.map +1 -0
- package/dist/chunk-EM4MQEWV.mjs +100 -0
- package/dist/chunk-EM4MQEWV.mjs.map +1 -0
- package/dist/chunk-FCCCG5Z7.mjs +108 -0
- package/dist/chunk-FCCCG5Z7.mjs.map +1 -0
- package/dist/chunk-FEPGJ7WN.mjs +218 -0
- package/dist/chunk-FEPGJ7WN.mjs.map +1 -0
- package/dist/chunk-HXVWBFCN.js +16 -0
- package/dist/chunk-HXVWBFCN.js.map +1 -0
- package/dist/chunk-I5YMTJV6.mjs +51 -0
- package/dist/chunk-I5YMTJV6.mjs.map +1 -0
- package/dist/chunk-IMNWW7Q5.mjs +13 -0
- package/dist/chunk-IMNWW7Q5.mjs.map +1 -0
- package/dist/chunk-J5N76ASB.mjs +114 -0
- package/dist/chunk-J5N76ASB.mjs.map +1 -0
- package/dist/chunk-JBV26CUG.mjs +51 -0
- package/dist/chunk-JBV26CUG.mjs.map +1 -0
- package/dist/chunk-JMWXVXK5.js +53 -0
- package/dist/chunk-JMWXVXK5.js.map +1 -0
- package/dist/chunk-KWKV2GAH.js +60 -0
- package/dist/chunk-KWKV2GAH.js.map +1 -0
- package/dist/chunk-LDFE33ML.mjs +53 -0
- package/dist/chunk-LDFE33ML.mjs.map +1 -0
- package/dist/chunk-LF5LOI7K.mjs +174 -0
- package/dist/chunk-LF5LOI7K.mjs.map +1 -0
- package/dist/chunk-MMKAMH4U.mjs +16 -0
- package/dist/chunk-MMKAMH4U.mjs.map +1 -0
- package/dist/chunk-MUHFEEYW.js +33 -0
- package/dist/chunk-MUHFEEYW.js.map +1 -0
- package/dist/chunk-MUQYK5EO.js +1 -0
- package/dist/chunk-MUQYK5EO.js.map +1 -0
- package/dist/chunk-OBNALAMG.mjs +71 -0
- package/dist/chunk-OBNALAMG.mjs.map +1 -0
- package/dist/chunk-OLEYNPW6.js +25 -0
- package/dist/chunk-OLEYNPW6.js.map +1 -0
- package/dist/chunk-OYJRR3G2.js +123 -0
- package/dist/chunk-OYJRR3G2.js.map +1 -0
- package/dist/chunk-PLVG7AW3.js +16 -0
- package/dist/chunk-PLVG7AW3.js.map +1 -0
- package/dist/chunk-PYD4CES4.js +1 -0
- package/dist/chunk-PYD4CES4.js.map +1 -0
- package/dist/chunk-QACD2U6P.mjs +1 -0
- package/dist/chunk-QACD2U6P.mjs.map +1 -0
- package/dist/chunk-R5GGIVD4.js +10 -0
- package/dist/chunk-R5GGIVD4.js.map +1 -0
- package/dist/chunk-RCK5WCU5.mjs +25 -0
- package/dist/chunk-RCK5WCU5.mjs.map +1 -0
- package/dist/chunk-S6UUSM7S.js +13 -0
- package/dist/chunk-S6UUSM7S.js.map +1 -0
- package/dist/chunk-S7GOXCRM.js +114 -0
- package/dist/chunk-S7GOXCRM.js.map +1 -0
- package/dist/chunk-SMV5D5LO.mjs +28 -0
- package/dist/chunk-SMV5D5LO.mjs.map +1 -0
- package/dist/chunk-T7EVFD4G.mjs +60 -0
- package/dist/chunk-T7EVFD4G.mjs.map +1 -0
- package/dist/chunk-TLH3V4SY.mjs +1 -0
- package/dist/chunk-TLH3V4SY.mjs.map +1 -0
- package/dist/chunk-TUQ2CVAK.mjs +10 -0
- package/dist/chunk-TUQ2CVAK.mjs.map +1 -0
- package/dist/chunk-U6PVJKTB.js +51 -0
- package/dist/chunk-U6PVJKTB.js.map +1 -0
- package/dist/chunk-UXMMEEX4.mjs +27 -0
- package/dist/chunk-UXMMEEX4.mjs.map +1 -0
- package/dist/chunk-VVXNFFKI.mjs +44 -0
- package/dist/chunk-VVXNFFKI.mjs.map +1 -0
- package/dist/chunk-VZZ3RU3Q.js +28 -0
- package/dist/chunk-VZZ3RU3Q.js.map +1 -0
- package/dist/chunk-W4FWIZ2Y.js +34 -0
- package/dist/chunk-W4FWIZ2Y.js.map +1 -0
- package/dist/chunk-YEQFKOWD.mjs +154 -0
- package/dist/chunk-YEQFKOWD.mjs.map +1 -0
- package/dist/chunk-YPBKY4KY.mjs +1 -0
- package/dist/chunk-YPBKY4KY.mjs.map +1 -0
- package/dist/chunk-YY7K5CXX.js +174 -0
- package/dist/chunk-YY7K5CXX.js.map +1 -0
- package/dist/chunk-ZFORODOX.js +181 -0
- package/dist/chunk-ZFORODOX.js.map +1 -0
- package/dist/chunk-ZULSFSDG.mjs +309 -0
- package/dist/chunk-ZULSFSDG.mjs.map +1 -0
- package/dist/components/AdminManagerBase.d.mts +26 -0
- package/dist/components/AdminManagerBase.d.ts +26 -0
- package/dist/components/AdminManagerBase.js +13 -0
- package/dist/components/AdminManagerBase.js.map +1 -0
- package/dist/components/AdminManagerBase.mjs +12 -0
- package/dist/components/AdminManagerBase.mjs.map +1 -0
- package/dist/components/AdminManagerConfig.d.mts +83 -0
- package/dist/components/AdminManagerConfig.d.ts +83 -0
- package/dist/components/AdminManagerConfig.js +2 -0
- package/dist/components/AdminManagerConfig.js.map +1 -0
- package/dist/components/AdminManagerConfig.mjs +2 -0
- package/dist/components/AdminManagerConfig.mjs.map +1 -0
- package/dist/components/AdminShell.d.mts +30 -0
- package/dist/components/AdminShell.d.ts +30 -0
- package/dist/components/AdminShell.js +12 -0
- package/dist/components/AdminShell.js.map +1 -0
- package/dist/components/AdminShell.mjs +11 -0
- package/dist/components/AdminShell.mjs.map +1 -0
- package/dist/components/JsonLd.d.mts +32 -0
- package/dist/components/JsonLd.d.ts +32 -0
- package/dist/components/JsonLd.js +11 -0
- package/dist/components/JsonLd.js.map +1 -0
- package/dist/components/JsonLd.mjs +11 -0
- package/dist/components/JsonLd.mjs.map +1 -0
- package/dist/components/ResizableImage.d.mts +18 -0
- package/dist/components/ResizableImage.d.ts +18 -0
- package/dist/components/ResizableImage.js +10 -0
- package/dist/components/ResizableImage.js.map +1 -0
- package/dist/components/ResizableImage.mjs +9 -0
- package/dist/components/ResizableImage.mjs.map +1 -0
- package/dist/components/ToggleSwitch.d.mts +11 -0
- package/dist/components/ToggleSwitch.d.ts +11 -0
- package/dist/components/ToggleSwitch.js +10 -0
- package/dist/components/ToggleSwitch.js.map +1 -0
- package/dist/components/ToggleSwitch.mjs +9 -0
- package/dist/components/ToggleSwitch.mjs.map +1 -0
- package/dist/components/image-drop-zone.css +115 -0
- package/dist/components/index.d.mts +26 -0
- package/dist/components/index.d.ts +26 -0
- package/dist/components/index.js +35 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.mjs +35 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/components/toggle-switch.css +55 -0
- package/dist/hooks/index.d.mts +45 -0
- package/dist/hooks/index.d.ts +45 -0
- package/dist/hooks/index.js +25 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/index.mjs +25 -0
- package/dist/hooks/index.mjs.map +1 -0
- package/dist/hooks/useImageDropZone.d.mts +37 -0
- package/dist/hooks/useImageDropZone.d.ts +37 -0
- package/dist/hooks/useImageDropZone.js +13 -0
- package/dist/hooks/useImageDropZone.js.map +1 -0
- package/dist/hooks/useImageDropZone.mjs +12 -0
- package/dist/hooks/useImageDropZone.mjs.map +1 -0
- package/dist/hooks/useScrollReveal.d.mts +6 -0
- package/dist/hooks/useScrollReveal.d.ts +6 -0
- package/dist/hooks/useScrollReveal.js +12 -0
- package/dist/hooks/useScrollReveal.js.map +1 -0
- package/dist/hooks/useScrollReveal.mjs +11 -0
- package/dist/hooks/useScrollReveal.mjs.map +1 -0
- package/dist/image-drop-zone.css +115 -0
- package/dist/index-00a40-FQ.d.mts +136 -0
- package/dist/index-00a40-FQ.d.ts +136 -0
- package/dist/index.d.mts +35 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +169 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +169 -0
- package/dist/index.mjs.map +1 -0
- package/dist/infrastructure/index.d.mts +4 -0
- package/dist/infrastructure/index.d.ts +4 -0
- package/dist/infrastructure/index.js +20 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/index.mjs +20 -0
- package/dist/infrastructure/index.mjs.map +1 -0
- package/dist/infrastructure/middleware/index.d.mts +3 -0
- package/dist/infrastructure/middleware/index.d.ts +3 -0
- package/dist/infrastructure/middleware/index.js +15 -0
- package/dist/infrastructure/middleware/index.js.map +1 -0
- package/dist/infrastructure/middleware/index.mjs +15 -0
- package/dist/infrastructure/middleware/index.mjs.map +1 -0
- package/dist/infrastructure/middleware/wrappers.d.mts +10 -0
- package/dist/infrastructure/middleware/wrappers.d.ts +10 -0
- package/dist/infrastructure/middleware/wrappers.js +15 -0
- package/dist/infrastructure/middleware/wrappers.js.map +1 -0
- package/dist/infrastructure/middleware/wrappers.mjs +15 -0
- package/dist/infrastructure/middleware/wrappers.mjs.map +1 -0
- package/dist/infrastructure/prisma.d.mts +5 -0
- package/dist/infrastructure/prisma.d.ts +5 -0
- package/dist/infrastructure/prisma.js +12 -0
- package/dist/infrastructure/prisma.js.map +1 -0
- package/dist/infrastructure/prisma.mjs +12 -0
- package/dist/infrastructure/prisma.mjs.map +1 -0
- package/dist/services/index.d.mts +22 -0
- package/dist/services/index.d.ts +22 -0
- package/dist/services/index.js +36 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/index.mjs +36 -0
- package/dist/services/index.mjs.map +1 -0
- package/dist/toggle-switch.css +55 -0
- package/dist/types/common.d.mts +14 -0
- package/dist/types/common.d.ts +14 -0
- package/dist/types/common.js +8 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/common.mjs +8 -0
- package/dist/types/common.mjs.map +1 -0
- package/dist/types/index.d.mts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +9 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/utils/admin-fetch.d.mts +11 -0
- package/dist/utils/admin-fetch.d.ts +11 -0
- package/dist/utils/admin-fetch.js +13 -0
- package/dist/utils/admin-fetch.js.map +1 -0
- package/dist/utils/admin-fetch.mjs +13 -0
- package/dist/utils/admin-fetch.mjs.map +1 -0
- package/dist/utils/api-helpers.d.mts +20 -0
- package/dist/utils/api-helpers.d.ts +20 -0
- package/dist/utils/api-helpers.js +12 -0
- package/dist/utils/api-helpers.js.map +1 -0
- package/dist/utils/api-helpers.mjs +12 -0
- package/dist/utils/api-helpers.mjs.map +1 -0
- package/dist/utils/date.d.mts +5 -0
- package/dist/utils/date.d.ts +5 -0
- package/dist/utils/date.js +12 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/date.mjs +12 -0
- package/dist/utils/date.mjs.map +1 -0
- package/dist/utils/html-sanitizer.d.mts +56 -0
- package/dist/utils/html-sanitizer.d.ts +56 -0
- package/dist/utils/html-sanitizer.js +11 -0
- package/dist/utils/html-sanitizer.js.map +1 -0
- package/dist/utils/html-sanitizer.mjs +11 -0
- package/dist/utils/html-sanitizer.mjs.map +1 -0
- package/dist/utils/image-variant-utils.d.mts +14 -0
- package/dist/utils/image-variant-utils.d.ts +14 -0
- package/dist/utils/image-variant-utils.js +10 -0
- package/dist/utils/image-variant-utils.js.map +1 -0
- package/dist/utils/image-variant-utils.mjs +10 -0
- package/dist/utils/image-variant-utils.mjs.map +1 -0
- package/dist/utils/image-variants.d.mts +13 -0
- package/dist/utils/image-variants.d.ts +13 -0
- package/dist/utils/image-variants.js +12 -0
- package/dist/utils/image-variants.js.map +1 -0
- package/dist/utils/image-variants.mjs +12 -0
- package/dist/utils/image-variants.mjs.map +1 -0
- package/dist/utils/index.d.mts +88 -0
- package/dist/utils/index.d.ts +88 -0
- package/dist/utils/index.js +92 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +92 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/jwt.d.mts +19 -0
- package/dist/utils/jwt.d.ts +19 -0
- package/dist/utils/jwt.js +9 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/jwt.mjs +9 -0
- package/dist/utils/jwt.mjs.map +1 -0
- package/dist/utils/r2-helpers.d.mts +9 -0
- package/dist/utils/r2-helpers.d.ts +9 -0
- package/dist/utils/r2-helpers.js +20 -0
- package/dist/utils/r2-helpers.js.map +1 -0
- package/dist/utils/r2-helpers.mjs +20 -0
- package/dist/utils/r2-helpers.mjs.map +1 -0
- package/dist/utils/r2-storage.d.mts +38 -0
- package/dist/utils/r2-storage.d.ts +38 -0
- package/dist/utils/r2-storage.js +17 -0
- package/dist/utils/r2-storage.js.map +1 -0
- package/dist/utils/r2-storage.mjs +17 -0
- package/dist/utils/r2-storage.mjs.map +1 -0
- package/dist/utils/route-params.d.mts +3 -0
- package/dist/utils/route-params.d.ts +3 -0
- package/dist/utils/route-params.js +8 -0
- package/dist/utils/route-params.js.map +1 -0
- package/dist/utils/route-params.mjs +8 -0
- package/dist/utils/route-params.mjs.map +1 -0
- package/dist/validators/index.d.mts +2 -0
- package/dist/validators/index.d.ts +2 -0
- package/dist/validators/index.js +11 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/index.mjs +11 -0
- package/dist/validators/index.mjs.map +1 -0
- package/dist/validators/shared.d.mts +6 -0
- package/dist/validators/shared.d.ts +6 -0
- package/dist/validators/shared.js +10 -0
- package/dist/validators/shared.js.map +1 -0
- package/dist/validators/shared.mjs +10 -0
- package/dist/validators/shared.mjs.map +1 -0
- package/package.json +257 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export { useScrollReveal, useScrollRevealAll } from './useScrollReveal.js';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
export { useImageDropZone } from './useImageDropZone.js';
|
|
4
|
+
|
|
5
|
+
interface UseAdminListOptions<T, S extends string> {
|
|
6
|
+
initialItems: T[];
|
|
7
|
+
apiPath: string;
|
|
8
|
+
defaultSortKey: S;
|
|
9
|
+
normalizeItem?: (raw: unknown) => T;
|
|
10
|
+
defaultFilterValue?: string;
|
|
11
|
+
}
|
|
12
|
+
declare function useAdminList<T, S extends string = string>(options: UseAdminListOptions<T, S>): {
|
|
13
|
+
items: T[];
|
|
14
|
+
setItems: react.Dispatch<react.SetStateAction<T[]>>;
|
|
15
|
+
searchQuery: string;
|
|
16
|
+
setSearchQuery: react.Dispatch<react.SetStateAction<string>>;
|
|
17
|
+
sortKey: S;
|
|
18
|
+
setSortKey: react.Dispatch<react.SetStateAction<S>>;
|
|
19
|
+
filterValue: string;
|
|
20
|
+
setFilterValue: react.Dispatch<react.SetStateAction<string>>;
|
|
21
|
+
fetchList: (sort: S) => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
declare function useAdminForm<F extends object>(initialForm: F): {
|
|
25
|
+
tab: "list" | "edit";
|
|
26
|
+
setTab: react.Dispatch<react.SetStateAction<"list" | "edit">>;
|
|
27
|
+
form: F;
|
|
28
|
+
setForm: react.Dispatch<react.SetStateAction<F>>;
|
|
29
|
+
updateField: <K extends keyof F>(key: K, value: F[K]) => void;
|
|
30
|
+
selectedId: string | null;
|
|
31
|
+
setSelectedId: react.Dispatch<react.SetStateAction<string | null>>;
|
|
32
|
+
isNew: boolean;
|
|
33
|
+
setIsNew: react.Dispatch<react.SetStateAction<boolean>>;
|
|
34
|
+
saving: boolean;
|
|
35
|
+
setSaving: react.Dispatch<react.SetStateAction<boolean>>;
|
|
36
|
+
loading: boolean;
|
|
37
|
+
setLoading: react.Dispatch<react.SetStateAction<boolean>>;
|
|
38
|
+
mobilePv: boolean;
|
|
39
|
+
setMobilePv: react.Dispatch<react.SetStateAction<boolean>>;
|
|
40
|
+
addNew: (emptyForm: F) => void;
|
|
41
|
+
startEdit: (id: string, emptyForm?: F) => void;
|
|
42
|
+
backToList: () => void;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export { useAdminForm, useAdminList };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-EL7YGOTY.js');
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkU6PVJKTBjs = require('../chunk-U6PVJKTB.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunk5JUIMXNFjs = require('../chunk-5JUIMXNF.js');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var _chunkYY7K5CXXjs = require('../chunk-YY7K5CXX.js');
|
|
14
|
+
require('../chunk-S7GOXCRM.js');
|
|
15
|
+
require('../chunk-KWKV2GAH.js');
|
|
16
|
+
require('../chunk-EG6NVPP2.js');
|
|
17
|
+
require('../chunk-DGUM43GV.js');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
exports.useAdminForm = _chunk5JUIMXNFjs.useAdminForm; exports.useAdminList = _chunk5JUIMXNFjs.useAdminList; exports.useImageDropZone = _chunkYY7K5CXXjs.useImageDropZone; exports.useScrollReveal = _chunkU6PVJKTBjs.useScrollReveal; exports.useScrollRevealAll = _chunkU6PVJKTBjs.useScrollRevealAll;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/index.js"],"names":[],"mappings":"AAAA,yGAA6B;AAC7B;AACE;AACA;AACF,uDAA6B;AAC7B;AACE;AACA;AACF,uDAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,uSAAC","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/index.js"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import "../chunk-QACD2U6P.mjs";
|
|
3
|
+
import {
|
|
4
|
+
useScrollReveal,
|
|
5
|
+
useScrollRevealAll
|
|
6
|
+
} from "../chunk-I5YMTJV6.mjs";
|
|
7
|
+
import {
|
|
8
|
+
useAdminForm,
|
|
9
|
+
useAdminList
|
|
10
|
+
} from "../chunk-FCCCG5Z7.mjs";
|
|
11
|
+
import {
|
|
12
|
+
useImageDropZone
|
|
13
|
+
} from "../chunk-LF5LOI7K.mjs";
|
|
14
|
+
import "../chunk-J5N76ASB.mjs";
|
|
15
|
+
import "../chunk-T7EVFD4G.mjs";
|
|
16
|
+
import "../chunk-BWKKHCDG.mjs";
|
|
17
|
+
import "../chunk-BJTO5JO5.mjs";
|
|
18
|
+
export {
|
|
19
|
+
useAdminForm,
|
|
20
|
+
useAdminList,
|
|
21
|
+
useImageDropZone,
|
|
22
|
+
useScrollReveal,
|
|
23
|
+
useScrollRevealAll
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DragEvent } from 'react';
|
|
2
|
+
|
|
3
|
+
interface ImageVariantUrls {
|
|
4
|
+
lg?: string;
|
|
5
|
+
md?: string;
|
|
6
|
+
sm?: string;
|
|
7
|
+
thumb?: string;
|
|
8
|
+
}
|
|
9
|
+
interface UploadResult {
|
|
10
|
+
url: string;
|
|
11
|
+
key: string;
|
|
12
|
+
size: number;
|
|
13
|
+
variants?: ImageVariantUrls;
|
|
14
|
+
variantKeys?: string[];
|
|
15
|
+
}
|
|
16
|
+
interface UseImageDropZoneOptions {
|
|
17
|
+
multiple?: boolean;
|
|
18
|
+
maxFiles?: number;
|
|
19
|
+
onUpload: (result: UploadResult) => void;
|
|
20
|
+
onKeyTracked?: (key: string) => void;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
}
|
|
23
|
+
declare function useImageDropZone(options: UseImageDropZoneOptions): {
|
|
24
|
+
isDragOver: boolean;
|
|
25
|
+
isUploading: boolean;
|
|
26
|
+
isResizing: boolean;
|
|
27
|
+
error: string | null;
|
|
28
|
+
dragHandlers: {
|
|
29
|
+
onDragEnter: (e: DragEvent) => void;
|
|
30
|
+
onDragOver: (e: DragEvent) => void;
|
|
31
|
+
onDragLeave: (e: DragEvent) => void;
|
|
32
|
+
onDrop: (e: DragEvent) => void;
|
|
33
|
+
};
|
|
34
|
+
handleFileInput: (fileList: FileList | null) => Promise<void>;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { useImageDropZone };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DragEvent } from 'react';
|
|
2
|
+
|
|
3
|
+
interface ImageVariantUrls {
|
|
4
|
+
lg?: string;
|
|
5
|
+
md?: string;
|
|
6
|
+
sm?: string;
|
|
7
|
+
thumb?: string;
|
|
8
|
+
}
|
|
9
|
+
interface UploadResult {
|
|
10
|
+
url: string;
|
|
11
|
+
key: string;
|
|
12
|
+
size: number;
|
|
13
|
+
variants?: ImageVariantUrls;
|
|
14
|
+
variantKeys?: string[];
|
|
15
|
+
}
|
|
16
|
+
interface UseImageDropZoneOptions {
|
|
17
|
+
multiple?: boolean;
|
|
18
|
+
maxFiles?: number;
|
|
19
|
+
onUpload: (result: UploadResult) => void;
|
|
20
|
+
onKeyTracked?: (key: string) => void;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
}
|
|
23
|
+
declare function useImageDropZone(options: UseImageDropZoneOptions): {
|
|
24
|
+
isDragOver: boolean;
|
|
25
|
+
isUploading: boolean;
|
|
26
|
+
isResizing: boolean;
|
|
27
|
+
error: string | null;
|
|
28
|
+
dragHandlers: {
|
|
29
|
+
onDragEnter: (e: DragEvent) => void;
|
|
30
|
+
onDragOver: (e: DragEvent) => void;
|
|
31
|
+
onDragLeave: (e: DragEvent) => void;
|
|
32
|
+
onDrop: (e: DragEvent) => void;
|
|
33
|
+
};
|
|
34
|
+
handleFileInput: (fileList: FileList | null) => Promise<void>;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { useImageDropZone };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkYY7K5CXXjs = require('../chunk-YY7K5CXX.js');
|
|
6
|
+
require('../chunk-S7GOXCRM.js');
|
|
7
|
+
require('../chunk-KWKV2GAH.js');
|
|
8
|
+
require('../chunk-EG6NVPP2.js');
|
|
9
|
+
require('../chunk-DGUM43GV.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.useImageDropZone = _chunkYY7K5CXXjs.useImageDropZone;
|
|
13
|
+
//# sourceMappingURL=useImageDropZone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useImageDropZone.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,6DAAC","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useImageDropZone.js"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useImageDropZone
|
|
4
|
+
} from "../chunk-LF5LOI7K.mjs";
|
|
5
|
+
import "../chunk-J5N76ASB.mjs";
|
|
6
|
+
import "../chunk-T7EVFD4G.mjs";
|
|
7
|
+
import "../chunk-BWKKHCDG.mjs";
|
|
8
|
+
import "../chunk-BJTO5JO5.mjs";
|
|
9
|
+
export {
|
|
10
|
+
useImageDropZone
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=useImageDropZone.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkU6PVJKTBjs = require('../chunk-U6PVJKTB.js');
|
|
7
|
+
require('../chunk-DGUM43GV.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.useScrollReveal = _chunkU6PVJKTBjs.useScrollReveal; exports.useScrollRevealAll = _chunkU6PVJKTBjs.useScrollRevealAll;
|
|
12
|
+
//# sourceMappingURL=useScrollReveal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useScrollReveal.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,6HAAC","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useScrollReveal.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/* βββ Shared Drag-and-Drop Upload States βββ */
|
|
2
|
+
|
|
3
|
+
/* Drag-over visual feedback */
|
|
4
|
+
.af-upload-zone.is-drag-over,
|
|
5
|
+
.nbe-ed-img-up.is-drag-over,
|
|
6
|
+
.nbe-img-upload.is-drag-over,
|
|
7
|
+
.admin-cover-upload.is-drag-over,
|
|
8
|
+
.pm-poster-upload.is-drag-over,
|
|
9
|
+
.rm-pu.is-drag-over,
|
|
10
|
+
.rm-ce-iup.is-drag-over,
|
|
11
|
+
.rm-gal-grid.is-drag-over {
|
|
12
|
+
border-color: #8c7444 !important;
|
|
13
|
+
border-style: dashed !important;
|
|
14
|
+
background: rgba(201, 169, 110, 0.08) !important;
|
|
15
|
+
box-shadow: inset 0 0 0 2px rgba(201, 169, 110, 0.15);
|
|
16
|
+
transition: all 0.15s ease;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Uploading / Resizing state */
|
|
20
|
+
.af-upload-zone.is-uploading,
|
|
21
|
+
.nbe-ed-img-up.is-uploading,
|
|
22
|
+
.nbe-img-upload.is-uploading,
|
|
23
|
+
.admin-cover-upload.is-uploading,
|
|
24
|
+
.pm-poster-upload.is-uploading,
|
|
25
|
+
.rm-pu.is-uploading,
|
|
26
|
+
.rm-ce-iup.is-uploading,
|
|
27
|
+
.af-upload-zone.is-resizing,
|
|
28
|
+
.nbe-ed-img-up.is-resizing,
|
|
29
|
+
.nbe-img-upload.is-resizing,
|
|
30
|
+
.admin-cover-upload.is-resizing,
|
|
31
|
+
.pm-poster-upload.is-resizing,
|
|
32
|
+
.rm-pu.is-resizing,
|
|
33
|
+
.rm-ce-iup.is-resizing {
|
|
34
|
+
opacity: 0.6;
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Upload spinner */
|
|
39
|
+
.dz-upload-spinner {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
gap: 6px;
|
|
43
|
+
font-size: 12px;
|
|
44
|
+
color: #8c7444;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.dz-upload-spinner::before {
|
|
48
|
+
content: "";
|
|
49
|
+
width: 14px;
|
|
50
|
+
height: 14px;
|
|
51
|
+
border: 2px solid #e8e0d0;
|
|
52
|
+
border-top-color: #8c7444;
|
|
53
|
+
border-radius: 50%;
|
|
54
|
+
animation: dz-spin 0.6s linear infinite;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@keyframes dz-spin {
|
|
58
|
+
to {
|
|
59
|
+
transform: rotate(360deg);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Error message */
|
|
64
|
+
.dz-error {
|
|
65
|
+
font-size: 11px;
|
|
66
|
+
color: #d44;
|
|
67
|
+
margin-top: 4px;
|
|
68
|
+
padding: 4px 8px;
|
|
69
|
+
background: #fef5f5;
|
|
70
|
+
border: 1px solid #f0c0c0;
|
|
71
|
+
border-radius: 4px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Drag hint text */
|
|
75
|
+
.dz-drag-hint {
|
|
76
|
+
font-size: 12px;
|
|
77
|
+
color: #8c7444;
|
|
78
|
+
font-weight: 600;
|
|
79
|
+
pointer-events: none;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Placeholder with guide */
|
|
83
|
+
.dz-placeholder {
|
|
84
|
+
display: flex;
|
|
85
|
+
flex-direction: column;
|
|
86
|
+
align-items: center;
|
|
87
|
+
gap: 6px;
|
|
88
|
+
padding: 12px;
|
|
89
|
+
text-align: center;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.dz-placeholder-icon {
|
|
93
|
+
font-size: 24px;
|
|
94
|
+
color: #aaa;
|
|
95
|
+
line-height: 1;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.dz-placeholder-text {
|
|
99
|
+
font-size: 13px;
|
|
100
|
+
color: #888;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.dz-placeholder-guide {
|
|
104
|
+
font-size: 11px;
|
|
105
|
+
color: #bbb;
|
|
106
|
+
line-height: 1.5;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* Gallery drop zone add button state */
|
|
110
|
+
.rm-gal-add.dz-state {
|
|
111
|
+
display: flex;
|
|
112
|
+
align-items: center;
|
|
113
|
+
justify-content: center;
|
|
114
|
+
pointer-events: none;
|
|
115
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @withwiz/cms-kit β μ€μ μ€μ /μ£Όμ
κ²½κ³ (spec.md Β§5).
|
|
3
|
+
*
|
|
4
|
+
* λͺ¨λ μΈλΆ μμ/μλΉμ μ’
μ κ°(brand/nav, route map, JWT, sanitizer μ λ’°
|
|
5
|
+
* origin, R2 prefix κ·μΉ, rate-limit identity μΆμΆ)μ μ΄ λͺ¨λμ ν΅ν΄μλ§
|
|
6
|
+
* νλ¬κ°λ€. `src/infrastructure/prisma.ts` μ `setPrismaClient`/`getPrisma`
|
|
7
|
+
* ν¨ν΄μ λͺ¨λΈλ‘ νλ€.
|
|
8
|
+
*
|
|
9
|
+
* κ²°μ κ·μΉ (λͺ¨λ νλ©΄μ μΌκ΄ μ μ©):
|
|
10
|
+
* - μ°μ μμ: λͺ
μμ μ£Όμ
(inject) > λ κ±°μ νκ²½λ³μ fallback(νμ¬ μ΄λ¦ μ μ§)
|
|
11
|
+
* > λ΄μ₯ κΈ°λ³Έκ°.
|
|
12
|
+
* - lazy / point-of-use: λͺ¨λ import λ§μΌλ‘λ μ λ throw νμ§ μλλ€. μ€ν¨/
|
|
13
|
+
* κ²½κ³ λ μμμ *μ¬μ©*ν λ λ°μνλ€ (prisma proxy μ λμΌ).
|
|
14
|
+
* - safe-default μ‘΄μ¬ β `@withwiz/cms-kit:` λ€μμ€νμ΄μ€ warn 1ν(μ€μ λͺ
λͺ
μ) ν
|
|
15
|
+
* κΈ°λ³Έκ° μ¬μ©. safe-default μμ(JWT μλͺ
λΉλ°) β `@withwiz/cms-kit:`
|
|
16
|
+
* λ€μμ€νμ΄μ€ error λ‘ point-of-use fail-fast.
|
|
17
|
+
* - νκ²½λ³μ μ½κΈ°λ μ΄ λͺ¨λ μμμλ§ λ°μνλ€ (μ΄λ² μ€νλ¦°νΈκ° λΌμ°ν
νλ
|
|
18
|
+
* νλ©΄ νμ β spec.md Β§4.2 μ 체 sweep μ Sprint 2).
|
|
19
|
+
*/
|
|
20
|
+
/** μ¬μ΄λλ° λ€λΉκ²μ΄μ
νλͺ© (label + href + μ ν κΈλ¦¬ν) */
|
|
21
|
+
interface CmsNavItem {
|
|
22
|
+
/** νΌμΉ μνμμ 보μ΄λ λΌλ²¨ */
|
|
23
|
+
label: string;
|
|
24
|
+
/** λ§ν¬ λμ κ²½λ‘ */
|
|
25
|
+
href: string;
|
|
26
|
+
/** μ ν μνμμ 보μ΄λ 1κΈμ κΈλ¦¬ν */
|
|
27
|
+
glyph: string;
|
|
28
|
+
}
|
|
29
|
+
/** brand / navigation μ€μ */
|
|
30
|
+
interface CmsBrandConfig {
|
|
31
|
+
/** λΈλλ λΌλ²¨ (μ¬μ΄λλ° ν λ§ν¬ ν
μ€νΈ) */
|
|
32
|
+
brandLabel?: string;
|
|
33
|
+
/** λΈλλ ν λ§ν¬ href (μ¬μ΄νΈ 보기) */
|
|
34
|
+
brandHref?: string;
|
|
35
|
+
/** admin λ§ν¬ λμ */
|
|
36
|
+
adminHref?: string;
|
|
37
|
+
/** μμ μλ nav νλͺ© λͺ©λ‘ */
|
|
38
|
+
navItems?: CmsNavItem[];
|
|
39
|
+
}
|
|
40
|
+
/** auth/route μλν¬μΈνΈ λ§΅ */
|
|
41
|
+
interface CmsRouteConfig {
|
|
42
|
+
/** λ‘κ·ΈμΈ νμ΄μ§ κ²½λ‘ */
|
|
43
|
+
loginPath?: string;
|
|
44
|
+
/** λ‘κ·ΈμΈ ν 리λ€μ΄λ νΈ λμ (ν/λμ보λ) */
|
|
45
|
+
postLoginRedirect?: string;
|
|
46
|
+
/** "νμ¬ μ¬μ©μ" μλν¬μΈνΈ */
|
|
47
|
+
meEndpoint?: string;
|
|
48
|
+
/** λ‘κ·Έμμ μλν¬μΈνΈ */
|
|
49
|
+
logoutEndpoint?: string;
|
|
50
|
+
/** ν ν° refresh μλν¬μΈνΈ */
|
|
51
|
+
refreshEndpoint?: string;
|
|
52
|
+
/** μ
λ‘λ μλν¬μΈνΈ */
|
|
53
|
+
uploadEndpoint?: string;
|
|
54
|
+
}
|
|
55
|
+
/** JWT μ€μ (μλͺ
λΉλ°μλ μμ ν κΈ°λ³Έκ°μ΄ μμ β fail-fast) */
|
|
56
|
+
interface CmsJwtConfig {
|
|
57
|
+
/** HMAC μλͺ
λΉλ° (νμ, μμ ν κΈ°λ³Έκ° μμ) */
|
|
58
|
+
secret?: string;
|
|
59
|
+
/** access token λ§λ£ (κΈ°λ³Έ '2h') */
|
|
60
|
+
accessTokenExpiry?: string;
|
|
61
|
+
/** refresh token λ§λ£ (κΈ°λ³Έ '7d') */
|
|
62
|
+
refreshTokenExpiry?: string;
|
|
63
|
+
/** μκ³ λ¦¬μ¦ (κΈ°λ³Έ 'HS256') */
|
|
64
|
+
algorithm?: string;
|
|
65
|
+
}
|
|
66
|
+
/** sanitizer μ€μ */
|
|
67
|
+
interface CmsSanitizerConfig {
|
|
68
|
+
/** μ λ’° iframe origin prefix λͺ©λ‘ (κΈ°λ³Έ = YouTube/Vimeo) */
|
|
69
|
+
trustedIframeOrigins?: readonly string[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* R2 μ격 μ¦λͺ
μ€μ . λͺ¨λ νλͺ© μμ ν κΈ°λ³Έκ°μ΄ μμ β credentials λλ½ μ
|
|
73
|
+
* point-of-use(`uploadToR2`/`deleteFromR2`/`getClient`) μμ namespaced
|
|
74
|
+
* fail-fast. λΆλΆ μ€μ κ°λ₯ (μ: bucketName λ§ inject, λλ¨Έμ§λ legacy env).
|
|
75
|
+
*/
|
|
76
|
+
interface CmsR2CredentialsConfig {
|
|
77
|
+
/** Cloudflare R2 κ³μ ID (endpoint host ꡬμ±μ μ¬μ©) */
|
|
78
|
+
accountId?: string;
|
|
79
|
+
/** R2 access key ID */
|
|
80
|
+
accessKeyId?: string;
|
|
81
|
+
/** R2 secret access key */
|
|
82
|
+
secretAccessKey?: string;
|
|
83
|
+
/** R2 λ²ν· μ΄λ¦ */
|
|
84
|
+
bucketName?: string;
|
|
85
|
+
}
|
|
86
|
+
/** R2/storage μ€μ */
|
|
87
|
+
interface CmsStorageConfig {
|
|
88
|
+
/**
|
|
89
|
+
* inline `<img src>` μμ storage key λ‘ μΈμ ν μ΅μμ prefix λͺ©λ‘.
|
|
90
|
+
* λ―Έμ€μ μ origin/base κΈ°λ°μ μμ κΈ°λ³Έ λμ(μ무 prefix λ silent drop
|
|
91
|
+
* νμ§ μμ)μ μ¬μ©νλ€ β `news/` μ μ© νλμ½λ©κ³Ό λ¬λ¦¬ λΉ-`news` ν€λ
|
|
92
|
+
* μμ§λλ€ (spec.md Β§4.1 orphan-bug fix).
|
|
93
|
+
*/
|
|
94
|
+
inlineKeyPrefixes?: readonly string[];
|
|
95
|
+
/**
|
|
96
|
+
* storage κ³΅κ° base URL/origin. μ§μ μ:
|
|
97
|
+
* - inline `<img src>` μ path κ° ν΄λ 무κ΄νκ² key λ‘ μμ§λλ€ (r2-helpers).
|
|
98
|
+
* - μ
λ‘λ κ²°κ³Ό public URL μ prefix λ‘ μ¬μ©λλ€ (r2-storage).
|
|
99
|
+
* λ―Έμ€μ μ r2-storage λ legacy `R2_PUBLIC_URL` env, κ·Έκ²λ μμΌλ©΄
|
|
100
|
+
* `https://${bucketName}.r2.dev` λ‘ fallback νλ€.
|
|
101
|
+
*/
|
|
102
|
+
publicBaseUrl?: string;
|
|
103
|
+
/** R2 μ격 μ¦λͺ
(κ³μ /ν€/λ²ν·). λ―Έμ£Όμ
μ legacy R2_* νκ²½λ³μ fallback. */
|
|
104
|
+
r2?: CmsR2CredentialsConfig;
|
|
105
|
+
}
|
|
106
|
+
/** rate-limit client-identity / IP μΆμΆ μ λ΅ */
|
|
107
|
+
type CmsIdentityExtractor = (headers: Headers) => string;
|
|
108
|
+
/** rate-limit μ€μ */
|
|
109
|
+
interface CmsRateLimitConfig {
|
|
110
|
+
/** consumer κ° μ£Όμ
νλ client-identity μΆμΆ ν¨μ */
|
|
111
|
+
identityExtractor?: CmsIdentityExtractor;
|
|
112
|
+
/** rate-limit νμ±ν (κΈ°λ³Έ: legacy RATE_LIMIT_ENABLED env, κ·Έ μΈ true) */
|
|
113
|
+
enabled?: boolean;
|
|
114
|
+
}
|
|
115
|
+
/** μ 체 Β§5 μ€μ */
|
|
116
|
+
interface CmsConfig {
|
|
117
|
+
brand?: CmsBrandConfig;
|
|
118
|
+
routes?: CmsRouteConfig;
|
|
119
|
+
jwt?: CmsJwtConfig;
|
|
120
|
+
sanitizer?: CmsSanitizerConfig;
|
|
121
|
+
storage?: CmsStorageConfig;
|
|
122
|
+
rateLimit?: CmsRateLimitConfig;
|
|
123
|
+
}
|
|
124
|
+
/** JWT μλͺ
λΉλ° μ΅μ κΈΈμ΄ (λ¬Έμνλ μ μ±
, spec.md Β§4.6 / S3). */
|
|
125
|
+
declare const JWT_SECRET_MIN_LENGTH = 32;
|
|
126
|
+
/**
|
|
127
|
+
* μ 체 Β§5 μ€μ μ μ£Όμ
νλ€ (prisma μ `setPrismaClient` μ λν).
|
|
128
|
+
* λΆλΆ μ£Όμ
μ λ³ν©νλ©°, κ°μ ν€ μ¬μ£Όμ
μ μ κ°μ΄ μ°μ νλ€.
|
|
129
|
+
*/
|
|
130
|
+
declare function setCmsConfig(config: CmsConfig): void;
|
|
131
|
+
/** μ£Όμ
λ μ€μ μ λͺ¨λ λΉμ΄λ€ (ν
μ€νΈ/μ¬μ΄κΈ°ν μ©λ). */
|
|
132
|
+
declare function resetCmsConfig(): void;
|
|
133
|
+
/** νμ¬ λ³ν©λ raw μ€μ (λλ²κΉ
/ν
μ€νΈ μ©). */
|
|
134
|
+
declare function getCmsConfig(): CmsConfig;
|
|
135
|
+
|
|
136
|
+
export { type CmsBrandConfig as C, JWT_SECRET_MIN_LENGTH as J, type CmsConfig as a, type CmsIdentityExtractor as b, type CmsJwtConfig as c, type CmsNavItem as d, type CmsR2CredentialsConfig as e, type CmsRateLimitConfig as f, type CmsRouteConfig as g, type CmsSanitizerConfig as h, type CmsStorageConfig as i, getCmsConfig as j, resetCmsConfig as r, setCmsConfig as s };
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @withwiz/cms-kit β μ€μ μ€μ /μ£Όμ
κ²½κ³ (spec.md Β§5).
|
|
3
|
+
*
|
|
4
|
+
* λͺ¨λ μΈλΆ μμ/μλΉμ μ’
μ κ°(brand/nav, route map, JWT, sanitizer μ λ’°
|
|
5
|
+
* origin, R2 prefix κ·μΉ, rate-limit identity μΆμΆ)μ μ΄ λͺ¨λμ ν΅ν΄μλ§
|
|
6
|
+
* νλ¬κ°λ€. `src/infrastructure/prisma.ts` μ `setPrismaClient`/`getPrisma`
|
|
7
|
+
* ν¨ν΄μ λͺ¨λΈλ‘ νλ€.
|
|
8
|
+
*
|
|
9
|
+
* κ²°μ κ·μΉ (λͺ¨λ νλ©΄μ μΌκ΄ μ μ©):
|
|
10
|
+
* - μ°μ μμ: λͺ
μμ μ£Όμ
(inject) > λ κ±°μ νκ²½λ³μ fallback(νμ¬ μ΄λ¦ μ μ§)
|
|
11
|
+
* > λ΄μ₯ κΈ°λ³Έκ°.
|
|
12
|
+
* - lazy / point-of-use: λͺ¨λ import λ§μΌλ‘λ μ λ throw νμ§ μλλ€. μ€ν¨/
|
|
13
|
+
* κ²½κ³ λ μμμ *μ¬μ©*ν λ λ°μνλ€ (prisma proxy μ λμΌ).
|
|
14
|
+
* - safe-default μ‘΄μ¬ β `@withwiz/cms-kit:` λ€μμ€νμ΄μ€ warn 1ν(μ€μ λͺ
λͺ
μ) ν
|
|
15
|
+
* κΈ°λ³Έκ° μ¬μ©. safe-default μμ(JWT μλͺ
λΉλ°) β `@withwiz/cms-kit:`
|
|
16
|
+
* λ€μμ€νμ΄μ€ error λ‘ point-of-use fail-fast.
|
|
17
|
+
* - νκ²½λ³μ μ½κΈ°λ μ΄ λͺ¨λ μμμλ§ λ°μνλ€ (μ΄λ² μ€νλ¦°νΈκ° λΌμ°ν
νλ
|
|
18
|
+
* νλ©΄ νμ β spec.md Β§4.2 μ 체 sweep μ Sprint 2).
|
|
19
|
+
*/
|
|
20
|
+
/** μ¬μ΄λλ° λ€λΉκ²μ΄μ
νλͺ© (label + href + μ ν κΈλ¦¬ν) */
|
|
21
|
+
interface CmsNavItem {
|
|
22
|
+
/** νΌμΉ μνμμ 보μ΄λ λΌλ²¨ */
|
|
23
|
+
label: string;
|
|
24
|
+
/** λ§ν¬ λμ κ²½λ‘ */
|
|
25
|
+
href: string;
|
|
26
|
+
/** μ ν μνμμ 보μ΄λ 1κΈμ κΈλ¦¬ν */
|
|
27
|
+
glyph: string;
|
|
28
|
+
}
|
|
29
|
+
/** brand / navigation μ€μ */
|
|
30
|
+
interface CmsBrandConfig {
|
|
31
|
+
/** λΈλλ λΌλ²¨ (μ¬μ΄λλ° ν λ§ν¬ ν
μ€νΈ) */
|
|
32
|
+
brandLabel?: string;
|
|
33
|
+
/** λΈλλ ν λ§ν¬ href (μ¬μ΄νΈ 보기) */
|
|
34
|
+
brandHref?: string;
|
|
35
|
+
/** admin λ§ν¬ λμ */
|
|
36
|
+
adminHref?: string;
|
|
37
|
+
/** μμ μλ nav νλͺ© λͺ©λ‘ */
|
|
38
|
+
navItems?: CmsNavItem[];
|
|
39
|
+
}
|
|
40
|
+
/** auth/route μλν¬μΈνΈ λ§΅ */
|
|
41
|
+
interface CmsRouteConfig {
|
|
42
|
+
/** λ‘κ·ΈμΈ νμ΄μ§ κ²½λ‘ */
|
|
43
|
+
loginPath?: string;
|
|
44
|
+
/** λ‘κ·ΈμΈ ν 리λ€μ΄λ νΈ λμ (ν/λμ보λ) */
|
|
45
|
+
postLoginRedirect?: string;
|
|
46
|
+
/** "νμ¬ μ¬μ©μ" μλν¬μΈνΈ */
|
|
47
|
+
meEndpoint?: string;
|
|
48
|
+
/** λ‘κ·Έμμ μλν¬μΈνΈ */
|
|
49
|
+
logoutEndpoint?: string;
|
|
50
|
+
/** ν ν° refresh μλν¬μΈνΈ */
|
|
51
|
+
refreshEndpoint?: string;
|
|
52
|
+
/** μ
λ‘λ μλν¬μΈνΈ */
|
|
53
|
+
uploadEndpoint?: string;
|
|
54
|
+
}
|
|
55
|
+
/** JWT μ€μ (μλͺ
λΉλ°μλ μμ ν κΈ°λ³Έκ°μ΄ μμ β fail-fast) */
|
|
56
|
+
interface CmsJwtConfig {
|
|
57
|
+
/** HMAC μλͺ
λΉλ° (νμ, μμ ν κΈ°λ³Έκ° μμ) */
|
|
58
|
+
secret?: string;
|
|
59
|
+
/** access token λ§λ£ (κΈ°λ³Έ '2h') */
|
|
60
|
+
accessTokenExpiry?: string;
|
|
61
|
+
/** refresh token λ§λ£ (κΈ°λ³Έ '7d') */
|
|
62
|
+
refreshTokenExpiry?: string;
|
|
63
|
+
/** μκ³ λ¦¬μ¦ (κΈ°λ³Έ 'HS256') */
|
|
64
|
+
algorithm?: string;
|
|
65
|
+
}
|
|
66
|
+
/** sanitizer μ€μ */
|
|
67
|
+
interface CmsSanitizerConfig {
|
|
68
|
+
/** μ λ’° iframe origin prefix λͺ©λ‘ (κΈ°λ³Έ = YouTube/Vimeo) */
|
|
69
|
+
trustedIframeOrigins?: readonly string[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* R2 μ격 μ¦λͺ
μ€μ . λͺ¨λ νλͺ© μμ ν κΈ°λ³Έκ°μ΄ μμ β credentials λλ½ μ
|
|
73
|
+
* point-of-use(`uploadToR2`/`deleteFromR2`/`getClient`) μμ namespaced
|
|
74
|
+
* fail-fast. λΆλΆ μ€μ κ°λ₯ (μ: bucketName λ§ inject, λλ¨Έμ§λ legacy env).
|
|
75
|
+
*/
|
|
76
|
+
interface CmsR2CredentialsConfig {
|
|
77
|
+
/** Cloudflare R2 κ³μ ID (endpoint host ꡬμ±μ μ¬μ©) */
|
|
78
|
+
accountId?: string;
|
|
79
|
+
/** R2 access key ID */
|
|
80
|
+
accessKeyId?: string;
|
|
81
|
+
/** R2 secret access key */
|
|
82
|
+
secretAccessKey?: string;
|
|
83
|
+
/** R2 λ²ν· μ΄λ¦ */
|
|
84
|
+
bucketName?: string;
|
|
85
|
+
}
|
|
86
|
+
/** R2/storage μ€μ */
|
|
87
|
+
interface CmsStorageConfig {
|
|
88
|
+
/**
|
|
89
|
+
* inline `<img src>` μμ storage key λ‘ μΈμ ν μ΅μμ prefix λͺ©λ‘.
|
|
90
|
+
* λ―Έμ€μ μ origin/base κΈ°λ°μ μμ κΈ°λ³Έ λμ(μ무 prefix λ silent drop
|
|
91
|
+
* νμ§ μμ)μ μ¬μ©νλ€ β `news/` μ μ© νλμ½λ©κ³Ό λ¬λ¦¬ λΉ-`news` ν€λ
|
|
92
|
+
* μμ§λλ€ (spec.md Β§4.1 orphan-bug fix).
|
|
93
|
+
*/
|
|
94
|
+
inlineKeyPrefixes?: readonly string[];
|
|
95
|
+
/**
|
|
96
|
+
* storage κ³΅κ° base URL/origin. μ§μ μ:
|
|
97
|
+
* - inline `<img src>` μ path κ° ν΄λ 무κ΄νκ² key λ‘ μμ§λλ€ (r2-helpers).
|
|
98
|
+
* - μ
λ‘λ κ²°κ³Ό public URL μ prefix λ‘ μ¬μ©λλ€ (r2-storage).
|
|
99
|
+
* λ―Έμ€μ μ r2-storage λ legacy `R2_PUBLIC_URL` env, κ·Έκ²λ μμΌλ©΄
|
|
100
|
+
* `https://${bucketName}.r2.dev` λ‘ fallback νλ€.
|
|
101
|
+
*/
|
|
102
|
+
publicBaseUrl?: string;
|
|
103
|
+
/** R2 μ격 μ¦λͺ
(κ³μ /ν€/λ²ν·). λ―Έμ£Όμ
μ legacy R2_* νκ²½λ³μ fallback. */
|
|
104
|
+
r2?: CmsR2CredentialsConfig;
|
|
105
|
+
}
|
|
106
|
+
/** rate-limit client-identity / IP μΆμΆ μ λ΅ */
|
|
107
|
+
type CmsIdentityExtractor = (headers: Headers) => string;
|
|
108
|
+
/** rate-limit μ€μ */
|
|
109
|
+
interface CmsRateLimitConfig {
|
|
110
|
+
/** consumer κ° μ£Όμ
νλ client-identity μΆμΆ ν¨μ */
|
|
111
|
+
identityExtractor?: CmsIdentityExtractor;
|
|
112
|
+
/** rate-limit νμ±ν (κΈ°λ³Έ: legacy RATE_LIMIT_ENABLED env, κ·Έ μΈ true) */
|
|
113
|
+
enabled?: boolean;
|
|
114
|
+
}
|
|
115
|
+
/** μ 체 Β§5 μ€μ */
|
|
116
|
+
interface CmsConfig {
|
|
117
|
+
brand?: CmsBrandConfig;
|
|
118
|
+
routes?: CmsRouteConfig;
|
|
119
|
+
jwt?: CmsJwtConfig;
|
|
120
|
+
sanitizer?: CmsSanitizerConfig;
|
|
121
|
+
storage?: CmsStorageConfig;
|
|
122
|
+
rateLimit?: CmsRateLimitConfig;
|
|
123
|
+
}
|
|
124
|
+
/** JWT μλͺ
λΉλ° μ΅μ κΈΈμ΄ (λ¬Έμνλ μ μ±
, spec.md Β§4.6 / S3). */
|
|
125
|
+
declare const JWT_SECRET_MIN_LENGTH = 32;
|
|
126
|
+
/**
|
|
127
|
+
* μ 체 Β§5 μ€μ μ μ£Όμ
νλ€ (prisma μ `setPrismaClient` μ λν).
|
|
128
|
+
* λΆλΆ μ£Όμ
μ λ³ν©νλ©°, κ°μ ν€ μ¬μ£Όμ
μ μ κ°μ΄ μ°μ νλ€.
|
|
129
|
+
*/
|
|
130
|
+
declare function setCmsConfig(config: CmsConfig): void;
|
|
131
|
+
/** μ£Όμ
λ μ€μ μ λͺ¨λ λΉμ΄λ€ (ν
μ€νΈ/μ¬μ΄κΈ°ν μ©λ). */
|
|
132
|
+
declare function resetCmsConfig(): void;
|
|
133
|
+
/** νμ¬ λ³ν©λ raw μ€μ (λλ²κΉ
/ν
μ€νΈ μ©). */
|
|
134
|
+
declare function getCmsConfig(): CmsConfig;
|
|
135
|
+
|
|
136
|
+
export { type CmsBrandConfig as C, JWT_SECRET_MIN_LENGTH as J, type CmsConfig as a, type CmsIdentityExtractor as b, type CmsJwtConfig as c, type CmsNavItem as d, type CmsR2CredentialsConfig as e, type CmsRateLimitConfig as f, type CmsRouteConfig as g, type CmsSanitizerConfig as h, type CmsStorageConfig as i, getCmsConfig as j, resetCmsConfig as r, setCmsConfig as s };
|