omegga 1.5.2 → 1.6.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 (95) hide show
  1. package/CHANGELOG.md +19 -2
  2. package/bin/omegga +1 -1
  3. package/dist/cli/terminal.js +46 -0
  4. package/dist/cli/terminal.js.map +1 -1
  5. package/dist/omegga/commandInjector.js +13 -6
  6. package/dist/omegga/commandInjector.js.map +1 -1
  7. package/dist/omegga/player.js +2 -2
  8. package/dist/omegga/player.js.map +1 -1
  9. package/dist/plugin.js.map +1 -1
  10. package/dist/webserver/backend/database.js +219 -7
  11. package/dist/webserver/backend/database.js.map +1 -1
  12. package/dist/webserver/backend/events.js +1 -1
  13. package/dist/webserver/backend/events.js.map +1 -1
  14. package/dist/webserver/backend/index.js +120 -2
  15. package/dist/webserver/backend/index.js.map +1 -1
  16. package/dist/webserver/backend/permissions.js +74 -0
  17. package/dist/webserver/backend/permissions.js.map +1 -0
  18. package/dist/webserver/backend/router/chat.js +9 -7
  19. package/dist/webserver/backend/router/chat.js.map +1 -1
  20. package/dist/webserver/backend/router/index.js +3 -1
  21. package/dist/webserver/backend/router/index.js.map +1 -1
  22. package/dist/webserver/backend/router/mfa.js +162 -0
  23. package/dist/webserver/backend/router/mfa.js.map +1 -0
  24. package/dist/webserver/backend/router/player.js +7 -6
  25. package/dist/webserver/backend/router/player.js.map +1 -1
  26. package/dist/webserver/backend/router/plugin.js +14 -10
  27. package/dist/webserver/backend/router/plugin.js.map +1 -1
  28. package/dist/webserver/backend/router/role.js +2 -1
  29. package/dist/webserver/backend/router/role.js.map +1 -1
  30. package/dist/webserver/backend/router/server.js +85 -71
  31. package/dist/webserver/backend/router/server.js.map +1 -1
  32. package/dist/webserver/backend/router/session.js +11 -2
  33. package/dist/webserver/backend/router/session.js.map +1 -1
  34. package/dist/webserver/backend/router/user.js +175 -13
  35. package/dist/webserver/backend/router/user.js.map +1 -1
  36. package/dist/webserver/backend/router/world.js +10 -9
  37. package/dist/webserver/backend/router/world.js.map +1 -1
  38. package/dist/webserver/backend/scopes.js +303 -0
  39. package/dist/webserver/backend/scopes.js.map +1 -0
  40. package/dist/webserver/backend/totp.js +32 -0
  41. package/dist/webserver/backend/totp.js.map +1 -0
  42. package/dist/webserver/backend/trpc.js +47 -4
  43. package/dist/webserver/backend/trpc.js.map +1 -1
  44. package/doc/permissions.md +193 -0
  45. package/package.json +7 -2
  46. package/public/app.html +932 -526
  47. package/public/assets/IconShieldCheck-Bjlm8mX2.js +2 -0
  48. package/public/assets/IconShieldCheck-Bjlm8mX2.js.map +1 -0
  49. package/public/assets/IconWorld-XmQNg6JI.js +2 -0
  50. package/public/assets/IconWorld-XmQNg6JI.js.map +1 -0
  51. package/public/assets/IconWorldPlus-CxGGv2eD.js +2 -0
  52. package/public/assets/IconWorldPlus-CxGGv2eD.js.map +1 -0
  53. package/public/assets/app-DMr_-wik.js +7 -0
  54. package/public/assets/app-DMr_-wik.js.map +1 -0
  55. package/public/assets/auth-CEYiizOt.js +2 -0
  56. package/public/assets/auth-CEYiizOt.js.map +1 -0
  57. package/public/assets/index-BDkarAkX.js +3 -0
  58. package/public/assets/index-BDkarAkX.js.map +1 -0
  59. package/public/assets/{index-2cgXLhrt.js → index-DEL-PD_8.js} +2 -2
  60. package/public/assets/{index-2cgXLhrt.js.map → index-DEL-PD_8.js.map} +1 -1
  61. package/public/assets/index-D_STNela.js +2 -0
  62. package/public/assets/index-D_STNela.js.map +1 -0
  63. package/public/assets/index-Dkh3HiBz.js +4 -0
  64. package/public/assets/index-Dkh3HiBz.js.map +1 -0
  65. package/public/assets/shared/@components-CgsSYMe6.js +2 -0
  66. package/public/assets/shared/@components-CgsSYMe6.js.map +1 -0
  67. package/public/assets/shared/@hooks-DT93N7wd.js +2 -0
  68. package/public/assets/shared/{@hooks-Ch_hJYh0.js.map → @hooks-DT93N7wd.js.map} +1 -1
  69. package/public/assets/shared/@tabler_icons-react-DrVFX3uL.js +3 -0
  70. package/public/assets/shared/{@tabler_icons-react-iQk11eD_.js.map → @tabler_icons-react-DrVFX3uL.js.map} +1 -1
  71. package/public/assets/shared/{wouter-CUC1caxu.js → wouter-CNISJ5i6.js} +2 -2
  72. package/public/assets/shared/wouter-CNISJ5i6.js.map +1 -0
  73. package/public/assets/useHasScope-BOdFktko.js +2 -0
  74. package/public/assets/useHasScope-BOdFktko.js.map +1 -0
  75. package/public/auth.html +97 -33
  76. package/templates/safe-ts/omegga.d.ts +1 -1
  77. package/public/assets/IconArrowRight-BuVxhqKX.js +0 -2
  78. package/public/assets/IconArrowRight-BuVxhqKX.js.map +0 -1
  79. package/public/assets/IconWorld-B6GK5qpx.js +0 -2
  80. package/public/assets/IconWorld-B6GK5qpx.js.map +0 -1
  81. package/public/assets/IconWorldPlus-Dkos72Ws.js +0 -2
  82. package/public/assets/IconWorldPlus-Dkos72Ws.js.map +0 -1
  83. package/public/assets/app-CLZ-5FIi.js +0 -6
  84. package/public/assets/app-CLZ-5FIi.js.map +0 -1
  85. package/public/assets/auth-6N37o421.js +0 -2
  86. package/public/assets/auth-6N37o421.js.map +0 -1
  87. package/public/assets/index-DLZ8-XzO.js +0 -4
  88. package/public/assets/index-DLZ8-XzO.js.map +0 -1
  89. package/public/assets/index-DY750sgZ.js +0 -2
  90. package/public/assets/index-DY750sgZ.js.map +0 -1
  91. package/public/assets/shared/@components-DPHARroA.js +0 -2
  92. package/public/assets/shared/@components-DPHARroA.js.map +0 -1
  93. package/public/assets/shared/@hooks-Ch_hJYh0.js +0 -2
  94. package/public/assets/shared/@tabler_icons-react-iQk11eD_.js +0 -3
  95. package/public/assets/shared/wouter-CUC1caxu.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{j as s}from"./jsx-runtime-BX5r4UiA.js";import{useStore as v}from"./shared/@nanostores_react-DJPF1Eqx.js";import{a as j}from"./index-CSV4ZXsq.js";import{I as p,a as f}from"./IconX-CvmO0bbE.js";import{r as x}from"./index-CrN8I5Az.js";import{I as g}from"./IconCheck-DOe3u7iH.js";const N=j(null),b="/assets/dark_bg-uu5tZDxN.webp",$="/assets/auth_bg-DJZN1T-H.webp",z=({children:e})=>{const a=v(N);return s.jsxs("div",{className:"background",children:[s.jsx("img",{className:"bg-img dark",src:b}),s.jsx("img",{className:"bg-img light",src:$}),a&&s.jsxs("div",{className:"version",children:["Omegga v",a]}),e]})},h=({children:e,warn:a,main:r,error:t,info:o,normal:l,disabled:m=!1,icon:n,boxy:i,onClick:c,className:d,...u})=>s.jsx("div",{className:["button",d??"",a&&"warn",r&&"main",t&&"error",o&&"info",l&&"normal",m&&"disabled",i&&"boxy",n&&"icon"].filter(Boolean).join(" "),onClick:c,...u,children:s.jsx("div",{className:"button-content",children:e})}),k=({children:e,className:a,attached:r,...t})=>s.jsx("div",{className:`footer ${r?"attached":""} ${a??""}`,...t,children:e}),w=({children:e,className:a,attached:r,...t})=>s.jsx("div",{className:`header ${r?"attached":""} ${a??""}`,...t,children:e});function E({placeholder:e,tooltip:a,disabled:r,type:t="text",value:o,roboto:l,onBlur:m,onFocus:n,onChange:i,...c}){return s.jsx("div",{className:`input ${r?"disabled":""} ${l?"roboto":""}`,"data-tooltip":a,children:s.jsx("input",{spellCheck:"false",type:t,placeholder:e,disabled:r,value:o,onChange:d=>{const u=t==="number"?Number(d.target.value):d.target.value;i&&i(u)},...c})})}const C={small:"24",normal:"30",huge:"60",massive:"120"},M=({children:e,onClick:a,blur:r,active:t=!0,inline:o=!1,size:l="normal"})=>s.jsx("div",{className:`loader ${t?"active":""} ${o?"inline":""}`,onClick:a,children:s.jsxs("div",{className:`loader-container ${r?"blur":""}`,children:[s.jsx(p,{className:"loader-icon",size:C[l]}),s.jsx("div",{children:e})]})}),B=({visible:e,children:a})=>s.jsx("div",{className:`dimmer ${e?"visible":""}`,children:s.jsx("div",{className:"dimmer-content",children:a})}),I=({children:e})=>s.jsx("div",{className:"popout-content",children:e}),y=({visible:e,children:a})=>s.jsx("div",{className:`modal ${e?"visible":""}`,children:s.jsx("div",{className:"modal-content",children:a})}),S=({leftButton:e,rightButton:a,title:r,content:t}={})=>{const[o,l]=x.useState({show:!1,message:"",children:null,resolve:n=>{}});return{prompt:x.useCallback(n=>new Promise(i=>{l({message:typeof n=="string"?n:"",children:typeof n!="string"&&n?n:null,show:!0,resolve(c){i(c),l({show:!1,message:"",children:null,resolve:()=>{}})}})}),[]),children:s.jsx(B,{visible:o.show,children:s.jsxs(y,{visible:!0,children:[s.jsx(w,{attached:!0,children:r??"Confirmation"}),s.jsx(I,{children:t??o.children??s.jsxs("p",{children:["Are you sure you want to ",o.message,"?"]})}),s.jsxs(k,{attached:!0,children:[e?.(o.resolve)??s.jsxs(h,{main:!0,onClick:()=>o.resolve(!0),children:[s.jsx(g,{}),"Yes"]}),s.jsx("div",{style:{flex:1}}),a?.(o.resolve)??s.jsxs(h,{normal:!0,onClick:()=>o.resolve(!1),children:[s.jsx(f,{}),"No"]})]})]})})}};export{N as $,z as B,B as D,k as F,w as H,E as I,M as L,y as M,I as P,h as a,S as u};
