@withwiz/cms-kit 0.1.0 → 0.2.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 +4 -2
- package/README.md +4 -2
- package/dist/{chunk-JMWXVXK5.js → chunk-25GMHPCW.js} +12 -4
- package/dist/chunk-25GMHPCW.js.map +1 -0
- package/dist/{chunk-5JUIMXNF.js → chunk-2VHNZWH2.js} +3 -3
- package/dist/{chunk-5JUIMXNF.js.map → chunk-2VHNZWH2.js.map} +1 -1
- package/dist/{chunk-BWKKHCDG.mjs → chunk-3UXX27N5.mjs} +44 -3
- package/dist/{chunk-BWKKHCDG.mjs.map → chunk-3UXX27N5.mjs.map} +1 -1
- package/dist/{chunk-T7EVFD4G.mjs → chunk-47DPXAO6.mjs} +2 -2
- package/dist/{chunk-4W3X7OKF.js → chunk-5Z5XUR2K.js} +48 -27
- package/dist/chunk-5Z5XUR2K.js.map +1 -0
- package/dist/{chunk-LDFE33ML.mjs → chunk-7F5YFG2W.mjs} +10 -2
- package/dist/chunk-7F5YFG2W.mjs.map +1 -0
- package/dist/{chunk-CGVFB23E.mjs → chunk-A557FA2K.mjs} +24 -19
- package/dist/{chunk-CGVFB23E.mjs.map → chunk-A557FA2K.mjs.map} +1 -1
- package/dist/{chunk-OBNALAMG.mjs → chunk-BG4C5KZO.mjs} +2 -2
- package/dist/{chunk-DCIF4XJL.js → chunk-EPVV6655.js} +10 -10
- package/dist/{chunk-DCIF4XJL.js.map → chunk-EPVV6655.js.map} +1 -1
- package/dist/{chunk-LF5LOI7K.mjs → chunk-FCWUNCGA.mjs} +3 -3
- package/dist/{chunk-YEQFKOWD.mjs → chunk-GQJNLE34.mjs} +2 -2
- package/dist/{chunk-W4FWIZ2Y.js → chunk-HVB72GT3.js} +3 -3
- package/dist/{chunk-W4FWIZ2Y.js.map → chunk-HVB72GT3.js.map} +1 -1
- package/dist/{chunk-KWKV2GAH.js → chunk-J32BTYJZ.js} +4 -4
- package/dist/{chunk-KWKV2GAH.js.map → chunk-J32BTYJZ.js.map} +1 -1
- package/dist/{chunk-C5WFZJM4.js → chunk-JPIQU2C4.js} +6 -6
- package/dist/{chunk-C5WFZJM4.js.map → chunk-JPIQU2C4.js.map} +1 -1
- package/dist/{chunk-FEPGJ7WN.mjs → chunk-MN27HJKW.mjs} +3 -3
- package/dist/{chunk-ZULSFSDG.mjs → chunk-MWX5B4DP.mjs} +3 -3
- package/dist/{chunk-FCCCG5Z7.mjs → chunk-MXXC4U3D.mjs} +2 -2
- package/dist/{chunk-5RDMODGV.mjs → chunk-N7LMNP4W.mjs} +2 -2
- package/dist/{chunk-YY7K5CXX.js → chunk-OHJISVGC.js} +5 -5
- package/dist/{chunk-YY7K5CXX.js.map → chunk-OHJISVGC.js.map} +1 -1
- package/dist/{chunk-EM4MQEWV.mjs → chunk-SN3XOMF6.mjs} +45 -24
- package/dist/chunk-SN3XOMF6.mjs.map +1 -0
- package/dist/{chunk-BE7JDL64.js → chunk-TKOFGRU4.js} +11 -11
- package/dist/{chunk-BE7JDL64.js.map → chunk-TKOFGRU4.js.map} +1 -1
- package/dist/{chunk-EG6NVPP2.js → chunk-UVZD7GHG.js} +44 -3
- package/dist/chunk-UVZD7GHG.js.map +1 -0
- package/dist/{chunk-6EZ3QE5N.js → chunk-Y3YYIJYG.js} +3 -3
- package/dist/{chunk-6EZ3QE5N.js.map → chunk-Y3YYIJYG.js.map} +1 -1
- package/dist/{chunk-OYJRR3G2.js → chunk-ZMXNPYFS.js} +25 -20
- package/dist/chunk-ZMXNPYFS.js.map +1 -0
- package/dist/components/AdminManagerBase.js +5 -5
- package/dist/components/AdminManagerBase.mjs +4 -4
- package/dist/components/AdminShell.d.mts +1 -1
- package/dist/components/AdminShell.d.ts +1 -1
- package/dist/components/AdminShell.js +4 -4
- package/dist/components/AdminShell.mjs +3 -3
- package/dist/components/index.d.mts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +8 -8
- package/dist/components/index.mjs +7 -7
- package/dist/hooks/index.js +5 -5
- package/dist/hooks/index.mjs +4 -4
- package/dist/hooks/useImageDropZone.js +4 -4
- package/dist/hooks/useImageDropZone.mjs +3 -3
- package/dist/{index-00a40-FQ.d.ts → index-Cce8FHtI.d.mts} +38 -1
- package/dist/{index-00a40-FQ.d.mts → index-Cce8FHtI.d.ts} +38 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +19 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -12
- package/dist/infrastructure/index.js +3 -3
- package/dist/infrastructure/index.mjs +2 -2
- package/dist/infrastructure/middleware/index.js +3 -3
- package/dist/infrastructure/middleware/index.mjs +2 -2
- package/dist/infrastructure/middleware/wrappers.js +3 -3
- package/dist/infrastructure/middleware/wrappers.mjs +2 -2
- package/dist/services/index.js +5 -5
- package/dist/services/index.mjs +4 -4
- package/dist/utils/admin-fetch.js +3 -3
- package/dist/utils/admin-fetch.mjs +2 -2
- package/dist/utils/html-sanitizer.js +3 -3
- package/dist/utils/html-sanitizer.mjs +2 -2
- package/dist/utils/index.d.mts +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +13 -7
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +12 -6
- package/dist/utils/jwt.js +3 -3
- package/dist/utils/jwt.mjs +2 -2
- package/dist/utils/r2-helpers.js +4 -4
- package/dist/utils/r2-helpers.mjs +3 -3
- package/dist/utils/r2-storage.js +3 -3
- package/dist/utils/r2-storage.mjs +2 -2
- package/package.json +4 -4
- package/dist/chunk-4W3X7OKF.js.map +0 -1
- package/dist/chunk-EG6NVPP2.js.map +0 -1
- package/dist/chunk-EM4MQEWV.mjs.map +0 -1
- package/dist/chunk-JMWXVXK5.js.map +0 -1
- package/dist/chunk-LDFE33ML.mjs.map +0 -1
- package/dist/chunk-OYJRR3G2.js.map +0 -1
- /package/dist/{chunk-T7EVFD4G.mjs.map → chunk-47DPXAO6.mjs.map} +0 -0
- /package/dist/{chunk-OBNALAMG.mjs.map → chunk-BG4C5KZO.mjs.map} +0 -0
- /package/dist/{chunk-LF5LOI7K.mjs.map → chunk-FCWUNCGA.mjs.map} +0 -0
- /package/dist/{chunk-YEQFKOWD.mjs.map → chunk-GQJNLE34.mjs.map} +0 -0
- /package/dist/{chunk-FEPGJ7WN.mjs.map → chunk-MN27HJKW.mjs.map} +0 -0
- /package/dist/{chunk-ZULSFSDG.mjs.map → chunk-MWX5B4DP.mjs.map} +0 -0
- /package/dist/{chunk-FCCCG5Z7.mjs.map → chunk-MXXC4U3D.mjs.map} +0 -0
- /package/dist/{chunk-5RDMODGV.mjs.map → chunk-N7LMNP4W.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/chunk-ZMXNPYFS.js","../src/utils/html-sanitizer.ts"],"names":[],"mappings":"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","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/chunk-ZMXNPYFS.js","sourcesContent":[null,"/**\n * 서버사이드 HTML 새니타이저 (spec.md §4.6 / Sprint 1 S1).\n *\n * 위험한 요소(script, iframe, object 등)와 이벤트 핸들러 속성을 제거하면서\n * 블록 에디터가 사용하는 안전한 HTML 구조를 보존한다.\n *\n * - 1차(기본): `isomorphic-dompurify` (실제 jsdom+DOMPurify DOM/parser\n * allowlist 새니타이저 — 손수 만든 regex 가 아님). 동적으로 로드한다.\n * - fallback: regex 기반 새니타이저는 *방어 심층(defense-in-depth)* 으로만\n * 남겨둔다 (optional dep 미설치 시). 더 이상 1차 경로가 아니다.\n * - `createSanitizer(config)` 로 신뢰 iframe origin 을 주입할 수 있다.\n *\n * `sanitizeHtmlContent` 는 하위 호환을 위해 기본 안전 설정으로 동작한다\n * (I1 — 동일 이름, 동일 `string|null|undefined → string|null` 시그니처).\n * 기본 신뢰 iframe origin 은 §5 config boundary 를 통해 consumer 가\n * override 할 수 있고, 미설정 시 현재 YouTube/Vimeo 집합이 그대로 쓰인다\n * (unconfigured 동작 불변 — I3 보호).\n *\n * `../../withwiz-blog-core/src/utils/html-sanitizer.ts` 와 *메커니즘 동일*\n * (`createSanitizer` factory + `tryLoadDomPurify()` 동적 require +\n * `uponSanitizeElement` iframe-origin hook + regex defense-in-depth fallback).\n */\n\nimport { resolveTrustedIframeOrigins } from '../config';\n\n// ── 정규식 패턴 (defense-in-depth fallback 전용) ──\n\n/** 항상 제거할 태그 (내용 포함) */\nconst STRIP_TAGS_WITH_CONTENT =\n /(<\\s*\\/?\\s*(script|object|embed|applet|form|input|textarea|select|button)\\b[^>]*>)/gi;\n\n/** 신뢰되지 않는 iframe 매칭 */\nconst UNTRUSTED_IFRAME = /<\\s*iframe\\b[^>]*>[\\s\\S]*?<\\s*\\/\\s*iframe\\s*>/gi;\n\n/** script/style 태그 사이 콘텐츠 */\nconst STRIP_TAG_CONTENT = /<\\s*(script|style)\\b[^>]*>[\\s\\S]*?<\\s*\\/\\s*\\1\\s*>/gi;\n\n/** 이벤트 핸들러 속성 (onclick, onerror, onload 등) */\nconst EVENT_HANDLER_ATTRS = /\\s+on\\w+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s>]*)/gi;\n\n/** 위험한 URL 프로토콜 (href/src 속성 내) */\nconst DANGEROUS_PROTOCOL =\n /(href|src|action)\\s*=\\s*[\"']\\s*(javascript|vbscript|data\\s*:(?!image\\/))[^\"']*[\"']/gi;\n\n// ── 설정 인터페이스 ──\n\n/** 새니타이저 설정 */\nexport interface SanitizerConfig {\n /**\n * 신뢰할 수 있는 iframe origin 목록 (prefix 매칭).\n * 미지정 시 §5 config boundary 의 기본값(YouTube/Vimeo) 사용.\n */\n trustedIframeOrigins?: readonly string[];\n /** DOMPurify 사용 시 허용할 태그 화이트리스트. */\n allowedTags?: string[];\n /** DOMPurify 사용 시 허용할 속성 화이트리스트. */\n allowedAttributes?: Record<string, string[]>;\n}\n\n// ── DOMPurify 동적 로딩 (선택적 / 실제 사용되는 1차 경로) ──\n\ntype DOMPurifyLike = {\n sanitize: (dirty: string, options?: Record<string, unknown>) => string;\n};\n\nlet cachedDomPurify: DOMPurifyLike | null | undefined;\n\n/**\n * 선택적 의존성 `isomorphic-dompurify` (실제 DOM allowlist 새니타이저) 를\n * 동기적으로 로드한다. 설치되지 않았거나 로드 실패 시에만 null 을 반환하고,\n * 호출자는 regex defense-in-depth fallback 을 쓴다.\n */\nfunction tryLoadDomPurify(): DOMPurifyLike | null {\n if (cachedDomPurify !== undefined) return cachedDomPurify;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const mod = require('isomorphic-dompurify') as unknown;\n const candidate =\n (mod as { default?: DOMPurifyLike }).default ?? (mod as DOMPurifyLike);\n if (candidate && typeof candidate.sanitize === 'function') {\n cachedDomPurify = candidate;\n return candidate;\n }\n } catch {\n // 모듈 미설치 — regex fallback 사용\n }\n cachedDomPurify = null;\n return null;\n}\n\n// ── 정규식 기반 새니타이저 (defense-in-depth fallback) ──\n\nfunction regexSanitize(html: string, trustedOrigins: readonly string[]): string {\n let result = html;\n\n // 1. script/style 태그 사이 콘텐츠 제거\n result = result.replace(STRIP_TAG_CONTENT, '');\n\n // 2. 위험한 태그 제거\n result = result.replace(STRIP_TAGS_WITH_CONTENT, '');\n\n // 2b. 신뢰되지 않는 iframe 제거 (신뢰 origin 유지)\n result = result.replace(UNTRUSTED_IFRAME, (match) => {\n const srcMatch = match.match(/\\bsrc\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (srcMatch) {\n const src = srcMatch[1].trim();\n if (trustedOrigins.some((origin) => src.startsWith(origin))) {\n return match;\n }\n }\n return '';\n });\n\n // 3. 이벤트 핸들러 속성 제거\n result = result.replace(EVENT_HANDLER_ATTRS, '');\n\n // 4. 위험한 URL 프로토콜 무력화\n result = result.replace(DANGEROUS_PROTOCOL, '$1=\"\"');\n\n return result;\n}\n\n// ── DOMPurify 기반 새니타이저 (1차 경로) ──\n\nfunction dompurifySanitize(\n html: string,\n purify: DOMPurifyLike,\n trustedOrigins: readonly string[],\n config: SanitizerConfig,\n): string {\n const options: Record<string, unknown> = {\n // iframe 은 hook 에서 origin 검증 후 허용\n ADD_TAGS: ['iframe'],\n ADD_ATTR: ['allowfullscreen', 'frameborder', 'allow'],\n FORBID_TAGS: [\n 'script',\n 'object',\n 'embed',\n 'applet',\n 'form',\n 'input',\n 'textarea',\n 'select',\n 'button',\n 'style',\n ],\n FORBID_ATTR: [\n 'onerror',\n 'onload',\n 'onclick',\n 'onmouseover',\n 'onfocus',\n 'onblur',\n ],\n };\n\n if (config.allowedTags) options.ALLOWED_TAGS = config.allowedTags;\n if (config.allowedAttributes) {\n const flat = new Set<string>();\n for (const attrs of Object.values(config.allowedAttributes)) {\n for (const a of attrs) flat.add(a);\n }\n options.ALLOWED_ATTR = Array.from(flat);\n }\n\n ensureIframeHook(purify);\n // sanitize 는 동기이므로 호출 동안만 활성 origin 을 노출한다.\n activeTrustedOrigins = trustedOrigins;\n try {\n return purify.sanitize(html, options);\n } finally {\n activeTrustedOrigins = null;\n }\n}\n\ntype DOMPurifyWithHooks = DOMPurifyLike & {\n addHook?: (hook: string, cb: (node: Element) => void) => void;\n};\n\n/**\n * 현재 sanitize 호출이 신뢰하는 iframe origin. 호출 밖(null)에서는 훅이\n * 아무것도 하지 않는다 — consumer 가 같은 DOMPurify 인스턴스를 직접 쓸 때\n * 우리 정책이 끼어들지 않도록.\n */\nlet activeTrustedOrigins: readonly string[] | null = null;\n\n/** 인스턴스별로 훅을 1회만 등록했는지 추적. */\nconst hookedInstances = new WeakSet<object>();\n\n/**\n * iframe origin 검증 훅을 인스턴스당 한 번만 등록한다.\n *\n * 이전 구현은 호출마다 addHook/removeHook 을 반복했는데, DOMPurify 의\n * `removeHook('uponSanitizeElement')` 는 *같은 종류의 훅을 모두* 제거하므로\n * consumer 가 공유 인스턴스에 등록한 훅까지 지워 버렸다. 이제 우리 훅은\n * 한 번 등록된 뒤 그대로 남고, consumer 훅도 건드리지 않는다.\n */\nfunction ensureIframeHook(purify: DOMPurifyLike): void {\n const p = purify as DOMPurifyWithHooks;\n if (typeof p.addHook !== 'function') return;\n if (hookedInstances.has(p)) return;\n hookedInstances.add(p);\n p.addHook('uponSanitizeElement', (node) => {\n const origins = activeTrustedOrigins;\n if (!origins) return;\n if (node.nodeName && node.nodeName.toLowerCase() === 'iframe') {\n const src = (node as Element).getAttribute?.('src') ?? '';\n const trusted = origins.some((origin) => src.startsWith(origin));\n if (!trusted) {\n (node as Element).remove?.();\n }\n }\n });\n}\n\n// ── Public API ──\n\n/**\n * 새니타이저 팩토리.\n *\n * DOMPurify(isomorphic-dompurify) 가 설치되어 있으면 그것을 *1차* 로 사용하고,\n * 없을 때만 regex defense-in-depth fallback 으로 동작한다.\n *\n * @example\n * const sanitize = createSanitizer({\n * trustedIframeOrigins: ['https://www.youtube.com/', 'https://www.loom.com/'],\n * });\n * const safe = sanitize(userHtml);\n */\nexport function createSanitizer(\n config: SanitizerConfig = {},\n): (html: string | null | undefined) => string | null {\n return function sanitize(html: string | null | undefined): string | null {\n if (!html) return html as string | null;\n // 신뢰 origin 은 point-of-use 에서 §5 boundary 를 통해 해석한다\n // (lazy — import 시점에 config 가 없어도 throw 하지 않음).\n const trustedOrigins =\n config.trustedIframeOrigins ?? resolveTrustedIframeOrigins();\n const purify = tryLoadDomPurify();\n if (purify) {\n return dompurifySanitize(html, purify, trustedOrigins, config);\n }\n return regexSanitize(html, trustedOrigins);\n };\n}\n\n/**\n * 리치 HTML 콘텐츠에서 위험한 요소와 속성을 제거한다.\n * 기본 안전 설정으로 동작한다 (하위 호환, I1). 호스트별 신뢰 origin 확장은\n * `createSanitizer({ trustedIframeOrigins: [...] })` 또는 §5\n * `setCmsConfig({ sanitizer: { trustedIframeOrigins } })` 로 한다.\n */\nexport function sanitizeHtmlContent(\n html: string | null | undefined,\n): string | null {\n return defaultSanitize(html);\n}\n\n/** 모듈 로드 시점에 1회 만들어지는 기본 새니타이저 (실행은 lazy). */\nconst defaultSanitize = createSanitizer();\n"]}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../chunk-
|
|
7
|
-
require('../chunk-
|
|
8
|
-
require('../chunk-
|
|
5
|
+
var _chunkEPVV6655js = require('../chunk-EPVV6655.js');
|
|
6
|
+
require('../chunk-2VHNZWH2.js');
|
|
7
|
+
require('../chunk-J32BTYJZ.js');
|
|
8
|
+
require('../chunk-UVZD7GHG.js');
|
|
9
9
|
require('../chunk-DGUM43GV.js');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
exports.default =
|
|
12
|
+
exports.default = _chunkEPVV6655js.AdminManagerBase;
|
|
13
13
|
//# sourceMappingURL=AdminManagerBase.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
AdminManagerBase
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-MWX5B4DP.mjs";
|
|
5
|
+
import "../chunk-MXXC4U3D.mjs";
|
|
6
|
+
import "../chunk-47DPXAO6.mjs";
|
|
7
|
+
import "../chunk-3UXX27N5.mjs";
|
|
8
8
|
import "../chunk-BJTO5JO5.mjs";
|
|
9
9
|
export {
|
|
10
10
|
AdminManagerBase as default
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../chunk-
|
|
7
|
-
require('../chunk-
|
|
5
|
+
var _chunkJPIQU2C4js = require('../chunk-JPIQU2C4.js');
|
|
6
|
+
require('../chunk-J32BTYJZ.js');
|
|
7
|
+
require('../chunk-UVZD7GHG.js');
|
|
8
8
|
require('../chunk-DGUM43GV.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.default =
|
|
11
|
+
exports.default = _chunkJPIQU2C4js.AdminShell;
|
|
12
12
|
//# sourceMappingURL=AdminShell.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
AdminShell
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-MN27HJKW.mjs";
|
|
5
|
+
import "../chunk-47DPXAO6.mjs";
|
|
6
|
+
import "../chunk-3UXX27N5.mjs";
|
|
7
7
|
import "../chunk-BJTO5JO5.mjs";
|
|
8
8
|
export {
|
|
9
9
|
AdminShell as default
|
|
@@ -5,7 +5,7 @@ export { AdminManagerConfig, DetailPreviewSlotProps, EditFormSlotProps, FilterSl
|
|
|
5
5
|
export { default as ToggleSwitch } from './ToggleSwitch.mjs';
|
|
6
6
|
export { ResizableImage } from './ResizableImage.mjs';
|
|
7
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
8
|
-
import '../index-
|
|
8
|
+
import '../index-Cce8FHtI.mjs';
|
|
9
9
|
import 'react';
|
|
10
10
|
import '@tiptap/core';
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ export { AdminManagerConfig, DetailPreviewSlotProps, EditFormSlotProps, FilterSl
|
|
|
5
5
|
export { default as ToggleSwitch } from './ToggleSwitch.js';
|
|
6
6
|
export { ResizableImage } from './ResizableImage.js';
|
|
7
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
8
|
-
import '../index-
|
|
8
|
+
import '../index-Cce8FHtI.js';
|
|
9
9
|
import 'react';
|
|
10
10
|
import '@tiptap/core';
|
|
11
11
|
|
package/dist/components/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkY3YYIJYGjs = require('../chunk-Y3YYIJYG.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkEPVV6655js = require('../chunk-EPVV6655.js');
|
|
8
8
|
require('../chunk-D2VDTRXO.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkJPIQU2C4js = require('../chunk-JPIQU2C4.js');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
var _chunkMUHFEEYWjs = require('../chunk-MUHFEEYW.js');
|
|
@@ -18,11 +18,11 @@ var _chunkZFORODOXjs = require('../chunk-ZFORODOX.js');
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
var _chunkVZZ3RU3Qjs = require('../chunk-VZZ3RU3Q.js');
|
|
21
|
-
require('../chunk-
|
|
22
|
-
require('../chunk-
|
|
21
|
+
require('../chunk-2VHNZWH2.js');
|
|
22
|
+
require('../chunk-OHJISVGC.js');
|
|
23
23
|
require('../chunk-S7GOXCRM.js');
|
|
24
|
-
require('../chunk-
|
|
25
|
-
require('../chunk-
|
|
24
|
+
require('../chunk-J32BTYJZ.js');
|
|
25
|
+
require('../chunk-UVZD7GHG.js');
|
|
26
26
|
require('../chunk-DGUM43GV.js');
|
|
27
27
|
|
|
28
28
|
|
|
@@ -31,5 +31,5 @@ require('../chunk-DGUM43GV.js');
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
exports.AdminManagerBase =
|
|
34
|
+
exports.AdminManagerBase = _chunkEPVV6655js.AdminManagerBase; exports.AdminShell = _chunkJPIQU2C4js.AdminShell; exports.ImageDropUpload = _chunkY3YYIJYGjs.ImageDropUpload; exports.JsonLd = _chunkMUHFEEYWjs.JsonLd; exports.ResizableImage = _chunkZFORODOXjs.ResizableImage; exports.ToggleSwitch = _chunkVZZ3RU3Qjs.ToggleSwitch;
|
|
35
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
ImageDropUpload
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-BG4C5KZO.mjs";
|
|
5
5
|
import {
|
|
6
6
|
AdminManagerBase
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-MWX5B4DP.mjs";
|
|
8
8
|
import "../chunk-6ES4W2DL.mjs";
|
|
9
9
|
import {
|
|
10
10
|
AdminShell
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-MN27HJKW.mjs";
|
|
12
12
|
import {
|
|
13
13
|
JsonLd
|
|
14
14
|
} from "../chunk-3Y2TQCHU.mjs";
|
|
@@ -18,11 +18,11 @@ import {
|
|
|
18
18
|
import {
|
|
19
19
|
ToggleSwitch
|
|
20
20
|
} from "../chunk-SMV5D5LO.mjs";
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-MXXC4U3D.mjs";
|
|
22
|
+
import "../chunk-FCWUNCGA.mjs";
|
|
23
23
|
import "../chunk-J5N76ASB.mjs";
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-47DPXAO6.mjs";
|
|
25
|
+
import "../chunk-3UXX27N5.mjs";
|
|
26
26
|
import "../chunk-BJTO5JO5.mjs";
|
|
27
27
|
export {
|
|
28
28
|
AdminManagerBase,
|
package/dist/hooks/index.js
CHANGED
|
@@ -7,13 +7,13 @@ var _chunkU6PVJKTBjs = require('../chunk-U6PVJKTB.js');
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunk2VHNZWH2js = require('../chunk-2VHNZWH2.js');
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkOHJISVGCjs = require('../chunk-OHJISVGC.js');
|
|
14
14
|
require('../chunk-S7GOXCRM.js');
|
|
15
|
-
require('../chunk-
|
|
16
|
-
require('../chunk-
|
|
15
|
+
require('../chunk-J32BTYJZ.js');
|
|
16
|
+
require('../chunk-UVZD7GHG.js');
|
|
17
17
|
require('../chunk-DGUM43GV.js');
|
|
18
18
|
|
|
19
19
|
|
|
@@ -21,5 +21,5 @@ require('../chunk-DGUM43GV.js');
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
exports.useAdminForm =
|
|
24
|
+
exports.useAdminForm = _chunk2VHNZWH2js.useAdminForm; exports.useAdminList = _chunk2VHNZWH2js.useAdminList; exports.useImageDropZone = _chunkOHJISVGCjs.useImageDropZone; exports.useScrollReveal = _chunkU6PVJKTBjs.useScrollReveal; exports.useScrollRevealAll = _chunkU6PVJKTBjs.useScrollRevealAll;
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.mjs
CHANGED
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
useAdminForm,
|
|
9
9
|
useAdminList
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-MXXC4U3D.mjs";
|
|
11
11
|
import {
|
|
12
12
|
useImageDropZone
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-FCWUNCGA.mjs";
|
|
14
14
|
import "../chunk-J5N76ASB.mjs";
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-47DPXAO6.mjs";
|
|
16
|
+
import "../chunk-3UXX27N5.mjs";
|
|
17
17
|
import "../chunk-BJTO5JO5.mjs";
|
|
18
18
|
export {
|
|
19
19
|
useAdminForm,
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkOHJISVGCjs = require('../chunk-OHJISVGC.js');
|
|
6
6
|
require('../chunk-S7GOXCRM.js');
|
|
7
|
-
require('../chunk-
|
|
8
|
-
require('../chunk-
|
|
7
|
+
require('../chunk-J32BTYJZ.js');
|
|
8
|
+
require('../chunk-UVZD7GHG.js');
|
|
9
9
|
require('../chunk-DGUM43GV.js');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
exports.useImageDropZone =
|
|
12
|
+
exports.useImageDropZone = _chunkOHJISVGCjs.useImageDropZone;
|
|
13
13
|
//# sourceMappingURL=useImageDropZone.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useImageDropZone
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-FCWUNCGA.mjs";
|
|
5
5
|
import "../chunk-J5N76ASB.mjs";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-47DPXAO6.mjs";
|
|
7
|
+
import "../chunk-3UXX27N5.mjs";
|
|
8
8
|
import "../chunk-BJTO5JO5.mjs";
|
|
9
9
|
export {
|
|
10
10
|
useImageDropZone
|
|
@@ -132,5 +132,42 @@ declare function setCmsConfig(config: CmsConfig): void;
|
|
|
132
132
|
declare function resetCmsConfig(): void;
|
|
133
133
|
/** 현재 병합된 raw 설정 (디버깅/테스트 용). */
|
|
134
134
|
declare function getCmsConfig(): CmsConfig;
|
|
135
|
+
/**
|
|
136
|
+
* 미주입 시 사용되는 고정 identity. 모든 비로그인 요청이 이 하나의 버킷을
|
|
137
|
+
* 공유하므로, 이 값이 실제 rate-limit 키로 쓰이면 한 클라이언트가 전체
|
|
138
|
+
* 사용자를 잠글 수 있다(self-DoS). 그래서 `resolveRateLimitEnabled` 는
|
|
139
|
+
* 추출기가 주입되지 않은 동안 rate-limit 자체를 비활성화한다(아래 참조).
|
|
140
|
+
*/
|
|
141
|
+
declare const SHARED_ANON_IDENTITY = "cms-kit:shared-anon";
|
|
142
|
+
/** identityExtractor 주입 여부. */
|
|
143
|
+
declare function hasIdentityExtractor(): boolean;
|
|
144
|
+
/** `createForwardedIdentityExtractor` 옵션 */
|
|
145
|
+
interface ForwardedIdentityOptions {
|
|
146
|
+
/**
|
|
147
|
+
* 요청이 거치는 신뢰 프록시(hop) 수. `x-forwarded-for` 는 각 프록시가 값을
|
|
148
|
+
* 뒤에 덧붙이므로, 마지막 N 번째 값이 첫 신뢰 프록시가 본 클라이언트 주소다.
|
|
149
|
+
* 기본 1 (단일 리버스 프록시/로드밸런서).
|
|
150
|
+
*/
|
|
151
|
+
trustedHops?: number;
|
|
152
|
+
/**
|
|
153
|
+
* `x-forwarded-for` 가 없을 때 순서대로 확인할 헤더 이름 목록.
|
|
154
|
+
* 기본 `['x-real-ip']`. 프록시가 덮어쓰는 헤더만 지정해야 한다.
|
|
155
|
+
*/
|
|
156
|
+
fallbackHeaders?: readonly string[];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 신뢰 프록시 수를 아는 consumer 용 identity 추출기 팩토리.
|
|
160
|
+
*
|
|
161
|
+
* `x-forwarded-for` 의 값들 중 클라이언트가 조작할 수 없는 위치(뒤에서
|
|
162
|
+
* `trustedHops` 번째)를 사용한다. 값이 부족하면(프록시를 거치지 않은 직접
|
|
163
|
+
* 요청 등) 마지막 값을, 헤더가 전혀 없으면 fallback 헤더를, 그것도 없으면
|
|
164
|
+
* 고정 식별자를 돌려준다.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* setCmsConfig({
|
|
168
|
+
* rateLimit: { identityExtractor: createForwardedIdentityExtractor({ trustedHops: 1 }) },
|
|
169
|
+
* });
|
|
170
|
+
*/
|
|
171
|
+
declare function createForwardedIdentityExtractor(options?: ForwardedIdentityOptions): CmsIdentityExtractor;
|
|
135
172
|
|
|
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,
|
|
173
|
+
export { type CmsBrandConfig as C, type ForwardedIdentityOptions as F, JWT_SECRET_MIN_LENGTH as J, SHARED_ANON_IDENTITY as S, 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, createForwardedIdentityExtractor as j, getCmsConfig as k, hasIdentityExtractor as l, resetCmsConfig as r, setCmsConfig as s };
|
|
@@ -132,5 +132,42 @@ declare function setCmsConfig(config: CmsConfig): void;
|
|
|
132
132
|
declare function resetCmsConfig(): void;
|
|
133
133
|
/** 현재 병합된 raw 설정 (디버깅/테스트 용). */
|
|
134
134
|
declare function getCmsConfig(): CmsConfig;
|
|
135
|
+
/**
|
|
136
|
+
* 미주입 시 사용되는 고정 identity. 모든 비로그인 요청이 이 하나의 버킷을
|
|
137
|
+
* 공유하므로, 이 값이 실제 rate-limit 키로 쓰이면 한 클라이언트가 전체
|
|
138
|
+
* 사용자를 잠글 수 있다(self-DoS). 그래서 `resolveRateLimitEnabled` 는
|
|
139
|
+
* 추출기가 주입되지 않은 동안 rate-limit 자체를 비활성화한다(아래 참조).
|
|
140
|
+
*/
|
|
141
|
+
declare const SHARED_ANON_IDENTITY = "cms-kit:shared-anon";
|
|
142
|
+
/** identityExtractor 주입 여부. */
|
|
143
|
+
declare function hasIdentityExtractor(): boolean;
|
|
144
|
+
/** `createForwardedIdentityExtractor` 옵션 */
|
|
145
|
+
interface ForwardedIdentityOptions {
|
|
146
|
+
/**
|
|
147
|
+
* 요청이 거치는 신뢰 프록시(hop) 수. `x-forwarded-for` 는 각 프록시가 값을
|
|
148
|
+
* 뒤에 덧붙이므로, 마지막 N 번째 값이 첫 신뢰 프록시가 본 클라이언트 주소다.
|
|
149
|
+
* 기본 1 (단일 리버스 프록시/로드밸런서).
|
|
150
|
+
*/
|
|
151
|
+
trustedHops?: number;
|
|
152
|
+
/**
|
|
153
|
+
* `x-forwarded-for` 가 없을 때 순서대로 확인할 헤더 이름 목록.
|
|
154
|
+
* 기본 `['x-real-ip']`. 프록시가 덮어쓰는 헤더만 지정해야 한다.
|
|
155
|
+
*/
|
|
156
|
+
fallbackHeaders?: readonly string[];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 신뢰 프록시 수를 아는 consumer 용 identity 추출기 팩토리.
|
|
160
|
+
*
|
|
161
|
+
* `x-forwarded-for` 의 값들 중 클라이언트가 조작할 수 없는 위치(뒤에서
|
|
162
|
+
* `trustedHops` 번째)를 사용한다. 값이 부족하면(프록시를 거치지 않은 직접
|
|
163
|
+
* 요청 등) 마지막 값을, 헤더가 전혀 없으면 fallback 헤더를, 그것도 없으면
|
|
164
|
+
* 고정 식별자를 돌려준다.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* setCmsConfig({
|
|
168
|
+
* rateLimit: { identityExtractor: createForwardedIdentityExtractor({ trustedHops: 1 }) },
|
|
169
|
+
* });
|
|
170
|
+
*/
|
|
171
|
+
declare function createForwardedIdentityExtractor(options?: ForwardedIdentityOptions): CmsIdentityExtractor;
|
|
135
172
|
|
|
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,
|
|
173
|
+
export { type CmsBrandConfig as C, type ForwardedIdentityOptions as F, JWT_SECRET_MIN_LENGTH as J, SHARED_ANON_IDENTITY as S, 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, createForwardedIdentityExtractor as j, getCmsConfig as k, hasIdentityExtractor as l, resetCmsConfig as r, setCmsConfig as s };
|
package/dist/index.d.mts
CHANGED
|
@@ -23,7 +23,7 @@ export { collectR2Keys, deleteR2Keys, extractR2KeysFromHtml } from './utils/r2-h
|
|
|
23
23
|
export { IMAGE_VARIANT_SIZES, VariantSize, getVariantUrl } from './utils/image-variant-utils.mjs';
|
|
24
24
|
export { getJWTManager } from './utils/jwt.mjs';
|
|
25
25
|
export { adminFetch, getAuthHeaders, refreshAccessToken } from './utils/admin-fetch.mjs';
|
|
26
|
-
export { C as CmsBrandConfig, a as CmsConfig, b as CmsIdentityExtractor, c as CmsJwtConfig, d as CmsNavItem, e as CmsR2CredentialsConfig, f as CmsRateLimitConfig, g as CmsRouteConfig, h as CmsSanitizerConfig, i as CmsStorageConfig, J as JWT_SECRET_MIN_LENGTH, j as getCmsConfig, r as resetCmsConfig, s as setCmsConfig } from './index-
|
|
26
|
+
export { C as CmsBrandConfig, a as CmsConfig, b as CmsIdentityExtractor, c as CmsJwtConfig, d as CmsNavItem, e as CmsR2CredentialsConfig, f as CmsRateLimitConfig, g as CmsRouteConfig, h as CmsSanitizerConfig, i as CmsStorageConfig, F as ForwardedIdentityOptions, J as JWT_SECRET_MIN_LENGTH, S as SHARED_ANON_IDENTITY, j as createForwardedIdentityExtractor, k as getCmsConfig, l as hasIdentityExtractor, r as resetCmsConfig, s as setCmsConfig } from './index-Cce8FHtI.mjs';
|
|
27
27
|
export { optionalUrlSchema, slugSchema } from './validators/shared.mjs';
|
|
28
28
|
export { IApiContext, IUser, TApiHandler } from '@withwiz/toolkit/next/middleware/types';
|
|
29
29
|
import 'react/jsx-runtime';
|
package/dist/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { collectR2Keys, deleteR2Keys, extractR2KeysFromHtml } from './utils/r2-h
|
|
|
23
23
|
export { IMAGE_VARIANT_SIZES, VariantSize, getVariantUrl } from './utils/image-variant-utils.js';
|
|
24
24
|
export { getJWTManager } from './utils/jwt.js';
|
|
25
25
|
export { adminFetch, getAuthHeaders, refreshAccessToken } from './utils/admin-fetch.js';
|
|
26
|
-
export { C as CmsBrandConfig, a as CmsConfig, b as CmsIdentityExtractor, c as CmsJwtConfig, d as CmsNavItem, e as CmsR2CredentialsConfig, f as CmsRateLimitConfig, g as CmsRouteConfig, h as CmsSanitizerConfig, i as CmsStorageConfig, J as JWT_SECRET_MIN_LENGTH, j as getCmsConfig, r as resetCmsConfig, s as setCmsConfig } from './index-
|
|
26
|
+
export { C as CmsBrandConfig, a as CmsConfig, b as CmsIdentityExtractor, c as CmsJwtConfig, d as CmsNavItem, e as CmsR2CredentialsConfig, f as CmsRateLimitConfig, g as CmsRouteConfig, h as CmsSanitizerConfig, i as CmsStorageConfig, F as ForwardedIdentityOptions, J as JWT_SECRET_MIN_LENGTH, S as SHARED_ANON_IDENTITY, j as createForwardedIdentityExtractor, k as getCmsConfig, l as hasIdentityExtractor, r as resetCmsConfig, s as setCmsConfig } from './index-Cce8FHtI.js';
|
|
27
27
|
export { optionalUrlSchema, slugSchema } from './validators/shared.js';
|
|
28
28
|
export { IApiContext, IUser, TApiHandler } from '@withwiz/toolkit/next/middleware/types';
|
|
29
29
|
import 'react/jsx-runtime';
|
package/dist/index.js
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
var _chunk7SWW3ZINjs = require('./chunk-7SWW3ZIN.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkY3YYIJYGjs = require('./chunk-Y3YYIJYG.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkEPVV6655js = require('./chunk-EPVV6655.js');
|
|
12
12
|
require('./chunk-D2VDTRXO.js');
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkJPIQU2C4js = require('./chunk-JPIQU2C4.js');
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
var _chunkMUHFEEYWjs = require('./chunk-MUHFEEYW.js');
|
|
@@ -30,17 +30,17 @@ var _chunkU6PVJKTBjs = require('./chunk-U6PVJKTB.js');
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
var
|
|
33
|
+
var _chunk2VHNZWH2js = require('./chunk-2VHNZWH2.js');
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var _chunkOHJISVGCjs = require('./chunk-OHJISVGC.js');
|
|
37
37
|
require('./chunk-MUQYK5EO.js');
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
var
|
|
43
|
+
var _chunk25GMHPCWjs = require('./chunk-25GMHPCW.js');
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
|
|
@@ -62,7 +62,7 @@ var _chunkBHN2SRZCjs = require('./chunk-BHN2SRZC.js');
|
|
|
62
62
|
var _chunk2REYWBQ6js = require('./chunk-2REYWBQ6.js');
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
var
|
|
65
|
+
var _chunkHVB72GT3js = require('./chunk-HVB72GT3.js');
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
var _chunkR5GGIVD4js = require('./chunk-R5GGIVD4.js');
|
|
@@ -84,12 +84,12 @@ var _chunkS7GOXCRMjs = require('./chunk-S7GOXCRM.js');
|
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
var
|
|
87
|
+
var _chunkJ32BTYJZjs = require('./chunk-J32BTYJZ.js');
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
|
|
92
|
-
var
|
|
92
|
+
var _chunk5Z5XUR2Kjs = require('./chunk-5Z5XUR2K.js');
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
|
|
@@ -99,17 +99,20 @@ var _chunkHXVWBFCNjs = require('./chunk-HXVWBFCN.js');
|
|
|
99
99
|
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
var
|
|
102
|
+
var _chunkTKOFGRU4js = require('./chunk-TKOFGRU4.js');
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
|
|
106
|
-
var
|
|
106
|
+
var _chunkZMXNPYFSjs = require('./chunk-ZMXNPYFS.js');
|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
var _chunkUVZD7GHGjs = require('./chunk-UVZD7GHG.js');
|
|
113
116
|
require('./chunk-DGUM43GV.js');
|
|
114
117
|
|
|
115
118
|
|
|
@@ -165,5 +168,8 @@ require('./chunk-DGUM43GV.js');
|
|
|
165
168
|
|
|
166
169
|
|
|
167
170
|
|
|
168
|
-
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
exports.AdminManagerBase = _chunkEPVV6655js.AdminManagerBase; exports.AdminShell = _chunkJPIQU2C4js.AdminShell; exports.DEFAULT_LIMIT = _chunkPLVG7AW3js.DEFAULT_LIMIT; exports.DEFAULT_PAGE = _chunkPLVG7AW3js.DEFAULT_PAGE; exports.IMAGE_VARIANT_SIZES = _chunkHXVWBFCNjs.IMAGE_VARIANT_SIZES; exports.ImageDropUpload = _chunkY3YYIJYGjs.ImageDropUpload; exports.JWT_SECRET_MIN_LENGTH = _chunkUVZD7GHGjs.JWT_SECRET_MIN_LENGTH; exports.JsonLd = _chunkMUHFEEYWjs.JsonLd; exports.NextApiResponse = _chunkBHN2SRZCjs.NextApiResponse; exports.ResizableImage = _chunkZFORODOXjs.ResizableImage; exports.SHARED_ANON_IDENTITY = _chunkUVZD7GHGjs.SHARED_ANON_IDENTITY; exports.ToggleSwitch = _chunkVZZ3RU3Qjs.ToggleSwitch; exports.adminFetch = _chunkJ32BTYJZjs.adminFetch; exports.buildPaginatedResult = _chunkS6UUSM7Sjs.buildPaginatedResult; exports.cn = _chunkBHN2SRZCjs.cn; exports.collectR2Keys = _chunk5Z5XUR2Kjs.collectR2Keys; exports.createForwardedIdentityExtractor = _chunkUVZD7GHGjs.createForwardedIdentityExtractor; exports.createSanitizer = _chunkZMXNPYFSjs.createSanitizer; exports.deleteFromR2 = _chunkTKOFGRU4js.deleteFromR2; exports.deleteR2Keys = _chunk5Z5XUR2Kjs.deleteR2Keys; exports.extractR2KeysFromHtml = _chunk5Z5XUR2Kjs.extractR2KeysFromHtml; exports.formatDate = _chunkE5YUAOJIjs.formatDate; exports.formatDateTime = _chunkE5YUAOJIjs.formatDateTime; exports.generateImageVariants = _chunk2REYWBQ6js.generateImageVariants; exports.getAuthHeaders = _chunkJ32BTYJZjs.getAuthHeaders; exports.getCmsConfig = _chunkUVZD7GHGjs.getCmsConfig; exports.getJWTManager = _chunkHVB72GT3js.getJWTManager; exports.getRouteParam = _chunkR5GGIVD4js.getRouteParam; exports.getVariantUrl = _chunkHXVWBFCNjs.getVariantUrl; exports.hasIdentityExtractor = _chunkUVZD7GHGjs.hasIdentityExtractor; exports.isR2Enabled = _chunkTKOFGRU4js.isR2Enabled; exports.optionalUrlSchema = _chunk7SWW3ZINjs.optionalUrlSchema; exports.parseSortKey = _chunkDSORCGJKjs.parseSortKey; exports.parseSortParam = _chunkPLVG7AW3js.parseSortParam; exports.prisma = _chunkOLEYNPW6js.prisma; exports.refreshAccessToken = _chunkJ32BTYJZjs.refreshAccessToken; exports.resetCmsConfig = _chunkUVZD7GHGjs.resetCmsConfig; exports.resizeImageIfNeeded = _chunkS7GOXCRMjs.resizeImageIfNeeded; exports.sanitizeHtmlContent = _chunkZMXNPYFSjs.sanitizeHtmlContent; exports.setCmsConfig = _chunkUVZD7GHGjs.setCmsConfig; exports.slugSchema = _chunk7SWW3ZINjs.slugSchema; exports.toLocalDatetime = _chunkE5YUAOJIjs.toLocalDatetime; exports.uploadImageWithVariants = _chunkTKOFGRU4js.uploadImageWithVariants; exports.uploadToR2 = _chunkTKOFGRU4js.uploadToR2; exports.useAdminForm = _chunk2VHNZWH2js.useAdminForm; exports.useAdminList = _chunk2VHNZWH2js.useAdminList; exports.useImageDropZone = _chunkOHJISVGCjs.useImageDropZone; exports.useScrollReveal = _chunkU6PVJKTBjs.useScrollReveal; exports.useScrollRevealAll = _chunkU6PVJKTBjs.useScrollRevealAll; exports.validateAndParse = _chunkDSORCGJKjs.validateAndParse; exports.validateIds = _chunkDSORCGJKjs.validateIds; exports.validateImageSize = _chunkS7GOXCRMjs.validateImageSize; exports.withAdminApi = _chunk25GMHPCWjs.withAdminApi; exports.withAuthApi = _chunk25GMHPCWjs.withAuthApi; exports.withCustomApi = _chunk25GMHPCWjs.withCustomApi; exports.withPublicApi = _chunk25GMHPCWjs.withPublicApi;
|
|
169
175
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/index.js"],"names":[],"mappings":"AAAA,wGAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,
|
|
1
|
+
{"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/index.js"],"names":[],"mappings":"AAAA,wGAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,2tGAAC","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/index.js"}
|
package/dist/index.mjs
CHANGED
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
} from "./chunk-2SYUEQ6J.mjs";
|
|
6
6
|
import {
|
|
7
7
|
ImageDropUpload
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-BG4C5KZO.mjs";
|
|
9
9
|
import {
|
|
10
10
|
AdminManagerBase
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MWX5B4DP.mjs";
|
|
12
12
|
import "./chunk-6ES4W2DL.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AdminShell
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-MN27HJKW.mjs";
|
|
16
16
|
import {
|
|
17
17
|
JsonLd
|
|
18
18
|
} from "./chunk-3Y2TQCHU.mjs";
|
|
@@ -30,17 +30,17 @@ import {
|
|
|
30
30
|
import {
|
|
31
31
|
useAdminForm,
|
|
32
32
|
useAdminList
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-MXXC4U3D.mjs";
|
|
34
34
|
import {
|
|
35
35
|
useImageDropZone
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-FCWUNCGA.mjs";
|
|
37
37
|
import "./chunk-AXR56AUD.mjs";
|
|
38
38
|
import {
|
|
39
39
|
withAdminApi,
|
|
40
40
|
withAuthApi,
|
|
41
41
|
withCustomApi,
|
|
42
42
|
withPublicApi
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-7F5YFG2W.mjs";
|
|
44
44
|
import {
|
|
45
45
|
DEFAULT_LIMIT,
|
|
46
46
|
DEFAULT_PAGE,
|
|
@@ -62,7 +62,7 @@ import {
|
|
|
62
62
|
} from "./chunk-3ILEMZAL.mjs";
|
|
63
63
|
import {
|
|
64
64
|
getJWTManager
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-N7LMNP4W.mjs";
|
|
66
66
|
import {
|
|
67
67
|
getRouteParam
|
|
68
68
|
} from "./chunk-TUQ2CVAK.mjs";
|
|
@@ -84,12 +84,12 @@ import {
|
|
|
84
84
|
adminFetch,
|
|
85
85
|
getAuthHeaders,
|
|
86
86
|
refreshAccessToken
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-47DPXAO6.mjs";
|
|
88
88
|
import {
|
|
89
89
|
collectR2Keys,
|
|
90
90
|
deleteR2Keys,
|
|
91
91
|
extractR2KeysFromHtml
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-SN3XOMF6.mjs";
|
|
93
93
|
import {
|
|
94
94
|
IMAGE_VARIANT_SIZES,
|
|
95
95
|
getVariantUrl
|
|
@@ -99,17 +99,20 @@ import {
|
|
|
99
99
|
isR2Enabled,
|
|
100
100
|
uploadImageWithVariants,
|
|
101
101
|
uploadToR2
|
|
102
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-GQJNLE34.mjs";
|
|
103
103
|
import {
|
|
104
104
|
createSanitizer,
|
|
105
105
|
sanitizeHtmlContent
|
|
106
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-A557FA2K.mjs";
|
|
107
107
|
import {
|
|
108
108
|
JWT_SECRET_MIN_LENGTH,
|
|
109
|
+
SHARED_ANON_IDENTITY,
|
|
110
|
+
createForwardedIdentityExtractor,
|
|
109
111
|
getCmsConfig,
|
|
112
|
+
hasIdentityExtractor,
|
|
110
113
|
resetCmsConfig,
|
|
111
114
|
setCmsConfig
|
|
112
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-3UXX27N5.mjs";
|
|
113
116
|
import "./chunk-BJTO5JO5.mjs";
|
|
114
117
|
export {
|
|
115
118
|
AdminManagerBase,
|
|
@@ -122,11 +125,13 @@ export {
|
|
|
122
125
|
JsonLd,
|
|
123
126
|
NextApiResponse,
|
|
124
127
|
ResizableImage,
|
|
128
|
+
SHARED_ANON_IDENTITY,
|
|
125
129
|
ToggleSwitch,
|
|
126
130
|
adminFetch,
|
|
127
131
|
buildPaginatedResult,
|
|
128
132
|
cn,
|
|
129
133
|
collectR2Keys,
|
|
134
|
+
createForwardedIdentityExtractor,
|
|
130
135
|
createSanitizer,
|
|
131
136
|
deleteFromR2,
|
|
132
137
|
deleteR2Keys,
|
|
@@ -139,6 +144,7 @@ export {
|
|
|
139
144
|
getJWTManager,
|
|
140
145
|
getRouteParam,
|
|
141
146
|
getVariantUrl,
|
|
147
|
+
hasIdentityExtractor,
|
|
142
148
|
isR2Enabled,
|
|
143
149
|
optionalUrlSchema,
|
|
144
150
|
parseSortKey,
|