1
0
mirror of https://github.com/spacebarchat/client.git synced 2024-11-24 03:12:29 +01:00
This commit is contained in:
Puyodead1 2024-02-27 22:40:34 -05:00
parent a63e154431
commit 19fe08b602
No known key found for this signature in database
GPG Key ID: A4FA4FEC0DD353FC
25 changed files with 24223 additions and 18779 deletions

View File

@ -3,3 +3,4 @@ dist
node_modules node_modules
.github .github
.vscode .vscode
src-tauri/target

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<!-- Primary Meta Tags --> <!-- Primary Meta Tags -->

File diff suppressed because it is too large Load Diff

View File

@ -1,116 +1,116 @@
{ {
"images" : [ "images": [
{ {
"size" : "20x20", "size": "20x20",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-20x20@2x.png", "filename": "AppIcon-20x20@2x.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "20x20", "size": "20x20",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-20x20@3x.png", "filename": "AppIcon-20x20@3x.png",
"scale" : "3x" "scale": "3x"
}, },
{ {
"size" : "29x29", "size": "29x29",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-29x29@2x-1.png", "filename": "AppIcon-29x29@2x-1.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "29x29", "size": "29x29",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-29x29@3x.png", "filename": "AppIcon-29x29@3x.png",
"scale" : "3x" "scale": "3x"
}, },
{ {
"size" : "40x40", "size": "40x40",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-40x40@2x.png", "filename": "AppIcon-40x40@2x.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "40x40", "size": "40x40",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-40x40@3x.png", "filename": "AppIcon-40x40@3x.png",
"scale" : "3x" "scale": "3x"
}, },
{ {
"size" : "60x60", "size": "60x60",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-60x60@2x.png", "filename": "AppIcon-60x60@2x.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "60x60", "size": "60x60",
"idiom" : "iphone", "idiom": "iphone",
"filename" : "AppIcon-60x60@3x.png", "filename": "AppIcon-60x60@3x.png",
"scale" : "3x" "scale": "3x"
}, },
{ {
"size" : "20x20", "size": "20x20",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-20x20@1x.png", "filename": "AppIcon-20x20@1x.png",
"scale" : "1x" "scale": "1x"
}, },
{ {
"size" : "20x20", "size": "20x20",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-20x20@2x-1.png", "filename": "AppIcon-20x20@2x-1.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "29x29", "size": "29x29",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-29x29@1x.png", "filename": "AppIcon-29x29@1x.png",
"scale" : "1x" "scale": "1x"
}, },
{ {
"size" : "29x29", "size": "29x29",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-29x29@2x.png", "filename": "AppIcon-29x29@2x.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "40x40", "size": "40x40",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-40x40@1x.png", "filename": "AppIcon-40x40@1x.png",
"scale" : "1x" "scale": "1x"
}, },
{ {
"size" : "40x40", "size": "40x40",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-40x40@2x-1.png", "filename": "AppIcon-40x40@2x-1.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "76x76", "size": "76x76",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-76x76@1x.png", "filename": "AppIcon-76x76@1x.png",
"scale" : "1x" "scale": "1x"
}, },
{ {
"size" : "76x76", "size": "76x76",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-76x76@2x.png", "filename": "AppIcon-76x76@2x.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "83.5x83.5", "size": "83.5x83.5",
"idiom" : "ipad", "idiom": "ipad",
"filename" : "AppIcon-83.5x83.5@2x.png", "filename": "AppIcon-83.5x83.5@2x.png",
"scale" : "2x" "scale": "2x"
}, },
{ {
"size" : "1024x1024", "size": "1024x1024",
"idiom" : "ios-marketing", "idiom": "ios-marketing",
"filename" : "AppIcon-512@2x.png", "filename": "AppIcon-512@2x.png",
"scale" : "1x" "scale": "1x"
} }
], ],
"info" : { "info": {
"version" : 1, "version": 1,
"author" : "xcode" "author": "xcode"
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"info" : { "info": {
"version" : 1, "version": 1,
"author" : "xcode" "author": "xcode"
} }
} }

View File

@ -1,88 +1,88 @@
name: app name: app
options: options:
bundleIdPrefix: chat.spacebar bundleIdPrefix: chat.spacebar
deploymentTarget: deploymentTarget:
iOS: 13.0 iOS: 13.0
fileGroups: [../../src] fileGroups: [../../src]
configs: configs:
debug: debug debug: debug
release: release release: release
settingGroups: settingGroups:
app: app:
base: base:
PRODUCT_NAME: Spacebar PRODUCT_NAME: Spacebar
PRODUCT_BUNDLE_IDENTIFIER: chat.spacebar.app PRODUCT_BUNDLE_IDENTIFIER: chat.spacebar.app
DEVELOPMENT_TEAM: 47RXBB8X9K DEVELOPMENT_TEAM: 47RXBB8X9K
targetTemplates: targetTemplates:
app: app:
type: application type: application
sources: sources:
- path: Sources - path: Sources
scheme: scheme:
environmentVariables: environmentVariables:
RUST_BACKTRACE: full RUST_BACKTRACE: full
RUST_LOG: info RUST_LOG: info
settings: settings:
groups: [app] groups: [app]
targets: targets:
app_iOS: app_iOS:
type: application type: application
platform: iOS platform: iOS
sources: sources:
- path: Sources - path: Sources
- path: Assets.xcassets - path: Assets.xcassets
- path: Externals - path: Externals
- path: app_iOS - path: app_iOS
- path: assets - path: assets
buildPhase: resources buildPhase: resources
type: folder type: folder
info: info:
path: app_iOS/Info.plist path: app_iOS/Info.plist
properties: properties:
LSRequiresIPhoneOS: true LSRequiresIPhoneOS: true
UILaunchStoryboardName: LaunchScreen UILaunchStoryboardName: LaunchScreen
UIRequiredDeviceCapabilities: [arm64, metal] UIRequiredDeviceCapabilities: [arm64, metal]
UISupportedInterfaceOrientations: UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait - UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad: UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationPortrait - UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationLandscapeRight
CFBundleShortVersionString: 0.1.1 CFBundleShortVersionString: 0.1.1
CFBundleVersion: 0.1.1 CFBundleVersion: 0.1.1
entitlements: entitlements:
path: app_iOS/app_iOS.entitlements path: app_iOS/app_iOS.entitlements
scheme: scheme:
environmentVariables: environmentVariables:
RUST_BACKTRACE: full RUST_BACKTRACE: full
RUST_LOG: info RUST_LOG: info
settings: settings:
base: base:
ENABLE_BITCODE: false ENABLE_BITCODE: false
ARCHS: [arm64, x86_64] ARCHS: [arm64, x86_64]
VALID_ARCHS: arm64 x86_64 VALID_ARCHS: arm64 x86_64
LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
groups: [app] groups: [app]
dependencies: dependencies:
- framework: libspacebar.a - framework: libspacebar.a
embed: false embed: false
- sdk: CoreGraphics.framework - sdk: CoreGraphics.framework
- sdk: Metal.framework - sdk: Metal.framework
- sdk: MetalKit.framework - sdk: MetalKit.framework
- sdk: QuartzCore.framework - sdk: QuartzCore.framework
- sdk: Security.framework - sdk: Security.framework
- sdk: UIKit.framework - sdk: UIKit.framework
- sdk: WebKit.framework - sdk: WebKit.framework
preBuildScripts: preBuildScripts:
- script: node /Users/rileyzicafoose/Documents/client/./node_modules/.bin/../@tauri-apps/cli/tauri.js ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths "${FRAMEWORK_SEARCH_PATHS:?}" --header-search-paths "${HEADER_SEARCH_PATHS:?}" --gcc-preprocessor-definitions "${GCC_PREPROCESSOR_DEFINITIONS:-}" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?} - script: node /Users/rileyzicafoose/Documents/client/./node_modules/.bin/../@tauri-apps/cli/tauri.js ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths "${FRAMEWORK_SEARCH_PATHS:?}" --header-search-paths "${HEADER_SEARCH_PATHS:?}" --gcc-preprocessor-definitions "${GCC_PREPROCESSOR_DEFINITIONS:-}" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}
name: Build Rust Code name: Build Rust Code
basedOnDependencyAnalysis: false basedOnDependencyAnalysis: false
outputFiles: outputFiles:
- $(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libspacebar.a - $(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libspacebar.a
- $(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libspacebar.a - $(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libspacebar.a

View File

@ -1 +1,27 @@
{"base":{"identifier":"base","description":"base","local":true,"windows":["main","splashscreen"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","tray:default","updater:default","notification:default","os:allow-platform","os:allow-arch","os:allow-family","os:allow-locale","os:allow-os-type","os:allow-version","webview:allow-internal-toggle-devtools"],"platforms":["linux","macOS","windows","android","iOS"]}} {
"base": {
"identifier": "base",
"description": "base",
"local": true,
"windows": ["main", "splashscreen"],
"permissions": [
"path:default",
"event:default",
"window:default",
"app:default",
"resources:default",
"menu:default",
"tray:default",
"updater:default",
"notification:default",
"os:allow-platform",
"os:allow-arch",
"os:allow-family",
"os:allow-locale",
"os:allow-os-type",
"os:allow-version",
"webview:allow-internal-toggle-devtools"
],
"platforms": ["linux", "macOS", "windows", "android", "iOS"]
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -30,7 +30,9 @@ const Wrapper = styled(Container)<{ active?: boolean; hasImage?: boolean }>`
border-radius: ${(props) => (props.active ? "30%" : "50%")}; border-radius: ${(props) => (props.active ? "30%" : "50%")};
background-color: ${(props) => background-color: ${(props) =>
props.hasImage ? "transparent" : props.active ? "var(--primary)" : "var(--background-secondary)"}; props.hasImage ? "transparent" : props.active ? "var(--primary)" : "var(--background-secondary)"};
transition: border-radius 0.2s ease, background-color 0.2s ease; transition:
border-radius 0.2s ease,
background-color 0.2s ease;
&:hover { &:hover {
border-radius: 30%; border-radius: 30%;

View File

@ -59,7 +59,7 @@ function MemberList() {
<MemberListItem item={x} /> <MemberListItem item={x} />
))} ))}
/> />
)) ))
: null} : null}
</List> </List>
</Container> </Container>

View File

@ -22,7 +22,9 @@ const Container = styled.div`
width: 340px; width: 340px;
max-height: 600px; max-height: 600px;
overflow: hidden; overflow: hidden;
box-shadow: 0 0 0 1px rgb(0 0 0 / 15%), 0 4px 8px rgb(0 0 0 / 15%); box-shadow:
0 0 0 1px rgb(0 0 0 / 15%),
0 4px 8px rgb(0 0 0 / 15%);
color: var(--text); color: var(--text);
`; `;

View File

@ -8,7 +8,10 @@
code[class*="language-"], code[class*="language-"],
pre[class*="language-"] { pre[class*="language-"] {
color: #f92aad; color: #f92aad;
text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3; text-shadow:
0 0 2px #100c0f,
0 0 5px #dc078e33,
0 0 10px #fff3;
background: none; background: none;
font-family: var(--font-family-code); font-family: var(--font-family-code);
font-size: 1em; font-size: 1em;
@ -74,7 +77,10 @@ pre[class*="language-"] {
.token.property, .token.property,
.token.selector { .token.selector {
color: #72f1b8; color: #72f1b8;
text-shadow: 0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475; text-shadow:
0 0 2px #100c0f,
0 0 10px #257c5575,
0 0 35px #21272475;
} }
.token.function-name { .token.function-name {
@ -85,18 +91,29 @@ pre[class*="language-"] {
.token.selector .token.id, .token.selector .token.id,
.token.function { .token.function {
color: #fdfdfd; color: #fdfdfd;
text-shadow: 0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975; text-shadow:
0 0 2px #001716,
0 0 3px #03edf975,
0 0 5px #03edf975,
0 0 8px #03edf975;
} }
.token.class-name { .token.class-name {
color: #fff5f6; color: #fff5f6;
text-shadow: 0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75; text-shadow:
0 0 2px #000,
0 0 10px #fc1f2c75,
0 0 5px #fc1f2c75,
0 0 25px #fc1f2c75;
} }
.token.constant, .token.constant,
.token.symbol { .token.symbol {
color: #f92aad; color: #f92aad;
text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3; text-shadow:
0 0 2px #100c0f,
0 0 5px #dc078e33,
0 0 10px #fff3;
} }
.token.important, .token.important,
@ -105,7 +122,10 @@ pre[class*="language-"] {
.token.selector .token.class, .token.selector .token.class,
.token.builtin { .token.builtin {
color: #f4eee4; color: #f4eee4;
text-shadow: 0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575; text-shadow:
0 0 2px #393a33,
0 0 8px #f39f0575,
0 0 2px #f39f0575;
} }
.token.string, .token.string,

View File

@ -197,7 +197,7 @@ function MessageInput({ channel }: Props) {
channel.type === ChannelType.DM channel.type === ChannelType.DM
? channel.recipients?.[0].username ? channel.recipients?.[0].username
: "#" + channel.name : "#" + channel.name
}` }`
: "You do not have permission to send messages in this channel." : "You do not have permission to send messages in this channel."
} }
disabled={!channel.hasPermission("SEND_MESSAGES")} disabled={!channel.hasPermission("SEND_MESSAGES")}

View File

@ -54,7 +54,7 @@ export function BanMemberModal({ target, type, ...props }: ModalProps<"ban_membe
data.reason data.reason
? { ? {
"X-Audit-Log-Reason": data.reason, "X-Audit-Log-Reason": data.reason,
} }
: undefined, : undefined,
) )
.then(() => { .then(() => {

View File

@ -54,7 +54,7 @@ export function KickMemberModal({ target, ...props }: ModalProps<"kick_member">)
data.reason data.reason
? { ? {
"X-Audit-Log-Reason": data.reason, "X-Audit-Log-Reason": data.reason,
} }
: undefined, : undefined,
) )
.then(() => { .then(() => {

View File

@ -62,10 +62,10 @@ export const ModalBase = styled.div<{ closing?: boolean }>`
> div { > div {
animation-name: ${animationZoomOut}; animation-name: ${animationZoomOut};
} }
` `
: css` : css`
animation-name: ${animationFadeIn}; animation-name: ${animationFadeIn};
`} `}
`; `;
/** /**

View File

@ -53,7 +53,7 @@ export const ContextMenuContextProvider: React.FC<any> = ({ children }) => {
? ContextMenuComponents[contextMenu.props.type] ? ContextMenuComponents[contextMenu.props.type]
: () => { : () => {
return null; return null;
}; };
return ( return (
<ContextMenuContext.Provider <ContextMenuContext.Provider

View File

@ -374,11 +374,14 @@ export default class GatewayConnectionStore {
} }
}; };
this.initialHeartbeatTimeout = setTimeout(() => { this.initialHeartbeatTimeout = setTimeout(
this.initialHeartbeatTimeout = null; () => {
this.heartbeater = setInterval(heartbeaterFn, this.heartbeatInterval!); this.initialHeartbeatTimeout = null;
heartbeaterFn(); this.heartbeater = setInterval(heartbeaterFn, this.heartbeatInterval!);
}, Math.floor(Math.random() * this.heartbeatInterval!)); heartbeaterFn();
},
Math.floor(Math.random() * this.heartbeatInterval!),
);
}; };
/** /**

View File

@ -198,7 +198,7 @@ export default class Guild {
reason reason
? { ? {
"X-Audit-Log-Reason": reason, "X-Audit-Log-Reason": reason,
} }
: {}, : {},
); );
} }
@ -214,7 +214,7 @@ export default class Guild {
reason reason
? { ? {
"X-Audit-Log-Reason": reason, "X-Audit-Log-Reason": reason,
} }
: {}, : {},
); );
} }

View File

@ -27,7 +27,10 @@ export default class MessageBase {
type: MessageType; type: MessageType;
author: User; author: User;
constructor(public readonly app: AppStore, data: MessageLikeData) { constructor(
public readonly app: AppStore,
data: MessageLikeData,
) {
this.id = data.id; this.id = data.id;
this.content = data.content; this.content = data.content;
this.timestamp = new Date(data.timestamp); this.timestamp = new Date(data.timestamp);

View File

@ -100,16 +100,19 @@ export class Permissions extends BitField {
static channelPermission(overwrites: APIOverwrite[], init?: bigint) { static channelPermission(overwrites: APIOverwrite[], init?: bigint) {
// TODO: do not deny any permissions if admin // TODO: do not deny any permissions if admin
return overwrites.reduce((permission, overwrite) => { return overwrites.reduce(
// apply disallowed permission (permission, overwrite) => {
// * permission: current calculated permission (e.g. 010) // apply disallowed permission
// * deny contains all denied permissions (e.g. 011) // * permission: current calculated permission (e.g. 010)
// * allow contains all explicitly allowed permisions (e.g. 100) // * deny contains all denied permissions (e.g. 011)
return (permission & ~BigInt(overwrite.deny)) | BigInt(overwrite.allow); // * allow contains all explicitly allowed permisions (e.g. 100)
// ~ operator inverts deny (e.g. 011 -> 100) return (permission & ~BigInt(overwrite.deny)) | BigInt(overwrite.allow);
// & operator only allows 1 for both ~deny and permission (e.g. 010 & 100 -> 000) // ~ operator inverts deny (e.g. 011 -> 100)
// | operators adds both together (e.g. 000 + 100 -> 100) // & operator only allows 1 for both ~deny and permission (e.g. 010 & 100 -> 000)
}, init || BigInt(0)); // | operators adds both together (e.g. 000 + 100 -> 100)
},
init || BigInt(0),
);
} }
static rolePermission(roles: Role[]) { static rolePermission(roles: Role[]) {

View File

@ -1,10 +1,10 @@
{ {
"compilerOptions": { "compilerOptions": {
"composite": true, "composite": true,
"skipLibCheck": true, "skipLibCheck": true,
"module": "ESNext", "module": "ESNext",
"moduleResolution": "bundler", "moduleResolution": "bundler",
"allowSyntheticDefaultImports": true "allowSyntheticDefaultImports": true
}, },
"include": ["vite.config.ts"] "include": ["vite.config.ts"]
} }

View File

@ -79,7 +79,7 @@ export default defineConfig(async () => ({
protocol: "ws", protocol: "ws",
host: await internalIpV4(), host: await internalIpV4(),
port: 1421, port: 1421,
} }
: undefined, : undefined,
strictPort: true, strictPort: true,
}, },