2
- //# sourceMappingURL=index-DY750sgZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DY750sgZ.js","sources":["../../frontend/src/stores/version.ts","../../frontend/assets/img/dark_bg.webp","../../frontend/assets/img/auth_bg.webp","../../frontend/src/components/background/index.tsx","../../frontend/src/components/button/index.tsx","../../frontend/src/components/footer/index.tsx","../../frontend/src/components/header/index.tsx","../../frontend/src/components/input/index.tsx","../../frontend/src/components/loader/index.tsx","../../frontend/src/components/dimmer/index.tsx","../../frontend/src/components/popout/index.tsx","../../frontend/src/components/modal/index.tsx"],"sourcesContent":["import { atom } from 'nanostores';\n\nexport const $version = atom<string | null>(null);\n","export default \"__VITE_ASSET__DZw7aIWt__\"","export default \"__VITE_ASSET__CbOwMhlW__\"","import { useStore } from '@nanostores/react';\nimport type React from 'react';\nimport { $version } from '../../stores/version';\nimport darkBg from '../../../assets/img/dark_bg.webp';\nimport lightBg from '../../../assets/img/auth_bg.webp';\n\nexport const Background = ({ children }: React.PropsWithChildren) => {\n const version = useStore($version);\n return (\n <div className=\"background\">\n <img className=\"bg-img dark\" src={darkBg} />\n <img className=\"bg-img light\" src={lightBg} />\n {version && <div className=\"version\">Omegga v{version}</div>}\n {children}\n </div>\n );\n};\n","import type React from 'react';\nimport type { HTMLAttributes, MouseEventHandler } from 'react';\n\nexport const Button = ({\n children,\n warn,\n main,\n error,\n info,\n normal,\n disabled = false,\n icon,\n boxy,\n onClick,\n className,\n ...props\n}: React.PropsWithChildren<{\n warn?: boolean;\n main?: boolean;\n error?: boolean;\n info?: boolean;\n normal?: boolean;\n disabled?: boolean;\n icon?: boolean;\n boxy?: boolean;\n onClick?: MouseEventHandler;\n}> &\n HTMLAttributes<HTMLDivElement>) => (\n <div\n className={[\n 'button',\n className ?? '',\n warn && 'warn',\n main && 'main',\n error && 'error',\n info && 'info',\n normal && 'normal',\n disabled && 'disabled',\n boxy && 'boxy',\n icon && 'icon',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={onClick}\n {...props}\n >\n <div className=\"button-content\">{children}</div>\n </div>\n);\n","import type { HTMLAttributes } from 'react';\n\nexport const Footer = ({\n children,\n className,\n attached,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n attached?: boolean;\n}) => (\n <div\n className={`footer ${attached ? 'attached' : ''} ${className ?? ''}`}\n {...props}\n >\n {children}\n </div>\n);\n","import type { HTMLAttributes } from 'react';\nimport type React from 'react';\n\nexport const Header = ({\n children,\n className,\n attached,\n ...props\n}: React.PropsWithChildren &\n HTMLAttributes<HTMLDivElement> & { attached?: boolean }) => (\n <div\n className={`header ${attached ? 'attached' : ''} ${className ?? ''}`}\n {...props}\n >\n {children}\n </div>\n);\n","import type { HTMLAttributes } from 'react';\n\nexport function Input<T extends 'text' | 'number' | 'password'>({\n placeholder,\n tooltip,\n disabled,\n type = 'text' as T,\n value,\n roboto,\n onBlur,\n onFocus,\n onChange,\n ...props\n}: {\n placeholder?: string;\n tooltip?: string;\n disabled?: boolean;\n roboto?: boolean;\n type?: T;\n value: T extends 'number' ? number : string;\n onChange?: (v: T extends 'number' ? number : string) => void;\n} & Omit<HTMLAttributes<HTMLInputElement>, 'onChange'>) {\n return (\n <div\n className={`input ${disabled ? 'disabled' : ''} ${roboto ? 'roboto' : ''}`}\n data-tooltip={tooltip}\n >\n <input\n spellCheck=\"false\"\n type={type}\n placeholder={placeholder}\n disabled={disabled}\n value={value}\n onChange={e => {\n const newValue =\n type === 'number' ? Number(e.target.value) : e.target.value;\n if (onChange)\n onChange(newValue as T extends 'number' ? number : string);\n }}\n {...props}\n />\n </div>\n );\n}\n","import { IconLoader } from '@tabler/icons-react';\nimport type React from 'react';\nimport type { MouseEventHandler } from 'react';\n\nconst sizes = {\n small: '24',\n normal: '30',\n huge: '60',\n massive: '120',\n};\n\nexport const Loader = ({\n children,\n onClick,\n blur,\n active = true,\n inline = false,\n size = 'normal',\n}: React.PropsWithChildren<{\n active?: boolean;\n inline?: boolean;\n blur?: boolean;\n size?: 'small' | 'normal' | 'huge' | 'massive';\n onClick?: MouseEventHandler;\n}>) => {\n return (\n <div\n className={`loader ${active ? 'active' : ''} ${inline ? 'inline' : ''}`}\n onClick={onClick}\n >\n <div className={`loader-container ${blur ? 'blur' : ''}`}>\n <IconLoader className=\"loader-icon\" size={sizes[size]} />\n <div>{children}</div>\n </div>\n </div>\n );\n};\n","import type { PropsWithChildren } from 'react';\n\nexport const Dimmer = ({\n visible,\n children,\n}: PropsWithChildren<{ visible: boolean }>) => (\n <div className={`dimmer ${visible ? 'visible' : ''}`}>\n <div className=\"dimmer-content\">{children}</div>\n </div>\n);\n","export const PopoutContent = ({ children }: React.PropsWithChildren) => (\n <div className=\"popout-content\">{children}</div>\n);\n","import { IconCheck, IconX } from '@tabler/icons-react';\nimport {\n useCallback,\n useState,\n type PropsWithChildren,\n type ReactNode,\n} from 'react';\nimport { Button } from '../button';\nimport { Dimmer } from '../dimmer';\nimport { Footer } from '../footer';\nimport { Header } from '../header';\nimport { PopoutContent } from '../popout';\n\nexport const Modal = ({\n visible,\n children,\n}: PropsWithChildren<{ visible: boolean }>) => (\n <div className={`modal ${visible ? 'visible' : ''}`}>\n <div className=\"modal-content\">{children}</div>\n </div>\n);\n\nexport const useConfirm = <T = boolean,>({\n leftButton,\n rightButton,\n title,\n content,\n}: {\n title?: string;\n content?: ReactNode;\n leftButton?: (confirm: (ok: T) => void) => React.ReactNode;\n rightButton?: (confirm: (ok: T) => void) => React.ReactNode;\n} = {}) => {\n const [confirm, setConfim] = useState({\n show: false,\n message: '',\n children: null as ReactNode | null,\n resolve: (_val: T) => {},\n });\n const prompt = useCallback(\n (message?: string | ReactNode) =>\n new Promise<T>(resolve => {\n setConfim({\n message: typeof message === 'string' ? message : '',\n children: typeof message !== 'string' && message ? message : null,\n show: true,\n resolve(val: T) {\n resolve(val);\n setConfim({\n show: false,\n message: '',\n children: null,\n resolve: () => {},\n });\n },\n });\n }),\n [],\n );\n\n return {\n prompt,\n children: (\n <Dimmer visible={confirm.show}>\n <Modal visible>\n <Header attached>{title ?? 'Confirmation'}</Header>\n <PopoutContent>\n {content ?? confirm.children ?? (\n <p>Are you sure you want to {confirm.message}?</p>\n )}\n </PopoutContent>\n <Footer attached>\n {leftButton?.(confirm.resolve) ?? (\n <Button main onClick={() => confirm.resolve(true as T)}>\n <IconCheck />\n Yes\n </Button>\n )}\n <div style={{ flex: 1 }} />\n {rightButton?.(confirm.resolve) ?? (\n <Button normal onClick={() => confirm.resolve(false as T)}>\n <IconX />\n No\n </Button>\n )}\n </Footer>\n </Modal>\n </Dimmer>\n ),\n };\n};\n"],"names":["$version","atom","darkBg","lightBg","Background","children","version","useStore","jsxs","jsx","Button","warn","main","error","info","normal","disabled","icon","boxy","onClick","className","props","Footer","attached","Header","Input","placeholder","tooltip","type","value","roboto","onBlur","onFocus","onChange","e","newValue","sizes","Loader","blur","active","inline","size","IconLoader","Dimmer","visible","PopoutContent","Modal","useConfirm","leftButton","rightButton","title","content","confirm","setConfim","useState","_val","useCallback","message","resolve","val","IconCheck","IconX"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{B as D,a as I,D as P,F as f,H as N,I as S,L as c,M as B,P as h,u as v}from"../index-DY750sgZ.js";import{C as H,k as L,D as T,I as k,g as x,e as y,N as F,j as M,P as R,h as U,R as j,d as E,S as b,f as q,T as z,U as A}from"../index-DLZ8-XzO.js";import"../jsx-runtime-BX5r4UiA.js";import"../jsx-runtime-DldvXD6N.js";import"./@nanostores_react-DJPF1Eqx.js";import"../index-CrN8I5Az.js";import"../_commonjsHelpers-CE1G-McA.js";import"../index-D0OPOe3j.js";import"../index-CJ4e7_2M.js";import"../index-CSV4ZXsq.js";import"../IconX-CvmO0bbE.js";import"../IconCheck-DOe3u7iH.js";import"../index-2cgXLhrt.js";import"../IconWorld-B6GK5qpx.js";import"../utils-Ds3ldd-U.js";export{D as Background,I as Button,H as ChatEntry,L as ChatTime,P as Dimmer,T as Dropdown,f as Footer,N as Header,k as InfiniteScroll,S as Input,x as ListInput,c as Loader,B as Modal,y as NavBar,F as NavHeader,M as Page,R as PageContent,U as PlayerDropdown,h as PopoutContent,j as RoleDropdown,E as Scroll,b as SideNav,q as SortIcons,z as Toggle,A as UserName,v as useConfirm};
2
- //# sourceMappingURL=@components-DPHARroA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"@components-DPHARroA.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{j as o}from"../jsx-runtime-BX5r4UiA.js";import{r as i}from"../index-CrN8I5Az.js";import{I as s}from"../IconCheck-DOe3u7iH.js";import"../jsx-runtime-DldvXD6N.js";import"../_commonjsHelpers-CE1G-McA.js";import"../index-D0OPOe3j.js";var m=(t=>(t.Idle="idle",t.Waiting="waiting",t.Fired="fired",t))(m||{});const w=(t,n)=>{const e=i.useRef({callback:t,clearCallback:n,firedTimeout:null,waitingTimeout:null});e.current.callback=t,e.current.clearCallback=n;const[u,r]=i.useState("idle"),a=i.useCallback(()=>{clearTimeout(e.current.waitingTimeout),clearTimeout(e.current.firedTimeout),r("waiting"),e.current.waitingTimeout=setTimeout(()=>{r("fired"),e.current.callback(),e.current.firedTimeout=setTimeout(()=>{r("idle"),e.current.clearCallback?.()},1e3)},1e3)},[]),c=i.useCallback(()=>{clearTimeout(e.current.waitingTimeout),clearTimeout(e.current.firedTimeout),r("waiting")},[]);return{fire:a,cancel:c,status:u}},x=({show:t})=>o.jsxs("span",{className:`saved-note ${t?"show":""}`,children:["SAVED ",o.jsx(s,{size:"20"})]});export{x as SavedSpan,m as SavedStatus,w as useSaved};
2
- //# sourceMappingURL=@hooks-Ch_hJYh0.js.map