@avion-block/nuxt-mongoose 1.1.0-dev.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.
Files changed (33) hide show
  1. package/README.md +139 -0
  2. package/dist/client/200.html +1 -0
  3. package/dist/client/404.html +1 -0
  4. package/dist/client/_nuxt/Be_8YVmd.js +1 -0
  5. package/dist/client/_nuxt/BgqxMV_S.js +1 -0
  6. package/dist/client/_nuxt/BhG4bLuH.js +1 -0
  7. package/dist/client/_nuxt/C1_0osGQ.js +4 -0
  8. package/dist/client/_nuxt/DKP8g6aG.js +1 -0
  9. package/dist/client/_nuxt/DLYYGG6i.js +1 -0
  10. package/dist/client/_nuxt/Dg51sM1p.js +1 -0
  11. package/dist/client/_nuxt/builds/latest.json +1 -0
  12. package/dist/client/_nuxt/builds/meta/9f2a79dd-102e-4943-be21-dd8083c43b3d.json +1 -0
  13. package/dist/client/_nuxt/entry.Cp4I88Tv.css +1 -0
  14. package/dist/client/_nuxt/error-404.Dmi5Qu-g.css +1 -0
  15. package/dist/client/_nuxt/error-500.BMT8OSvZ.css +1 -0
  16. package/dist/client/_nuxt/index.DZHRaZYA.css +1 -0
  17. package/dist/client/index.html +1 -0
  18. package/dist/module.d.mts +43 -0
  19. package/dist/module.json +9 -0
  20. package/dist/module.mjs +413 -0
  21. package/dist/runtime/server/plugins/mongoose.db.d.ts +2 -0
  22. package/dist/runtime/server/plugins/mongoose.db.js +4 -0
  23. package/dist/runtime/server/services/connection.d.ts +5 -0
  24. package/dist/runtime/server/services/connection.js +24 -0
  25. package/dist/runtime/server/services/discriminator.d.ts +9 -0
  26. package/dist/runtime/server/services/discriminator.js +18 -0
  27. package/dist/runtime/server/services/index.d.ts +3 -0
  28. package/dist/runtime/server/services/index.js +3 -0
  29. package/dist/runtime/server/services/model.d.ts +8 -0
  30. package/dist/runtime/server/services/model.js +17 -0
  31. package/dist/runtime/server/tsconfig.json +3 -0
  32. package/dist/types.d.mts +3 -0
  33. package/package.json +88 -0
