@bwg-ui/core 1.1.23 → 1.1.25
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/chunks/AuthContext-CXng9fj0.cjs.map +1 -1
- package/dist/chunks/{AuthContext-Ei2P-z4d.js → AuthContext-DrEpBrpB.js} +7 -3
- package/dist/chunks/AuthContext-DrEpBrpB.js.map +1 -0
- package/dist/chunks/{BwgSwitch-CAI-kEaM.cjs → BwgSwitch-DOlc57wi.cjs} +2 -2
- package/dist/chunks/BwgSwitch-DOlc57wi.cjs.map +1 -0
- package/dist/chunks/{BwgSwitch-B79pseQM.js → BwgSwitch-D_scwi9_.js} +18 -18
- package/dist/chunks/BwgSwitch-D_scwi9_.js.map +1 -0
- package/dist/chunks/{BwgUploader-DaNV2URT.cjs → BwgUploader-CkXwkcUL.cjs} +2 -2
- package/dist/chunks/BwgUploader-CkXwkcUL.cjs.map +1 -0
- package/dist/chunks/{BwgUploader-BcVlE61B.js → BwgUploader-DBFF9BPF.js} +327 -327
- package/dist/chunks/BwgUploader-DBFF9BPF.js.map +1 -0
- package/dist/chunks/LoadingOverlay-DAZJF5wg.js.map +1 -1
- package/dist/chunks/LoadingOverlay-DcmKvoZA.cjs.map +1 -1
- package/dist/chunks/{SSOHandler-DiW4Ft9i.cjs → SSOHandler-BY6LXMLc.cjs} +32 -32
- package/dist/chunks/SSOHandler-BY6LXMLc.cjs.map +1 -0
- package/dist/chunks/{SSOHandler-CkPcSHIm.js → SSOHandler-CxvxEBaH.js} +1977 -1930
- package/dist/chunks/SSOHandler-CxvxEBaH.js.map +1 -0
- package/dist/chunks/ScreenProtectContext-3my4PHFa.js.map +1 -1
- package/dist/chunks/ScreenProtectContext-CVuXrJm6.cjs.map +1 -1
- package/dist/chunks/SearchBoxContext-DwFDOyYG.cjs.map +1 -1
- package/dist/chunks/{SearchBoxContext-BCvEYyFk.js → SearchBoxContext-gWM7FHIw.js} +3 -5
- package/dist/chunks/SearchBoxContext-gWM7FHIw.js.map +1 -0
- package/dist/chunks/ViewContainer-Bhq22_B3.cjs.map +1 -1
- package/dist/chunks/{ViewContainer-CjpJqoGG.js → ViewContainer-D9SKBnrn.js} +40 -28
- package/dist/chunks/ViewContainer-D9SKBnrn.js.map +1 -0
- package/dist/chunks/apiUtils-BZ6s0_NI.cjs.map +1 -1
- package/dist/chunks/{apiUtils-DxzLqPhU.js → apiUtils-DSwE62oG.js} +14 -5
- package/dist/chunks/apiUtils-DSwE62oG.js.map +1 -0
- package/dist/chunks/{codeStore-CfI4Wh5M.js → codeStore-vPj4Y0TK.js} +2 -2
- package/dist/chunks/{codeStore-CfI4Wh5M.js.map → codeStore-vPj4Y0TK.js.map} +1 -1
- package/dist/chunks/{core-bHd8azE6.js → core-Dl0PdDdT.js} +2 -2
- package/dist/chunks/{core-bHd8azE6.js.map → core-Dl0PdDdT.js.map} +1 -1
- package/dist/chunks/{enc-base64-BQYwLKgk.js → enc-base64-D7t4BoUA.js} +3 -3
- package/dist/chunks/{enc-base64-BQYwLKgk.js.map → enc-base64-D7t4BoUA.js.map} +1 -1
- package/dist/chunks/{favoriteStore-Cemc-26t.js → favoriteStore-Bh1FuZm9.js} +2 -2
- package/dist/chunks/{favoriteStore-Cemc-26t.js.map → favoriteStore-Bh1FuZm9.js.map} +1 -1
- package/dist/chunks/{popupStore-Bi6o78lP.js → popupStore-BRRmB4zH.js} +2 -2
- package/dist/chunks/{popupStore-Bi6o78lP.js.map → popupStore-BRRmB4zH.js.map} +1 -1
- package/dist/chunks/{sha256-BZfJs28k.js → sha256-C2-s1oZe.js} +3 -3
- package/dist/chunks/{sha256-BZfJs28k.js.map → sha256-C2-s1oZe.js.map} +1 -1
- package/dist/chunks/usePopup-D2JEuDrO.cjs.map +1 -1
- package/dist/chunks/{usePopup-BSqsnSz7.js → usePopup-DarKTbRC.js} +3 -3
- package/dist/chunks/usePopup-DarKTbRC.js.map +1 -0
- package/dist/components/common/BookmarkMngModal.d.ts +1 -1
- package/dist/components/common/BookmarkMngModal.d.ts.map +1 -1
- package/dist/components/common/BookmarkPopver.d.ts +2 -2
- package/dist/components/common/BookmarkPopver.d.ts.map +1 -1
- package/dist/components/common/BwgButtonGroup.d.ts +5 -5
- package/dist/components/common/BwgButtonGroup.d.ts.map +1 -1
- package/dist/components/common/BwgCmptArea.d.ts +7 -7
- package/dist/components/common/BwgCmptArea.d.ts.map +1 -1
- package/dist/components/common/BwgCol.d.ts +2 -1
- package/dist/components/common/BwgCol.d.ts.map +1 -1
- package/dist/components/common/BwgConfigProvider.d.ts +2 -2
- package/dist/components/common/BwgConfigProvider.d.ts.map +1 -1
- package/dist/components/common/BwgDetail.d.ts +2 -1
- package/dist/components/common/BwgDetail.d.ts.map +1 -1
- package/dist/components/common/BwgDraggable.d.ts +5 -5
- package/dist/components/common/BwgDraggable.d.ts.map +1 -1
- package/dist/components/common/BwgDrawer.d.ts +2 -1
- package/dist/components/common/BwgDrawer.d.ts.map +1 -1
- package/dist/components/common/BwgEditor.d.ts +5 -5
- package/dist/components/common/BwgEditor.d.ts.map +1 -1
- package/dist/components/common/BwgGrid.d.ts +8 -8
- package/dist/components/common/BwgGrid.d.ts.map +1 -1
- package/dist/components/common/BwgInfoArea.d.ts +4 -4
- package/dist/components/common/BwgInfoArea.d.ts.map +1 -1
- package/dist/components/common/BwgPopup.d.ts +3 -3
- package/dist/components/common/BwgPopup.d.ts.map +1 -1
- package/dist/components/common/BwgRow.d.ts +2 -1
- package/dist/components/common/BwgRow.d.ts.map +1 -1
- package/dist/components/common/BwgTitleBox.d.ts +5 -4
- package/dist/components/common/BwgTitleBox.d.ts.map +1 -1
- package/dist/components/common/BwgView.d.ts +4 -4
- package/dist/components/common/BwgView.d.ts.map +1 -1
- package/dist/components/common/ContentBox.d.ts +3 -3
- package/dist/components/common/ContentBox.d.ts.map +1 -1
- package/dist/components/common/ContentLayOut.d.ts +6 -5
- package/dist/components/common/ContentLayOut.d.ts.map +1 -1
- package/dist/components/common/GlobalConfigProvider.d.ts +2 -2
- package/dist/components/common/GlobalConfigProvider.d.ts.map +1 -1
- package/dist/components/common/QuickServiceToggle.d.ts +4 -4
- package/dist/components/common/QuickServiceToggle.d.ts.map +1 -1
- package/dist/components/common/SSOHandler.d.ts +2 -1
- package/dist/components/common/SSOHandler.d.ts.map +1 -1
- package/dist/components/common/SearchBox.d.ts +5 -4
- package/dist/components/common/SearchBox.d.ts.map +1 -1
- package/dist/components/common/index.cjs +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/core/BwgButton.d.ts +3 -2
- package/dist/components/core/BwgButton.d.ts.map +1 -1
- package/dist/components/core/BwgDatePicker.d.ts +3 -3
- package/dist/components/core/BwgDatePicker.d.ts.map +1 -1
- package/dist/components/core/BwgDownload.d.ts +2 -2
- package/dist/components/core/BwgDownload.d.ts.map +1 -1
- package/dist/components/core/BwgForm.d.ts +2 -1
- package/dist/components/core/BwgForm.d.ts.map +1 -1
- package/dist/components/core/BwgFormItem.d.ts +3 -3
- package/dist/components/core/BwgFormItem.d.ts.map +1 -1
- package/dist/components/core/BwgInput.d.ts +2 -2
- package/dist/components/core/BwgInput.d.ts.map +1 -1
- package/dist/components/core/BwgLargeUploader.d.ts +2 -2
- package/dist/components/core/BwgLargeUploader.d.ts.map +1 -1
- package/dist/components/core/BwgMaskedInput.d.ts +2 -2
- package/dist/components/core/BwgMaskedInput.d.ts.map +1 -1
- package/dist/components/core/BwgMaskedPicker.d.ts +2 -2
- package/dist/components/core/BwgMaskedPicker.d.ts.map +1 -1
- package/dist/components/core/BwgRangePicker.d.ts +3 -3
- package/dist/components/core/BwgRangePicker.d.ts.map +1 -1
- package/dist/components/core/BwgSearch.d.ts +1 -1
- package/dist/components/core/BwgSearch.d.ts.map +1 -1
- package/dist/components/core/BwgUploader.d.ts +2 -2
- package/dist/components/core/BwgUploader.d.ts.map +1 -1
- package/dist/components/core/index.cjs +1 -1
- package/dist/components/core/index.js +2 -2
- package/dist/components/layout/ErrorBound.d.ts +3 -3
- package/dist/components/layout/ErrorBound.d.ts.map +1 -1
- package/dist/components/layout/LoadingOverlay.d.ts +3 -2
- package/dist/components/layout/LoadingOverlay.d.ts.map +1 -1
- package/dist/components/layout/PrivateProtectedOverlay.d.ts +3 -2
- package/dist/components/layout/PrivateProtectedOverlay.d.ts.map +1 -1
- package/dist/components/layout/ProgressOverlay.d.ts +2 -2
- package/dist/components/layout/ProgressOverlay.d.ts.map +1 -1
- package/dist/components/layout/ViewContainer.d.ts +3 -3
- package/dist/components/layout/ViewContainer.d.ts.map +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/popup/MenuReport.d.ts +2 -2
- package/dist/components/popup/MenuReport.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +11 -11
- package/dist/provider/contexts/AuthContext.d.ts +3 -2
- package/dist/provider/contexts/AuthContext.d.ts.map +1 -1
- package/dist/provider/contexts/CommonCodeContext.d.ts +2 -2
- package/dist/provider/contexts/CommonCodeContext.d.ts.map +1 -1
- package/dist/provider/contexts/ScreenProtectContext.d.ts +5 -5
- package/dist/provider/contexts/ScreenProtectContext.d.ts.map +1 -1
- package/dist/provider/contexts/SearchBoxContext.d.ts +3 -3
- package/dist/provider/contexts/SearchBoxContext.d.ts.map +1 -1
- package/dist/provider/contexts/ServiceCodeContext.d.ts +2 -2
- package/dist/provider/contexts/ServiceCodeContext.d.ts.map +1 -1
- package/dist/provider/index.js +3 -3
- package/dist/stores/index.cjs.map +1 -1
- package/dist/stores/index.d.ts +0 -1
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +6 -6
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/menuViewStore.d.ts +6 -5
- package/dist/stores/menuViewStore.d.ts.map +1 -1
- package/dist/utils/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunks/AuthContext-Ei2P-z4d.js.map +0 -1
- package/dist/chunks/BwgSwitch-B79pseQM.js.map +0 -1
- package/dist/chunks/BwgSwitch-CAI-kEaM.cjs.map +0 -1
- package/dist/chunks/BwgUploader-BcVlE61B.js.map +0 -1
- package/dist/chunks/BwgUploader-DaNV2URT.cjs.map +0 -1
- package/dist/chunks/SSOHandler-CkPcSHIm.js.map +0 -1
- package/dist/chunks/SSOHandler-DiW4Ft9i.cjs.map +0 -1
- package/dist/chunks/SearchBoxContext-BCvEYyFk.js.map +0 -1
- package/dist/chunks/ViewContainer-CjpJqoGG.js.map +0 -1
- package/dist/chunks/apiUtils-DxzLqPhU.js.map +0 -1
- package/dist/chunks/usePopup-BSqsnSz7.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeStore-CfI4Wh5M.js","sources":["../../src/stores/codeStore.ts"],"sourcesContent":["import { create } from 'zustand';\r\nimport { persist } from 'zustand/middleware';\r\nimport { callService } from '../utils/apiUtils';\r\nimport { getServiceCode } from '../utils/serviceConfig';\r\n\r\n// 공통코드 관련 타입 정의\r\n\r\n// 서버 응답의 개별 코드 아이템 (실제 SCMSIGN00301 서비스 응답 구조)\r\nexport interface ServerCodeItem {\r\n cmmnCdGrp: string; // 그룹 코드\r\n cmmnCd: string; // 공통 코드\r\n cmmnCdNm: string; // 공통 코드명\r\n cmmnCdClr: string | null; // 공통 코드 컬러\r\n syscdYn: string; // 시스템 코드 여부\r\n sortOrd: string | null; // 정렬 순서\r\n enblYn: string; // 사용 여부\r\n}\r\n\r\n// 서버 응답의 개별 옵션 아이템 (실제 SCMSIGN00301 서비스 응답 구조)\r\nexport interface ServerOptionItem {\r\n cmmnCdGrp: string; // 그룹 코드\r\n cmmnCd: string; // 공통 코드\r\n cmmnCdClr: string | null; // 공통 코드 컬러\r\n optnCd: string; // 옵션 코드\r\n optnNm: string; // 옵션명\r\n syscdYn: string; // 시스템 코드 여부\r\n sortOrd: string | null; // 정렬 순서\r\n enblYn: string; // 사용 여부\r\n}\r\n\r\n// SCMSIGN00301 서비스 응답 구조\r\nexport interface ServerCommonCodeResponse {\r\n code: ServerCodeItem[]; // 공통코드 목록\r\n opt: ServerOptionItem[]; // 옵션 목록\r\n}\r\n\r\n// 클라이언트에서 사용할 코드 아이템 (실제 응답 구조 반영)\r\nexport interface CodeItem {\r\n codeValue: string; // 공통 코드 (cmmnCd)\r\n codeNm: string; // 공통 코드명 (cmmnCdNm)\r\n groupCode: string; // 그룹 코드 (cmmnCdGrp)\r\n commonCode: string; // 공통 코드 (cmmnCd)\r\n labelColor: string | null; // 라벨 컬러 (cmmnCdClr)\r\n systemCodeYn: string; // 시스템 코드 여부 (syscdYn)\r\n sortOrder: number; // 정렬 순서 (sortOrd)\r\n enabled: boolean; // 사용 여부 (enblYn === 'Y')\r\n options: Record<string, any> | null; // 옵션 (optnCd: optnNm 형태)\r\n originalData: ServerCodeItem; // 원본 데이터\r\n}\r\n\r\n// 코드 그룹 (그룹코드별로 정리된 상세코드들)\r\nexport interface CodeGroup {\r\n [codeValue: string]: CodeItem;\r\n}\r\n\r\n// 전체 공통코드 구조\r\nexport interface CommonCodeData {\r\n [groupCode: string]: CodeGroup;\r\n}\r\n\r\n// 단순화된 코드 아이템 (getCodeList용)\r\nexport interface SimpleCodeItem {\r\n label: string; // codeNm\r\n value: string; // codeValue\r\n tagColor?: string | null; // labelColor\r\n}\r\n\r\n// 공통코드 응답 타입\r\nexport interface CommonCodeResponse {\r\n codeList: CommonCodeData;\r\n}\r\n\r\n// 기본 스토어 상태 (공통 속성)\r\nexport interface BaseStoreState {\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n fetchCommonCodes: () => Promise<void>;\r\n clearCodes: () => void;\r\n}\r\n\r\n// 1. CODE 스토어 - 그룹코드별 상세코드 목록과 코드명 관리\r\nexport interface CodeStoreState extends BaseStoreState {\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 2. 코드를 던졌을 때 코드명을 리턴\r\n getCodeName: (codeValue: string) => string | null;\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴\r\n getCodeColor: (codeValue: string) => string | null;\r\n // 3. 옵션값으로 코드를 조회\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ) => CodeItem[];\r\n // 4. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 5. 그룹코드 목록 조회\r\n getAvailableGroupCodes: () => string[];\r\n // 6. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (groupCode: string) => {\r\n labels: string[];\r\n values: string[];\r\n lookupDisplay: boolean;\r\n };\r\n}\r\n\r\n// 2. OPTION 스토어 - 옵션값 관리\r\nexport interface OptionStoreState extends BaseStoreState {\r\n // 그룹코드와 옵션코드를 던졌을 때 상세코드의 옵션값을 리턴\r\n getOptionValue: (groupCode: string, optionCode: string) => any;\r\n // 특정 옵션 키의 값 가져오기\r\n getOptionByKey: (\r\n groupCode: string,\r\n optionCode: string,\r\n optionKey: string\r\n ) => any;\r\n}\r\n\r\n// 3. COLOR 스토어 - 코드/컬러 매핑 관리\r\nexport interface ColorStoreState extends BaseStoreState {\r\n // 코드를 던졌을 때 컬러코드를 리턴\r\n getColorCode: (codeValue: string) => string | null;\r\n // 코드/컬러 매핑 배열 가져오기\r\n getColorMapping: () => Array<{ code: string; color: string }>;\r\n}\r\n\r\n// 기존 CommonCodeState (하위 호환성을 위해 유지)\r\nexport interface CommonCodeState {\r\n // 데이터\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n\r\n // 액션들\r\n fetchCommonCodes: () => Promise<void>;\r\n getCodeGroup: (codeGroup: string) => CodeGroup | null;\r\n getCodeItem: (codeGroup: string, codeValue: string) => CodeItem | null;\r\n getCodeList: (codeGroup: string) => CodeItem[];\r\n getCodeListByOption: (\r\n codeGroup: string,\r\n optionKey: string,\r\n optionValue: any\r\n ) => CodeItem[];\r\n getCodeListWithColor: (codeGroup: string) => CodeItem[];\r\n getAvailableGroupCodes: () => string[];\r\n getDetailCodeList: (groupCode: string, enabledOnly?: boolean) => CodeItem[];\r\n getDetailCodeName: (detailCode: string) => string | null;\r\n getDetailCodeColor: (detailCode: string) => string | null;\r\n clearCodes: () => void;\r\n}\r\n\r\n// 공통코드 컨텍스트 타입\r\nexport interface CommonCodeContextType {\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 2. 코드를 던졌을 때 코드명을 리턴\r\n getCodeName: (codeValue: string) => string | null;\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴\r\n getCodeColor: (codeValue: string) => string | null;\r\n // 4. 옵션값으로 코드를 조회\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ) => CodeItem[];\r\n // 5. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 6. 그룹코드 목록 조회\r\n getAvailableGroupCodes: () => string[];\r\n // 7. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (groupCode: string) => {\r\n labels: string[];\r\n values: string[];\r\n lookupDisplay: boolean;\r\n };\r\n refreshCodes: () => Promise<void>;\r\n}\r\n\r\n// 대규모 데이터셋 최적화를 위한 설정\r\nconst LARGE_DATASET_CONFIG = {\r\n CACHE_SIZE_LIMIT: 1000, // 캐시 크기 제한\r\n BATCH_SIZE: 100, // 배치 처리 크기\r\n DEBOUNCE_DELAY: 300, // 디바운스 지연시간\r\n MEMORY_THRESHOLD: 50 * 1024 * 1024, // 50MB 메모리 임계값\r\n};\r\n\r\n// 성능 최적화를 위한 캐시 관리 (대규모 데이터셋용)\r\ninterface OptimizedCacheManager {\r\n codeCache: Map<string, any>;\r\n nameCache: Map<string, string>;\r\n optionCache: Map<string, any>;\r\n colorCache: Map<string, string>;\r\n loadedGroups: Set<string>;\r\n cacheHits: Map<string, number>;\r\n clearCache: () => void;\r\n cleanupCache: () => void;\r\n isGroupLoaded: (groupCode: string) => boolean;\r\n markGroupLoaded: (groupCode: string) => void;\r\n}\r\n\r\nconst optimizedCacheManager: OptimizedCacheManager = {\r\n codeCache: new Map(),\r\n nameCache: new Map(),\r\n optionCache: new Map(),\r\n colorCache: new Map(),\r\n loadedGroups: new Set(),\r\n cacheHits: new Map(),\r\n\r\n clearCache() {\r\n this.codeCache.clear();\r\n this.nameCache.clear();\r\n this.optionCache.clear();\r\n this.colorCache.clear();\r\n this.loadedGroups.clear();\r\n this.cacheHits.clear();\r\n },\r\n\r\n cleanupCache() {\r\n // LRU 방식으로 캐시 정리\r\n const entries = Array.from(this.cacheHits.entries());\r\n entries.sort((a, b) => a[1] - b[1]);\r\n\r\n // 가장 적게 사용된 캐시 항목들 제거\r\n const toRemove = entries.slice(0, Math.floor(entries.length * 0.3));\r\n toRemove.forEach(([key]) => {\r\n this.codeCache.delete(key);\r\n this.nameCache.delete(key);\r\n this.optionCache.delete(key);\r\n this.colorCache.delete(key);\r\n this.cacheHits.delete(key);\r\n });\r\n },\r\n\r\n isGroupLoaded(groupCode: string) {\r\n return this.loadedGroups.has(groupCode);\r\n },\r\n\r\n markGroupLoaded(groupCode: string) {\r\n this.loadedGroups.add(groupCode);\r\n },\r\n};\r\n\r\n// 서버 응답을 클라이언트 형식으로 변환하는 함수 (실제 SCMSIGN00301 서비스 응답 구조 반영)\r\nconst transformServerResponse = (response: any): CommonCodeData => {\r\n console.log('대규모 데이터 변환 시작:', response);\r\n\r\n const codeData: CommonCodeData = {};\r\n\r\n // 실제 서비스 응답 구조: { code: [...], opt: [...] }\r\n if (response && response.code && Array.isArray(response.code)) {\r\n const codeList = response.code;\r\n const optionList = response.opt || [];\r\n\r\n // 옵션 데이터를 공통코드별로 그룹화\r\n const optionMap = new Map<string, any[]>();\r\n optionList.forEach((opt: any) => {\r\n if (opt.cmmnCd && opt.enblYn === 'Y') {\r\n if (!optionMap.has(opt.cmmnCd)) {\r\n optionMap.set(opt.cmmnCd, []);\r\n }\r\n optionMap.get(opt.cmmnCd)!.push(opt);\r\n }\r\n });\r\n\r\n // 공통코드 데이터를 그룹별로 정리\r\n codeList.forEach((item: any) => {\r\n if (item && item.cmmnCdGrp && item.cmmnCd && item.enblYn === 'Y') {\r\n const groupCode = item.cmmnCdGrp;\r\n\r\n // 그룹이 없으면 생성\r\n if (!codeData[groupCode]) {\r\n codeData[groupCode] = {};\r\n }\r\n\r\n // 해당 코드의 옵션들 찾기\r\n const codeOptions = optionMap.get(item.cmmnCd) || [];\r\n const options = codeOptions.reduce((acc: any, opt: any) => {\r\n if (opt.optnCd && opt.optnNm) {\r\n acc[opt.optnCd] = opt.optnNm;\r\n }\r\n return acc;\r\n }, {});\r\n\r\n // 코드 아이템 생성\r\n codeData[groupCode][item.cmmnCd] = {\r\n codeValue: item.cmmnCd,\r\n codeNm: item.cmmnCdNm,\r\n groupCode: item.cmmnCdGrp,\r\n commonCode: item.cmmnCd,\r\n labelColor: item.cmmnCdClr,\r\n systemCodeYn: item.syscdYn,\r\n sortOrder: parseInt(item.sortOrd) || 1,\r\n enabled: item.enblYn === 'Y',\r\n options: Object.keys(options).length > 0 ? options : null,\r\n originalData: item,\r\n };\r\n }\r\n });\r\n }\r\n\r\n console.log('대규모 데이터 변환 완료:', codeData);\r\n return codeData;\r\n};\r\n\r\n// 대규모 데이터를 관리하는 중앙 스토어\r\nconst useLargeDataStore = create<{\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n loadedGroups: Set<string>;\r\n fetchData: () => Promise<void>;\r\n loadSpecificGroup: (groupCode: string) => Promise<void>;\r\n setData: (data: CommonCodeData) => void;\r\n clearData: () => void;\r\n getLoadedGroups: () => string[];\r\n}>()(\r\n persist(\r\n (set, get) => ({\r\n codeData: null,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: null,\r\n loadedGroups: new Set(),\r\n\r\n fetchData: async () => {\r\n set({ isLoading: true, error: null });\r\n\r\n try {\r\n console.log('대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301');\r\n\r\n const response = await callService(getServiceCode('SRCH_CODE'), {\r\n crprCd: '100',\r\n });\r\n\r\n console.log('대규모 공통코드 응답:', response);\r\n console.log('대규모 공통코드목록:', response.code);\r\n console.log('대규모 공통코드옵션션목록:', response.opt);\r\n\r\n const codeData = transformServerResponse(response);\r\n\r\n // 캐시 초기화\r\n optimizedCacheManager.clearCache();\r\n\r\n // 로드된 그룹들을 optimizedCacheManager에도 설정\r\n const loadedGroups = new Set(Object.keys(codeData));\r\n loadedGroups.forEach(groupCode => {\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n });\r\n\r\n set({\r\n codeData,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: new Date(),\r\n loadedGroups,\r\n });\r\n\r\n console.log('대규모 공통코드 데이터 가져오기 완료');\r\n } catch (error) {\r\n console.error('대규모 공통코드 데이터 가져오기 실패:', error);\r\n set({\r\n isLoading: false,\r\n error:\r\n error instanceof Error\r\n ? error.message\r\n : '대규모 공통코드 데이터 가져오기 실패',\r\n });\r\n }\r\n },\r\n\r\n loadSpecificGroup: async (groupCode: string) => {\r\n const { codeData, loadedGroups } = get();\r\n if (!codeData || loadedGroups.has(groupCode)) return;\r\n\r\n // 특정 그룹만 로드 (필요시 서버에서 개별 요청)\r\n const newLoadedGroups = new Set(loadedGroups).add(groupCode);\r\n set({ loadedGroups: newLoadedGroups });\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n },\r\n\r\n setData: (data: CommonCodeData) => {\r\n optimizedCacheManager.clearCache();\r\n\r\n // 로드된 그룹들을 optimizedCacheManager에도 설정\r\n const loadedGroups = new Set(Object.keys(data));\r\n loadedGroups.forEach(groupCode => {\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n });\r\n\r\n set({\r\n codeData: data,\r\n lastUpdated: new Date(),\r\n loadedGroups,\r\n });\r\n },\r\n\r\n clearData: () => {\r\n optimizedCacheManager.clearCache();\r\n set({\r\n codeData: null,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: null,\r\n loadedGroups: new Set(),\r\n });\r\n },\r\n\r\n getLoadedGroups: () => {\r\n return Array.from(get().loadedGroups);\r\n },\r\n }),\r\n {\r\n name: 'large-data-storage',\r\n partialize: state => ({\r\n codeData: state.codeData,\r\n lastUpdated: state.lastUpdated,\r\n loadedGroups: Array.from(state.loadedGroups),\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 1. CODE 스토어 - 대규모 데이터 최적화\r\nexport const useCodeStore = create<CodeStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ): SimpleCodeItem[] => {\r\n const {\r\n enabledOnly = true,\r\n systemCodeOnly = false,\r\n sortByOrder = false,\r\n excludeParentCode = false,\r\n } = options || {};\r\n\r\n // 캐시 키 생성 (옵션 포함)\r\n const cacheKey = `simpleCodeList_${groupCode}_${enabledOnly}_${systemCodeOnly}_${sortByOrder}_${excludeParentCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n // 그룹이 로드되었는지 확인 (데이터가 있으면 로드된 것으로 간주)\r\n if (\r\n !optimizedCacheManager.isGroupLoaded(groupCode) &&\r\n !codeData[groupCode]\r\n ) {\r\n console.warn(`그룹 ${groupCode}가 아직 로드되지 않았습니다.`);\r\n return [];\r\n }\r\n\r\n const detailCodes: CodeItem[] = [];\r\n\r\n // 해당 그룹만 처리하여 성능 최적화\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n // 사용여부 필터링\r\n if (enabledOnly && !item.enabled) return;\r\n\r\n // 시스템코드 필터링\r\n if (systemCodeOnly && item.systemCodeYn !== 'Y') return;\r\n\r\n // 부모코드 제외 옵션 처리\r\n if (excludeParentCode) {\r\n // 부모코드 길이 계산 (예: CMPRGR = 6자)\r\n const parentCodeLength = groupCode.length;\r\n\r\n // 자식코드만 추출 (부모코드 제외)\r\n const childCode = item.codeValue.substring(parentCodeLength);\r\n\r\n // 자식코드가 있는 경우만 추가\r\n if (childCode.length > 0) {\r\n detailCodes.push({\r\n ...item,\r\n codeValue: childCode, // 자식코드만 사용\r\n });\r\n }\r\n } else {\r\n detailCodes.push(item);\r\n }\r\n });\r\n }\r\n\r\n // 정렬\r\n let sortedCodes: CodeItem[];\r\n if (sortByOrder) {\r\n // 정렬순서로 정렬, 동일한 경우 코드값으로 정렬\r\n sortedCodes = detailCodes.sort((a, b) => {\r\n if (a.sortOrder !== b.sortOrder) {\r\n return a.sortOrder - b.sortOrder;\r\n }\r\n return a.codeValue.localeCompare(b.codeValue);\r\n });\r\n } else {\r\n // 코드값으로 정렬\r\n sortedCodes = detailCodes.sort((a, b) =>\r\n a.codeValue.localeCompare(b.codeValue)\r\n );\r\n }\r\n\r\n // SimpleCodeItem으로 변환\r\n const simpleCodes: SimpleCodeItem[] = sortedCodes.map(item => ({\r\n label: item.codeNm,\r\n value: item.codeValue,\r\n tagColor: item.labelColor,\r\n }));\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.optionCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, simpleCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return simpleCodes;\r\n },\r\n\r\n // 2. 코드를 던졌을 때 코드명을 리턴 (대규모 최적화)\r\n getCodeName: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.nameCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`name_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`name_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.nameCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 대신 인덱스 활용 (실제 구현에서는 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.nameCache.set(codeValue, item.codeNm);\r\n optimizedCacheManager.cacheHits.set(`name_${codeValue}`, 1);\r\n return item.codeNm;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴 (대규모 최적화)\r\n getCodeColor: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.colorCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`color_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.colorCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 대신 인덱스 활용 (실제 구현에서는 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.colorCache.set(\r\n codeValue,\r\n item.labelColor || ''\r\n );\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, 1);\r\n return item.labelColor;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 4. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (\r\n groupCode: string\r\n ): { labels: string[]; values: string[]; lookupDisplay: boolean } => {\r\n // 캐시 확인\r\n const cacheKey = `gridLookup_${groupCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return { labels: [], values: [], lookupDisplay: true };\r\n\r\n const group = codeData[groupCode];\r\n if (!group) return { labels: [], values: [], lookupDisplay: true };\r\n\r\n const labels: string[] = [];\r\n const values: string[] = [];\r\n\r\n // 활성화된 코드만 필터링하여 순서대로 추가\r\n Object.values(group)\r\n .filter(item => item.enabled)\r\n .sort((a, b) => a.sortOrder - b.sortOrder)\r\n .forEach(item => {\r\n labels.push(item.codeNm);\r\n values.push(item.codeValue);\r\n });\r\n\r\n const result = { labels, values, lookupDisplay: true };\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, result);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return result;\r\n },\r\n\r\n // 3. 옵션값으로 코드를 조회하는 새로운 메서드\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ): CodeItem[] => {\r\n // 캐시 확인\r\n const cacheKey = `codeByOption_${groupCode}_${optionKey}_${optionValue}`;\r\n if (optimizedCacheManager.codeCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.codeCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const matchedCodes: CodeItem[] = [];\r\n\r\n // 해당 그룹에서 옵션값이 일치하는 코드들 찾기\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n if (\r\n item.enabled &&\r\n item.options &&\r\n item.options[optionKey] === optionValue\r\n ) {\r\n // 옵션값을 코드명으로 대체하여 반환\r\n matchedCodes.push({\r\n ...item,\r\n codeNm: item.options[optionKey] || item.codeNm, // 옵션값을 코드명으로 사용\r\n });\r\n }\r\n });\r\n }\r\n\r\n const sortedCodes = matchedCodes.sort((a, b) =>\r\n a.codeValue.localeCompare(b.codeValue)\r\n );\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.codeCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.codeCache.set(cacheKey, sortedCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return sortedCodes;\r\n },\r\n\r\n // 6. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ): SimpleCodeItem[] => {\r\n const {\r\n enabledOnly = true,\r\n systemCodeOnly = false,\r\n sortByOrder = false,\r\n } = options || {};\r\n\r\n // 캐시 키 생성 (옵션 포함)\r\n const cacheKey = `codeListByOption_${groupCode}_${optionCode}_${enabledOnly}_${systemCodeOnly}_${sortByOrder}`;\r\n if (optimizedCacheManager.codeCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.codeCache.get(\r\n cacheKey\r\n ) as SimpleCodeItem[];\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n // 그룹이 로드되었는지 확인 (데이터가 있으면 로드된 것으로 간주)\r\n if (\r\n !optimizedCacheManager.isGroupLoaded(groupCode) &&\r\n !codeData[groupCode]\r\n ) {\r\n console.warn(`그룹 ${groupCode}가 아직 로드되지 않았습니다.`);\r\n return [];\r\n }\r\n\r\n const matchedCodes: SimpleCodeItem[] = [];\r\n\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n // 사용여부 필터링\r\n if (enabledOnly && !item.enabled) return;\r\n\r\n // 시스템코드 필터링\r\n if (systemCodeOnly && item.systemCodeYn !== 'Y') return;\r\n\r\n // 해당 옵션코드가 있는지 확인\r\n if (item.options && item.options[optionCode]) {\r\n // SimpleCodeItem 형태로 변환\r\n matchedCodes.push({\r\n label: item.options[optionCode], // optnNm 값\r\n value: item.commonCode, // 공통코드값\r\n tagColor: item.labelColor, // 라벨 컬러\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 정렬\r\n let sortedCodes: SimpleCodeItem[];\r\n if (sortByOrder) {\r\n // 정렬순서로 정렬, 동일한 경우 코드값으로 정렬\r\n sortedCodes = matchedCodes.sort((a, b) => {\r\n // sortOrder는 원본 item에서 가져와야 하므로 임시로 코드값으로 정렬\r\n return a.value.localeCompare(b.value);\r\n });\r\n } else {\r\n // 코드값으로 정렬\r\n sortedCodes = matchedCodes.sort((a, b) =>\r\n a.value.localeCompare(b.value)\r\n );\r\n }\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.codeCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.codeCache.set(cacheKey, sortedCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return sortedCodes;\r\n },\r\n\r\n // 7. 그룹코드 목록 조회\r\n getAvailableGroupCodes: (): string[] => {\r\n const cacheKey = 'available_group_codes';\r\n if (optimizedCacheManager.nameCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return JSON.parse(optimizedCacheManager.nameCache.get(cacheKey)!);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const groupCodes = Object.keys(codeData).sort();\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.nameCache.set(\r\n cacheKey,\r\n JSON.stringify(groupCodes)\r\n );\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return groupCodes;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'code-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 2. OPTION 스토어 - 대규모 데이터 최적화\r\nexport const useOptionStore = create<OptionStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 그룹코드와 옵션코드를 던졌을 때 상세코드의 옵션값을 리턴 (대규모 최적화)\r\n getOptionValue: (groupCode: string, optionCode: string): any => {\r\n // 캐시 확인\r\n const cacheKey = `option_${groupCode}_${optionCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 해당 그룹만 검색\r\n const group = codeData[groupCode];\r\n if (group && group[optionCode]) {\r\n const options = group[optionCode].options;\r\n optimizedCacheManager.optionCache.set(cacheKey, options);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n return options;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 특정 옵션 키의 값 가져오기 (대규모 최적화)\r\n getOptionByKey: (\r\n groupCode: string,\r\n optionCode: string,\r\n optionKey: string\r\n ): any => {\r\n const cacheKey = `option_${groupCode}_${optionCode}_${optionKey}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const options = get().getOptionValue(groupCode, optionCode);\r\n const result = options ? options[optionKey] : null;\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, result);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return result;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'option-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 3. COLOR 스토어 - 대규모 데이터 최적화\r\nexport const useColorStore = create<ColorStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 코드를 던졌을 때 컬러코드를 리턴 (대규모 최적화)\r\n getColorCode: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.colorCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`color_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.colorCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 (실제 구현에서는 컬러 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.colorCache.set(\r\n codeValue,\r\n item.labelColor || ''\r\n );\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, 1);\r\n return item.labelColor;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 코드/컬러 매핑 배열 가져오기 (대규모 최적화)\r\n getColorMapping: (): Array<{ code: string; color: string }> => {\r\n const cacheKey = 'color_mapping';\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const colorMapping: Array<{ code: string; color: string }> = [];\r\n\r\n // 배치 처리로 메모리 사용량 최적화\r\n Object.values(codeData).forEach(group => {\r\n Object.values(group).forEach(item => {\r\n if (item.labelColor) {\r\n colorMapping.push({\r\n code: item.codeValue,\r\n color: item.labelColor,\r\n });\r\n }\r\n });\r\n });\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, colorMapping);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return colorMapping;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'color-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n"],"names":["LARGE_DATASET_CONFIG","optimizedCacheManager","entries","a","b","key","groupCode","transformServerResponse","response","codeData","codeList","optionList","optionMap","opt","item","options","acc","useLargeDataStore","create","persist","set","get","callService","getServiceCode","loadedGroups","error","newLoadedGroups","data","state","useCodeStore","enabledOnly","systemCodeOnly","sortByOrder","excludeParentCode","cacheKey","hits","detailCodes","group","parentCodeLength","childCode","sortedCodes","simpleCodes","codeValue","labels","values","result","optionKey","optionValue","matchedCodes","optionCode","groupCodes","useOptionStore","useColorStore","colorMapping"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeStore-vPj4Y0TK.js","sources":["../../src/stores/codeStore.ts"],"sourcesContent":["import { create } from 'zustand';\r\nimport { persist } from 'zustand/middleware';\r\nimport { callService } from '../utils/apiUtils';\r\nimport { getServiceCode } from '../utils/serviceConfig';\r\n\r\n// 공통코드 관련 타입 정의\r\n\r\n// 서버 응답의 개별 코드 아이템 (실제 SCMSIGN00301 서비스 응답 구조)\r\nexport interface ServerCodeItem {\r\n cmmnCdGrp: string; // 그룹 코드\r\n cmmnCd: string; // 공통 코드\r\n cmmnCdNm: string; // 공통 코드명\r\n cmmnCdClr: string | null; // 공통 코드 컬러\r\n syscdYn: string; // 시스템 코드 여부\r\n sortOrd: string | null; // 정렬 순서\r\n enblYn: string; // 사용 여부\r\n}\r\n\r\n// 서버 응답의 개별 옵션 아이템 (실제 SCMSIGN00301 서비스 응답 구조)\r\nexport interface ServerOptionItem {\r\n cmmnCdGrp: string; // 그룹 코드\r\n cmmnCd: string; // 공통 코드\r\n cmmnCdClr: string | null; // 공통 코드 컬러\r\n optnCd: string; // 옵션 코드\r\n optnNm: string; // 옵션명\r\n syscdYn: string; // 시스템 코드 여부\r\n sortOrd: string | null; // 정렬 순서\r\n enblYn: string; // 사용 여부\r\n}\r\n\r\n// SCMSIGN00301 서비스 응답 구조\r\nexport interface ServerCommonCodeResponse {\r\n code: ServerCodeItem[]; // 공통코드 목록\r\n opt: ServerOptionItem[]; // 옵션 목록\r\n}\r\n\r\n// 클라이언트에서 사용할 코드 아이템 (실제 응답 구조 반영)\r\nexport interface CodeItem {\r\n codeValue: string; // 공통 코드 (cmmnCd)\r\n codeNm: string; // 공통 코드명 (cmmnCdNm)\r\n groupCode: string; // 그룹 코드 (cmmnCdGrp)\r\n commonCode: string; // 공통 코드 (cmmnCd)\r\n labelColor: string | null; // 라벨 컬러 (cmmnCdClr)\r\n systemCodeYn: string; // 시스템 코드 여부 (syscdYn)\r\n sortOrder: number; // 정렬 순서 (sortOrd)\r\n enabled: boolean; // 사용 여부 (enblYn === 'Y')\r\n options: Record<string, any> | null; // 옵션 (optnCd: optnNm 형태)\r\n originalData: ServerCodeItem; // 원본 데이터\r\n}\r\n\r\n// 코드 그룹 (그룹코드별로 정리된 상세코드들)\r\nexport interface CodeGroup {\r\n [codeValue: string]: CodeItem;\r\n}\r\n\r\n// 전체 공통코드 구조\r\nexport interface CommonCodeData {\r\n [groupCode: string]: CodeGroup;\r\n}\r\n\r\n// 단순화된 코드 아이템 (getCodeList용)\r\nexport interface SimpleCodeItem {\r\n label: string; // codeNm\r\n value: string; // codeValue\r\n tagColor?: string | null; // labelColor\r\n}\r\n\r\n// 공통코드 응답 타입\r\nexport interface CommonCodeResponse {\r\n codeList: CommonCodeData;\r\n}\r\n\r\n// 기본 스토어 상태 (공통 속성)\r\nexport interface BaseStoreState {\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n fetchCommonCodes: () => Promise<void>;\r\n clearCodes: () => void;\r\n}\r\n\r\n// 1. CODE 스토어 - 그룹코드별 상세코드 목록과 코드명 관리\r\nexport interface CodeStoreState extends BaseStoreState {\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 2. 코드를 던졌을 때 코드명을 리턴\r\n getCodeName: (codeValue: string) => string | null;\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴\r\n getCodeColor: (codeValue: string) => string | null;\r\n // 3. 옵션값으로 코드를 조회\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ) => CodeItem[];\r\n // 4. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 5. 그룹코드 목록 조회\r\n getAvailableGroupCodes: () => string[];\r\n // 6. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (groupCode: string) => {\r\n labels: string[];\r\n values: string[];\r\n lookupDisplay: boolean;\r\n };\r\n}\r\n\r\n// 2. OPTION 스토어 - 옵션값 관리\r\nexport interface OptionStoreState extends BaseStoreState {\r\n // 그룹코드와 옵션코드를 던졌을 때 상세코드의 옵션값을 리턴\r\n getOptionValue: (groupCode: string, optionCode: string) => any;\r\n // 특정 옵션 키의 값 가져오기\r\n getOptionByKey: (\r\n groupCode: string,\r\n optionCode: string,\r\n optionKey: string\r\n ) => any;\r\n}\r\n\r\n// 3. COLOR 스토어 - 코드/컬러 매핑 관리\r\nexport interface ColorStoreState extends BaseStoreState {\r\n // 코드를 던졌을 때 컬러코드를 리턴\r\n getColorCode: (codeValue: string) => string | null;\r\n // 코드/컬러 매핑 배열 가져오기\r\n getColorMapping: () => Array<{ code: string; color: string }>;\r\n}\r\n\r\n// 기존 CommonCodeState (하위 호환성을 위해 유지)\r\nexport interface CommonCodeState {\r\n // 데이터\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n\r\n // 액션들\r\n fetchCommonCodes: () => Promise<void>;\r\n getCodeGroup: (codeGroup: string) => CodeGroup | null;\r\n getCodeItem: (codeGroup: string, codeValue: string) => CodeItem | null;\r\n getCodeList: (codeGroup: string) => CodeItem[];\r\n getCodeListByOption: (\r\n codeGroup: string,\r\n optionKey: string,\r\n optionValue: any\r\n ) => CodeItem[];\r\n getCodeListWithColor: (codeGroup: string) => CodeItem[];\r\n getAvailableGroupCodes: () => string[];\r\n getDetailCodeList: (groupCode: string, enabledOnly?: boolean) => CodeItem[];\r\n getDetailCodeName: (detailCode: string) => string | null;\r\n getDetailCodeColor: (detailCode: string) => string | null;\r\n clearCodes: () => void;\r\n}\r\n\r\n// 공통코드 컨텍스트 타입\r\nexport interface CommonCodeContextType {\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 2. 코드를 던졌을 때 코드명을 리턴\r\n getCodeName: (codeValue: string) => string | null;\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴\r\n getCodeColor: (codeValue: string) => string | null;\r\n // 4. 옵션값으로 코드를 조회\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ) => CodeItem[];\r\n // 5. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 6. 그룹코드 목록 조회\r\n getAvailableGroupCodes: () => string[];\r\n // 7. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (groupCode: string) => {\r\n labels: string[];\r\n values: string[];\r\n lookupDisplay: boolean;\r\n };\r\n refreshCodes: () => Promise<void>;\r\n}\r\n\r\n// 대규모 데이터셋 최적화를 위한 설정\r\nconst LARGE_DATASET_CONFIG = {\r\n CACHE_SIZE_LIMIT: 1000, // 캐시 크기 제한\r\n BATCH_SIZE: 100, // 배치 처리 크기\r\n DEBOUNCE_DELAY: 300, // 디바운스 지연시간\r\n MEMORY_THRESHOLD: 50 * 1024 * 1024, // 50MB 메모리 임계값\r\n};\r\n\r\n// 성능 최적화를 위한 캐시 관리 (대규모 데이터셋용)\r\ninterface OptimizedCacheManager {\r\n codeCache: Map<string, any>;\r\n nameCache: Map<string, string>;\r\n optionCache: Map<string, any>;\r\n colorCache: Map<string, string>;\r\n loadedGroups: Set<string>;\r\n cacheHits: Map<string, number>;\r\n clearCache: () => void;\r\n cleanupCache: () => void;\r\n isGroupLoaded: (groupCode: string) => boolean;\r\n markGroupLoaded: (groupCode: string) => void;\r\n}\r\n\r\nconst optimizedCacheManager: OptimizedCacheManager = {\r\n codeCache: new Map(),\r\n nameCache: new Map(),\r\n optionCache: new Map(),\r\n colorCache: new Map(),\r\n loadedGroups: new Set(),\r\n cacheHits: new Map(),\r\n\r\n clearCache() {\r\n this.codeCache.clear();\r\n this.nameCache.clear();\r\n this.optionCache.clear();\r\n this.colorCache.clear();\r\n this.loadedGroups.clear();\r\n this.cacheHits.clear();\r\n },\r\n\r\n cleanupCache() {\r\n // LRU 방식으로 캐시 정리\r\n const entries = Array.from(this.cacheHits.entries());\r\n entries.sort((a, b) => a[1] - b[1]);\r\n\r\n // 가장 적게 사용된 캐시 항목들 제거\r\n const toRemove = entries.slice(0, Math.floor(entries.length * 0.3));\r\n toRemove.forEach(([key]) => {\r\n this.codeCache.delete(key);\r\n this.nameCache.delete(key);\r\n this.optionCache.delete(key);\r\n this.colorCache.delete(key);\r\n this.cacheHits.delete(key);\r\n });\r\n },\r\n\r\n isGroupLoaded(groupCode: string) {\r\n return this.loadedGroups.has(groupCode);\r\n },\r\n\r\n markGroupLoaded(groupCode: string) {\r\n this.loadedGroups.add(groupCode);\r\n },\r\n};\r\n\r\n// 서버 응답을 클라이언트 형식으로 변환하는 함수 (실제 SCMSIGN00301 서비스 응답 구조 반영)\r\nconst transformServerResponse = (response: any): CommonCodeData => {\r\n console.log('대규모 데이터 변환 시작:', response);\r\n\r\n const codeData: CommonCodeData = {};\r\n\r\n // 실제 서비스 응답 구조: { code: [...], opt: [...] }\r\n if (response && response.code && Array.isArray(response.code)) {\r\n const codeList = response.code;\r\n const optionList = response.opt || [];\r\n\r\n // 옵션 데이터를 공통코드별로 그룹화\r\n const optionMap = new Map<string, any[]>();\r\n optionList.forEach((opt: any) => {\r\n if (opt.cmmnCd && opt.enblYn === 'Y') {\r\n if (!optionMap.has(opt.cmmnCd)) {\r\n optionMap.set(opt.cmmnCd, []);\r\n }\r\n optionMap.get(opt.cmmnCd)!.push(opt);\r\n }\r\n });\r\n\r\n // 공통코드 데이터를 그룹별로 정리\r\n codeList.forEach((item: any) => {\r\n if (item && item.cmmnCdGrp && item.cmmnCd && item.enblYn === 'Y') {\r\n const groupCode = item.cmmnCdGrp;\r\n\r\n // 그룹이 없으면 생성\r\n if (!codeData[groupCode]) {\r\n codeData[groupCode] = {};\r\n }\r\n\r\n // 해당 코드의 옵션들 찾기\r\n const codeOptions = optionMap.get(item.cmmnCd) || [];\r\n const options = codeOptions.reduce((acc: any, opt: any) => {\r\n if (opt.optnCd && opt.optnNm) {\r\n acc[opt.optnCd] = opt.optnNm;\r\n }\r\n return acc;\r\n }, {});\r\n\r\n // 코드 아이템 생성\r\n codeData[groupCode][item.cmmnCd] = {\r\n codeValue: item.cmmnCd,\r\n codeNm: item.cmmnCdNm,\r\n groupCode: item.cmmnCdGrp,\r\n commonCode: item.cmmnCd,\r\n labelColor: item.cmmnCdClr,\r\n systemCodeYn: item.syscdYn,\r\n sortOrder: parseInt(item.sortOrd) || 1,\r\n enabled: item.enblYn === 'Y',\r\n options: Object.keys(options).length > 0 ? options : null,\r\n originalData: item,\r\n };\r\n }\r\n });\r\n }\r\n\r\n console.log('대규모 데이터 변환 완료:', codeData);\r\n return codeData;\r\n};\r\n\r\n// 대규모 데이터를 관리하는 중앙 스토어\r\nconst useLargeDataStore = create<{\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n loadedGroups: Set<string>;\r\n fetchData: () => Promise<void>;\r\n loadSpecificGroup: (groupCode: string) => Promise<void>;\r\n setData: (data: CommonCodeData) => void;\r\n clearData: () => void;\r\n getLoadedGroups: () => string[];\r\n}>()(\r\n persist(\r\n (set, get) => ({\r\n codeData: null,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: null,\r\n loadedGroups: new Set(),\r\n\r\n fetchData: async () => {\r\n set({ isLoading: true, error: null });\r\n\r\n try {\r\n console.log('대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301');\r\n\r\n const response = await callService(getServiceCode('SRCH_CODE'), {\r\n crprCd: '100',\r\n });\r\n\r\n console.log('대규모 공통코드 응답:', response);\r\n console.log('대규모 공통코드목록:', response.code);\r\n console.log('대규모 공통코드옵션션목록:', response.opt);\r\n\r\n const codeData = transformServerResponse(response);\r\n\r\n // 캐시 초기화\r\n optimizedCacheManager.clearCache();\r\n\r\n // 로드된 그룹들을 optimizedCacheManager에도 설정\r\n const loadedGroups = new Set(Object.keys(codeData));\r\n loadedGroups.forEach(groupCode => {\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n });\r\n\r\n set({\r\n codeData,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: new Date(),\r\n loadedGroups,\r\n });\r\n\r\n console.log('대규모 공통코드 데이터 가져오기 완료');\r\n } catch (error) {\r\n console.error('대규모 공통코드 데이터 가져오기 실패:', error);\r\n set({\r\n isLoading: false,\r\n error:\r\n error instanceof Error\r\n ? error.message\r\n : '대규모 공통코드 데이터 가져오기 실패',\r\n });\r\n }\r\n },\r\n\r\n loadSpecificGroup: async (groupCode: string) => {\r\n const { codeData, loadedGroups } = get();\r\n if (!codeData || loadedGroups.has(groupCode)) return;\r\n\r\n // 특정 그룹만 로드 (필요시 서버에서 개별 요청)\r\n const newLoadedGroups = new Set(loadedGroups).add(groupCode);\r\n set({ loadedGroups: newLoadedGroups });\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n },\r\n\r\n setData: (data: CommonCodeData) => {\r\n optimizedCacheManager.clearCache();\r\n\r\n // 로드된 그룹들을 optimizedCacheManager에도 설정\r\n const loadedGroups = new Set(Object.keys(data));\r\n loadedGroups.forEach(groupCode => {\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n });\r\n\r\n set({\r\n codeData: data,\r\n lastUpdated: new Date(),\r\n loadedGroups,\r\n });\r\n },\r\n\r\n clearData: () => {\r\n optimizedCacheManager.clearCache();\r\n set({\r\n codeData: null,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: null,\r\n loadedGroups: new Set(),\r\n });\r\n },\r\n\r\n getLoadedGroups: () => {\r\n return Array.from(get().loadedGroups);\r\n },\r\n }),\r\n {\r\n name: 'large-data-storage',\r\n partialize: state => ({\r\n codeData: state.codeData,\r\n lastUpdated: state.lastUpdated,\r\n loadedGroups: Array.from(state.loadedGroups),\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 1. CODE 스토어 - 대규모 데이터 최적화\r\nexport const useCodeStore = create<CodeStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ): SimpleCodeItem[] => {\r\n const {\r\n enabledOnly = true,\r\n systemCodeOnly = false,\r\n sortByOrder = false,\r\n excludeParentCode = false,\r\n } = options || {};\r\n\r\n // 캐시 키 생성 (옵션 포함)\r\n const cacheKey = `simpleCodeList_${groupCode}_${enabledOnly}_${systemCodeOnly}_${sortByOrder}_${excludeParentCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n // 그룹이 로드되었는지 확인 (데이터가 있으면 로드된 것으로 간주)\r\n if (\r\n !optimizedCacheManager.isGroupLoaded(groupCode) &&\r\n !codeData[groupCode]\r\n ) {\r\n console.warn(`그룹 ${groupCode}가 아직 로드되지 않았습니다.`);\r\n return [];\r\n }\r\n\r\n const detailCodes: CodeItem[] = [];\r\n\r\n // 해당 그룹만 처리하여 성능 최적화\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n // 사용여부 필터링\r\n if (enabledOnly && !item.enabled) return;\r\n\r\n // 시스템코드 필터링\r\n if (systemCodeOnly && item.systemCodeYn !== 'Y') return;\r\n\r\n // 부모코드 제외 옵션 처리\r\n if (excludeParentCode) {\r\n // 부모코드 길이 계산 (예: CMPRGR = 6자)\r\n const parentCodeLength = groupCode.length;\r\n\r\n // 자식코드만 추출 (부모코드 제외)\r\n const childCode = item.codeValue.substring(parentCodeLength);\r\n\r\n // 자식코드가 있는 경우만 추가\r\n if (childCode.length > 0) {\r\n detailCodes.push({\r\n ...item,\r\n codeValue: childCode, // 자식코드만 사용\r\n });\r\n }\r\n } else {\r\n detailCodes.push(item);\r\n }\r\n });\r\n }\r\n\r\n // 정렬\r\n let sortedCodes: CodeItem[];\r\n if (sortByOrder) {\r\n // 정렬순서로 정렬, 동일한 경우 코드값으로 정렬\r\n sortedCodes = detailCodes.sort((a, b) => {\r\n if (a.sortOrder !== b.sortOrder) {\r\n return a.sortOrder - b.sortOrder;\r\n }\r\n return a.codeValue.localeCompare(b.codeValue);\r\n });\r\n } else {\r\n // 코드값으로 정렬\r\n sortedCodes = detailCodes.sort((a, b) =>\r\n a.codeValue.localeCompare(b.codeValue)\r\n );\r\n }\r\n\r\n // SimpleCodeItem으로 변환\r\n const simpleCodes: SimpleCodeItem[] = sortedCodes.map(item => ({\r\n label: item.codeNm,\r\n value: item.codeValue,\r\n tagColor: item.labelColor,\r\n }));\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.optionCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, simpleCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return simpleCodes;\r\n },\r\n\r\n // 2. 코드를 던졌을 때 코드명을 리턴 (대규모 최적화)\r\n getCodeName: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.nameCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`name_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`name_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.nameCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 대신 인덱스 활용 (실제 구현에서는 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.nameCache.set(codeValue, item.codeNm);\r\n optimizedCacheManager.cacheHits.set(`name_${codeValue}`, 1);\r\n return item.codeNm;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴 (대규모 최적화)\r\n getCodeColor: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.colorCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`color_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.colorCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 대신 인덱스 활용 (실제 구현에서는 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.colorCache.set(\r\n codeValue,\r\n item.labelColor || ''\r\n );\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, 1);\r\n return item.labelColor;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 4. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (\r\n groupCode: string\r\n ): { labels: string[]; values: string[]; lookupDisplay: boolean } => {\r\n // 캐시 확인\r\n const cacheKey = `gridLookup_${groupCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return { labels: [], values: [], lookupDisplay: true };\r\n\r\n const group = codeData[groupCode];\r\n if (!group) return { labels: [], values: [], lookupDisplay: true };\r\n\r\n const labels: string[] = [];\r\n const values: string[] = [];\r\n\r\n // 활성화된 코드만 필터링하여 순서대로 추가\r\n Object.values(group)\r\n .filter(item => item.enabled)\r\n .sort((a, b) => a.sortOrder - b.sortOrder)\r\n .forEach(item => {\r\n labels.push(item.codeNm);\r\n values.push(item.codeValue);\r\n });\r\n\r\n const result = { labels, values, lookupDisplay: true };\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, result);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return result;\r\n },\r\n\r\n // 3. 옵션값으로 코드를 조회하는 새로운 메서드\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ): CodeItem[] => {\r\n // 캐시 확인\r\n const cacheKey = `codeByOption_${groupCode}_${optionKey}_${optionValue}`;\r\n if (optimizedCacheManager.codeCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.codeCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const matchedCodes: CodeItem[] = [];\r\n\r\n // 해당 그룹에서 옵션값이 일치하는 코드들 찾기\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n if (\r\n item.enabled &&\r\n item.options &&\r\n item.options[optionKey] === optionValue\r\n ) {\r\n // 옵션값을 코드명으로 대체하여 반환\r\n matchedCodes.push({\r\n ...item,\r\n codeNm: item.options[optionKey] || item.codeNm, // 옵션값을 코드명으로 사용\r\n });\r\n }\r\n });\r\n }\r\n\r\n const sortedCodes = matchedCodes.sort((a, b) =>\r\n a.codeValue.localeCompare(b.codeValue)\r\n );\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.codeCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.codeCache.set(cacheKey, sortedCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return sortedCodes;\r\n },\r\n\r\n // 6. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ): SimpleCodeItem[] => {\r\n const {\r\n enabledOnly = true,\r\n systemCodeOnly = false,\r\n sortByOrder = false,\r\n } = options || {};\r\n\r\n // 캐시 키 생성 (옵션 포함)\r\n const cacheKey = `codeListByOption_${groupCode}_${optionCode}_${enabledOnly}_${systemCodeOnly}_${sortByOrder}`;\r\n if (optimizedCacheManager.codeCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.codeCache.get(\r\n cacheKey\r\n ) as SimpleCodeItem[];\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n // 그룹이 로드되었는지 확인 (데이터가 있으면 로드된 것으로 간주)\r\n if (\r\n !optimizedCacheManager.isGroupLoaded(groupCode) &&\r\n !codeData[groupCode]\r\n ) {\r\n console.warn(`그룹 ${groupCode}가 아직 로드되지 않았습니다.`);\r\n return [];\r\n }\r\n\r\n const matchedCodes: SimpleCodeItem[] = [];\r\n\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n // 사용여부 필터링\r\n if (enabledOnly && !item.enabled) return;\r\n\r\n // 시스템코드 필터링\r\n if (systemCodeOnly && item.systemCodeYn !== 'Y') return;\r\n\r\n // 해당 옵션코드가 있는지 확인\r\n if (item.options && item.options[optionCode]) {\r\n // SimpleCodeItem 형태로 변환\r\n matchedCodes.push({\r\n label: item.options[optionCode], // optnNm 값\r\n value: item.commonCode, // 공통코드값\r\n tagColor: item.labelColor, // 라벨 컬러\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 정렬\r\n let sortedCodes: SimpleCodeItem[];\r\n if (sortByOrder) {\r\n // 정렬순서로 정렬, 동일한 경우 코드값으로 정렬\r\n sortedCodes = matchedCodes.sort((a, b) => {\r\n // sortOrder는 원본 item에서 가져와야 하므로 임시로 코드값으로 정렬\r\n return a.value.localeCompare(b.value);\r\n });\r\n } else {\r\n // 코드값으로 정렬\r\n sortedCodes = matchedCodes.sort((a, b) =>\r\n a.value.localeCompare(b.value)\r\n );\r\n }\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.codeCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.codeCache.set(cacheKey, sortedCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return sortedCodes;\r\n },\r\n\r\n // 7. 그룹코드 목록 조회\r\n getAvailableGroupCodes: (): string[] => {\r\n const cacheKey = 'available_group_codes';\r\n if (optimizedCacheManager.nameCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return JSON.parse(optimizedCacheManager.nameCache.get(cacheKey)!);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const groupCodes = Object.keys(codeData).sort();\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.nameCache.set(\r\n cacheKey,\r\n JSON.stringify(groupCodes)\r\n );\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return groupCodes;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'code-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 2. OPTION 스토어 - 대규모 데이터 최적화\r\nexport const useOptionStore = create<OptionStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 그룹코드와 옵션코드를 던졌을 때 상세코드의 옵션값을 리턴 (대규모 최적화)\r\n getOptionValue: (groupCode: string, optionCode: string): any => {\r\n // 캐시 확인\r\n const cacheKey = `option_${groupCode}_${optionCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 해당 그룹만 검색\r\n const group = codeData[groupCode];\r\n if (group && group[optionCode]) {\r\n const options = group[optionCode].options;\r\n optimizedCacheManager.optionCache.set(cacheKey, options);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n return options;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 특정 옵션 키의 값 가져오기 (대규모 최적화)\r\n getOptionByKey: (\r\n groupCode: string,\r\n optionCode: string,\r\n optionKey: string\r\n ): any => {\r\n const cacheKey = `option_${groupCode}_${optionCode}_${optionKey}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const options = get().getOptionValue(groupCode, optionCode);\r\n const result = options ? options[optionKey] : null;\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, result);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return result;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'option-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 3. COLOR 스토어 - 대규모 데이터 최적화\r\nexport const useColorStore = create<ColorStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 코드를 던졌을 때 컬러코드를 리턴 (대규모 최적화)\r\n getColorCode: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.colorCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`color_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.colorCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 (실제 구현에서는 컬러 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.colorCache.set(\r\n codeValue,\r\n item.labelColor || ''\r\n );\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, 1);\r\n return item.labelColor;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 코드/컬러 매핑 배열 가져오기 (대규모 최적화)\r\n getColorMapping: (): Array<{ code: string; color: string }> => {\r\n const cacheKey = 'color_mapping';\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const colorMapping: Array<{ code: string; color: string }> = [];\r\n\r\n // 배치 처리로 메모리 사용량 최적화\r\n Object.values(codeData).forEach(group => {\r\n Object.values(group).forEach(item => {\r\n if (item.labelColor) {\r\n colorMapping.push({\r\n code: item.codeValue,\r\n color: item.labelColor,\r\n });\r\n }\r\n });\r\n });\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, colorMapping);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return colorMapping;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'color-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n"],"names":["LARGE_DATASET_CONFIG","optimizedCacheManager","entries","a","b","key","groupCode","transformServerResponse","response","codeData","codeList","optionList","optionMap","opt","item","options","acc","useLargeDataStore","create","persist","set","get","callService","getServiceCode","loadedGroups","error","newLoadedGroups","data","state","useCodeStore","enabledOnly","systemCodeOnly","sortByOrder","excludeParentCode","cacheKey","hits","detailCodes","group","parentCodeLength","childCode","sortedCodes","simpleCodes","codeValue","labels","values","result","optionKey","optionValue","matchedCodes","optionCode","groupCodes","useOptionStore","useColorStore","colorMapping"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aR as I, aS as B } from "./apiUtils-
|
|
1
|
+
import { aR as I, aS as B } from "./apiUtils-DSwE62oG.js";
|
|
2
2
|
function W(y) {
|
|
3
3
|
throw new Error('Could not dynamically require "' + y + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
|
|
4
4
|
}
|
|
@@ -511,4 +511,4 @@ function A() {
|
|
|
511
511
|
export {
|
|
512
512
|
A as r
|
|
513
513
|
};
|
|
514
|
-
//# sourceMappingURL=core-
|
|
514
|
+
//# sourceMappingURL=core-Dl0PdDdT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-bHd8azE6.js","sources":["../../__vite-browser-external","../../node_modules/crypto-js/core.js"],"sourcesContent":["export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));"],"names":["__viteBrowserExternal","root","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","obj","subtype","C","C_lib","Base","overrides","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","i","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","data","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","offset","cfg","messageUpdate","hash","hasher","message","key","C_algo"],"mappings":"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","x_google_ignoreList":[1]}
|
|
1
|
+
{"version":3,"file":"core-Dl0PdDdT.js","sources":["../../__vite-browser-external","../../node_modules/crypto-js/core.js"],"sourcesContent":["export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));"],"names":["__viteBrowserExternal","root","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","obj","subtype","C","C_lib","Base","overrides","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","i","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","data","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","offset","cfg","messageUpdate","hash","hasher","message","key","C_algo"],"mappings":"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","x_google_ignoreList":[1]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { aQ as A } from "./apiUtils-
|
|
2
|
-
import { r as b } from "./core-
|
|
1
|
+
import { aQ as A } from "./apiUtils-DSwE62oG.js";
|
|
2
|
+
import { r as b } from "./core-Dl0PdDdT.js";
|
|
3
3
|
function O(p, g) {
|
|
4
4
|
for (var f = 0; f < g.length; f++) {
|
|
5
5
|
const a = g[f];
|
|
@@ -99,4 +99,4 @@ const w = /* @__PURE__ */ A(B), D = /* @__PURE__ */ O({
|
|
|
99
99
|
export {
|
|
100
100
|
D as e
|
|
101
101
|
};
|
|
102
|
-
//# sourceMappingURL=enc-base64-
|
|
102
|
+
//# sourceMappingURL=enc-base64-D7t4BoUA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enc-base64-
|
|
1
|
+
{"version":3,"file":"enc-base64-D7t4BoUA.js","sources":["../../node_modules/crypto-js/enc-base64.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));"],"names":["root","factory","module","require$$0","this","CryptoJS","C","C_lib","WordArray","C_enc","wordArray","words","sigBytes","map","base64Chars","i","byte1","byte2","byte3","triplet","j","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","nBytes","bits1","bits2","bitsCombined"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAC,KAAC,SAAUA,GAAMC,GAAS;AAGzB,MAAAC,YAA2BD,EAAQE,GAAiB;AAAA,IAUtD,GAAEC,GAAM,SAAUC,GAAU;AAE3B,cAAC,WAAY;AAET,YAAIC,IAAID,GACJE,IAAQD,EAAE,KACVE,IAAYD,EAAM,WAClBE,IAAQH,EAAE;AAKD,QAAAG,EAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcxB,WAAW,SAAUC,GAAW;AAE5B,gBAAIC,IAAQD,EAAU,OAClBE,IAAWF,EAAU,UACrBG,IAAM,KAAK;AAGf,YAAAH,EAAU,MAAK;AAIf,qBADII,IAAc,CAAA,GACTC,IAAI,GAAGA,IAAIH,GAAUG,KAAK;AAO/B,uBANIC,IAASL,EAAMI,MAAM,CAAC,MAAa,KAAMA,IAAI,IAAK,IAAY,KAC9DE,IAASN,EAAOI,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM,KAC9DG,IAASP,EAAOI,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM,KAE9DI,IAAWH,KAAS,KAAOC,KAAS,IAAKC,GAEpCE,IAAI,GAAIA,IAAI,KAAOL,IAAIK,IAAI,OAAOR,GAAWQ;AAClD,gBAAAN,EAAY,KAAKD,EAAI,OAAQM,MAAa,KAAK,IAAIC,KAAO,EAAI,CAAC;AAKvE,gBAAIC,IAAcR,EAAI,OAAO,EAAE;AAC/B,gBAAIQ;AACA,qBAAOP,EAAY,SAAS;AACxB,gBAAAA,EAAY,KAAKO,CAAW;AAIpC,mBAAOP,EAAY,KAAK,EAAE;AAAA,UACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeS,OAAO,SAAUQ,GAAW;AAExB,gBAAIC,IAAkBD,EAAU,QAC5BT,IAAM,KAAK,MACXW,IAAa,KAAK;AAEtB,gBAAI,CAACA,GAAY;AACT,cAAAA,IAAa,KAAK,cAAc,CAAA;AAChC,uBAASJ,IAAI,GAAGA,IAAIP,EAAI,QAAQO;AAC5B,gBAAAI,EAAWX,EAAI,WAAWO,CAAC,CAAC,IAAIA;AAAA,YAEzD;AAGa,gBAAIC,IAAcR,EAAI,OAAO,EAAE;AAC/B,gBAAIQ,GAAa;AACb,kBAAII,IAAeH,EAAU,QAAQD,CAAW;AAChD,cAAII,MAAiB,OACjBF,IAAkBE;AAAA,YAEvC;AAGa,mBAAOC,EAAUJ,GAAWC,GAAiBC,CAAU;AAAA,UAEpE;AAAA,UAES,MAAM;AAAA;AAGV,iBAASE,EAAUJ,GAAWC,GAAiBC,GAAY;AAGzD,mBAFIb,IAAQ,CAAA,GACRgB,IAAS,GACJZ,IAAI,GAAGA,IAAIQ,GAAiBR;AACjC,gBAAIA,IAAI,GAAG;AACP,kBAAIa,IAAQJ,EAAWF,EAAU,WAAWP,IAAI,CAAC,CAAC,KAAOA,IAAI,IAAK,GAC9Dc,IAAQL,EAAWF,EAAU,WAAWP,CAAC,CAAC,MAAO,IAAKA,IAAI,IAAK,GAC/De,IAAeF,IAAQC;AAC3B,cAAAlB,EAAMgB,MAAW,CAAC,KAAKG,KAAiB,KAAMH,IAAS,IAAK,GAC5DA;AAAA,YACf;AAEO,iBAAOnB,EAAU,OAAOG,GAAOgB,CAAM;AAAA,QAC5C;AAAA,MACA,GAAE,GAGMtB,EAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ap as f, c as I } from "./apiUtils-
|
|
1
|
+
import { ap as f, c as I } from "./apiUtils-DSwE62oG.js";
|
|
2
2
|
import { create as F } from "zustand";
|
|
3
3
|
const M = (d, o) => ({
|
|
4
4
|
nodes: {},
|
|
@@ -436,4 +436,4 @@ function b(d, o, e) {
|
|
|
436
436
|
export {
|
|
437
437
|
E as u
|
|
438
438
|
};
|
|
439
|
-
//# sourceMappingURL=favoriteStore-
|
|
439
|
+
//# sourceMappingURL=favoriteStore-Bh1FuZm9.js.map
|