@hot-updater/console 0.12.7 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 240 10% 3.9%;--muted: 240 4.8% 95.9%;--muted-foreground: 240 3.8% 46.1%;--popover: 0 0% 100%;--popover-foreground: 240 10% 3.9%;--border: 240 5.9% 90%;--input: 240 5.9% 90%;--card: 0 0% 100%;--card-foreground: 240 10% 3.9%;--primary: 240 5.9% 10%;--primary-foreground: 0 0% 98%;--secondary: 240 4.8% 95.9%;--secondary-foreground: 240 5.9% 10%;--accent: 240 4.8% 95.9%;--accent-foreground: 240 5.9% 10%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--info: 204 94% 94%;--info-foreground: 199 89% 48%;--success: 149 80% 90%;--success-foreground: 160 84% 39%;--warning: 48 96% 89%;--warning-foreground: 25 95% 53%;--error: 0 93% 94%;--error-foreground: 0 84% 60%;--ring: 240 5.9% 10%;--radius: .5rem}.dark,[data-kb-theme=dark]{--background: 240 10% 3.9%;--foreground: 0 0% 98%;--muted: 240 3.7% 15.9%;--muted-foreground: 240 5% 64.9%;--accent: 240 3.7% 15.9%;--accent-foreground: 0 0% 98%;--popover: 240 10% 3.9%;--popover-foreground: 0 0% 98%;--border: 240 3.7% 15.9%;--input: 240 3.7% 15.9%;--card: 240 10% 3.9%;--card-foreground: 0 0% 98%;--primary: 0 0% 98%;--primary-foreground: 240 5.9% 10%;--secondary: 240 3.7% 15.9%;--secondary-foreground: 0 0% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 0 0% 98%;--info: 204 94% 94%;--info-foreground: 199 89% 48%;--success: 149 80% 90%;--success-foreground: 160 84% 39%;--warning: 48 96% 89%;--warning-foreground: 25 95% 53%;--error: 0 93% 94%;--error-foreground: 0 84% 60%;--ring: 240 4.9% 83.9%;--radius: .5rem}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-feature-settings:"rlig" 1,"calt" 1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-2{top:.5rem}.top-4{top:1rem}.top-px{top:1px}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[100\]{z-index:100}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.mt-2\.5{margin-top:.625rem}.mt-4{margin-top:1rem}.mt-\[2px\]{margin-top:2px}.box-border{box-sizing:border-box}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.grid{display:grid}.hidden{display:none}.size-10{width:2.5rem;height:2.5rem}.size-3{width:.75rem;height:.75rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-32{height:8rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\[var\(--kb-navigation-menu-viewport-height\)\]{height:var(--kb-navigation-menu-viewport-height)}.h-full{height:100%}.max-h-screen{max-height:100vh}.min-h-\[400px\]{min-height:400px}.min-h-\[80px\]{min-height:80px}.w-11{width:2.75rem}.w-12{width:3rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-\[100px\]{width:100px}.w-\[var\(--kb-navigation-menu-viewport-width\)\]{width:var(--kb-navigation-menu-viewport-width)}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\[var\(--kb-menu-content-transform-origin\)\]{transform-origin:var(--kb-menu-content-transform-origin)}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes content-hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.animate-content-hide{animation:content-hide .2s ease-out}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-none{list-style-type:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-visible{overflow-y:visible}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-destructive{border-color:hsl(var(--destructive))}.border-error-foreground{border-color:hsl(var(--error-foreground))}.border-input{border-color:hsl(var(--input))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-success-foreground{border-color:hsl(var(--success-foreground))}.border-transparent{border-color:transparent}.border-warning-foreground{border-color:hsl(var(--warning-foreground))}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:#000c}.bg-destructive{background-color:hsl(var(--destructive))}.bg-error{background-color:hsl(var(--error))}.bg-input{background-color:hsl(var(--input))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-secondary{background-color:hsl(var(--secondary))}.bg-success{background-color:hsl(var(--success))}.bg-transparent{background-color:transparent}.bg-warning{background-color:hsl(var(--warning))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-2\.5{padding-left:.625rem}.pr-8{padding-right:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-none{line-height:1}.leading-snug{line-height:1.375}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-error-foreground{color:hsl(var(--error-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-success-foreground{color:hsl(var(--success-foreground))}.text-warning-foreground{color:hsl(var(--warning-foreground))}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[color\,background-color\,box-shadow\]{transition-property:color,background-color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}@media (max-width: 640px){.container{padding-left:1rem;padding-right:1rem}}::-webkit-scrollbar{width:16px}::-webkit-scrollbar-thumb{border-radius:9999px;border:4px solid transparent;background-clip:content-box;background-color:hsl(var(--accent))}::-webkit-scrollbar-corner{display:none}body{font-family:Lato,sans-serif}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.destructive .group-\[\.destructive\]\:text-destructive-foreground{color:hsl(var(--destructive-foreground))}.group.error .group-\[\.error\]\:text-error-foreground{color:hsl(var(--error-foreground))}.group.success .group-\[\.success\]\:text-success-foreground{color:hsl(var(--success-foreground))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.warning .group-\[\.warning\]\:text-warning-foreground{color:hsl(var(--warning-foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[expanded\]\:pointer-events-auto[data-expanded]{pointer-events:auto}.data-\[checked\]\:translate-x-5[data-checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--kb-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--kb-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--kb-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--kb-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.data-\[animate\=\'true\'\]\:animate-pulse[data-animate=true]{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes content-show{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.data-\[expanded\]\:animate-content-show[data-expanded]{animation:content-show .2s ease-out}.data-\[disabled\]\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[orientation\=vertical\]\:overflow-y-clip[data-orientation=vertical]{overflow-y:clip}.data-\[orientation\=vertical\]\:overflow-x-visible[data-orientation=vertical]{overflow-x:visible}.data-\[expanded\]\:rounded-md[data-expanded]{border-radius:calc(var(--radius) - 2px)}.data-\[current\]\:border[data-current]{border-width:1px}.data-\[active\]\:bg-accent\/50[data-active]{background-color:hsl(var(--accent) / .5)}.data-\[checked\]\:bg-primary[data-checked]{background-color:hsl(var(--primary))}.data-\[expanded\]\:bg-accent\/50[data-expanded]{background-color:hsl(var(--accent) / .5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[invalid\]\:text-destructive[data-invalid]{color:hsl(var(--destructive))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\]\:opacity-70[data-disabled]{opacity:.7}.data-\[expanded\]\:opacity-100[data-expanded]{opacity:1}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[closed\=\]\:duration-300[data-closed=""]{transition-duration:.3s}.data-\[expanded\=\]\:duration-500[data-expanded=""]{transition-duration:.5s}.data-\[expanded\]\:ease-out[data-expanded]{transition-timing-function:cubic-bezier(0,0,.2,1)}.data-\[expanded\=\]\:animate-in[data-expanded=""],.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[opened\]\:animate-in[data-opened]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[closed\=\]\:animate-out[data-closed=""],.data-\[closed\]\:animate-out[data-closed],.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[closed\=\]\:fade-out-0[data-closed=""]{--tw-exit-opacity: 0}.data-\[closed\]\:fade-out-80[data-closed]{--tw-exit-opacity: .8}.data-\[expanded\=\]\:fade-in-0[data-expanded=""],.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity: 0}.data-\[closed\=\]\:slide-out-to-bottom[data-closed=""]{--tw-exit-translate-y: 100%}.data-\[closed\=\]\:slide-out-to-left[data-closed=""]{--tw-exit-translate-x: -100%}.data-\[closed\=\]\:slide-out-to-right[data-closed=""]{--tw-exit-translate-x: 100%}.data-\[closed\=\]\:slide-out-to-top[data-closed=""]{--tw-exit-translate-y: -100%}.data-\[closed\]\:slide-out-to-right-full[data-closed]{--tw-exit-translate-x: 100%}.data-\[expanded\=\]\:slide-in-from-bottom[data-expanded=""]{--tw-enter-translate-y: 100%}.data-\[expanded\=\]\:slide-in-from-right[data-expanded=""]{--tw-enter-translate-x: 100%}.data-\[expanded\=\]\:slide-in-from-top[data-expanded=""]{--tw-enter-translate-y: -100%}.data-\[expanded\]\:slide-in-from-left[data-expanded]{--tw-enter-translate-x: -100%}.data-\[opened\]\:slide-in-from-top-full[data-opened]{--tw-enter-translate-y: -100%}.data-\[orientation\=horizontal\]\:data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end][data-orientation=horizontal]{--tw-enter-translate-x: 13rem}.data-\[orientation\=horizontal\]\:data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start][data-orientation=horizontal]{--tw-enter-translate-x: -13rem}.data-\[orientation\=horizontal\]\:data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end][data-orientation=horizontal]{--tw-exit-translate-x: 13rem}.data-\[orientation\=horizontal\]\:data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start][data-orientation=horizontal]{--tw-exit-translate-x: -13rem}.data-\[orientation\=vertical\]\:data-\[motion\=from-end\]\:slide-in-from-bottom-52[data-motion=from-end][data-orientation=vertical]{--tw-enter-translate-y: 13rem}.data-\[orientation\=vertical\]\:data-\[motion\=from-start\]\:slide-in-from-top-52[data-motion=from-start][data-orientation=vertical]{--tw-enter-translate-y: -13rem}.data-\[orientation\=vertical\]\:data-\[motion\=to-end\]\:slide-out-to-bottom-52[data-motion=to-end][data-orientation=vertical],.data-\[orientation\=vertical\]\:data-\[motion\=to-start\]\:slide-out-to-bottom-52[data-motion=to-start][data-orientation=vertical]{--tw-exit-translate-y: 13rem}.data-\[closed\=\]\:duration-300[data-closed=""]{animation-duration:.3s}.data-\[expanded\=\]\:duration-500[data-expanded=""]{animation-duration:.5s}.data-\[expanded\]\:ease-out[data-expanded]{animation-timing-function:cubic-bezier(0,0,.2,1)}.group\/trigger[data-expanded] .group-data-\[expanded\]\/trigger\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/menu[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/menu\:-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/menu[data-orientation=vertical] .group\/trigger[data-expanded] .group-data-\[orientation\=vertical\]\/menu\:group-data-\[expanded\]\/trigger\:rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width: 640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:text-left{text-align:left}.data-\[opened\]\:sm\:slide-in-from-bottom-full[data-opened]{--tw-enter-translate-y: 100%}}@media (min-width: 768px){.md\:h-48{height:12rem}.md\:w-48{width:12rem}.md\:max-w-\[420px\]{max-width:420px}}.\[\&\:focus-visible\+div\]\:outline-none:focus-visible+div{outline:2px solid transparent;outline-offset:2px}.\[\&\:focus-visible\+div\]\:ring-2:focus-visible+div{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.\[\&\:focus-visible\+div\]\:ring-ring:focus-visible+div{--tw-ring-color: hsl(var(--ring))}.\[\&\:focus-visible\+div\]\:ring-offset-2:focus-visible+div{--tw-ring-offset-width: 2px}.\[\&\:focus-visible\+div\]\:ring-offset-background:focus-visible+div{--tw-ring-offset-color: hsl(var(--background))}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\*\]\:flex>*{display:flex}.\[\&\>\*\]\:flex-row>*{flex-direction:row}.\[\&\>\*\]\:items-center>*{align-items:center}.\[\&\>\*\]\:gap-1>*{gap:.25rem}.\[\&\>li\]\:w-full>li{width:100%}.\[\&\>ul\]\:justify-center>ul{justify-content:center}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}
package/dist/index.cjs CHANGED
@@ -2425,7 +2425,63 @@ var __webpack_exports__ = {};
2425
2425
  var _validateReport = __webpack_require__("../../node_modules/.pnpm/typia@8.0.3_@samchon+openapi@3.1.0_typescript@5.6.3/node_modules/typia/lib/internal/_validateReport.js");
2426
2426
  var cjs = __webpack_require__("../../node_modules/.pnpm/@hono+typia-validator@0.1.0_hono@4.6.3_typia@8.0.3_@samchon+openapi@3.1.0_typescript@5.6.3_/node_modules/@hono/typia-validator/dist/cjs/index.js");
2427
2427
  const plugin_core_namespaceObject = require("@hot-updater/plugin-core");
2428
- const bundleIdValidator = (()=>{
2428
+ const queryBundlesSchema = (()=>{
2429
+ const _io0 = (input)=>(void 0 === input.channel || "string" == typeof input.channel) && (void 0 === input.platform || "ios" === input.platform || "android" === input.platform) && (void 0 === input.limit || "string" == typeof input.limit) && (void 0 === input.offset || "string" == typeof input.offset);
2430
+ const _vo0 = (input, _path, _exceptionable = true)=>[
2431
+ void 0 === input.channel || "string" == typeof input.channel || _report(_exceptionable, {
2432
+ path: _path + ".channel",
2433
+ expected: "(string | undefined)",
2434
+ value: input.channel
2435
+ }),
2436
+ void 0 === input.platform || "ios" === input.platform || "android" === input.platform || _report(_exceptionable, {
2437
+ path: _path + ".platform",
2438
+ expected: "(\"android\" | \"ios\" | undefined)",
2439
+ value: input.platform
2440
+ }),
2441
+ void 0 === input.limit || "string" == typeof input.limit || _report(_exceptionable, {
2442
+ path: _path + ".limit",
2443
+ expected: "(string | undefined)",
2444
+ value: input.limit
2445
+ }),
2446
+ void 0 === input.offset || "string" == typeof input.offset || _report(_exceptionable, {
2447
+ path: _path + ".offset",
2448
+ expected: "(string | undefined)",
2449
+ value: input.offset
2450
+ })
2451
+ ].every((flag)=>flag);
2452
+ const __is = (input)=>"object" == typeof input && null !== input && false === Array.isArray(input) && _io0(input);
2453
+ let errors;
2454
+ let _report;
2455
+ return (input)=>{
2456
+ if (false === __is(input)) {
2457
+ errors = [];
2458
+ _report = _validateReport._validateReport(errors);
2459
+ ((input, _path, _exceptionable = true)=>("object" == typeof input && null !== input && false === Array.isArray(input) || _report(true, {
2460
+ path: _path + "",
2461
+ expected: "__type",
2462
+ value: input
2463
+ })) && _vo0(input, _path + "", true) || _report(true, {
2464
+ path: _path + "",
2465
+ expected: "__type",
2466
+ value: input
2467
+ }))(input, "$input", true);
2468
+ const success = 0 === errors.length;
2469
+ return success ? {
2470
+ success,
2471
+ data: input
2472
+ } : {
2473
+ success,
2474
+ errors,
2475
+ data: input
2476
+ };
2477
+ }
2478
+ return {
2479
+ success: true,
2480
+ data: input
2481
+ };
2482
+ };
2483
+ })();
2484
+ const paramBundleIdSchema = (()=>{
2429
2485
  const _io0 = (input)=>"string" == typeof input.bundleId;
2430
2486
  const _vo0 = (input, _path, _exceptionable = true)=>[
2431
2487
  "string" == typeof input.bundleId || _report(_exceptionable, {
@@ -2466,26 +2522,9 @@ var __webpack_exports__ = {};
2466
2522
  };
2467
2523
  };
2468
2524
  })();
2469
- const updateBundleValidator = (()=>{
2470
- const _io0 = (input)=>"string" == typeof input.targetBundleId && "object" == typeof input.bundle && null !== input.bundle && false === Array.isArray(input.bundle) && _io1(input.bundle);
2471
- const _io1 = (input)=>(void 0 === input.id || "string" == typeof input.id) && (void 0 === input.platform || "ios" === input.platform || "android" === input.platform) && (void 0 === input.targetAppVersion || "string" == typeof input.targetAppVersion) && (void 0 === input.shouldForceUpdate || "boolean" == typeof input.shouldForceUpdate) && (void 0 === input.enabled || "boolean" == typeof input.enabled) && (void 0 === input.fileUrl || "string" == typeof input.fileUrl) && (void 0 === input.fileHash || "string" == typeof input.fileHash) && (null === input.gitCommitHash || void 0 === input.gitCommitHash || "string" == typeof input.gitCommitHash) && (null === input.message || void 0 === input.message || "string" == typeof input.message);
2525
+ const updateBundleSchema = (()=>{
2526
+ const _io0 = (input)=>(void 0 === input.id || "string" == typeof input.id) && (void 0 === input.platform || "ios" === input.platform || "android" === input.platform) && (void 0 === input.targetAppVersion || "string" == typeof input.targetAppVersion) && (void 0 === input.shouldForceUpdate || "boolean" == typeof input.shouldForceUpdate) && (void 0 === input.enabled || "boolean" == typeof input.enabled) && (void 0 === input.fileHash || "string" == typeof input.fileHash) && (null === input.gitCommitHash || void 0 === input.gitCommitHash || "string" == typeof input.gitCommitHash) && (null === input.message || void 0 === input.message || "string" == typeof input.message) && (void 0 === input.channel || "string" == typeof input.channel);
2472
2527
  const _vo0 = (input, _path, _exceptionable = true)=>[
2473
- "string" == typeof input.targetBundleId || _report(_exceptionable, {
2474
- path: _path + ".targetBundleId",
2475
- expected: "string",
2476
- value: input.targetBundleId
2477
- }),
2478
- ("object" == typeof input.bundle && null !== input.bundle && false === Array.isArray(input.bundle) || _report(_exceptionable, {
2479
- path: _path + ".bundle",
2480
- expected: "Partial<Bundle>",
2481
- value: input.bundle
2482
- })) && _vo1(input.bundle, _path + ".bundle", _exceptionable) || _report(_exceptionable, {
2483
- path: _path + ".bundle",
2484
- expected: "Partial<Bundle>",
2485
- value: input.bundle
2486
- })
2487
- ].every((flag)=>flag);
2488
- const _vo1 = (input, _path, _exceptionable = true)=>[
2489
2528
  void 0 === input.id || "string" == typeof input.id || _report(_exceptionable, {
2490
2529
  path: _path + ".id",
2491
2530
  expected: "(string | undefined)",
@@ -2511,11 +2550,6 @@ var __webpack_exports__ = {};
2511
2550
  expected: "(boolean | undefined)",
2512
2551
  value: input.enabled
2513
2552
  }),
2514
- void 0 === input.fileUrl || "string" == typeof input.fileUrl || _report(_exceptionable, {
2515
- path: _path + ".fileUrl",
2516
- expected: "(string | undefined)",
2517
- value: input.fileUrl
2518
- }),
2519
2553
  void 0 === input.fileHash || "string" == typeof input.fileHash || _report(_exceptionable, {
2520
2554
  path: _path + ".fileHash",
2521
2555
  expected: "(string | undefined)",
@@ -2530,22 +2564,27 @@ var __webpack_exports__ = {};
2530
2564
  path: _path + ".message",
2531
2565
  expected: "(null | string | undefined)",
2532
2566
  value: input.message
2567
+ }),
2568
+ void 0 === input.channel || "string" == typeof input.channel || _report(_exceptionable, {
2569
+ path: _path + ".channel",
2570
+ expected: "(string | undefined)",
2571
+ value: input.channel
2533
2572
  })
2534
2573
  ].every((flag)=>flag);
2535
- const __is = (input)=>"object" == typeof input && null !== input && _io0(input);
2574
+ const __is = (input)=>"object" == typeof input && null !== input && false === Array.isArray(input) && _io0(input);
2536
2575
  let errors;
2537
2576
  let _report;
2538
2577
  return (input)=>{
2539
2578
  if (false === __is(input)) {
2540
2579
  errors = [];
2541
2580
  _report = _validateReport._validateReport(errors);
2542
- ((input, _path, _exceptionable = true)=>("object" == typeof input && null !== input || _report(true, {
2581
+ ((input, _path, _exceptionable = true)=>("object" == typeof input && null !== input && false === Array.isArray(input) || _report(true, {
2543
2582
  path: _path + "",
2544
- expected: "__type",
2583
+ expected: "Partial<Bundle>",
2545
2584
  value: input
2546
2585
  })) && _vo0(input, _path + "", true) || _report(true, {
2547
2586
  path: _path + "",
2548
- expected: "__type",
2587
+ expected: "Partial<Bundle>",
2549
2588
  value: input
2550
2589
  }))(input, "$input", true);
2551
2590
  const success = 0 === errors.length;
@@ -2564,42 +2603,104 @@ var __webpack_exports__ = {};
2564
2603
  };
2565
2604
  };
2566
2605
  })();
2567
- let rpc_config = null;
2568
- let rpc_databasePlugin = null;
2606
+ let configPromise = null;
2569
2607
  const prepareConfig = async ()=>{
2570
- if (!rpc_config) {
2571
- rpc_config = await (0, plugin_core_namespaceObject.loadConfig)({
2572
- platform: "console"
2608
+ if (!configPromise) configPromise = (async ()=>{
2609
+ try {
2610
+ const config = await (0, plugin_core_namespaceObject.loadConfig)(null);
2611
+ const databasePlugin = await config?.database({
2612
+ cwd: plugin_core_namespaceObject.getCwd()
2613
+ }) ?? null;
2614
+ if (!databasePlugin) throw new Error("Database plugin initialization failed");
2615
+ return {
2616
+ config,
2617
+ databasePlugin
2618
+ };
2619
+ } catch (error) {
2620
+ console.error("Error during configuration initialization:", error);
2621
+ throw error;
2622
+ }
2623
+ })();
2624
+ return configPromise;
2625
+ };
2626
+ const rpc = new hono_Hono().get("/config", async (c)=>{
2627
+ try {
2628
+ const { config } = await prepareConfig();
2629
+ return c.json({
2630
+ console: config.console
2573
2631
  });
2574
- rpc_databasePlugin = await rpc_config?.database({
2575
- cwd: plugin_core_namespaceObject.getCwd()
2576
- }) ?? null;
2632
+ } catch (error) {
2633
+ console.error("Error during config retrieval:", error);
2634
+ throw error;
2635
+ }
2636
+ }).get("/channels", async (c)=>{
2637
+ try {
2638
+ const { databasePlugin } = await prepareConfig();
2639
+ const channels = await databasePlugin.getChannels();
2640
+ return c.json(channels ?? []);
2641
+ } catch (error) {
2642
+ console.error("Error during channel retrieval:", error);
2643
+ throw error;
2644
+ }
2645
+ }).get("/config-loaded", (c)=>{
2646
+ try {
2647
+ const isLoaded = !!configPromise;
2648
+ return c.json({
2649
+ configLoaded: isLoaded
2650
+ });
2651
+ } catch (error) {
2652
+ console.error("Error during config loaded retrieval:", error);
2653
+ throw error;
2654
+ }
2655
+ }).get("/bundles", (0, cjs.typiaValidator)("query", queryBundlesSchema), async (c)=>{
2656
+ try {
2657
+ const query = c.req.valid("query");
2658
+ const { databasePlugin } = await prepareConfig();
2659
+ const bundles = await databasePlugin.getBundles({
2660
+ where: {
2661
+ channel: query.channel ?? void 0,
2662
+ platform: query.platform ?? void 0
2663
+ },
2664
+ limit: query.limit ? Number(query.limit) : void 0,
2665
+ offset: query.offset ? Number(query.offset) : void 0
2666
+ });
2667
+ return c.json(bundles ?? []);
2668
+ } catch (error) {
2669
+ console.error("Error during bundle retrieval:", error);
2670
+ throw error;
2671
+ }
2672
+ }).get("/bundles/:bundleId", (0, cjs.typiaValidator)("param", paramBundleIdSchema), async (c)=>{
2673
+ try {
2674
+ const { bundleId } = c.req.valid("param");
2675
+ const { databasePlugin } = await prepareConfig();
2676
+ const bundle = await databasePlugin.getBundleById(bundleId);
2677
+ return c.json(bundle ?? null);
2678
+ } catch (error) {
2679
+ console.error("Error during bundle retrieval:", error);
2680
+ throw error;
2681
+ }
2682
+ }).patch("/bundles/:bundleId", (0, cjs.typiaValidator)("json", updateBundleSchema), async (c)=>{
2683
+ try {
2684
+ const bundleId = c.req.param("bundleId");
2685
+ const partialBundle = c.req.valid("json");
2686
+ if (!bundleId) return c.json({
2687
+ error: "Target bundle ID is required"
2688
+ }, 400);
2689
+ const { databasePlugin } = await prepareConfig();
2690
+ await databasePlugin.updateBundle(bundleId, partialBundle);
2691
+ await databasePlugin.commitBundle();
2692
+ return c.json({
2693
+ success: true
2694
+ });
2695
+ } catch (error) {
2696
+ console.error("Error during bundle update:", error);
2697
+ if (error && "object" == typeof error && "message" in error) return c.json({
2698
+ error: error.message
2699
+ }, 500);
2700
+ return c.json({
2701
+ error: "Unknown error"
2702
+ }, 500);
2577
2703
  }
2578
- return {
2579
- config: rpc_config,
2580
- databasePlugin: rpc_databasePlugin
2581
- };
2582
- };
2583
- const rpc = new hono_Hono().get("/getConfig", async (c)=>{
2584
- const { config } = await prepareConfig();
2585
- return c.json({
2586
- console: config?.console
2587
- });
2588
- }).get("/isConfigLoaded", (c)=>c.json(null !== rpc_config)).get("/getBundles", async (c)=>{
2589
- const { databasePlugin } = await prepareConfig();
2590
- const bundles = await databasePlugin?.getBundles(true);
2591
- return c.json(bundles ?? []);
2592
- }).get("/getBundleById", (0, cjs.typiaValidator)("query", bundleIdValidator), async (c)=>{
2593
- const { bundleId } = c.req.valid("query");
2594
- const { databasePlugin } = await prepareConfig();
2595
- const bundle = await databasePlugin?.getBundleById(bundleId);
2596
- return c.json(bundle ?? null);
2597
- }).post("/updateBundle", (0, cjs.typiaValidator)("json", updateBundleValidator), async (c)=>{
2598
- const { targetBundleId, bundle } = c.req.valid("json");
2599
- const { databasePlugin } = await prepareConfig();
2600
- await databasePlugin?.updateBundle(targetBundleId, bundle);
2601
- await databasePlugin?.commitBundle();
2602
- return c.json(true);
2603
2704
  });
2604
2705
  const src_server_rslib_entry_dirname = external_path_default().dirname((0, external_url_namespaceObject.fileURLToPath)(__rslib_import_meta_url__));
2605
2706
  const relativePathToScript = external_path_default().relative(process.cwd(), src_server_rslib_entry_dirname);
package/dist/index.html CHANGED
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/x-icon" href="/assets/favicon-BkwcEHsj.ico" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Hot Updater Console</title>
8
- <script type="module" crossorigin src="/assets/index-CiYz-DpZ.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-y9HrkcYR.css">
8
+ <script type="module" crossorigin src="/assets/index-DAX_alp5.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-paAi6YFm.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/dist/index.js CHANGED
@@ -2386,7 +2386,63 @@ var hono_Hono = class extends Hono {
2386
2386
  };
2387
2387
  var _validateReport = __webpack_require__("../../node_modules/.pnpm/typia@8.0.3_@samchon+openapi@3.1.0_typescript@5.6.3/node_modules/typia/lib/internal/_validateReport.js");
2388
2388
  var cjs = __webpack_require__("../../node_modules/.pnpm/@hono+typia-validator@0.1.0_hono@4.6.3_typia@8.0.3_@samchon+openapi@3.1.0_typescript@5.6.3_/node_modules/@hono/typia-validator/dist/cjs/index.js");
2389
- const bundleIdValidator = (()=>{
2389
+ const queryBundlesSchema = (()=>{
2390
+ const _io0 = (input)=>(void 0 === input.channel || "string" == typeof input.channel) && (void 0 === input.platform || "ios" === input.platform || "android" === input.platform) && (void 0 === input.limit || "string" == typeof input.limit) && (void 0 === input.offset || "string" == typeof input.offset);
2391
+ const _vo0 = (input, _path, _exceptionable = true)=>[
2392
+ void 0 === input.channel || "string" == typeof input.channel || _report(_exceptionable, {
2393
+ path: _path + ".channel",
2394
+ expected: "(string | undefined)",
2395
+ value: input.channel
2396
+ }),
2397
+ void 0 === input.platform || "ios" === input.platform || "android" === input.platform || _report(_exceptionable, {
2398
+ path: _path + ".platform",
2399
+ expected: "(\"android\" | \"ios\" | undefined)",
2400
+ value: input.platform
2401
+ }),
2402
+ void 0 === input.limit || "string" == typeof input.limit || _report(_exceptionable, {
2403
+ path: _path + ".limit",
2404
+ expected: "(string | undefined)",
2405
+ value: input.limit
2406
+ }),
2407
+ void 0 === input.offset || "string" == typeof input.offset || _report(_exceptionable, {
2408
+ path: _path + ".offset",
2409
+ expected: "(string | undefined)",
2410
+ value: input.offset
2411
+ })
2412
+ ].every((flag)=>flag);
2413
+ const __is = (input)=>"object" == typeof input && null !== input && false === Array.isArray(input) && _io0(input);
2414
+ let errors;
2415
+ let _report;
2416
+ return (input)=>{
2417
+ if (false === __is(input)) {
2418
+ errors = [];
2419
+ _report = _validateReport._validateReport(errors);
2420
+ ((input, _path, _exceptionable = true)=>("object" == typeof input && null !== input && false === Array.isArray(input) || _report(true, {
2421
+ path: _path + "",
2422
+ expected: "__type",
2423
+ value: input
2424
+ })) && _vo0(input, _path + "", true) || _report(true, {
2425
+ path: _path + "",
2426
+ expected: "__type",
2427
+ value: input
2428
+ }))(input, "$input", true);
2429
+ const success = 0 === errors.length;
2430
+ return success ? {
2431
+ success,
2432
+ data: input
2433
+ } : {
2434
+ success,
2435
+ errors,
2436
+ data: input
2437
+ };
2438
+ }
2439
+ return {
2440
+ success: true,
2441
+ data: input
2442
+ };
2443
+ };
2444
+ })();
2445
+ const paramBundleIdSchema = (()=>{
2390
2446
  const _io0 = (input)=>"string" == typeof input.bundleId;
2391
2447
  const _vo0 = (input, _path, _exceptionable = true)=>[
2392
2448
  "string" == typeof input.bundleId || _report(_exceptionable, {
@@ -2427,26 +2483,9 @@ const bundleIdValidator = (()=>{
2427
2483
  };
2428
2484
  };
2429
2485
  })();
2430
- const updateBundleValidator = (()=>{
2431
- const _io0 = (input)=>"string" == typeof input.targetBundleId && "object" == typeof input.bundle && null !== input.bundle && false === Array.isArray(input.bundle) && _io1(input.bundle);
2432
- const _io1 = (input)=>(void 0 === input.id || "string" == typeof input.id) && (void 0 === input.platform || "ios" === input.platform || "android" === input.platform) && (void 0 === input.targetAppVersion || "string" == typeof input.targetAppVersion) && (void 0 === input.shouldForceUpdate || "boolean" == typeof input.shouldForceUpdate) && (void 0 === input.enabled || "boolean" == typeof input.enabled) && (void 0 === input.fileUrl || "string" == typeof input.fileUrl) && (void 0 === input.fileHash || "string" == typeof input.fileHash) && (null === input.gitCommitHash || void 0 === input.gitCommitHash || "string" == typeof input.gitCommitHash) && (null === input.message || void 0 === input.message || "string" == typeof input.message);
2486
+ const updateBundleSchema = (()=>{
2487
+ const _io0 = (input)=>(void 0 === input.id || "string" == typeof input.id) && (void 0 === input.platform || "ios" === input.platform || "android" === input.platform) && (void 0 === input.targetAppVersion || "string" == typeof input.targetAppVersion) && (void 0 === input.shouldForceUpdate || "boolean" == typeof input.shouldForceUpdate) && (void 0 === input.enabled || "boolean" == typeof input.enabled) && (void 0 === input.fileHash || "string" == typeof input.fileHash) && (null === input.gitCommitHash || void 0 === input.gitCommitHash || "string" == typeof input.gitCommitHash) && (null === input.message || void 0 === input.message || "string" == typeof input.message) && (void 0 === input.channel || "string" == typeof input.channel);
2433
2488
  const _vo0 = (input, _path, _exceptionable = true)=>[
2434
- "string" == typeof input.targetBundleId || _report(_exceptionable, {
2435
- path: _path + ".targetBundleId",
2436
- expected: "string",
2437
- value: input.targetBundleId
2438
- }),
2439
- ("object" == typeof input.bundle && null !== input.bundle && false === Array.isArray(input.bundle) || _report(_exceptionable, {
2440
- path: _path + ".bundle",
2441
- expected: "Partial<Bundle>",
2442
- value: input.bundle
2443
- })) && _vo1(input.bundle, _path + ".bundle", _exceptionable) || _report(_exceptionable, {
2444
- path: _path + ".bundle",
2445
- expected: "Partial<Bundle>",
2446
- value: input.bundle
2447
- })
2448
- ].every((flag)=>flag);
2449
- const _vo1 = (input, _path, _exceptionable = true)=>[
2450
2489
  void 0 === input.id || "string" == typeof input.id || _report(_exceptionable, {
2451
2490
  path: _path + ".id",
2452
2491
  expected: "(string | undefined)",
@@ -2472,11 +2511,6 @@ const updateBundleValidator = (()=>{
2472
2511
  expected: "(boolean | undefined)",
2473
2512
  value: input.enabled
2474
2513
  }),
2475
- void 0 === input.fileUrl || "string" == typeof input.fileUrl || _report(_exceptionable, {
2476
- path: _path + ".fileUrl",
2477
- expected: "(string | undefined)",
2478
- value: input.fileUrl
2479
- }),
2480
2514
  void 0 === input.fileHash || "string" == typeof input.fileHash || _report(_exceptionable, {
2481
2515
  path: _path + ".fileHash",
2482
2516
  expected: "(string | undefined)",
@@ -2491,22 +2525,27 @@ const updateBundleValidator = (()=>{
2491
2525
  path: _path + ".message",
2492
2526
  expected: "(null | string | undefined)",
2493
2527
  value: input.message
2528
+ }),
2529
+ void 0 === input.channel || "string" == typeof input.channel || _report(_exceptionable, {
2530
+ path: _path + ".channel",
2531
+ expected: "(string | undefined)",
2532
+ value: input.channel
2494
2533
  })
2495
2534
  ].every((flag)=>flag);
2496
- const __is = (input)=>"object" == typeof input && null !== input && _io0(input);
2535
+ const __is = (input)=>"object" == typeof input && null !== input && false === Array.isArray(input) && _io0(input);
2497
2536
  let errors;
2498
2537
  let _report;
2499
2538
  return (input)=>{
2500
2539
  if (false === __is(input)) {
2501
2540
  errors = [];
2502
2541
  _report = _validateReport._validateReport(errors);
2503
- ((input, _path, _exceptionable = true)=>("object" == typeof input && null !== input || _report(true, {
2542
+ ((input, _path, _exceptionable = true)=>("object" == typeof input && null !== input && false === Array.isArray(input) || _report(true, {
2504
2543
  path: _path + "",
2505
- expected: "__type",
2544
+ expected: "Partial<Bundle>",
2506
2545
  value: input
2507
2546
  })) && _vo0(input, _path + "", true) || _report(true, {
2508
2547
  path: _path + "",
2509
- expected: "__type",
2548
+ expected: "Partial<Bundle>",
2510
2549
  value: input
2511
2550
  }))(input, "$input", true);
2512
2551
  const success = 0 === errors.length;
@@ -2525,42 +2564,104 @@ const updateBundleValidator = (()=>{
2525
2564
  };
2526
2565
  };
2527
2566
  })();
2528
- let rpc_config = null;
2529
- let rpc_databasePlugin = null;
2567
+ let configPromise = null;
2530
2568
  const prepareConfig = async ()=>{
2531
- if (!rpc_config) {
2532
- rpc_config = await (0, __WEBPACK_EXTERNAL_MODULE__hot_updater_plugin_core_40c1c502__.loadConfig)({
2533
- platform: "console"
2569
+ if (!configPromise) configPromise = (async ()=>{
2570
+ try {
2571
+ const config = await (0, __WEBPACK_EXTERNAL_MODULE__hot_updater_plugin_core_40c1c502__.loadConfig)(null);
2572
+ const databasePlugin = await config?.database({
2573
+ cwd: __WEBPACK_EXTERNAL_MODULE__hot_updater_plugin_core_40c1c502__.getCwd()
2574
+ }) ?? null;
2575
+ if (!databasePlugin) throw new Error("Database plugin initialization failed");
2576
+ return {
2577
+ config,
2578
+ databasePlugin
2579
+ };
2580
+ } catch (error) {
2581
+ console.error("Error during configuration initialization:", error);
2582
+ throw error;
2583
+ }
2584
+ })();
2585
+ return configPromise;
2586
+ };
2587
+ const rpc = new hono_Hono().get("/config", async (c)=>{
2588
+ try {
2589
+ const { config } = await prepareConfig();
2590
+ return c.json({
2591
+ console: config.console
2534
2592
  });
2535
- rpc_databasePlugin = await rpc_config?.database({
2536
- cwd: __WEBPACK_EXTERNAL_MODULE__hot_updater_plugin_core_40c1c502__.getCwd()
2537
- }) ?? null;
2593
+ } catch (error) {
2594
+ console.error("Error during config retrieval:", error);
2595
+ throw error;
2596
+ }
2597
+ }).get("/channels", async (c)=>{
2598
+ try {
2599
+ const { databasePlugin } = await prepareConfig();
2600
+ const channels = await databasePlugin.getChannels();
2601
+ return c.json(channels ?? []);
2602
+ } catch (error) {
2603
+ console.error("Error during channel retrieval:", error);
2604
+ throw error;
2605
+ }
2606
+ }).get("/config-loaded", (c)=>{
2607
+ try {
2608
+ const isLoaded = !!configPromise;
2609
+ return c.json({
2610
+ configLoaded: isLoaded
2611
+ });
2612
+ } catch (error) {
2613
+ console.error("Error during config loaded retrieval:", error);
2614
+ throw error;
2615
+ }
2616
+ }).get("/bundles", (0, cjs.typiaValidator)("query", queryBundlesSchema), async (c)=>{
2617
+ try {
2618
+ const query = c.req.valid("query");
2619
+ const { databasePlugin } = await prepareConfig();
2620
+ const bundles = await databasePlugin.getBundles({
2621
+ where: {
2622
+ channel: query.channel ?? void 0,
2623
+ platform: query.platform ?? void 0
2624
+ },
2625
+ limit: query.limit ? Number(query.limit) : void 0,
2626
+ offset: query.offset ? Number(query.offset) : void 0
2627
+ });
2628
+ return c.json(bundles ?? []);
2629
+ } catch (error) {
2630
+ console.error("Error during bundle retrieval:", error);
2631
+ throw error;
2632
+ }
2633
+ }).get("/bundles/:bundleId", (0, cjs.typiaValidator)("param", paramBundleIdSchema), async (c)=>{
2634
+ try {
2635
+ const { bundleId } = c.req.valid("param");
2636
+ const { databasePlugin } = await prepareConfig();
2637
+ const bundle = await databasePlugin.getBundleById(bundleId);
2638
+ return c.json(bundle ?? null);
2639
+ } catch (error) {
2640
+ console.error("Error during bundle retrieval:", error);
2641
+ throw error;
2642
+ }
2643
+ }).patch("/bundles/:bundleId", (0, cjs.typiaValidator)("json", updateBundleSchema), async (c)=>{
2644
+ try {
2645
+ const bundleId = c.req.param("bundleId");
2646
+ const partialBundle = c.req.valid("json");
2647
+ if (!bundleId) return c.json({
2648
+ error: "Target bundle ID is required"
2649
+ }, 400);
2650
+ const { databasePlugin } = await prepareConfig();
2651
+ await databasePlugin.updateBundle(bundleId, partialBundle);
2652
+ await databasePlugin.commitBundle();
2653
+ return c.json({
2654
+ success: true
2655
+ });
2656
+ } catch (error) {
2657
+ console.error("Error during bundle update:", error);
2658
+ if (error && "object" == typeof error && "message" in error) return c.json({
2659
+ error: error.message
2660
+ }, 500);
2661
+ return c.json({
2662
+ error: "Unknown error"
2663
+ }, 500);
2538
2664
  }
2539
- return {
2540
- config: rpc_config,
2541
- databasePlugin: rpc_databasePlugin
2542
- };
2543
- };
2544
- const rpc = new hono_Hono().get("/getConfig", async (c)=>{
2545
- const { config } = await prepareConfig();
2546
- return c.json({
2547
- console: config?.console
2548
- });
2549
- }).get("/isConfigLoaded", (c)=>c.json(null !== rpc_config)).get("/getBundles", async (c)=>{
2550
- const { databasePlugin } = await prepareConfig();
2551
- const bundles = await databasePlugin?.getBundles(true);
2552
- return c.json(bundles ?? []);
2553
- }).get("/getBundleById", (0, cjs.typiaValidator)("query", bundleIdValidator), async (c)=>{
2554
- const { bundleId } = c.req.valid("query");
2555
- const { databasePlugin } = await prepareConfig();
2556
- const bundle = await databasePlugin?.getBundleById(bundleId);
2557
- return c.json(bundle ?? null);
2558
- }).post("/updateBundle", (0, cjs.typiaValidator)("json", updateBundleValidator), async (c)=>{
2559
- const { targetBundleId, bundle } = c.req.valid("json");
2560
- const { databasePlugin } = await prepareConfig();
2561
- await databasePlugin?.updateBundle(targetBundleId, bundle);
2562
- await databasePlugin?.commitBundle();
2563
- return c.json(true);
2564
2665
  });
2565
2666
  const src_server_rslib_entry_dirname = __WEBPACK_EXTERNAL_MODULE_path__["default"].dirname((0, __WEBPACK_EXTERNAL_MODULE_url__.fileURLToPath)(import.meta.url));
2566
2667
  const relativePathToScript = __WEBPACK_EXTERNAL_MODULE_path__["default"].relative(process.cwd(), src_server_rslib_entry_dirname);
@@ -0,0 +1,9 @@
1
+ import type { Platform } from "@hot-updater/plugin-core";
2
+ export declare const useFilter: () => {
3
+ bundleIdFilter: import("solid-js").Accessor<string | null>;
4
+ channelFilter: import("solid-js").Accessor<string | null>;
5
+ platformFilter: import("solid-js").Accessor<Platform | null>;
6
+ setBundleIdFilter: (bundleId: string | null) => void;
7
+ setChannelFilter: (channel: string | null) => void;
8
+ setPlatformFilter: (platform: Platform | null) => void;
9
+ };