@@ -0,0 +1 @@
1
+ import{_ as s}from"./DKP8g6aG.js";import{_ as a,u as i,o as u,c,a as t,t as n,b as l,w as d,d as f}from"./C1_0osGQ.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return i({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;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;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return u(),c("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[l(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:d(()=>[f(n(e.backHome),1)]),_:1})])])])}}},N=a(y,[["__scopeId","data-v-a78b16e0"]]);export{N as default};
@@ -0,0 +1 @@
1
+ {"id":"9f2a79dd-102e-4943-be21-dd8083c43b3d","timestamp":1772769616624}
@@ -0,0 +1 @@
1
+ {"id":"9f2a79dd-102e-4943-be21-dd8083c43b3d","timestamp":1772769616624,"prerendered":[]}
@@ -0,0 +1 @@
1
+ :root{--nui-c-context:125,125,125}html{background-color:#fff}html.dark{background-color:#151515;color:#fff;color-scheme:dark}::-moz-selection{background:#8884}::selection{background:#8884}.shiki .line{display:inline-block;position:relative;width:100%}.shiki.diff .line>span{filter:saturate(.75);opacity:.75}.shiki.diff .line-added,.shiki.diff .line-removed{scroll-margin:5em}.shiki.diff .line-added>span,.shiki.diff .line-removed>span{opacity:1!important;position:inherit;scroll-margin:20px;z-index:100}.shiki.diff .line-added>span{color:#218c3b!important}.shiki.diff .line-removed>span{color:#d15547!important}.shiki .line-added:after{background-color:#43885420}.shiki .line-added:after,.shiki .line-removed:after{content:"";display:block;inset:0;position:absolute}.shiki .line-removed:after{background-color:#8f4c3926}::view-transition-new(root),::view-transition-old(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2147483646}.dark::view-transition-old(root){z-index:2147483646}.dark::view-transition-new(root){z-index:1}*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;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;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}@font-face{font-display:swap;font-family:DM Mono;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/dmmono/v16/aFTU7PB1QTsUX8KYthSQBK6PYK3EXw.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:DM Mono;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/dmmono/v16/aFTU7PB1QTsUX8KYthqQBK6PYK0.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:DM Sans;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAopxRR232RmYJp8I5zzw.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:DM Sans;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAopxRSW32RmYJp8I5.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.carbon-add,.carbon\:add{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17 15V8h-2v7H8v2h7v7h2v-7h7v-2z'/%3E%3C/svg%3E")}.carbon-add,.carbon-close,.carbon\:add{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.carbon-close{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17.414 16L24 9.414L22.586 8L16 14.586L9.414 8L8 9.414L14.586 16L8 22.586L9.414 24L16 17.414L22.586 24L24 22.586z'/%3E%3C/svg%3E")}.carbon-copy{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28 10v18H10V10zm0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2'/%3E%3Cpath fill='currentColor' d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3C/svg%3E")}.carbon-copy,.carbon-data-base{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.carbon-data-base{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M24 3H8a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m0 2v6H8V5ZM8 19v-6h16v6Zm0 8v-6h16v6Z'/%3E%3Ccircle cx='11' cy='8' r='1' fill='currentColor'/%3E%3Ccircle cx='11' cy='16' r='1' fill='currentColor'/%3E%3Ccircle cx='11' cy='24' r='1' fill='currentColor'/%3E%3C/svg%3E")}.carbon-db2-database{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 3C10.702 3 5 4.252 5 7v18c0 2.748 5.702 4 11 4s11-1.252 11-4V7c0-2.748-5.702-4-11-4m0 2c5.798 0 8.795 1.434 8.997 2c-.202.566-3.2 2-8.997 2c-5.841 0-8.84-1.456-9-1.982v-.005C7.16 6.456 10.159 5 16 5M7 9.428C9.128 10.495 12.643 11 16 11s6.872-.505 9-1.572v3.56c-.16.556-3.159 2.012-9 2.012c-5.85 0-8.85-1.46-9-2zm0 6C9.128 16.495 12.643 17 16 17s6.872-.505 9-1.572v3.56c-.16.556-3.159 2.012-9 2.012c-5.85 0-8.85-1.46-9-2zM16 27c-5.85 0-8.85-1.46-9-2v-3.572C9.128 22.495 12.643 23 16 23s6.872-.505 9-1.572v3.56c-.16.556-3.159 2.012-9 2.012'/%3E%3C/svg%3E")}.carbon-db2-database,.carbon-document{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.carbon-document{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m25.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7M18 4.4l5.6 5.6H18zM24 28H8V4h8v6c0 1.1.9 2 2 2h6z'/%3E%3Cpath fill='currentColor' d='M10 22h12v2H10zm0-6h12v2H10z'/%3E%3C/svg%3E")}.carbon-document-multiple-02{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M18 31H6c-1.1 0-2-.9-2-2V12h2v17h12z'/%3E%3Cpath fill='currentColor' d='M22 27H10c-1.1 0-2-.9-2-2V8h2v17h12z'/%3E%3Cpath fill='currentColor' d='M16 16h8v2h-8z'/%3E%3Cpath fill='currentColor' d='m27.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3h-6c-1.1 0-2 .9-2 2v17c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7M20 4.4l5.6 5.6H20zM26 21H14V4h4v6c0 1.1.9 2 2 2h6z'/%3E%3C/svg%3E")}.carbon-document-multiple-02,.carbon-edit{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.carbon-edit{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M2 26h28v2H2zM25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4zm-5-5L24 7.6l-3 3L17.4 7zM6 22v-3.6l10-10l3.6 3.6l-10 10z'/%3E%3C/svg%3E")}.carbon-magic-wand-filled{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M29.414 24L12 6.586a2.05 2.05 0 0 0-2.828 0L6.586 9.172a2 2 0 0 0 0 2.828l17.413 17.414a2 2 0 0 0 2.828 0l2.587-2.586a2 2 0 0 0 0-2.828M8 10.586L10.586 8l5 5l-2.587 2.587zM2 16l2-2l2 2l-2 2zM14 4l2-2l2 2l-2 2zM2 4l2-2l2 2l-2 2z'/%3E%3C/svg%3E")}.carbon-magic-wand-filled,.carbon-overflow-menu-horizontal{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.carbon-overflow-menu-horizontal{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Ccircle cx='8' cy='16' r='2' fill='currentColor'/%3E%3Ccircle cx='16' cy='16' r='2' fill='currentColor'/%3E%3Ccircle cx='24' cy='16' r='2' fill='currentColor'/%3E%3C/svg%3E")}.carbon-reset{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M18 28A12 12 0 1 0 6 16v6.2l-3.6-3.6L1 20l6 6l6-6l-1.4-1.4L8 22.2V16a10 10 0 1 1 10 10Z'/%3E%3C/svg%3E")}.carbon-reset,.carbon-save{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.carbon-save{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m27.71 9.29l-5-5A1 1 0 0 0 22 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V10a1 1 0 0 0-.29-.71M12 6h8v4h-8Zm8 20h-8v-8h8Zm2 0v-8a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v8H6V6h4v4a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6.41l4 4V26Z'/%3E%3C/svg%3E")}.carbon-search{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9'/%3E%3C/svg%3E")}.carbon-search,.carbon-trash-can{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.carbon-trash-can{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 12h2v12h-2zm6 0h2v12h-2z'/%3E%3Cpath fill='currentColor' d='M4 6v2h2v20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8h2V6Zm4 22V8h16v20Zm4-26h8v2h-8z'/%3E%3C/svg%3E")}.carbon\:db2-buffer-pool{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m26.338 31l-1.736-1l2.288-4H23l3.993-7l1.737 1l-2.284 4h3.89zM8 14h4v2H8zm12 0h4v2h-4zM8 18h4v2H8zm6 0h4v2h-4zm0 4h4v2h-4z'/%3E%3Cpath fill='currentColor' d='M5 11h22v5h2V5c0-1.102-.897-2-2-2H5c-1.103 0-2 .898-2 2v22c0 1.103.897 2 2 2h15v-2H5zm22-6v4H5V5z'/%3E%3C/svg%3E")}.carbon\:db2-buffer-pool,.n-checkbox-icon{background-color:currentColor;color:inherit;display:inline-block;height:1.2em;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle;width:1.2em}.n-checkbox-icon{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m13 24l-9-9l1.414-1.414L13 21.171L26.586 7.586L28 9z'/%3E%3C/svg%3E");height:1em;margin:auto;width:1em}.n-navbar-glass,[n-navbar-glass=""]{background-color:#fffc;position:sticky;top:0;z-index:10;--un-backdrop-blur:blur(6px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.n-button-icon{font-size:1.1em;margin-left:-.2em;margin-right:.2em}.n-checkbox-box{align-items:center;border-color:#9ca3af33;border-radius:.125rem;border-width:1px;display:flex;flex:none;height:1.1em;margin-right:.25rem;overflow:visible;width:1.1em;--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}.n-icon-button{aspect-ratio:1/1;border-radius:.25rem;height:1.6em;opacity:.5;width:1.6em}.n-icon-button,.n-panel-grids-center{align-items:center;display:flex;justify-content:center}.n-panel-grids-center{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' transform='scale(3)'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Cpath fill='none' stroke='hsla(0, 0%25, 98%25, 1)' stroke-width='.2' d='M10 0v20ZM0 10h20Z'/%3E%3C/svg%3E");background-size:40px 40px;flex-direction:column;gap:.5rem;height:100%}.n-button-base{border-color:#9ca3af33;border-width:1px;opacity:.8;padding:.25em 1em;touch-action:manipulation;--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color,rgba(0,0,0,.05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);outline:2px solid transparent!important;outline-offset:2px!important}.n-button-base,.n-checkbox{align-items:center;border-radius:.25rem;display:inline-flex;gap:.25rem}.n-icon{flex:none}.hover\:n-checkbox-hover:hover{background-color:#9ca3af08;cursor:pointer;opacity:1}.n-card-base{border-color:#9ca3af33;border-radius:.25rem;border-width:1px;--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity));--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color,rgba(0,0,0,.05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.border-base,.n-border-base,[border~=base]{border-color:#9ca3af33}.n-checked\:n-checkbox-box-checked[checked],[checked] .n-checked\:n-checkbox-box-checked{--un-border-opacity:1;border-color:rgba(var(--nui-c-context),var(--un-border-opacity));--un-bg-opacity:1;background-color:rgba(var(--nui-c-context),var(--un-bg-opacity))}.hover\:n-button-hover:hover{--un-border-opacity:1!important;border-color:rgba(var(--nui-c-context),var(--un-border-opacity))!important;--un-text-opacity:1;color:rgba(var(--nui-c-context),var(--un-text-opacity));opacity:1}.dark .glass-effect,.dark .n-glass-effect,.dark .n-navbar-glass,.dark [glass-effect=""],.dark [n-glass-effect=""],.dark [n-navbar-glass=""]{background-color:#141414e6}.glass-effect,.n-glass-effect,[glass-effect=""],[n-glass-effect=""]{background-color:#fffc;--un-backdrop-blur:blur(6px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.dark .n-bg-base,.dark .n-card-base{--un-bg-opacity:1;background-color:rgb(21 21 21/var(--un-bg-opacity))}.n-bg-base{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.n-icon-button:hover{background-color:#9ca3af0d;opacity:1}.active\:n-button-active:active{background-color:rgba(var(--nui-c-context),.05);--un-ring-width:3px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);--un-ring-color:rgba(var(--nui-c-context),.1)}.focus-within\:n-focus-base:focus-within{--un-ring-width:2px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);--un-ring-color:rgba(var(--nui-c-context),.5)}.focus-visible\:n-focus-base:focus-visible{--un-ring-width:2px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);--un-ring-color:rgba(var(--nui-c-context),.5)}.peer:focus-visible~.peer-focus-visible\:n-focus-base{--un-ring-width:2px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);--un-ring-color:rgba(var(--nui-c-context),.5)}.peer:active~.peer-active\:n-active-base{--un-ring-width:3px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);--un-ring-color:rgba(var(--nui-c-context),.1)}.n-transition{transition-duration:.15s;transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .n-panel-grids-center{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' transform='scale(3)'%3E%3Crect width='100%25' height='100%25' fill='hsl(0, 0%25, 8.5%25)'/%3E%3Cpath fill='none' stroke='hsl(0, 0%25, 11.0%25)' stroke-width='.2' d='M10 0v20ZM0 10h20Z'/%3E%3C/svg%3E");background-size:40px 40px}.absolute,[absolute=""]{position:absolute}.fixed,[fixed=""]{position:fixed}.relative,[relative=""]{position:relative}.sticky,[sticky=""]{position:sticky}.bottom-0,[bottom-0=""]{bottom:0}.bottom-10,[bottom-10=""]{bottom:2.5rem}.bottom-8,[bottom-8=""]{bottom:2rem}.left-10,[left-10=""]{left:2.5rem}.right-0{right:0}.right-10,[right-10=""]{right:2.5rem}.right-2,[right-2=""]{right:.5rem}.right-4,[right-4=""]{right:1rem}.top-0,[top-0=""]{top:0}.top-2,[top-2=""]{top:.5rem}.z-1,[z-1=""]{z-index:1}.z-10,[z-10=""]{z-index:10}.z-20,[z-20=""]{z-index:20}.grid,[grid=""],[grid~="~"]{display:grid}.cols-1,[grid~=cols-1]{grid-template-columns:repeat(1,minmax(0,1fr))}.cols-6,[grid~=cols-6]{grid-template-columns:repeat(6,minmax(0,1fr))}.mx1,[mx1=""]{margin-left:.25rem;margin-right:.25rem}.my1,[my1=""]{margin-bottom:.25rem;margin-top:.25rem}.my2,[my2=""]{margin-bottom:.5rem;margin-top:.5rem}.my4,[my4=""]{margin-bottom:1rem;margin-top:1rem}.mb-2,.mb2,[mb2=""]{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb1\.5,[mb1\.5=""]{margin-bottom:.375rem}.mb10,[mb10=""]{margin-bottom:2.5rem}.ml-0\.3em{margin-left:.3em}.ml-0\.4em{margin-left:.4em}.ml2,[ml2=""]{margin-left:.5rem}.mr-0\.1em{margin-right:.1em}.mr-0\.4em{margin-right:.4em}.mr1,[mr1=""]{margin-right:.25rem}.mr2,[mr2=""]{margin-right:.5rem}.mt1,[mt1=""]{margin-top:.25rem}.mt2,[mt2=""]{margin-top:.5rem}.hidden,[hidden=""]{display:none}.h-full,[h-full=""]{height:100%}.max-w-520px{max-width:520px}.min-h-screen{min-height:100vh}.w-full,[w-full=""]{width:100%}[h-screen=""]{height:100vh}.flex,[flex=""],[flex~="~"]{display:flex}.flex-1,[flex-1=""]{flex:1 1 0%}.flex-auto,[flex-auto=""]{flex:1 1 auto}[flex~=col]{flex-direction:column}[flex~=wrap]{flex-wrap:wrap}.table{display:table}.translate-x-1\/1{--un-translate-x:100%}.translate-x-1\/1,.translate-y--1\/1{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.translate-y--1\/1{--un-translate-y:-100%}.translate-y-1\/1{--un-translate-y:100%}.scale-0,.translate-y-1\/1{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.scale-0{--un-scale-x:0;--un-scale-y:0}.n-checked\:scale-100[checked],[checked] .n-checked\:scale-100{--un-scale-x:1;--un-scale-y:1}.n-checked\:scale-100[checked],.transform,[checked] .n-checked\:scale-100{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse,[animate-pulse=""]{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.place-content-center{place-content:center}.items-center,[flex~=items-center],[items-center=""]{align-items:center}.justify-center,[flex~=justify-center],[justify-center=""]{justify-content:center}.justify-between,[justify-between=""]{justify-content:space-between}.justify-around,[justify-around=""]{justify-content:space-around}.gap-1,[flex~=gap-1]{gap:.25rem}.gap-2,.gap2,[flex~=gap-2],[flex~=gap2],[gap-2=""],[gap2=""]{gap:.5rem}.gap4,[flex~=gap4],[gap4=""]{gap:1rem}.of-auto,[of-auto=""]{overflow:auto}.of-auto\!{overflow:auto!important}.of-hidden,.overflow-hidden,[of-hidden=""]{overflow:hidden}.b,.border{border-width:1px}[border~=b]{border-bottom-width:1px}[border~=l]{border-left-width:1px}[border~=t]{border-top-width:1px}.border-gray\:10{border-color:#9ca3af1a}.border-green-5{--un-border-opacity:1;border-color:rgb(34 197 94/var(--un-border-opacity))}.border-orange-5{--un-border-opacity:1;border-color:rgb(249 115 22/var(--un-border-opacity))}.border-red-5{--un-border-opacity:1;border-color:rgb(239 68 68/var(--un-border-opacity))}.border-yellow-5{--un-border-opacity:1;border-color:rgb(234 179 8/var(--un-border-opacity))}.focus-within\:border-context:focus-within{--un-border-opacity:1;border-color:rgba(var(--nui-c-context),var(--un-border-opacity))}.rounded{border-radius:.25rem}.rounded-lg,[rounded-lg=""]{border-radius:.5rem}.bg-green{--un-bg-opacity:1;background-color:rgb(74 222 128/var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.dark .dark\:bg-\[\#020420\]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.hover-bg-green:hover,[hover-bg-green=""]:hover{--un-bg-opacity:1;background-color:rgb(74 222 128/var(--un-bg-opacity))}.bg-opacity-5,.hover-bg-opacity-5:hover,[hover-bg-opacity-5=""]:hover{--un-bg-opacity:.05}.p2,[p2=""]{padding:.5rem}.p4{padding:1rem}.px,.px4,[px4=""]{padding-left:1rem;padding-right:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px6,[px6=""]{padding-left:1.5rem;padding-right:1.5rem}.px8,[px8=""]{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2,.py2,[py2=""]{padding-bottom:.5rem;padding-top:.5rem}.py4,[py4=""]{padding-bottom:1rem;padding-top:1rem}.pl-1{padding-left:.25rem}.pr-2{padding-right:.5rem}.text-center,[text-center=""]{text-align:center}.text-start,[text-start=""]{text-align:start}.text-\[80px\]{font-size:80px}.text-1\.1em{font-size:1.1em}.text-2xl,[text-2xl=""]{font-size:1.5rem;line-height:2rem}.text-lg,[text-lg=""]{font-size:1.125rem;line-height:1.75rem}.text-sm,[text-sm=""]{font-size:.875rem;line-height:1.25rem}.text-xl,[text-xl=""]{font-size:1.25rem;line-height:1.75rem}.dark .dark\:text-white{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}.text-\[\#020420\]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.text-green{--un-text-opacity:1;color:rgb(74 222 128/var(--un-text-opacity))}.text-green-5{--un-text-opacity:1;color:rgb(34 197 94/var(--un-text-opacity))}.text-orange-5{--un-text-opacity:1;color:rgb(249 115 22/var(--un-text-opacity))}.text-red-5{--un-text-opacity:1;color:rgb(239 68 68/var(--un-text-opacity))}.text-yellow-5{--un-text-opacity:1;color:rgb(234 179 8/var(--un-text-opacity))}.hover-text-green:hover{--un-text-opacity:1;color:rgb(74 222 128/var(--un-text-opacity))}.hover\:text-\[\#00DC82\]:hover{--un-text-opacity:1;color:rgb(0 220 130/var(--un-text-opacity))}[hover-text-green=""]:hover{--un-text-opacity:1;color:rgb(74 222 128/var(--un-text-opacity))}.font-bold,[font-bold=""]{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.font-sans{font-family:DM Sans,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.underline{text-decoration-line:underline}.underline-offset-3{text-underline-offset:3px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.op0,.opacity-0,[opacity-0=""]{opacity:0}.op50,[op50=""]{opacity:.5}.op75,[op75=""]{opacity:.75}.group:hover [group-hover~=opacity-100],.n-checked\:op100[checked],.opacity-100,[checked] .n-checked\:op100{opacity:1}.outline{outline-style:solid}.\!outline-none{outline:2px solid transparent!important;outline-offset:2px!important}.backdrop-blur,[backdrop-blur=""]{--un-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all,[transition-all=""]{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}[n~=blue]{--nui-c-context:96,165,250}[n~=cyan]{--nui-c-context:34,211,238}[n~=green]{--nui-c-context:74,222,128}[n~=orange]{--nui-c-context:251,146,60}[n~=primary]{--nui-c-context:9,158,97}[n~=purple]{--nui-c-context:192,132,252}[n~=red]{--nui-c-context:248,113,113}[n~=xs]{font-size:.75rem}.n-disabled\:n-disabled[disabled],[disabled] .n-disabled\:n-disabled{filter:saturate(0);opacity:.6;pointer-events:none}@media(min-width:640px){.sm\:text-\[110px\]{font-size:110px}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}}#__nuxt{height:100%}
@@ -0,0 +1 @@
1
+ .grid[data-v-a78b16e0]{display:grid}.mb-2[data-v-a78b16e0]{margin-bottom:.5rem}.mb-4[data-v-a78b16e0]{margin-bottom:1rem}.max-w-520px[data-v-a78b16e0]{max-width:520px}.min-h-screen[data-v-a78b16e0]{min-height:100vh}.w-full[data-v-a78b16e0]{width:100%}.flex[data-v-a78b16e0]{display:flex}.place-content-center[data-v-a78b16e0]{place-content:center}.items-center[data-v-a78b16e0]{align-items:center}.justify-center[data-v-a78b16e0]{justify-content:center}.overflow-hidden[data-v-a78b16e0]{overflow:hidden}.bg-white[data-v-a78b16e0]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-a78b16e0]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-a78b16e0]{text-align:center}.text-\[80px\][data-v-a78b16e0]{font-size:80px}.text-2xl[data-v-a78b16e0]{font-size:1.5rem;line-height:2rem}.text-sm[data-v-a78b16e0]{font-size:.875rem;line-height:1.25rem}.text-\[\#020420\][data-v-a78b16e0]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-a78b16e0]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.hover\:text-\[\#00DC82\][data-v-a78b16e0]:hover{--un-text-opacity:1;color:rgb(0 220 130/var(--un-text-opacity))}.font-medium[data-v-a78b16e0]{font-weight:500}.font-semibold[data-v-a78b16e0]{font-weight:600}.leading-none[data-v-a78b16e0]{line-height:1}.tracking-wide[data-v-a78b16e0]{letter-spacing:.025em}.font-sans[data-v-a78b16e0]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-a78b16e0]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.underline[data-v-a78b16e0]{text-decoration-line:underline}.underline-offset-3[data-v-a78b16e0]{text-underline-offset:3px}.antialiased[data-v-a78b16e0]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-a78b16e0]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-a78b16e0]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-a78b16e0]{font-size:110px}.sm\:text-3xl[data-v-a78b16e0]{font-size:1.875rem;line-height:2.25rem}}
@@ -0,0 +1 @@
1
+ .grid[data-v-a4e04bd5]{display:grid}.mb-2[data-v-a4e04bd5]{margin-bottom:.5rem}.mb-4[data-v-a4e04bd5]{margin-bottom:1rem}.max-w-520px[data-v-a4e04bd5]{max-width:520px}.min-h-screen[data-v-a4e04bd5]{min-height:100vh}.place-content-center[data-v-a4e04bd5]{place-content:center}.overflow-hidden[data-v-a4e04bd5]{overflow:hidden}.bg-white[data-v-a4e04bd5]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-a4e04bd5]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-a4e04bd5]{text-align:center}.text-\[80px\][data-v-a4e04bd5]{font-size:80px}.text-2xl[data-v-a4e04bd5]{font-size:1.5rem;line-height:2rem}.text-\[\#020420\][data-v-a4e04bd5]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-a4e04bd5]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold[data-v-a4e04bd5]{font-weight:600}.leading-none[data-v-a4e04bd5]{line-height:1}.tracking-wide[data-v-a4e04bd5]{letter-spacing:.025em}.font-sans[data-v-a4e04bd5]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-a4e04bd5]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased[data-v-a4e04bd5]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-a4e04bd5]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-a4e04bd5]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-a4e04bd5]{font-size:110px}.sm\:text-3xl[data-v-a4e04bd5]{font-size:1.875rem;line-height:2.25rem}}
@@ -0,0 +1 @@
1
+ table{table-layout:fixed}table tr{width:100%}table tr td,table tr th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}table input{background:transparent;border:none;color:#ffffffb3;width:100%}table input::-moz-placeholder{color:#ffffff4d}table input::placeholder{color:#ffffff4d}table input:focus{outline:none}th{border-left:1px solid #272727;border-right:1px solid #272727;border-top:1px solid #272727;padding:5px 10px}td{border:1px solid #272727}td:last-child{border-left:none}td{color:#ffffffb3;padding:5px 10px}td:hover{color:#fff}.editing-mode tr:not(.isEditing){opacity:.3;position:relative}.editing-mode tr:not(.isEditing):after{background:#000;content:"";height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%}.editing-mode tr.isEditing{color:#fff;opacity:1}.editing-mode tr.isEditing input::-moz-placeholder{color:#3ede80}.editing-mode tr.isEditing input::placeholder{color:#3ede80}.splitpanes{display:flex;height:100%;width:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging .splitpanes__pane,:has(.splitpanes--dragging){pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.splitpanes__pane{height:100%;overflow:hidden;width:100%}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out;will-change:width}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out;will-change:height}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{cursor:col-resize;min-width:1px}.splitpanes--horizontal>.splitpanes__splitter{cursor:row-resize;min-height:1px}.default-theme.splitpanes .splitpanes__pane{background-color:#f2f2f2}.default-theme.splitpanes .splitpanes__splitter{background-color:#fff;box-sizing:border-box;flex-shrink:0;position:relative}.default-theme.splitpanes .splitpanes__splitter:after,.default-theme.splitpanes .splitpanes__splitter:before{background-color:#00000026;content:"";left:50%;position:absolute;top:50%;transition:background-color .3s}.default-theme.splitpanes .splitpanes__splitter:hover:after,.default-theme.splitpanes .splitpanes__splitter:hover:before{background-color:#00000040}.default-theme.splitpanes .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme .splitpanes--vertical>.splitpanes__splitter,.default-theme.splitpanes--vertical>.splitpanes__splitter{border-left:1px solid #eee;margin-left:-1px;width:7px}.default-theme .splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme.splitpanes--vertical>.splitpanes__splitter:before{height:30px;transform:translateY(-50%);width:1px}.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme .splitpanes--vertical>.splitpanes__splitter:after,.default-theme.splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme .splitpanes--horizontal>.splitpanes__splitter,.default-theme.splitpanes--horizontal>.splitpanes__splitter{border-top:1px solid #eee;height:7px;margin-top:-1px}.default-theme .splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme.splitpanes--horizontal>.splitpanes__splitter:before{height:1px;transform:translate(-50%);width:30px}.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme .splitpanes--horizontal>.splitpanes__splitter:after,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.splitpanes__splitter{position:relative}.splitpanes__splitter:before{content:"";left:0;position:absolute;top:0;transition:.2s ease;transition:opacity .4s;z-index:1}.splitpanes__splitter:hover:before{background:#8881;opacity:1}.splitpanes--vertical>.splitpanes__splitter{min-width:0!important;width:0!important;border-right-width:1px;border-color:#9ca3af33}.splitpanes--horizontal>.splitpanes__splitter{height:0!important;min-height:0!important;border-top-width:1px;border-color:#9ca3af33}.splitpanes--vertical>.splitpanes__splitter:before{height:100%;left:-5px;right:-4px}.splitpanes--horizontal>.splitpanes__splitter:before{bottom:-4px;top:-5px;width:100%}
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-mongoose/_nuxt/entry.Cp4I88Tv.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-mongoose/_nuxt/C1_0osGQ.js"><script type="module" src="/__nuxt-mongoose/_nuxt/C1_0osGQ.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-mongoose",buildId:"9f2a79dd-102e-4943-be21-dd8083c43b3d",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1772769622174,false]</script></body></html>
@@ -0,0 +1,43 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ import { ConnectOptions } from 'mongoose';
3
+
4
+ interface ModuleOptions {
5
+ /**
6
+ * The MongoDB URI connection
7
+ *
8
+ * @default process.env.MONGODB_URI
9
+ *
10
+ */
11
+ uri: string | undefined;
12
+ /**
13
+ * Nuxt DevTools
14
+ *
15
+ * @default true
16
+ *
17
+ */
18
+ devtools: boolean;
19
+ /**
20
+ * Mongoose Connections
21
+ *
22
+ * @default {}
23
+ */
24
+ options?: ConnectOptions;
25
+ /**
26
+ * Models Directory for auto-import
27
+ *
28
+ * @default 'models'
29
+ *
30
+ */
31
+ modelsDir?: string;
32
+ /**
33
+ * Models Directory for auto-import
34
+ *
35
+ * @default undefined
36
+ *
37
+ */
38
+ dnsServers?: string[];
39
+ }
40
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
41
+
42
+ export { _default as default };
43
+ export type { ModuleOptions };
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "nuxt-mongoose",
3
+ "configKey": "mongoose",
4
+ "version": "1.1.0-dev.0",
5
+ "builder": {
6
+ "@nuxt/module-builder": "1.0.2",
7
+ "unbuild": "3.6.1"
8
+ }
9
+ }
@@ -0,0 +1,413 @@
1
+ import { useNuxt, logger, extendViteConfig, defineNuxtModule, useLogger, createResolver, addTemplate, addServerPlugin } from '@nuxt/kit';
2
+ import defu from 'defu';
3
+ import { join } from 'pathe';
4
+ import mongoose from 'mongoose';
5
+ import { $fetch } from 'ofetch';
6
+ import { existsSync } from 'node:fs';
7
+ import { addCustomTab, onDevToolsInitialized, extendServerRpc } from '@nuxt/devtools-kit';
8
+ import plrz from 'pluralize';
9
+ import fs from 'fs-extra';
10
+ import { pathToFileURL } from 'node:url';
11
+
12
+ const version = "1.1.0-dev.0";
13
+
14
+ function useViteWebSocket(nuxt = useNuxt()) {
15
+ return new Promise((resolve) => {
16
+ nuxt.hooks.hook("vite:serverCreated", (viteServer) => {
17
+ resolve(viteServer.ws);
18
+ });
19
+ });
20
+ }
21
+ function pluralize(str) {
22
+ return plrz.plural(str);
23
+ }
24
+ function singularize(str) {
25
+ return plrz.singular(str);
26
+ }
27
+ function capitalize(str) {
28
+ return str.charAt(0).toUpperCase() + str.slice(1);
29
+ }
30
+ function generateSchemaFile(name, fields) {
31
+ name = capitalize(name);
32
+ const outputObject = JSON.stringify(
33
+ fields.reduce((acc, curr) => {
34
+ const { name: name2, ...rest } = curr;
35
+ acc[name2] = rest;
36
+ return acc;
37
+ }, {}),
38
+ null,
39
+ 2
40
+ ).replace(/"([^"]+)":/g, "$1:").replace(/"(\w+)":/g, "$1:").replace(/\s*"\w+":/g, (match) => match.trim()).replace(/"string"/g, "'string'");
41
+ return `import { defineMongooseModel } from '#nuxt/mongoose'
42
+
43
+ export const ${name}SchemaDef = ${outputObject}
44
+
45
+ export const ${name}Schema = defineMongooseModel({
46
+ name: '${name}',
47
+ schema: ${name}SchemaDef,
48
+ })
49
+ `;
50
+ }
51
+ function generateApiRoute(action, { model, by }) {
52
+ const modelName = capitalize(model.name);
53
+ const operation = {
54
+ index: `return await ${modelName}Schema.find({})`,
55
+ create: `return await new ${modelName}Schema(body).save()`,
56
+ show: `return await ${modelName}Schema.findOne({ ${by}: event.context.params?.${by} })`,
57
+ put: `return await ${modelName}Schema.findOneAndUpdate({ ${by}: event.context.params?.${by} }, body, { new: true })`,
58
+ delete: `return await ${modelName}Schema.findOneAndDelete({ ${by}: event.context.params?.${by} })`
59
+ }[action];
60
+ const main = `try {
61
+ ${operation}
62
+ }
63
+ catch (error) {
64
+ return error
65
+ }`;
66
+ return `export default defineEventHandler(async (event) => {
67
+ ${action === "create" || action === "put" ? `const body = await readBody(event)
68
+ ${main}` : main}
69
+ })
70
+ `;
71
+ }
72
+
73
+ function setupDatabaseRPC({}) {
74
+ return {
75
+ async connectionInfo() {
76
+ const conn = mongoose.connection;
77
+ const client = conn.getClient?.();
78
+ return {
79
+ connectionState: conn.readyState,
80
+ authenticated: !!conn.user,
81
+ name: mongoose.connection.name,
82
+ host: mongoose.connection.host,
83
+ mongooseVersion: mongoose.version,
84
+ driverVersion: client?.options?.driverInfo?.version,
85
+ timestamps: {
86
+ now: Date.now()
87
+ }
88
+ };
89
+ },
90
+ async createCollection(name) {
91
+ try {
92
+ const db = mongoose.connection.db;
93
+ if (!db) {
94
+ return createError(new Error("Database not connected"));
95
+ }
96
+ return await db.createCollection(name);
97
+ } catch (error) {
98
+ return createError(error);
99
+ }
100
+ },
101
+ async listCollections() {
102
+ try {
103
+ const db = mongoose.connection.db;
104
+ if (!db) {
105
+ return createError(new Error("Database not connected"));
106
+ }
107
+ return await db.listCollections().toArray();
108
+ } catch (error) {
109
+ return createError(error);
110
+ }
111
+ },
112
+ async getCollection(name) {
113
+ try {
114
+ const db = mongoose.connection.db;
115
+ if (!db) {
116
+ return createError(new Error("Database not connected"));
117
+ }
118
+ return await db.collection(name).findOne();
119
+ } catch (error) {
120
+ return createError(error);
121
+ }
122
+ },
123
+ async dropCollection(name) {
124
+ try {
125
+ const db = mongoose.connection.db;
126
+ if (!db) {
127
+ return createError(new Error("Database not connected"));
128
+ }
129
+ return await db.dropCollection(name);
130
+ } catch (error) {
131
+ return createError(error);
132
+ }
133
+ },
134
+ async createDocument(collection, data) {
135
+ const { _id, ...rest } = data;
136
+ try {
137
+ const db = mongoose.connection.db;
138
+ if (!db) {
139
+ return createError(new Error("Database not connected"));
140
+ }
141
+ return await db.collection(collection).insertOne(rest);
142
+ } catch (error) {
143
+ return createError(error);
144
+ }
145
+ },
146
+ async countDocuments(collection) {
147
+ try {
148
+ const db = mongoose.connection.db;
149
+ if (!db) {
150
+ return createError(new Error("Database not connected"));
151
+ }
152
+ return await db.collection(collection).countDocuments();
153
+ } catch (error) {
154
+ return createError(error);
155
+ }
156
+ },
157
+ async listDocuments(collection, options = { page: 1, limit: 10 }) {
158
+ const skip = (options.page - 1) * options.limit;
159
+ const db = mongoose.connection.db;
160
+ if (!db) {
161
+ return createError(new Error("Database not connected"));
162
+ }
163
+ const cursor = db.collection(collection).find().skip(skip);
164
+ if (options.limit !== 0) cursor.limit(options.limit);
165
+ return await cursor.toArray();
166
+ },
167
+ async getDocument(collection, id) {
168
+ try {
169
+ const db = mongoose.connection.db;
170
+ if (!db) {
171
+ return createError(new Error("Database not connected"));
172
+ }
173
+ return await db.collection(collection).findOne({ _id: new mongoose.Types.ObjectId(id) });
174
+ } catch (error) {
175
+ return createError(error);
176
+ }
177
+ },
178
+ async updateDocument(collection, data) {
179
+ const { _id, ...rest } = data;
180
+ try {
181
+ const db = mongoose.connection.db;
182
+ if (!db) {
183
+ return createError(new Error("Database not connected"));
184
+ }
185
+ return await db.collection(collection).updateOne({ _id: new mongoose.Types.ObjectId(_id) }, { $set: rest });
186
+ } catch (error) {
187
+ return createError(error);
188
+ }
189
+ },
190
+ async deleteDocument(collection, id) {
191
+ try {
192
+ const db = mongoose.connection.db;
193
+ if (!db) {
194
+ return createError(new Error("Database not connected"));
195
+ }
196
+ return await db.collection(collection).deleteOne({ _id: new mongoose.Types.ObjectId(id) });
197
+ } catch (error) {
198
+ return createError(error);
199
+ }
200
+ }
201
+ };
202
+ }
203
+ function createError(error) {
204
+ return {
205
+ error: {
206
+ message: error?.message || "An unknown error occurred",
207
+ code: error?.code || "UNKNOWN_ERROR"
208
+ }
209
+ };
210
+ }
211
+
212
+ function setupResourceRPC({ nuxt }) {
213
+ const config = nuxt.options.runtimeConfig.mongoose;
214
+ return {
215
+ async generateResource(collection, resources) {
216
+ const singular = singularize(collection.name).toLowerCase();
217
+ const plural = pluralize(collection.name).toLowerCase();
218
+ const dbName = capitalize(singular);
219
+ if (collection.fields) {
220
+ const schemaPath = join(config.modelsDir, `${singular}.schema.ts`);
221
+ if (!fs.existsSync(schemaPath)) {
222
+ fs.ensureDirSync(config.modelsDir);
223
+ fs.writeFileSync(
224
+ schemaPath,
225
+ generateSchemaFile(dbName, collection.fields)
226
+ );
227
+ }
228
+ const model = { name: dbName};
229
+ const routeTypes = {
230
+ index: "index.get.ts",
231
+ create: "create.post.ts",
232
+ show: (by) => `[${by}].get.ts`,
233
+ put: (by) => `[${by}].put.ts`,
234
+ delete: (by) => `[${by}].delete.ts`
235
+ };
236
+ resources.forEach((route) => {
237
+ const fileName = typeof routeTypes[route.type] === "function" ? routeTypes[route.type](route.by) : routeTypes[route.type];
238
+ const filePath = join(
239
+ nuxt.options.serverDir,
240
+ "api",
241
+ plural,
242
+ fileName
243
+ );
244
+ if (!fs.existsSync(filePath)) {
245
+ fs.ensureDirSync(join(nuxt.options.serverDir, `api/${plural}`));
246
+ const content = generateApiRoute(route.type, {
247
+ model,
248
+ by: route.by
249
+ });
250
+ fs.writeFileSync(filePath, content);
251
+ }
252
+ });
253
+ }
254
+ const collections = await mongoose.connection.db?.listCollections().toArray();
255
+ if (!collections?.find((c) => c.name === plural))
256
+ return await mongoose.connection.db?.createCollection(plural);
257
+ },
258
+ async resourceSchema(collection) {
259
+ const singular = singularize(collection).toLowerCase();
260
+ const schemaPath = join(config.modelsDir, `${singular}.schema.ts`);
261
+ if (!fs.existsSync(schemaPath)) return;
262
+ const mod = await import(pathToFileURL(schemaPath).href);
263
+ const dbName = capitalize(singular);
264
+ return mod[`${dbName}SchemaDef`];
265
+ }
266
+ };
267
+ }
268
+
269
+ function setupRPC(ctx) {
270
+ if (!ctx.options.uri) {
271
+ ctx.options.uri = "";
272
+ logger.warn("MongoDB autoconnect is disabled, configure `uri` to enable.");
273
+ } else {
274
+ mongoose.connect(ctx.options.uri, ctx.options.options);
275
+ }
276
+ return {
277
+ getOptions() {
278
+ return ctx.options;
279
+ },
280
+ ...setupDatabaseRPC(ctx),
281
+ ...setupResourceRPC(ctx),
282
+ async reset() {
283
+ const ws = await ctx.wsServer;
284
+ ws.send("nuxt-mongoose:reset");
285
+ }
286
+ };
287
+ }
288
+
289
+ const CLIENT_PATH = "/__nuxt-mongoose";
290
+ const CLIENT_PORT = 3300;
291
+ const RPC_NAMESPACE = "nuxt-mongoose-rpc";
292
+
293
+ function setupDevToolsUI(options, resolve, nuxt) {
294
+ const clientPath = resolve("./client");
295
+ const isProductionBuild = existsSync(clientPath);
296
+ if (isProductionBuild) {
297
+ nuxt.hook("vite:serverCreated", async (server) => {
298
+ const sirv = await import('sirv').then((r) => r.default || r);
299
+ server.middlewares.use(
300
+ CLIENT_PATH,
301
+ sirv(clientPath, { dev: true, single: true })
302
+ );
303
+ });
304
+ } else {
305
+ extendViteConfig((config) => {
306
+ config.server = config.server || {};
307
+ config.server.proxy = config.server.proxy || {};
308
+ config.server.proxy[CLIENT_PATH] = {
309
+ target: `http://localhost:${CLIENT_PORT}${CLIENT_PATH}`,
310
+ changeOrigin: true,
311
+ followRedirects: true,
312
+ rewrite: (path) => path.replace(CLIENT_PATH, "")
313
+ };
314
+ });
315
+ }
316
+ addCustomTab({
317
+ name: "nuxt-mongoose",
318
+ title: "Mongoose",
319
+ icon: "skill-icons:mongodb",
320
+ view: {
321
+ type: "iframe",
322
+ src: CLIENT_PATH
323
+ }
324
+ });
325
+ const wsServer = useViteWebSocket();
326
+ onDevToolsInitialized(async () => {
327
+ const rpcFunctions = setupRPC({ options, wsServer, nuxt });
328
+ extendServerRpc(
329
+ RPC_NAMESPACE,
330
+ rpcFunctions
331
+ );
332
+ });
333
+ }
334
+
335
+ const module$1 = defineNuxtModule({
336
+ meta: {
337
+ name: "nuxt-mongoose",
338
+ configKey: "mongoose"
339
+ },
340
+ defaults: {
341
+ uri: String(process.env.MONGODB_URI || ""),
342
+ devtools: true,
343
+ options: {},
344
+ modelsDir: "models",
345
+ dnsServers: void 0
346
+ },
347
+ hooks: {
348
+ close: () => {
349
+ mongoose.disconnect();
350
+ }
351
+ },
352
+ async setup(_options, _nuxt) {
353
+ const logger = useLogger("nuxt-mongoose");
354
+ if (_nuxt.options.dev) {
355
+ $fetch("https://registry.npmjs.org/nuxt-mongoose/latest").then((release) => {
356
+ if (release.version > version)
357
+ logger.info(
358
+ `A new version of Nuxt Mongoose (v${release.version}) is available: https://github.com/arashsheyda/nuxt-mongoose/releases/latest`
359
+ );
360
+ }).catch(() => {
361
+ });
362
+ }
363
+ if (!_options.uri) {
364
+ logger.warn(
365
+ "Missing MongoDB URI. You can set it in your `nuxt.config` or in your `.env` as `MONGODB_URI`"
366
+ );
367
+ }
368
+ const { resolve } = createResolver(import.meta.url);
369
+ const config = _nuxt.options.runtimeConfig;
370
+ config.mongoose = defu(config.mongoose || {}, {
371
+ uri: _options.uri,
372
+ options: _options.options,
373
+ devtools: _options.devtools,
374
+ modelsDir: join(_nuxt.options.serverDir, _options.modelsDir),
375
+ dnsServers: _options.dnsServers
376
+ });
377
+ _nuxt.hook("nitro:config", (_config) => {
378
+ _config.alias = _config.alias || {};
379
+ _config.externals = defu(
380
+ typeof _config.externals === "object" ? _config.externals : {},
381
+ {
382
+ inline: [resolve("./runtime")]
383
+ }
384
+ );
385
+ _config.alias["#nuxt/mongoose"] = resolve("./runtime/server/services");
386
+ if (_config.imports) {
387
+ _config.imports.dirs = _config.imports.dirs || [];
388
+ _config.imports.dirs?.push(config.mongoose.modelsDir);
389
+ }
390
+ });
391
+ addTemplate({
392
+ filename: "types/nuxt-mongoose.d.ts",
393
+ getContents: () => [
394
+ "declare module '#nuxt/mongoose' {",
395
+ ` const defineMongooseConnection: typeof import('${resolve("./runtime/server/services")}').defineMongooseConnection`,
396
+ ` const defineMongooseModel: typeof import('${resolve("./runtime/server/services")}').defineMongooseModel`,
397
+ "}"
398
+ ].join("\n")
399
+ });
400
+ _nuxt.hook("prepare:types", (options) => {
401
+ options.references.push({
402
+ path: resolve(_nuxt.options.buildDir, "types/nuxt-mongoose.d.ts")
403
+ });
404
+ });
405
+ const isDevToolsEnabled = typeof _nuxt.options.devtools === "boolean" ? _nuxt.options.devtools : _nuxt.options.devtools.enabled;
406
+ if (_nuxt.options.dev && isDevToolsEnabled)
407
+ setupDevToolsUI(_options, resolve, _nuxt);
408
+ addServerPlugin(resolve("./runtime/server/plugins/mongoose.db"));
409
+ logger.success("`nuxt-mongoose` is ready!");
410
+ }
411
+ });
412
+
413
+ export { module$1 as default };
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { defineMongooseConnection } from "../services/index.js";
2
+ export default defineNitroPlugin(() => {
3
+ defineMongooseConnection();
4
+ });
@@ -0,0 +1,5 @@
1
+ import type { ConnectOptions } from "mongoose";
2
+ export declare function defineMongooseConnection({ uri, options, }?: {
3
+ uri?: string;
4
+ options?: ConnectOptions;
5
+ }): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import { consola } from "consola";
2
+ import { colors } from "consola/utils";
3
+ import mongoose from "mongoose";
4
+ import dns from "node:dns";
5
+ import { useRuntimeConfig } from "#imports";
6
+ export async function defineMongooseConnection({
7
+ uri,
8
+ options
9
+ } = {}) {
10
+ const config = useRuntimeConfig().mongoose;
11
+ const dnsServers = config.dnsServers;
12
+ if (Array.isArray(dnsServers) && dnsServers.length) {
13
+ dns.setServers(dnsServers);
14
+ }
15
+ const mongooseUri = uri || config.uri;
16
+ if (!mongooseUri.trim()) return;
17
+ const mongooseOptions = options || config.options;
18
+ try {
19
+ await mongoose.connect(mongooseUri, { ...mongooseOptions });
20
+ consola.success("Connected to MongoDB");
21
+ } catch (err) {
22
+ consola.error(colors.red(`Error connecting to MongoDB: ${err}`));
23
+ }
24
+ }
@@ -0,0 +1,9 @@
1
+ import type { Model, SchemaDefinition, SchemaOptions } from "mongoose";
2
+ import mongoose from "mongoose";
3
+ export declare function defineMongooseDiscriminatorModel<T>(nameOrOptions: string | {
4
+ name: string;
5
+ baseModel: Model<T>;
6
+ schema: SchemaDefinition<T>;
7
+ options?: SchemaOptions;
8
+ hooks?: (schema: mongoose.Schema<T>) => void;
9
+ }, baseModel?: Model<T>, schema?: SchemaDefinition<T>, options?: SchemaOptions, hooks?: (schema: mongoose.Schema<T>) => void): Model<T>;