From b415f024b5635c29e9390efdc7536117fa571bf0 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Tue, 5 Mar 2024 10:20:36 +0000 Subject: [PATCH] merge from local --- .github/workflows/codeql-analysis.yml | 68 --- .gitmodules | 0 .ignorepackages | 0 CODE_OF_CONDUCT.md | 0 CODE_STYLE.md | 0 CONTRIBUTING.md | 0 api-ports.md | 18 + changelogs/v0-45-0.md | 0 changelogs/v0-45-1.md | 0 changelogs/v0-45-2.md | 0 changelogs/v0-46-0.md | 0 changelogs/v0-46-1.md | 0 changelogs/v0-47-0.md | 0 changelogs/v0-47-1.md | 0 changelogs/v0-47-2.md | 0 changelogs/v0-47-3.md | 0 changelogs/v0-47-4.md | 0 changelogs/v0-47-5.md | 0 changelogs/v0-48-0.md | 0 changelogs/v0-48-1.md | 0 changelogs/v0-48-2.md | 0 changelogs/v0-49-0.md | 0 changelogs/v0-49-1.md | 0 changelogs/v0-49-2.md | 0 changelogs/v0-49-3.md | 0 changelogs/v0-50-0.md | 0 changelogs/v0-50-1.md | 0 changelogs/v0-50-2.md | 0 changelogs/v0-50-3.md | 0 changelogs/v0-50-4.md | 0 changelogs/v0-51-0.md | 0 changelogs/v0-51-1.md | 0 changelogs/v0-52-0.md | 0 changelogs/v0-52-1.md | 0 changelogs/v0-52-2.md | 0 changelogs/v0-53-0.md | 0 changelogs/v0-53-1.md | 0 changelogs/v0-53-2.md | 0 changelogs/v0-54-0.md | 0 changelogs/v0-54-1.md | 0 changelogs/v0-54-2.md | 0 changelogs/v0-54-3.md | 0 changelogs/v0-54-4.md | 0 changelogs/v0-55-0.md | 0 changelogs/v0-56-0.md | 0 changelogs/v0-56-1.md | 0 changelogs/v0-56-2.md | 0 changelogs/v0-56-3.md | 0 changelogs/v0-57-0.md | 0 changelogs/v0-57-1.md | 0 changelogs/v0-57-2.md | 0 changelogs/v0-57-3.md | 0 changelogs/v0-57-4.md | 0 changelogs/v0-57-5.md | 0 changelogs/v0-57-6.md | 0 changelogs/v0-58-0.md | 0 changelogs/v0-58-1.md | 0 changelogs/v0-58-2.md | 0 changelogs/v0-59-0.md | 0 changelogs/v0-59-1.md | 0 changelogs/v0-60-1.md | 0 changelogs/v0-60-2.md | 0 changelogs/v0-60-3.md | 0 ecosystem.config.js | 0 linebridge | 2 +- package.json | 9 +- packages/app/android/.gitignore | 0 packages/app/android/.idea/.gitignore | 0 packages/app/android/.idea/compiler.xml | 0 .../app/android/.idea/jarRepositories.xml | 0 packages/app/android/.idea/misc.xml | 0 packages/app/android/app/.gitignore | 0 packages/app/android/app/build.gradle | 0 .../app/android/app/capacitor.build.gradle | 0 packages/app/android/app/proguard-rules.pro | 0 .../android/app/release/output-metadata.json | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../com/ragestudio/comty/MainActivity.java | 0 .../main/res/drawable-land-hdpi/splash.png | Bin .../main/res/drawable-land-ldpi/splash.png | Bin .../main/res/drawable-land-mdpi/splash.png | Bin .../res/drawable-land-night-hdpi/splash.png | Bin .../res/drawable-land-night-ldpi/splash.png | Bin .../res/drawable-land-night-mdpi/splash.png | Bin .../res/drawable-land-night-xhdpi/splash.png | Bin .../res/drawable-land-night-xxhdpi/splash.png | Bin .../drawable-land-night-xxxhdpi/splash.png | Bin .../main/res/drawable-land-xhdpi/splash.png | Bin .../main/res/drawable-land-xxhdpi/splash.png | Bin .../main/res/drawable-land-xxxhdpi/splash.png | Bin .../src/main/res/drawable-night/splash.png | Bin .../main/res/drawable-port-hdpi/splash.png | Bin .../main/res/drawable-port-ldpi/splash.png | Bin .../main/res/drawable-port-mdpi/splash.png | Bin .../res/drawable-port-night-hdpi/splash.png | Bin .../res/drawable-port-night-ldpi/splash.png | Bin .../res/drawable-port-night-mdpi/splash.png | Bin .../res/drawable-port-night-xhdpi/splash.png | Bin .../res/drawable-port-night-xxhdpi/splash.png | Bin .../drawable-port-night-xxxhdpi/splash.png | Bin .../main/res/drawable-port-xhdpi/splash.png | Bin .../main/res/drawable-port-xxhdpi/splash.png | Bin .../main/res/drawable-port-xxxhdpi/splash.png | Bin .../drawable-v24/ic_launcher_foreground.xml | 0 .../res/drawable/ic_launcher_background.xml | 0 .../app/src/main/res/drawable/splash.png | Bin .../app/src/main/res/layout/activity_main.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../mipmap-hdpi/ic_launcher_background.png | Bin .../mipmap-hdpi/ic_launcher_foreground.png | Bin .../mipmap-hdpi/ic_launcher_monochrome.png | Bin .../res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-ldpi/ic_launcher.png | Bin .../mipmap-ldpi/ic_launcher_background.png | Bin .../mipmap-ldpi/ic_launcher_foreground.png | Bin .../res/mipmap-ldpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../mipmap-mdpi/ic_launcher_background.png | Bin .../mipmap-mdpi/ic_launcher_foreground.png | Bin .../mipmap-mdpi/ic_launcher_monochrome.png | Bin .../res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../mipmap-xhdpi/ic_launcher_background.png | Bin .../mipmap-xhdpi/ic_launcher_foreground.png | Bin .../mipmap-xhdpi/ic_launcher_monochrome.png | Bin .../res/mipmap-xhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../mipmap-xxhdpi/ic_launcher_background.png | Bin .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxhdpi/ic_launcher_monochrome.png | Bin .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../mipmap-xxxhdpi/ic_launcher_background.png | Bin .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxxhdpi/ic_launcher_monochrome.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin .../res/values/ic_launcher_background.xml | 0 .../app/src/main/res/values/strings.xml | 0 .../app/src/main/res/values/styles.xml | 0 .../app/src/main/res/xml/file_paths.xml | 0 packages/app/android/build.gradle | 0 .../app/android/capacitor.settings.gradle | 0 packages/app/android/gradle.properties | 0 .../android/gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 packages/app/android/gradlew.bat | 0 packages/app/android/settings.gradle | 0 packages/app/android/variables.gradle | 0 .../constants/settings/changelogs/index.jsx | 0 .../constants/settings/changelogs/index.less | 0 .../components/profileLinks/index.jsx | 0 .../components/profileLinks/index.less | 0 .../components/sessionItem/icons/chrome.jsx | 0 .../components/sessionItem/icons/firefox.jsx | 0 .../components/sessionItem/icons/mobile.jsx | 0 .../settings/components/sessionItem/index.jsx | 0 .../components/sessionItem/index.less | 0 .../components/sliderValues/index.jsx | 0 .../components/sliderValues/index.less | 0 .../components/slidersWithPresets/index.jsx | 0 .../settings/components/widgetsView/index.jsx | 0 .../components/widgetsView/index.less | 0 .../player/items/player.compressor/index.jsx | 0 .../settings/player/items/player.eq/index.jsx | 0 .../app/constants/settings/privacy/index.jsx | 0 .../constants/settings/tap_share/context.js | 0 .../constants/settings/tap_share/errors.js | 0 .../constants/settings/tap_share/index.jsx | 0 .../constants/settings/tap_share/index.less | 0 .../tap_share/steps/check_register/index.jsx | 0 .../tap_share/steps/data_editor/index.jsx | 0 .../tap_share/steps/success/index.jsx | 0 .../tap_share/steps/tag_writter/index.jsx | 0 .../app/constants/settings/widgets/index.jsx | 0 packages/app/constants/userLinksDecorators.js | 0 packages/app/electron-builder.json | 0 packages/app/package.json | 6 +- .../public/assets/badges/early_streamer.svg | 0 packages/app/public/assets/badges/x1.svg | 0 .../app/public/assets/icons/icon-128.webp | Bin .../app/public/assets/icons/icon-192.webp | Bin .../app/public/assets/icons/icon-256.webp | Bin packages/app/public/assets/icons/icon-48.webp | Bin .../app/public/assets/icons/icon-512.webp | Bin packages/app/public/assets/icons/icon-72.webp | Bin packages/app/public/assets/icons/icon-96.webp | Bin packages/app/public/manifest.webmanifest | 0 .../app/public/workers/audioStreamProcess.js | 0 packages/app/public/workers/wav-decoder.js | 0 .../public/worklets/AudioDataWorkletStream.js | 0 packages/app/resources/icon-background.png | Bin packages/app/resources/icon-foreground.png | Bin packages/app/resources/icon-only.svg | 0 packages/app/resources/splash-dark.png | Bin packages/app/resources/splash.png | Bin .../app/src/classes/PerformanceLog/index.js | 0 .../src/components/AnimationPlayer/index.jsx | 0 .../src/components/AnimationPlayer/index.less | 0 .../components/Icons/customIcons/crown.jsx | 0 .../Icons/customIcons/verifiedBadge.jsx | 0 .../components/Icons/customIcons/vrchat.jsx | 0 .../Layout/draggableDrawer/index.jsx | 1 - .../src/components/Layout/quickNav/index.jsx | 0 .../src/components/Layout/toolsBar/index.jsx | 0 .../src/components/Layout/toolsBar/index.less | 0 .../src/components/Layout/topBar/index.jsx | 0 .../src/components/Layout/topBar/index.less | 0 .../app/src/components/LikeButton/index.jsx | 0 .../app/src/components/LikeButton/index.less | 0 .../app/src/components/LimitAlert/index.jsx | 0 .../src/components/MarkdownReader/index.jsx | 0 .../src/components/MarkdownReader/index.less | 0 .../Music/PlaylistCreator/index.jsx | 0 .../Music/PlaylistCreator/index.less | 0 .../components/Music/PlaylistItem/index.jsx | 0 .../components/Music/PlaylistItem/index.less | 0 .../Music/PlaylistTimelineEntry/index.jsx | 0 .../Music/PlaylistTimelineEntry/index.less | 0 .../components/Music/PlaylistView/index.jsx | 0 .../app/src/components/Music/Track/index.jsx | 0 .../app/src/components/Music/Track/index.less | 0 .../src/components/ObjectInspector/index.jsx | 91 ---- .../PagePanels/components/NavMenu/index.jsx | 0 .../PagePanels/components/NavMenu/index.less | 0 .../components/Player/AudioVolume/index.jsx | 0 .../components/Player/AudioVolume/index.less | 0 .../Player/BackgroundMediaPlayer/index.jsx | 0 .../Player/BackgroundMediaPlayer/index.less | 0 .../Player/ChangeModeButton/index.jsx | 0 .../src/components/Player/Controls/index.jsx | 0 .../src/components/Player/Controls/index.less | 0 .../components/Player/ExtraActions/index.jsx | 0 .../src/components/Player/SeekBar/index.jsx | 0 .../src/components/Player/SeekBar/index.less | 0 .../components/Player/ToolBarPlayer/index.jsx | 0 .../Player/ToolBarPlayer/index.less | 0 .../app/src/components/PostCard/index.less | 0 .../app/src/components/SortableList/index.jsx | 0 .../src/components/SortableList/index.less | 0 .../app/src/components/SyncRoomCard/index.jsx | 0 .../src/components/SyncRoomCard/index.less | 0 .../src/components/TapShare/Dialog/index.jsx | 0 .../src/components/TapShare/Dialog/index.less | 0 .../app/src/components/UserBadges/index.less | 0 .../app/src/components/UserSelector/index.jsx | 0 .../src/components/UserSelector/index.less | 0 .../components/WidgetItemPreview/index.jsx | 0 .../components/WidgetItemPreview/index.less | 0 .../src/components/WidgetsBrowser/index.jsx | 0 .../src/components/WidgetsBrowser/index.less | 0 .../src/components/WidgetsWrapper/index.jsx | 0 .../src/components/WidgetsWrapper/index.less | 0 packages/app/src/components/index.js | 1 - .../src/contexts/WithPlayerContext/index.jsx | 0 .../src/contexts/WithPlaylistContext/index.js | 0 packages/app/src/cores/api/api.core.js | 0 .../app/src/cores/haptics/haptics.core.js | 0 packages/app/src/cores/nfc/nfc.core.js | 0 packages/app/src/cores/player/mediaSession.js | 0 .../app/src/cores/player/player.storage.js | 0 packages/app/src/cores/player/presets.js | 0 .../cores/player/processors/bpmNode/index.js | 0 .../player/processors/compressorNode/index.js | 0 .../cores/player/processors/eqNode/index.js | 0 .../cores/player/processors/gainNode/index.js | 0 .../app/src/cores/player/processors/index.js | 0 .../app/src/cores/player/processors/node.js | 0 .../player/processors/spatialNode/index.js | 0 packages/app/src/cores/player/services.js | 0 packages/app/src/cores/rooms/rooms.core.js | 0 packages/app/src/cores/sync/sync.core.js | 0 .../src/cores/tasksQueue/tasksQueue.core.js | 0 .../app/src/cores/widgets/widgets.core.js | 0 packages/app/src/debug/components/index.js | 1 - .../components => debuggers}/api/index.jsx | 0 packages/app/src/debuggers/email/index.jsx | 9 + .../components => debuggers}/theme/index.jsx | 0 .../components => debuggers}/theme/index.less | 0 .../timeCalculation/index.jsx | 0 .../timeCalculation/index.less | 0 packages/app/src/hooks/useDebounce/index.js | 0 .../src/hooks/useDefaultVisibility/index.js | 0 .../app/src/hooks/useLayoutInterface/index.js | 0 .../useRandomFeaturedWallpaperUrl/index.js | 0 packages/app/src/hooks/useTopBar/index.jsx | 0 .../src/hooks/useUrlQueryActiveKey/index.js | 0 packages/app/src/hooks/useWsEvents/index.js | 0 packages/app/src/layouts/blank/index.jsx | 0 .../components/floatingStack/index.jsx | 0 .../components/floatingStack/index.less | 0 .../src/layouts/components/modals/index.jsx | 0 .../src/layouts/components/modals/index.less | 0 .../src/pages/@mobile-views/creator/index.jsx | 0 .../pages/@mobile-views/creator/index.less | 0 .../src/pages/@mobile-views/player/index.jsx | 0 .../src/pages/@mobile-views/player/index.less | 0 .../app/src/pages/account/index.mobile.jsx | 0 .../app/src/pages/account/index.mobile.less | 0 .../src/pages/account/tabs/details/index.less | 0 .../pages/account/tabs/followers/index.less | 0 .../src/pages/account/tabs/music/index.jsx | 0 .../src/pages/account/tabs/music/index.less | 0 .../src/pages/auth/forms/register/index.jsx | 0 .../src/pages/auth/forms/register/index.less | 0 .../auth/forms/register/steps/email/index.jsx | 0 .../forms/register/steps/password/index.jsx | 0 .../forms/register/steps/password/index.less | 0 .../auth/forms/register/steps/tos/index.jsx | 0 .../forms/register/steps/username/index.jsx | 0 .../src/pages/auth/forms/selector/index.jsx | 0 packages/app/src/pages/auth/index.mobile.less | 0 packages/app/src/{ => pages}/debug/index.jsx | 6 +- packages/app/src/{ => pages}/debug/index.less | 0 packages/app/src/pages/games/pony/index.jsx | 65 +++ packages/app/src/pages/games/pony/index.less | 23 + packages/app/src/pages/index.mobile.jsx | 0 packages/app/src/pages/insiders/index.jsx | 0 packages/app/src/pages/lyrics/index.jsx | 0 packages/app/src/pages/lyrics/index.less | 0 .../music/components/dashboard/index.jsx | 0 .../components/dashboard/releases/index.jsx | 0 .../music/components/favorites/index.jsx | 0 .../pages/music/components/library/index.jsx | 0 .../pages/music/components/library/index.less | 0 .../components/BasicInformation/index.jsx | 0 .../components/TracksUploads/index.jsx | 0 .../components/TracksUploads/index.less | 0 packages/app/src/pages/nfc/[tag_id].jsx | 0 packages/app/src/pages/privacy/index.jsx | 0 .../components/SettingItemComponent/index.jsx | 0 .../settings/components/SettingTab/index.jsx | 0 packages/app/src/pages/settings/index.jsx | 0 .../app/src/pages/settings/index.mobile.jsx | 0 .../app/src/pages/settings/index.mobile.less | 0 .../components/CategoriesSelector/index.jsx | 0 .../components/CategoryViewResolver/index.jsx | 0 .../components/ProfileEditor/index.jsx | 0 .../components/ProfileEditor/index.less | 0 .../components/ProfileSelector/index.jsx | 0 .../components/StreamingKeyViewer/index.jsx | 0 .../components/StreamingKeyViewer/index.less | 0 packages/app/src/splash.jsx | 0 packages/app/src/theme/splash.less | 0 packages/app/src/utils/hexToRGB/index.js | 0 packages/app/src/utils/rgbToValues/index.js | 0 .../src/utils/rootVarHexToRGBValues/index.js | 0 .../app/src/utils/seekToTimeLabel/index.js | 0 packages/app/src/utils/storagedState/index.js | 0 packages/chat_server/.env-example | 15 - packages/chat_server/.gitignore | 1 - packages/chat_server/.infisical.json | 7 - packages/chat_server/Dockerfile | 26 - packages/chat_server/package.json | 46 -- packages/chat_server/src/index.js | 3 - packages/comty.js/package.json | 0 packages/comty.js/src/handlers/measurePing.js | 0 packages/comty.js/src/handlers/request.js | 0 .../src/helpers/handleAfterRequest.js | 0 .../src/helpers/handleBeforeRequest.js | 0 .../src/helpers/handleRegenerationEvent.js | 0 packages/comty.js/src/helpers/withSettings.js | 0 packages/comty.js/src/helpers/withStorage.js | 0 .../comty.js/src/hooks/useRequest/index.js | 0 packages/comty.js/src/index.js | 0 packages/comty.js/src/models/index.js | 0 packages/comty.js/src/models/music/index.js | 0 packages/comty.js/src/models/nfc/index.js | 0 packages/comty.js/src/models/search/index.js | 0 .../src/models/sync/services/tidal.js | 0 packages/comty.js/src/models/widget/index.js | 0 packages/comty.js/src/remotes.js | 0 packages/file_server/.env-example | 20 - packages/file_server/.gitignore | 1 - packages/file_server/.infisical.json | 7 - packages/file_server/Dockerfile | 26 - .../fixments/00_fix_audio_metadata.js | 148 ------ packages/file_server/package.json | 60 --- packages/file_server/src/index.js | 4 - packages/marketplace_server/.env-example | 20 - packages/marketplace_server/.gitignore | 2 - packages/marketplace_server/.infisical.json | 7 - packages/marketplace_server/Dockerfile | 27 - packages/marketplace_server/package.json | 62 --- packages/marketplace_server/src/index.js | 4 - packages/music_server/.env-example | 20 - packages/music_server/.gitignore | 1 - packages/music_server/.infisical.json | 7 - packages/music_server/Dockerfile | 26 - .../fixments/00_sanitize_tracks_metadata.js | 40 -- packages/music_server/package.json | 48 -- packages/music_server/src/index.js | 4 - packages/server/README.md | 1 - packages/{wrapper/src => server}/ascii.js | 0 packages/server/boot | 157 ++++++ packages/server/classes/CacheService/index.js | 72 +++ packages/server/classes/ComtyClient/index.js | 9 + packages/server/classes/DbManager/index.js | 53 ++ .../server/classes/DbModels/NFCTags/index.js | 37 ++ .../DbModels/authorizedServerTokens/index.js | 28 + .../server/classes/DbModels/badge/index.js | 11 + .../server/classes/DbModels/comment/index.js | 10 + .../server/classes/DbModels/config/index.js | 15 + .../classes/DbModels/featuredEvent/index.js | 13 + .../DbModels/featuredPlaylist/index.js | 12 + .../DbModels/featuredWallpaper/index.js | 10 + packages/server/classes/DbModels/index.js | 23 + .../server/classes/DbModels/playlist/index.js | 41 ++ .../server/classes/DbModels/post/index.js | 13 + .../server/classes/DbModels/postLike/index.js | 14 + .../DbModels/regenerationToken/index.js | 14 + .../server/classes/DbModels/release/index.js | 38 ++ .../server/classes/DbModels/role/index.js | 15 + .../classes/DbModels/savedPost/index.js | 18 + .../classes/DbModels/serverLimit/index.js | 24 + .../server/classes/DbModels/session/index.js | 14 + .../DbModels/streamingCategory/index.js | 14 + .../DbModels/streamingProfile/index.js | 37 ++ .../classes/DbModels/syncEntry/index.js | 18 + .../server/classes/DbModels/track/index.js | 53 ++ .../classes/DbModels/track_like/index.js | 17 + .../server/classes/DbModels/user/index.js | 21 + .../classes/DbModels/userFollow/index.js | 8 + .../server/classes/DbModels/widget/index.js | 24 + packages/server/classes/Errors/index.js | 84 +++ packages/server/classes/FileUpload/index.js | 260 ++++++++++ packages/server/classes/RedisClient/index.js | 76 +++ .../server/classes/SecureSyncEntry/index.js | 134 +++++ .../server/classes/StorageClient/index.js | 97 ++++ packages/server/classes/TidalAPI/index.js | 480 ++++++++++++++++++ packages/server/index.js | 411 +++++++++++++++ packages/server/lib/api_wrapper/index.js | 120 +++++ .../lib/getInternalIp/index.js} | 0 packages/server/package.json | 93 ++-- .../services/chats}/chatServer.js | 0 .../services/chats/chats.service.js} | 6 +- .../services/chats}/middlewares/withWsAuth.js | 0 packages/server/services/chats/package.json | 25 + .../services/chats}/routes/index.js | 0 .../chats}/useMiddlewares/useCors/index.js | 0 .../chats}/useMiddlewares/useLogger/index.js | 0 packages/server/services/ems/package.json | 11 + .../services/ems/routes/dispatch/post.js | 29 ++ .../services/ems/routes/test/deep/xd/get.js | 5 + .../server/services/ems/routes/test/get.js | 5 + .../files}/controllers/stream/index.js | 0 .../files}/controllers/stream/routes/get/*.js | 0 .../files}/controllers/upload/index.js | 0 .../controllers/upload/routes/post/chunk.js | 0 .../services/files/file.service.js} | 10 +- .../files}/middlewares/withAuth/index.js | 0 .../middlewares/withOptionalAuth/index.js | 0 .../services/files}/middlewares/withWsAuth.js | 0 packages/server/services/files/package.json | 35 ++ .../services/post-process/audio/index.js | 0 .../services/post-process/image/index.js | 0 .../files}/services/post-process/index.js | 0 .../services/post-process/video/index.js | 0 .../files}/services/videoTranscode/index.js | 0 .../files}/useMiddlewares/useCors/index.js | 0 .../files}/useMiddlewares/useLogger/index.js | 0 .../utils/createRoutesFromDirectory/index.js | 0 .../files}/utils/getMiddlewares/index.js | 0 .../replaceImportsWithRemoteURL/index.js | 0 .../services/files}/utils/resolveUrl/index.js | 0 .../files}/utils/syncDirToRemote/index.js | 0 .../endpoints/accounts_statistics.js | 0 .../endpoints/delete_featured_wallpaper.js | 0 .../endpoints/featured_wallpaper.js | 0 .../endpoints/resetPassword.js | 0 .../endpoints/update_user_data.js | 0 .../controllers/AdminController/index.js | 0 .../endpoints/dataValidation.js | 0 .../AuthController/endpoints/otpSend.js | 7 + .../AuthController/endpoints/userLogin.js | 0 .../AuthController/endpoints/userLogout.js | 0 .../AuthController/endpoints/userRegister.js | 2 + .../main}/controllers/AuthController/index.js | 0 .../AuthController/methods/createUser.js | 8 - .../main}/controllers/AutoUpdate/index.js | 0 .../BadgesController/endpoints/deleteBadge.js | 0 .../BadgesController/endpoints/getBadges.js | 0 .../endpoints/getUserBadges.js | 0 .../BadgesController/endpoints/giveToUser.js | 0 .../BadgesController/endpoints/putBadge.js | 0 .../endpoints/removeToUser.js | 0 .../controllers/BadgesController/index.js | 0 .../endpoints/createPostComment.js | 0 .../endpoints/deletePostComment.js | 0 .../endpoints/getPostComments.js | 0 .../controllers/CommentsController/index.js | 0 .../services/deleteComment.js | 0 .../services/getComments.js | 0 .../CommentsController/services/newComment.js | 0 .../FeaturedEventsController/index.js | 0 .../services/createFeaturedEvent.js | 0 .../main}/controllers/FeedController/index.js | 0 .../services/getGlobalReleases.js | 0 .../services/getPlaylistsFromFollowing.js | 0 .../FeedController/services/getPosts.js | 0 .../services/getReleasesFromFollowing.js | 0 .../endpoints/getFollowStatus.js | 0 .../endpoints/getUserFollowers.js | 0 .../endpoints/toggleFollow.js | 0 .../controllers/FollowController/index.js | 0 .../FollowController/services/followUser.js | 0 .../FollowController/services/unfollowUser.js | 0 .../endpoints/modifyPostLikes.js | 0 .../controllers/ModerationController/index.js | 0 .../NFCController/endpoints/getExecution.js | 0 .../NFCController/endpoints/getTagById.js | 0 .../NFCController/endpoints/getTagBySerial.js | 0 .../NFCController/endpoints/getTags.js | 0 .../NFCController/endpoints/registerTag.js | 0 .../main}/controllers/NFCController/index.js | 0 .../PostsController/endpoints/createPost.js | 5 +- .../PostsController/endpoints/deletePost.js | 0 .../PostsController/endpoints/explorePosts.js | 0 .../PostsController/endpoints/getPostData.js | 0 .../endpoints/getPostFromUser.js | 0 .../endpoints/getPostReplies.js | 29 ++ .../PostsController/endpoints/savedPosts.js | 0 .../PostsController/endpoints/toogleLike.js | 0 .../PostsController/endpoints/toogleSave.js | 0 .../controllers/PostsController/index.js | 0 .../PostsController/services/createPost.js | 5 +- .../PostsController/services/deletePost.js | 0 .../services/flagNsfwByAttachments.js | 0 .../PostsController/services/getPostData.js | 0 .../PostsController/services/index.js | 0 .../services/modifyPostData.js | 0 .../PostsController/services/toggleLike.js | 0 .../services/togglePostSave.js | 0 .../endpoints/featuredWallpapers.js | 0 .../endpoints/getReleasesNotes.js | 0 .../endpoints/globalServerLimits.js | 0 .../PublicController/endpoints/ping.js | 0 .../endpoints/postingPolicy.js | 0 .../endpoints/serverHealth.js | 0 .../PublicController/incidentPrediction.js | 27 + .../controllers/PublicController/index.js | 4 +- .../controllers/RolesController/index.js | 0 .../endpoints/getQuickSearch.js | 0 .../SearchController/endpoints/getSearch.js | 0 .../controllers/SearchController/index.js | 0 .../endpoints/deleteAllSelfSessions.js | 0 .../endpoints/deleteCurrentSession.js | 0 .../endpoints/getCurrentSession.js | 0 .../endpoints/getSessions.js | 0 .../endpoints/regenerateSessionToken.js | 0 .../endpoints/validateSession.js | 0 .../controllers/SessionController/index.js | 0 .../endpoints/getConnectedFollowedUsers.js | 0 .../controllers/StatusController/index.js | 0 .../services/getConnectedUsersFollowing.js | 0 .../endpoints/deleteStreamingProfile.js | 0 .../endpoints/getProfileFromStreamKey.js | 0 .../endpoints/getProfilesVisibility.js | 0 .../endpoints/getStreamingCategories.js | 0 .../endpoints/getStreamingProfiles.js | 0 .../endpoints/getStreams.js | 0 .../endpoints/handleStreamPublish.js | 0 .../endpoints/handleStreamUnpublish.js | 0 .../endpoints/postStreamingProfile.js | 0 .../endpoints/regenerateStreamingKey.js | 0 .../controllers/StreamingController/index.js | 0 .../endpoints/checkEmailAvailable.js | 0 .../endpoints/checkUsernameAvailable.js | 0 .../endpoints/getConnectedFollowingUsers.js | 0 .../UserController/endpoints/getUserData.js | 0 .../UserController/endpoints/getUsersData.js | 0 .../endpoints/resolveUserIdFromUsername.js | 0 .../endpoints/selfDeletePublicName.js | 0 .../endpoints/selfUpdateData.js | 0 .../endpoints/selfUpdatePassword.js | 0 .../main}/controllers/UserController/index.js | 0 .../UserController/services/createUser.js | 0 .../services/getConnectedUsersFollowing.js | 0 .../UserController/services/updateUserData.js | 0 .../services/updateUserPassword.js | 0 .../main}/controllers/index.js | 0 .../{src => services/main}/events/index.js | 0 .../main}/events/user_connected.js | 0 .../main}/events/user_created.js | 0 .../main}/events/user_disconnected.js | 0 .../fixments/additions_to_attachments.js | 0 .../main}/fixments/migrate_posts_likes.js | 0 .../fixments/move_playlist_to_release.js | 0 .../main}/lib/checkUserAdmin/index.js | 0 .../main}/lib/chunkedUpload/index.js | 0 .../{src => services/main}/lib/index.js | 0 .../main}/lib/schematized/index.js | 0 .../main}/lib/secureEntry/index.js | 0 .../{src => services/main}/lib/token/index.js | 0 .../main}/lib/videoTranscode/index.js | 0 .../main/main.service.js} | 32 +- .../main}/middlewares/index.js | 0 .../main}/middlewares/onlyAdmin/index.js | 0 .../main}/middlewares/permissions/index.js | 0 .../main}/middlewares/roles/index.js | 0 .../middlewares/withAuthentication/index.js | 0 .../withOptionalAuthentication/index.js | 0 packages/server/services/main/package.json | 34 ++ .../services/fetchRemoteStreams/index.js | 0 .../main}/services/getMutuals/index.js | 0 .../services/newStreamingProfile/index.js | 0 .../setup/authorizeSelfServerToken/index.js | 0 .../main}/setup/dbAdmin/index.js | 0 .../{src => services/main}/setup/index.js | 0 .../main}/utils/aggregate-error/index.js | 0 .../main}/utils/clean-stack/index.js | 0 .../utils/compose-streaming-sources/index.js | 1 + .../utils/createTokenRegeneration/index.js | 0 .../main}/utils/download-file/index.js | 0 .../main}/utils/escape-string-regexp/index.js | 0 .../main}/utils/fullfillPostsData/index.js | 0 .../main}/utils/image-byte-array/index.js | 0 .../main}/utils/indecent-prediction/index.js | 0 .../main}/utils/indent-string/index.js | 0 .../main}/utils/is-nsfw/index.js | 0 .../main}/utils/pMap/index.js | 0 .../main}/utils/read-image/index.js | 0 .../marketplace}/controllers/static/index.js | 0 .../marketplace}/controllers/widgets/index.js | 0 .../widgets/routes/get/:widgetId.js | 0 .../widgets/routes/get/:widgetId/debug.jsx | 0 .../widgets/routes/get/:widgetId/manifest.js | 0 .../controllers/widgets/routes/get/index.js | 0 .../widgets/routes/get/user/:user_id.js | 0 .../widgets/routes/post/publish.js | 0 .../marketplace/marketplace.service.js} | 6 +- .../server/services/marketplace/package.json | 38 ++ .../useMiddlewares/useAuth/index.js | 0 .../useMiddlewares/useCors/index.js | 0 .../useMiddlewares/useLogger/index.js | 0 .../utils/compileWidgetCode/index.js | 0 .../utils/createRoutesFromDirectory/index.js | 0 .../marketplace}/utils/getWidgetCode/index.js | 0 .../replaceImportsWithRemoteURL/index.js | 0 .../marketplace}/utils/resolveUrl/index.js | 0 .../utils/syncDirToRemote/index.js | 0 .../services/music}/classes/Room/index.js | 0 .../music}/classes/RoomsController/index.js | 0 .../music}/controllers/featured/index.js | 0 .../featured/routes/get/playlists.js | 0 .../music}/controllers/lyrics/index.js | 0 .../lyrics/routes/get/:track_id.js | 0 .../music}/controllers/playlists/index.js | 0 .../playlists/routes/delete/:playlist_id.js | 0 .../playlists/routes/get/:playlist_id/data.js | 0 .../playlists/routes/get/search.js | 0 .../controllers/playlists/routes/get/self.js | 0 .../controllers/playlists/routes/post/new.js | 0 .../playlists/services/getTrackById.js | 0 .../music}/controllers/releases/index.js | 0 .../releases/routes/delete/:release_id.js | 0 .../releases/routes/get/:release_id/data.js | 0 .../controllers/releases/routes/get/self.js | 0 .../releases/routes/get/user/:user_id.js | 0 .../releases/routes/put/release.js | 0 .../music}/controllers/search/index.js | 0 .../music}/controllers/tracks/index.js | 0 .../tracks/routes/delete/:track_id/like.js | 0 .../tracks/routes/get/:track_id/data.js | 0 .../tracks/routes/get/:track_id/stream.js | 0 .../controllers/tracks/routes/get/liked.js | 0 .../controllers/tracks/routes/get/many.js | 0 .../tracks/routes/post/:track_id/like.js | 0 .../routes/post/:track_id/refresh-cache.js | 0 .../music}/middlewares/withAuth/index.js | 0 .../middlewares/withOptionalAuth/index.js | 0 .../services/music}/middlewares/withWsAuth.js | 0 .../services/music/music.service.js} | 8 +- packages/server/services/music/package.json | 30 ++ .../services/music}/services/findSpotifyId.js | 0 .../services/getEnhancedLyricsFromTrack.js | 0 .../services/music}/services/removeTracks.js | 0 .../music}/useMiddlewares/useCors/index.js | 0 .../music}/useMiddlewares/useLogger/index.js | 0 .../music}/utils/composePayloadData/index.js | 0 .../utils/createRoutesFromDirectory/index.js | 0 .../music}/utils/generateFnHandler/index.js | 0 .../music}/utils/getMiddlewares/index.js | 0 .../services/music}/utils/resolveUrl/index.js | 0 .../src => server/services/music}/ws.js | 0 .../services/posts/classes/posts/index.js | 7 + .../posts/classes/posts/methods/create.js | 44 ++ .../posts/classes/posts/methods/data.js | 75 +++ .../posts/classes/posts/methods/fullfill.js | 100 ++++ packages/server/services/posts/package.json | 9 + .../server/services/posts/posts.service.js | 24 + .../posts/routes/posts/[post_id]/get.js | 13 + .../services/posts/routes/posts/new/post.js | 6 + .../services/posts/routes/posts/test/get.js | 10 + .../services/sync/classes/VRCApi/index.js | 59 +++ .../services/sync}/controllers/main/index.js | 0 .../main/routes/get/active_services.js | 32 ++ .../main/routes/get/sse_event/:sse_uid.js | 0 .../sync}/controllers/services/index.js | 0 .../delete/tidal/track/:track_id/like.js | 0 .../services/routes/get/tidal/create_link.js | 0 .../services/routes/get/tidal/current.js | 0 .../routes/get/tidal/favorites/playlists.js | 0 .../routes/get/tidal/favorites/tracks.js | 0 .../services/routes/get/tidal/is_active.js | 0 .../routes/get/tidal/manifest/:track_id.js | 0 .../routes/get/tidal/playback/:track_id.js | 0 .../routes/get/tidal/playlist/:uuid/data.js | 0 .../routes/get/tidal/playlist/:uuid/items.js | 0 .../services/routes/get/tidal/search.js | 0 .../services/routes/get/vrc/session.js} | 7 +- .../services/routes/post/tidal/delete_link.js | 0 .../routes/post/tidal/track/:track_id/like.js | 0 .../services/routes/post/vrc/auth.js | 57 +++ .../services/routes/post/vrc/logout.js | 0 .../services/routes/post/vrc/otp.js | 45 ++ .../sync}/middlewares/withAuth/index.js | 0 .../middlewares/withOptionalAuth/index.js | 0 .../services/sync}/middlewares/withWsAuth.js | 0 packages/server/services/sync/package.json | 25 + .../services/sync/sync.service.js} | 6 +- .../sync}/useMiddlewares/useAuth/index.js | 0 .../sync}/useMiddlewares/useCors/index.js | 0 .../sync}/useMiddlewares/useLogger/index.js | 0 .../sync}/utils/composePayloadData/index.js | 0 .../utils/createRoutesFromDirectory/index.js | 0 .../sync}/utils/generateFnHandler/index.js | 0 .../sync}/utils/getMiddlewares/index.js | 0 .../services/sync}/utils/resolveUrl/index.js | 0 .../endpoints/incidentPrediction.js | 27 - .../server/src/shared-classes/CacheService | 1 - .../server/src/shared-classes/ComtyClient | 1 - packages/server/src/shared-classes/DBModels | 1 - packages/server/src/shared-classes/DbManager | 1 - packages/server/src/shared-classes/DbModels | 1 - packages/server/src/shared-classes/Errors | 1 - packages/server/src/shared-classes/FileUpload | 1 - .../server/src/shared-classes/RTEngineServer | 1 - .../server/src/shared-classes/RedisClient | 1 - .../server/src/shared-classes/StorageClient | 1 - packages/server/utils/requiredFields.js | 22 + packages/sync_server/.env-example | 20 - packages/sync_server/.gitignore | 2 - packages/sync_server/.infisical.json | 7 - packages/sync_server/Dockerfile | 27 - packages/sync_server/package.json | 51 -- packages/sync_server/src/index.js | 4 - scripts/docker-build.js | 0 scripts/post-deploy.js | 0 scripts/post-install.js | 26 +- scripts/publishWidget.js | 0 scripts/utils/bumpVersion.js | 0 scripts/utils/composeChangelog.js | 0 scripts/utils/getPackages.js | 0 shared/classes/CacheService/index.js | 0 shared/classes/ComtyClient/index.js | 0 shared/classes/DbModels/NFCTags/index.js | 0 .../DbModels/featuredPlaylist/index.js | 0 shared/classes/DbModels/release/index.js | 0 shared/classes/DbModels/serverLimit/index.js | 0 .../DbModels/streamingProfile/index.js | 0 shared/classes/DbModels/track_like/index.js | 0 shared/classes/DbModels/widget/index.js | 0 shared/classes/Errors/index.js | 0 shared/classes/FileUpload/index.js | 0 shared/classes/RedisClient/index.js | 0 shared/classes/SecureSyncEntry/index.js | 0 shared/classes/TidalAPI/index.js | 0 shared/lib/api_wrapper/index.js | 0 {packages/wrapper => wrapper}/Dockerfile | 0 {packages/wrapper => wrapper}/package.json | 0 wrapper/src/ascii.js | 1 + {packages/wrapper => wrapper}/src/globals.js | 0 {packages/wrapper => wrapper}/src/index.js | 0 wrapper/src/lib/getInternalIp.js | 12 + .../wrapper => wrapper}/src/lib/setupDist.js | 0 .../src/lib/useLogger/index.js | 0 778 files changed, 3531 insertions(+), 1080 deletions(-) delete mode 100755 .github/workflows/codeql-analysis.yml mode change 100644 => 100755 .gitmodules mode change 100644 => 100755 .ignorepackages mode change 100644 => 100755 CODE_OF_CONDUCT.md mode change 100644 => 100755 CODE_STYLE.md mode change 100644 => 100755 CONTRIBUTING.md create mode 100644 api-ports.md mode change 100644 => 100755 changelogs/v0-45-0.md mode change 100644 => 100755 changelogs/v0-45-1.md mode change 100644 => 100755 changelogs/v0-45-2.md mode change 100644 => 100755 changelogs/v0-46-0.md mode change 100644 => 100755 changelogs/v0-46-1.md mode change 100644 => 100755 changelogs/v0-47-0.md mode change 100644 => 100755 changelogs/v0-47-1.md mode change 100644 => 100755 changelogs/v0-47-2.md mode change 100644 => 100755 changelogs/v0-47-3.md mode change 100644 => 100755 changelogs/v0-47-4.md mode change 100644 => 100755 changelogs/v0-47-5.md mode change 100644 => 100755 changelogs/v0-48-0.md mode change 100644 => 100755 changelogs/v0-48-1.md mode change 100644 => 100755 changelogs/v0-48-2.md mode change 100644 => 100755 changelogs/v0-49-0.md mode change 100644 => 100755 changelogs/v0-49-1.md mode change 100644 => 100755 changelogs/v0-49-2.md mode change 100644 => 100755 changelogs/v0-49-3.md mode change 100644 => 100755 changelogs/v0-50-0.md mode change 100644 => 100755 changelogs/v0-50-1.md mode change 100644 => 100755 changelogs/v0-50-2.md mode change 100644 => 100755 changelogs/v0-50-3.md mode change 100644 => 100755 changelogs/v0-50-4.md mode change 100644 => 100755 changelogs/v0-51-0.md mode change 100644 => 100755 changelogs/v0-51-1.md mode change 100644 => 100755 changelogs/v0-52-0.md mode change 100644 => 100755 changelogs/v0-52-1.md mode change 100644 => 100755 changelogs/v0-52-2.md mode change 100644 => 100755 changelogs/v0-53-0.md mode change 100644 => 100755 changelogs/v0-53-1.md mode change 100644 => 100755 changelogs/v0-53-2.md mode change 100644 => 100755 changelogs/v0-54-0.md mode change 100644 => 100755 changelogs/v0-54-1.md mode change 100644 => 100755 changelogs/v0-54-2.md mode change 100644 => 100755 changelogs/v0-54-3.md mode change 100644 => 100755 changelogs/v0-54-4.md mode change 100644 => 100755 changelogs/v0-55-0.md mode change 100644 => 100755 changelogs/v0-56-0.md mode change 100644 => 100755 changelogs/v0-56-1.md mode change 100644 => 100755 changelogs/v0-56-2.md mode change 100644 => 100755 changelogs/v0-56-3.md mode change 100644 => 100755 changelogs/v0-57-0.md mode change 100644 => 100755 changelogs/v0-57-1.md mode change 100644 => 100755 changelogs/v0-57-2.md mode change 100644 => 100755 changelogs/v0-57-3.md mode change 100644 => 100755 changelogs/v0-57-4.md mode change 100644 => 100755 changelogs/v0-57-5.md mode change 100644 => 100755 changelogs/v0-57-6.md mode change 100644 => 100755 changelogs/v0-58-0.md mode change 100644 => 100755 changelogs/v0-58-1.md mode change 100644 => 100755 changelogs/v0-58-2.md mode change 100644 => 100755 changelogs/v0-59-0.md mode change 100644 => 100755 changelogs/v0-59-1.md mode change 100644 => 100755 changelogs/v0-60-1.md mode change 100644 => 100755 changelogs/v0-60-2.md mode change 100644 => 100755 changelogs/v0-60-3.md mode change 100644 => 100755 ecosystem.config.js mode change 100644 => 100755 packages/app/android/.gitignore mode change 100644 => 100755 packages/app/android/.idea/.gitignore mode change 100644 => 100755 packages/app/android/.idea/compiler.xml mode change 100644 => 100755 packages/app/android/.idea/jarRepositories.xml mode change 100644 => 100755 packages/app/android/.idea/misc.xml mode change 100644 => 100755 packages/app/android/app/.gitignore mode change 100644 => 100755 packages/app/android/app/build.gradle mode change 100644 => 100755 packages/app/android/app/capacitor.build.gradle mode change 100644 => 100755 packages/app/android/app/proguard-rules.pro mode change 100644 => 100755 packages/app/android/app/release/output-metadata.json mode change 100644 => 100755 packages/app/android/app/src/main/AndroidManifest.xml mode change 100644 => 100755 packages/app/android/app/src/main/java/com/ragestudio/comty/MainActivity.java mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-hdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-ldpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-mdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-night-hdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-night-ldpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-night-mdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-night-xhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-xhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-xxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-land-xxxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-night/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-hdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-ldpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-mdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-night-hdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-night-ldpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-night-mdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-night-xhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-xhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-xxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-port-xxxhdpi/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable/ic_launcher_background.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/drawable/splash.png mode change 100644 => 100755 packages/app/android/app/src/main/res/layout/activity_main.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png mode change 100644 => 100755 packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png mode change 100644 => 100755 packages/app/android/app/src/main/res/values/ic_launcher_background.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/values/strings.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/values/styles.xml mode change 100644 => 100755 packages/app/android/app/src/main/res/xml/file_paths.xml mode change 100644 => 100755 packages/app/android/build.gradle mode change 100644 => 100755 packages/app/android/capacitor.settings.gradle mode change 100644 => 100755 packages/app/android/gradle.properties mode change 100644 => 100755 packages/app/android/gradle/wrapper/gradle-wrapper.jar mode change 100644 => 100755 packages/app/android/gradle/wrapper/gradle-wrapper.properties mode change 100644 => 100755 packages/app/android/gradlew.bat mode change 100644 => 100755 packages/app/android/settings.gradle mode change 100644 => 100755 packages/app/android/variables.gradle mode change 100644 => 100755 packages/app/constants/settings/changelogs/index.jsx mode change 100644 => 100755 packages/app/constants/settings/changelogs/index.less mode change 100644 => 100755 packages/app/constants/settings/components/profileLinks/index.jsx mode change 100644 => 100755 packages/app/constants/settings/components/profileLinks/index.less mode change 100644 => 100755 packages/app/constants/settings/components/sessionItem/icons/chrome.jsx mode change 100644 => 100755 packages/app/constants/settings/components/sessionItem/icons/firefox.jsx mode change 100644 => 100755 packages/app/constants/settings/components/sessionItem/icons/mobile.jsx mode change 100644 => 100755 packages/app/constants/settings/components/sessionItem/index.jsx mode change 100644 => 100755 packages/app/constants/settings/components/sessionItem/index.less mode change 100644 => 100755 packages/app/constants/settings/components/sliderValues/index.jsx mode change 100644 => 100755 packages/app/constants/settings/components/sliderValues/index.less mode change 100644 => 100755 packages/app/constants/settings/components/slidersWithPresets/index.jsx mode change 100644 => 100755 packages/app/constants/settings/components/widgetsView/index.jsx mode change 100644 => 100755 packages/app/constants/settings/components/widgetsView/index.less mode change 100644 => 100755 packages/app/constants/settings/player/items/player.compressor/index.jsx mode change 100644 => 100755 packages/app/constants/settings/player/items/player.eq/index.jsx mode change 100644 => 100755 packages/app/constants/settings/privacy/index.jsx mode change 100644 => 100755 packages/app/constants/settings/tap_share/context.js mode change 100644 => 100755 packages/app/constants/settings/tap_share/errors.js mode change 100644 => 100755 packages/app/constants/settings/tap_share/index.jsx mode change 100644 => 100755 packages/app/constants/settings/tap_share/index.less mode change 100644 => 100755 packages/app/constants/settings/tap_share/steps/check_register/index.jsx mode change 100644 => 100755 packages/app/constants/settings/tap_share/steps/data_editor/index.jsx mode change 100644 => 100755 packages/app/constants/settings/tap_share/steps/success/index.jsx mode change 100644 => 100755 packages/app/constants/settings/tap_share/steps/tag_writter/index.jsx mode change 100644 => 100755 packages/app/constants/settings/widgets/index.jsx mode change 100644 => 100755 packages/app/constants/userLinksDecorators.js mode change 100644 => 100755 packages/app/electron-builder.json mode change 100644 => 100755 packages/app/public/assets/badges/early_streamer.svg mode change 100644 => 100755 packages/app/public/assets/badges/x1.svg mode change 100644 => 100755 packages/app/public/assets/icons/icon-128.webp mode change 100644 => 100755 packages/app/public/assets/icons/icon-192.webp mode change 100644 => 100755 packages/app/public/assets/icons/icon-256.webp mode change 100644 => 100755 packages/app/public/assets/icons/icon-48.webp mode change 100644 => 100755 packages/app/public/assets/icons/icon-512.webp mode change 100644 => 100755 packages/app/public/assets/icons/icon-72.webp mode change 100644 => 100755 packages/app/public/assets/icons/icon-96.webp mode change 100644 => 100755 packages/app/public/manifest.webmanifest mode change 100644 => 100755 packages/app/public/workers/audioStreamProcess.js mode change 100644 => 100755 packages/app/public/workers/wav-decoder.js mode change 100644 => 100755 packages/app/public/worklets/AudioDataWorkletStream.js mode change 100644 => 100755 packages/app/resources/icon-background.png mode change 100644 => 100755 packages/app/resources/icon-foreground.png mode change 100644 => 100755 packages/app/resources/icon-only.svg mode change 100644 => 100755 packages/app/resources/splash-dark.png mode change 100644 => 100755 packages/app/resources/splash.png mode change 100644 => 100755 packages/app/src/classes/PerformanceLog/index.js mode change 100644 => 100755 packages/app/src/components/AnimationPlayer/index.jsx mode change 100644 => 100755 packages/app/src/components/AnimationPlayer/index.less mode change 100644 => 100755 packages/app/src/components/Icons/customIcons/crown.jsx mode change 100644 => 100755 packages/app/src/components/Icons/customIcons/verifiedBadge.jsx mode change 100644 => 100755 packages/app/src/components/Icons/customIcons/vrchat.jsx mode change 100644 => 100755 packages/app/src/components/Layout/quickNav/index.jsx mode change 100644 => 100755 packages/app/src/components/Layout/toolsBar/index.jsx mode change 100644 => 100755 packages/app/src/components/Layout/toolsBar/index.less mode change 100644 => 100755 packages/app/src/components/Layout/topBar/index.jsx mode change 100644 => 100755 packages/app/src/components/Layout/topBar/index.less mode change 100644 => 100755 packages/app/src/components/LikeButton/index.jsx mode change 100644 => 100755 packages/app/src/components/LikeButton/index.less mode change 100644 => 100755 packages/app/src/components/LimitAlert/index.jsx mode change 100644 => 100755 packages/app/src/components/MarkdownReader/index.jsx mode change 100644 => 100755 packages/app/src/components/MarkdownReader/index.less mode change 100644 => 100755 packages/app/src/components/Music/PlaylistCreator/index.jsx mode change 100644 => 100755 packages/app/src/components/Music/PlaylistCreator/index.less mode change 100644 => 100755 packages/app/src/components/Music/PlaylistItem/index.jsx mode change 100644 => 100755 packages/app/src/components/Music/PlaylistItem/index.less mode change 100644 => 100755 packages/app/src/components/Music/PlaylistTimelineEntry/index.jsx mode change 100644 => 100755 packages/app/src/components/Music/PlaylistTimelineEntry/index.less mode change 100644 => 100755 packages/app/src/components/Music/PlaylistView/index.jsx mode change 100644 => 100755 packages/app/src/components/Music/Track/index.jsx mode change 100644 => 100755 packages/app/src/components/Music/Track/index.less delete mode 100755 packages/app/src/components/ObjectInspector/index.jsx mode change 100644 => 100755 packages/app/src/components/PagePanels/components/NavMenu/index.jsx mode change 100644 => 100755 packages/app/src/components/PagePanels/components/NavMenu/index.less mode change 100644 => 100755 packages/app/src/components/Player/AudioVolume/index.jsx mode change 100644 => 100755 packages/app/src/components/Player/AudioVolume/index.less mode change 100644 => 100755 packages/app/src/components/Player/BackgroundMediaPlayer/index.jsx mode change 100644 => 100755 packages/app/src/components/Player/BackgroundMediaPlayer/index.less mode change 100644 => 100755 packages/app/src/components/Player/ChangeModeButton/index.jsx mode change 100644 => 100755 packages/app/src/components/Player/Controls/index.jsx mode change 100644 => 100755 packages/app/src/components/Player/Controls/index.less mode change 100644 => 100755 packages/app/src/components/Player/ExtraActions/index.jsx mode change 100644 => 100755 packages/app/src/components/Player/SeekBar/index.jsx mode change 100644 => 100755 packages/app/src/components/Player/SeekBar/index.less mode change 100644 => 100755 packages/app/src/components/Player/ToolBarPlayer/index.jsx mode change 100644 => 100755 packages/app/src/components/Player/ToolBarPlayer/index.less mode change 100644 => 100755 packages/app/src/components/PostCard/index.less mode change 100644 => 100755 packages/app/src/components/SortableList/index.jsx mode change 100644 => 100755 packages/app/src/components/SortableList/index.less mode change 100644 => 100755 packages/app/src/components/SyncRoomCard/index.jsx mode change 100644 => 100755 packages/app/src/components/SyncRoomCard/index.less mode change 100644 => 100755 packages/app/src/components/TapShare/Dialog/index.jsx mode change 100644 => 100755 packages/app/src/components/TapShare/Dialog/index.less mode change 100644 => 100755 packages/app/src/components/UserBadges/index.less mode change 100644 => 100755 packages/app/src/components/UserSelector/index.jsx mode change 100644 => 100755 packages/app/src/components/UserSelector/index.less mode change 100644 => 100755 packages/app/src/components/WidgetItemPreview/index.jsx mode change 100644 => 100755 packages/app/src/components/WidgetItemPreview/index.less mode change 100644 => 100755 packages/app/src/components/WidgetsBrowser/index.jsx mode change 100644 => 100755 packages/app/src/components/WidgetsBrowser/index.less mode change 100644 => 100755 packages/app/src/components/WidgetsWrapper/index.jsx mode change 100644 => 100755 packages/app/src/components/WidgetsWrapper/index.less mode change 100644 => 100755 packages/app/src/contexts/WithPlayerContext/index.jsx mode change 100644 => 100755 packages/app/src/contexts/WithPlaylistContext/index.js mode change 100644 => 100755 packages/app/src/cores/api/api.core.js mode change 100644 => 100755 packages/app/src/cores/haptics/haptics.core.js mode change 100644 => 100755 packages/app/src/cores/nfc/nfc.core.js mode change 100644 => 100755 packages/app/src/cores/player/mediaSession.js mode change 100644 => 100755 packages/app/src/cores/player/player.storage.js mode change 100644 => 100755 packages/app/src/cores/player/presets.js mode change 100644 => 100755 packages/app/src/cores/player/processors/bpmNode/index.js mode change 100644 => 100755 packages/app/src/cores/player/processors/compressorNode/index.js mode change 100644 => 100755 packages/app/src/cores/player/processors/eqNode/index.js mode change 100644 => 100755 packages/app/src/cores/player/processors/gainNode/index.js mode change 100644 => 100755 packages/app/src/cores/player/processors/index.js mode change 100644 => 100755 packages/app/src/cores/player/processors/node.js mode change 100644 => 100755 packages/app/src/cores/player/processors/spatialNode/index.js mode change 100644 => 100755 packages/app/src/cores/player/services.js mode change 100644 => 100755 packages/app/src/cores/rooms/rooms.core.js mode change 100644 => 100755 packages/app/src/cores/sync/sync.core.js mode change 100644 => 100755 packages/app/src/cores/tasksQueue/tasksQueue.core.js mode change 100644 => 100755 packages/app/src/cores/widgets/widgets.core.js delete mode 100755 packages/app/src/debug/components/index.js rename packages/app/src/{debug/components => debuggers}/api/index.jsx (100%) create mode 100644 packages/app/src/debuggers/email/index.jsx rename packages/app/src/{debug/components => debuggers}/theme/index.jsx (100%) rename packages/app/src/{debug/components => debuggers}/theme/index.less (100%) rename packages/app/src/{debug/components => debuggers}/timeCalculation/index.jsx (100%) rename packages/app/src/{debug/components => debuggers}/timeCalculation/index.less (100%) mode change 100644 => 100755 packages/app/src/hooks/useDebounce/index.js mode change 100644 => 100755 packages/app/src/hooks/useDefaultVisibility/index.js mode change 100644 => 100755 packages/app/src/hooks/useLayoutInterface/index.js mode change 100644 => 100755 packages/app/src/hooks/useRandomFeaturedWallpaperUrl/index.js mode change 100644 => 100755 packages/app/src/hooks/useTopBar/index.jsx mode change 100644 => 100755 packages/app/src/hooks/useUrlQueryActiveKey/index.js mode change 100644 => 100755 packages/app/src/hooks/useWsEvents/index.js mode change 100644 => 100755 packages/app/src/layouts/blank/index.jsx mode change 100644 => 100755 packages/app/src/layouts/components/floatingStack/index.jsx mode change 100644 => 100755 packages/app/src/layouts/components/floatingStack/index.less mode change 100644 => 100755 packages/app/src/layouts/components/modals/index.jsx mode change 100644 => 100755 packages/app/src/layouts/components/modals/index.less mode change 100644 => 100755 packages/app/src/pages/@mobile-views/creator/index.jsx mode change 100644 => 100755 packages/app/src/pages/@mobile-views/creator/index.less mode change 100644 => 100755 packages/app/src/pages/@mobile-views/player/index.jsx mode change 100644 => 100755 packages/app/src/pages/@mobile-views/player/index.less mode change 100644 => 100755 packages/app/src/pages/account/index.mobile.jsx mode change 100644 => 100755 packages/app/src/pages/account/index.mobile.less mode change 100644 => 100755 packages/app/src/pages/account/tabs/details/index.less mode change 100644 => 100755 packages/app/src/pages/account/tabs/followers/index.less mode change 100644 => 100755 packages/app/src/pages/account/tabs/music/index.jsx mode change 100644 => 100755 packages/app/src/pages/account/tabs/music/index.less mode change 100644 => 100755 packages/app/src/pages/auth/forms/register/index.jsx mode change 100644 => 100755 packages/app/src/pages/auth/forms/register/index.less mode change 100644 => 100755 packages/app/src/pages/auth/forms/register/steps/email/index.jsx mode change 100644 => 100755 packages/app/src/pages/auth/forms/register/steps/password/index.jsx mode change 100644 => 100755 packages/app/src/pages/auth/forms/register/steps/password/index.less mode change 100644 => 100755 packages/app/src/pages/auth/forms/register/steps/tos/index.jsx mode change 100644 => 100755 packages/app/src/pages/auth/forms/register/steps/username/index.jsx mode change 100644 => 100755 packages/app/src/pages/auth/forms/selector/index.jsx mode change 100644 => 100755 packages/app/src/pages/auth/index.mobile.less rename packages/app/src/{ => pages}/debug/index.jsx (92%) rename packages/app/src/{ => pages}/debug/index.less (100%) create mode 100644 packages/app/src/pages/games/pony/index.jsx create mode 100644 packages/app/src/pages/games/pony/index.less mode change 100644 => 100755 packages/app/src/pages/index.mobile.jsx mode change 100644 => 100755 packages/app/src/pages/insiders/index.jsx mode change 100644 => 100755 packages/app/src/pages/lyrics/index.jsx mode change 100644 => 100755 packages/app/src/pages/lyrics/index.less mode change 100644 => 100755 packages/app/src/pages/music/components/dashboard/index.jsx mode change 100644 => 100755 packages/app/src/pages/music/components/dashboard/releases/index.jsx mode change 100644 => 100755 packages/app/src/pages/music/components/favorites/index.jsx mode change 100644 => 100755 packages/app/src/pages/music/components/library/index.jsx mode change 100644 => 100755 packages/app/src/pages/music/components/library/index.less mode change 100644 => 100755 packages/app/src/pages/music/creator/components/BasicInformation/index.jsx mode change 100644 => 100755 packages/app/src/pages/music/creator/components/TracksUploads/index.jsx mode change 100644 => 100755 packages/app/src/pages/music/creator/components/TracksUploads/index.less mode change 100644 => 100755 packages/app/src/pages/nfc/[tag_id].jsx mode change 100644 => 100755 packages/app/src/pages/privacy/index.jsx mode change 100644 => 100755 packages/app/src/pages/settings/components/SettingItemComponent/index.jsx mode change 100644 => 100755 packages/app/src/pages/settings/components/SettingTab/index.jsx mode change 100644 => 100755 packages/app/src/pages/settings/index.jsx mode change 100644 => 100755 packages/app/src/pages/settings/index.mobile.jsx mode change 100644 => 100755 packages/app/src/pages/settings/index.mobile.less mode change 100644 => 100755 packages/app/src/pages/tv/tabs/livestreamControlPanel/components/CategoriesSelector/index.jsx mode change 100644 => 100755 packages/app/src/pages/tv/tabs/livestreamControlPanel/components/CategoryViewResolver/index.jsx mode change 100644 => 100755 packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileEditor/index.jsx mode change 100644 => 100755 packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileEditor/index.less mode change 100644 => 100755 packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileSelector/index.jsx mode change 100644 => 100755 packages/app/src/pages/tv/tabs/livestreamControlPanel/components/StreamingKeyViewer/index.jsx mode change 100644 => 100755 packages/app/src/pages/tv/tabs/livestreamControlPanel/components/StreamingKeyViewer/index.less mode change 100644 => 100755 packages/app/src/splash.jsx mode change 100644 => 100755 packages/app/src/theme/splash.less mode change 100644 => 100755 packages/app/src/utils/hexToRGB/index.js mode change 100644 => 100755 packages/app/src/utils/rgbToValues/index.js mode change 100644 => 100755 packages/app/src/utils/rootVarHexToRGBValues/index.js mode change 100644 => 100755 packages/app/src/utils/seekToTimeLabel/index.js mode change 100644 => 100755 packages/app/src/utils/storagedState/index.js delete mode 100755 packages/chat_server/.env-example delete mode 100644 packages/chat_server/.gitignore delete mode 100644 packages/chat_server/.infisical.json delete mode 100755 packages/chat_server/Dockerfile delete mode 100755 packages/chat_server/package.json delete mode 100755 packages/chat_server/src/index.js mode change 100644 => 100755 packages/comty.js/package.json mode change 100644 => 100755 packages/comty.js/src/handlers/measurePing.js mode change 100644 => 100755 packages/comty.js/src/handlers/request.js mode change 100644 => 100755 packages/comty.js/src/helpers/handleAfterRequest.js mode change 100644 => 100755 packages/comty.js/src/helpers/handleBeforeRequest.js mode change 100644 => 100755 packages/comty.js/src/helpers/handleRegenerationEvent.js mode change 100644 => 100755 packages/comty.js/src/helpers/withSettings.js mode change 100644 => 100755 packages/comty.js/src/helpers/withStorage.js mode change 100644 => 100755 packages/comty.js/src/hooks/useRequest/index.js mode change 100644 => 100755 packages/comty.js/src/index.js mode change 100644 => 100755 packages/comty.js/src/models/index.js mode change 100644 => 100755 packages/comty.js/src/models/music/index.js mode change 100644 => 100755 packages/comty.js/src/models/nfc/index.js mode change 100644 => 100755 packages/comty.js/src/models/search/index.js mode change 100644 => 100755 packages/comty.js/src/models/sync/services/tidal.js mode change 100644 => 100755 packages/comty.js/src/models/widget/index.js mode change 100644 => 100755 packages/comty.js/src/remotes.js delete mode 100755 packages/file_server/.env-example delete mode 100644 packages/file_server/.gitignore delete mode 100644 packages/file_server/.infisical.json delete mode 100755 packages/file_server/Dockerfile delete mode 100644 packages/file_server/fixments/00_fix_audio_metadata.js delete mode 100644 packages/file_server/package.json delete mode 100644 packages/file_server/src/index.js delete mode 100755 packages/marketplace_server/.env-example delete mode 100644 packages/marketplace_server/.gitignore delete mode 100644 packages/marketplace_server/.infisical.json delete mode 100755 packages/marketplace_server/Dockerfile delete mode 100644 packages/marketplace_server/package.json delete mode 100644 packages/marketplace_server/src/index.js delete mode 100755 packages/music_server/.env-example delete mode 100644 packages/music_server/.gitignore delete mode 100644 packages/music_server/.infisical.json delete mode 100755 packages/music_server/Dockerfile delete mode 100644 packages/music_server/fixments/00_sanitize_tracks_metadata.js delete mode 100644 packages/music_server/package.json delete mode 100755 packages/music_server/src/index.js delete mode 100755 packages/server/README.md rename packages/{wrapper/src => server}/ascii.js (100%) mode change 100644 => 100755 create mode 100755 packages/server/boot create mode 100755 packages/server/classes/CacheService/index.js create mode 100755 packages/server/classes/ComtyClient/index.js create mode 100755 packages/server/classes/DbManager/index.js create mode 100755 packages/server/classes/DbModels/NFCTags/index.js create mode 100755 packages/server/classes/DbModels/authorizedServerTokens/index.js create mode 100755 packages/server/classes/DbModels/badge/index.js create mode 100755 packages/server/classes/DbModels/comment/index.js create mode 100755 packages/server/classes/DbModels/config/index.js create mode 100755 packages/server/classes/DbModels/featuredEvent/index.js create mode 100755 packages/server/classes/DbModels/featuredPlaylist/index.js create mode 100755 packages/server/classes/DbModels/featuredWallpaper/index.js create mode 100755 packages/server/classes/DbModels/index.js create mode 100755 packages/server/classes/DbModels/playlist/index.js create mode 100755 packages/server/classes/DbModels/post/index.js create mode 100755 packages/server/classes/DbModels/postLike/index.js create mode 100755 packages/server/classes/DbModels/regenerationToken/index.js create mode 100755 packages/server/classes/DbModels/release/index.js create mode 100755 packages/server/classes/DbModels/role/index.js create mode 100755 packages/server/classes/DbModels/savedPost/index.js create mode 100755 packages/server/classes/DbModels/serverLimit/index.js create mode 100755 packages/server/classes/DbModels/session/index.js create mode 100755 packages/server/classes/DbModels/streamingCategory/index.js create mode 100755 packages/server/classes/DbModels/streamingProfile/index.js create mode 100755 packages/server/classes/DbModels/syncEntry/index.js create mode 100755 packages/server/classes/DbModels/track/index.js create mode 100755 packages/server/classes/DbModels/track_like/index.js create mode 100755 packages/server/classes/DbModels/user/index.js create mode 100755 packages/server/classes/DbModels/userFollow/index.js create mode 100755 packages/server/classes/DbModels/widget/index.js create mode 100755 packages/server/classes/Errors/index.js create mode 100755 packages/server/classes/FileUpload/index.js create mode 100755 packages/server/classes/RedisClient/index.js create mode 100755 packages/server/classes/SecureSyncEntry/index.js create mode 100755 packages/server/classes/StorageClient/index.js create mode 100755 packages/server/classes/TidalAPI/index.js create mode 100755 packages/server/index.js create mode 100755 packages/server/lib/api_wrapper/index.js rename packages/{wrapper/src/lib/getInternalIp.js => server/lib/getInternalIp/index.js} (100%) mode change 100644 => 100755 rename packages/{chat_server/src => server/services/chats}/chatServer.js (100%) mode change 100644 => 100755 rename packages/{chat_server/src/api.js => server/services/chats/chats.service.js} (98%) rename packages/{chat_server/src => server/services/chats}/middlewares/withWsAuth.js (100%) mode change 100644 => 100755 create mode 100755 packages/server/services/chats/package.json rename packages/{chat_server/src => server/services/chats}/routes/index.js (100%) rename packages/{chat_server/src => server/services/chats}/useMiddlewares/useCors/index.js (100%) mode change 100644 => 100755 rename packages/{chat_server/src => server/services/chats}/useMiddlewares/useLogger/index.js (100%) mode change 100644 => 100755 create mode 100644 packages/server/services/ems/package.json create mode 100644 packages/server/services/ems/routes/dispatch/post.js create mode 100644 packages/server/services/ems/routes/test/deep/xd/get.js create mode 100644 packages/server/services/ems/routes/test/get.js rename packages/{file_server/src => server/services/files}/controllers/stream/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/controllers/stream/routes/get/*.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/controllers/upload/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/controllers/upload/routes/post/chunk.js (100%) mode change 100644 => 100755 rename packages/{file_server/src/api.js => server/services/files/file.service.js} (99%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/middlewares/withAuth/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/middlewares/withOptionalAuth/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/middlewares/withWsAuth.js (100%) mode change 100644 => 100755 create mode 100755 packages/server/services/files/package.json rename packages/{file_server/src => server/services/files}/services/post-process/audio/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/services/post-process/image/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/services/post-process/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/services/post-process/video/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/services/videoTranscode/index.js (100%) rename packages/{file_server/src => server/services/files}/useMiddlewares/useCors/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/useMiddlewares/useLogger/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/utils/createRoutesFromDirectory/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/utils/getMiddlewares/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/utils/replaceImportsWithRemoteURL/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/utils/resolveUrl/index.js (100%) mode change 100644 => 100755 rename packages/{file_server/src => server/services/files}/utils/syncDirToRemote/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/AdminController/endpoints/accounts_statistics.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/AdminController/endpoints/delete_featured_wallpaper.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/AdminController/endpoints/featured_wallpaper.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/AdminController/endpoints/resetPassword.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/AdminController/endpoints/update_user_data.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/AdminController/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/AuthController/endpoints/dataValidation.js (100%) mode change 100644 => 100755 create mode 100644 packages/server/services/main/controllers/AuthController/endpoints/otpSend.js rename packages/server/{src => services/main}/controllers/AuthController/endpoints/userLogin.js (100%) rename packages/server/{src => services/main}/controllers/AuthController/endpoints/userLogout.js (100%) rename packages/server/{src => services/main}/controllers/AuthController/endpoints/userRegister.js (95%) rename packages/server/{src => services/main}/controllers/AuthController/index.js (100%) rename packages/server/{src => services/main}/controllers/AuthController/methods/createUser.js (88%) rename packages/server/{src => services/main}/controllers/AutoUpdate/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/BadgesController/endpoints/deleteBadge.js (100%) rename packages/server/{src => services/main}/controllers/BadgesController/endpoints/getBadges.js (100%) rename packages/server/{src => services/main}/controllers/BadgesController/endpoints/getUserBadges.js (100%) rename packages/server/{src => services/main}/controllers/BadgesController/endpoints/giveToUser.js (100%) rename packages/server/{src => services/main}/controllers/BadgesController/endpoints/putBadge.js (100%) rename packages/server/{src => services/main}/controllers/BadgesController/endpoints/removeToUser.js (100%) rename packages/server/{src => services/main}/controllers/BadgesController/index.js (100%) rename packages/server/{src => services/main}/controllers/CommentsController/endpoints/createPostComment.js (100%) rename packages/server/{src => services/main}/controllers/CommentsController/endpoints/deletePostComment.js (100%) rename packages/server/{src => services/main}/controllers/CommentsController/endpoints/getPostComments.js (100%) rename packages/server/{src => services/main}/controllers/CommentsController/index.js (100%) rename packages/server/{src => services/main}/controllers/CommentsController/services/deleteComment.js (100%) rename packages/server/{src => services/main}/controllers/CommentsController/services/getComments.js (100%) rename packages/server/{src => services/main}/controllers/CommentsController/services/newComment.js (100%) rename packages/server/{src => services/main}/controllers/FeaturedEventsController/index.js (100%) rename packages/server/{src => services/main}/controllers/FeaturedEventsController/services/createFeaturedEvent.js (100%) rename packages/server/{src => services/main}/controllers/FeedController/index.js (100%) rename packages/server/{src => services/main}/controllers/FeedController/services/getGlobalReleases.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/FeedController/services/getPlaylistsFromFollowing.js (100%) rename packages/server/{src => services/main}/controllers/FeedController/services/getPosts.js (100%) rename packages/server/{src => services/main}/controllers/FeedController/services/getReleasesFromFollowing.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/FollowController/endpoints/getFollowStatus.js (100%) rename packages/server/{src => services/main}/controllers/FollowController/endpoints/getUserFollowers.js (100%) rename packages/server/{src => services/main}/controllers/FollowController/endpoints/toggleFollow.js (100%) rename packages/server/{src => services/main}/controllers/FollowController/index.js (100%) rename packages/server/{src => services/main}/controllers/FollowController/services/followUser.js (100%) rename packages/server/{src => services/main}/controllers/FollowController/services/unfollowUser.js (100%) rename packages/server/{src => services/main}/controllers/ModerationController/endpoints/modifyPostLikes.js (100%) rename packages/server/{src => services/main}/controllers/ModerationController/index.js (100%) rename packages/server/{src => services/main}/controllers/NFCController/endpoints/getExecution.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/NFCController/endpoints/getTagById.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/NFCController/endpoints/getTagBySerial.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/NFCController/endpoints/getTags.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/NFCController/endpoints/registerTag.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/NFCController/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/PostsController/endpoints/createPost.js (78%) rename packages/server/{src => services/main}/controllers/PostsController/endpoints/deletePost.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/endpoints/explorePosts.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/endpoints/getPostData.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/endpoints/getPostFromUser.js (100%) create mode 100755 packages/server/services/main/controllers/PostsController/endpoints/getPostReplies.js rename packages/server/{src => services/main}/controllers/PostsController/endpoints/savedPosts.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/endpoints/toogleLike.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/endpoints/toogleSave.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/index.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/services/createPost.js (92%) rename packages/server/{src => services/main}/controllers/PostsController/services/deletePost.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/services/flagNsfwByAttachments.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/services/getPostData.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/services/index.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/services/modifyPostData.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/services/toggleLike.js (100%) rename packages/server/{src => services/main}/controllers/PostsController/services/togglePostSave.js (100%) rename packages/server/{src => services/main}/controllers/PublicController/endpoints/featuredWallpapers.js (100%) rename packages/server/{src => services/main}/controllers/PublicController/endpoints/getReleasesNotes.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/PublicController/endpoints/globalServerLimits.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/PublicController/endpoints/ping.js (100%) rename packages/server/{src => services/main}/controllers/PublicController/endpoints/postingPolicy.js (100%) rename packages/server/{src => services/main}/controllers/PublicController/endpoints/serverHealth.js (100%) create mode 100755 packages/server/services/main/controllers/PublicController/incidentPrediction.js rename packages/server/{src => services/main}/controllers/PublicController/index.js (54%) rename packages/server/{src => services/main}/controllers/RolesController/index.js (100%) rename packages/server/{src => services/main}/controllers/SearchController/endpoints/getQuickSearch.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/SearchController/endpoints/getSearch.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/SearchController/index.js (100%) rename packages/server/{src => services/main}/controllers/SessionController/endpoints/deleteAllSelfSessions.js (100%) rename packages/server/{src => services/main}/controllers/SessionController/endpoints/deleteCurrentSession.js (100%) rename packages/server/{src => services/main}/controllers/SessionController/endpoints/getCurrentSession.js (100%) rename packages/server/{src => services/main}/controllers/SessionController/endpoints/getSessions.js (100%) rename packages/server/{src => services/main}/controllers/SessionController/endpoints/regenerateSessionToken.js (100%) rename packages/server/{src => services/main}/controllers/SessionController/endpoints/validateSession.js (100%) rename packages/server/{src => services/main}/controllers/SessionController/index.js (100%) rename packages/server/{src => services/main}/controllers/StatusController/endpoints/getConnectedFollowedUsers.js (100%) rename packages/server/{src => services/main}/controllers/StatusController/index.js (100%) rename packages/server/{src => services/main}/controllers/StatusController/services/getConnectedUsersFollowing.js (100%) rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/deleteStreamingProfile.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/getProfileFromStreamKey.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/getProfilesVisibility.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/getStreamingCategories.js (100%) rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/getStreamingProfiles.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/getStreams.js (100%) rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/handleStreamPublish.js (100%) rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/handleStreamUnpublish.js (100%) rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/postStreamingProfile.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/StreamingController/endpoints/regenerateStreamingKey.js (100%) rename packages/server/{src => services/main}/controllers/StreamingController/index.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/checkEmailAvailable.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/controllers/UserController/endpoints/checkUsernameAvailable.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/getConnectedFollowingUsers.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/getUserData.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/getUsersData.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/resolveUserIdFromUsername.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/selfDeletePublicName.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/selfUpdateData.js (100%) rename packages/server/{src => services/main}/controllers/UserController/endpoints/selfUpdatePassword.js (100%) rename packages/server/{src => services/main}/controllers/UserController/index.js (100%) rename packages/server/{src => services/main}/controllers/UserController/services/createUser.js (100%) rename packages/server/{src => services/main}/controllers/UserController/services/getConnectedUsersFollowing.js (100%) rename packages/server/{src => services/main}/controllers/UserController/services/updateUserData.js (100%) rename packages/server/{src => services/main}/controllers/UserController/services/updateUserPassword.js (100%) rename packages/server/{src => services/main}/controllers/index.js (100%) rename packages/server/{src => services/main}/events/index.js (100%) rename packages/server/{src => services/main}/events/user_connected.js (100%) rename packages/server/{src => services/main}/events/user_created.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/events/user_disconnected.js (100%) rename packages/server/{src => services/main}/fixments/additions_to_attachments.js (100%) rename packages/server/{src => services/main}/fixments/migrate_posts_likes.js (100%) rename packages/server/{src => services/main}/fixments/move_playlist_to_release.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/lib/checkUserAdmin/index.js (100%) rename packages/server/{src => services/main}/lib/chunkedUpload/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/lib/index.js (100%) rename packages/server/{src => services/main}/lib/schematized/index.js (100%) rename packages/server/{src => services/main}/lib/secureEntry/index.js (100%) rename packages/server/{src => services/main}/lib/token/index.js (100%) rename packages/server/{src => services/main}/lib/videoTranscode/index.js (100%) rename packages/server/{src/index.js => services/main/main.service.js} (86%) rename packages/server/{src => services/main}/middlewares/index.js (100%) rename packages/server/{src => services/main}/middlewares/onlyAdmin/index.js (100%) rename packages/server/{src => services/main}/middlewares/permissions/index.js (100%) rename packages/server/{src => services/main}/middlewares/roles/index.js (100%) rename packages/server/{src => services/main}/middlewares/withAuthentication/index.js (100%) rename packages/server/{src => services/main}/middlewares/withOptionalAuthentication/index.js (100%) create mode 100755 packages/server/services/main/package.json rename packages/server/{src => services/main}/services/fetchRemoteStreams/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/services/getMutuals/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/services/newStreamingProfile/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/setup/authorizeSelfServerToken/index.js (100%) rename packages/server/{src => services/main}/setup/dbAdmin/index.js (100%) rename packages/server/{src => services/main}/setup/index.js (100%) rename packages/server/{src => services/main}/utils/aggregate-error/index.js (100%) rename packages/server/{src => services/main}/utils/clean-stack/index.js (100%) rename packages/server/{src => services/main}/utils/compose-streaming-sources/index.js (88%) mode change 100644 => 100755 rename packages/server/{src => services/main}/utils/createTokenRegeneration/index.js (100%) mode change 100644 => 100755 rename packages/server/{src => services/main}/utils/download-file/index.js (100%) rename packages/server/{src => services/main}/utils/escape-string-regexp/index.js (100%) rename packages/server/{src => services/main}/utils/fullfillPostsData/index.js (100%) rename packages/server/{src => services/main}/utils/image-byte-array/index.js (100%) rename packages/server/{src => services/main}/utils/indecent-prediction/index.js (100%) rename packages/server/{src => services/main}/utils/indent-string/index.js (100%) rename packages/server/{src => services/main}/utils/is-nsfw/index.js (100%) rename packages/server/{src => services/main}/utils/pMap/index.js (100%) rename packages/server/{src => services/main}/utils/read-image/index.js (100%) rename packages/{marketplace_server/src => server/services/marketplace}/controllers/static/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/controllers/widgets/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/controllers/widgets/routes/get/:widgetId.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/controllers/widgets/routes/get/:widgetId/debug.jsx (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/controllers/widgets/routes/get/:widgetId/manifest.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/controllers/widgets/routes/get/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/controllers/widgets/routes/get/user/:user_id.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/controllers/widgets/routes/post/publish.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src/api.js => server/services/marketplace/marketplace.service.js} (98%) mode change 100644 => 100755 create mode 100755 packages/server/services/marketplace/package.json rename packages/{marketplace_server/src => server/services/marketplace}/useMiddlewares/useAuth/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/useMiddlewares/useCors/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/useMiddlewares/useLogger/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/utils/compileWidgetCode/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/utils/createRoutesFromDirectory/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/utils/getWidgetCode/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/utils/replaceImportsWithRemoteURL/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/utils/resolveUrl/index.js (100%) mode change 100644 => 100755 rename packages/{marketplace_server/src => server/services/marketplace}/utils/syncDirToRemote/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/classes/Room/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/classes/RoomsController/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/featured/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/featured/routes/get/playlists.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/lyrics/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/lyrics/routes/get/:track_id.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/playlists/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/playlists/routes/delete/:playlist_id.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/playlists/routes/get/:playlist_id/data.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/playlists/routes/get/search.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/playlists/routes/get/self.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/playlists/routes/post/new.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/playlists/services/getTrackById.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/releases/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/releases/routes/delete/:release_id.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/releases/routes/get/:release_id/data.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/releases/routes/get/self.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/releases/routes/get/user/:user_id.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/releases/routes/put/release.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/search/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/routes/delete/:track_id/like.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/routes/get/:track_id/data.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/routes/get/:track_id/stream.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/routes/get/liked.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/routes/get/many.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/routes/post/:track_id/like.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/controllers/tracks/routes/post/:track_id/refresh-cache.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/middlewares/withAuth/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/middlewares/withOptionalAuth/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/middlewares/withWsAuth.js (100%) mode change 100644 => 100755 rename packages/{music_server/src/api.js => server/services/music/music.service.js} (98%) create mode 100755 packages/server/services/music/package.json rename packages/{music_server/src => server/services/music}/services/findSpotifyId.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/services/getEnhancedLyricsFromTrack.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/services/removeTracks.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/useMiddlewares/useCors/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/useMiddlewares/useLogger/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/utils/composePayloadData/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/utils/createRoutesFromDirectory/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/utils/generateFnHandler/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/utils/getMiddlewares/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/utils/resolveUrl/index.js (100%) mode change 100644 => 100755 rename packages/{music_server/src => server/services/music}/ws.js (100%) mode change 100644 => 100755 create mode 100644 packages/server/services/posts/classes/posts/index.js create mode 100644 packages/server/services/posts/classes/posts/methods/create.js create mode 100644 packages/server/services/posts/classes/posts/methods/data.js create mode 100644 packages/server/services/posts/classes/posts/methods/fullfill.js create mode 100644 packages/server/services/posts/package.json create mode 100644 packages/server/services/posts/posts.service.js create mode 100644 packages/server/services/posts/routes/posts/[post_id]/get.js create mode 100644 packages/server/services/posts/routes/posts/new/post.js create mode 100644 packages/server/services/posts/routes/posts/test/get.js create mode 100755 packages/server/services/sync/classes/VRCApi/index.js rename packages/{sync_server/src => server/services/sync}/controllers/main/index.js (100%) mode change 100644 => 100755 create mode 100755 packages/server/services/sync/controllers/main/routes/get/active_services.js rename packages/{sync_server/src => server/services/sync}/controllers/main/routes/get/sse_event/:sse_uid.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/delete/tidal/track/:track_id/like.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/create_link.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/current.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/favorites/playlists.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/favorites/tracks.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/is_active.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/manifest/:track_id.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/playback/:track_id.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/playlist/:uuid/data.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/playlist/:uuid/items.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/get/tidal/search.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src/controllers/main/routes/get/active_services.js => server/services/sync/controllers/services/routes/get/vrc/session.js} (56%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/post/tidal/delete_link.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/controllers/services/routes/post/tidal/track/:track_id/like.js (100%) mode change 100644 => 100755 create mode 100755 packages/server/services/sync/controllers/services/routes/post/vrc/auth.js create mode 100755 packages/server/services/sync/controllers/services/routes/post/vrc/logout.js create mode 100755 packages/server/services/sync/controllers/services/routes/post/vrc/otp.js rename packages/{sync_server/src => server/services/sync}/middlewares/withAuth/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/middlewares/withOptionalAuth/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/middlewares/withWsAuth.js (100%) mode change 100644 => 100755 create mode 100755 packages/server/services/sync/package.json rename packages/{sync_server/src/api.js => server/services/sync/sync.service.js} (98%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/useMiddlewares/useAuth/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/useMiddlewares/useCors/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/useMiddlewares/useLogger/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/utils/composePayloadData/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/utils/createRoutesFromDirectory/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/utils/generateFnHandler/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/utils/getMiddlewares/index.js (100%) mode change 100644 => 100755 rename packages/{sync_server/src => server/services/sync}/utils/resolveUrl/index.js (100%) mode change 100644 => 100755 delete mode 100755 packages/server/src/controllers/PublicController/endpoints/incidentPrediction.js delete mode 120000 packages/server/src/shared-classes/CacheService delete mode 120000 packages/server/src/shared-classes/ComtyClient delete mode 120000 packages/server/src/shared-classes/DBModels delete mode 120000 packages/server/src/shared-classes/DbManager delete mode 120000 packages/server/src/shared-classes/DbModels delete mode 120000 packages/server/src/shared-classes/Errors delete mode 120000 packages/server/src/shared-classes/FileUpload delete mode 120000 packages/server/src/shared-classes/RTEngineServer delete mode 120000 packages/server/src/shared-classes/RedisClient delete mode 120000 packages/server/src/shared-classes/StorageClient create mode 100644 packages/server/utils/requiredFields.js delete mode 100755 packages/sync_server/.env-example delete mode 100644 packages/sync_server/.gitignore delete mode 100644 packages/sync_server/.infisical.json delete mode 100755 packages/sync_server/Dockerfile delete mode 100644 packages/sync_server/package.json delete mode 100644 packages/sync_server/src/index.js mode change 100644 => 100755 scripts/docker-build.js mode change 100644 => 100755 scripts/post-deploy.js mode change 100644 => 100755 scripts/post-install.js mode change 100644 => 100755 scripts/publishWidget.js mode change 100644 => 100755 scripts/utils/bumpVersion.js mode change 100644 => 100755 scripts/utils/composeChangelog.js mode change 100644 => 100755 scripts/utils/getPackages.js mode change 100644 => 100755 shared/classes/CacheService/index.js mode change 100644 => 100755 shared/classes/ComtyClient/index.js mode change 100644 => 100755 shared/classes/DbModels/NFCTags/index.js mode change 100644 => 100755 shared/classes/DbModels/featuredPlaylist/index.js mode change 100644 => 100755 shared/classes/DbModels/release/index.js mode change 100644 => 100755 shared/classes/DbModels/serverLimit/index.js mode change 100644 => 100755 shared/classes/DbModels/streamingProfile/index.js mode change 100644 => 100755 shared/classes/DbModels/track_like/index.js mode change 100644 => 100755 shared/classes/DbModels/widget/index.js mode change 100644 => 100755 shared/classes/Errors/index.js mode change 100644 => 100755 shared/classes/FileUpload/index.js mode change 100644 => 100755 shared/classes/RedisClient/index.js mode change 100644 => 100755 shared/classes/SecureSyncEntry/index.js mode change 100644 => 100755 shared/classes/TidalAPI/index.js mode change 100644 => 100755 shared/lib/api_wrapper/index.js rename {packages/wrapper => wrapper}/Dockerfile (100%) rename {packages/wrapper => wrapper}/package.json (100%) create mode 100755 wrapper/src/ascii.js rename {packages/wrapper => wrapper}/src/globals.js (100%) mode change 100644 => 100755 rename {packages/wrapper => wrapper}/src/index.js (100%) create mode 100755 wrapper/src/lib/getInternalIp.js rename {packages/wrapper => wrapper}/src/lib/setupDist.js (100%) rename {packages/wrapper => wrapper}/src/lib/useLogger/index.js (100%) mode change 100644 => 100755 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100755 index 2e7f4c6d..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,68 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -name: "CodeQL" - -on: - pull_request: - branches: [master] - schedule: - - cron: '0 0 * * *' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - # Override automatic language detection by changing the below list - # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] - language: ['javascript'] - # Learn more... - # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/.gitmodules b/.gitmodules old mode 100644 new mode 100755 diff --git a/.ignorepackages b/.ignorepackages old mode 100644 new mode 100755 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md old mode 100644 new mode 100755 diff --git a/CODE_STYLE.md b/CODE_STYLE.md old mode 100644 new mode 100755 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/api-ports.md b/api-ports.md new file mode 100644 index 00000000..35bb58bf --- /dev/null +++ b/api-ports.md @@ -0,0 +1,18 @@ +# API SERVICES PORT TABLE + +3000 -> main +3001 -> posts +3002 -> files +3003 -> music +3004 -> chats +3005 -> marketplace +3006 -> sync +3007 -> mail +3008 -> unallocated +3009 -> unallocated +3010 -> unallocated +3011 -> unallocated +3012 -> unallocated +3013 -> unallocated +3014 -> unallocated +3015 -> unallocated diff --git a/changelogs/v0-45-0.md b/changelogs/v0-45-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-45-1.md b/changelogs/v0-45-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-45-2.md b/changelogs/v0-45-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-46-0.md b/changelogs/v0-46-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-46-1.md b/changelogs/v0-46-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-47-0.md b/changelogs/v0-47-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-47-1.md b/changelogs/v0-47-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-47-2.md b/changelogs/v0-47-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-47-3.md b/changelogs/v0-47-3.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-47-4.md b/changelogs/v0-47-4.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-47-5.md b/changelogs/v0-47-5.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-48-0.md b/changelogs/v0-48-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-48-1.md b/changelogs/v0-48-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-48-2.md b/changelogs/v0-48-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-49-0.md b/changelogs/v0-49-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-49-1.md b/changelogs/v0-49-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-49-2.md b/changelogs/v0-49-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-49-3.md b/changelogs/v0-49-3.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-50-0.md b/changelogs/v0-50-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-50-1.md b/changelogs/v0-50-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-50-2.md b/changelogs/v0-50-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-50-3.md b/changelogs/v0-50-3.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-50-4.md b/changelogs/v0-50-4.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-51-0.md b/changelogs/v0-51-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-51-1.md b/changelogs/v0-51-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-52-0.md b/changelogs/v0-52-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-52-1.md b/changelogs/v0-52-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-52-2.md b/changelogs/v0-52-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-53-0.md b/changelogs/v0-53-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-53-1.md b/changelogs/v0-53-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-53-2.md b/changelogs/v0-53-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-54-0.md b/changelogs/v0-54-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-54-1.md b/changelogs/v0-54-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-54-2.md b/changelogs/v0-54-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-54-3.md b/changelogs/v0-54-3.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-54-4.md b/changelogs/v0-54-4.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-55-0.md b/changelogs/v0-55-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-56-0.md b/changelogs/v0-56-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-56-1.md b/changelogs/v0-56-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-56-2.md b/changelogs/v0-56-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-56-3.md b/changelogs/v0-56-3.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-57-0.md b/changelogs/v0-57-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-57-1.md b/changelogs/v0-57-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-57-2.md b/changelogs/v0-57-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-57-3.md b/changelogs/v0-57-3.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-57-4.md b/changelogs/v0-57-4.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-57-5.md b/changelogs/v0-57-5.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-57-6.md b/changelogs/v0-57-6.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-58-0.md b/changelogs/v0-58-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-58-1.md b/changelogs/v0-58-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-58-2.md b/changelogs/v0-58-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-59-0.md b/changelogs/v0-59-0.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-59-1.md b/changelogs/v0-59-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-60-1.md b/changelogs/v0-60-1.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-60-2.md b/changelogs/v0-60-2.md old mode 100644 new mode 100755 diff --git a/changelogs/v0-60-3.md b/changelogs/v0-60-3.md old mode 100644 new mode 100755 diff --git a/ecosystem.config.js b/ecosystem.config.js old mode 100644 new mode 100755 diff --git a/linebridge b/linebridge index 13b01b21..c011f235 160000 --- a/linebridge +++ b/linebridge @@ -1 +1 @@ -Subproject commit 13b01b21d6b63ecddd8625781a69355861d38db5 +Subproject commit c011f2353f8db14a2ed287015d108c2620098a84 diff --git a/package.json b/package.json index c4ad1ba7..d766968d 100755 --- a/package.json +++ b/package.json @@ -5,12 +5,7 @@ "private": true, "scripts": { "wrapper:dev": "node ./packages/wrapper/src/index.js --dev", - "dev": "concurrently -k -n Client,Server,Marketplace,Chat,File,Music,Sync -c bgCyan,auto \"yarn dev:client\" \"yarn dev:server\" \"yarn dev:marketplace_server\" \"yarn dev:chat_server\" \"yarn dev:file_server\" \"yarn dev:music_server\" \"yarn dev:sync_server\"", - "dev:file_server": "cd packages/file_server && yarn dev", - "dev:music_server": "cd packages/music_server && yarn dev", - "dev:chat_server": "cd packages/chat_server && yarn dev", - "dev:marketplace_server": "cd packages/marketplace_server && yarn dev", - "dev:sync_server": "cd packages/sync_server && yarn dev", + "dev": "concurrently -k \"yarn dev:client\" \"yarn dev:server\"", "dev:server": "cd packages/server && yarn dev", "dev:client": "cd packages/app && yarn dev", "release": "node ./scripts/release.js", @@ -23,7 +18,7 @@ "dependencies": { "7zip-min": "1.4.3", "axios": "^1.4.0", - "corenode": "^0.28.26", + "@ragestudio/hermes": "^0.1.1", "dotenv": "16.0.3", "octokit": "^2.0.14" }, diff --git a/packages/app/android/.gitignore b/packages/app/android/.gitignore old mode 100644 new mode 100755 diff --git a/packages/app/android/.idea/.gitignore b/packages/app/android/.idea/.gitignore old mode 100644 new mode 100755 diff --git a/packages/app/android/.idea/compiler.xml b/packages/app/android/.idea/compiler.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/.idea/jarRepositories.xml b/packages/app/android/.idea/jarRepositories.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/.idea/misc.xml b/packages/app/android/.idea/misc.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/.gitignore b/packages/app/android/app/.gitignore old mode 100644 new mode 100755 diff --git a/packages/app/android/app/build.gradle b/packages/app/android/app/build.gradle old mode 100644 new mode 100755 diff --git a/packages/app/android/app/capacitor.build.gradle b/packages/app/android/app/capacitor.build.gradle old mode 100644 new mode 100755 diff --git a/packages/app/android/app/proguard-rules.pro b/packages/app/android/app/proguard-rules.pro old mode 100644 new mode 100755 diff --git a/packages/app/android/app/release/output-metadata.json b/packages/app/android/app/release/output-metadata.json old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/AndroidManifest.xml b/packages/app/android/app/src/main/AndroidManifest.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/java/com/ragestudio/comty/MainActivity.java b/packages/app/android/app/src/main/java/com/ragestudio/comty/MainActivity.java old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-hdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-hdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-ldpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-ldpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-mdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-mdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-night-hdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-night-hdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-night-ldpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-night-ldpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-night-mdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-night-mdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-night-xhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-night-xhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-xhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-xhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-xxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-xxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-land-xxxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-land-xxxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-night/splash.png b/packages/app/android/app/src/main/res/drawable-night/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-hdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-hdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-ldpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-ldpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-mdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-mdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-night-hdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-night-hdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-night-ldpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-night-ldpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-night-mdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-night-mdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-night-xhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-night-xhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-xhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-xhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-xxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-xxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-port-xxxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-port-xxxhdpi/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/packages/app/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable/ic_launcher_background.xml b/packages/app/android/app/src/main/res/drawable/ic_launcher_background.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/drawable/splash.png b/packages/app/android/app/src/main/res/drawable/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/layout/activity_main.xml b/packages/app/android/app/src/main/res/layout/activity_main.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/packages/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/packages/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png b/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher.png b/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png b/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png b/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png b/packages/app/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png b/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png b/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png b/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png b/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/values/ic_launcher_background.xml b/packages/app/android/app/src/main/res/values/ic_launcher_background.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/values/strings.xml b/packages/app/android/app/src/main/res/values/strings.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/values/styles.xml b/packages/app/android/app/src/main/res/values/styles.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/app/src/main/res/xml/file_paths.xml b/packages/app/android/app/src/main/res/xml/file_paths.xml old mode 100644 new mode 100755 diff --git a/packages/app/android/build.gradle b/packages/app/android/build.gradle old mode 100644 new mode 100755 diff --git a/packages/app/android/capacitor.settings.gradle b/packages/app/android/capacitor.settings.gradle old mode 100644 new mode 100755 diff --git a/packages/app/android/gradle.properties b/packages/app/android/gradle.properties old mode 100644 new mode 100755 diff --git a/packages/app/android/gradle/wrapper/gradle-wrapper.jar b/packages/app/android/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 diff --git a/packages/app/android/gradle/wrapper/gradle-wrapper.properties b/packages/app/android/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 diff --git a/packages/app/android/gradlew.bat b/packages/app/android/gradlew.bat old mode 100644 new mode 100755 diff --git a/packages/app/android/settings.gradle b/packages/app/android/settings.gradle old mode 100644 new mode 100755 diff --git a/packages/app/android/variables.gradle b/packages/app/android/variables.gradle old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/changelogs/index.jsx b/packages/app/constants/settings/changelogs/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/changelogs/index.less b/packages/app/constants/settings/changelogs/index.less old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/profileLinks/index.jsx b/packages/app/constants/settings/components/profileLinks/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/profileLinks/index.less b/packages/app/constants/settings/components/profileLinks/index.less old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/sessionItem/icons/chrome.jsx b/packages/app/constants/settings/components/sessionItem/icons/chrome.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/sessionItem/icons/firefox.jsx b/packages/app/constants/settings/components/sessionItem/icons/firefox.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/sessionItem/icons/mobile.jsx b/packages/app/constants/settings/components/sessionItem/icons/mobile.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/sessionItem/index.jsx b/packages/app/constants/settings/components/sessionItem/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/sessionItem/index.less b/packages/app/constants/settings/components/sessionItem/index.less old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/sliderValues/index.jsx b/packages/app/constants/settings/components/sliderValues/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/sliderValues/index.less b/packages/app/constants/settings/components/sliderValues/index.less old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/slidersWithPresets/index.jsx b/packages/app/constants/settings/components/slidersWithPresets/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/widgetsView/index.jsx b/packages/app/constants/settings/components/widgetsView/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/components/widgetsView/index.less b/packages/app/constants/settings/components/widgetsView/index.less old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/player/items/player.compressor/index.jsx b/packages/app/constants/settings/player/items/player.compressor/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/player/items/player.eq/index.jsx b/packages/app/constants/settings/player/items/player.eq/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/privacy/index.jsx b/packages/app/constants/settings/privacy/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/context.js b/packages/app/constants/settings/tap_share/context.js old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/errors.js b/packages/app/constants/settings/tap_share/errors.js old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/index.jsx b/packages/app/constants/settings/tap_share/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/index.less b/packages/app/constants/settings/tap_share/index.less old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/steps/check_register/index.jsx b/packages/app/constants/settings/tap_share/steps/check_register/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/steps/data_editor/index.jsx b/packages/app/constants/settings/tap_share/steps/data_editor/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/steps/success/index.jsx b/packages/app/constants/settings/tap_share/steps/success/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/tap_share/steps/tag_writter/index.jsx b/packages/app/constants/settings/tap_share/steps/tag_writter/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/settings/widgets/index.jsx b/packages/app/constants/settings/widgets/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/constants/userLinksDecorators.js b/packages/app/constants/userLinksDecorators.js old mode 100644 new mode 100755 diff --git a/packages/app/electron-builder.json b/packages/app/electron-builder.json old mode 100644 new mode 100755 diff --git a/packages/app/package.json b/packages/app/package.json index 4d1a25d4..750030ab 100755 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -42,6 +42,7 @@ "@mui/material": "^5.11.9", "@ragestudio/cordova-nfc": "^1.2.0", "@react-spring/web": "^9.7.2", + "@ruffle-rs/ruffle": "^0.1.0-nightly.2024.2.23", "@sentry/browser": "^7.64.0", "@tanstack/react-virtual": "^3.0.0-beta.54", "@tsmx/human-readable": "^1.0.7", @@ -100,6 +101,7 @@ "react-motion": "0.5.2", "react-rnd": "10.3.5", "react-router-dom": "^6.6.2", + "react-ruffle": "^1.0.2", "react-ticker": "^1.3.2", "react-transition-group": "^4.4.5", "react-useanimations": "^2.10.0", @@ -116,7 +118,6 @@ "tseep": "^1.1.1", "ua-parser-js": "^1.0.36", "virtual-scroller": "^1.12.3", - "vite": "4.5.2", "wait-on": "^6.0.1" }, "devDependencies": { @@ -137,7 +138,6 @@ "@types/react-router-dom": "^5.1.8", "@typescript-eslint/eslint-plugin": "^4.29.0", "concurrently": "^7.4.0", - "corenode": "0.28.26", "cors": "2.8.5", "cross-env": "^7.0.3", "electron": "^21.0.1", @@ -175,4 +175,4 @@ ] } } -} \ No newline at end of file +} diff --git a/packages/app/public/assets/badges/early_streamer.svg b/packages/app/public/assets/badges/early_streamer.svg old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/badges/x1.svg b/packages/app/public/assets/badges/x1.svg old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/icons/icon-128.webp b/packages/app/public/assets/icons/icon-128.webp old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/icons/icon-192.webp b/packages/app/public/assets/icons/icon-192.webp old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/icons/icon-256.webp b/packages/app/public/assets/icons/icon-256.webp old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/icons/icon-48.webp b/packages/app/public/assets/icons/icon-48.webp old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/icons/icon-512.webp b/packages/app/public/assets/icons/icon-512.webp old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/icons/icon-72.webp b/packages/app/public/assets/icons/icon-72.webp old mode 100644 new mode 100755 diff --git a/packages/app/public/assets/icons/icon-96.webp b/packages/app/public/assets/icons/icon-96.webp old mode 100644 new mode 100755 diff --git a/packages/app/public/manifest.webmanifest b/packages/app/public/manifest.webmanifest old mode 100644 new mode 100755 diff --git a/packages/app/public/workers/audioStreamProcess.js b/packages/app/public/workers/audioStreamProcess.js old mode 100644 new mode 100755 diff --git a/packages/app/public/workers/wav-decoder.js b/packages/app/public/workers/wav-decoder.js old mode 100644 new mode 100755 diff --git a/packages/app/public/worklets/AudioDataWorkletStream.js b/packages/app/public/worklets/AudioDataWorkletStream.js old mode 100644 new mode 100755 diff --git a/packages/app/resources/icon-background.png b/packages/app/resources/icon-background.png old mode 100644 new mode 100755 diff --git a/packages/app/resources/icon-foreground.png b/packages/app/resources/icon-foreground.png old mode 100644 new mode 100755 diff --git a/packages/app/resources/icon-only.svg b/packages/app/resources/icon-only.svg old mode 100644 new mode 100755 diff --git a/packages/app/resources/splash-dark.png b/packages/app/resources/splash-dark.png old mode 100644 new mode 100755 diff --git a/packages/app/resources/splash.png b/packages/app/resources/splash.png old mode 100644 new mode 100755 diff --git a/packages/app/src/classes/PerformanceLog/index.js b/packages/app/src/classes/PerformanceLog/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/components/AnimationPlayer/index.jsx b/packages/app/src/components/AnimationPlayer/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/AnimationPlayer/index.less b/packages/app/src/components/AnimationPlayer/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Icons/customIcons/crown.jsx b/packages/app/src/components/Icons/customIcons/crown.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Icons/customIcons/verifiedBadge.jsx b/packages/app/src/components/Icons/customIcons/verifiedBadge.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Icons/customIcons/vrchat.jsx b/packages/app/src/components/Icons/customIcons/vrchat.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Layout/draggableDrawer/index.jsx b/packages/app/src/components/Layout/draggableDrawer/index.jsx index 4d1073ed..b348262d 100755 --- a/packages/app/src/components/Layout/draggableDrawer/index.jsx +++ b/packages/app/src/components/Layout/draggableDrawer/index.jsx @@ -3,7 +3,6 @@ import React, { Component } from "react" import { Motion, spring, presets } from "react-motion" import classnames from "classnames" import PropTypes from "prop-types" -import document from "global/document" import Observer from "react-intersection-observer" import { css } from "@emotion/css" import { createPortal } from "react-dom" diff --git a/packages/app/src/components/Layout/quickNav/index.jsx b/packages/app/src/components/Layout/quickNav/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Layout/toolsBar/index.jsx b/packages/app/src/components/Layout/toolsBar/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Layout/toolsBar/index.less b/packages/app/src/components/Layout/toolsBar/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Layout/topBar/index.jsx b/packages/app/src/components/Layout/topBar/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Layout/topBar/index.less b/packages/app/src/components/Layout/topBar/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/LikeButton/index.jsx b/packages/app/src/components/LikeButton/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/LikeButton/index.less b/packages/app/src/components/LikeButton/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/LimitAlert/index.jsx b/packages/app/src/components/LimitAlert/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/MarkdownReader/index.jsx b/packages/app/src/components/MarkdownReader/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/MarkdownReader/index.less b/packages/app/src/components/MarkdownReader/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/PlaylistCreator/index.jsx b/packages/app/src/components/Music/PlaylistCreator/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/PlaylistCreator/index.less b/packages/app/src/components/Music/PlaylistCreator/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/PlaylistItem/index.jsx b/packages/app/src/components/Music/PlaylistItem/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/PlaylistItem/index.less b/packages/app/src/components/Music/PlaylistItem/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/PlaylistTimelineEntry/index.jsx b/packages/app/src/components/Music/PlaylistTimelineEntry/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/PlaylistTimelineEntry/index.less b/packages/app/src/components/Music/PlaylistTimelineEntry/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/PlaylistView/index.jsx b/packages/app/src/components/Music/PlaylistView/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/Track/index.jsx b/packages/app/src/components/Music/Track/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Music/Track/index.less b/packages/app/src/components/Music/Track/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/ObjectInspector/index.jsx b/packages/app/src/components/ObjectInspector/index.jsx deleted file mode 100755 index fa1ff017..00000000 --- a/packages/app/src/components/ObjectInspector/index.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import React from "react" -import * as antd from "antd" -import { decycle } from "@corenode/utils" -import { Icons } from "components/Icons" - -function parseTreeData(data, backKey) { - const keys = Object.keys(data) - let result = Array() - - keys.forEach((key) => { - const value = data[key] - const valueType = typeof value - const obj = Object() - - obj.key = backKey ? `${backKey}-${key}` : key - obj.title = key - obj.type = valueType - - if (valueType === "object") { - obj.children = parseTreeData(value) - } else { - obj.children = [ - { - key: `${obj.key}-value`, - title: "value", - icon: , - children: [ - { - key: `${obj.key}-value-indicator`, - title: String(value), - icon: , - }, - ], - }, - { - key: `${obj.key}-type`, - title: "type", - children: [ - { - key: `${obj.key}-type-indicator`, - title: valueType, - }, - ], - }, - ] - } - - result.push(obj) - }) - - return result -} - -export default class ObjectInspector extends React.Component { - state = { - data: null, - expandedKeys: [], - autoExpandParent: true, - } - - componentDidMount() { - const raw = decycle(this.props.data) - const data = parseTreeData(raw) - - this.setState({ raw, data }) - } - - onExpand = (expandedKeys) => { - this.setState({ - expandedKeys, - autoExpandParent: false, - }) - } - - render() { - const { expandedKeys, autoExpandParent } = this.state - return ( -
- } - onExpand={this.onExpand} - expandedKeys={expandedKeys} - autoExpandParent={autoExpandParent} - treeData={this.state.data} - /> -
- ) - } -} diff --git a/packages/app/src/components/PagePanels/components/NavMenu/index.jsx b/packages/app/src/components/PagePanels/components/NavMenu/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/PagePanels/components/NavMenu/index.less b/packages/app/src/components/PagePanels/components/NavMenu/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/AudioVolume/index.jsx b/packages/app/src/components/Player/AudioVolume/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/AudioVolume/index.less b/packages/app/src/components/Player/AudioVolume/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/BackgroundMediaPlayer/index.jsx b/packages/app/src/components/Player/BackgroundMediaPlayer/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/BackgroundMediaPlayer/index.less b/packages/app/src/components/Player/BackgroundMediaPlayer/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/ChangeModeButton/index.jsx b/packages/app/src/components/Player/ChangeModeButton/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/Controls/index.jsx b/packages/app/src/components/Player/Controls/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/Controls/index.less b/packages/app/src/components/Player/Controls/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/ExtraActions/index.jsx b/packages/app/src/components/Player/ExtraActions/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/SeekBar/index.jsx b/packages/app/src/components/Player/SeekBar/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/SeekBar/index.less b/packages/app/src/components/Player/SeekBar/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/ToolBarPlayer/index.jsx b/packages/app/src/components/Player/ToolBarPlayer/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/Player/ToolBarPlayer/index.less b/packages/app/src/components/Player/ToolBarPlayer/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/PostCard/index.less b/packages/app/src/components/PostCard/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/SortableList/index.jsx b/packages/app/src/components/SortableList/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/SortableList/index.less b/packages/app/src/components/SortableList/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/SyncRoomCard/index.jsx b/packages/app/src/components/SyncRoomCard/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/SyncRoomCard/index.less b/packages/app/src/components/SyncRoomCard/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/TapShare/Dialog/index.jsx b/packages/app/src/components/TapShare/Dialog/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/TapShare/Dialog/index.less b/packages/app/src/components/TapShare/Dialog/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/UserBadges/index.less b/packages/app/src/components/UserBadges/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/UserSelector/index.jsx b/packages/app/src/components/UserSelector/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/UserSelector/index.less b/packages/app/src/components/UserSelector/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/WidgetItemPreview/index.jsx b/packages/app/src/components/WidgetItemPreview/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/WidgetItemPreview/index.less b/packages/app/src/components/WidgetItemPreview/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/WidgetsBrowser/index.jsx b/packages/app/src/components/WidgetsBrowser/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/WidgetsBrowser/index.less b/packages/app/src/components/WidgetsBrowser/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/WidgetsWrapper/index.jsx b/packages/app/src/components/WidgetsWrapper/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/components/WidgetsWrapper/index.less b/packages/app/src/components/WidgetsWrapper/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/components/index.js b/packages/app/src/components/index.js index 9d3c8f47..51f4b126 100755 --- a/packages/app/src/components/index.js +++ b/packages/app/src/components/index.js @@ -10,7 +10,6 @@ export { default as Login } from "./Login" // COMPLEX COMPONENTS export { default as ActionsBar } from "./ActionsBar" -export { default as ObjectInspector } from "./ObjectInspector" export { default as ModifierTag } from "./ModifierTag" export { default as StepsForm } from "./StepsForm" export { default as SearchButton } from "./SearchButton" diff --git a/packages/app/src/contexts/WithPlayerContext/index.jsx b/packages/app/src/contexts/WithPlayerContext/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/contexts/WithPlaylistContext/index.js b/packages/app/src/contexts/WithPlaylistContext/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/api/api.core.js b/packages/app/src/cores/api/api.core.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/haptics/haptics.core.js b/packages/app/src/cores/haptics/haptics.core.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/nfc/nfc.core.js b/packages/app/src/cores/nfc/nfc.core.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/mediaSession.js b/packages/app/src/cores/player/mediaSession.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/player.storage.js b/packages/app/src/cores/player/player.storage.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/presets.js b/packages/app/src/cores/player/presets.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/processors/bpmNode/index.js b/packages/app/src/cores/player/processors/bpmNode/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/processors/compressorNode/index.js b/packages/app/src/cores/player/processors/compressorNode/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/processors/eqNode/index.js b/packages/app/src/cores/player/processors/eqNode/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/processors/gainNode/index.js b/packages/app/src/cores/player/processors/gainNode/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/processors/index.js b/packages/app/src/cores/player/processors/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/processors/node.js b/packages/app/src/cores/player/processors/node.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/processors/spatialNode/index.js b/packages/app/src/cores/player/processors/spatialNode/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/player/services.js b/packages/app/src/cores/player/services.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/rooms/rooms.core.js b/packages/app/src/cores/rooms/rooms.core.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/sync/sync.core.js b/packages/app/src/cores/sync/sync.core.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/tasksQueue/tasksQueue.core.js b/packages/app/src/cores/tasksQueue/tasksQueue.core.js old mode 100644 new mode 100755 diff --git a/packages/app/src/cores/widgets/widgets.core.js b/packages/app/src/cores/widgets/widgets.core.js old mode 100644 new mode 100755 diff --git a/packages/app/src/debug/components/index.js b/packages/app/src/debug/components/index.js deleted file mode 100755 index 0d8cdebd..00000000 --- a/packages/app/src/debug/components/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as ThemeDebug } from "./theme" \ No newline at end of file diff --git a/packages/app/src/debug/components/api/index.jsx b/packages/app/src/debuggers/api/index.jsx similarity index 100% rename from packages/app/src/debug/components/api/index.jsx rename to packages/app/src/debuggers/api/index.jsx diff --git a/packages/app/src/debuggers/email/index.jsx b/packages/app/src/debuggers/email/index.jsx new file mode 100644 index 00000000..c95c180b --- /dev/null +++ b/packages/app/src/debuggers/email/index.jsx @@ -0,0 +1,9 @@ +import React from "react" + +const EmailDebugger = () => { + return
+

Email

+
+} + +export default EmailDebugger \ No newline at end of file diff --git a/packages/app/src/debug/components/theme/index.jsx b/packages/app/src/debuggers/theme/index.jsx similarity index 100% rename from packages/app/src/debug/components/theme/index.jsx rename to packages/app/src/debuggers/theme/index.jsx diff --git a/packages/app/src/debug/components/theme/index.less b/packages/app/src/debuggers/theme/index.less similarity index 100% rename from packages/app/src/debug/components/theme/index.less rename to packages/app/src/debuggers/theme/index.less diff --git a/packages/app/src/debug/components/timeCalculation/index.jsx b/packages/app/src/debuggers/timeCalculation/index.jsx similarity index 100% rename from packages/app/src/debug/components/timeCalculation/index.jsx rename to packages/app/src/debuggers/timeCalculation/index.jsx diff --git a/packages/app/src/debug/components/timeCalculation/index.less b/packages/app/src/debuggers/timeCalculation/index.less similarity index 100% rename from packages/app/src/debug/components/timeCalculation/index.less rename to packages/app/src/debuggers/timeCalculation/index.less diff --git a/packages/app/src/hooks/useDebounce/index.js b/packages/app/src/hooks/useDebounce/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/hooks/useDefaultVisibility/index.js b/packages/app/src/hooks/useDefaultVisibility/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/hooks/useLayoutInterface/index.js b/packages/app/src/hooks/useLayoutInterface/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/hooks/useRandomFeaturedWallpaperUrl/index.js b/packages/app/src/hooks/useRandomFeaturedWallpaperUrl/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/hooks/useTopBar/index.jsx b/packages/app/src/hooks/useTopBar/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/hooks/useUrlQueryActiveKey/index.js b/packages/app/src/hooks/useUrlQueryActiveKey/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/hooks/useWsEvents/index.js b/packages/app/src/hooks/useWsEvents/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/layouts/blank/index.jsx b/packages/app/src/layouts/blank/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/layouts/components/floatingStack/index.jsx b/packages/app/src/layouts/components/floatingStack/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/layouts/components/floatingStack/index.less b/packages/app/src/layouts/components/floatingStack/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/layouts/components/modals/index.jsx b/packages/app/src/layouts/components/modals/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/layouts/components/modals/index.less b/packages/app/src/layouts/components/modals/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/@mobile-views/creator/index.jsx b/packages/app/src/pages/@mobile-views/creator/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/@mobile-views/creator/index.less b/packages/app/src/pages/@mobile-views/creator/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/@mobile-views/player/index.jsx b/packages/app/src/pages/@mobile-views/player/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/@mobile-views/player/index.less b/packages/app/src/pages/@mobile-views/player/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/account/index.mobile.jsx b/packages/app/src/pages/account/index.mobile.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/account/index.mobile.less b/packages/app/src/pages/account/index.mobile.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/account/tabs/details/index.less b/packages/app/src/pages/account/tabs/details/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/account/tabs/followers/index.less b/packages/app/src/pages/account/tabs/followers/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/account/tabs/music/index.jsx b/packages/app/src/pages/account/tabs/music/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/account/tabs/music/index.less b/packages/app/src/pages/account/tabs/music/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/register/index.jsx b/packages/app/src/pages/auth/forms/register/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/register/index.less b/packages/app/src/pages/auth/forms/register/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/register/steps/email/index.jsx b/packages/app/src/pages/auth/forms/register/steps/email/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/register/steps/password/index.jsx b/packages/app/src/pages/auth/forms/register/steps/password/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/register/steps/password/index.less b/packages/app/src/pages/auth/forms/register/steps/password/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/register/steps/tos/index.jsx b/packages/app/src/pages/auth/forms/register/steps/tos/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/register/steps/username/index.jsx b/packages/app/src/pages/auth/forms/register/steps/username/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/forms/selector/index.jsx b/packages/app/src/pages/auth/forms/selector/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/auth/index.mobile.less b/packages/app/src/pages/auth/index.mobile.less old mode 100644 new mode 100755 diff --git a/packages/app/src/debug/index.jsx b/packages/app/src/pages/debug/index.jsx similarity index 92% rename from packages/app/src/debug/index.jsx rename to packages/app/src/pages/debug/index.jsx index efb669b1..5a597f28 100755 --- a/packages/app/src/debug/index.jsx +++ b/packages/app/src/pages/debug/index.jsx @@ -3,10 +3,12 @@ import loadable from "@loadable/component" import * as antd from "antd" const DebuggersComponentsPaths = { - ...import.meta.glob("/src/debug/components/**/[a-z[]*.jsx"), - ...import.meta.glob("/src/debug/components/**/[a-z[]*.tsx") + ...import.meta.glob("/src/debuggers/**/[a-z[]*.jsx"), + ...import.meta.glob("/src/debuggers/**/[a-z[]*.tsx") } +console.log(DebuggersComponentsPaths) + class DebuggerRender extends React.PureComponent { state = { error: null, diff --git a/packages/app/src/debug/index.less b/packages/app/src/pages/debug/index.less similarity index 100% rename from packages/app/src/debug/index.less rename to packages/app/src/pages/debug/index.less diff --git a/packages/app/src/pages/games/pony/index.jsx b/packages/app/src/pages/games/pony/index.jsx new file mode 100644 index 00000000..633000ec --- /dev/null +++ b/packages/app/src/pages/games/pony/index.jsx @@ -0,0 +1,65 @@ +import React from "react" +import * as antd from "antd" + +import "./index.less" + +const swfResource = "http://storage.ragestudio.net/gose-uploads/d4rcb9h-3a24f55c-12b4-4c03-a351-a06ed17111c9.swf" + +function loadRuffle() { + return new Promise((resolve, reject) => { + const script = document.createElement("script") + + script.src = "https://unpkg.com/@ruffle-rs/ruffle" + script.async = true + script.onload = () => { + return resolve(script) + } + + document.body.appendChild(script) + }) +} + +class Game extends React.Component { + ruffleScript = null + + playerRef = React.createRef() + + componentDidMount = async () => { + app.layout.toggleCenteredContent(false) + + this.ruffleScript = await loadRuffle() + + const ruffle = window.RufflePlayer.newest() + const player = ruffle.createPlayer() + + this.playerRef.current.appendChild(player) + + player.load(swfResource) + } + + componentWillUnmount() { + document.body.removeChild(this.ruffleScript) + } + + downloadResource = () => { + const a = document.createElement("a") + a.href = swfResource + a.download = "pony.swf" + a.click() + } + + render() { + return
+ + Download SWF + +
+ } +} + +export default Game \ No newline at end of file diff --git a/packages/app/src/pages/games/pony/index.less b/packages/app/src/pages/games/pony/index.less new file mode 100644 index 00000000..eb3d7910 --- /dev/null +++ b/packages/app/src/pages/games/pony/index.less @@ -0,0 +1,23 @@ +.ruffle_game { + display: flex; + flex-direction: column; + + align-items: center; + justify-content: center; + + width: 100%; + height: 90vh; + + gap: 20px; + + ruffle-player { + width: 100%; + height: 100%; + + border-radius: 12px; + + canvas { + border-radius: 12px; + } + } +} \ No newline at end of file diff --git a/packages/app/src/pages/index.mobile.jsx b/packages/app/src/pages/index.mobile.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/insiders/index.jsx b/packages/app/src/pages/insiders/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/lyrics/index.jsx b/packages/app/src/pages/lyrics/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/lyrics/index.less b/packages/app/src/pages/lyrics/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/components/dashboard/index.jsx b/packages/app/src/pages/music/components/dashboard/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/components/dashboard/releases/index.jsx b/packages/app/src/pages/music/components/dashboard/releases/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/components/favorites/index.jsx b/packages/app/src/pages/music/components/favorites/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/components/library/index.jsx b/packages/app/src/pages/music/components/library/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/components/library/index.less b/packages/app/src/pages/music/components/library/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/creator/components/BasicInformation/index.jsx b/packages/app/src/pages/music/creator/components/BasicInformation/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/creator/components/TracksUploads/index.jsx b/packages/app/src/pages/music/creator/components/TracksUploads/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/music/creator/components/TracksUploads/index.less b/packages/app/src/pages/music/creator/components/TracksUploads/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/nfc/[tag_id].jsx b/packages/app/src/pages/nfc/[tag_id].jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/privacy/index.jsx b/packages/app/src/pages/privacy/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/settings/components/SettingItemComponent/index.jsx b/packages/app/src/pages/settings/components/SettingItemComponent/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/settings/components/SettingTab/index.jsx b/packages/app/src/pages/settings/components/SettingTab/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/settings/index.jsx b/packages/app/src/pages/settings/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/settings/index.mobile.jsx b/packages/app/src/pages/settings/index.mobile.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/settings/index.mobile.less b/packages/app/src/pages/settings/index.mobile.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/CategoriesSelector/index.jsx b/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/CategoriesSelector/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/CategoryViewResolver/index.jsx b/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/CategoryViewResolver/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileEditor/index.jsx b/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileEditor/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileEditor/index.less b/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileEditor/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileSelector/index.jsx b/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/ProfileSelector/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/StreamingKeyViewer/index.jsx b/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/StreamingKeyViewer/index.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/StreamingKeyViewer/index.less b/packages/app/src/pages/tv/tabs/livestreamControlPanel/components/StreamingKeyViewer/index.less old mode 100644 new mode 100755 diff --git a/packages/app/src/splash.jsx b/packages/app/src/splash.jsx old mode 100644 new mode 100755 diff --git a/packages/app/src/theme/splash.less b/packages/app/src/theme/splash.less old mode 100644 new mode 100755 diff --git a/packages/app/src/utils/hexToRGB/index.js b/packages/app/src/utils/hexToRGB/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/utils/rgbToValues/index.js b/packages/app/src/utils/rgbToValues/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/utils/rootVarHexToRGBValues/index.js b/packages/app/src/utils/rootVarHexToRGBValues/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/utils/seekToTimeLabel/index.js b/packages/app/src/utils/seekToTimeLabel/index.js old mode 100644 new mode 100755 diff --git a/packages/app/src/utils/storagedState/index.js b/packages/app/src/utils/storagedState/index.js old mode 100644 new mode 100755 diff --git a/packages/chat_server/.env-example b/packages/chat_server/.env-example deleted file mode 100755 index 27627a20..00000000 --- a/packages/chat_server/.env-example +++ /dev/null @@ -1,15 +0,0 @@ -DB_HOSTNAME="" -DB_NAME="" -DB_USER="" -DB_PWD="" - -S3_ENDPOINT="" -S3_REGION="" -S3_PORT="" -S3_USE_SSL="" -S3_BUCKET="" -S3_ACCESS_KEY="" -S3_SECRET_KEY="" - -COMTY_ACCESS_KEY="" -COMTY_SECRET_KEY="" \ No newline at end of file diff --git a/packages/chat_server/.gitignore b/packages/chat_server/.gitignore deleted file mode 100644 index b124b166..00000000 --- a/packages/chat_server/.gitignore +++ /dev/null @@ -1 +0,0 @@ -shared-classes \ No newline at end of file diff --git a/packages/chat_server/.infisical.json b/packages/chat_server/.infisical.json deleted file mode 100644 index fb927147..00000000 --- a/packages/chat_server/.infisical.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "workspaceId": "64519574a8a691b55e8b361d", - "defaultEnvironment": "dev", - "gitBranchToEnvironmentMapping": { - "master": "prod" - } -} \ No newline at end of file diff --git a/packages/chat_server/Dockerfile b/packages/chat_server/Dockerfile deleted file mode 100755 index 0c982203..00000000 --- a/packages/chat_server/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM node:16-bullseye-slim - -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - -RUN apt update -RUN apt install --no-install-recommends curl python yarn build-essential -y - -RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app - -WORKDIR /home/node/app -USER node - -EXPOSE 3020 - -COPY package.json ./ -COPY --chown=node:node . . - -RUN chmod -R 777 /home/node/app - -RUN export NODE_ENV=production - -RUN yarn global add cross-env -RUN yarn install --production -RUN yarn build - -CMD ["yarn", "run", "run:prod"] \ No newline at end of file diff --git a/packages/chat_server/package.json b/packages/chat_server/package.json deleted file mode 100755 index a80b22ee..00000000 --- a/packages/chat_server/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "@comty/chat_server", - "version": "0.60.3", - "main": "dist/index.js", - "scripts": { - "build": "hermes build", - "dev": "nodemon --ignore dist/ --exec hermes-node ./src/index.js", - "run:prod": "cross-env NODE_ENV=production node ./dist/index.js" - }, - "shared": { - "classes/FileUpload": "src/shared-classes/FileUpload", - "classes/CacheService": "src/shared-classes/CacheService", - "classes/ComtyClient": "src/shared-classes/ComtyClient", - "classes/RedisClient": "src/shared-classes/RedisClient", - "classes/StorageClient": "src/shared-classes/StorageClient", - "classes/DbManager": "src/shared-classes/DbManager", - "classes/Errors": "src/shared-classes/Errors", - "classes/DbModels": "src/shared-classes/DbModels" - }, - "license": "MIT", - "dependencies": { - "@foxify/events": "^2.1.0", - "axios": "^1.4.0", - "bcrypt": "5.0.1", - "comty.js": "^0.58.2", - "connect-mongo": "^4.6.0", - "cors": "^2.8.5", - "dotenv": "^16.0.3", - "express": "^4.18.2", - "jsonwebtoken": "8.5.1", - "linebridge": "0.15.12", - "luxon": "^3.0.4", - "minio": "^7.0.32", - "moment": "2.29.4", - "moment-timezone": "0.5.37", - "mongoose": "^6.9.0", - "morgan": "^1.10.0", - "redis": "^4.6.6", - "socket.io": "^4.5.4" - }, - "devDependencies": { - "@ragestudio/hermes": "^0.1.0", - "cross-env": "^7.0.3", - "nodemon": "^2.0.15" - } -} \ No newline at end of file diff --git a/packages/chat_server/src/index.js b/packages/chat_server/src/index.js deleted file mode 100755 index 2c5a7eb1..00000000 --- a/packages/chat_server/src/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import path from "path" -global.FORCE_ENV = "prod" -require(path.resolve(process.cwd(), "../../shared/lib/api_wrapper")) \ No newline at end of file diff --git a/packages/comty.js/package.json b/packages/comty.js/package.json old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/handlers/measurePing.js b/packages/comty.js/src/handlers/measurePing.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/handlers/request.js b/packages/comty.js/src/handlers/request.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/helpers/handleAfterRequest.js b/packages/comty.js/src/helpers/handleAfterRequest.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/helpers/handleBeforeRequest.js b/packages/comty.js/src/helpers/handleBeforeRequest.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/helpers/handleRegenerationEvent.js b/packages/comty.js/src/helpers/handleRegenerationEvent.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/helpers/withSettings.js b/packages/comty.js/src/helpers/withSettings.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/helpers/withStorage.js b/packages/comty.js/src/helpers/withStorage.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/hooks/useRequest/index.js b/packages/comty.js/src/hooks/useRequest/index.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/index.js b/packages/comty.js/src/index.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/models/index.js b/packages/comty.js/src/models/index.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/models/music/index.js b/packages/comty.js/src/models/music/index.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/models/nfc/index.js b/packages/comty.js/src/models/nfc/index.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/models/search/index.js b/packages/comty.js/src/models/search/index.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/models/sync/services/tidal.js b/packages/comty.js/src/models/sync/services/tidal.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/models/widget/index.js b/packages/comty.js/src/models/widget/index.js old mode 100644 new mode 100755 diff --git a/packages/comty.js/src/remotes.js b/packages/comty.js/src/remotes.js old mode 100644 new mode 100755 diff --git a/packages/file_server/.env-example b/packages/file_server/.env-example deleted file mode 100755 index 0119f1bd..00000000 --- a/packages/file_server/.env-example +++ /dev/null @@ -1,20 +0,0 @@ -DB_HOSTNAME="" -DB_NAME="" -DB_USER="" -DB_PWD="" - -S3_ENDPOINT="" -S3_REGION="" -S3_PORT="" -S3_USE_SSL="" -S3_BUCKET="" -S3_ACCESS_KEY="" -S3_SECRET_KEY="" - -REDIS_HOST="" -REDIS_PORT="" -REDIS_USERNAME="" -REDIS_PASSWORD="" - -COMTY_ACCESS_KEY="" -COMTY_SECRET_KEY="" \ No newline at end of file diff --git a/packages/file_server/.gitignore b/packages/file_server/.gitignore deleted file mode 100644 index b124b166..00000000 --- a/packages/file_server/.gitignore +++ /dev/null @@ -1 +0,0 @@ -shared-classes \ No newline at end of file diff --git a/packages/file_server/.infisical.json b/packages/file_server/.infisical.json deleted file mode 100644 index fb927147..00000000 --- a/packages/file_server/.infisical.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "workspaceId": "64519574a8a691b55e8b361d", - "defaultEnvironment": "dev", - "gitBranchToEnvironmentMapping": { - "master": "prod" - } -} \ No newline at end of file diff --git a/packages/file_server/Dockerfile b/packages/file_server/Dockerfile deleted file mode 100755 index df051039..00000000 --- a/packages/file_server/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM node:16-bullseye-slim - -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - -RUN apt update -RUN apt install --no-install-recommends curl ffmpeg python yarn build-essential -y - -RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app - -WORKDIR /home/node/app -USER node - -EXPOSE 3050 - -COPY package.json ./ -COPY --chown=node:node . . - -RUN chmod -R 777 /home/node/app - -RUN export NODE_ENV=production - -RUN yarn global add cross-env -RUN yarn install --production -RUN yarn build - -CMD ["yarn", "run", "run:prod"] \ No newline at end of file diff --git a/packages/file_server/fixments/00_fix_audio_metadata.js b/packages/file_server/fixments/00_fix_audio_metadata.js deleted file mode 100644 index 4ffc91b6..00000000 --- a/packages/file_server/fixments/00_fix_audio_metadata.js +++ /dev/null @@ -1,148 +0,0 @@ -global.toBoolean = (value) => { - if (typeof value === "boolean") { - return value - } - - if (typeof value === "string") { - return value.toLowerCase() === "true" - } - - return false -} - -import DbManager from "../src/shared-classes/DbManager" -import StorageClient from "../src/shared-classes/StorageClient" - -import audioProcess from "../src/services/post-process/audio" - -import { Track } from "../../music_server/src/models" - -import axios from "axios" -import fs from "fs" -import path from "path" -import pMap from "p-map" - -const tmpPath = path.resolve(__dirname, ".tmp") - -let index = 0 -let tracksLength = 0 - -async function recalculateMetadata(track) { - console.log(`\n`) - console.time(`recalculation ${track._id}`) - console.log(`Recalculating metadata for ${track._id}`) - - // parse url https://domain/buket/file and fetch buket and file - const regex = new RegExp(`^https://(.*?)/(.*)$`) - - const match = regex.exec(track.source) - - const objectName = match[2].split("/").slice(1).join("/") - - const filePath = path.resolve(tmpPath, objectName) - - try { - if (!track.metadata) { - console.time(`fetching ${track._id}`) - // storage obj on memory - let file = await axios.get(track.source, { - responseType: "stream", - }) - - if (!fs.existsSync(path.dirname(filePath))) { - fs.mkdirSync(path.dirname(filePath), { recursive: true }) - } - - // write file to tmpPath - const fileWriter = fs.createWriteStream(filePath) - - file.data.pipe(fileWriter) - - await new Promise((resolve, reject) => { - fileWriter.on("finish", resolve) - fileWriter.on("error", reject) - }) - console.timeEnd(`fetching ${track._id}`) - - console.time(`processing ${track._id}`) - file = await audioProcess({ - filepath: filePath - }) - track.metadata = file.metadata - - if (!track.publisher) { - track.publisher = {} - } - await track.save() - await fs.promises.unlink(filePath) - - console.timeEnd(`processing ${track._id}`) - - console.log(`Updated metadata for ${track._id}`, track.metadata) - } else { - console.log(`Metadata already exists for ${track._id}, skipping...`) - } - } catch (error) { - console.error(error) - - if (fs.existsSync(filePath)) { - await fs.promises.unlink(filePath) - } - } - - index++ - - console.timeEnd(`recalculation ${track._id}`) - console.log(`Metadata done [${index}/${tracksLength}]`) -} - -async function main() { - console.time("fix audio metadata") - - const db = new DbManager() - const storage = StorageClient() - - await db.initialize() - await storage.initialize() - - console.log(`Finding tracks...`) - - console.time("finding tracks") - - let tracks = await Track.find({ - source: { - $exists: true, - }, - }) - - tracksLength = tracks.length - - console.timeEnd("finding tracks") - - console.log(`Found ${tracks.length} tracks.`) - - console.log(`Starting fix...\n`) - - if (!fs.existsSync(tmpPath)) { - fs.mkdirSync(tmpPath) - } - - await pMap(tracks, recalculateMetadata, { - concurrency: 3, - }) - - console.timeEnd("fix audio metadata") - console.log("Done!") - - process.on("exit", () => { - console.log("Exiting...") - fs.promises.rmdir(tmpPath, { recursive: true }) - }) - - process.exit(0) -} - -main().catch((error) => { - console.error(error) - process.exit(1) -}) \ No newline at end of file diff --git a/packages/file_server/package.json b/packages/file_server/package.json deleted file mode 100644 index 502c0f90..00000000 --- a/packages/file_server/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "@comty/file_server", - "version": "0.60.3", - "main": "dist/index.js", - "scripts": { - "build": "hermes build", - "dev": "cross-env NODE_ENV=development nodemon --ignore dist/ --exec hermes-node ./src/index.js", - "run:prod": "cross-env NODE_ENV=production node ./dist/index.js" - }, - "shared": { - "classes/FileUpload": "src/shared-classes/FileUpload", - "classes/CacheService": "src/shared-classes/CacheService", - "classes/ComtyClient": "src/shared-classes/ComtyClient", - "classes/RedisClient": "src/shared-classes/RedisClient", - "classes/StorageClient": "src/shared-classes/StorageClient", - "classes/DbManager": "src/shared-classes/DbManager", - "classes/Errors": "src/shared-classes/Errors", - "classes/DbModels": "src/shared-classes/DbModels" - }, - "license": "MIT", - "dependencies": { - "@foxify/events": "^2.1.0", - "@octokit/rest": "^19.0.7", - "axios": "^1.4.0", - "backblaze-b2": "^1.7.0", - "bcrypt": "^5.1.0", - "busboy": "^1.6.0", - "comty.js": "^0.58.2", - "connect-mongo": "^4.6.0", - "content-range": "^2.0.2", - "cors": "^2.8.5", - "dotenv": "^16.0.3", - "express": "^4.18.2", - "fluent-ffmpeg": "^2.1.2", - "hyper-express": "^6.5.9", - "jimp": "^0.22.8", - "jsonwebtoken": "^9.0.0", - "linebridge": "0.15.12", - "luxon": "^3.0.4", - "merge-files": "^0.1.2", - "mime-types": "^2.1.35", - "minio": "^7.0.32", - "moment": "^2.29.4", - "moment-timezone": "^0.5.40", - "mongoose": "^6.9.0", - "morgan": "^1.10.0", - "normalize-url": "^8.0.0", - "p-map": "4.0.0", - "p-queue": "^7.3.4", - "redis": "^4.6.6", - "split-chunk-merge": "^1.0.0" - }, - "devDependencies": { - "@ragestudio/hermes": "^0.1.0", - "chai": "^4.3.7", - "cross-env": "^7.0.3", - "mocha": "^10.2.0", - "nodemon": "^2.0.15" - } -} \ No newline at end of file diff --git a/packages/file_server/src/index.js b/packages/file_server/src/index.js deleted file mode 100644 index 9a830edd..00000000 --- a/packages/file_server/src/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import path from "path" -global.FORCE_ENV = "prod" - -require(path.resolve(process.cwd(), "../../shared/lib/api_wrapper")) \ No newline at end of file diff --git a/packages/marketplace_server/.env-example b/packages/marketplace_server/.env-example deleted file mode 100755 index 0119f1bd..00000000 --- a/packages/marketplace_server/.env-example +++ /dev/null @@ -1,20 +0,0 @@ -DB_HOSTNAME="" -DB_NAME="" -DB_USER="" -DB_PWD="" - -S3_ENDPOINT="" -S3_REGION="" -S3_PORT="" -S3_USE_SSL="" -S3_BUCKET="" -S3_ACCESS_KEY="" -S3_SECRET_KEY="" - -REDIS_HOST="" -REDIS_PORT="" -REDIS_USERNAME="" -REDIS_PASSWORD="" - -COMTY_ACCESS_KEY="" -COMTY_SECRET_KEY="" \ No newline at end of file diff --git a/packages/marketplace_server/.gitignore b/packages/marketplace_server/.gitignore deleted file mode 100644 index 0dd1cacd..00000000 --- a/packages/marketplace_server/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/static -shared-classes \ No newline at end of file diff --git a/packages/marketplace_server/.infisical.json b/packages/marketplace_server/.infisical.json deleted file mode 100644 index fb927147..00000000 --- a/packages/marketplace_server/.infisical.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "workspaceId": "64519574a8a691b55e8b361d", - "defaultEnvironment": "dev", - "gitBranchToEnvironmentMapping": { - "master": "prod" - } -} \ No newline at end of file diff --git a/packages/marketplace_server/Dockerfile b/packages/marketplace_server/Dockerfile deleted file mode 100755 index 07d0a231..00000000 --- a/packages/marketplace_server/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM node:16-bullseye-slim - -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - -RUN apt update -RUN apt install --no-install-recommends curl python yarn build-essential -y - -RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app - -# Copy comty.js to node_modules -WORKDIR /home/node/app -USER node - -EXPOSE 3040 - -COPY package.json ./ -COPY --chown=node:node . . - -RUN chmod -R 777 /home/node/app - -RUN export NODE_ENV=production - -RUN yarn global add cross-env -RUN yarn install --production -RUN yarn build - -CMD ["yarn", "run", "run:prod"] \ No newline at end of file diff --git a/packages/marketplace_server/package.json b/packages/marketplace_server/package.json deleted file mode 100644 index 548bece7..00000000 --- a/packages/marketplace_server/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "@comty/marketplace_server", - "version": "0.60.3", - "main": "dist/index.js", - "scripts": { - "build": "hermes build", - "dev": "cross-env NODE_ENV=development nodemon --ignore dist/ --exec hermes-node ./src/index.js", - "run:prod": "cross-env NODE_ENV=production node ./dist/index.js" - }, - "shared": { - "classes/FileUpload": "src/shared-classes/FileUpload", - "classes/CacheService": "src/shared-classes/CacheService", - "classes/ComtyClient": "src/shared-classes/ComtyClient", - "classes/RedisClient": "src/shared-classes/RedisClient", - "classes/StorageClient": "src/shared-classes/StorageClient", - "classes/DbManager": "src/shared-classes/DbManager", - "classes/Errors": "src/shared-classes/Errors", - "classes/DbModels": "src/shared-classes/DbModels" - }, - "license": "MIT", - "dependencies": { - "7zip-min": "^1.4.4", - "@foxify/events": "^2.1.0", - "@octokit/rest": "^19.0.7", - "axios": "^1.2.5", - "bcrypt": "^5.1.0", - "busboy": "^1.6.0", - "comty.js": "^0.58.2", - "connect-mongo": "^4.6.0", - "content-range": "^2.0.2", - "dotenv": "^16.0.3", - "form-data": "^4.0.0", - "formidable": "^2.1.1", - "hyper-express": "^6.5.9", - "jsonwebtoken": "^9.0.0", - "linebridge": "0.15.12", - "live-directory": "^3.0.3", - "luxon": "^3.2.1", - "merge-files": "^0.1.2", - "mime-types": "^2.1.35", - "minio": "^7.0.32", - "moment": "^2.29.4", - "moment-timezone": "^0.5.40", - "mongoose": "^6.9.0", - "normalize-url": "^8.0.0", - "p-map": "^6.0.0", - "p-queue": "^7.3.4", - "redis": "^4.6.6", - "sharp": "^0.31.3", - "split-chunk-merge": "^1.0.0", - "sucrase": "^3.32.0", - "uglify-js": "^3.17.4" - }, - "devDependencies": { - "@corenode/utils": "0.28.26", - "@ragestudio/hermes": "^0.1.0", - "chai": "^4.3.7", - "cross-env": "^7.0.3", - "mocha": "^10.2.0", - "nodemon": "^2.0.15" - } -} \ No newline at end of file diff --git a/packages/marketplace_server/src/index.js b/packages/marketplace_server/src/index.js deleted file mode 100644 index 9a830edd..00000000 --- a/packages/marketplace_server/src/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import path from "path" -global.FORCE_ENV = "prod" - -require(path.resolve(process.cwd(), "../../shared/lib/api_wrapper")) \ No newline at end of file diff --git a/packages/music_server/.env-example b/packages/music_server/.env-example deleted file mode 100755 index 0119f1bd..00000000 --- a/packages/music_server/.env-example +++ /dev/null @@ -1,20 +0,0 @@ -DB_HOSTNAME="" -DB_NAME="" -DB_USER="" -DB_PWD="" - -S3_ENDPOINT="" -S3_REGION="" -S3_PORT="" -S3_USE_SSL="" -S3_BUCKET="" -S3_ACCESS_KEY="" -S3_SECRET_KEY="" - -REDIS_HOST="" -REDIS_PORT="" -REDIS_USERNAME="" -REDIS_PASSWORD="" - -COMTY_ACCESS_KEY="" -COMTY_SECRET_KEY="" \ No newline at end of file diff --git a/packages/music_server/.gitignore b/packages/music_server/.gitignore deleted file mode 100644 index b124b166..00000000 --- a/packages/music_server/.gitignore +++ /dev/null @@ -1 +0,0 @@ -shared-classes \ No newline at end of file diff --git a/packages/music_server/.infisical.json b/packages/music_server/.infisical.json deleted file mode 100644 index fb927147..00000000 --- a/packages/music_server/.infisical.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "workspaceId": "64519574a8a691b55e8b361d", - "defaultEnvironment": "dev", - "gitBranchToEnvironmentMapping": { - "master": "prod" - } -} \ No newline at end of file diff --git a/packages/music_server/Dockerfile b/packages/music_server/Dockerfile deleted file mode 100755 index df051039..00000000 --- a/packages/music_server/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM node:16-bullseye-slim - -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - -RUN apt update -RUN apt install --no-install-recommends curl ffmpeg python yarn build-essential -y - -RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app - -WORKDIR /home/node/app -USER node - -EXPOSE 3050 - -COPY package.json ./ -COPY --chown=node:node . . - -RUN chmod -R 777 /home/node/app - -RUN export NODE_ENV=production - -RUN yarn global add cross-env -RUN yarn install --production -RUN yarn build - -CMD ["yarn", "run", "run:prod"] \ No newline at end of file diff --git a/packages/music_server/fixments/00_sanitize_tracks_metadata.js b/packages/music_server/fixments/00_sanitize_tracks_metadata.js deleted file mode 100644 index a9f65f8f..00000000 --- a/packages/music_server/fixments/00_sanitize_tracks_metadata.js +++ /dev/null @@ -1,40 +0,0 @@ -import DbManager from "../src/shared-classes/DbManager" -import { Track } from "../src/models" - -async function main() { - const db = new DbManager() - - await db.initialize() - - console.log(`Finding tracks...`) - - console.time("finding tracks") - const tracksWithMetadata = await Track.find({ - metadata: { - $exists: true, - }, - }) - console.timeEnd("finding tracks") - - console.log(`Found ${tracksWithMetadata.length} tracks with metadata.`) - - console.time("removing metadata") - - for (const track of tracksWithMetadata) { - console.time(`removing metadata for ${track._id}`) - await Track.findByIdAndUpdate(track._id, { - $unset: { - metadata: "", - }, - }) - console.timeEnd(`removing metadata for ${track._id}`) - } - - console.timeEnd("removing metadata") - - console.log("Done!") - - process.exit(0) -} - -main().catch(console.error) \ No newline at end of file diff --git a/packages/music_server/package.json b/packages/music_server/package.json deleted file mode 100644 index 840b7291..00000000 --- a/packages/music_server/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "@comty/music_server", - "version": "0.60.3", - "main": "dist/index.js", - "scripts": { - "build": "hermes build", - "dev": "nodemon --ignore dist/ --exec hermes-node ./src/index.js", - "run:prod": "cross-env NODE_ENV=production node ./dist/index.js" - }, - "shared": { - "classes/FileUpload": "src/shared-classes/FileUpload", - "classes/CacheService": "src/shared-classes/CacheService", - "classes/ComtyClient": "src/shared-classes/ComtyClient", - "classes/RedisClient": "src/shared-classes/RedisClient", - "classes/StorageClient": "src/shared-classes/StorageClient", - "classes/DbManager": "src/shared-classes/DbManager", - "classes/Errors": "src/shared-classes/Errors", - "classes/DbModels": "src/shared-classes/DbModels", - "classes/TidalAPI": "src/shared-classes/TidalAPI" - }, - "license": "MIT", - "dependencies": { - "@foxify/events": "^2.1.0", - "@ragestudio/hermes": "^0.1.0", - "axios": "^1.4.0", - "bcrypt": "5.0.1", - "comty.js": "^0.58.2", - "connect-mongo": "^4.6.0", - "corenode": "0.28.26", - "cors": "^2.8.5", - "dotenv": "^16.0.3", - "express": "^4.18.2", - "jsonwebtoken": "8.5.1", - "linebridge": "0.15.12", - "luxon": "^3.0.4", - "minio": "^7.0.32", - "moment": "2.29.4", - "moment-timezone": "0.5.37", - "mongoose": "^6.9.0", - "morgan": "^1.10.0", - "redis": "^4.6.6", - "socket.io": "^4.5.4" - }, - "devDependencies": { - "cross-env": "^7.0.3", - "nodemon": "^2.0.15" - } -} \ No newline at end of file diff --git a/packages/music_server/src/index.js b/packages/music_server/src/index.js deleted file mode 100755 index 9a830edd..00000000 --- a/packages/music_server/src/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import path from "path" -global.FORCE_ENV = "prod" - -require(path.resolve(process.cwd(), "../../shared/lib/api_wrapper")) \ No newline at end of file diff --git a/packages/server/README.md b/packages/server/README.md deleted file mode 100755 index 87f39eb8..00000000 --- a/packages/server/README.md +++ /dev/null @@ -1 +0,0 @@ -# @ragestudio/server diff --git a/packages/wrapper/src/ascii.js b/packages/server/ascii.js old mode 100644 new mode 100755 similarity index 100% rename from packages/wrapper/src/ascii.js rename to packages/server/ascii.js diff --git a/packages/server/boot b/packages/server/boot new file mode 100755 index 00000000..c5c817de --- /dev/null +++ b/packages/server/boot @@ -0,0 +1,157 @@ +#!/usr/bin/env node +require("sucrase/register") + +const path = require("path") +const Module = require("module") +const { Buffer } = require("buffer") +const { webcrypto: crypto } = require("crypto") +const { InfisicalClient } = require("@infisical/sdk") + +const moduleAlias = require("module-alias") + +// Override file execution arg +process.argv.splice(1, 1) +process.argv[1] = path.resolve(process.argv[1]) + +// Expose boot function to global +global.Boot = Boot +global.isProduction = process.env.NODE_ENV === "production" + +global["__root"] = path.resolve(process.cwd()) +global["__src"] = path.resolve(globalThis["__root"], path.dirname(process.argv[1])) + +global["aliases"] = { + "root": global["__root"], + "src": global["__src"], + + // expose shared resources + "@shared-utils": path.resolve(__dirname, "utils"), + "@shared-classes": path.resolve(__dirname, "classes"), + "@shared-lib": path.resolve(__dirname, "lib"), + + // expose internal resources + "@lib": path.resolve(global["__src"], "lib"), + "@middlewares": path.resolve(global["__src"], "middlewares"), + "@controllers": path.resolve(global["__src"], "controllers"), + "@config": path.resolve(global["__src"], "config"), + "@shared": path.resolve(global["__src"], "shared"), + "@classes": path.resolve(global["__src"], "classes"), + "@models": path.resolve(global["__src"], "models"), + "@services": path.resolve(global["__src"], "services"), + "@utils": path.resolve(global["__src"], "utils"), +} + +function registerBaseAliases(fromPath, customAliases = {}) { + if (typeof fromPath === "undefined") { + if (module.parent.filename.includes("dist")) { + fromPath = path.resolve(process.cwd(), "dist") + } else { + fromPath = path.resolve(process.cwd(), "src") + } + } + + moduleAlias.addAliases({ + ...customAliases, + "@controllers": path.resolve(fromPath, "controllers"), + "@middlewares": path.resolve(fromPath, "middlewares"), + "@models": path.resolve(fromPath, "models"), + "@classes": path.resolve(fromPath, "classes"), + "@lib": path.resolve(fromPath, "lib"), + "@utils": path.resolve(fromPath, "utils"), + }) +} + +function registerPatches() { + global.b64Decode = (data) => { + return Buffer.from(data, "base64").toString("utf-8") + } + global.b64Encode = (data) => { + return Buffer.from(data, "utf-8").toString("base64") + } + + global.nanoid = (t = 21) => crypto.getRandomValues(new Uint8Array(t)).reduce(((t, e) => t += (e &= 63) < 36 ? e.toString(36) : e < 62 ? (e - 26).toString(36).toUpperCase() : e > 62 ? "-" : "_"), ""); + + Array.prototype.updateFromObjectKeys = function (obj) { + this.forEach((value, index) => { + if (obj[value] !== undefined) { + this[index] = obj[value] + } + }) + + return this + } + + global.ToBoolean = (value) => { + if (typeof value === "boolean") { + return value + } + + if (typeof value === "string") { + return value.toLowerCase() === "true" + } + + return false + } +} + +function registerAliases() { + registerBaseAliases(global["__src"], global["aliases"]) +} + +async function injectEnvFromInfisical() { + const envMode = global.FORCE_ENV ?? global.isProduction ? "prod" : "dev" + + console.log(`🔑 Injecting env variables from INFISICAL in [${envMode}] mode...`) + + const client = new InfisicalClient({ + accessToken: process.env.INFISICAL_TOKEN, + }) + + const secrets = await client.listSecrets({ + environment: envMode, + path: process.env.INFISICAL_PATH ?? "/", + projectId: process.env.INFISICAL_PROJECT_ID ?? null, + includeImports: false, + }) + + //inject to process.env + secrets.forEach((secret) => { + if (!(process.env[secret.secretKey])) { + process.env[secret.secretKey] = secret.secretValue + } + }) +} + +async function Boot(main) { + if (!main) { + throw new Error("main class is not defined") + } + + if (process.env.INFISICAL_TOKEN) { + console.log(`INFISICAL_TOKEN found, injecting env variables from INFISICAL...`) + await injectEnvFromInfisical() + } + + const instance = new main() + + await instance.initialize() + + if (process.send) { + process.send({ + status: "ready" + }) + } + + return instance +} + +console.log(`Booting in [${global.isProduction ? "production" : "development"}] mode...`) + +// Apply patches +registerPatches() + +// Apply aliases +registerAliases() + +// execute main +Module.runMain() \ No newline at end of file diff --git a/packages/server/classes/CacheService/index.js b/packages/server/classes/CacheService/index.js new file mode 100755 index 00000000..429b39e3 --- /dev/null +++ b/packages/server/classes/CacheService/index.js @@ -0,0 +1,72 @@ +import fs from "fs" +import path from "path" + +export default class CacheService { + static deletionInterval = 1000 * 60 * 5 + + static cachePath = path.join(process.cwd(), ".cache") + + constructor(params = {}) { + this.params = params + + if (!fs.existsSync(CacheService.cachePath)) { + fs.mkdirSync(CacheService.cachePath, { recursive: true }) + } + } + + intervalMaps = new Map() + + checkDeletionFilepath(filepath) { + try { + const stats = fs.statSync(filepath) + + stats.atime = new Date(stats.atime) + + if (stats.atime.getTime() + CacheService.deletionInterval < Date.now()) { + fs.promises.unlink(filepath) + } else { + return false + } + + return true + + } catch (error) { + console.error(error) + + fs.promises.unlink(filepath) + + return true + } + } + + appendToDeletion(filepath) { + // create a interval of 5 minutes to delete the file + // check the last time the file was accessed and if it was accessed in the last 5 minutes + // reset the interval until the file is not accessed for 5 minutes and then delete it + try { + const createInterval = () => { + let interval = setInterval(async () => { + try { + await this.checkDeletionFilepath(filepath) + + this.intervalMaps.delete(filepath) + + if (!results) { + this.appendToDeletion(filepath) + } + } catch (error) { + return clearInterval(interval) + } + }) + + return interval + } + + this.intervalMaps.set(filepath, createInterval()) + } catch (error) { + console.error(error) + + return fs.promises.unlink(filepath) + } + } +} \ No newline at end of file diff --git a/packages/server/classes/ComtyClient/index.js b/packages/server/classes/ComtyClient/index.js new file mode 100755 index 00000000..0a8fbfdf --- /dev/null +++ b/packages/server/classes/ComtyClient/index.js @@ -0,0 +1,9 @@ +import createClient from "comty.js" + +export default (params = {}) => { + return createClient({ + ...params, + accessKey: process.env.COMTY_ACCESS_KEY, + privateKey: process.env.COMTY_PRIVATE_KEY, + }) +} \ No newline at end of file diff --git a/packages/server/classes/DbManager/index.js b/packages/server/classes/DbManager/index.js new file mode 100755 index 00000000..c8b9f2a1 --- /dev/null +++ b/packages/server/classes/DbManager/index.js @@ -0,0 +1,53 @@ +import mongoose from "mongoose" + +function getConnectionConfig(obj) { + const { DB_USER, DB_DRIVER, DB_NAME, DB_PWD, DB_HOSTNAME, DB_PORT, DB_AUTH_SOURCE } = obj + + let auth = [ + DB_DRIVER ?? "mongodb", + "://", + ] + + auth.push(DB_HOSTNAME ?? "localhost") + auth.push(`:${DB_PORT ?? "27017"}`) + + auth = auth.join("") + + const params = { + auth: {}, + dbName: DB_NAME, + user: DB_USER, + pass: DB_PWD, + } + + if (DB_AUTH_SOURCE) { + params.auth.authSource = DB_AUTH_SOURCE + } + + return [ + auth, + params, + ] +} + +export default class DBManager { + initialize = async (config) => { + console.log(`🔌 Connecting to DB [${process.env.DB_HOSTNAME}]...`) + + const dbConfig = getConnectionConfig(config ?? process.env) + + mongoose.set("strictQuery", false) + + const connection = await mongoose.connect(...dbConfig) + .catch((err) => { + console.log(`❌ Failed to connect to DB, retrying...\n`) + console.log(err) + + return false + }) + + if (connection) { + console.log(`✅ Connected to DB.`) + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/NFCTags/index.js b/packages/server/classes/DbModels/NFCTags/index.js new file mode 100755 index 00000000..d83c9e39 --- /dev/null +++ b/packages/server/classes/DbModels/NFCTags/index.js @@ -0,0 +1,37 @@ +export default { + name: "NFCTag", + collection: "nfc_tags", + schema: { + user_id: { + type: String, + required: true + }, + owner_id: { + type: String, + required: true + }, + serial: { + type: String, + required: true + }, + alias: { + type: String, + default: "My NFC Tag" + }, + active: { + type: Boolean, + default: true + }, + behavior: { + type: Object, + default: { + type: "url", + value: "https://comty.app" + } + }, + endpoint_url: { + type: String, + default: "https://comty.app/nfc/no_endpoint" + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/authorizedServerTokens/index.js b/packages/server/classes/DbModels/authorizedServerTokens/index.js new file mode 100755 index 00000000..b569fc49 --- /dev/null +++ b/packages/server/classes/DbModels/authorizedServerTokens/index.js @@ -0,0 +1,28 @@ +export default { + name: "authorizedServerTokens", + collection: "authorizedServerTokens", + schema: { + client_id: { + type: String, + required: true, + }, + token: { + type: String, + required: true, + }, + access: { + type: Array, + default: [], + }, + name: { + type: String, + }, + description: { + type: String, + }, + createdAt: { + type: Date, + default: Date.now, + }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/badge/index.js b/packages/server/classes/DbModels/badge/index.js new file mode 100755 index 00000000..ed62fb1e --- /dev/null +++ b/packages/server/classes/DbModels/badge/index.js @@ -0,0 +1,11 @@ +export default { + name: "Badge", + collection: "badges", + schema: { + name: { type: String, required: true }, + label: { type: String }, + description: { type: String }, + icon: { type: String }, + color: { type: String }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/comment/index.js b/packages/server/classes/DbModels/comment/index.js new file mode 100755 index 00000000..953687d4 --- /dev/null +++ b/packages/server/classes/DbModels/comment/index.js @@ -0,0 +1,10 @@ +export default { + name: "Comment", + collection: "comments", + schema: { + user_id: { type: String, required: true }, + parent_id: { type: String, required: true }, + message: { type: String, required: true }, + created_at: { type: Date, default: Date.now }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/config/index.js b/packages/server/classes/DbModels/config/index.js new file mode 100755 index 00000000..f17b67bd --- /dev/null +++ b/packages/server/classes/DbModels/config/index.js @@ -0,0 +1,15 @@ +export default { + name: "Config", + collection: "config", + schema: { + key: { + type: String, + required: true + }, + value: { + // type can be anything + type: Object, + required: true + }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/featuredEvent/index.js b/packages/server/classes/DbModels/featuredEvent/index.js new file mode 100755 index 00000000..af36c24f --- /dev/null +++ b/packages/server/classes/DbModels/featuredEvent/index.js @@ -0,0 +1,13 @@ +export default { + name: "FeaturedEvent", + collection: "featuredEvents", + schema: { + name: { type: String, required: true }, + category: { type: String }, + description: { type: String }, + dates: { type: Object }, + location: { type: String }, + announcement: { type: Object, required: true }, + expired: { type: Boolean, default: false } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/featuredPlaylist/index.js b/packages/server/classes/DbModels/featuredPlaylist/index.js new file mode 100755 index 00000000..48eacb7d --- /dev/null +++ b/packages/server/classes/DbModels/featuredPlaylist/index.js @@ -0,0 +1,12 @@ +export default { + name: "FeaturedPlaylist", + collection: "featuredPlaylists", + schema: { + title: { type: String, required: true }, + description: { type: String }, + cover_url: { type: String }, + enabled: { type: Boolean, default: true }, + genre: { type: String }, + playlist_id: { type: String, required: true }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/featuredWallpaper/index.js b/packages/server/classes/DbModels/featuredWallpaper/index.js new file mode 100755 index 00000000..74fe331e --- /dev/null +++ b/packages/server/classes/DbModels/featuredWallpaper/index.js @@ -0,0 +1,10 @@ +export default { + name: "FeaturedWallpaper", + collection: "featuredWallpapers", + schema: { + active: { type: Boolean, default: true }, + date: { type: Date, default: Date.now }, + url: { type: String, required: true }, + author: { type: String }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/index.js b/packages/server/classes/DbModels/index.js new file mode 100755 index 00000000..159b6d34 --- /dev/null +++ b/packages/server/classes/DbModels/index.js @@ -0,0 +1,23 @@ +import mongoose, { Schema } from "mongoose" +import fs from "fs" +import path from "path" + +function generateModels() { + let models = {} + + const dirs = fs.readdirSync(__dirname).filter(file => file !== "index.js") + + dirs.forEach((file) => { + const model = require(path.join(__dirname, file)).default + + if (mongoose.models[model.name]) { + return models[model.name] = mongoose.model(model.name) + } + + return models[model.name] = mongoose.model(model.name, new Schema(model.schema), model.collection) + }) + + return models +} + +module.exports = generateModels() \ No newline at end of file diff --git a/packages/server/classes/DbModels/playlist/index.js b/packages/server/classes/DbModels/playlist/index.js new file mode 100755 index 00000000..6b9a9cf9 --- /dev/null +++ b/packages/server/classes/DbModels/playlist/index.js @@ -0,0 +1,41 @@ +export default { + name: "Playlist", + collection: "playlists", + schema: { + user_id: { + type: String, + required: true + }, + title: { + type: String, + required: true + }, + description: { + type: String + }, + list: { + type: Object, + default: [], + required: true + }, + cover: { + type: String, + default: "https://storage.ragestudio.net/comty-static-assets/default_song.png" + }, + thumbnail: { + type: String, + default: "https://storage.ragestudio.net/comty-static-assets/default_song.png" + }, + created_at: { + type: Date, + required: true + }, + publisher: { + type: Object, + }, + public: { + type: Boolean, + default: true, + }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/post/index.js b/packages/server/classes/DbModels/post/index.js new file mode 100755 index 00000000..3db664b6 --- /dev/null +++ b/packages/server/classes/DbModels/post/index.js @@ -0,0 +1,13 @@ +export default { + name: "Post", + collection: "posts", + schema: { + user_id: { type: String, required: true }, + timestamp: { type: String, required: true }, + created_at: { type: Date, default: Date.now, required: true }, + message: { type: String }, + attachments: { type: Array, default: [] }, + flags: { type: Array, default: [] }, + reply_to: { type: String, default: null }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/postLike/index.js b/packages/server/classes/DbModels/postLike/index.js new file mode 100755 index 00000000..16c41044 --- /dev/null +++ b/packages/server/classes/DbModels/postLike/index.js @@ -0,0 +1,14 @@ +export default { + name: "PostLike", + collection: "post_likes", + schema: { + user_id: { + type: String, + required: true, + }, + post_id: { + type: String, + required: true, + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/regenerationToken/index.js b/packages/server/classes/DbModels/regenerationToken/index.js new file mode 100755 index 00000000..35ac7459 --- /dev/null +++ b/packages/server/classes/DbModels/regenerationToken/index.js @@ -0,0 +1,14 @@ +export default { + name: "RegenerationToken", + collection: "regenerationTokens", + schema: { + expiredToken: { + type: String, + required: true, + }, + refreshToken: { + type: String, + required: true, + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/release/index.js b/packages/server/classes/DbModels/release/index.js new file mode 100755 index 00000000..204165ff --- /dev/null +++ b/packages/server/classes/DbModels/release/index.js @@ -0,0 +1,38 @@ +export default { + name: "Release", + collection: "releases", + schema: { + user_id: { + type: String, + required: true + }, + title: { + type: String, + required: true + }, + type: { + type: String, + required: true, + }, + list: { + type: Object, + default: [], + required: true + }, + cover: { + type: String, + default: "https://storage.ragestudio.net/comty-static-assets/default_song.png" + }, + created_at: { + type: Date, + required: true + }, + publisher: { + type: Object, + }, + public: { + type: Boolean, + default: true, + }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/role/index.js b/packages/server/classes/DbModels/role/index.js new file mode 100755 index 00000000..917c8ff9 --- /dev/null +++ b/packages/server/classes/DbModels/role/index.js @@ -0,0 +1,15 @@ +export default { + name: "Role", + collection: "roles", + schema: { + name: { + type: String, + }, + description: { + type: String, + }, + apply: { + type: Object, + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/savedPost/index.js b/packages/server/classes/DbModels/savedPost/index.js new file mode 100755 index 00000000..05634f5b --- /dev/null +++ b/packages/server/classes/DbModels/savedPost/index.js @@ -0,0 +1,18 @@ +export default { + name: "SavedPost", + collection: "savedPosts", + schema: { + post_id: { + type: "string", + required: true, + }, + user_id: { + type: "string", + required: true, + }, + saved_at: { + type: "date", + default: Date.now, + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/serverLimit/index.js b/packages/server/classes/DbModels/serverLimit/index.js new file mode 100755 index 00000000..44c27697 --- /dev/null +++ b/packages/server/classes/DbModels/serverLimit/index.js @@ -0,0 +1,24 @@ +import { Schema } from "mongoose" + +export default { + name: "ServerLimit", + collection: "serverLimits", + schema: { + key: { + type: String, + required: true, + }, + value: { + type: Schema.Types.Mixed, + required: true, + }, + active: { + type: Boolean, + default: true, + }, + data: { + type: Object, + required: false, + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/session/index.js b/packages/server/classes/DbModels/session/index.js new file mode 100755 index 00000000..39858a03 --- /dev/null +++ b/packages/server/classes/DbModels/session/index.js @@ -0,0 +1,14 @@ +export default { + name: "Session", + collection: "sessions", + schema: { + session_uuid: { type: String, required: true }, + token: { type: String, required: true }, + username: { type: String, required: true }, + user_id: { type: String, required: true }, + date: { type: Number, default: 0 }, + location: { type: String, default: "Unknown" }, + ip_address: { type: String, default: "Unknown" }, + client: { type: String, default: "Unknown" }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/streamingCategory/index.js b/packages/server/classes/DbModels/streamingCategory/index.js new file mode 100755 index 00000000..95b90ad4 --- /dev/null +++ b/packages/server/classes/DbModels/streamingCategory/index.js @@ -0,0 +1,14 @@ +export default { + name: "StreamingCategory", + collection: "streamingCategories", + schema: { + key: { + type: String, + required: true, + }, + label: { + type: String, + required: true, + }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/streamingProfile/index.js b/packages/server/classes/DbModels/streamingProfile/index.js new file mode 100755 index 00000000..1332700c --- /dev/null +++ b/packages/server/classes/DbModels/streamingProfile/index.js @@ -0,0 +1,37 @@ +export default { + name: "StreamingProfile", + collection: "streamingProfiles", + schema: { + user_id: { + type: String, + required: true, + }, + profile_name: { + type: String, + required: true, + }, + stream_key: { + type: String, + required: true, + select: false, + }, + info: { + type: Object, + default: { + title: "Untitled", + description: "No description", + category: "other", + thumbnail: null, + } + }, + options: { + type: Object, + default: { + connection_protected: true, + private: false, + chatEnabled: true, + drvEnabled: false, + } + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/syncEntry/index.js b/packages/server/classes/DbModels/syncEntry/index.js new file mode 100755 index 00000000..c8b4684d --- /dev/null +++ b/packages/server/classes/DbModels/syncEntry/index.js @@ -0,0 +1,18 @@ +export default { + name: "SyncEntry", + collection: "syncEntries", + schema: { + user_id: { + type: "string", + required: true, + }, + key: { + type: "string", + required: true, + }, + value: { + type: "string", + required: true, + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/track/index.js b/packages/server/classes/DbModels/track/index.js new file mode 100755 index 00000000..576ddc3c --- /dev/null +++ b/packages/server/classes/DbModels/track/index.js @@ -0,0 +1,53 @@ +export default { + name: "Track", + collection: "tracks", + schema: { + title: { + type: String, + required: true, + }, + album: { + type: String, + }, + artist: { + type: String, + }, + source: { + type: String, + required: true, + }, + metadata: { + type: Object, + }, + explicit: { + type: Boolean, + default: false, + }, + public: { + type: Boolean, + default: true, + }, + cover: { + type: String, + default: "https://storage.ragestudio.net/comty-static-assets/default_song.png" + }, + thumbnail: { + type: String, + default: "https://storage.ragestudio.net/comty-static-assets/default_song.png" + }, + videoCanvas: { + type: String, + }, + spotifyId: { + type: String, + }, + lyricsEnabled: { + type: Boolean, + default: true, + }, + publisher: { + type: Object, + required: true, + }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/track_like/index.js b/packages/server/classes/DbModels/track_like/index.js new file mode 100755 index 00000000..9f256563 --- /dev/null +++ b/packages/server/classes/DbModels/track_like/index.js @@ -0,0 +1,17 @@ +export default { + name: "TrackLike", + collection: "tracks_likes", + schema: { + user_id: { + type: String, + required: true, + }, + track_id: { + type: String, + required: true, + }, + created_at: { + type: Date, + } + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/user/index.js b/packages/server/classes/DbModels/user/index.js new file mode 100755 index 00000000..f9efdfba --- /dev/null +++ b/packages/server/classes/DbModels/user/index.js @@ -0,0 +1,21 @@ +export default { + name: "User", + collection: "accounts", + schema: { + username: { type: String, required: true }, + password: { type: String, required: true, select: false }, + email: { type: String, required: true }, + description: { type: String, default: null }, + public_name: { type: String, default: null }, + fullName: { type: String, default: null }, + cover: { type: String, default: null }, + avatar: { type: String, default: null }, + roles: { type: Array, default: [] }, + verified: { type: Boolean, default: false }, + birthday: { type: Date, default: null }, + badges: { type: Array, default: [] }, + links: { type: Array, default: [] }, + createdAt: { type: String }, + created_at: { type: String }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/userFollow/index.js b/packages/server/classes/DbModels/userFollow/index.js new file mode 100755 index 00000000..7bd63e77 --- /dev/null +++ b/packages/server/classes/DbModels/userFollow/index.js @@ -0,0 +1,8 @@ +export default { + name: "UserFollow", + collection: "follows", + schema: { + user_id: { type: String, required: true }, + to: { type: String, required: true }, + } +} \ No newline at end of file diff --git a/packages/server/classes/DbModels/widget/index.js b/packages/server/classes/DbModels/widget/index.js new file mode 100755 index 00000000..283d8caf --- /dev/null +++ b/packages/server/classes/DbModels/widget/index.js @@ -0,0 +1,24 @@ +export default { + name: "Widget", + collection: "widgets", + schema: { + manifest: { + type: Object, + required: true, + }, + user_id: { + type: String, + required: true, + }, + public: { + type: Boolean, + default: true, + }, + created_at: { + type: Date, + }, + updated_at: { + type: Date, + }, + } +} \ No newline at end of file diff --git a/packages/server/classes/Errors/index.js b/packages/server/classes/Errors/index.js new file mode 100755 index 00000000..bc95a60e --- /dev/null +++ b/packages/server/classes/Errors/index.js @@ -0,0 +1,84 @@ +export class AuthorizationError extends Error { + constructor(req, res, message = "This endpoint requires authorization") { + super(message) + this.name = "AuthorizationError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 401 + } +} + +export class NotFoundError extends Error { + constructor(req, res, message = "Not found") { + super(message) + this.name = "NotFoundError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 404 + } +} + +export class PermissionError extends Error { + constructor(req, res, message = "You don't have permission to do this") { + super(message) + this.name = "PermissionError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 403 + } +} + +export class BadRequestError extends Error { + constructor(req, res, message = "Bad request") { + super(message) + this.name = "BadRequestError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 400 + } +} + +export class InternalServerError extends Error { + constructor(req, res, message = "Internal server error") { + super(message) + this.name = "InternalServerError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 500 + } +} \ No newline at end of file diff --git a/packages/server/classes/FileUpload/index.js b/packages/server/classes/FileUpload/index.js new file mode 100755 index 00000000..6a609c2f --- /dev/null +++ b/packages/server/classes/FileUpload/index.js @@ -0,0 +1,260 @@ +// Orginal forked from: Buzut/huge-uploader-nodejs +// Copyright (c) 2018, Quentin Busuttil All rights reserved. + +import fs from "node:fs" +import path from "node:path" +import { promisify } from "node:util" +import mimetypes from "mime-types" +import crypto from "node:crypto" + +import Busboy from "busboy" + +export function getFileHash(file) { + return new Promise((resolve, reject) => { + const hash = crypto.createHash("sha256") + + file.on("data", (chunk) => hash.update(chunk)) + + file.on("end", () => resolve(hash.digest("hex"))) + + file.on("error", reject) + }) +} + +export function checkHeaders(headers) { + if ( + !headers["uploader-chunk-number"] || + !headers["uploader-chunks-total"] || + !headers["uploader-original-name"] || + !headers["uploader-file-id"] || + !headers["uploader-chunks-total"].match(/^[0-9]+$/) || + !headers["uploader-chunk-number"].match(/^[0-9]+$/) + ) { + return false + } + + return true +} + +export function checkTotalSize(maxFileSize, maxChunkSize, totalChunks) { + if (maxChunkSize * totalChunks > maxFileSize) { + return false + } + + return true +} + +export function cleanChunks(dirPath) { + fs.readdir(dirPath, (err, files) => { + let filesLength = files.length + + files.forEach((file) => { + fs.unlink(path.join(dirPath, file), () => { + if (--filesLength === 0) fs.rmdir(dirPath, () => { }) // cb does nothing but required + }) + }) + }) +} + +export function createAssembleChunksPromise({ + tmpDir, + headers, + useDate, +}) { + const asyncReadFile = promisify(fs.readFile) + const asyncAppendFile = promisify(fs.appendFile) + + const originalMimeType = mimetypes.lookup(headers["uploader-original-name"]) + const originalExtension = mimetypes.extension(originalMimeType) + + const totalChunks = +headers["uploader-chunks-total"] + + const fileId = headers["uploader-file-id"] + const workPath = path.join(tmpDir, fileId) + const chunksPath = path.resolve(workPath, "chunks") + const assembledFilepath = path.join(workPath, `assembled.${originalExtension}`) + + let chunkCount = 0 + let finalFilepath = null + + return () => { + return new Promise((resolve, reject) => { + const onEnd = async () => { + try { + const hash = await getFileHash(fs.createReadStream(assembledFilepath)) + + if (useDate) { + finalFilepath = path.resolve(workPath, `${hash}_${Date.now()}.${originalExtension}`) + } else { + finalFilepath = path.resolve(workPath, `${hash}.${originalExtension}`) + } + + fs.renameSync(assembledFilepath, finalFilepath) + + cleanChunks(chunksPath) + + return resolve({ + filename: headers["uploader-original-name"], + filepath: finalFilepath, + cachePath: workPath, + hash, + mimetype: originalMimeType, + extension: originalExtension, + }) + } catch (error) { + return reject(error) + } + } + + const pipeChunk = () => { + asyncReadFile(path.join(chunksPath, chunkCount.toString())) + .then((chunk) => asyncAppendFile(assembledFilepath, chunk)) + .then(() => { + // 0 indexed files = length - 1, so increment before comparison + if (totalChunks > ++chunkCount) { + return pipeChunk(chunkCount) + } + + return onEnd() + }) + .catch(reject) + } + + pipeChunk() + }) + } +} + +export function mkdirIfDoesntExist(dirPath, callback) { + if (!fs.existsSync(dirPath)) { + fs.mkdir(dirPath, { recursive: true }, callback) + } +} + +export function handleFile(tmpDir, headers, fileStream) { + const dirPath = path.join(tmpDir, headers["uploader-file-id"]) + const chunksPath = path.join(dirPath, "chunks") + const chunkPath = path.join(chunksPath, headers["uploader-chunk-number"]) + const useDate = headers["uploader-use-date"] === "true" + const chunkCount = +headers["uploader-chunk-number"] + const totalChunks = +headers["uploader-chunks-total"] + + let error + let assembleChunksPromise + let finished = false + let writeStream + + const writeFile = () => { + writeStream = fs.createWriteStream(chunkPath) + + writeStream.on("error", (err) => { + error = err + fileStream.resume() + }) + + writeStream.on("close", () => { + finished = true + + // if all is uploaded + if (chunkCount === totalChunks - 1) { + assembleChunksPromise = createAssembleChunksPromise({ + tmpDir, + headers, + useDate, + }) + } + }) + + fileStream.pipe(writeStream) + } + + // make sure chunk is in range + if (chunkCount < 0 || chunkCount >= totalChunks) { + error = new Error("Chunk is out of range") + fileStream.resume() + } + + else if (chunkCount === 0) { + // create file upload dir if it's first chunk + mkdirIfDoesntExist(chunksPath, (err) => { + if (err) { + error = err + fileStream.resume() + } + + else writeFile() + }) + } + + else { + // make sure dir exists if it's not first chunk + fs.stat(dirPath, (err) => { + if (err) { + error = new Error("Upload has expired") + fileStream.resume() + } + + else writeFile() + }) + } + + return (callback) => { + if (finished && !error) callback(null, assembleChunksPromise) + else if (error) callback(error) + + else { + writeStream.on("error", callback) + writeStream.on("close", () => callback(null, assembleChunksPromise)) + } + } +} + +export function uploadFile(req, tmpDir, maxFileSize, maxChunkSize) { + return new Promise((resolve, reject) => { + if (!checkHeaders(req.headers)) { + reject(new Error("Missing header(s)")) + return + } + + if (!checkTotalSize(maxFileSize, req.headers["uploader-chunks-total"])) { + reject(new Error("File is above size limit")) + return + } + + try { + let limitReached = false + let getFileStatus + + const busboy = Busboy({ headers: req.headers, limits: { files: 1, fileSize: maxChunkSize * 1000 * 1000 } }) + + busboy.on("file", (fieldname, fileStream) => { + fileStream.on("limit", () => { + limitReached = true + fileStream.resume() + }) + + getFileStatus = handleFile(tmpDir, req.headers, fileStream) + }) + + busboy.on("close", () => { + if (limitReached) { + reject(new Error("Chunk is above size limit")) + return + } + + getFileStatus((fileErr, assembleChunksF) => { + if (fileErr) reject(fileErr) + else resolve(assembleChunksF) + }) + }) + + req.pipe(busboy) + } + + catch (err) { + reject(err) + } + }) +} + +export default uploadFile \ No newline at end of file diff --git a/packages/server/classes/RedisClient/index.js b/packages/server/classes/RedisClient/index.js new file mode 100755 index 00000000..d231bc68 --- /dev/null +++ b/packages/server/classes/RedisClient/index.js @@ -0,0 +1,76 @@ +import Redis from "ioredis" + +function composeURL({ + host, + port, + username, + password, +} = {}) { + let url = "redis://" + + if (username && password) { + url += username + ":" + password + "@" + } + + url += host ?? "localhost" + + if (port) { + url += ":" + port + } + + return url +} + +export default () => { + let { REDIS_HOST, REDIS_PORT, REDIS_NO_AUTH, REDIS_AUTH, REDIS_DB } = process.env + + REDIS_NO_AUTH = ToBoolean(REDIS_NO_AUTH) + + let clientOptions = { + host: REDIS_HOST, + port: REDIS_PORT, + lazyConnect: true, + autoConnect: false + } + + if (!REDIS_NO_AUTH) { + if (REDIS_AUTH) { + const [user, password] = REDIS_AUTH.split(":") + + clientOptions.username = user + clientOptions.password = password + } + } else { + console.log("⚠️ Redis auth is disabled") + } + + if (REDIS_DB) { + clientOptions.db = REDIS_DB + } + + clientOptions = composeURL(clientOptions) + + let client = {} + + client.initialize = async () => { + console.log(`🔌 Connecting to Redis client [${REDIS_HOST}]`) + + client = new Redis(clientOptions) + + client.on("error", (error) => { + console.error("❌ Redis client error:", error) + }) + + client.on("connect", () => { + console.log(`✅ Redis client connected [${process.env.REDIS_HOST}]`) + }) + + client.on("reconnecting", () => { + console.log("🔄 Redis client reconnecting...") + }) + + return client + } + + return client +} \ No newline at end of file diff --git a/packages/server/classes/SecureSyncEntry/index.js b/packages/server/classes/SecureSyncEntry/index.js new file mode 100755 index 00000000..d0ec7734 --- /dev/null +++ b/packages/server/classes/SecureSyncEntry/index.js @@ -0,0 +1,134 @@ +import { SyncEntry } from "@shared-classes/DbModels" + +import crypto from "crypto" + +export default class SecureSyncEntry { + static get encrytionAlgorithm() { + return "aes-256-cbc" + } + + static async set(user_id, key, value) { + if (!user_id) { + throw new Error("Missing user_id") + } + + if (!key) { + throw new Error("Missing key") + } + + if (!value) { + throw new Error("Missing value") + } + + let entry = await SyncEntry.findOne({ + user_id, + key, + }).catch(() => null) + + const encryptionKey = Buffer.from(process.env.SYNC_ENCRIPT_SECRET, "hex") + const iv = crypto.randomBytes(16) + + const cipher = crypto.createCipheriv(SecureSyncEntry.encrytionAlgorithm, encryptionKey, iv) + + let encrypted + + try { + encrypted = cipher.update(value) + } + catch (error) { + console.error(error) + } + + encrypted = Buffer.concat([encrypted, cipher.final()]) + + if (entry) { + entry.value = iv.toString("hex") + ":" + encrypted.toString("hex") + + await entry.save() + + return entry + } + + entry = new SyncEntry({ + user_id, + key, + value: iv.toString("hex") + ":" + encrypted.toString("hex"), + }) + + await entry.save() + + return entry + } + + static async get(user_id, key) { + if (!user_id) { + throw new Error("Missing user_id") + } + + if (!key) { + throw new Error("Missing key") + } + + const entry = await SyncEntry.findOne({ + user_id, + key, + }).catch(() => null) + + if (!entry) { + return null + } + + const encryptionKey = Buffer.from(process.env.SYNC_ENCRIPT_SECRET, "hex") + + const iv = Buffer.from(entry.value.split(":")[0], "hex") + const encryptedText = Buffer.from(entry.value.split(":")[1], "hex") + + const decipher = crypto.createDecipheriv(SecureSyncEntry.encrytionAlgorithm, encryptionKey, iv) + + let decrypted = decipher.update(encryptedText) + + decrypted = Buffer.concat([decrypted, decipher.final()]) + + return decrypted.toString() + } + + static async delete(user_id, key) { + if (!user_id) { + throw new Error("Missing user_id") + } + + if (!key) { + throw new Error("Missing key") + } + + const entry = await SyncEntry.findOne({ + user_id, + key, + }).catch(() => null) + + if (!entry) { + return null + } + + await entry.delete() + + return entry + } + + static async has(user_id, key) { + if (!user_id) { + throw new Error("Missing user_id") + } + + if (!key) { + throw new Error("Missing key") + } + + const entry = await SyncEntry.findOne({ + user_id, + key, + }).catch(() => null) + + return !!entry + } +} \ No newline at end of file diff --git a/packages/server/classes/StorageClient/index.js b/packages/server/classes/StorageClient/index.js new file mode 100755 index 00000000..9d350cbd --- /dev/null +++ b/packages/server/classes/StorageClient/index.js @@ -0,0 +1,97 @@ +const Minio = require("minio") +import path from "path" + +export const generateDefaultBucketPolicy = (payload) => { + const { bucketName } = payload + + if (!bucketName) { + throw new Error("bucketName is required") + } + + return { + Version: "2012-10-17", + Statement: [ + { + Action: [ + "s3:GetObject" + ], + Effect: "Allow", + Principal: { + AWS: [ + "*" + ] + }, + Resource: [ + `arn:aws:s3:::${bucketName}/*` + ], + Sid: "" + } + ] + } +} + +export class StorageClient extends Minio.Client { + constructor(options) { + super(options) + + this.defaultBucket = String(options.defaultBucket) + this.defaultRegion = String(options.defaultRegion) + } + + composeRemoteURL = (key) => { + const _path = path.join(this.defaultBucket, key) + + return `${this.protocol}//${this.host}:${this.port}/${_path}` + } + + setDefaultBucketPolicy = async (bucketName) => { + const policy = generateDefaultBucketPolicy({ bucketName }) + + return this.setBucketPolicy(bucketName, JSON.stringify(policy)) + } + + initialize = async () => { + console.log("🔌 Checking if storage client have default bucket...") + + // check connection with s3 + const bucketExists = await this.bucketExists(this.defaultBucket).catch(() => { + return false + }) + + if (!bucketExists) { + console.warn("🪣 Default bucket not exists! Creating new bucket...") + + await this.makeBucket(this.defaultBucket, "s3") + + // set default bucket policy + await this.setDefaultBucketPolicy(this.defaultBucket) + } + + // check if default bucket policy exists + const bucketPolicy = await this.getBucketPolicy(this.defaultBucket).catch(() => { + return null + }) + + if (!bucketPolicy) { + // set default bucket policy + await this.setDefaultBucketPolicy(this.defaultBucket) + } + + console.log("✅ Storage client is ready.") + } +} + +export const createStorageClientInstance = (options) => { + return new StorageClient({ + endPoint: process.env.S3_ENDPOINT, + port: Number(process.env.S3_PORT), + useSSL: ToBoolean(process.env.S3_USE_SSL), + accessKey: process.env.S3_ACCESS_KEY, + secretKey: process.env.S3_SECRET_KEY, + defaultBucket: process.env.S3_BUCKET, + defaultRegion: process.env.S3_REGION, + ...options, + }) +} + +export default createStorageClientInstance \ No newline at end of file diff --git a/packages/server/classes/TidalAPI/index.js b/packages/server/classes/TidalAPI/index.js new file mode 100755 index 00000000..53975536 --- /dev/null +++ b/packages/server/classes/TidalAPI/index.js @@ -0,0 +1,480 @@ +import axios from "axios" +import qs from "qs" + +const TIDAL_CLIENT_ID = process.env.TIDAL_CLIENT_ID +const TIDAL_CLIENT_SECRET = process.env.TIDAL_CLIENT_SECRET + +function tranformTrackData(data = {}) { + // TODO: Support Track remixes & versions + data._id = data.id + + const coverUID = data.album.cover.replace(/-/g, "/") + + data.cover = `https://resources.tidal.com/images/${coverUID}/1080x1080.jpg` + + data.artist = data.artists.map(artist => artist.name).join(", ") + + data.metadata = { + title: data.title, + artists: data.artists.map(artist => artist.name).join(", "), + artist: data.artists.map(artist => artist.name).join(", "), + album: data.album.title, + duration: data.duration, + } + + data.service = "tidal" + + return data +} + +export default class TidalAPI { + static API_V1 = "https://api.tidal.com/v1" + static API_V2 = "https://api.tidal.com/v2" + + static API_USERS = "https://api.tidal.com/v1/users" + + static async checkAuthStatus(device_code) { + const data = { + client_id: TIDAL_CLIENT_ID, + device_code: device_code, + grant_type: "urn:ietf:params:oauth:grant-type:device_code", + scope: "r_usr+w_usr+w_sub", + } + + const response = await axios({ + method: "POST", + url: "https://auth.tidal.com/v1/oauth2/token", + params: data, + auth: { + username: TIDAL_CLIENT_ID, + password: TIDAL_CLIENT_SECRET, + }, + }).catch(err => { + return false + }) + + if (!response) { + return false + } + + return response.data + } + + static async getAuthUrl() { + let data = { + client_id: TIDAL_CLIENT_ID, + scope: "r_usr+w_usr+w_sub", + } + + const response = await axios({ + method: "POST", + url: "https://auth.tidal.com/v1/oauth2/device_authorization", + params: data, + }) + + return { + url: "https://" + response.data.verificationUri + "/" + response.data.userCode, + device_code: response.data.deviceCode, + expires_in: response.data.expiresIn, + } + } + + static async getUserData({ access_token, user_id, country }) { + const url = `https://api.tidal.com/v1/users/${user_id}?countryCode=${country}` + + const response = await axios({ + method: "GET", + url, + headers: { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + }, + }) + + return response.data + } + + static async getTrackPlaybackUrl({ track_id, quality, access_token, country }) { + let params = { + countryCode: country ?? "US", + audioquality: quality ?? "LOSSLESS", + playbackmode: "STREAM", + assetpresentation: "FULL", + } + + let response = await axios({ + method: "GET", + url: `https://api.tidal.com/v1/tracks/${track_id}/playbackinfopostpaywall`, + params: params, + headers: { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + }, + }) + + let decodedManifest = JSON.parse(global.b64Decode(response.data.manifest)) + + decodedManifest.url = decodedManifest.urls[0] + + return { + metadata: { + trackId: track_id, + audioMode: response.data.audioMode, + audioQuality: response.data.audioQuality, + bitDepth: response.data.bitDepth, + bitRate: response.data.bitRate, + mimeType: response.data.manifestMimeType, + }, + ...decodedManifest, + } + } + static async getTrackMetadata({ track_id, access_token, country }) { + const response = await axios({ + method: "GET", + url: `https://api.tidal.com/v1/tracks/${track_id}`, + params: { + countryCode: country, + }, + headers: { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + }, + }) + + return response.data + } + + static async getTrackManifest({ track_id, quality, access_token, country }) { + const playback = await TidalAPI.getTrackPlaybackUrl({ + track_id, + quality, + access_token, + country, + }) + + const metadata = await TidalAPI.getTrackMetadata({ + track_id, + access_token, + country, + }) + + return { + playback, + metadata, + } + } + + static async search({ query, type = "all" }) { + let url = `https://api.tidal.com/v1/search` + + switch (type) { + case "all": + url = `https://api.tidal.com/v1/search` + break + case "playlists": + url = `https://api.tidal.com/v1/search/playlists` + break + case "artists": + url = `https://api.tidal.com/v1/search/artists` + break + case "albums": + url = `https://api.tidal.com/v1/search/albums` + break + case "tracks": + url = `https://api.tidal.com/v1/search/tracks` + break + } + + const response = await axios({ + method: "GET", + url: url, + params: { + query: query, + countryCode: "AZ", + }, + headers: { + Origin: "http://listen.tidal.com", + "x-tidal-token": TIDAL_CLIENT_ID, + }, + }) + + return response.data.tracks.items.map(item => { + item = tranformTrackData(item) + + return item + }) + } + + /** + * Retrieves favorite tracks for a user. + * + * @param {Object} options - The options for retrieving favorite tracks. + * @param {number} options.user_id - The user ID. + * @param {string} options.country - The country code. + * @param {string} options.access_token - The access token. + * @param {number} [options.limit=100] - The maximum number of tracks to retrieve. + * @param {number} [options.offset=0] - The offset for pagination. + * @return {Object} The response object containing the total length and tracks. + */ + static async getFavoriteTracks({ + user_id, + access_token, + country, + limit = 100, + offset = 0, + order = "DATE", + orderDirection = "DESC", + }) { + const response = await axios({ + url: `${TidalAPI.API_USERS}/${user_id}/favorites/tracks`, + method: "GET", + headers: { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + }, + params: { + countryCode: country, + order, + orderDirection, + limit, + offset, + }, + }) + + response.data.items = response.data.items.map(item => { + item.item = tranformTrackData(item.item) + + item.item.liked_at = new Date(item.created).getTime() + item.item.liked = true + item.item._computed = true + + return item.item + }) + + return { + total_length: response.data.totalNumberOfItems, + tracks: response.data.items, + } + } + + /** + * Retrieves self favorite playlists based on specified parameters. + * + * @param {Object} options - The options object. + * @param {string} options.country - The country code. + * @param {string} options.access_token - The access token for authentication. + * @param {number} [options.limit=100] - The maximum number of playlists to retrieve. + * @param {number} [options.offset=0] - The offset for pagination. + * @param {string} [options.order="DATE"] - The field to order the playlists by. + * @param {string} [options.orderDirection="DESC"] - The direction to order the playlists in. + * @return {Object} - An object containing the total length and items of the playlists. + */ + static async getFavoritePlaylists({ + country, + access_token, + limit = 100, + offset = 0, + order = "DATE", + orderDirection = "DESC", + }) { + const params = { + folderId: "root", + deviceType: "BROWSER", + countryCode: country, + offset, + limit, + order, + orderDirection, + } + + let response = await axios({ + url: `${TidalAPI.API_V2}/my-collection/playlists/folders`, + method: "GET", + headers: { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + Server: "envoy", + }, + params: params, + }) + + response.data.items = response.data.items.map(item => { + item.data._id = item.data.uuid + item.data.addedAt = item.addedAt + item.data.created_at = item.addedAt + + item.data.service = "tidal" + + const coverUID = item.data.squareImage.replace(/-/g, "/") + item.data.cover = `https://resources.tidal.com/images/${coverUID}/1080x1080.jpg` + + return item.data + }) + + return { + total_length: response.data.totalNumberOfItems, + items: response.data.items, + } + } + + /** + * Retrieves playlist items based on the provided parameters. + * + * @param {Object} options - The options for retrieving playlist items. + * @param {string} options.uuid - The UUID of the playlist. + * @param {number} options.limit - The maximum number of items to retrieve. + * @param {number} options.offset - The offset of items to start retrieving from. + * @param {string} options.country - The country code for retrieving items. + * @param {string} options.access_token - The access token for authentication. + * @return {Object} An object containing the total length and items of the playlist. + */ + static async getPlaylistItems({ + uuid, + limit, + offset, + + country, + access_token, + }) { + const params = { + limit, + offset, + countryCode: country, + } + + let response = await axios({ + url: `${TidalAPI.API_V1}/playlists/${uuid}/items`, + method: "GET", + headers: { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + Server: "envoy", + }, + params: params, + }) + + response.data.items = response.data.items.map((item) => { + item = tranformTrackData(item.item) + + return item + }) + + return { + total_length: response.data.totalNumberOfItems, + list: response.data.items, + } + } + + /** + * Retrieves playlist data from the Tidal API. + * + * @param {Object} options - The options for retrieving the playlist data. + * @param {string} options.uuid - The UUID of the playlist. + * @param {string} options.access_token - The access token for authentication. + * @param {string} options.country - The country code for the playlist data. + * @param {boolean} [options.resolve_items=false] - Whether to resolve the playlist items. + * @param {number} [options.limit] - The maximum number of items to retrieve. + * @param {number} [options.offset] - The offset for pagination. + * @return {Object} The playlist data retrieved from the Tidal API. + */ + static async getPlaylistData({ + uuid, + + access_token, + country, + + resolve_items = false, + limit, + offset, + }) { + const params = { + countryCode: country, + } + + let response = await axios({ + url: `${TidalAPI.API_V1}/playlists/${uuid}`, + method: "GET", + headers: { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + Server: "envoy", + }, + params: params, + }) + + const coverUID = response.data.squareImage.replace(/-/g, "/") + response.data.cover = `https://resources.tidal.com/images/${coverUID}/1080x1080.jpg` + + response.data.service = "tidal" + + if (resolve_items) { + response.data.list = await TidalAPI.getPlaylistItems({ + uuid, + limit, + offset, + access_token, + country, + }) + + response.data.total_length = response.data.list.total_length + response.data.list = response.data.list.list + } + + return response.data + } + + /** + * Toggles the like status of a track. + * + * @param {Object} params - The parameters for toggling the track like. + * @param {string} params.trackId - The ID of the track to toggle the like status. + * @param {boolean} params.to - The new like status. True to like the track, false to unlike it. + * @param {string} params.user_id - The ID of the user performing the action. + * @param {string} params.access_token - The access token for authentication. + * @param {string} params.country - The country code. + * @return {Object} - The response data from the API. + */ + static async toggleTrackLike({ + trackId, + to, + user_id, + + access_token, + country, + }) { + let url = `${TidalAPI.API_V1}/users/${user_id}/favorites/tracks` + let payload = null + let headers = { + Origin: "http://listen.tidal.com", + Authorization: `Bearer ${access_token}`, + } + + if (!to) { + url = `${url}/${trackId}` + } else { + payload = qs.stringify({ + trackIds: trackId, + onArtifactNotFound: "FAIL" + }) + + headers["Content-Type"] = "application/x-www-form-urlencoded" + } + + let response = await axios({ + url: url, + method: to ? "POST" : "DELETE", + headers: headers, + params: { + countryCode: country, + deviceType: "BROWSER" + }, + data: payload + }) + + return response.data + } + + static async togglePlaylistLike(playlist_id) { + + } +} diff --git a/packages/server/index.js b/packages/server/index.js new file mode 100755 index 00000000..d2d5d005 --- /dev/null +++ b/packages/server/index.js @@ -0,0 +1,411 @@ +require("dotenv").config() + +import fs from "node:fs" +import path from "node:path" +import repl from "node:repl" +import { Transform } from "node:stream" +import ChildProcess from "node:child_process" +import { Observable } from "@gullerya/object-observer" +import chalk from "chalk" +import Spinnies from "spinnies" +import chokidar from "chokidar" + +import { dots as DefaultSpinner } from "spinnies/spinners.json" +import getInternalIp from "./lib/getInternalIp" +import comtyAscii from "./ascii" +import pkg from "./package.json" + +const bootloaderBin = path.resolve(__dirname, "boot") +const servicesPath = path.resolve(__dirname, "services") + +async function scanServices() { + const finalServices = [] + + let services = fs.readdirSync(servicesPath) + + for await (let _path of services) { + _path = path.resolve(servicesPath, _path) + + if (fs.lstatSync(_path).isDirectory()) { + // search main file "*.service.*" (using regex) on the root of the service path + const mainFile = fs.readdirSync(_path).find((filename) => { + const regex = new RegExp(`^.*\.service\..*$`) + + return regex.test(filename) + }) + + if (mainFile) { + finalServices.push(path.resolve(_path, mainFile)) + } + } + } + + return finalServices +} + +let allReady = false +let selectedProcessInstance = null +let internalIp = null +let services = null + +const spinnies = new Spinnies() + +const instancePool = [] +const serviceFileReference = {} +const serviceWatcher = Observable.from({}) + +Observable.observe(serviceWatcher, (changes) => { + const { type, path, value } = changes[0] + + switch (type) { + case "update": { + //console.log(`Updated service | ${path} > ${value}`) + + //check if all services all ready + if (Object.values(serviceWatcher).every((service) => service.ready)) { + handleAllReady() + } + + break + } + } +}) + +function detachInstanceStd(instance) { + if (instance.logs) { + instance.logs.stdout.unpipe(process.stdout) + instance.logs.stderr.unpipe(process.stderr) + } +} + +function attachInstanceStd(instance, { afterMsg } = {}) { + if (instance.logs) { + console.clear() + + if (afterMsg) { + console.log(afterMsg) + } + + instance.logs.stdout.pipe(process.stdout) + instance.logs.stderr.pipe(process.stderr) + } +} + +const relp_commands = [ + { + cmd: "select", + aliases: ["s", "sel"], + fn: (cb, service) => { + if (!isNaN(parseInt(service))) { + service = serviceWatcher[Object.keys(serviceWatcher)[service]] + } else { + service = serviceWatcher[service] + } + + if (!service) { + console.error(`Service [${service}] not found`) + return false + } + + if (selectedProcessInstance) { + detachInstanceStd(selectedProcessInstance.instance) + selectedProcessInstance = null + } + + selectedProcessInstance = instancePool.find((instance) => instance.id === service.id) + + if (!selectedProcessInstance) { + selectedProcessInstance = null + + console.error(`Cannot find service [${service.id}] in the instances pool`) + + return false + } + + attachInstanceStd(selectedProcessInstance.instance) + + return true + } + } +] + +async function getIgnoredFiles(cwd) { + // git check-ignore -- * + let output = await new Promise((resolve, reject) => { + ChildProcess.exec("git check-ignore -- *", { + cwd: cwd + }, (err, stdout) => { + if (err) { + resolve(``) + } + + resolve(stdout) + }) + }) + + output = output.split("\n").map((file) => { + return `**/${file.trim()}` + }) + + output = output.filter((file) => { + return file + }) + + return output +} + +async function handleAllReady() { + console.clear() + + allReady = true + + console.log(comtyAscii) + console.log(`🎉 All services[${services.length}] ready!\n`) + console.log(`USE: select , reboot, exit`) +} + +// SERVICE WATCHER FUNCTIONS +async function handleNewServiceStarting(id) { + if (serviceWatcher[id].ready === false) { + spinnies.add(id, { + text: `📦 [${id}] Loading service...`, + spinner: DefaultSpinner + }) + } +} + +async function handleServiceStarted(id) { + if (serviceWatcher[id].ready === false) { + if (spinnies.pick(id)) { + spinnies.succeed(id, { text: `[${id}][${serviceWatcher[id].index}] Ready` }) + } + } + + serviceWatcher[id].ready = true +} + +async function handleServiceExit(id, code, err) { + //console.log(`🛑 Service ${id} exited with code ${code}`, err) + + if (serviceWatcher[id].ready === false) { + if (spinnies.pick(id)) { + spinnies.fail(id, { text: `[${id}][${serviceWatcher[id].index}] Failed with code ${code}` }) + } + } + + serviceWatcher[id].ready = false +} + +// PROCESS HANDLERS +async function handleProcessExit(error, code) { + if (error) { + console.error(error) + } + + console.log(`\nPreparing to exit...`) + + for await (let instance of instancePool) { + console.log(`🛑 Killing ${instance.id} [${instance.instance.pid}]`) + await instance.instance.kill() + } + + return 0 +} + +async function handleIPCData(id, data) { + if (data.type === "log") { + console.log(`[${id}] ${data.message}`) + } + + if (data.status === "ready") { + await handleServiceStarted(id) + } +} + +function spawnService({ id, service, cwd }) { + handleNewServiceStarting(id) + + let instance = ChildProcess.fork(bootloaderBin, [service], { + detached: false, + silent: true, + cwd: cwd, + env: { + ...process.env + } + }) + + instance.reload = () => { + instance.kill() + + instance = spawnService({ id, service, cwd }) + + const instanceIndex = instancePool.findIndex((_instance) => _instance.id === id) + + if (instanceIndex !== -1) { + instancePool[instanceIndex].instance = instance + } + + // check if selectedProcessInstance + if (selectedProcessInstance) { + detachInstanceStd(selectedProcessInstance.instance) + + //if the selected process is this service, reattach std + if (selectedProcessInstance.id === id) { + attachInstanceStd(instance, { + afterMsg: "Reloading service...", + }) + } + } + } + + instance.logs = { + stdout: createServiceLogTransformer({ id }), + stderr: createServiceLogTransformer({ id, color: "bgRed" }), + } + + instance.logs.stdout.history = [] + instance.logs.stderr.history = [] + + // push to buffer history + instance.stdout.pipe(instance.logs.stdout) + instance.stderr.pipe(instance.logs.stderr) + + instance.on("message", (data) => { + return handleIPCData(id, data) + }) + + instance.on("close", (code, err) => { + return handleServiceExit(id, code, err) + }) + + return instance +} + +function createServiceLogTransformer({ id, color = "bgCyan" }) { + return new Transform({ + transform(data, encoding, callback) { + callback(null, `${chalk[color](`[${id}]`)} > ${data.toString()}`) + } + }) +} + +async function main() { + internalIp = await getInternalIp() + + console.clear() + console.log(comtyAscii) + console.log(`\nRunning ${chalk.bgBlue(`${pkg.name}`)} | ${chalk.bgMagenta(`[v${pkg.version}]`)} | ${internalIp} \n\n\n`) + + services = await scanServices() + + if (services.length === 0) { + console.error("❌ No service found") + return process.exit(1) + } + + console.log(`📦 Found ${services.length} service(s)`) + + // create watchers + for await (let service of services) { + const instanceFile = path.basename(service) + const instanceBasePath = path.dirname(service) + + const { name: id, version, proxy } = require(path.resolve(instanceBasePath, "package.json")) + + serviceFileReference[instanceFile] = id + + serviceWatcher[id] = { + index: services.indexOf(service), + id: id, + version: version, + file: instanceFile, + cwd: instanceBasePath, + proxy: proxy, + buffer: [], + ready: false, + } + } + + // create a new process of node for each service + for await (let service of services) { + const { id, version, cwd } = serviceWatcher[serviceFileReference[path.basename(service)]] + + const instance = spawnService({ id, service, cwd }) + + // push to pool + instancePool.push({ + id, + version, + instance + }) + + // if is NODE_ENV to development, start a file watcher for hot-reload + if (process.env.NODE_ENV === "development") { + const ignored = [ + ...await getIgnoredFiles(cwd), + "**/node_modules/**", + "**/dist/**", + "**/build/**", + ] + + chokidar.watch(cwd, { + ignored: ignored, + persistent: true, + ignoreInitial: true, + }).on("all", (event, path) => { + // find instance from pool + const instanceIndex = instancePool.findIndex((instance) => instance.id === id) + + console.log(event, path, instanceIndex) + + // reload + instancePool[instanceIndex].instance.reload() + }) + } + } + + // create repl + repl.start({ + prompt: "> ", + useGlobal: true, + eval: (input, context, filename, callback) => { + let inputs = input.split(" ") + + // remove last \n from input + inputs[inputs.length - 1] = inputs[inputs.length - 1].replace(/\n/g, "") + + // find relp command + const command = inputs[0] + const args = inputs.slice(1) + + const command_fn = relp_commands.find((relp_command) => { + let exising = false + + if (Array.isArray(relp_command.aliases)) { + exising = relp_command.aliases.includes(command) + } + + if (relp_command.cmd === command) { + exising = true + } + + return exising + }) + + if (!command_fn) { + return callback(`Command not found: ${command}`) + } + + return command_fn.fn(callback, ...args) + } + }).on("exit", () => { + process.exit(0) + }) +} + +process.on("exit", handleProcessExit) +process.on("SIGINT", handleProcessExit) +process.on("uncaughtException", handleProcessExit) +process.on("unhandledRejection", handleProcessExit) + +main() \ No newline at end of file diff --git a/packages/server/lib/api_wrapper/index.js b/packages/server/lib/api_wrapper/index.js new file mode 100755 index 00000000..3fdfc6d8 --- /dev/null +++ b/packages/server/lib/api_wrapper/index.js @@ -0,0 +1,120 @@ +require("dotenv").config() + +const path = require("path") +const { registerBaseAliases } = require("linebridge/dist/server") +const { webcrypto: crypto } = require("crypto") +const infisical = require("infisical-node") + +global.isProduction = process.env.NODE_ENV === "production" + +globalThis["__root"] = path.resolve(process.cwd()) +globalThis["__src"] = path.resolve(globalThis["__root"], global.isProduction ? "dist" : "src") + +const customAliases = { + "root": globalThis["__root"], + "src": globalThis["__src"], + "@shared-classes": path.resolve(globalThis["__src"], "_shared/classes"), + "@services": path.resolve(globalThis["__src"], "services"), +} + +if (!global.isProduction) { + customAliases["comty.js"] = path.resolve(globalThis["__src"], "../../comty.js/src") + customAliases["@shared-classes"] = path.resolve(globalThis["__src"], "shared-classes") +} + +if (process.env.USE_LINKED_SHARED) { + customAliases["@shared-classes"] = path.resolve(globalThis["__src"], "shared-classes") +} + +registerBaseAliases(globalThis["__src"], customAliases) + +// patches +const { Buffer } = require("buffer") + +global.b64Decode = (data) => { + return Buffer.from(data, "base64").toString("utf-8") +} +global.b64Encode = (data) => { + return Buffer.from(data, "utf-8").toString("base64") +} + +global.nanoid = (t = 21) => crypto.getRandomValues(new Uint8Array(t)).reduce(((t, e) => t += (e &= 63) < 36 ? e.toString(36) : e < 62 ? (e - 26).toString(36).toUpperCase() : e > 62 ? "-" : "_"), ""); + +Array.prototype.updateFromObjectKeys = function (obj) { + this.forEach((value, index) => { + if (obj[value] !== undefined) { + this[index] = obj[value] + } + }) + + return this +} + +global.toBoolean = (value) => { + if (typeof value === "boolean") { + return value + } + + if (typeof value === "string") { + return value.toLowerCase() === "true" + } + + return false +} + +async function injectEnvFromInfisical() { + const envMode = global.FORCE_ENV ?? global.isProduction ? "prod" : "dev" + + console.log(`🔑 Injecting env variables from INFISICAL in [${envMode}] mode...`) + + const client = new infisical({ + token: process.env.INFISICAL_TOKEN, + }) + + const secrets = await client.getAllSecrets({ + environment: envMode, + attachToProcessEnv: false, + }) + + // inject to process.env + secrets.forEach((secret) => { + if (!(process.env[secret.secretName])) { + process.env[secret.secretName] = secret.secretValue + } + }) +} + +function handleExit(instance, code) { + if (instance.server) { + if (typeof instance.server.close === "function") { + instance.server.close() + } + } + + return process.exit(code) +} + +async function main({ + force_infisical, +} = {}) { + const API = require(path.resolve(globalThis["__src"], "api.js")).default + + if (force_infisical || process.env.INFISICAL_TOKEN) { + await injectEnvFromInfisical() + } + + const instance = new API() + + process.on("exit", () => handleExit(instance, 0)) + process.on("SIGINT", () => handleExit(instance, 0)) + process.on("uncaughtException", () => handleExit(instance, 1)) + process.on("unhandledRejection", () => handleExit(instance, 1)) + + await instance.initialize() + + return instance +} + +main().catch((error) => { + console.error(`🆘 [FATAL ERROR] >`, error) +}) \ No newline at end of file diff --git a/packages/wrapper/src/lib/getInternalIp.js b/packages/server/lib/getInternalIp/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/wrapper/src/lib/getInternalIp.js rename to packages/server/lib/getInternalIp/index.js diff --git a/packages/server/package.json b/packages/server/package.json index 3abe6ee3..0f32b58c 100755 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,54 +1,41 @@ { - "name": "@comty/server", - "version": "0.60.3", - "main": "dist/index.js", - "scripts": { - "build": "hermes build", - "dev": "cross-env NODE_ENV=development nodemon --ignore dist/ --exec hermes-node ./src/index.js", - "run:prod": "cross-env NODE_ENV=production node ./dist/index.js" - }, - "shared": { - "classes/FileUpload": "src/shared-classes/FileUpload", - "classes/CacheService": "src/shared-classes/CacheService", - "classes/ComtyClient": "src/shared-classes/ComtyClient", - "classes/RedisClient": "src/shared-classes/RedisClient", - "classes/StorageClient": "src/shared-classes/StorageClient", - "classes/DbManager": "src/shared-classes/DbManager", - "classes/Errors": "src/shared-classes/Errors", - "classes/DbModels": "src/shared-classes/DbModels" - }, - "license": "MIT", - "dependencies": { - "@foxify/events": "^2.1.0", - "@octokit/rest": "^19.0.7", - "@tensorflow/tfjs-node": "4.0.0", - "axios": "^1.2.5", - "bcrypt": "^5.1.0", - "busboy": "^1.6.0", - "connect-mongo": "^4.6.0", - "content-range": "^2.0.2", - "dotenv": "^16.0.3", - "infisical-node": "^1.2.1", - "jsonwebtoken": "^9.0.0", - "linebridge": "0.16.0", - "luxon": "^3.2.1", - "mime-types": "^2.1.35", - "minio": "^7.0.32", - "moment": "^2.29.4", - "moment-timezone": "^0.5.40", - "mongoose": "^6.9.0", - "normalize-url": "^8.0.0", - "nsfwjs": "2.4.2", - "p-map": "4", - "p-queue": "^7.3.4", - "path-to-regexp": "^6.2.1" - }, - "devDependencies": { - "@ragestudio/hermes": "^0.1.0", - "@corenode/utils": "0.28.26", - "chai": "^4.3.7", - "cross-env": "^7.0.3", - "mocha": "^10.2.0", - "nodemon": "^2.0.15" - } -} \ No newline at end of file + "name": "@comty/server", + "version": "0.60.2", + "license": "MIT", + "workspaces": [ + "services/*" + ], + "private": true, + "scripts": { + "build": "hermes build", + "dev": "cross-env NODE_ENV=development hermes-node ./index.js", + "run:prod": "cross-env NODE_ENV=production node ./dist/index.js" + }, + "dependencies": { + "@gullerya/object-observer": "^6.1.3", + "@infisical/sdk": "^2.1.8", + "@ragestudio/hermes": "^0.1.1", + "axios": "^1.6.7", + "bcrypt": "^5.1.1", + "chalk": "4.1.2", + "cli-color": "^2.0.3", + "clui": "^0.3.6", + "dotenv": "^16.4.4", + "http-proxy-middleware": "^2.0.6", + "hyper-express": "^6.14.12", + "linebridge": "^0.16.0", + "module-alias": "^2.2.3", + "p-map": "^4.0.0", + "p-queue": "^7.3.4", + "spinnies": "^0.5.1" + }, + "devDependencies": { + "chai": "^5.1.0", + "cross-env": "^7.0.3", + "mocha": "^10.3.0", + "nodemon": "^3.0.3" + }, + "resolutions": { + "string-width": "4.2.3" + } +} diff --git a/packages/chat_server/src/chatServer.js b/packages/server/services/chats/chatServer.js old mode 100644 new mode 100755 similarity index 100% rename from packages/chat_server/src/chatServer.js rename to packages/server/services/chats/chatServer.js diff --git a/packages/chat_server/src/api.js b/packages/server/services/chats/chats.service.js similarity index 98% rename from packages/chat_server/src/api.js rename to packages/server/services/chats/chats.service.js index 0c0f6c27..d6d58c4c 100755 --- a/packages/chat_server/src/api.js +++ b/packages/server/services/chats/chats.service.js @@ -12,7 +12,7 @@ import routes from "./routes" import ChatServer from "./chatServer" -export default class Server { +export default class API { constructor(options = {}) { this.app = express() this.httpServer = http.createServer(this.app) @@ -98,4 +98,6 @@ export default class Server { // log server started console.log(`🚀 Server started ready on \n\t - http://${this.options.listenHost}:${this.options.listenPort} \n\t - Tooks ${elapsedTimeInMs}ms`) } -} \ No newline at end of file +} + +Boot(API) \ No newline at end of file diff --git a/packages/chat_server/src/middlewares/withWsAuth.js b/packages/server/services/chats/middlewares/withWsAuth.js old mode 100644 new mode 100755 similarity index 100% rename from packages/chat_server/src/middlewares/withWsAuth.js rename to packages/server/services/chats/middlewares/withWsAuth.js diff --git a/packages/server/services/chats/package.json b/packages/server/services/chats/package.json new file mode 100755 index 00000000..15ef1e24 --- /dev/null +++ b/packages/server/services/chats/package.json @@ -0,0 +1,25 @@ +{ + "name": "chats", + "version": "0.60.2", + "license": "MIT", + "dependencies": { + "@foxify/events": "^2.1.0", + "axios": "^1.4.0", + "bcrypt": "5.0.1", + "comty.js": "^0.58.2", + "connect-mongo": "^4.6.0", + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "jsonwebtoken": "8.5.1", + "linebridge": "0.15.12", + "luxon": "^3.0.4", + "minio": "^7.0.32", + "moment": "2.29.4", + "moment-timezone": "0.5.37", + "mongoose": "^6.9.0", + "morgan": "^1.10.0", + "redis": "^4.6.6", + "socket.io": "^4.5.4" + } +} \ No newline at end of file diff --git a/packages/chat_server/src/routes/index.js b/packages/server/services/chats/routes/index.js similarity index 100% rename from packages/chat_server/src/routes/index.js rename to packages/server/services/chats/routes/index.js diff --git a/packages/chat_server/src/useMiddlewares/useCors/index.js b/packages/server/services/chats/useMiddlewares/useCors/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/chat_server/src/useMiddlewares/useCors/index.js rename to packages/server/services/chats/useMiddlewares/useCors/index.js diff --git a/packages/chat_server/src/useMiddlewares/useLogger/index.js b/packages/server/services/chats/useMiddlewares/useLogger/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/chat_server/src/useMiddlewares/useLogger/index.js rename to packages/server/services/chats/useMiddlewares/useLogger/index.js diff --git a/packages/server/services/ems/package.json b/packages/server/services/ems/package.json new file mode 100644 index 00000000..7835ffcb --- /dev/null +++ b/packages/server/services/ems/package.json @@ -0,0 +1,11 @@ +{ + "name": "ems", + "description": "External Messaging Service (SMS, EMAIL, PUSH)", + "version": "0.1.0", + "main": "index.js", + "license": "MIT", + "dependencies": { + "nodemailer": "^6.9.11", + "web-push": "^3.6.7" + } +} diff --git a/packages/server/services/ems/routes/dispatch/post.js b/packages/server/services/ems/routes/dispatch/post.js new file mode 100644 index 00000000..92fa9023 --- /dev/null +++ b/packages/server/services/ems/routes/dispatch/post.js @@ -0,0 +1,29 @@ +export default { + useContext: ["mailTransporter"], + fn: async (req, res) => { + req.body = await req.urlencoded() + + const { to, subject, body } = req.body + + const mailOptions = { + from: "comty_no_reply@ragestudio.net", + to: to, + subject: subject, + text: body + } + + console.log(mailOptions) + + console.log(`Sending email to ${to}...`) + + const result = await this.default.contexts.mailTransporter.sendMail(mailOptions) + + console.log("Email sent! >", result) + + return res.json({ + code: 0, + message: "ok", + result: result + }) + } +} \ No newline at end of file diff --git a/packages/server/services/ems/routes/test/deep/xd/get.js b/packages/server/services/ems/routes/test/deep/xd/get.js new file mode 100644 index 00000000..420692ef --- /dev/null +++ b/packages/server/services/ems/routes/test/deep/xd/get.js @@ -0,0 +1,5 @@ +export default (req, res) => { + return res.json({ + message: "Hi! from the deeps." + }) +} \ No newline at end of file diff --git a/packages/server/services/ems/routes/test/get.js b/packages/server/services/ems/routes/test/get.js new file mode 100644 index 00000000..3c5e2c2a --- /dev/null +++ b/packages/server/services/ems/routes/test/get.js @@ -0,0 +1,5 @@ +export default async (req, res) => { + return res.json({ + msg: "HI!!" + }) +} \ No newline at end of file diff --git a/packages/file_server/src/controllers/stream/index.js b/packages/server/services/files/controllers/stream/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/controllers/stream/index.js rename to packages/server/services/files/controllers/stream/index.js diff --git a/packages/file_server/src/controllers/stream/routes/get/*.js b/packages/server/services/files/controllers/stream/routes/get/*.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/controllers/stream/routes/get/*.js rename to packages/server/services/files/controllers/stream/routes/get/*.js diff --git a/packages/file_server/src/controllers/upload/index.js b/packages/server/services/files/controllers/upload/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/controllers/upload/index.js rename to packages/server/services/files/controllers/upload/index.js diff --git a/packages/file_server/src/controllers/upload/routes/post/chunk.js b/packages/server/services/files/controllers/upload/routes/post/chunk.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/controllers/upload/routes/post/chunk.js rename to packages/server/services/files/controllers/upload/routes/post/chunk.js diff --git a/packages/file_server/src/api.js b/packages/server/services/files/file.service.js old mode 100644 new mode 100755 similarity index 99% rename from packages/file_server/src/api.js rename to packages/server/services/files/file.service.js index 1f229a87..da82cabd --- a/packages/file_server/src/api.js +++ b/packages/server/services/files/file.service.js @@ -1,5 +1,7 @@ import fs from "fs" import path from "path" +import cors from "cors" +import express from "express" import B2 from "backblaze-b2" @@ -7,10 +9,8 @@ import RedisClient from "@shared-classes/RedisClient" import StorageClient from "@shared-classes/StorageClient" import CacheService from "@shared-classes/CacheService" import ComtyClient from "@shared-classes/ComtyClient" -import cors from "cors" -import express from "express" -import pkg from "../package.json" +import pkg from "./package.json" global.DEFAULT_HEADERS = { "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization, provider-type, Provider-Type", @@ -183,4 +183,6 @@ export default class FileServerAPI { // log server started console.log(`🚀 Server started ready on \n\t - http://${this.listenIp}:${this.listenPort} \n\t - Tooks ${elapsedTimeInMs}ms`) } -} \ No newline at end of file +} + +Boot(FileServerAPI) \ No newline at end of file diff --git a/packages/file_server/src/middlewares/withAuth/index.js b/packages/server/services/files/middlewares/withAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/middlewares/withAuth/index.js rename to packages/server/services/files/middlewares/withAuth/index.js diff --git a/packages/file_server/src/middlewares/withOptionalAuth/index.js b/packages/server/services/files/middlewares/withOptionalAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/middlewares/withOptionalAuth/index.js rename to packages/server/services/files/middlewares/withOptionalAuth/index.js diff --git a/packages/file_server/src/middlewares/withWsAuth.js b/packages/server/services/files/middlewares/withWsAuth.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/middlewares/withWsAuth.js rename to packages/server/services/files/middlewares/withWsAuth.js diff --git a/packages/server/services/files/package.json b/packages/server/services/files/package.json new file mode 100755 index 00000000..5748e152 --- /dev/null +++ b/packages/server/services/files/package.json @@ -0,0 +1,35 @@ +{ + "name": "files", + "version": "0.60.2", + "license": "MIT", + "dependencies": { + "@foxify/events": "^2.1.0", + "axios": "^1.4.0", + "backblaze-b2": "^1.7.0", + "bcrypt": "^5.1.0", + "busboy": "^1.6.0", + "comty.js": "^0.58.2", + "connect-mongo": "^4.6.0", + "content-range": "^2.0.2", + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "fluent-ffmpeg": "^2.1.2", + "jsonwebtoken": "^9.0.0", + "linebridge": "0.15.12", + "luxon": "^3.0.4", + "merge-files": "^0.1.2", + "mime-types": "^2.1.35", + "sharp": "^0.33.2", + "minio": "^7.0.32", + "moment": "^2.29.4", + "moment-timezone": "^0.5.40", + "mongoose": "^6.9.0", + "morgan": "^1.10.0", + "normalize-url": "^8.0.0", + "p-map": "4.0.0", + "p-queue": "^7.3.4", + "redis": "^4.6.6", + "split-chunk-merge": "^1.0.0" + } +} \ No newline at end of file diff --git a/packages/file_server/src/services/post-process/audio/index.js b/packages/server/services/files/services/post-process/audio/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/services/post-process/audio/index.js rename to packages/server/services/files/services/post-process/audio/index.js diff --git a/packages/file_server/src/services/post-process/image/index.js b/packages/server/services/files/services/post-process/image/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/services/post-process/image/index.js rename to packages/server/services/files/services/post-process/image/index.js diff --git a/packages/file_server/src/services/post-process/index.js b/packages/server/services/files/services/post-process/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/services/post-process/index.js rename to packages/server/services/files/services/post-process/index.js diff --git a/packages/file_server/src/services/post-process/video/index.js b/packages/server/services/files/services/post-process/video/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/services/post-process/video/index.js rename to packages/server/services/files/services/post-process/video/index.js diff --git a/packages/file_server/src/services/videoTranscode/index.js b/packages/server/services/files/services/videoTranscode/index.js similarity index 100% rename from packages/file_server/src/services/videoTranscode/index.js rename to packages/server/services/files/services/videoTranscode/index.js diff --git a/packages/file_server/src/useMiddlewares/useCors/index.js b/packages/server/services/files/useMiddlewares/useCors/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/useMiddlewares/useCors/index.js rename to packages/server/services/files/useMiddlewares/useCors/index.js diff --git a/packages/file_server/src/useMiddlewares/useLogger/index.js b/packages/server/services/files/useMiddlewares/useLogger/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/useMiddlewares/useLogger/index.js rename to packages/server/services/files/useMiddlewares/useLogger/index.js diff --git a/packages/file_server/src/utils/createRoutesFromDirectory/index.js b/packages/server/services/files/utils/createRoutesFromDirectory/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/utils/createRoutesFromDirectory/index.js rename to packages/server/services/files/utils/createRoutesFromDirectory/index.js diff --git a/packages/file_server/src/utils/getMiddlewares/index.js b/packages/server/services/files/utils/getMiddlewares/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/utils/getMiddlewares/index.js rename to packages/server/services/files/utils/getMiddlewares/index.js diff --git a/packages/file_server/src/utils/replaceImportsWithRemoteURL/index.js b/packages/server/services/files/utils/replaceImportsWithRemoteURL/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/utils/replaceImportsWithRemoteURL/index.js rename to packages/server/services/files/utils/replaceImportsWithRemoteURL/index.js diff --git a/packages/file_server/src/utils/resolveUrl/index.js b/packages/server/services/files/utils/resolveUrl/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/utils/resolveUrl/index.js rename to packages/server/services/files/utils/resolveUrl/index.js diff --git a/packages/file_server/src/utils/syncDirToRemote/index.js b/packages/server/services/files/utils/syncDirToRemote/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/file_server/src/utils/syncDirToRemote/index.js rename to packages/server/services/files/utils/syncDirToRemote/index.js diff --git a/packages/server/src/controllers/AdminController/endpoints/accounts_statistics.js b/packages/server/services/main/controllers/AdminController/endpoints/accounts_statistics.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AdminController/endpoints/accounts_statistics.js rename to packages/server/services/main/controllers/AdminController/endpoints/accounts_statistics.js diff --git a/packages/server/src/controllers/AdminController/endpoints/delete_featured_wallpaper.js b/packages/server/services/main/controllers/AdminController/endpoints/delete_featured_wallpaper.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AdminController/endpoints/delete_featured_wallpaper.js rename to packages/server/services/main/controllers/AdminController/endpoints/delete_featured_wallpaper.js diff --git a/packages/server/src/controllers/AdminController/endpoints/featured_wallpaper.js b/packages/server/services/main/controllers/AdminController/endpoints/featured_wallpaper.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AdminController/endpoints/featured_wallpaper.js rename to packages/server/services/main/controllers/AdminController/endpoints/featured_wallpaper.js diff --git a/packages/server/src/controllers/AdminController/endpoints/resetPassword.js b/packages/server/services/main/controllers/AdminController/endpoints/resetPassword.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AdminController/endpoints/resetPassword.js rename to packages/server/services/main/controllers/AdminController/endpoints/resetPassword.js diff --git a/packages/server/src/controllers/AdminController/endpoints/update_user_data.js b/packages/server/services/main/controllers/AdminController/endpoints/update_user_data.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AdminController/endpoints/update_user_data.js rename to packages/server/services/main/controllers/AdminController/endpoints/update_user_data.js diff --git a/packages/server/src/controllers/AdminController/index.js b/packages/server/services/main/controllers/AdminController/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AdminController/index.js rename to packages/server/services/main/controllers/AdminController/index.js diff --git a/packages/server/src/controllers/AuthController/endpoints/dataValidation.js b/packages/server/services/main/controllers/AuthController/endpoints/dataValidation.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AuthController/endpoints/dataValidation.js rename to packages/server/services/main/controllers/AuthController/endpoints/dataValidation.js diff --git a/packages/server/services/main/controllers/AuthController/endpoints/otpSend.js b/packages/server/services/main/controllers/AuthController/endpoints/otpSend.js new file mode 100644 index 00000000..c7bbefec --- /dev/null +++ b/packages/server/services/main/controllers/AuthController/endpoints/otpSend.js @@ -0,0 +1,7 @@ +export default { + method: "GET", + route: "/otp/verify", + fn: async function (req, res) { + + } +} \ No newline at end of file diff --git a/packages/server/src/controllers/AuthController/endpoints/userLogin.js b/packages/server/services/main/controllers/AuthController/endpoints/userLogin.js similarity index 100% rename from packages/server/src/controllers/AuthController/endpoints/userLogin.js rename to packages/server/services/main/controllers/AuthController/endpoints/userLogin.js diff --git a/packages/server/src/controllers/AuthController/endpoints/userLogout.js b/packages/server/services/main/controllers/AuthController/endpoints/userLogout.js similarity index 100% rename from packages/server/src/controllers/AuthController/endpoints/userLogout.js rename to packages/server/services/main/controllers/AuthController/endpoints/userLogout.js diff --git a/packages/server/src/controllers/AuthController/endpoints/userRegister.js b/packages/server/services/main/controllers/AuthController/endpoints/userRegister.js similarity index 95% rename from packages/server/src/controllers/AuthController/endpoints/userRegister.js rename to packages/server/services/main/controllers/AuthController/endpoints/userRegister.js index 071891b1..2d9344bb 100755 --- a/packages/server/src/controllers/AuthController/endpoints/userRegister.js +++ b/packages/server/services/main/controllers/AuthController/endpoints/userRegister.js @@ -10,6 +10,8 @@ export default { select: ["username", "email", "password", "fullName"], }, async (req, res) => { const result = await createUser(req.selection).catch((err) => { + console.error(err) + res.status(500).json({ message: `Error creating user > ${err.message}`, }) diff --git a/packages/server/src/controllers/AuthController/index.js b/packages/server/services/main/controllers/AuthController/index.js similarity index 100% rename from packages/server/src/controllers/AuthController/index.js rename to packages/server/services/main/controllers/AuthController/index.js diff --git a/packages/server/src/controllers/AuthController/methods/createUser.js b/packages/server/services/main/controllers/AuthController/methods/createUser.js similarity index 88% rename from packages/server/src/controllers/AuthController/methods/createUser.js rename to packages/server/services/main/controllers/AuthController/methods/createUser.js index f4a963e9..3a43c0af 100755 --- a/packages/server/src/controllers/AuthController/methods/createUser.js +++ b/packages/server/services/main/controllers/AuthController/methods/createUser.js @@ -4,14 +4,6 @@ import bcrypt from "bcrypt" export default async function (payload) { let { username, password, email, fullName, roles, avatar } = payload - if (username.length < 3) { - throw new Error("Username must be at least 3 characters") - } - - if (username.length > 64) { - throw new Error("Username cannot be longer than 64 characters") - } - // if username has capital letters, throw error if (username !== username.toLowerCase()) { throw new Error("Username must be lowercase") diff --git a/packages/server/src/controllers/AutoUpdate/index.js b/packages/server/services/main/controllers/AutoUpdate/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/AutoUpdate/index.js rename to packages/server/services/main/controllers/AutoUpdate/index.js diff --git a/packages/server/src/controllers/BadgesController/endpoints/deleteBadge.js b/packages/server/services/main/controllers/BadgesController/endpoints/deleteBadge.js similarity index 100% rename from packages/server/src/controllers/BadgesController/endpoints/deleteBadge.js rename to packages/server/services/main/controllers/BadgesController/endpoints/deleteBadge.js diff --git a/packages/server/src/controllers/BadgesController/endpoints/getBadges.js b/packages/server/services/main/controllers/BadgesController/endpoints/getBadges.js similarity index 100% rename from packages/server/src/controllers/BadgesController/endpoints/getBadges.js rename to packages/server/services/main/controllers/BadgesController/endpoints/getBadges.js diff --git a/packages/server/src/controllers/BadgesController/endpoints/getUserBadges.js b/packages/server/services/main/controllers/BadgesController/endpoints/getUserBadges.js similarity index 100% rename from packages/server/src/controllers/BadgesController/endpoints/getUserBadges.js rename to packages/server/services/main/controllers/BadgesController/endpoints/getUserBadges.js diff --git a/packages/server/src/controllers/BadgesController/endpoints/giveToUser.js b/packages/server/services/main/controllers/BadgesController/endpoints/giveToUser.js similarity index 100% rename from packages/server/src/controllers/BadgesController/endpoints/giveToUser.js rename to packages/server/services/main/controllers/BadgesController/endpoints/giveToUser.js diff --git a/packages/server/src/controllers/BadgesController/endpoints/putBadge.js b/packages/server/services/main/controllers/BadgesController/endpoints/putBadge.js similarity index 100% rename from packages/server/src/controllers/BadgesController/endpoints/putBadge.js rename to packages/server/services/main/controllers/BadgesController/endpoints/putBadge.js diff --git a/packages/server/src/controllers/BadgesController/endpoints/removeToUser.js b/packages/server/services/main/controllers/BadgesController/endpoints/removeToUser.js similarity index 100% rename from packages/server/src/controllers/BadgesController/endpoints/removeToUser.js rename to packages/server/services/main/controllers/BadgesController/endpoints/removeToUser.js diff --git a/packages/server/src/controllers/BadgesController/index.js b/packages/server/services/main/controllers/BadgesController/index.js similarity index 100% rename from packages/server/src/controllers/BadgesController/index.js rename to packages/server/services/main/controllers/BadgesController/index.js diff --git a/packages/server/src/controllers/CommentsController/endpoints/createPostComment.js b/packages/server/services/main/controllers/CommentsController/endpoints/createPostComment.js similarity index 100% rename from packages/server/src/controllers/CommentsController/endpoints/createPostComment.js rename to packages/server/services/main/controllers/CommentsController/endpoints/createPostComment.js diff --git a/packages/server/src/controllers/CommentsController/endpoints/deletePostComment.js b/packages/server/services/main/controllers/CommentsController/endpoints/deletePostComment.js similarity index 100% rename from packages/server/src/controllers/CommentsController/endpoints/deletePostComment.js rename to packages/server/services/main/controllers/CommentsController/endpoints/deletePostComment.js diff --git a/packages/server/src/controllers/CommentsController/endpoints/getPostComments.js b/packages/server/services/main/controllers/CommentsController/endpoints/getPostComments.js similarity index 100% rename from packages/server/src/controllers/CommentsController/endpoints/getPostComments.js rename to packages/server/services/main/controllers/CommentsController/endpoints/getPostComments.js diff --git a/packages/server/src/controllers/CommentsController/index.js b/packages/server/services/main/controllers/CommentsController/index.js similarity index 100% rename from packages/server/src/controllers/CommentsController/index.js rename to packages/server/services/main/controllers/CommentsController/index.js diff --git a/packages/server/src/controllers/CommentsController/services/deleteComment.js b/packages/server/services/main/controllers/CommentsController/services/deleteComment.js similarity index 100% rename from packages/server/src/controllers/CommentsController/services/deleteComment.js rename to packages/server/services/main/controllers/CommentsController/services/deleteComment.js diff --git a/packages/server/src/controllers/CommentsController/services/getComments.js b/packages/server/services/main/controllers/CommentsController/services/getComments.js similarity index 100% rename from packages/server/src/controllers/CommentsController/services/getComments.js rename to packages/server/services/main/controllers/CommentsController/services/getComments.js diff --git a/packages/server/src/controllers/CommentsController/services/newComment.js b/packages/server/services/main/controllers/CommentsController/services/newComment.js similarity index 100% rename from packages/server/src/controllers/CommentsController/services/newComment.js rename to packages/server/services/main/controllers/CommentsController/services/newComment.js diff --git a/packages/server/src/controllers/FeaturedEventsController/index.js b/packages/server/services/main/controllers/FeaturedEventsController/index.js similarity index 100% rename from packages/server/src/controllers/FeaturedEventsController/index.js rename to packages/server/services/main/controllers/FeaturedEventsController/index.js diff --git a/packages/server/src/controllers/FeaturedEventsController/services/createFeaturedEvent.js b/packages/server/services/main/controllers/FeaturedEventsController/services/createFeaturedEvent.js similarity index 100% rename from packages/server/src/controllers/FeaturedEventsController/services/createFeaturedEvent.js rename to packages/server/services/main/controllers/FeaturedEventsController/services/createFeaturedEvent.js diff --git a/packages/server/src/controllers/FeedController/index.js b/packages/server/services/main/controllers/FeedController/index.js similarity index 100% rename from packages/server/src/controllers/FeedController/index.js rename to packages/server/services/main/controllers/FeedController/index.js diff --git a/packages/server/src/controllers/FeedController/services/getGlobalReleases.js b/packages/server/services/main/controllers/FeedController/services/getGlobalReleases.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/FeedController/services/getGlobalReleases.js rename to packages/server/services/main/controllers/FeedController/services/getGlobalReleases.js diff --git a/packages/server/src/controllers/FeedController/services/getPlaylistsFromFollowing.js b/packages/server/services/main/controllers/FeedController/services/getPlaylistsFromFollowing.js similarity index 100% rename from packages/server/src/controllers/FeedController/services/getPlaylistsFromFollowing.js rename to packages/server/services/main/controllers/FeedController/services/getPlaylistsFromFollowing.js diff --git a/packages/server/src/controllers/FeedController/services/getPosts.js b/packages/server/services/main/controllers/FeedController/services/getPosts.js similarity index 100% rename from packages/server/src/controllers/FeedController/services/getPosts.js rename to packages/server/services/main/controllers/FeedController/services/getPosts.js diff --git a/packages/server/src/controllers/FeedController/services/getReleasesFromFollowing.js b/packages/server/services/main/controllers/FeedController/services/getReleasesFromFollowing.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/FeedController/services/getReleasesFromFollowing.js rename to packages/server/services/main/controllers/FeedController/services/getReleasesFromFollowing.js diff --git a/packages/server/src/controllers/FollowController/endpoints/getFollowStatus.js b/packages/server/services/main/controllers/FollowController/endpoints/getFollowStatus.js similarity index 100% rename from packages/server/src/controllers/FollowController/endpoints/getFollowStatus.js rename to packages/server/services/main/controllers/FollowController/endpoints/getFollowStatus.js diff --git a/packages/server/src/controllers/FollowController/endpoints/getUserFollowers.js b/packages/server/services/main/controllers/FollowController/endpoints/getUserFollowers.js similarity index 100% rename from packages/server/src/controllers/FollowController/endpoints/getUserFollowers.js rename to packages/server/services/main/controllers/FollowController/endpoints/getUserFollowers.js diff --git a/packages/server/src/controllers/FollowController/endpoints/toggleFollow.js b/packages/server/services/main/controllers/FollowController/endpoints/toggleFollow.js similarity index 100% rename from packages/server/src/controllers/FollowController/endpoints/toggleFollow.js rename to packages/server/services/main/controllers/FollowController/endpoints/toggleFollow.js diff --git a/packages/server/src/controllers/FollowController/index.js b/packages/server/services/main/controllers/FollowController/index.js similarity index 100% rename from packages/server/src/controllers/FollowController/index.js rename to packages/server/services/main/controllers/FollowController/index.js diff --git a/packages/server/src/controllers/FollowController/services/followUser.js b/packages/server/services/main/controllers/FollowController/services/followUser.js similarity index 100% rename from packages/server/src/controllers/FollowController/services/followUser.js rename to packages/server/services/main/controllers/FollowController/services/followUser.js diff --git a/packages/server/src/controllers/FollowController/services/unfollowUser.js b/packages/server/services/main/controllers/FollowController/services/unfollowUser.js similarity index 100% rename from packages/server/src/controllers/FollowController/services/unfollowUser.js rename to packages/server/services/main/controllers/FollowController/services/unfollowUser.js diff --git a/packages/server/src/controllers/ModerationController/endpoints/modifyPostLikes.js b/packages/server/services/main/controllers/ModerationController/endpoints/modifyPostLikes.js similarity index 100% rename from packages/server/src/controllers/ModerationController/endpoints/modifyPostLikes.js rename to packages/server/services/main/controllers/ModerationController/endpoints/modifyPostLikes.js diff --git a/packages/server/src/controllers/ModerationController/index.js b/packages/server/services/main/controllers/ModerationController/index.js similarity index 100% rename from packages/server/src/controllers/ModerationController/index.js rename to packages/server/services/main/controllers/ModerationController/index.js diff --git a/packages/server/src/controllers/NFCController/endpoints/getExecution.js b/packages/server/services/main/controllers/NFCController/endpoints/getExecution.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/NFCController/endpoints/getExecution.js rename to packages/server/services/main/controllers/NFCController/endpoints/getExecution.js diff --git a/packages/server/src/controllers/NFCController/endpoints/getTagById.js b/packages/server/services/main/controllers/NFCController/endpoints/getTagById.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/NFCController/endpoints/getTagById.js rename to packages/server/services/main/controllers/NFCController/endpoints/getTagById.js diff --git a/packages/server/src/controllers/NFCController/endpoints/getTagBySerial.js b/packages/server/services/main/controllers/NFCController/endpoints/getTagBySerial.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/NFCController/endpoints/getTagBySerial.js rename to packages/server/services/main/controllers/NFCController/endpoints/getTagBySerial.js diff --git a/packages/server/src/controllers/NFCController/endpoints/getTags.js b/packages/server/services/main/controllers/NFCController/endpoints/getTags.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/NFCController/endpoints/getTags.js rename to packages/server/services/main/controllers/NFCController/endpoints/getTags.js diff --git a/packages/server/src/controllers/NFCController/endpoints/registerTag.js b/packages/server/services/main/controllers/NFCController/endpoints/registerTag.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/NFCController/endpoints/registerTag.js rename to packages/server/services/main/controllers/NFCController/endpoints/registerTag.js diff --git a/packages/server/src/controllers/NFCController/index.js b/packages/server/services/main/controllers/NFCController/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/NFCController/index.js rename to packages/server/services/main/controllers/NFCController/index.js diff --git a/packages/server/src/controllers/PostsController/endpoints/createPost.js b/packages/server/services/main/controllers/PostsController/endpoints/createPost.js similarity index 78% rename from packages/server/src/controllers/PostsController/endpoints/createPost.js rename to packages/server/services/main/controllers/PostsController/endpoints/createPost.js index 2c227e9f..4370f580 100755 --- a/packages/server/src/controllers/PostsController/endpoints/createPost.js +++ b/packages/server/services/main/controllers/PostsController/endpoints/createPost.js @@ -7,15 +7,14 @@ export default { middlewares: ["withAuthentication"], fn: Schematized({ required: ["timestamp"], - select: ["message", "attachments", "type", "data", "timestamp"], + select: ["message", "attachments", "timestamp", "reply_to"], }, async (req, res) => { const post = await CreatePost({ user_id: req.user._id.toString(), message: req.selection.message, timestamp: req.selection.timestamp, attachments: req.selection.attachments, - type: req.selection.type, - data: req.selection.data, + reply_to: req.selection.reply_to, }) return res.json(post) diff --git a/packages/server/src/controllers/PostsController/endpoints/deletePost.js b/packages/server/services/main/controllers/PostsController/endpoints/deletePost.js similarity index 100% rename from packages/server/src/controllers/PostsController/endpoints/deletePost.js rename to packages/server/services/main/controllers/PostsController/endpoints/deletePost.js diff --git a/packages/server/src/controllers/PostsController/endpoints/explorePosts.js b/packages/server/services/main/controllers/PostsController/endpoints/explorePosts.js similarity index 100% rename from packages/server/src/controllers/PostsController/endpoints/explorePosts.js rename to packages/server/services/main/controllers/PostsController/endpoints/explorePosts.js diff --git a/packages/server/src/controllers/PostsController/endpoints/getPostData.js b/packages/server/services/main/controllers/PostsController/endpoints/getPostData.js similarity index 100% rename from packages/server/src/controllers/PostsController/endpoints/getPostData.js rename to packages/server/services/main/controllers/PostsController/endpoints/getPostData.js diff --git a/packages/server/src/controllers/PostsController/endpoints/getPostFromUser.js b/packages/server/services/main/controllers/PostsController/endpoints/getPostFromUser.js similarity index 100% rename from packages/server/src/controllers/PostsController/endpoints/getPostFromUser.js rename to packages/server/services/main/controllers/PostsController/endpoints/getPostFromUser.js diff --git a/packages/server/services/main/controllers/PostsController/endpoints/getPostReplies.js b/packages/server/services/main/controllers/PostsController/endpoints/getPostReplies.js new file mode 100755 index 00000000..05fa5cca --- /dev/null +++ b/packages/server/services/main/controllers/PostsController/endpoints/getPostReplies.js @@ -0,0 +1,29 @@ +import { Post } from "@shared-classes/DbModels" +import fullfillPostsData from "@utils/fullfillPostsData" + +export default { + method: "GET", + route: "/post/:post_id/replies", + middlewares: ["withOptionalAuthentication"], + fn: async (req, res) => { + const { + limit = 50, + offset = 0, + } = req.query + + let replies = await Post.find({ + reply_to: req.params.post_id, + }) + .skip(offset) + .limit(limit) + .sort({ created_at: -1 }) + + replies = await fullfillPostsData({ + posts: replies, + for_user_id: req.user?._id.toString(), + skip: offset, + }) + + return res.json(replies) + } +} \ No newline at end of file diff --git a/packages/server/src/controllers/PostsController/endpoints/savedPosts.js b/packages/server/services/main/controllers/PostsController/endpoints/savedPosts.js similarity index 100% rename from packages/server/src/controllers/PostsController/endpoints/savedPosts.js rename to packages/server/services/main/controllers/PostsController/endpoints/savedPosts.js diff --git a/packages/server/src/controllers/PostsController/endpoints/toogleLike.js b/packages/server/services/main/controllers/PostsController/endpoints/toogleLike.js similarity index 100% rename from packages/server/src/controllers/PostsController/endpoints/toogleLike.js rename to packages/server/services/main/controllers/PostsController/endpoints/toogleLike.js diff --git a/packages/server/src/controllers/PostsController/endpoints/toogleSave.js b/packages/server/services/main/controllers/PostsController/endpoints/toogleSave.js similarity index 100% rename from packages/server/src/controllers/PostsController/endpoints/toogleSave.js rename to packages/server/services/main/controllers/PostsController/endpoints/toogleSave.js diff --git a/packages/server/src/controllers/PostsController/index.js b/packages/server/services/main/controllers/PostsController/index.js similarity index 100% rename from packages/server/src/controllers/PostsController/index.js rename to packages/server/services/main/controllers/PostsController/index.js diff --git a/packages/server/src/controllers/PostsController/services/createPost.js b/packages/server/services/main/controllers/PostsController/services/createPost.js similarity index 92% rename from packages/server/src/controllers/PostsController/services/createPost.js rename to packages/server/services/main/controllers/PostsController/services/createPost.js index 13ea2aec..c806c225 100755 --- a/packages/server/src/controllers/PostsController/services/createPost.js +++ b/packages/server/services/main/controllers/PostsController/services/createPost.js @@ -5,7 +5,7 @@ import getPostData from "./getPostData" import flagNsfwByAttachments from "./flagNsfwByAttachments" export default async (payload) => { - let { user_id, message, attachments, type, data, timestamp } = payload + let { user_id, message, attachments, timestamp, reply_to } = payload // check if is a Array and have at least one element const isAttachmentsValid = Array.isArray(attachments) && attachments.length > 0 @@ -22,13 +22,12 @@ export default async (payload) => { const created_at = momentTimezone.tz(Date.now(), current_timezone).format() const post = new Post({ - type: type, created_at: created_at, user_id: typeof user_id === "object" ? user_id.toString() : user_id, message: message, attachments: attachments ?? [], timestamp: timestamp, - data: data, + reply_to: reply_to, flags: [], }) diff --git a/packages/server/src/controllers/PostsController/services/deletePost.js b/packages/server/services/main/controllers/PostsController/services/deletePost.js similarity index 100% rename from packages/server/src/controllers/PostsController/services/deletePost.js rename to packages/server/services/main/controllers/PostsController/services/deletePost.js diff --git a/packages/server/src/controllers/PostsController/services/flagNsfwByAttachments.js b/packages/server/services/main/controllers/PostsController/services/flagNsfwByAttachments.js similarity index 100% rename from packages/server/src/controllers/PostsController/services/flagNsfwByAttachments.js rename to packages/server/services/main/controllers/PostsController/services/flagNsfwByAttachments.js diff --git a/packages/server/src/controllers/PostsController/services/getPostData.js b/packages/server/services/main/controllers/PostsController/services/getPostData.js similarity index 100% rename from packages/server/src/controllers/PostsController/services/getPostData.js rename to packages/server/services/main/controllers/PostsController/services/getPostData.js diff --git a/packages/server/src/controllers/PostsController/services/index.js b/packages/server/services/main/controllers/PostsController/services/index.js similarity index 100% rename from packages/server/src/controllers/PostsController/services/index.js rename to packages/server/services/main/controllers/PostsController/services/index.js diff --git a/packages/server/src/controllers/PostsController/services/modifyPostData.js b/packages/server/services/main/controllers/PostsController/services/modifyPostData.js similarity index 100% rename from packages/server/src/controllers/PostsController/services/modifyPostData.js rename to packages/server/services/main/controllers/PostsController/services/modifyPostData.js diff --git a/packages/server/src/controllers/PostsController/services/toggleLike.js b/packages/server/services/main/controllers/PostsController/services/toggleLike.js similarity index 100% rename from packages/server/src/controllers/PostsController/services/toggleLike.js rename to packages/server/services/main/controllers/PostsController/services/toggleLike.js diff --git a/packages/server/src/controllers/PostsController/services/togglePostSave.js b/packages/server/services/main/controllers/PostsController/services/togglePostSave.js similarity index 100% rename from packages/server/src/controllers/PostsController/services/togglePostSave.js rename to packages/server/services/main/controllers/PostsController/services/togglePostSave.js diff --git a/packages/server/src/controllers/PublicController/endpoints/featuredWallpapers.js b/packages/server/services/main/controllers/PublicController/endpoints/featuredWallpapers.js similarity index 100% rename from packages/server/src/controllers/PublicController/endpoints/featuredWallpapers.js rename to packages/server/services/main/controllers/PublicController/endpoints/featuredWallpapers.js diff --git a/packages/server/src/controllers/PublicController/endpoints/getReleasesNotes.js b/packages/server/services/main/controllers/PublicController/endpoints/getReleasesNotes.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/PublicController/endpoints/getReleasesNotes.js rename to packages/server/services/main/controllers/PublicController/endpoints/getReleasesNotes.js diff --git a/packages/server/src/controllers/PublicController/endpoints/globalServerLimits.js b/packages/server/services/main/controllers/PublicController/endpoints/globalServerLimits.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/PublicController/endpoints/globalServerLimits.js rename to packages/server/services/main/controllers/PublicController/endpoints/globalServerLimits.js diff --git a/packages/server/src/controllers/PublicController/endpoints/ping.js b/packages/server/services/main/controllers/PublicController/endpoints/ping.js similarity index 100% rename from packages/server/src/controllers/PublicController/endpoints/ping.js rename to packages/server/services/main/controllers/PublicController/endpoints/ping.js diff --git a/packages/server/src/controllers/PublicController/endpoints/postingPolicy.js b/packages/server/services/main/controllers/PublicController/endpoints/postingPolicy.js similarity index 100% rename from packages/server/src/controllers/PublicController/endpoints/postingPolicy.js rename to packages/server/services/main/controllers/PublicController/endpoints/postingPolicy.js diff --git a/packages/server/src/controllers/PublicController/endpoints/serverHealth.js b/packages/server/services/main/controllers/PublicController/endpoints/serverHealth.js similarity index 100% rename from packages/server/src/controllers/PublicController/endpoints/serverHealth.js rename to packages/server/services/main/controllers/PublicController/endpoints/serverHealth.js diff --git a/packages/server/services/main/controllers/PublicController/incidentPrediction.js b/packages/server/services/main/controllers/PublicController/incidentPrediction.js new file mode 100755 index 00000000..3acdff5a --- /dev/null +++ b/packages/server/services/main/controllers/PublicController/incidentPrediction.js @@ -0,0 +1,27 @@ +// import { Schematized } from "../../../lib" +// import IndecentPrediction from "../../../utils/indecent-prediction" + +// export default { +// method: "GET", +// route: "/indecent_prediction", +// fn: Schematized({ +// select: ["url"], +// required: ["url"], +// }, async (req, res) => { +// const { url } = req.selection + +// const predictions = await IndecentPrediction({ +// url, +// }).catch((err) => { +// res.status(500).json({ +// error: err.message, +// }) + +// return null +// }) + +// if (predictions) { +// return res.json(predictions) +// } +// }) +// } \ No newline at end of file diff --git a/packages/server/src/controllers/PublicController/index.js b/packages/server/services/main/controllers/PublicController/index.js similarity index 54% rename from packages/server/src/controllers/PublicController/index.js rename to packages/server/services/main/controllers/PublicController/index.js index b40895a8..3ff1e414 100755 --- a/packages/server/src/controllers/PublicController/index.js +++ b/packages/server/services/main/controllers/PublicController/index.js @@ -1,5 +1,5 @@ -import { Controller } from "linebridge/dist/server" -import generateEndpointsFromDir from "linebridge/dist/server/lib/generateEndpointsFromDir" +import { Controller } from "linebridge/src/server" +import generateEndpointsFromDir from "linebridge/src/server/lib/generateEndpointsFromDir" export default class PublicController extends Controller { static refName = "PublicController" diff --git a/packages/server/src/controllers/RolesController/index.js b/packages/server/services/main/controllers/RolesController/index.js similarity index 100% rename from packages/server/src/controllers/RolesController/index.js rename to packages/server/services/main/controllers/RolesController/index.js diff --git a/packages/server/src/controllers/SearchController/endpoints/getQuickSearch.js b/packages/server/services/main/controllers/SearchController/endpoints/getQuickSearch.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/SearchController/endpoints/getQuickSearch.js rename to packages/server/services/main/controllers/SearchController/endpoints/getQuickSearch.js diff --git a/packages/server/src/controllers/SearchController/endpoints/getSearch.js b/packages/server/services/main/controllers/SearchController/endpoints/getSearch.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/SearchController/endpoints/getSearch.js rename to packages/server/services/main/controllers/SearchController/endpoints/getSearch.js diff --git a/packages/server/src/controllers/SearchController/index.js b/packages/server/services/main/controllers/SearchController/index.js similarity index 100% rename from packages/server/src/controllers/SearchController/index.js rename to packages/server/services/main/controllers/SearchController/index.js diff --git a/packages/server/src/controllers/SessionController/endpoints/deleteAllSelfSessions.js b/packages/server/services/main/controllers/SessionController/endpoints/deleteAllSelfSessions.js similarity index 100% rename from packages/server/src/controllers/SessionController/endpoints/deleteAllSelfSessions.js rename to packages/server/services/main/controllers/SessionController/endpoints/deleteAllSelfSessions.js diff --git a/packages/server/src/controllers/SessionController/endpoints/deleteCurrentSession.js b/packages/server/services/main/controllers/SessionController/endpoints/deleteCurrentSession.js similarity index 100% rename from packages/server/src/controllers/SessionController/endpoints/deleteCurrentSession.js rename to packages/server/services/main/controllers/SessionController/endpoints/deleteCurrentSession.js diff --git a/packages/server/src/controllers/SessionController/endpoints/getCurrentSession.js b/packages/server/services/main/controllers/SessionController/endpoints/getCurrentSession.js similarity index 100% rename from packages/server/src/controllers/SessionController/endpoints/getCurrentSession.js rename to packages/server/services/main/controllers/SessionController/endpoints/getCurrentSession.js diff --git a/packages/server/src/controllers/SessionController/endpoints/getSessions.js b/packages/server/services/main/controllers/SessionController/endpoints/getSessions.js similarity index 100% rename from packages/server/src/controllers/SessionController/endpoints/getSessions.js rename to packages/server/services/main/controllers/SessionController/endpoints/getSessions.js diff --git a/packages/server/src/controllers/SessionController/endpoints/regenerateSessionToken.js b/packages/server/services/main/controllers/SessionController/endpoints/regenerateSessionToken.js similarity index 100% rename from packages/server/src/controllers/SessionController/endpoints/regenerateSessionToken.js rename to packages/server/services/main/controllers/SessionController/endpoints/regenerateSessionToken.js diff --git a/packages/server/src/controllers/SessionController/endpoints/validateSession.js b/packages/server/services/main/controllers/SessionController/endpoints/validateSession.js similarity index 100% rename from packages/server/src/controllers/SessionController/endpoints/validateSession.js rename to packages/server/services/main/controllers/SessionController/endpoints/validateSession.js diff --git a/packages/server/src/controllers/SessionController/index.js b/packages/server/services/main/controllers/SessionController/index.js similarity index 100% rename from packages/server/src/controllers/SessionController/index.js rename to packages/server/services/main/controllers/SessionController/index.js diff --git a/packages/server/src/controllers/StatusController/endpoints/getConnectedFollowedUsers.js b/packages/server/services/main/controllers/StatusController/endpoints/getConnectedFollowedUsers.js similarity index 100% rename from packages/server/src/controllers/StatusController/endpoints/getConnectedFollowedUsers.js rename to packages/server/services/main/controllers/StatusController/endpoints/getConnectedFollowedUsers.js diff --git a/packages/server/src/controllers/StatusController/index.js b/packages/server/services/main/controllers/StatusController/index.js similarity index 100% rename from packages/server/src/controllers/StatusController/index.js rename to packages/server/services/main/controllers/StatusController/index.js diff --git a/packages/server/src/controllers/StatusController/services/getConnectedUsersFollowing.js b/packages/server/services/main/controllers/StatusController/services/getConnectedUsersFollowing.js similarity index 100% rename from packages/server/src/controllers/StatusController/services/getConnectedUsersFollowing.js rename to packages/server/services/main/controllers/StatusController/services/getConnectedUsersFollowing.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/deleteStreamingProfile.js b/packages/server/services/main/controllers/StreamingController/endpoints/deleteStreamingProfile.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/deleteStreamingProfile.js rename to packages/server/services/main/controllers/StreamingController/endpoints/deleteStreamingProfile.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/getProfileFromStreamKey.js b/packages/server/services/main/controllers/StreamingController/endpoints/getProfileFromStreamKey.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/getProfileFromStreamKey.js rename to packages/server/services/main/controllers/StreamingController/endpoints/getProfileFromStreamKey.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/getProfilesVisibility.js b/packages/server/services/main/controllers/StreamingController/endpoints/getProfilesVisibility.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/getProfilesVisibility.js rename to packages/server/services/main/controllers/StreamingController/endpoints/getProfilesVisibility.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/getStreamingCategories.js b/packages/server/services/main/controllers/StreamingController/endpoints/getStreamingCategories.js similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/getStreamingCategories.js rename to packages/server/services/main/controllers/StreamingController/endpoints/getStreamingCategories.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/getStreamingProfiles.js b/packages/server/services/main/controllers/StreamingController/endpoints/getStreamingProfiles.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/getStreamingProfiles.js rename to packages/server/services/main/controllers/StreamingController/endpoints/getStreamingProfiles.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/getStreams.js b/packages/server/services/main/controllers/StreamingController/endpoints/getStreams.js similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/getStreams.js rename to packages/server/services/main/controllers/StreamingController/endpoints/getStreams.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/handleStreamPublish.js b/packages/server/services/main/controllers/StreamingController/endpoints/handleStreamPublish.js similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/handleStreamPublish.js rename to packages/server/services/main/controllers/StreamingController/endpoints/handleStreamPublish.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/handleStreamUnpublish.js b/packages/server/services/main/controllers/StreamingController/endpoints/handleStreamUnpublish.js similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/handleStreamUnpublish.js rename to packages/server/services/main/controllers/StreamingController/endpoints/handleStreamUnpublish.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/postStreamingProfile.js b/packages/server/services/main/controllers/StreamingController/endpoints/postStreamingProfile.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/postStreamingProfile.js rename to packages/server/services/main/controllers/StreamingController/endpoints/postStreamingProfile.js diff --git a/packages/server/src/controllers/StreamingController/endpoints/regenerateStreamingKey.js b/packages/server/services/main/controllers/StreamingController/endpoints/regenerateStreamingKey.js similarity index 100% rename from packages/server/src/controllers/StreamingController/endpoints/regenerateStreamingKey.js rename to packages/server/services/main/controllers/StreamingController/endpoints/regenerateStreamingKey.js diff --git a/packages/server/src/controllers/StreamingController/index.js b/packages/server/services/main/controllers/StreamingController/index.js similarity index 100% rename from packages/server/src/controllers/StreamingController/index.js rename to packages/server/services/main/controllers/StreamingController/index.js diff --git a/packages/server/src/controllers/UserController/endpoints/checkEmailAvailable.js b/packages/server/services/main/controllers/UserController/endpoints/checkEmailAvailable.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/checkEmailAvailable.js rename to packages/server/services/main/controllers/UserController/endpoints/checkEmailAvailable.js diff --git a/packages/server/src/controllers/UserController/endpoints/checkUsernameAvailable.js b/packages/server/services/main/controllers/UserController/endpoints/checkUsernameAvailable.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/checkUsernameAvailable.js rename to packages/server/services/main/controllers/UserController/endpoints/checkUsernameAvailable.js diff --git a/packages/server/src/controllers/UserController/endpoints/getConnectedFollowingUsers.js b/packages/server/services/main/controllers/UserController/endpoints/getConnectedFollowingUsers.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/getConnectedFollowingUsers.js rename to packages/server/services/main/controllers/UserController/endpoints/getConnectedFollowingUsers.js diff --git a/packages/server/src/controllers/UserController/endpoints/getUserData.js b/packages/server/services/main/controllers/UserController/endpoints/getUserData.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/getUserData.js rename to packages/server/services/main/controllers/UserController/endpoints/getUserData.js diff --git a/packages/server/src/controllers/UserController/endpoints/getUsersData.js b/packages/server/services/main/controllers/UserController/endpoints/getUsersData.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/getUsersData.js rename to packages/server/services/main/controllers/UserController/endpoints/getUsersData.js diff --git a/packages/server/src/controllers/UserController/endpoints/resolveUserIdFromUsername.js b/packages/server/services/main/controllers/UserController/endpoints/resolveUserIdFromUsername.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/resolveUserIdFromUsername.js rename to packages/server/services/main/controllers/UserController/endpoints/resolveUserIdFromUsername.js diff --git a/packages/server/src/controllers/UserController/endpoints/selfDeletePublicName.js b/packages/server/services/main/controllers/UserController/endpoints/selfDeletePublicName.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/selfDeletePublicName.js rename to packages/server/services/main/controllers/UserController/endpoints/selfDeletePublicName.js diff --git a/packages/server/src/controllers/UserController/endpoints/selfUpdateData.js b/packages/server/services/main/controllers/UserController/endpoints/selfUpdateData.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/selfUpdateData.js rename to packages/server/services/main/controllers/UserController/endpoints/selfUpdateData.js diff --git a/packages/server/src/controllers/UserController/endpoints/selfUpdatePassword.js b/packages/server/services/main/controllers/UserController/endpoints/selfUpdatePassword.js similarity index 100% rename from packages/server/src/controllers/UserController/endpoints/selfUpdatePassword.js rename to packages/server/services/main/controllers/UserController/endpoints/selfUpdatePassword.js diff --git a/packages/server/src/controllers/UserController/index.js b/packages/server/services/main/controllers/UserController/index.js similarity index 100% rename from packages/server/src/controllers/UserController/index.js rename to packages/server/services/main/controllers/UserController/index.js diff --git a/packages/server/src/controllers/UserController/services/createUser.js b/packages/server/services/main/controllers/UserController/services/createUser.js similarity index 100% rename from packages/server/src/controllers/UserController/services/createUser.js rename to packages/server/services/main/controllers/UserController/services/createUser.js diff --git a/packages/server/src/controllers/UserController/services/getConnectedUsersFollowing.js b/packages/server/services/main/controllers/UserController/services/getConnectedUsersFollowing.js similarity index 100% rename from packages/server/src/controllers/UserController/services/getConnectedUsersFollowing.js rename to packages/server/services/main/controllers/UserController/services/getConnectedUsersFollowing.js diff --git a/packages/server/src/controllers/UserController/services/updateUserData.js b/packages/server/services/main/controllers/UserController/services/updateUserData.js similarity index 100% rename from packages/server/src/controllers/UserController/services/updateUserData.js rename to packages/server/services/main/controllers/UserController/services/updateUserData.js diff --git a/packages/server/src/controllers/UserController/services/updateUserPassword.js b/packages/server/services/main/controllers/UserController/services/updateUserPassword.js similarity index 100% rename from packages/server/src/controllers/UserController/services/updateUserPassword.js rename to packages/server/services/main/controllers/UserController/services/updateUserPassword.js diff --git a/packages/server/src/controllers/index.js b/packages/server/services/main/controllers/index.js similarity index 100% rename from packages/server/src/controllers/index.js rename to packages/server/services/main/controllers/index.js diff --git a/packages/server/src/events/index.js b/packages/server/services/main/events/index.js similarity index 100% rename from packages/server/src/events/index.js rename to packages/server/services/main/events/index.js diff --git a/packages/server/src/events/user_connected.js b/packages/server/services/main/events/user_connected.js similarity index 100% rename from packages/server/src/events/user_connected.js rename to packages/server/services/main/events/user_connected.js diff --git a/packages/server/src/events/user_created.js b/packages/server/services/main/events/user_created.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/events/user_created.js rename to packages/server/services/main/events/user_created.js diff --git a/packages/server/src/events/user_disconnected.js b/packages/server/services/main/events/user_disconnected.js similarity index 100% rename from packages/server/src/events/user_disconnected.js rename to packages/server/services/main/events/user_disconnected.js diff --git a/packages/server/src/fixments/additions_to_attachments.js b/packages/server/services/main/fixments/additions_to_attachments.js similarity index 100% rename from packages/server/src/fixments/additions_to_attachments.js rename to packages/server/services/main/fixments/additions_to_attachments.js diff --git a/packages/server/src/fixments/migrate_posts_likes.js b/packages/server/services/main/fixments/migrate_posts_likes.js similarity index 100% rename from packages/server/src/fixments/migrate_posts_likes.js rename to packages/server/services/main/fixments/migrate_posts_likes.js diff --git a/packages/server/src/fixments/move_playlist_to_release.js b/packages/server/services/main/fixments/move_playlist_to_release.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/fixments/move_playlist_to_release.js rename to packages/server/services/main/fixments/move_playlist_to_release.js diff --git a/packages/server/src/lib/checkUserAdmin/index.js b/packages/server/services/main/lib/checkUserAdmin/index.js similarity index 100% rename from packages/server/src/lib/checkUserAdmin/index.js rename to packages/server/services/main/lib/checkUserAdmin/index.js diff --git a/packages/server/src/lib/chunkedUpload/index.js b/packages/server/services/main/lib/chunkedUpload/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/lib/chunkedUpload/index.js rename to packages/server/services/main/lib/chunkedUpload/index.js diff --git a/packages/server/src/lib/index.js b/packages/server/services/main/lib/index.js similarity index 100% rename from packages/server/src/lib/index.js rename to packages/server/services/main/lib/index.js diff --git a/packages/server/src/lib/schematized/index.js b/packages/server/services/main/lib/schematized/index.js similarity index 100% rename from packages/server/src/lib/schematized/index.js rename to packages/server/services/main/lib/schematized/index.js diff --git a/packages/server/src/lib/secureEntry/index.js b/packages/server/services/main/lib/secureEntry/index.js similarity index 100% rename from packages/server/src/lib/secureEntry/index.js rename to packages/server/services/main/lib/secureEntry/index.js diff --git a/packages/server/src/lib/token/index.js b/packages/server/services/main/lib/token/index.js similarity index 100% rename from packages/server/src/lib/token/index.js rename to packages/server/services/main/lib/token/index.js diff --git a/packages/server/src/lib/videoTranscode/index.js b/packages/server/services/main/lib/videoTranscode/index.js similarity index 100% rename from packages/server/src/lib/videoTranscode/index.js rename to packages/server/services/main/lib/videoTranscode/index.js diff --git a/packages/server/src/index.js b/packages/server/services/main/main.service.js similarity index 86% rename from packages/server/src/index.js rename to packages/server/services/main/main.service.js index 763a5733..caa6d396 100755 --- a/packages/server/src/index.js +++ b/packages/server/services/main/main.service.js @@ -1,23 +1,14 @@ -global.FORCE_ENV = "dev" - -import Boot from "linebridge/bootstrap" -import { Server } from "linebridge/dist/server" - -import EventEmitter from "@foxify/events" +import { Server } from "linebridge/src/server" import { Config, User } from "@shared-classes/DbModels" import DbManager from "@shared-classes/DbManager" -import RedisClient from "@shared-classes/RedisClient" import StorageClient from "@shared-classes/StorageClient" import Token from "@lib/token" -import internalEvents from "./events" - export default class API extends Server { static refName = "MAIN-API" static listen_port = process.env.HTTP_LISTEN_PORT || 3010 - static requireWSAuth = true constructor(params) { @@ -39,29 +30,16 @@ export default class API extends Server { middlewares = require("@middlewares") controllers = require("@controllers") - - redis = global.redis = RedisClient({ - withWsAdapter: true - }) - - DB = new DbManager() - - eventBus = new EventEmitter() + events = require("./events") storage = global.storage = StorageClient() - - events = internalEvents + DB = new DbManager() async onInitialize() { - for (const [eventName, eventHandler] of Object.entries(internalEvents)) { - this.eventBus.on(eventName, eventHandler) - } - - await this.redis.initialize() await this.DB.initialize() - await this.initializeConfigDB() - await this.storage.initialize() + + await this.initializeConfigDB() await this.checkSetup() } diff --git a/packages/server/src/middlewares/index.js b/packages/server/services/main/middlewares/index.js similarity index 100% rename from packages/server/src/middlewares/index.js rename to packages/server/services/main/middlewares/index.js diff --git a/packages/server/src/middlewares/onlyAdmin/index.js b/packages/server/services/main/middlewares/onlyAdmin/index.js similarity index 100% rename from packages/server/src/middlewares/onlyAdmin/index.js rename to packages/server/services/main/middlewares/onlyAdmin/index.js diff --git a/packages/server/src/middlewares/permissions/index.js b/packages/server/services/main/middlewares/permissions/index.js similarity index 100% rename from packages/server/src/middlewares/permissions/index.js rename to packages/server/services/main/middlewares/permissions/index.js diff --git a/packages/server/src/middlewares/roles/index.js b/packages/server/services/main/middlewares/roles/index.js similarity index 100% rename from packages/server/src/middlewares/roles/index.js rename to packages/server/services/main/middlewares/roles/index.js diff --git a/packages/server/src/middlewares/withAuthentication/index.js b/packages/server/services/main/middlewares/withAuthentication/index.js similarity index 100% rename from packages/server/src/middlewares/withAuthentication/index.js rename to packages/server/services/main/middlewares/withAuthentication/index.js diff --git a/packages/server/src/middlewares/withOptionalAuthentication/index.js b/packages/server/services/main/middlewares/withOptionalAuthentication/index.js similarity index 100% rename from packages/server/src/middlewares/withOptionalAuthentication/index.js rename to packages/server/services/main/middlewares/withOptionalAuthentication/index.js diff --git a/packages/server/services/main/package.json b/packages/server/services/main/package.json new file mode 100755 index 00000000..67079f21 --- /dev/null +++ b/packages/server/services/main/package.json @@ -0,0 +1,34 @@ +{ + "name": "main", + "version": "0.60.2", + "license": "MIT", + "proxy": { + "path": "/main", + "port": 3010 + }, + "dependencies": { + "@octokit/rest": "^20.0.2", + "@tensorflow/tfjs-node": "^4.17.0", + "axios": "^1.6.7", + "backblaze-b2": "^1.7.0", + "bcrypt": "^5.1.1", + "busboy": "^1.6.0", + "connect-mongo": "^5.1.0", + "content-range": "^2.0.2", + "ioredis": "^5.3.2", + "jsonwebtoken": "^9.0.2", + "linebridge": "^0.16.0", + "luxon": "^3.4.4", + "mime-types": "^2.1.35", + "minio": "^7.1.3", + "moment": "^2.30.1", + "moment-timezone": "^0.5.45", + "mongoose": "^8.1.2", + "normalize-url": "^8.0.0", + "nsfwjs": "^3.0.0", + "p-map": "^4.0.0", + "p-queue": "^7.3.4", + "path-to-regexp": "^6.2.1", + "sharp": "^0.33.2" + } +} diff --git a/packages/server/src/services/fetchRemoteStreams/index.js b/packages/server/services/main/services/fetchRemoteStreams/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/services/fetchRemoteStreams/index.js rename to packages/server/services/main/services/fetchRemoteStreams/index.js diff --git a/packages/server/src/services/getMutuals/index.js b/packages/server/services/main/services/getMutuals/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/services/getMutuals/index.js rename to packages/server/services/main/services/getMutuals/index.js diff --git a/packages/server/src/services/newStreamingProfile/index.js b/packages/server/services/main/services/newStreamingProfile/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/services/newStreamingProfile/index.js rename to packages/server/services/main/services/newStreamingProfile/index.js diff --git a/packages/server/src/setup/authorizeSelfServerToken/index.js b/packages/server/services/main/setup/authorizeSelfServerToken/index.js similarity index 100% rename from packages/server/src/setup/authorizeSelfServerToken/index.js rename to packages/server/services/main/setup/authorizeSelfServerToken/index.js diff --git a/packages/server/src/setup/dbAdmin/index.js b/packages/server/services/main/setup/dbAdmin/index.js similarity index 100% rename from packages/server/src/setup/dbAdmin/index.js rename to packages/server/services/main/setup/dbAdmin/index.js diff --git a/packages/server/src/setup/index.js b/packages/server/services/main/setup/index.js similarity index 100% rename from packages/server/src/setup/index.js rename to packages/server/services/main/setup/index.js diff --git a/packages/server/src/utils/aggregate-error/index.js b/packages/server/services/main/utils/aggregate-error/index.js similarity index 100% rename from packages/server/src/utils/aggregate-error/index.js rename to packages/server/services/main/utils/aggregate-error/index.js diff --git a/packages/server/src/utils/clean-stack/index.js b/packages/server/services/main/utils/clean-stack/index.js similarity index 100% rename from packages/server/src/utils/clean-stack/index.js rename to packages/server/services/main/utils/clean-stack/index.js diff --git a/packages/server/src/utils/compose-streaming-sources/index.js b/packages/server/services/main/utils/compose-streaming-sources/index.js old mode 100644 new mode 100755 similarity index 88% rename from packages/server/src/utils/compose-streaming-sources/index.js rename to packages/server/services/main/utils/compose-streaming-sources/index.js index dca4b990..29214462 --- a/packages/server/src/utils/compose-streaming-sources/index.js +++ b/packages/server/services/main/utils/compose-streaming-sources/index.js @@ -8,6 +8,7 @@ export default (username, profile_id) => { return { ingest: process.env.STREAMING_INGEST_SERVER, rtmp: `${streamingServerAPIUri}/${streamId}`, + rtsp: `rtsp://${process.env.STREAMING_INGEST_SERVER}:8554/live/${streamId}`, hls: `${streamingServerAPIUri}/stream/hls/${streamId}`, flv: `${streamingServerAPIUri}/stream/flv/${streamId}`, mp3: `${streamingServerAPIUri}/stream/mp3/${streamId}`, diff --git a/packages/server/src/utils/createTokenRegeneration/index.js b/packages/server/services/main/utils/createTokenRegeneration/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/server/src/utils/createTokenRegeneration/index.js rename to packages/server/services/main/utils/createTokenRegeneration/index.js diff --git a/packages/server/src/utils/download-file/index.js b/packages/server/services/main/utils/download-file/index.js similarity index 100% rename from packages/server/src/utils/download-file/index.js rename to packages/server/services/main/utils/download-file/index.js diff --git a/packages/server/src/utils/escape-string-regexp/index.js b/packages/server/services/main/utils/escape-string-regexp/index.js similarity index 100% rename from packages/server/src/utils/escape-string-regexp/index.js rename to packages/server/services/main/utils/escape-string-regexp/index.js diff --git a/packages/server/src/utils/fullfillPostsData/index.js b/packages/server/services/main/utils/fullfillPostsData/index.js similarity index 100% rename from packages/server/src/utils/fullfillPostsData/index.js rename to packages/server/services/main/utils/fullfillPostsData/index.js diff --git a/packages/server/src/utils/image-byte-array/index.js b/packages/server/services/main/utils/image-byte-array/index.js similarity index 100% rename from packages/server/src/utils/image-byte-array/index.js rename to packages/server/services/main/utils/image-byte-array/index.js diff --git a/packages/server/src/utils/indecent-prediction/index.js b/packages/server/services/main/utils/indecent-prediction/index.js similarity index 100% rename from packages/server/src/utils/indecent-prediction/index.js rename to packages/server/services/main/utils/indecent-prediction/index.js diff --git a/packages/server/src/utils/indent-string/index.js b/packages/server/services/main/utils/indent-string/index.js similarity index 100% rename from packages/server/src/utils/indent-string/index.js rename to packages/server/services/main/utils/indent-string/index.js diff --git a/packages/server/src/utils/is-nsfw/index.js b/packages/server/services/main/utils/is-nsfw/index.js similarity index 100% rename from packages/server/src/utils/is-nsfw/index.js rename to packages/server/services/main/utils/is-nsfw/index.js diff --git a/packages/server/src/utils/pMap/index.js b/packages/server/services/main/utils/pMap/index.js similarity index 100% rename from packages/server/src/utils/pMap/index.js rename to packages/server/services/main/utils/pMap/index.js diff --git a/packages/server/src/utils/read-image/index.js b/packages/server/services/main/utils/read-image/index.js similarity index 100% rename from packages/server/src/utils/read-image/index.js rename to packages/server/services/main/utils/read-image/index.js diff --git a/packages/marketplace_server/src/controllers/static/index.js b/packages/server/services/marketplace/controllers/static/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/static/index.js rename to packages/server/services/marketplace/controllers/static/index.js diff --git a/packages/marketplace_server/src/controllers/widgets/index.js b/packages/server/services/marketplace/controllers/widgets/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/widgets/index.js rename to packages/server/services/marketplace/controllers/widgets/index.js diff --git a/packages/marketplace_server/src/controllers/widgets/routes/get/:widgetId.js b/packages/server/services/marketplace/controllers/widgets/routes/get/:widgetId.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/widgets/routes/get/:widgetId.js rename to packages/server/services/marketplace/controllers/widgets/routes/get/:widgetId.js diff --git a/packages/marketplace_server/src/controllers/widgets/routes/get/:widgetId/debug.jsx b/packages/server/services/marketplace/controllers/widgets/routes/get/:widgetId/debug.jsx old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/widgets/routes/get/:widgetId/debug.jsx rename to packages/server/services/marketplace/controllers/widgets/routes/get/:widgetId/debug.jsx diff --git a/packages/marketplace_server/src/controllers/widgets/routes/get/:widgetId/manifest.js b/packages/server/services/marketplace/controllers/widgets/routes/get/:widgetId/manifest.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/widgets/routes/get/:widgetId/manifest.js rename to packages/server/services/marketplace/controllers/widgets/routes/get/:widgetId/manifest.js diff --git a/packages/marketplace_server/src/controllers/widgets/routes/get/index.js b/packages/server/services/marketplace/controllers/widgets/routes/get/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/widgets/routes/get/index.js rename to packages/server/services/marketplace/controllers/widgets/routes/get/index.js diff --git a/packages/marketplace_server/src/controllers/widgets/routes/get/user/:user_id.js b/packages/server/services/marketplace/controllers/widgets/routes/get/user/:user_id.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/widgets/routes/get/user/:user_id.js rename to packages/server/services/marketplace/controllers/widgets/routes/get/user/:user_id.js diff --git a/packages/marketplace_server/src/controllers/widgets/routes/post/publish.js b/packages/server/services/marketplace/controllers/widgets/routes/post/publish.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/controllers/widgets/routes/post/publish.js rename to packages/server/services/marketplace/controllers/widgets/routes/post/publish.js diff --git a/packages/marketplace_server/src/api.js b/packages/server/services/marketplace/marketplace.service.js old mode 100644 new mode 100755 similarity index 98% rename from packages/marketplace_server/src/api.js rename to packages/server/services/marketplace/marketplace.service.js index a8aaec89..bd140258 --- a/packages/marketplace_server/src/api.js +++ b/packages/server/services/marketplace/marketplace.service.js @@ -8,7 +8,7 @@ import ComtyClient from "@shared-classes/ComtyClient" import hyperexpress from "hyper-express" -import pkg from "../package.json" +import pkg from "./package.json" export default class API { static useMiddlewaresOrder = ["useLogger", "useCors", "useAuth"] @@ -139,4 +139,6 @@ export default class API { // log server started console.log(`🚀 Server started ready on \n\t - http://${this.listenIp}:${this.listenPort} \n\t - Tooks ${elapsedTimeInMs}ms`) } -} \ No newline at end of file +} + +Boot(API) \ No newline at end of file diff --git a/packages/server/services/marketplace/package.json b/packages/server/services/marketplace/package.json new file mode 100755 index 00000000..5ae41dc4 --- /dev/null +++ b/packages/server/services/marketplace/package.json @@ -0,0 +1,38 @@ +{ + "name": "marketplace", + "version": "0.60.2", + "license": "MIT", + "dependencies": { + "7zip-min": "^1.4.4", + "@foxify/events": "^2.1.0", + "@octokit/rest": "^19.0.7", + "axios": "^1.2.5", + "bcrypt": "^5.1.0", + "busboy": "^1.6.0", + "comty.js": "^0.58.2", + "connect-mongo": "^4.6.0", + "content-range": "^2.0.2", + "dotenv": "^16.0.3", + "form-data": "^4.0.0", + "formidable": "^2.1.1", + "hyper-express": "^6.5.9", + "jsonwebtoken": "^9.0.0", + "linebridge": "0.15.12", + "live-directory": "^3.0.3", + "luxon": "^3.2.1", + "merge-files": "^0.1.2", + "mime-types": "^2.1.35", + "minio": "^7.0.32", + "moment": "^2.29.4", + "moment-timezone": "^0.5.40", + "mongoose": "^6.9.0", + "normalize-url": "^8.0.0", + "p-map": "^6.0.0", + "p-queue": "^7.3.4", + "redis": "^4.6.6", + "sharp": "^0.31.3", + "split-chunk-merge": "^1.0.0", + "sucrase": "^3.32.0", + "uglify-js": "^3.17.4" + } +} \ No newline at end of file diff --git a/packages/marketplace_server/src/useMiddlewares/useAuth/index.js b/packages/server/services/marketplace/useMiddlewares/useAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/useMiddlewares/useAuth/index.js rename to packages/server/services/marketplace/useMiddlewares/useAuth/index.js diff --git a/packages/marketplace_server/src/useMiddlewares/useCors/index.js b/packages/server/services/marketplace/useMiddlewares/useCors/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/useMiddlewares/useCors/index.js rename to packages/server/services/marketplace/useMiddlewares/useCors/index.js diff --git a/packages/marketplace_server/src/useMiddlewares/useLogger/index.js b/packages/server/services/marketplace/useMiddlewares/useLogger/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/useMiddlewares/useLogger/index.js rename to packages/server/services/marketplace/useMiddlewares/useLogger/index.js diff --git a/packages/marketplace_server/src/utils/compileWidgetCode/index.js b/packages/server/services/marketplace/utils/compileWidgetCode/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/utils/compileWidgetCode/index.js rename to packages/server/services/marketplace/utils/compileWidgetCode/index.js diff --git a/packages/marketplace_server/src/utils/createRoutesFromDirectory/index.js b/packages/server/services/marketplace/utils/createRoutesFromDirectory/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/utils/createRoutesFromDirectory/index.js rename to packages/server/services/marketplace/utils/createRoutesFromDirectory/index.js diff --git a/packages/marketplace_server/src/utils/getWidgetCode/index.js b/packages/server/services/marketplace/utils/getWidgetCode/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/utils/getWidgetCode/index.js rename to packages/server/services/marketplace/utils/getWidgetCode/index.js diff --git a/packages/marketplace_server/src/utils/replaceImportsWithRemoteURL/index.js b/packages/server/services/marketplace/utils/replaceImportsWithRemoteURL/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/utils/replaceImportsWithRemoteURL/index.js rename to packages/server/services/marketplace/utils/replaceImportsWithRemoteURL/index.js diff --git a/packages/marketplace_server/src/utils/resolveUrl/index.js b/packages/server/services/marketplace/utils/resolveUrl/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/utils/resolveUrl/index.js rename to packages/server/services/marketplace/utils/resolveUrl/index.js diff --git a/packages/marketplace_server/src/utils/syncDirToRemote/index.js b/packages/server/services/marketplace/utils/syncDirToRemote/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/marketplace_server/src/utils/syncDirToRemote/index.js rename to packages/server/services/marketplace/utils/syncDirToRemote/index.js diff --git a/packages/music_server/src/classes/Room/index.js b/packages/server/services/music/classes/Room/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/classes/Room/index.js rename to packages/server/services/music/classes/Room/index.js diff --git a/packages/music_server/src/classes/RoomsController/index.js b/packages/server/services/music/classes/RoomsController/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/classes/RoomsController/index.js rename to packages/server/services/music/classes/RoomsController/index.js diff --git a/packages/music_server/src/controllers/featured/index.js b/packages/server/services/music/controllers/featured/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/featured/index.js rename to packages/server/services/music/controllers/featured/index.js diff --git a/packages/music_server/src/controllers/featured/routes/get/playlists.js b/packages/server/services/music/controllers/featured/routes/get/playlists.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/featured/routes/get/playlists.js rename to packages/server/services/music/controllers/featured/routes/get/playlists.js diff --git a/packages/music_server/src/controllers/lyrics/index.js b/packages/server/services/music/controllers/lyrics/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/lyrics/index.js rename to packages/server/services/music/controllers/lyrics/index.js diff --git a/packages/music_server/src/controllers/lyrics/routes/get/:track_id.js b/packages/server/services/music/controllers/lyrics/routes/get/:track_id.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/lyrics/routes/get/:track_id.js rename to packages/server/services/music/controllers/lyrics/routes/get/:track_id.js diff --git a/packages/music_server/src/controllers/playlists/index.js b/packages/server/services/music/controllers/playlists/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/playlists/index.js rename to packages/server/services/music/controllers/playlists/index.js diff --git a/packages/music_server/src/controllers/playlists/routes/delete/:playlist_id.js b/packages/server/services/music/controllers/playlists/routes/delete/:playlist_id.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/playlists/routes/delete/:playlist_id.js rename to packages/server/services/music/controllers/playlists/routes/delete/:playlist_id.js diff --git a/packages/music_server/src/controllers/playlists/routes/get/:playlist_id/data.js b/packages/server/services/music/controllers/playlists/routes/get/:playlist_id/data.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/playlists/routes/get/:playlist_id/data.js rename to packages/server/services/music/controllers/playlists/routes/get/:playlist_id/data.js diff --git a/packages/music_server/src/controllers/playlists/routes/get/search.js b/packages/server/services/music/controllers/playlists/routes/get/search.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/playlists/routes/get/search.js rename to packages/server/services/music/controllers/playlists/routes/get/search.js diff --git a/packages/music_server/src/controllers/playlists/routes/get/self.js b/packages/server/services/music/controllers/playlists/routes/get/self.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/playlists/routes/get/self.js rename to packages/server/services/music/controllers/playlists/routes/get/self.js diff --git a/packages/music_server/src/controllers/playlists/routes/post/new.js b/packages/server/services/music/controllers/playlists/routes/post/new.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/playlists/routes/post/new.js rename to packages/server/services/music/controllers/playlists/routes/post/new.js diff --git a/packages/music_server/src/controllers/playlists/services/getTrackById.js b/packages/server/services/music/controllers/playlists/services/getTrackById.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/playlists/services/getTrackById.js rename to packages/server/services/music/controllers/playlists/services/getTrackById.js diff --git a/packages/music_server/src/controllers/releases/index.js b/packages/server/services/music/controllers/releases/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/releases/index.js rename to packages/server/services/music/controllers/releases/index.js diff --git a/packages/music_server/src/controllers/releases/routes/delete/:release_id.js b/packages/server/services/music/controllers/releases/routes/delete/:release_id.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/releases/routes/delete/:release_id.js rename to packages/server/services/music/controllers/releases/routes/delete/:release_id.js diff --git a/packages/music_server/src/controllers/releases/routes/get/:release_id/data.js b/packages/server/services/music/controllers/releases/routes/get/:release_id/data.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/releases/routes/get/:release_id/data.js rename to packages/server/services/music/controllers/releases/routes/get/:release_id/data.js diff --git a/packages/music_server/src/controllers/releases/routes/get/self.js b/packages/server/services/music/controllers/releases/routes/get/self.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/releases/routes/get/self.js rename to packages/server/services/music/controllers/releases/routes/get/self.js diff --git a/packages/music_server/src/controllers/releases/routes/get/user/:user_id.js b/packages/server/services/music/controllers/releases/routes/get/user/:user_id.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/releases/routes/get/user/:user_id.js rename to packages/server/services/music/controllers/releases/routes/get/user/:user_id.js diff --git a/packages/music_server/src/controllers/releases/routes/put/release.js b/packages/server/services/music/controllers/releases/routes/put/release.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/releases/routes/put/release.js rename to packages/server/services/music/controllers/releases/routes/put/release.js diff --git a/packages/music_server/src/controllers/search/index.js b/packages/server/services/music/controllers/search/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/search/index.js rename to packages/server/services/music/controllers/search/index.js diff --git a/packages/music_server/src/controllers/tracks/index.js b/packages/server/services/music/controllers/tracks/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/index.js rename to packages/server/services/music/controllers/tracks/index.js diff --git a/packages/music_server/src/controllers/tracks/routes/delete/:track_id/like.js b/packages/server/services/music/controllers/tracks/routes/delete/:track_id/like.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/routes/delete/:track_id/like.js rename to packages/server/services/music/controllers/tracks/routes/delete/:track_id/like.js diff --git a/packages/music_server/src/controllers/tracks/routes/get/:track_id/data.js b/packages/server/services/music/controllers/tracks/routes/get/:track_id/data.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/routes/get/:track_id/data.js rename to packages/server/services/music/controllers/tracks/routes/get/:track_id/data.js diff --git a/packages/music_server/src/controllers/tracks/routes/get/:track_id/stream.js b/packages/server/services/music/controllers/tracks/routes/get/:track_id/stream.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/routes/get/:track_id/stream.js rename to packages/server/services/music/controllers/tracks/routes/get/:track_id/stream.js diff --git a/packages/music_server/src/controllers/tracks/routes/get/liked.js b/packages/server/services/music/controllers/tracks/routes/get/liked.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/routes/get/liked.js rename to packages/server/services/music/controllers/tracks/routes/get/liked.js diff --git a/packages/music_server/src/controllers/tracks/routes/get/many.js b/packages/server/services/music/controllers/tracks/routes/get/many.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/routes/get/many.js rename to packages/server/services/music/controllers/tracks/routes/get/many.js diff --git a/packages/music_server/src/controllers/tracks/routes/post/:track_id/like.js b/packages/server/services/music/controllers/tracks/routes/post/:track_id/like.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/routes/post/:track_id/like.js rename to packages/server/services/music/controllers/tracks/routes/post/:track_id/like.js diff --git a/packages/music_server/src/controllers/tracks/routes/post/:track_id/refresh-cache.js b/packages/server/services/music/controllers/tracks/routes/post/:track_id/refresh-cache.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/controllers/tracks/routes/post/:track_id/refresh-cache.js rename to packages/server/services/music/controllers/tracks/routes/post/:track_id/refresh-cache.js diff --git a/packages/music_server/src/middlewares/withAuth/index.js b/packages/server/services/music/middlewares/withAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/middlewares/withAuth/index.js rename to packages/server/services/music/middlewares/withAuth/index.js diff --git a/packages/music_server/src/middlewares/withOptionalAuth/index.js b/packages/server/services/music/middlewares/withOptionalAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/middlewares/withOptionalAuth/index.js rename to packages/server/services/music/middlewares/withOptionalAuth/index.js diff --git a/packages/music_server/src/middlewares/withWsAuth.js b/packages/server/services/music/middlewares/withWsAuth.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/middlewares/withWsAuth.js rename to packages/server/services/music/middlewares/withWsAuth.js diff --git a/packages/music_server/src/api.js b/packages/server/services/music/music.service.js similarity index 98% rename from packages/music_server/src/api.js rename to packages/server/services/music/music.service.js index 681c750e..d515c5de 100755 --- a/packages/music_server/src/api.js +++ b/packages/server/services/music/music.service.js @@ -12,9 +12,9 @@ import StorageClient from "@shared-classes/StorageClient" import WebsocketServer from "./ws" -import pkg from "../package.json" +import pkg from "./package.json" -export default class Server { +export default class API { static useMiddlewaresOrder = ["useLogger", "useCors", "useAuth", "useErrorHandler"] eventBus = global.eventBus = new EventEmitter() @@ -184,4 +184,6 @@ export default class Server { // log server started console.log(`🚀 Server started ready on \n\t - http://${this.options.listenHost}:${this.options.listenPort} \n\t - Tooks ${elapsedTimeInMs}ms`) } -} \ No newline at end of file +} + +Boot(API) \ No newline at end of file diff --git a/packages/server/services/music/package.json b/packages/server/services/music/package.json new file mode 100755 index 00000000..7adb9b27 --- /dev/null +++ b/packages/server/services/music/package.json @@ -0,0 +1,30 @@ +{ + "name": "music", + "version": "0.60.2", + "license": "MIT", + "proxyMount": "/music", + "proxy": { + "path": "/main", + "port": 3050 + }, + "dependencies": { + "@foxify/events": "^2.1.0", + "axios": "^1.4.0", + "bcrypt": "5.0.1", + "comty.js": "^0.58.2", + "connect-mongo": "^4.6.0", + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "jsonwebtoken": "8.5.1", + "linebridge": "0.15.12", + "luxon": "^3.0.4", + "minio": "^7.0.32", + "moment": "2.29.4", + "moment-timezone": "0.5.37", + "mongoose": "^6.9.0", + "morgan": "^1.10.0", + "redis": "^4.6.6", + "socket.io": "^4.5.4" + } +} \ No newline at end of file diff --git a/packages/music_server/src/services/findSpotifyId.js b/packages/server/services/music/services/findSpotifyId.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/services/findSpotifyId.js rename to packages/server/services/music/services/findSpotifyId.js diff --git a/packages/music_server/src/services/getEnhancedLyricsFromTrack.js b/packages/server/services/music/services/getEnhancedLyricsFromTrack.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/services/getEnhancedLyricsFromTrack.js rename to packages/server/services/music/services/getEnhancedLyricsFromTrack.js diff --git a/packages/music_server/src/services/removeTracks.js b/packages/server/services/music/services/removeTracks.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/services/removeTracks.js rename to packages/server/services/music/services/removeTracks.js diff --git a/packages/music_server/src/useMiddlewares/useCors/index.js b/packages/server/services/music/useMiddlewares/useCors/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/useMiddlewares/useCors/index.js rename to packages/server/services/music/useMiddlewares/useCors/index.js diff --git a/packages/music_server/src/useMiddlewares/useLogger/index.js b/packages/server/services/music/useMiddlewares/useLogger/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/useMiddlewares/useLogger/index.js rename to packages/server/services/music/useMiddlewares/useLogger/index.js diff --git a/packages/music_server/src/utils/composePayloadData/index.js b/packages/server/services/music/utils/composePayloadData/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/utils/composePayloadData/index.js rename to packages/server/services/music/utils/composePayloadData/index.js diff --git a/packages/music_server/src/utils/createRoutesFromDirectory/index.js b/packages/server/services/music/utils/createRoutesFromDirectory/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/utils/createRoutesFromDirectory/index.js rename to packages/server/services/music/utils/createRoutesFromDirectory/index.js diff --git a/packages/music_server/src/utils/generateFnHandler/index.js b/packages/server/services/music/utils/generateFnHandler/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/utils/generateFnHandler/index.js rename to packages/server/services/music/utils/generateFnHandler/index.js diff --git a/packages/music_server/src/utils/getMiddlewares/index.js b/packages/server/services/music/utils/getMiddlewares/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/utils/getMiddlewares/index.js rename to packages/server/services/music/utils/getMiddlewares/index.js diff --git a/packages/music_server/src/utils/resolveUrl/index.js b/packages/server/services/music/utils/resolveUrl/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/utils/resolveUrl/index.js rename to packages/server/services/music/utils/resolveUrl/index.js diff --git a/packages/music_server/src/ws.js b/packages/server/services/music/ws.js old mode 100644 new mode 100755 similarity index 100% rename from packages/music_server/src/ws.js rename to packages/server/services/music/ws.js diff --git a/packages/server/services/posts/classes/posts/index.js b/packages/server/services/posts/classes/posts/index.js new file mode 100644 index 00000000..844afa3a --- /dev/null +++ b/packages/server/services/posts/classes/posts/index.js @@ -0,0 +1,7 @@ +export default class Posts { + static create = require("./methods/create").default + + static data = require("./methods/data").default + + static fullfillPost = require("./methods/fullfill").default +} \ No newline at end of file diff --git a/packages/server/services/posts/classes/posts/methods/create.js b/packages/server/services/posts/classes/posts/methods/create.js new file mode 100644 index 00000000..31c45da8 --- /dev/null +++ b/packages/server/services/posts/classes/posts/methods/create.js @@ -0,0 +1,44 @@ +import momentTimezone from "moment-timezone" +import requiredFields from "@shared-utils/requiredFields" + +import { Post } from "@shared-classes/DbModels" + +export default async (payload) => { + if (!payload) { + throw new Error("Payload is required") + } + + await requiredFields(["user_id", "timestamp"], payload) + + let { user_id, message, attachments, timestamp, reply_to } = payload + + // check if is a Array and have at least one element + const isAttachmentsValid = Array.isArray(attachments) && attachments.length > 0 + + if (!isAttachmentsValid && !message) { + throw new Error("Cannot create a post without message or attachments") + } + + const current_timezone = momentTimezone.tz.guess() + const created_at = momentTimezone.tz(Date.now(), current_timezone).format() + + let post = new Post({ + created_at: created_at, + user_id: typeof user_id === "object" ? user_id.toString() : user_id, + message: message, + attachments: attachments ?? [], + timestamp: timestamp, + reply_to: reply_to, + flags: [], + }) + + await post.save() + + post = post.toObject() + + // TODO: create background jobs (nsfw dectection) + + // TODO: Push event to Websocket + + return post +} \ No newline at end of file diff --git a/packages/server/services/posts/classes/posts/methods/data.js b/packages/server/services/posts/classes/posts/methods/data.js new file mode 100644 index 00000000..a24c9312 --- /dev/null +++ b/packages/server/services/posts/classes/posts/methods/data.js @@ -0,0 +1,75 @@ +import { Post, SavedPost } from "@shared-classes/DbModels" +import fullfillPostsData from "./fullfill" + +export default async (payload) => { + let { + from_user_id, + for_user_id, + post_id, + query = {}, + skip = 0, + limit = 20, + sort = { created_at: -1 }, + savedOnly = false, + } = payload + + let posts = [] + let savedPostsIds = [] + + // if for_user_id is provided, get saved posts + if (for_user_id) { + const savedPosts = await SavedPost.find({ user_id: for_user_id }) + .sort({ saved_at: -1 }) + + savedPostsIds = savedPosts.map((savedPost) => savedPost.post_id) + } + + // if from_user_id is provided, get posts from that user + if (from_user_id) { + query.user_id = from_user_id + } + + // if savedOnly is true,set to query to get only saved posts + if (savedOnly) { + query._id = { $in: savedPostsIds } + } + + if (post_id) { + try { + const post = await Post.findById(post_id) + + posts = [post] + } catch (error) { + throw new OperationError(404, "Post not found") + } + } else { + posts = await Post.find({ ...query }) + .sort(sort) + .skip(skip) + .limit(limit) + } + + // short posts if is savedOnly argument + if (savedOnly) { + posts.sort((a, b) => { + return ( + savedPostsIds.indexOf(a._id.toString()) - + savedPostsIds.indexOf(b._id.toString()) + ) + }) + } + + // fullfill data + posts = await fullfillPostsData({ + posts, + for_user_id, + skip, + }) + + // if post_id is specified, return only one post + if (post_id) { + return posts[0] + } + + return posts +} \ No newline at end of file diff --git a/packages/server/services/posts/classes/posts/methods/fullfill.js b/packages/server/services/posts/classes/posts/methods/fullfill.js new file mode 100644 index 00000000..2e89f1f9 --- /dev/null +++ b/packages/server/services/posts/classes/posts/methods/fullfill.js @@ -0,0 +1,100 @@ +import { User, Comment, PostLike, SavedPost } from "@shared-classes/DbModels" + +export default async (payload) => { + let { + posts, + for_user_id, + } = payload + + if (!Array.isArray(posts)) { + posts = [posts] + } + + console.log(posts, posts.every((post) => !post)) + + if (posts.every((post) => !post)) { + return [] + } + + let savedPostsIds = [] + + if (for_user_id) { + const savedPosts = await SavedPost.find({ user_id: for_user_id }) + .sort({ saved_at: -1 }) + + savedPostsIds = savedPosts.map((savedPost) => savedPost.post_id) + } + + let [usersData, likesData, commentsData] = await Promise.all([ + User.find({ + _id: { + $in: posts.map((post) => post.user_id) + } + }), + PostLike.find({ + post_id: { + $in: posts.map((post) => post._id) + } + }).catch(() => []), + Comment.find({ + parent_id: { + $in: posts.map((post) => post._id) + } + }).catch(() => []), + ]) + + // wrap likesData by post_id + likesData = likesData.reduce((acc, like) => { + if (!acc[like.post_id]) { + acc[like.post_id] = [] + } + + acc[like.post_id].push(like) + + return acc + }, {}) + + // wrap commentsData by post_id + commentsData = commentsData.reduce((acc, comment) => { + if (!acc[comment.parent_id]) { + acc[comment.parent_id] = [] + } + + acc[comment.parent_id].push(comment) + + return acc + }, {}) + + posts = await Promise.all(posts.map(async (post, index) => { + post = post.toObject() + + let user = usersData.find((user) => user._id.toString() === post.user_id.toString()) + + if (!user) { + user = { + username: "Deleted user", + } + } + + let likes = likesData[post._id.toString()] ?? [] + + post.countLikes = likes.length + + let comments = commentsData[post._id.toString()] ?? [] + + post.countComments = comments.length + + if (for_user_id) { + post.isLiked = likes.some((like) => like.user_id.toString() === for_user_id) + post.isSaved = savedPostsIds.includes(post._id.toString()) + } + + return { + ...post, + comments: comments.map((comment) => comment._id.toString()), + user, + } + })) + + return posts +} \ No newline at end of file diff --git a/packages/server/services/posts/package.json b/packages/server/services/posts/package.json new file mode 100644 index 00000000..e52dc066 --- /dev/null +++ b/packages/server/services/posts/package.json @@ -0,0 +1,9 @@ +{ + "name": "posts", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "dependencies": { + "moment-timezone": "^0.5.45" + } +} diff --git a/packages/server/services/posts/posts.service.js b/packages/server/services/posts/posts.service.js new file mode 100644 index 00000000..5bf865b1 --- /dev/null +++ b/packages/server/services/posts/posts.service.js @@ -0,0 +1,24 @@ +import { Server } from "linebridge/src/server" + +import DbManager from "@shared-classes/DbManager" + +export default class API extends Server { + static refName = "posts" + static useEngine = "hyper-express" + static routesPath = `${__dirname}/routes` + static listen_port = process.env.HTTP_LISTEN_PORT ?? 3001 + + contexts = { + db: new DbManager(), + } + + events = { + + } + + async onInitialize() { + await this.contexts.db.initialize() + } +} + +Boot(API) \ No newline at end of file diff --git a/packages/server/services/posts/routes/posts/[post_id]/get.js b/packages/server/services/posts/routes/posts/[post_id]/get.js new file mode 100644 index 00000000..6c3f2799 --- /dev/null +++ b/packages/server/services/posts/routes/posts/[post_id]/get.js @@ -0,0 +1,13 @@ +import Posts from "@classes/posts" + +export default { + middlewares: ["withOptionalAuthentication"], + fn: async (req, res) => { + const result = await Posts.data({ + post_id: req.params.post_id, + for_user_id: req.user?._id.toString(), + }) + + return result + } +} \ No newline at end of file diff --git a/packages/server/services/posts/routes/posts/new/post.js b/packages/server/services/posts/routes/posts/new/post.js new file mode 100644 index 00000000..d1d290fd --- /dev/null +++ b/packages/server/services/posts/routes/posts/new/post.js @@ -0,0 +1,6 @@ +export default async (req, res) => { + return res.json({ + code: 0, + message: "success", + }) +} \ No newline at end of file diff --git a/packages/server/services/posts/routes/posts/test/get.js b/packages/server/services/posts/routes/posts/test/get.js new file mode 100644 index 00000000..88e61886 --- /dev/null +++ b/packages/server/services/posts/routes/posts/test/get.js @@ -0,0 +1,10 @@ +export default async (req, res) => { + await new Promise((r) => { + setTimeout(r, 1000) + }) + + return { + code: 0, + message: "success", + } +} \ No newline at end of file diff --git a/packages/server/services/sync/classes/VRCApi/index.js b/packages/server/services/sync/classes/VRCApi/index.js new file mode 100755 index 00000000..6e66ad30 --- /dev/null +++ b/packages/server/services/sync/classes/VRCApi/index.js @@ -0,0 +1,59 @@ +import axios from "axios" + +export default class VRCApi { + static base_api_hostname = "https://api.vrchat.cloud/api/1" + + static get interface() { + return axios.create({ + baseURL: VRCApi.base_api_hostname, + headers: { + "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.142.86 Safari/537.36", + } + }) + } + + static async auth({ username, password }, access_token) { + username = encodeURIComponent(username) + password = encodeURIComponent(password) + + let headers = { + "Authorization": `Basic ${Buffer.from(`${username}:${password}`).toString("base64")}` + } + + if (access_token) { + delete headers["Authorization"] + headers["Cookie"] = `${access_token}` + } + + const response = await VRCApi.interface({ + method: "GET", + url: "/auth/user", + headers, + }) + + if (!access_token && response.headers["set-cookie"]) { + response.data.cookie = response.headers["set-cookie"][0].split(";")[0] + } + + return response.data + } + + static async verifyOtp({ type, code }, access_token) { + const response = await VRCApi.interface({ + method: "POST", + url: `/auth/twofactorauth/${type}/verify`, + data: { + code: code + }, + headers: { + "Cookie": `${access_token}` + }, + }) + + if (!access_token && response.headers["set-cookie"]) { + response.data.cookie = response.headers["set-cookie"][0].split(";")[0] + } + + return response.data + } +} \ No newline at end of file diff --git a/packages/sync_server/src/controllers/main/index.js b/packages/server/services/sync/controllers/main/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/main/index.js rename to packages/server/services/sync/controllers/main/index.js diff --git a/packages/server/services/sync/controllers/main/routes/get/active_services.js b/packages/server/services/sync/controllers/main/routes/get/active_services.js new file mode 100755 index 00000000..6c65a9f3 --- /dev/null +++ b/packages/server/services/sync/controllers/main/routes/get/active_services.js @@ -0,0 +1,32 @@ +import SecureSyncEntry from "@shared-classes/SecureSyncEntry" +import { AuthorizationError } from "@shared-classes/Errors" + +export default async (req, res) => { + if (!req.session) { + return new AuthorizationError(req, res) + } + + let access = {} + + const check_map = [ + ["vrc", async () => await SecureSyncEntry.has(req.session.user_id.toString(), "vrc_access_token")], + ["tidal", async () => await SecureSyncEntry.has(req.session.user_id.toString(), "tidal_access_token")], + ["spotify", async () => await SecureSyncEntry.has(req.session.user_id.toString(), "spotify_access_token")], + ] + + try { + for (const check of check_map) { + const [service, fn] = check + + if (await fn()) { + access[service] = true + } else { + access[service] = false + } + } + } catch (error) { + return res.status(500).json({ error: error.message }) + } + + return res.json(access) +} \ No newline at end of file diff --git a/packages/sync_server/src/controllers/main/routes/get/sse_event/:sse_uid.js b/packages/server/services/sync/controllers/main/routes/get/sse_event/:sse_uid.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/main/routes/get/sse_event/:sse_uid.js rename to packages/server/services/sync/controllers/main/routes/get/sse_event/:sse_uid.js diff --git a/packages/sync_server/src/controllers/services/index.js b/packages/server/services/sync/controllers/services/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/index.js rename to packages/server/services/sync/controllers/services/index.js diff --git a/packages/sync_server/src/controllers/services/routes/delete/tidal/track/:track_id/like.js b/packages/server/services/sync/controllers/services/routes/delete/tidal/track/:track_id/like.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/delete/tidal/track/:track_id/like.js rename to packages/server/services/sync/controllers/services/routes/delete/tidal/track/:track_id/like.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/create_link.js b/packages/server/services/sync/controllers/services/routes/get/tidal/create_link.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/create_link.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/create_link.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/current.js b/packages/server/services/sync/controllers/services/routes/get/tidal/current.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/current.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/current.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/favorites/playlists.js b/packages/server/services/sync/controllers/services/routes/get/tidal/favorites/playlists.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/favorites/playlists.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/favorites/playlists.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/favorites/tracks.js b/packages/server/services/sync/controllers/services/routes/get/tidal/favorites/tracks.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/favorites/tracks.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/favorites/tracks.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/is_active.js b/packages/server/services/sync/controllers/services/routes/get/tidal/is_active.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/is_active.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/is_active.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/manifest/:track_id.js b/packages/server/services/sync/controllers/services/routes/get/tidal/manifest/:track_id.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/manifest/:track_id.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/manifest/:track_id.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/playback/:track_id.js b/packages/server/services/sync/controllers/services/routes/get/tidal/playback/:track_id.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/playback/:track_id.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/playback/:track_id.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/playlist/:uuid/data.js b/packages/server/services/sync/controllers/services/routes/get/tidal/playlist/:uuid/data.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/playlist/:uuid/data.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/playlist/:uuid/data.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/playlist/:uuid/items.js b/packages/server/services/sync/controllers/services/routes/get/tidal/playlist/:uuid/items.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/playlist/:uuid/items.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/playlist/:uuid/items.js diff --git a/packages/sync_server/src/controllers/services/routes/get/tidal/search.js b/packages/server/services/sync/controllers/services/routes/get/tidal/search.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/get/tidal/search.js rename to packages/server/services/sync/controllers/services/routes/get/tidal/search.js diff --git a/packages/sync_server/src/controllers/main/routes/get/active_services.js b/packages/server/services/sync/controllers/services/routes/get/vrc/session.js old mode 100644 new mode 100755 similarity index 56% rename from packages/sync_server/src/controllers/main/routes/get/active_services.js rename to packages/server/services/sync/controllers/services/routes/get/vrc/session.js index 786001d9..feb561e3 --- a/packages/sync_server/src/controllers/main/routes/get/active_services.js +++ b/packages/server/services/sync/controllers/services/routes/get/vrc/session.js @@ -6,10 +6,7 @@ export default async (req, res) => { return new AuthorizationError(req, res) } - const tidal_access = await SecureSyncEntry.has(req.session.user_id.toString(), "tidal_access_token") + const userData = await SecureSyncEntry.get(req.session.user_id.toString(), "vrc:user_data") - return res.json({ - spotify: null, - tidal: tidal_access, - }) + return res.json(JSON.parse(userData)) } \ No newline at end of file diff --git a/packages/sync_server/src/controllers/services/routes/post/tidal/delete_link.js b/packages/server/services/sync/controllers/services/routes/post/tidal/delete_link.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/post/tidal/delete_link.js rename to packages/server/services/sync/controllers/services/routes/post/tidal/delete_link.js diff --git a/packages/sync_server/src/controllers/services/routes/post/tidal/track/:track_id/like.js b/packages/server/services/sync/controllers/services/routes/post/tidal/track/:track_id/like.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/controllers/services/routes/post/tidal/track/:track_id/like.js rename to packages/server/services/sync/controllers/services/routes/post/tidal/track/:track_id/like.js diff --git a/packages/server/services/sync/controllers/services/routes/post/vrc/auth.js b/packages/server/services/sync/controllers/services/routes/post/vrc/auth.js new file mode 100755 index 00000000..1a1f1a8b --- /dev/null +++ b/packages/server/services/sync/controllers/services/routes/post/vrc/auth.js @@ -0,0 +1,57 @@ +import SecureSyncEntry from "@shared-classes/SecureSyncEntry" +import { AuthorizationError } from "@shared-classes/Errors" + +import ExternalAPI from "@classes/VRCApi" + +export default async (req, res) => { + if (!req.session) { + return new AuthorizationError(req, res) + } + + req.body = await req.json() + + if (!req.body.username || !req.body.password) { + return res.status(400).json({ + success: false, + error: "Missing username or password", + }) + } + + const currentAccessToken = await SecureSyncEntry.get(req.session.user_id.toString(), "vrc:access_token") + + const result = await ExternalAPI.auth({ + username: req.body.username, + password: req.body.password + }, currentAccessToken).catch((error) => { + if (error.response) { + console.error(error.response.data) + + res.status(500).json(error.response.data.error) + } else { + res.status(500).json({ + error: "Something went wrong", + }) + } + + return null + }) + + if (!result) { + return false + } + + console.log(result) + + if (result.cookie) { + await SecureSyncEntry.set(req.session.user_id.toString(), "vrc:access_token", cookie) + } + + if (!result.requiresTwoFactorAuth) { + await SecureSyncEntry.set(req.session.user_id.toString(), "vrc:user_data", JSON.stringify(result)) + } + + return res.json({ + success: result.requiresTwoFactorAuth ? true : false, + ...result + }) +} \ No newline at end of file diff --git a/packages/server/services/sync/controllers/services/routes/post/vrc/logout.js b/packages/server/services/sync/controllers/services/routes/post/vrc/logout.js new file mode 100755 index 00000000..e69de29b diff --git a/packages/server/services/sync/controllers/services/routes/post/vrc/otp.js b/packages/server/services/sync/controllers/services/routes/post/vrc/otp.js new file mode 100755 index 00000000..e9e24c82 --- /dev/null +++ b/packages/server/services/sync/controllers/services/routes/post/vrc/otp.js @@ -0,0 +1,45 @@ +import SecureSyncEntry from "@shared-classes/SecureSyncEntry" +import { AuthorizationError } from "@shared-classes/Errors" + +import ExternalAPI from "@classes/VRCApi" + +export default async (req, res) => { + if (!req.session) { + return new AuthorizationError(req, res) + } + + req.body = await req.json() + + const { type, code } = req.body + + if (!type || !code) { + return res.status(400).json({ + success: false, + error: "Missing type or code", + }) + } + + const authcookie = await SecureSyncEntry.get(req.session.user_id.toString(), "vrc:access_token") + + const result = await ExternalAPI.verifyOtp({ type, code }, authcookie).catch((error) => { + if (error.response) { + console.error(error.response.data) + + res.status(500).json(error.response.data.error) + } else { + console.error(error) + + res.status(500).json({ + error: "Something went wrong", + }) + } + + return null + }) + + if (!result) { + return false + } + + return res.json(result) +} \ No newline at end of file diff --git a/packages/sync_server/src/middlewares/withAuth/index.js b/packages/server/services/sync/middlewares/withAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/middlewares/withAuth/index.js rename to packages/server/services/sync/middlewares/withAuth/index.js diff --git a/packages/sync_server/src/middlewares/withOptionalAuth/index.js b/packages/server/services/sync/middlewares/withOptionalAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/middlewares/withOptionalAuth/index.js rename to packages/server/services/sync/middlewares/withOptionalAuth/index.js diff --git a/packages/sync_server/src/middlewares/withWsAuth.js b/packages/server/services/sync/middlewares/withWsAuth.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/middlewares/withWsAuth.js rename to packages/server/services/sync/middlewares/withWsAuth.js diff --git a/packages/server/services/sync/package.json b/packages/server/services/sync/package.json new file mode 100755 index 00000000..a0d8962a --- /dev/null +++ b/packages/server/services/sync/package.json @@ -0,0 +1,25 @@ +{ + "name": "sync", + "version": "0.60.2", + "license": "MIT", + "dependencies": { + "@foxify/events": "^2.1.0", + "axios": "^1.2.5", + "bcrypt": "^5.1.0", + "comty.js": "^0.58.2", + "connect-mongo": "^4.6.0", + "content-range": "^2.0.2", + "dotenv": "^16.0.3", + "file-api": "^0.10.4", + "form-data": "^4.0.0", + "hyper-express": "^6.5.9", + "jsonwebtoken": "^9.0.0", + "linebridge": "0.15.12", + "luxon": "^3.2.1", + "normalize-url": "^8.0.0", + "p-map": "^6.0.0", + "p-queue": "^7.3.4", + "qs": "^6.11.2", + "redis": "^4.6.6" + } +} \ No newline at end of file diff --git a/packages/sync_server/src/api.js b/packages/server/services/sync/sync.service.js old mode 100644 new mode 100755 similarity index 98% rename from packages/sync_server/src/api.js rename to packages/server/services/sync/sync.service.js index 901fb47d..ddfa5c69 --- a/packages/sync_server/src/api.js +++ b/packages/server/services/sync/sync.service.js @@ -7,7 +7,7 @@ import ComtyClient from "@shared-classes/ComtyClient" import hyperexpress from "hyper-express" -import pkg from "../package.json" +import pkg from "./package.json" export default class API { static useMiddlewaresOrder = ["useLogger", "useCors", "useAuth"] @@ -139,4 +139,6 @@ export default class API { // log server started console.log(`🚀 Server started ready on \n\t - http://${this.listenIp}:${this.listenPort} \n\t - Tooks ${elapsedTimeInMs}ms`) } -} \ No newline at end of file +} + +Boot(API) \ No newline at end of file diff --git a/packages/sync_server/src/useMiddlewares/useAuth/index.js b/packages/server/services/sync/useMiddlewares/useAuth/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/useMiddlewares/useAuth/index.js rename to packages/server/services/sync/useMiddlewares/useAuth/index.js diff --git a/packages/sync_server/src/useMiddlewares/useCors/index.js b/packages/server/services/sync/useMiddlewares/useCors/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/useMiddlewares/useCors/index.js rename to packages/server/services/sync/useMiddlewares/useCors/index.js diff --git a/packages/sync_server/src/useMiddlewares/useLogger/index.js b/packages/server/services/sync/useMiddlewares/useLogger/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/useMiddlewares/useLogger/index.js rename to packages/server/services/sync/useMiddlewares/useLogger/index.js diff --git a/packages/sync_server/src/utils/composePayloadData/index.js b/packages/server/services/sync/utils/composePayloadData/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/utils/composePayloadData/index.js rename to packages/server/services/sync/utils/composePayloadData/index.js diff --git a/packages/sync_server/src/utils/createRoutesFromDirectory/index.js b/packages/server/services/sync/utils/createRoutesFromDirectory/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/utils/createRoutesFromDirectory/index.js rename to packages/server/services/sync/utils/createRoutesFromDirectory/index.js diff --git a/packages/sync_server/src/utils/generateFnHandler/index.js b/packages/server/services/sync/utils/generateFnHandler/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/utils/generateFnHandler/index.js rename to packages/server/services/sync/utils/generateFnHandler/index.js diff --git a/packages/sync_server/src/utils/getMiddlewares/index.js b/packages/server/services/sync/utils/getMiddlewares/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/utils/getMiddlewares/index.js rename to packages/server/services/sync/utils/getMiddlewares/index.js diff --git a/packages/sync_server/src/utils/resolveUrl/index.js b/packages/server/services/sync/utils/resolveUrl/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/sync_server/src/utils/resolveUrl/index.js rename to packages/server/services/sync/utils/resolveUrl/index.js diff --git a/packages/server/src/controllers/PublicController/endpoints/incidentPrediction.js b/packages/server/src/controllers/PublicController/endpoints/incidentPrediction.js deleted file mode 100755 index 2e5e1917..00000000 --- a/packages/server/src/controllers/PublicController/endpoints/incidentPrediction.js +++ /dev/null @@ -1,27 +0,0 @@ -import { Schematized } from "../../../lib" -import IndecentPrediction from "../../../utils/indecent-prediction" - -export default { - method: "GET", - route: "/indecent_prediction", - fn: Schematized({ - select: ["url"], - required: ["url"], - }, async (req, res) => { - const { url } = req.selection - - const predictions = await IndecentPrediction({ - url, - }).catch((err) => { - res.status(500).json({ - error: err.message, - }) - - return null - }) - - if (predictions) { - return res.json(predictions) - } - }) -} \ No newline at end of file diff --git a/packages/server/src/shared-classes/CacheService b/packages/server/src/shared-classes/CacheService deleted file mode 120000 index 629d7813..00000000 --- a/packages/server/src/shared-classes/CacheService +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/CacheService \ No newline at end of file diff --git a/packages/server/src/shared-classes/ComtyClient b/packages/server/src/shared-classes/ComtyClient deleted file mode 120000 index a6e298c5..00000000 --- a/packages/server/src/shared-classes/ComtyClient +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/ComtyClient \ No newline at end of file diff --git a/packages/server/src/shared-classes/DBModels b/packages/server/src/shared-classes/DBModels deleted file mode 120000 index abf25068..00000000 --- a/packages/server/src/shared-classes/DBModels +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/DBModels \ No newline at end of file diff --git a/packages/server/src/shared-classes/DbManager b/packages/server/src/shared-classes/DbManager deleted file mode 120000 index a0357e53..00000000 --- a/packages/server/src/shared-classes/DbManager +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/DbManager \ No newline at end of file diff --git a/packages/server/src/shared-classes/DbModels b/packages/server/src/shared-classes/DbModels deleted file mode 120000 index ef29beb1..00000000 --- a/packages/server/src/shared-classes/DbModels +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/DbModels \ No newline at end of file diff --git a/packages/server/src/shared-classes/Errors b/packages/server/src/shared-classes/Errors deleted file mode 120000 index 1c5c9266..00000000 --- a/packages/server/src/shared-classes/Errors +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/Errors \ No newline at end of file diff --git a/packages/server/src/shared-classes/FileUpload b/packages/server/src/shared-classes/FileUpload deleted file mode 120000 index 77b5c6ca..00000000 --- a/packages/server/src/shared-classes/FileUpload +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/FileUpload \ No newline at end of file diff --git a/packages/server/src/shared-classes/RTEngineServer b/packages/server/src/shared-classes/RTEngineServer deleted file mode 120000 index f98e3a03..00000000 --- a/packages/server/src/shared-classes/RTEngineServer +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/RTEngineServer \ No newline at end of file diff --git a/packages/server/src/shared-classes/RedisClient b/packages/server/src/shared-classes/RedisClient deleted file mode 120000 index 61028cd6..00000000 --- a/packages/server/src/shared-classes/RedisClient +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/RedisClient \ No newline at end of file diff --git a/packages/server/src/shared-classes/StorageClient b/packages/server/src/shared-classes/StorageClient deleted file mode 120000 index 103a0526..00000000 --- a/packages/server/src/shared-classes/StorageClient +++ /dev/null @@ -1 +0,0 @@ -/opt/comty-federated/@public/shared/classes/StorageClient \ No newline at end of file diff --git a/packages/server/utils/requiredFields.js b/packages/server/utils/requiredFields.js new file mode 100644 index 00000000..6cf79c54 --- /dev/null +++ b/packages/server/utils/requiredFields.js @@ -0,0 +1,22 @@ +// check if exists all required fields inside the obj (can be a object or an array) +// if is something is missing, throw an error +export default (fields, obj) => { + const missing = [] + const isArray = Array.isArray(obj) + + for (const field of fields) { + if (isArray) { + if (!obj.includes(field)) { + missing.push(field) + } + } else { + if (!obj[field]) { + missing.push(field) + } + } + } + + if (missing.length > 0) { + throw new Error(`Missing required fields: ${missing.join(", ")}`) + } +} \ No newline at end of file diff --git a/packages/sync_server/.env-example b/packages/sync_server/.env-example deleted file mode 100755 index 0119f1bd..00000000 --- a/packages/sync_server/.env-example +++ /dev/null @@ -1,20 +0,0 @@ -DB_HOSTNAME="" -DB_NAME="" -DB_USER="" -DB_PWD="" - -S3_ENDPOINT="" -S3_REGION="" -S3_PORT="" -S3_USE_SSL="" -S3_BUCKET="" -S3_ACCESS_KEY="" -S3_SECRET_KEY="" - -REDIS_HOST="" -REDIS_PORT="" -REDIS_USERNAME="" -REDIS_PASSWORD="" - -COMTY_ACCESS_KEY="" -COMTY_SECRET_KEY="" \ No newline at end of file diff --git a/packages/sync_server/.gitignore b/packages/sync_server/.gitignore deleted file mode 100644 index 0dd1cacd..00000000 --- a/packages/sync_server/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/static -shared-classes \ No newline at end of file diff --git a/packages/sync_server/.infisical.json b/packages/sync_server/.infisical.json deleted file mode 100644 index fb927147..00000000 --- a/packages/sync_server/.infisical.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "workspaceId": "64519574a8a691b55e8b361d", - "defaultEnvironment": "dev", - "gitBranchToEnvironmentMapping": { - "master": "prod" - } -} \ No newline at end of file diff --git a/packages/sync_server/Dockerfile b/packages/sync_server/Dockerfile deleted file mode 100755 index 5f409399..00000000 --- a/packages/sync_server/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM node:16-bullseye-slim - -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - -RUN apt update -RUN apt install --no-install-recommends curl python yarn build-essential -y - -RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app - -# Copy comty.js to node_modules -WORKDIR /home/node/app -USER node - -EXPOSE 3070 - -COPY package.json ./ -COPY --chown=node:node . . - -RUN chmod -R 777 /home/node/app - -RUN export NODE_ENV=production - -RUN yarn global add cross-env -RUN yarn install --production -RUN yarn build - -CMD ["yarn", "run", "run:prod"] \ No newline at end of file diff --git a/packages/sync_server/package.json b/packages/sync_server/package.json deleted file mode 100644 index 2500ff20..00000000 --- a/packages/sync_server/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "@comty/sync_server", - "version": "0.60.3", - "main": "dist/index.js", - "scripts": { - "build": "hermes build", - "dev": "cross-env NODE_ENV=development nodemon --ignore dist/ --exec hermes-node ./src/index.js", - "run:prod": "cross-env NODE_ENV=production node ./dist/index.js" - }, - "shared": { - "classes/FileUpload": "src/shared-classes/FileUpload", - "classes/CacheService": "src/shared-classes/CacheService", - "classes/ComtyClient": "src/shared-classes/ComtyClient", - "classes/RedisClient": "src/shared-classes/RedisClient", - "classes/StorageClient": "src/shared-classes/StorageClient", - "classes/DbManager": "src/shared-classes/DbManager", - "classes/Errors": "src/shared-classes/Errors", - "classes/DbModels": "src/shared-classes/DbModels", - "classes/SecureSyncEntry": "src/shared-classes/SecureSyncEntry", - "classes/TidalAPI": "src/shared-classes/TidalAPI" - }, - "license": "MIT", - "dependencies": { - "@foxify/events": "^2.1.0", - "axios": "^1.2.5", - "bcrypt": "^5.1.0", - "comty.js": "^0.58.2", - "connect-mongo": "^4.6.0", - "content-range": "^2.0.2", - "dotenv": "^16.0.3", - "file-api": "^0.10.4", - "form-data": "^4.0.0", - "hyper-express": "^6.5.9", - "jsonwebtoken": "^9.0.0", - "linebridge": "0.15.12", - "luxon": "^3.2.1", - "normalize-url": "^8.0.0", - "p-map": "^6.0.0", - "p-queue": "^7.3.4", - "qs": "^6.11.2", - "redis": "^4.6.6" - }, - "devDependencies": { - "@corenode/utils": "0.28.26", - "chai": "^4.3.7", - "corenode": "0.28.26", - "cross-env": "^7.0.3", - "mocha": "^10.2.0", - "nodemon": "^2.0.15" - } -} \ No newline at end of file diff --git a/packages/sync_server/src/index.js b/packages/sync_server/src/index.js deleted file mode 100644 index 9a830edd..00000000 --- a/packages/sync_server/src/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import path from "path" -global.FORCE_ENV = "prod" - -require(path.resolve(process.cwd(), "../../shared/lib/api_wrapper")) \ No newline at end of file diff --git a/scripts/docker-build.js b/scripts/docker-build.js old mode 100644 new mode 100755 diff --git a/scripts/post-deploy.js b/scripts/post-deploy.js old mode 100644 new mode 100755 diff --git a/scripts/post-install.js b/scripts/post-install.js old mode 100644 new mode 100755 index 1c953a81..b7d5bc85 --- a/scripts/post-install.js +++ b/scripts/post-install.js @@ -95,7 +95,7 @@ async function linkInternalSubmodules(packages) { if (!fs.existsSync(packageJsonPath)) { continue } - + await child_process.execSync(`yarn link "linebridge"`, { cwd: packagePath, stdio: "inherit", @@ -115,15 +115,7 @@ async function main() { // read dir with absolute paths let packages = await getPackages() - await linkInternalSubmodules(packages) - - console.log("Rebuilding TFJS...") - - await child_process.execSync("npm rebuild @tensorflow/tfjs-node --build-from-source", { - cwd: rootPath, - stdio: "inherit", - }) - + // link shared resources for (const packageName of packages) { const packagePath = path.resolve(packagesPath, packageName) @@ -142,6 +134,20 @@ async function main() { } } + // link internal submodules + await linkInternalSubmodules(packages) + + // fixes for arm architecture + if (process.arch == "arm64") { + // rebuild tfjs + console.log("Rebuilding TFJS...") + + await child_process.execSync("npm rebuild @tensorflow/tfjs-node --build-from-source", { + cwd: rootPath, + stdio: "inherit", + }) + } + console.timeEnd("✅ post-install tooks:") } diff --git a/scripts/publishWidget.js b/scripts/publishWidget.js old mode 100644 new mode 100755 diff --git a/scripts/utils/bumpVersion.js b/scripts/utils/bumpVersion.js old mode 100644 new mode 100755 diff --git a/scripts/utils/composeChangelog.js b/scripts/utils/composeChangelog.js old mode 100644 new mode 100755 diff --git a/scripts/utils/getPackages.js b/scripts/utils/getPackages.js old mode 100644 new mode 100755 diff --git a/shared/classes/CacheService/index.js b/shared/classes/CacheService/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/ComtyClient/index.js b/shared/classes/ComtyClient/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/DbModels/NFCTags/index.js b/shared/classes/DbModels/NFCTags/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/DbModels/featuredPlaylist/index.js b/shared/classes/DbModels/featuredPlaylist/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/DbModels/release/index.js b/shared/classes/DbModels/release/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/DbModels/serverLimit/index.js b/shared/classes/DbModels/serverLimit/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/DbModels/streamingProfile/index.js b/shared/classes/DbModels/streamingProfile/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/DbModels/track_like/index.js b/shared/classes/DbModels/track_like/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/DbModels/widget/index.js b/shared/classes/DbModels/widget/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/Errors/index.js b/shared/classes/Errors/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/FileUpload/index.js b/shared/classes/FileUpload/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/RedisClient/index.js b/shared/classes/RedisClient/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/SecureSyncEntry/index.js b/shared/classes/SecureSyncEntry/index.js old mode 100644 new mode 100755 diff --git a/shared/classes/TidalAPI/index.js b/shared/classes/TidalAPI/index.js old mode 100644 new mode 100755 diff --git a/shared/lib/api_wrapper/index.js b/shared/lib/api_wrapper/index.js old mode 100644 new mode 100755 diff --git a/packages/wrapper/Dockerfile b/wrapper/Dockerfile similarity index 100% rename from packages/wrapper/Dockerfile rename to wrapper/Dockerfile diff --git a/packages/wrapper/package.json b/wrapper/package.json similarity index 100% rename from packages/wrapper/package.json rename to wrapper/package.json diff --git a/wrapper/src/ascii.js b/wrapper/src/ascii.js new file mode 100755 index 00000000..a9881a92 --- /dev/null +++ b/wrapper/src/ascii.js @@ -0,0 +1 @@ +module.exports = " _ \r\n | | \r\n ___ ___ _ __ ___ | |_ _ _ \r\n \/ __\/ _ \\| \'_ ` _ \\| __| | | |\r\n | (_| (_) | | | | | | |_| |_| |\r\n \\___\\___\/|_| |_| |_|\\__|\\__, |\r\n __\/ |\r\n |___\/ " \ No newline at end of file diff --git a/packages/wrapper/src/globals.js b/wrapper/src/globals.js old mode 100644 new mode 100755 similarity index 100% rename from packages/wrapper/src/globals.js rename to wrapper/src/globals.js diff --git a/packages/wrapper/src/index.js b/wrapper/src/index.js similarity index 100% rename from packages/wrapper/src/index.js rename to wrapper/src/index.js diff --git a/wrapper/src/lib/getInternalIp.js b/wrapper/src/lib/getInternalIp.js new file mode 100755 index 00000000..f1024394 --- /dev/null +++ b/wrapper/src/lib/getInternalIp.js @@ -0,0 +1,12 @@ +const dns = require("dns") +const os = require("os") + +module.exports = () => new Promise((resolve, reject) => { + dns.lookup(os.hostname(), (err, address, family) => { + if (err) { + reject(err) + } + + resolve(address) + }) +}) \ No newline at end of file diff --git a/packages/wrapper/src/lib/setupDist.js b/wrapper/src/lib/setupDist.js similarity index 100% rename from packages/wrapper/src/lib/setupDist.js rename to wrapper/src/lib/setupDist.js diff --git a/packages/wrapper/src/lib/useLogger/index.js b/wrapper/src/lib/useLogger/index.js old mode 100644 new mode 100755 similarity index 100% rename from packages/wrapper/src/lib/useLogger/index.js rename to wrapper/src/lib/useLogger/index.js