From b6a285d22422ff1ca6c11cc0c450349b46a6ea2c Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 3 Apr 2026 22:57:14 +0200 Subject: [PATCH 01/14] #480: set up C4 workspace --- docs/diagrams/workspace.dsl | 111 ++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 docs/diagrams/workspace.dsl diff --git a/docs/diagrams/workspace.dsl b/docs/diagrams/workspace.dsl new file mode 100644 index 00000000..f7ea4e22 --- /dev/null +++ b/docs/diagrams/workspace.dsl @@ -0,0 +1,111 @@ +workspace "Name" "Description" { + + !identifiers hierarchical + + model { + // Content users + cv = person "Content Viewer", "Views content anonymously" + cc = person "Content Creator", "Views and creates content" + cmo = person "Content Moderator", "Moderates the content" + cma = person "Content Manager", "Monitors and manages content" + + // Event users + emo = person "Event Moderator", "Selects event content" + ema = person "Event Manager", "Creates, monitors and manages event content" + + // System users + sm = person "System Manager", "Manages the system" + + ss = softwareSystem "Comify" { + // Web applications + swa = container "Social Web Application" + mwa = container "Moderation Web Application" + dwa = container "Dashboard Web Application" + ewa = container "Event Web Application" + awa = container "Administration Web Application" + + // Services + cs = container "Content Service" + ms = container "Moderation Service" + is = container "Insights Service" + es = container "Event Service" + as = container "Administration Service" + + // Databases + sdb = container "Social Database" { + tags "Database" + } + mdb = container "Moderation Database" { + tags "Database" + } + idb = container "Insights Database" { + tags "Database" + } + edb = container "Events Database" { + tags "Database" + } + } + + // Social (core) context relations + cv -> ss.swa "Uses" + cc -> ss.swa "Uses" + ss.swa -> ss.cs "Uses" + ss.cs -> ss.sdb "Reads from and writes to" + + // Moderation context relations + cmo -> ss.mwa "Uses" + ss.mwa -> ss.ms "Uses" + ss.ms -> ss.mdb "Reads from and writes to" + + // Insights context relations + cma -> ss.dwa "Uses" + ss.dwa -> ss.is "Uses" + ss.is -> ss.idb "Reads from and writes to" + + // Event context relations + emo -> ss.ewa "Uses" + ema -> ss.ewa "Uses" + ss.ewa -> ss.es "Uses" + ss.es -> ss.edb "Reads from and writes to" + + // Administration context relations + sm -> ss.awa "Uses" + ss.awa -> ss.as "Uses" + } + + views { + systemContext ss "Context" { + include * + } + + container ss "Container" { + include * + } + + styles { + element "Element" { + color #f88728 + stroke #f88728 + strokeWidth 7 + shape roundedbox + } + element "Person" { + shape person + } + element "Database" { + shape cylinder + } + element "Boundary" { + strokeWidth 5 + } + relationship "Relationship" { + thickness 4 + } + } + } + + configuration { + scope softwaresystem + } + +} \ No newline at end of file From 32e8b050bbf088d9360acb7dbd6b19034a531e39 Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Fri, 3 Apr 2026 23:26:00 +0200 Subject: [PATCH 02/14] #480: test for context mapping --- docs/diagrams/context.cml | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 docs/diagrams/context.cml diff --git a/docs/diagrams/context.cml b/docs/diagrams/context.cml new file mode 100644 index 00000000..f64210a8 --- /dev/null +++ b/docs/diagrams/context.cml @@ -0,0 +1,43 @@ +ContextMap SocialMediaMap { + contains SocialContext + contains EventsContext + contains AdministrationContext + contains ModerationContext + contains InsightsContext + + /* * Social is the core. Moderation acts as a 'Protective' layer + * or an Upstream system that Social relies on. + */ + SocialContext [U, S]->[D, C] ModerationContext { + exposedAggregates UserProfiles, Posts + } + + /* * Events context consumes data from Social (new posts, likes) + * to trigger notifications. + */ + SocialContext [U]->[D] EventsContext { + implementationTechnology "Kafka" + } + + /* * Insights usually functions as an Open Host Service (OHS) + * pulling data from multiple upstream sources for analysis. + */ + SocialContext [U, OHS]->[D] InsightsContext + EventsContext [U, OHS]->[D] InsightsContext + + /* * Administration is often a 'Master' context that affects + * Social and Moderation settings. + */ + AdministrationContext [U]->[D] SocialContext + AdministrationContext [U]->[D] ModerationContext +} + +BoundedContext SocialContext { + Aggregate UserProfiles + Aggregate Posts +} + +BoundedContext EventsContext +BoundedContext ModerationContext +BoundedContext AdministrationContext +BoundedContext InsightsContext \ No newline at end of file From 7e98a991ce03c860fc855cd5d93666b1682d0927 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 13 May 2026 12:20:56 +0200 Subject: [PATCH 03/14] #480: refactored for the newest version of Jitar --- .gitignore | 2 +- jitar.json | 2 +- package.json | 3 ++- src/apps/social/vite.config.ts | 5 ++--- src/domain/creator.metrics/create/subscriptions.ts | 4 ++-- src/domain/creator.metrics/updateFollowers/subscriptions.ts | 4 ++-- src/domain/creator.metrics/updateFollowing/subscriptions.ts | 4 ++-- src/domain/creator.metrics/updatePosts/subscriptions.ts | 4 ++-- src/domain/notification/notify/subscriptions.ts | 4 ++-- src/domain/post.metrics/create/subscriptions.ts | 4 ++-- src/domain/post.metrics/updateRatings/subscriptions.ts | 4 ++-- src/domain/post.metrics/updateReactions/subscriptions.ts | 4 ++-- tsconfig.json | 2 +- 13 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index d824a1f1..d41b0545 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ lerna-debug.log* node_modules coverage -.jitar +build dist dist-ssr *.local diff --git a/jitar.json b/jitar.json index 0b5cfb99..dc40ac1f 100644 --- a/jitar.json +++ b/jitar.json @@ -1,5 +1,5 @@ { - "source": "./dist", + "source": "./build", "target": "./dist", "segments": "./segments", "resources": "./resources" diff --git a/package.json b/package.json index 11ccf817..f29d73f1 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "npm run clean && npm run build-domain && npm run build-social", "build-domain": "tsc -p src && tsc-alias -p src/tsconfig.json && jitar build && npm run copy-assets", "build-social": "vite build --config src/apps/social/vite.config.js", - "clean": "rimraf dist", + "clean": "rimraf build && rimraf dist", "test": "vitest run", "test-coverage": "vitest run --coverage", "lint": "eslint", @@ -22,6 +22,7 @@ "docker-down": "docker compose --env-file development.env down", "review": "npm run compile && npm run lint && npm run test", "rebuild": "npm run clean && npm run build && npm run standalone", + "standalone": "jitar start --env-file=development.env --service=services/standalone.json --http-body-limit=512000", "repository": "jitar start --env-file=development.env --service=services/repository.json", "proxy": "jitar start --env-file=development.env --service=services/proxy.json --http-body-limit=512000", diff --git a/src/apps/social/vite.config.ts b/src/apps/social/vite.config.ts index 9ccb5f30..83f54511 100644 --- a/src/apps/social/vite.config.ts +++ b/src/apps/social/vite.config.ts @@ -10,9 +10,8 @@ const JITAR_MIDDLEWARES: string[] = [ ]; const jitarConfig: JitarConfig = { - sourceDir: '../../../src', - targetDir: '../../../dist', - jitarDir: 'domain', + projectRoot: '../../../', + sourceRoot: '../../', jitarUrl: JITAR_URL, segments: JITAR_SEGMENTS, middleware: JITAR_MIDDLEWARES diff --git a/src/domain/creator.metrics/create/subscriptions.ts b/src/domain/creator.metrics/create/subscriptions.ts index 2ee6066c..8b264d67 100644 --- a/src/domain/creator.metrics/create/subscriptions.ts +++ b/src/domain/creator.metrics/create/subscriptions.ts @@ -3,11 +3,11 @@ import { subscribe as subscribeToCreatorRegistered } from '^/domain/creator/regi import create from './create'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ subscribeToCreatorRegistered(({ creatorId }) => create(creatorId)), ]); } -export default subscribe(); +subscriptions(); diff --git a/src/domain/creator.metrics/updateFollowers/subscriptions.ts b/src/domain/creator.metrics/updateFollowers/subscriptions.ts index 1a703add..5f82c53c 100644 --- a/src/domain/creator.metrics/updateFollowers/subscriptions.ts +++ b/src/domain/creator.metrics/updateFollowers/subscriptions.ts @@ -3,11 +3,11 @@ import { subscribe as subscribeToRelationEstablished } from '^/domain/relation/e import updateFollowerCount from './updateFollowers'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ subscribeToRelationEstablished(({ followingId }) => updateFollowerCount(followingId, 'increase')) ]); } -export default subscribe(); +subscriptions(); diff --git a/src/domain/creator.metrics/updateFollowing/subscriptions.ts b/src/domain/creator.metrics/updateFollowing/subscriptions.ts index d30d6519..285ba2f7 100644 --- a/src/domain/creator.metrics/updateFollowing/subscriptions.ts +++ b/src/domain/creator.metrics/updateFollowing/subscriptions.ts @@ -3,11 +3,11 @@ import { subscribe as subscribeToRelationEstablished } from '^/domain/relation/e import updateFollowing from './updateFollowing'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ subscribeToRelationEstablished(({ followerId }) => updateFollowing(followerId, 'increase')) ]); } -export default subscribe(); +subscriptions(); diff --git a/src/domain/creator.metrics/updatePosts/subscriptions.ts b/src/domain/creator.metrics/updatePosts/subscriptions.ts index aee5cb31..229d9170 100644 --- a/src/domain/creator.metrics/updatePosts/subscriptions.ts +++ b/src/domain/creator.metrics/updatePosts/subscriptions.ts @@ -4,7 +4,7 @@ import { subscribe as subscribeToPostRemoved } from '^/domain/post/remove'; import updatePosts from './updatePosts'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ @@ -25,4 +25,4 @@ async function subscribe(): Promise ]); } -export default subscribe(); +subscriptions(); diff --git a/src/domain/notification/notify/subscriptions.ts b/src/domain/notification/notify/subscriptions.ts index 66c87f36..c14391cc 100644 --- a/src/domain/notification/notify/subscriptions.ts +++ b/src/domain/notification/notify/subscriptions.ts @@ -9,7 +9,7 @@ import ratedPost from './ratedPost'; import removedPost from './removedPost'; import startedFollowing from './startedFollowing'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ subscribeToPostRated(({ tenantId, creatorId, postId, rated }) => ratedPost(tenantId, creatorId, postId, rated)), @@ -19,4 +19,4 @@ async function subscribe(): Promise ]); } -export default subscribe(); +subscriptions(); diff --git a/src/domain/post.metrics/create/subscriptions.ts b/src/domain/post.metrics/create/subscriptions.ts index c78a9113..6392bcf7 100644 --- a/src/domain/post.metrics/create/subscriptions.ts +++ b/src/domain/post.metrics/create/subscriptions.ts @@ -3,11 +3,11 @@ import { subscribe as subscribeToPostCreated } from '^/domain/post/create'; import create from './create'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ subscribeToPostCreated(({ postId }) => create(postId)), ]); } -export default subscribe(); +subscriptions(); diff --git a/src/domain/post.metrics/updateRatings/subscriptions.ts b/src/domain/post.metrics/updateRatings/subscriptions.ts index 398be5a1..a8658e89 100644 --- a/src/domain/post.metrics/updateRatings/subscriptions.ts +++ b/src/domain/post.metrics/updateRatings/subscriptions.ts @@ -3,7 +3,7 @@ import { subscribe as subscribeToRatingToggled } from '^/domain/rating/toggle'; import updateRatings from './updateRatings'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ @@ -17,4 +17,4 @@ async function subscribe(): Promise ]); } -export default subscribe(); +subscriptions(); diff --git a/src/domain/post.metrics/updateReactions/subscriptions.ts b/src/domain/post.metrics/updateReactions/subscriptions.ts index d03d380d..a3d0a502 100644 --- a/src/domain/post.metrics/updateReactions/subscriptions.ts +++ b/src/domain/post.metrics/updateReactions/subscriptions.ts @@ -4,7 +4,7 @@ import { subscribe as subscribeToPostRemoved } from '^/domain/post/remove'; import updateReactions from './updateReactions'; -async function subscribe(): Promise +export default async function subscriptions(): Promise { await Promise.all([ @@ -25,4 +25,4 @@ async function subscribe(): Promise ]); } -export default subscribe(); +subscriptions(); diff --git a/tsconfig.json b/tsconfig.json index f88c6487..bf6c2662 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,7 @@ "target": "esnext", "module": "esnext", "moduleResolution": "bundler", - "outDir": "./dist", + "outDir": "./build", "paths": { "^/*": ["./src/*"], } From 9ecc76167e097513bf83a7997f39e478a4d53440 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 13 May 2026 14:01:30 +0200 Subject: [PATCH 04/14] #480: initial new structure --- .gitignore | 7 +- .nvmrc | 2 - changelog.hbs | 33 - {docker => deployment/docker}/Dockerfile | 0 {docker => deployment/docker}/build.sh | 0 .../docker}/keycloak/comify-realm.json | 0 ...ycloak-theme-for-kc-all-other-versions.jar | Bin .../docker}/keycloak/themes_src/README.md | 0 .../docker}/keycloak/themes_src/logo.svg | 0 .../docker}/keycloak/themes_src/main.css | 0 {docker => deployment/docker}/mongodb/init.js | 0 {docker => deployment/docker}/push.sh | 0 .../resources}/global.json | 0 deployment/segments/social.bff.json | 48 + deployment/segments/social.notification.json | 6 + deployment/segments/social.reads.json | 38 + deployment/segments/social.writes.json | 32 + {services => deployment/services}/bff.json | 0 .../services}/gateway.json | 0 .../services}/notification.json | 0 {services => deployment/services}/proxy.json | 0 {services => deployment/services}/reads.json | 0 {services => deployment/services}/reads2.json | 0 .../services}/repository.json | 0 deployment/services/social.json | 38 + deployment/services/standalone.json | 34 + {services => deployment/services}/writes.json | 0 .../insights/app/assets/.gitkeep | 0 development/insights/app/components/main.tsx | 6 + development/insights/app/index.html | 14 + development/insights/app/public/.gitkeep | 0 .../insights/app}/tsconfig.json | 3 +- .../insights}/app/vite-env.d.ts | 0 development/insights/app/vite.config.ts | 32 + development/insights/domain/definitions.ts | 0 development/insights/domain/types.ts | 0 .../insights/integrations/database/index.ts | 0 development/insights/package.json | 15 + development/insights/tsconfig.json | 10 + development/moderation/app/assets/.gitkeep | 0 .../moderation/app/components/main.tsx | 6 + development/moderation/app/index.html | 14 + development/moderation/app/public/.gitkeep | 0 development/moderation/app/tsconfig.json | 12 + .../moderation/app}/vite-env.d.ts | 0 development/moderation/app/vite.config.ts | 32 + development/moderation/domain/definitions.ts | 0 development/moderation/domain/types.ts | 0 .../moderation/integrations/database/index.ts | 0 development/moderation/package.json | 15 + development/moderation/tsconfig.json | 10 + .../app}/assets/images/icons/logout.svg | 0 .../social/app}/assets/images/icons/rated.svg | 0 .../app}/assets/images/icons/reactions.svg | 0 .../app}/assets/images/icons/unrated.svg | 0 .../app}/assets/images/introduction.png | Bin .../social/app}/assets/images/logo.svg | 0 .../images/navigation/create-active.svg | 0 .../images/navigation/create-inactive.svg | 0 .../images/navigation/explore-active.svg | 0 .../images/navigation/explore-inactive.svg | 0 .../navigation/notifications-active.svg | 0 .../navigation/notifications-inactive.svg | 0 .../images/navigation/profile-active.svg | 0 .../images/navigation/profile-inactive.svg | 0 .../images/navigation/timeline-active.svg | 0 .../images/navigation/timeline-inactive.svg | 0 .../social/app}/assets/images/noresult.svg | 0 .../social/app}/assets/images/portrait.svg | 0 .../social/app/components}/App.tsx | 0 .../social/app/components}/Routes.tsx | 0 .../social/app/components}/account/Edit.tsx | 0 .../social/app/components}/account/Main.tsx | 4 +- .../social/app/components}/account/Routes.tsx | 2 +- .../account/components/FullNameForm.tsx | 2 +- .../account/components/NicknameForm.tsx | 2 +- .../hooks/useFullNameFormHandler.ts | 0 .../hooks/useNicknameFormHandler.ts | 0 .../account/hooks/useUpdateFullName.ts | 2 +- .../account/hooks/useUpdateNickname.ts | 2 +- .../social/app/components}/account/index.ts | 0 .../components}/application/ErrorHandler.tsx | 0 .../app/components}/application/Home.tsx | 0 .../app/components}/application/Identify.tsx | 0 .../app/components}/application/Login.tsx | 0 .../app/components}/application/Logout.tsx | 0 .../app/components}/application/NotFound.tsx | 0 .../app/components}/application/Privacy.tsx | 0 .../application/ProtectedRoute.tsx | 0 .../app/components}/application/Routes.tsx | 2 +- .../app/components}/application/Terms.tsx | 0 .../application/components/Footer.tsx | 0 .../application/components/Header.tsx | 2 +- .../application/components/Identity.tsx | 2 +- .../application/components/Introduction.tsx | 0 .../application/components/LegalHeader.tsx | 0 .../application/components/LegalInfo.tsx | 0 .../application/components/Logo.tsx | 0 .../application/components/LogoutButton.tsx | 0 .../application/components/LogoutPanel.tsx | 0 .../application/components/Menu.tsx | 2 +- .../application/components/Modal.tsx | 0 .../application/components/Sidebar.tsx | 0 .../application/contexts/AppContext.tsx | 0 .../contexts/hooks/useAppContextValue.ts | 0 .../application/hooks/useAppState.ts | 0 .../application/hooks/useIdentify.ts | 0 .../components}/application/hooks/useLogin.ts | 0 .../application/hooks/useLogout.ts | 0 .../application/hooks/useNavigateHome.ts | 0 .../application/hooks/useNavigateLogin.ts | 0 .../app/components}/application/index.ts | 0 .../application/layouts/Application.tsx | 0 .../components}/application/layouts/Guest.tsx | 0 .../components}/application/layouts/Legal.tsx | 0 .../components}/comic/components/Editor.tsx | 0 .../components}/comic/components/Image.tsx | 0 .../components/hooks/useCreateHandler.ts | 0 .../comic/components/hooks/useEditor.ts | 0 .../social/app/components}/comic/index.ts | 0 .../comment/components/Comment.tsx | 0 .../components}/comment/components/Form.tsx | 0 .../components/hooks/useCreateHandler.ts | 0 .../social/app/components}/comment/index.ts | 0 .../common/components/BackButton.tsx | 0 .../components}/common/components/BackRow.tsx | 0 .../common/components/CompactNumber.tsx | 0 .../common/components/ConfirmationPanel.tsx | 0 .../common/components/EditButton.tsx | 0 .../components}/common/components/Form.tsx | 0 .../components/LoadingAndResultContainer.tsx | 0 .../common/components/LoadingContainer.tsx | 0 .../components}/common/components/Menu.tsx | 0 .../components}/common/components/Modal.tsx | 0 .../common/components/NotFound.tsx | 0 .../common/components/OrderAndAddRow.tsx | 0 .../common/components/OrderAndSearchRow.tsx | 0 .../common/components/OrderRow.tsx | 0 .../common/components/PullToRefresh.tsx | 0 .../common/components/Quantifier.tsx | 0 .../common/components/RemoveOption.tsx | 0 .../common/components/ResultContainer.tsx | 0 .../common/components/ScrollLoader.tsx | 0 .../components}/common/components/Tabs.tsx | 0 .../common/components/TenantContainer.tsx | 0 .../common/components/TimeElapsed.tsx | 0 .../components/elements/LoadingIndicator.tsx | 0 .../common/components/elements/NoResult.tsx | 0 .../components/elements/OrderSelection.tsx | 0 .../components/hooks/useLoadOnScroll.ts | 0 .../components/hooks/useRefreshOnPull.ts | 0 .../components/hooks/useScrollContainer.ts | 0 .../common/components/hooks/useTenant.ts | 0 .../social/app/components}/common/index.ts | 0 .../creator/components/ConciseIdentity.tsx | 0 .../creator/components/Counters.tsx | 0 .../creator/components/FullIdentity.tsx | 0 .../creator/components/Profile.tsx | 0 .../creator/components/TimeElapsed.tsx | 0 .../creator/components/elements/Avatar.tsx | 0 .../creator/components/elements/AvatarRow.tsx | 0 .../components/elements/CountersColumn.tsx | 0 .../components/elements/CountersRow.tsx | 2 +- .../components/elements/JoinedColumn.tsx | 0 .../components/elements/NamesColumn.tsx | 0 .../creator/components/elements/NamesRow.tsx | 0 .../components/elements/TimeElapsedColumn.tsx | 2 +- .../social/app/components}/creator/index.ts | 0 .../social/app/components}/editor/Editor.ts | 0 .../social/app/components}/editor/Renderer.ts | 0 .../app/components}/editor/Workbench.ts | 0 .../editor/assets/add-speech-bubble.png | Bin .../app/components}/editor/assets/delete.png | Bin .../app/components}/editor/assets/edit.png | Bin .../editor/assets/instructions.png | Bin .../app/components}/editor/assets/move.png | Bin .../app/components}/editor/assets/resize.png | Bin .../editor/assets/select-image.png | Bin .../editor/assets/take-picture.png | Bin .../components}/editor/definitions/Styling.ts | 0 .../components}/editor/elements/Element.ts | 0 .../app/components}/editor/elements/Group.ts | 0 .../editor/elements/ImageElement.ts | 0 .../social/app/components}/editor/index.ts | 0 .../components}/editor/model/Background.ts | 0 .../app/components}/editor/model/Bubble.ts | 0 .../app/components}/editor/model/Model.ts | 0 .../components}/editor/model/SpeechBubble.ts | 0 .../editor/toolkit/BubbleSelection.ts | 0 .../app/components}/editor/toolkit/Button.ts | 0 .../components}/editor/toolkit/MainActions.ts | 0 .../app/components}/editor/utils/Camera.ts | 0 .../components}/editor/utils/CameraDialog.ts | 0 .../components}/editor/utils/FileDialog.ts | 0 .../app/components}/editor/utils/Geometry.ts | 0 .../components}/editor/utils/InputDialog.ts | 0 .../components}/editor/utils/InputManager.ts | 0 .../components}/editor/utils/TextProcessor.ts | 0 .../app/components}/explore/Creators.tsx | 2 +- .../social/app/components}/explore/Main.tsx | 2 +- .../social/app/components}/explore/Posts.tsx | 2 +- .../social/app/components}/explore/Routes.tsx | 2 +- .../social/app/components}/explore/index.ts | 0 .../social/app/components}/main.css | 0 .../social/app/components}/main.tsx | 0 .../app/components}/notification/Main.tsx | 6 +- .../app/components}/notification/Routes.tsx | 2 +- .../notification/components/Panel.tsx | 2 +- .../notification/components/PanelList.tsx | 0 .../components/elements/Comic.tsx | 0 .../components/elements/Comment.tsx | 0 .../components/elements/RatedPost.tsx | 0 .../components/elements/ReactedToPost.tsx | 0 .../components/elements/StartedFollowing.tsx | 0 .../notification/hooks/useNotifications.ts | 0 .../hooks/useViewNotificationDetails.ts | 0 .../app/components}/notification/index.ts | 0 .../social/app/components}/post/Create.tsx | 2 +- .../social/app/components}/post/Creator.tsx | 4 +- .../social/app/components}/post/Details.tsx | 8 +- .../social/app/components}/post/Explore.tsx | 8 +- .../social/app/components}/post/Following.tsx | 8 +- .../social/app/components}/post/Highlight.tsx | 10 +- .../social/app/components}/post/Main.tsx | 0 .../social/app/components}/post/Reactions.tsx | 8 +- .../app/components}/post/Recommended.tsx | 8 +- .../social/app/components}/post/Remove.tsx | 2 +- .../social/app/components}/post/Routes.tsx | 2 +- .../post/components/DetailsPanel.tsx | 8 +- .../post/components/LargePanel.tsx | 6 +- .../components}/post/components/PanelGrid.tsx | 0 .../components}/post/components/PanelList.tsx | 0 .../post/components/SmallPanel.tsx | 6 +- .../components/elements/EngagementRow.tsx | 4 +- .../components}/post/hooks/useAddComicPost.ts | 2 +- .../post/hooks/useConfirmPostRemoval.ts | 0 .../components}/post/hooks/useCreatorPosts.ts | 0 .../components}/post/hooks/useExplorePosts.ts | 0 .../post/hooks/useGoToParentPost.ts | 0 .../components}/post/hooks/useHighlight.ts | 0 .../app/components}/post/hooks/usePost.ts | 0 .../post/hooks/usePostsFollowing.ts | 0 .../post/hooks/usePostsRecommended.ts | 0 .../components}/post/hooks/useReactions.ts | 0 .../components}/post/hooks/useRemovePost.ts | 2 +- .../components}/post/hooks/useReorderList.ts | 0 .../post/hooks/useShowCreateReaction.ts | 0 .../post/hooks/useViewPostDetails.ts | 0 .../post/hooks/useViewPostHighlightDetails.ts | 0 .../social/app/components}/post/index.ts | 0 .../social/app/components}/profile/Comics.tsx | 2 +- .../app/components}/profile/Followers.tsx | 2 +- .../app/components}/profile/Following.tsx | 2 +- .../social/app/components}/profile/Main.tsx | 4 +- .../social/app/components}/profile/Routes.tsx | 2 +- .../profile/hooks/useEditProfile.ts | 0 .../components}/profile/hooks/useProfile.ts | 0 .../profile/hooks/useViewProfile.ts | 0 .../social/app/components}/profile/index.ts | 0 .../rating/components/Engagement.tsx | 2 +- .../rating/components/elements/Icon.tsx | 0 .../rating/components/hooks/useEngagement.ts | 0 .../rating/hooks/useTogglePostRating.ts | 0 .../social/app/components}/rating/index.ts | 0 .../app/components}/reaction/Create.tsx | 2 +- .../app/components}/reaction/CreateComic.tsx | 2 +- .../components}/reaction/CreateComment.tsx | 2 +- .../app/components}/reaction/Routes.tsx | 0 .../reaction/components/Engagement.tsx | 2 +- .../reaction/components/SingleReactionRow.tsx | 0 .../reaction/components/elements/Icon.tsx | 0 .../reaction/hooks/useCreateComic.ts | 0 .../reaction/hooks/useCreateComment.ts | 0 .../reaction/hooks/useViewPost.tsx | 0 .../reaction/hooks/useViewReaction.tsx | 0 .../social/app/components}/reaction/index.ts | 0 .../app/components}/relation/Explore.tsx | 4 +- .../app/components}/relation/Followers.tsx | 4 +- .../app/components}/relation/Following.tsx | 4 +- .../app/components}/relation/Profile.tsx | 2 +- .../relation/components/Counters.tsx | 2 +- .../components}/relation/components/Panel.tsx | 0 .../relation/components/PanelList.tsx | 0 .../relation/components/Profile.tsx | 2 +- .../relation/components/TimeElapsed.tsx | 2 +- .../components/elements/FollowButton.tsx | 0 .../components/elements/FollowRow.tsx | 2 +- .../relation/components/hooks/useEstablish.ts | 0 .../relation/hooks/useCreatorFollowers.ts | 0 .../relation/hooks/useCreatorFollowing.ts | 0 .../relation/hooks/useEstablish.ts | 0 .../relation/hooks/useExploreCreators.ts | 0 .../components}/relation/hooks/useRelation.ts | 2 +- .../relation/hooks/useReorderList.ts | 0 .../social/app/components}/relation/index.ts | 0 .../social/app/components}/theme.css | 0 .../app/components}/timeline/Following.tsx | 2 +- .../app/components}/timeline/ForYou.tsx | 2 +- .../social/app/components}/timeline/Main.tsx | 2 +- .../app/components}/timeline/Routes.tsx | 2 +- .../social/app/components}/timeline/index.ts | 0 .../social/app/components/vite-env.d.ts | 1 + .../social/app}/index.html | 2 +- .../social/app}/public/robots.txt | 0 development/social/app/tsconfig.json | 12 + development/social/app/vite-env.d.ts | 1 + development/social/app/vite.config.ts | 34 + .../social}/assets/appicon192.png | Bin .../social}/assets/appicon32.png | Bin .../social}/assets/appicon512.png | Bin development/social/assets/localhost.css | 0 .../authentication/getLoginUrl/getLoginUrl.ts | 0 .../authentication/getLoginUrl/index.ts | 0 .../social}/domain/authentication/index.ts | 0 .../domain/authentication/login/index.ts | 0 .../domain/authentication/login/login.ts | 0 .../domain/authentication/logout/index.ts | 0 .../domain/authentication/logout/logout.ts | 0 .../domain/authentication/requester.ts | 0 .../social}/domain/authentication/types.ts | 0 .../domain/comic/aggregate/aggregate.ts | 0 .../social}/domain/comic/aggregate/index.ts | 0 .../social}/domain/comic/aggregate/types.ts | 0 .../domain/comic/create/InvalidComic.ts | 0 .../social}/domain/comic/create/create.ts | 0 .../social}/domain/comic/create/createData.ts | 0 .../social}/domain/comic/create/index.ts | 0 .../social}/domain/comic/create/insertData.ts | 0 .../social}/domain/comic/create/types.ts | 0 .../domain/comic/create/validateData.ts | 0 .../social}/domain/comic/definitions.ts | 0 .../social}/domain/comic/erase/erase.ts | 0 .../social}/domain/comic/erase/eraseData.ts | 0 .../social}/domain/comic/erase/index.ts | 0 .../domain/comic/getById/ComicNotFound.ts | 0 .../social}/domain/comic/getById/getById.ts | 0 .../social}/domain/comic/getById/index.ts | 0 .../getByIdAggregated/getByIdAggregated.ts | 0 .../domain/comic/getByIdAggregated/index.ts | 0 .../social}/domain/comic/index.ts | 0 .../social}/domain/comic/types.ts | 0 .../domain/comment/create/InvalidComment.ts | 0 .../social}/domain/comment/create/create.ts | 0 .../domain/comment/create/createData.ts | 0 .../social}/domain/comment/create/index.ts | 0 .../domain/comment/create/insertData.ts | 0 .../social}/domain/comment/create/types.ts | 0 .../domain/comment/create/validateData.ts | 0 .../social}/domain/comment/definitions.ts | 0 .../social}/domain/comment/erase/erase.ts | 0 .../social}/domain/comment/erase/index.ts | 0 .../domain/comment/getById/CommentNotFound.ts | 0 .../social}/domain/comment/getById/getById.ts | 0 .../social}/domain/comment/getById/index.ts | 0 .../social}/domain/comment/index.ts | 0 .../social}/domain/comment/types.ts | 0 .../common/filterResolved/filterResolved.ts | 0 .../domain/common/filterResolved/index.ts | 0 .../common/validateRange/InvalidRange.ts | 0 .../domain/common/validateRange/index.ts | 0 .../domain/common/validateRange/types.ts | 0 .../common/validateRange/validateRange.ts | 0 .../domain/creator.metrics/create/create.ts | 0 .../creator.metrics/create/createData.ts | 0 .../domain/creator.metrics/create/index.ts | 0 .../creator.metrics/create/insertData.ts | 0 .../creator.metrics/create/subscriptions.ts | 0 .../domain/creator.metrics/definitions.ts | 0 .../getByCreator/CreatorMetricsNotFound.ts | 0 .../getByCreator/getByCreator.ts | 0 .../creator.metrics/getByCreator/index.ts | 0 .../social}/domain/creator.metrics/index.ts | 0 .../social}/domain/creator.metrics/types.ts | 0 .../domain/creator.metrics/update/index.ts | 0 .../domain/creator.metrics/update/update.ts | 0 .../creator.metrics/updateFollowers/index.ts | 0 .../updateFollowers/subscriptions.ts | 0 .../updateFollowers/updateFollowers.ts | 0 .../creator.metrics/updateFollowing/index.ts | 0 .../updateFollowing/subscriptions.ts | 0 .../updateFollowing/updateFollowing.ts | 0 .../creator.metrics/updatePosts/index.ts | 0 .../updatePosts/subscriptions.ts | 0 .../updatePosts/updatePosts.ts | 0 .../domain/creator/aggregate/aggregate.ts | 0 .../social}/domain/creator/aggregate/index.ts | 0 .../social}/domain/creator/aggregate/types.ts | 0 .../creator/cleanNickname/cleanNickname.ts | 0 .../creator/cleanNickname/definitions.ts | 0 .../domain/creator/cleanNickname/index.ts | 0 .../domain/creator/create/InvalidCreator.ts | 0 .../social}/domain/creator/create/create.ts | 0 .../domain/creator/create/createData.ts | 0 .../social}/domain/creator/create/index.ts | 0 .../domain/creator/create/insertData.ts | 0 .../social}/domain/creator/create/types.ts | 0 .../domain/creator/create/validateData.ts | 0 .../social}/domain/creator/definitions.ts | 0 .../social}/domain/creator/erase/erase.ts | 0 .../social}/domain/creator/erase/index.ts | 0 .../TooManySimilarNicknames.ts | 0 .../generateNickname/generateNickname.ts | 0 .../domain/creator/generateNickname/index.ts | 0 .../generateNickname/retrieveByNickname.ts | 0 .../retrieveByStartNickname.ts | 0 .../domain/creator/getByEmail/getByEmail.ts | 0 .../domain/creator/getByEmail/index.ts | 0 .../domain/creator/getById/CreatorNotFound.ts | 0 .../social}/domain/creator/getById/getById.ts | 0 .../social}/domain/creator/getById/index.ts | 0 .../getByIdAggregated/getByIdAggregated.ts | 0 .../domain/creator/getByIdAggregated/index.ts | 0 .../creator/getByNickname/NicknameNotFound.ts | 0 .../creator/getByNickname/getByNickname.ts | 0 .../domain/creator/getByNickname/index.ts | 0 .../getByNicknameAggregated.ts | 0 .../creator/getByNicknameAggregated/index.ts | 0 .../social}/domain/creator/getMe/getMe.ts | 0 .../social}/domain/creator/getMe/index.ts | 0 .../getMeAggregated/getMeAggregated.ts | 0 .../domain/creator/getMeAggregated/index.ts | 0 .../domain/creator/getOthers/getOthers.ts | 0 .../social}/domain/creator/getOthers/index.ts | 0 .../social}/domain/creator/index.ts | 0 .../domain/creator/register/definitions.ts | 0 .../creator/register/downloadPortrait.ts | 0 .../social}/domain/creator/register/index.ts | 0 .../domain/creator/register/publish.ts | 0 .../domain/creator/register/register.ts | 0 .../domain/creator/register/subscribe.ts | 0 .../social}/domain/creator/register/types.ts | 0 .../social}/domain/creator/types.ts | 0 .../social}/domain/creator/update/index.ts | 0 .../social}/domain/creator/update/update.ts | 0 .../creator/updateFullName/InvalidFullName.ts | 0 .../domain/creator/updateFullName/index.ts | 0 .../domain/creator/updateFullName/types.ts | 0 .../creator/updateFullName/updateFullName.ts | 0 .../creator/updateFullName/validateData.ts | 0 .../updateNickname/NicknameAlreadyExists.ts | 0 .../domain/creator/updateNickname/index.ts | 0 .../updateNickname/retrieveByNickname.ts | 0 .../creator/updateNickname/updateNickname.ts | 0 .../social}/domain/definitions.ts | 0 .../domain/image/create/InvalidDataURL.ts | 0 .../domain/image/create/convertDataUrl.ts | 0 .../social}/domain/image/create/create.ts | 0 .../social}/domain/image/create/index.ts | 0 .../social}/domain/image/definitions.ts | 0 .../image/download/ImageNotDownloaded.ts | 0 .../social}/domain/image/download/download.ts | 0 .../domain/image/download/downloadImage.ts | 0 .../domain/image/download/getMetaData.ts | 0 .../social}/domain/image/download/index.ts | 0 .../social}/domain/image/erase/erase.ts | 0 .../social}/domain/image/erase/index.ts | 0 .../domain/image/getById/ImageNotFound.ts | 0 .../domain/image/getById/createDataUrl.ts | 0 .../social}/domain/image/getById/getById.ts | 0 .../social}/domain/image/getById/index.ts | 0 .../domain/image/getById/retrieveData.ts | 0 .../domain/image/getById/retrieveFile.ts | 0 .../social}/domain/image/index.ts | 0 .../social}/domain/image/save/InvalidImage.ts | 0 .../social}/domain/image/save/createData.ts | 0 .../social}/domain/image/save/fileExists.ts | 0 .../domain/image/save/generateStorageKey.ts | 0 .../social}/domain/image/save/index.ts | 0 .../social}/domain/image/save/insertData.ts | 0 .../social}/domain/image/save/insertFile.ts | 0 .../social}/domain/image/save/save.ts | 0 .../social}/domain/image/save/validateData.ts | 0 .../social}/domain/image/types.ts | 0 .../domain/image/validate/InvalidImage.ts | 0 .../social}/domain/image/validate/index.ts | 0 .../social}/domain/image/validate/validate.ts | 0 .../notification/aggregate/aggregate.ts | 0 .../domain/notification/aggregate/index.ts | 0 .../domain/notification/aggregate/types.ts | 0 .../domain/notification/create/create.ts | 0 .../domain/notification/create/createData.ts | 0 .../domain/notification/create/index.ts | 0 .../domain/notification/create/insertData.ts | 0 .../domain/notification/definitions.ts | 0 .../notification/getByPostId/getByPostId.ts | 0 .../domain/notification/getByPostId/index.ts | 0 .../notification/getRecent/getRecent.ts | 0 .../domain/notification/getRecent/index.ts | 0 .../getRecentAggregated.ts | 0 .../notification/getRecentAggregated/index.ts | 0 .../social}/domain/notification/index.ts | 0 .../domain/notification/notify/createdPost.ts | 0 .../domain/notification/notify/index.ts | 0 .../domain/notification/notify/ratedPost.ts | 0 .../domain/notification/notify/removedPost.ts | 0 .../notification/notify/startedFollowing.ts | 0 .../notification/notify/subscriptions.ts | 0 .../domain/notification/remove/index.ts | 0 .../domain/notification/remove/remove.ts | 0 .../social}/domain/notification/types.ts | 0 .../domain/post.metrics/create/create.ts | 0 .../domain/post.metrics/create/createData.ts | 0 .../domain/post.metrics/create/index.ts | 0 .../domain/post.metrics/create/insertData.ts | 0 .../post.metrics/create/subscriptions.ts | 0 .../domain/post.metrics/definitions.ts | 0 .../getByPost/PostMetricsNotFound.ts | 0 .../post.metrics/getByPost/getByPost.ts | 0 .../domain/post.metrics/getByPost/index.ts | 0 .../social}/domain/post.metrics/index.ts | 0 .../social}/domain/post.metrics/types.ts | 0 .../domain/post.metrics/update/index.ts | 0 .../domain/post.metrics/update/update.ts | 0 .../post.metrics/updateRatings/index.ts | 0 .../updateRatings/subscriptions.ts | 0 .../updateRatings/updateRatings.ts | 0 .../post.metrics/updateReactions/index.ts | 0 .../updateReactions/subscriptions.ts | 0 .../updateReactions/updateReactions.ts | 0 .../domain/post/aggregate/aggregate.ts | 0 .../social}/domain/post/aggregate/index.ts | 0 .../social}/domain/post/aggregate/types.ts | 0 .../social}/domain/post/create/InvalidPost.ts | 0 .../social}/domain/post/create/create.ts | 0 .../social}/domain/post/create/createData.ts | 0 .../social}/domain/post/create/definitions.ts | 0 .../social}/domain/post/create/index.ts | 0 .../social}/domain/post/create/insertData.ts | 0 .../social}/domain/post/create/publish.ts | 0 .../social}/domain/post/create/subscribe.ts | 0 .../social}/domain/post/create/types.ts | 0 .../domain/post/create/validateData.ts | 0 .../post/createWithComic/createWithComic.ts | 0 .../domain/post/createWithComic/index.ts | 0 .../createWithComment/createWithComment.ts | 0 .../domain/post/createWithComment/index.ts | 0 .../social}/domain/post/definitions.ts | 0 .../social}/domain/post/erase/erase.ts | 0 .../social}/domain/post/erase/index.ts | 0 .../social}/domain/post/explore/explore.ts | 0 .../social}/domain/post/explore/index.ts | 0 .../domain/post/explore/retrieveData.ts | 0 .../exploreAggregated/exploreAggregated.ts | 0 .../domain/post/exploreAggregated/index.ts | 0 .../domain/post/getByCreator/getByCreator.ts | 0 .../social}/domain/post/getByCreator/index.ts | 0 .../getByCreatorAggregated.ts | 0 .../post/getByCreatorAggregated/index.ts | 0 .../post/getByFollowing/getByFollowing.ts | 0 .../domain/post/getByFollowing/index.ts | 0 .../post/getByFollowing/retrieveData.ts | 0 .../getByFollowingAggregated.ts | 0 .../post/getByFollowingAggregated/index.ts | 0 .../domain/post/getById/PostNotFound.ts | 0 .../social}/domain/post/getById/getById.ts | 0 .../social}/domain/post/getById/index.ts | 0 .../getByIdAggregated/getByIdAggregated.ts | 0 .../domain/post/getByIdAggregated/index.ts | 0 .../domain/post/getByParent/getByParent.ts | 0 .../social}/domain/post/getByParent/index.ts | 0 .../getByParentAggregated.ts | 0 .../post/getByParentAggregated/index.ts | 0 .../post/getRecommended/getRecommended.ts | 0 .../domain/post/getRecommended/index.ts | 0 .../getRecommendedAggregated.ts | 0 .../post/getRecommendedAggregated/index.ts | 0 .../social}/domain/post/index.ts | 0 .../social}/domain/post/remove/definitions.ts | 0 .../social}/domain/post/remove/deleteData.ts | 0 .../social}/domain/post/remove/index.ts | 0 .../social}/domain/post/remove/isNotOwner.ts | 0 .../social}/domain/post/remove/publish.ts | 0 .../social}/domain/post/remove/remove.ts | 0 .../social}/domain/post/remove/subscribe.ts | 0 .../social}/domain/post/remove/types.ts | 0 .../domain/post/remove/undeleteData.ts | 0 .../social}/domain/post/types.ts | 0 .../social}/domain/post/update/index.ts | 0 .../social}/domain/post/update/update.ts | 0 .../domain/rating/create/InvalidRating.ts | 0 .../social}/domain/rating/create/create.ts | 0 .../domain/rating/create/createData.ts | 0 .../social}/domain/rating/create/index.ts | 0 .../domain/rating/create/insertData.ts | 0 .../social}/domain/rating/create/types.ts | 0 .../domain/rating/create/validateData.ts | 0 .../social}/domain/rating/definitions.ts | 0 .../social}/domain/rating/erase/erase.ts | 0 .../social}/domain/rating/erase/index.ts | 0 .../social}/domain/rating/exists/exists.ts | 0 .../social}/domain/rating/exists/index.ts | 0 .../social}/domain/rating/index.ts | 0 .../domain/rating/toggle/definitions.ts | 0 .../social}/domain/rating/toggle/getData.ts | 0 .../social}/domain/rating/toggle/index.ts | 0 .../social}/domain/rating/toggle/publish.ts | 0 .../social}/domain/rating/toggle/subscribe.ts | 0 .../social}/domain/rating/toggle/switchOff.ts | 0 .../social}/domain/rating/toggle/switchOn.ts | 0 .../social}/domain/rating/toggle/toggle.ts | 0 .../social}/domain/rating/toggle/types.ts | 0 .../social}/domain/rating/types.ts | 0 .../domain/relation/aggregate/aggregate.ts | 0 .../domain/relation/aggregate/index.ts | 0 .../domain/relation/aggregate/types.ts | 0 .../domain/relation/create/InvalidRelation.ts | 0 .../social}/domain/relation/create/create.ts | 0 .../domain/relation/create/createData.ts | 0 .../social}/domain/relation/create/index.ts | 0 .../domain/relation/create/insertData.ts | 0 .../social}/domain/relation/create/types.ts | 0 .../domain/relation/create/validateData.ts | 0 .../social}/domain/relation/definitions.ts | 0 .../social}/domain/relation/erase/erase.ts | 0 .../social}/domain/relation/erase/index.ts | 0 .../establish/RelationAlreadyExists.ts | 0 .../domain/relation/establish/definitions.ts | 0 .../domain/relation/establish/establish.ts | 0 .../domain/relation/establish/index.ts | 0 .../domain/relation/establish/publish.ts | 0 .../domain/relation/establish/subscribe.ts | 0 .../domain/relation/establish/types.ts | 0 .../social}/domain/relation/exists/exists.ts | 0 .../social}/domain/relation/exists/index.ts | 0 .../domain/relation/explore/explore.ts | 0 .../social}/domain/relation/explore/index.ts | 0 .../exploreAggregated/exploreAggregated.ts | 0 .../relation/exploreAggregated/index.ts | 0 .../social}/domain/relation/get/get.ts | 0 .../social}/domain/relation/get/index.ts | 0 .../relation/getAggregated/getAggregated.ts | 0 .../domain/relation/getAggregated/index.ts | 0 .../relation/getFollowers/getFollowers.ts | 0 .../domain/relation/getFollowers/index.ts | 0 .../relation/getFollowers/retrieveData.ts | 0 .../getFollowersAggregated.ts | 0 .../relation/getFollowersAggregated/index.ts | 0 .../relation/getFollowing/getFollowing.ts | 0 .../domain/relation/getFollowing/index.ts | 0 .../relation/getFollowing/retrieveData.ts | 0 .../getFollowingAggregated.ts | 0 .../relation/getFollowingAggregated/index.ts | 0 .../social}/domain/relation/index.ts | 0 .../relation/translateToRequester/index.ts | 0 .../translateToRequester/translate.ts | 0 .../translateToRequester.ts | 0 .../relation/translateToRequester/types.ts | 0 .../social}/domain/relation/types.ts | 0 .../social}/domain/tenant/definitions.ts | 0 .../tenant/getByOrigin/TenantNotFound.ts | 0 .../domain/tenant/getByOrigin/getByOrigin.ts | 0 .../domain/tenant/getByOrigin/index.ts | 0 .../getByOriginConverted/InvalidOrigin.ts | 0 .../getByOriginConverted.ts | 0 .../tenant/getByOriginConverted/index.ts | 0 .../tenant/getByOriginConverted/types.ts | 0 .../getByOriginConverted/validateData.ts | 0 .../social}/domain/tenant/index.ts | 0 .../social}/domain/tenant/tenant.ts | 0 .../social}/domain/tenant/types.ts | 0 {src => development/social}/domain/types.ts | 0 .../authenticationMiddleware.ts | 8 +- .../authentication/identityProvider.ts | 0 .../authentication/originMiddleware.ts | 0 .../authentication/requesterMiddleware.ts | 0 .../integrations/authentication/setUp.ts | 0 .../integrations/authentication/tearDown.ts | 0 .../social}/integrations/database/database.ts | 0 .../integrations/database/healthCheck.ts | 0 .../social}/integrations/database/index.ts | 0 .../social}/integrations/database/setUp.ts | 0 .../social}/integrations/database/tearDown.ts | 0 .../social}/integrations/errors/BadRequest.ts | 0 .../social}/integrations/errors/NotFound.ts | 0 .../integrations/errors/ServerError.ts | 0 .../integrations/errors/Unauthorized.ts | 0 .../integrations/errors/ValidationError.ts | 0 .../social}/integrations/errors/index.ts | 0 .../integrations/eventBroker/eventBroker.ts | 0 .../integrations/eventBroker/healthCheck.ts | 0 .../social}/integrations/eventBroker/index.ts | 0 .../social}/integrations/eventBroker/setUp.ts | 0 .../integrations/eventBroker/tearDown.ts | 0 .../integrations/fileStore/fileStore.ts | 0 .../integrations/fileStore/healthCheck.ts | 0 .../social}/integrations/fileStore/index.ts | 0 .../social}/integrations/fileStore/setUp.ts | 0 .../integrations/fileStore/tearDown.ts | 0 .../social}/integrations/http/http.ts | 0 .../social}/integrations/http/index.ts | 0 .../social}/integrations/logging/index.ts | 0 .../social}/integrations/logging/logger.ts | 0 .../notification/notificationHealthCheck.ts | 0 .../notification/notificationService.ts | 0 .../middleware/MultiTenantMiddleware.ts | 2 +- .../integrations/tenancy/tenantMiddleware.ts | 0 .../social}/integrations/utilities/crypto.ts | 0 .../social}/integrations/utilities/dates.ts | 0 .../integrations/utilities/webbrowser.ts | 0 .../social}/integrations/validation/index.ts | 0 .../integrations/validation/validator.ts | 0 development/social/package.json | 15 + development/social/tsconfig.json | 10 + development/tsconfig.json | 3 + docs/README.md | 141 - docs/assets/README.md | 6 - .../assets/images/architecture/containers.png | Bin 21724 -> 0 bytes docs/assets/images/architecture/context.png | Bin 42053 -> 0 bytes docs/assets/images/architecture/shadows.png | Bin 10226 -> 0 bytes docs/assets/images/domain/modules.png | Bin 14007 -> 0 bytes docs/assets/images/webui/example.png | Bin 690563 -> 0 bytes docs/assets/images/webui/modules.png | Bin 12131 -> 0 bytes docs/domain/README.md | 69 - docs/integrations/AUTHENTICATION.md | 109 - docs/integrations/DATABASE.md | 120 - docs/integrations/EVENT_BROKER.md | 55 - docs/integrations/FILE_STORE.md | 66 - docs/integrations/HTTP.md | 82 - docs/integrations/LOGGING.md | 66 - docs/integrations/NOTIFICATION.md | 62 - docs/integrations/README.md | 25 - docs/integrations/RUNTIME.md | 48 - docs/integrations/VALIDATION.md | 96 - docs/webui/DESIGNSYSTEM.md | 4 - docs/webui/README.md | 105 - {docs => documentation}/diagrams/context.cml | 0 .../diagrams/workspace.dsl | 0 example.env | 6 +- jitar.json | 8 +- package-lock.json | 2587 ++++++++--------- package.json | 57 +- segments/bff.json | 48 - segments/notification.json | 6 - segments/reads.json | 38 - segments/writes.json | 32 - services/standalone.json | 32 - src/apps/social/public/manifest.webmanifest | 41 - src/apps/social/vite.config.ts | 58 - src/tsconfig.json | 4 - testing/insights/tsconfig.json | 8 + testing/moderation/tsconfig.json | 8 + .../fixtures/databases.fixture.ts | 0 .../fixtures/fileStores.fixture.ts | 0 .../fixtures/httpClients.fixture.ts | 0 .../fixtures/identities.fixture.ts | 0 .../authentication/fixtures/images.fixture.ts | 0 .../domain/authentication/fixtures/index.ts | 0 .../fixtures/records.fixture.ts | 0 .../fixtures/tenants.fixture.ts | 0 .../authentication/fixtures/values.fixture.ts | 0 .../domain/authentication/login.spec.ts | 0 .../social}/domain/comic/create.spec.ts | 0 .../comic/fixtures/databases.fixture.ts | 0 .../comic/fixtures/fileStores.fixture.ts | 0 .../social}/domain/comic/fixtures/index.ts | 0 .../domain/comic/fixtures/values.fixture.ts | 0 .../social}/domain/comment/create.spec.ts | 0 .../comment/fixtures/databases.fixture.ts | 0 .../social}/domain/comment/fixtures/index.ts | 0 .../domain/comment/fixtures/values.fixture.ts | 0 .../social}/domain/common/fixtures/index.ts | 0 .../domain/common/fixtures/values.fixtures.ts | 0 .../domain/common/validateRange.spec.ts | 0 .../creator/fixtures/databases.fixture.ts | 0 .../social}/domain/creator/fixtures/index.ts | 0 .../creator/fixtures/records.fixture.ts | 0 .../creator/fixtures/requesters.fixture.ts | 0 .../creator/fixtures/tenants.fixture.ts | 0 .../domain/creator/fixtures/values.fixture.ts | 0 .../domain/creator/updateFullName.spec.ts | 0 .../domain/creator/updateNickname.spec.ts | 0 .../social}/domain/image/create.spec.ts | 0 .../social}/domain/image/download.spec.ts | 0 .../domain/image/fixtures/dataUrls.fixture.ts | 0 .../image/fixtures/databases.fixture.ts | 0 .../image/fixtures/fileStores.fixture.ts | 0 .../image/fixtures/httpClients.fixture.ts | 0 .../social}/domain/image/fixtures/index.ts | 0 .../image/fixtures/responses.fixture.ts | 0 .../domain/image/fixtures/urls.fixture.ts | 0 .../domain/notification/create.spec.ts | 0 .../notification/fixtures/dataUrls.fixture.ts | 0 .../fixtures/databases.fixture.ts | 0 .../fixtures/fileStores.fixture.ts | 0 .../notification/fixtures/files.fixture.ts | 0 .../domain/notification/fixtures/index.ts | 0 .../notification/fixtures/records.fixture.ts | 0 .../fixtures/requesters.fixture.ts | 0 .../notification/fixtures/tenants.fixture.ts | 0 .../notification/fixtures/values.fixture.ts | 0 .../notification/getRecentAggregated.spec.ts | 0 .../removePostNotifications.spec.ts | 0 .../domain/post/createWithComic.spec.ts | 0 .../domain/post/fixtures/dataUrls.fixture.ts | 0 .../domain/post/fixtures/databases.fixture.ts | 0 .../post/fixtures/fileStores.fixture.ts | 0 .../domain/post/fixtures/files.fixture.ts | 0 .../social}/domain/post/fixtures/index.ts | 0 .../domain/post/fixtures/queries.fixture.ts | 0 .../domain/post/fixtures/records.fixture.ts | 0 .../post/fixtures/requesters.fixture.ts | 0 .../domain/post/fixtures/tenants.fixture.ts | 0 .../domain/post/fixtures/values.fixture.ts | 0 .../post/getByFollowingAggregated.spec.ts | 0 .../post/getRecommendedAggregated.spec.ts | 0 .../social}/domain/post/remove.spec.ts | 0 .../rating/fixtures/databases.fixture.ts | 0 .../social}/domain/rating/fixtures/index.ts | 0 .../domain/rating/fixtures/records.fixture.ts | 0 .../rating/fixtures/requesters.fixture.ts | 0 .../domain/rating/fixtures/tenants.fixture.ts | 0 .../domain/rating/fixtures/values.fixture.ts | 0 .../social}/domain/rating/toggle.spec.ts | 0 .../social}/domain/relation/establish.spec.ts | 0 .../domain/relation/exploreAggregated.spec.ts | 0 .../relation/fixtures/databases.fixture.ts | 0 .../social}/domain/relation/fixtures/index.ts | 0 .../relation/fixtures/queries.fixture.ts | 0 .../relation/fixtures/records.fixture.ts | 0 .../relation/fixtures/requesters.fixture.ts | 0 .../relation/fixtures/tenants.fixture.ts | 0 .../relation/fixtures/values.fixture.ts | 0 .../relation/getFollowersAggregated.spec.ts | 0 .../relation/getFollowingAggregated.spec.ts | 0 .../tenant/fixtures/databases.fixtures.ts | 0 .../social}/domain/tenant/fixtures/index.ts | 0 .../tenant/fixtures/records.fixtures.ts | 0 .../domain/tenant/fixtures/values.fixtures.ts | 0 .../social}/domain/tenant/getByOrigin.spec.ts | 0 .../tenant/getByOriginConverted.spec.ts | 0 testing/social/tsconfig.json | 8 + testing/tsconfig.json | 3 + tsconfig.json | 21 +- 833 files changed, 1806 insertions(+), 2894 deletions(-) delete mode 100644 .nvmrc delete mode 100644 changelog.hbs rename {docker => deployment/docker}/Dockerfile (100%) rename {docker => deployment/docker}/build.sh (100%) rename {docker => deployment/docker}/keycloak/comify-realm.json (100%) rename {docker => deployment/docker}/keycloak/themes/keycloak-theme-for-kc-all-other-versions.jar (100%) rename {docker => deployment/docker}/keycloak/themes_src/README.md (100%) rename {docker => deployment/docker}/keycloak/themes_src/logo.svg (100%) rename {docker => deployment/docker}/keycloak/themes_src/main.css (100%) rename {docker => deployment/docker}/mongodb/init.js (100%) rename {docker => deployment/docker}/push.sh (100%) rename {resources => deployment/resources}/global.json (100%) create mode 100644 deployment/segments/social.bff.json create mode 100644 deployment/segments/social.notification.json create mode 100644 deployment/segments/social.reads.json create mode 100644 deployment/segments/social.writes.json rename {services => deployment/services}/bff.json (100%) rename {services => deployment/services}/gateway.json (100%) rename {services => deployment/services}/notification.json (100%) rename {services => deployment/services}/proxy.json (100%) rename {services => deployment/services}/reads.json (100%) rename {services => deployment/services}/reads2.json (100%) rename {services => deployment/services}/repository.json (100%) create mode 100644 deployment/services/social.json create mode 100644 deployment/services/standalone.json rename {services => deployment/services}/writes.json (100%) rename src/assets/localhost.css => development/insights/app/assets/.gitkeep (100%) create mode 100644 development/insights/app/components/main.tsx create mode 100644 development/insights/app/index.html create mode 100644 development/insights/app/public/.gitkeep rename {src/apps/social => development/insights/app}/tsconfig.json (75%) rename {src/apps/social => development/insights}/app/vite-env.d.ts (100%) create mode 100644 development/insights/app/vite.config.ts create mode 100644 development/insights/domain/definitions.ts create mode 100644 development/insights/domain/types.ts create mode 100644 development/insights/integrations/database/index.ts create mode 100644 development/insights/package.json create mode 100644 development/insights/tsconfig.json create mode 100644 development/moderation/app/assets/.gitkeep create mode 100644 development/moderation/app/components/main.tsx create mode 100644 development/moderation/app/index.html create mode 100644 development/moderation/app/public/.gitkeep create mode 100644 development/moderation/app/tsconfig.json rename {src/apps/social => development/moderation/app}/vite-env.d.ts (100%) create mode 100644 development/moderation/app/vite.config.ts create mode 100644 development/moderation/domain/definitions.ts create mode 100644 development/moderation/domain/types.ts create mode 100644 development/moderation/integrations/database/index.ts create mode 100644 development/moderation/package.json create mode 100644 development/moderation/tsconfig.json rename {src/apps/social => development/social/app}/assets/images/icons/logout.svg (100%) rename {src/apps/social => development/social/app}/assets/images/icons/rated.svg (100%) rename {src/apps/social => development/social/app}/assets/images/icons/reactions.svg (100%) rename {src/apps/social => development/social/app}/assets/images/icons/unrated.svg (100%) rename {src/apps/social => development/social/app}/assets/images/introduction.png (100%) rename {src/apps/social => development/social/app}/assets/images/logo.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/create-active.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/create-inactive.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/explore-active.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/explore-inactive.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/notifications-active.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/notifications-inactive.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/profile-active.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/profile-inactive.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/timeline-active.svg (100%) rename {src/apps/social => development/social/app}/assets/images/navigation/timeline-inactive.svg (100%) rename {src/apps/social => development/social/app}/assets/images/noresult.svg (100%) rename {src/apps/social => development/social/app}/assets/images/portrait.svg (100%) rename {src/apps/social/app => development/social/app/components}/App.tsx (100%) rename {src/apps/social/app => development/social/app/components}/Routes.tsx (100%) rename {src/apps/social/app => development/social/app/components}/account/Edit.tsx (100%) rename {src/apps/social/app => development/social/app/components}/account/Main.tsx (82%) rename {src/apps/social/app => development/social/app/components}/account/Routes.tsx (83%) rename {src/apps/social/app => development/social/app/components}/account/components/FullNameForm.tsx (95%) rename {src/apps/social/app => development/social/app/components}/account/components/NicknameForm.tsx (96%) rename {src/apps/social/app => development/social/app/components}/account/components/hooks/useFullNameFormHandler.ts (100%) rename {src/apps/social/app => development/social/app/components}/account/components/hooks/useNicknameFormHandler.ts (100%) rename {src/apps/social/app => development/social/app/components}/account/hooks/useUpdateFullName.ts (90%) rename {src/apps/social/app => development/social/app/components}/account/hooks/useUpdateNickname.ts (95%) rename {src/apps/social/app => development/social/app/components}/account/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/ErrorHandler.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/Home.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/Identify.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/Login.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/Logout.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/NotFound.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/Privacy.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/ProtectedRoute.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/Routes.tsx (93%) rename {src/apps/social/app => development/social/app/components}/application/Terms.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/Footer.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/Header.tsx (91%) rename {src/apps/social/app => development/social/app/components}/application/components/Identity.tsx (90%) rename {src/apps/social/app => development/social/app/components}/application/components/Introduction.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/LegalHeader.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/LegalInfo.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/Logo.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/LogoutButton.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/LogoutPanel.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/Menu.tsx (97%) rename {src/apps/social/app => development/social/app/components}/application/components/Modal.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/components/Sidebar.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/contexts/AppContext.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/contexts/hooks/useAppContextValue.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/hooks/useAppState.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/hooks/useIdentify.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/hooks/useLogin.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/hooks/useLogout.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/hooks/useNavigateHome.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/hooks/useNavigateLogin.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/application/layouts/Application.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/layouts/Guest.tsx (100%) rename {src/apps/social/app => development/social/app/components}/application/layouts/Legal.tsx (100%) rename {src/apps/social/app => development/social/app/components}/comic/components/Editor.tsx (100%) rename {src/apps/social/app => development/social/app/components}/comic/components/Image.tsx (100%) rename {src/apps/social/app => development/social/app/components}/comic/components/hooks/useCreateHandler.ts (100%) rename {src/apps/social/app => development/social/app/components}/comic/components/hooks/useEditor.ts (100%) rename {src/apps/social/app => development/social/app/components}/comic/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/comment/components/Comment.tsx (100%) rename {src/apps/social/app => development/social/app/components}/comment/components/Form.tsx (100%) rename {src/apps/social/app => development/social/app/components}/comment/components/hooks/useCreateHandler.ts (100%) rename {src/apps/social/app => development/social/app/components}/comment/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/common/components/BackButton.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/BackRow.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/CompactNumber.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/ConfirmationPanel.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/EditButton.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/Form.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/LoadingAndResultContainer.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/LoadingContainer.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/Menu.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/Modal.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/NotFound.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/OrderAndAddRow.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/OrderAndSearchRow.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/OrderRow.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/PullToRefresh.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/Quantifier.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/RemoveOption.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/ResultContainer.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/ScrollLoader.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/Tabs.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/TenantContainer.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/TimeElapsed.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/elements/LoadingIndicator.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/elements/NoResult.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/elements/OrderSelection.tsx (100%) rename {src/apps/social/app => development/social/app/components}/common/components/hooks/useLoadOnScroll.ts (100%) rename {src/apps/social/app => development/social/app/components}/common/components/hooks/useRefreshOnPull.ts (100%) rename {src/apps/social/app => development/social/app/components}/common/components/hooks/useScrollContainer.ts (100%) rename {src/apps/social/app => development/social/app/components}/common/components/hooks/useTenant.ts (100%) rename {src/apps/social/app => development/social/app/components}/common/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/ConciseIdentity.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/Counters.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/FullIdentity.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/Profile.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/TimeElapsed.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/Avatar.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/AvatarRow.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/CountersColumn.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/CountersRow.tsx (90%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/JoinedColumn.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/NamesColumn.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/NamesRow.tsx (100%) rename {src/apps/social/app => development/social/app/components}/creator/components/elements/TimeElapsedColumn.tsx (90%) rename {src/apps/social/app => development/social/app/components}/creator/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/Editor.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/Renderer.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/Workbench.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/add-speech-bubble.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/delete.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/edit.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/instructions.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/move.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/resize.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/select-image.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/assets/take-picture.png (100%) rename {src/apps/social/app => development/social/app/components}/editor/definitions/Styling.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/elements/Element.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/elements/Group.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/elements/ImageElement.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/model/Background.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/model/Bubble.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/model/Model.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/model/SpeechBubble.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/toolkit/BubbleSelection.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/toolkit/Button.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/toolkit/MainActions.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/utils/Camera.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/utils/CameraDialog.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/utils/FileDialog.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/utils/Geometry.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/utils/InputDialog.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/utils/InputManager.ts (100%) rename {src/apps/social/app => development/social/app/components}/editor/utils/TextProcessor.ts (100%) rename {src/apps/social/app => development/social/app/components}/explore/Creators.tsx (56%) rename {src/apps/social/app => development/social/app/components}/explore/Main.tsx (85%) rename {src/apps/social/app => development/social/app/components}/explore/Posts.tsx (58%) rename {src/apps/social/app => development/social/app/components}/explore/Routes.tsx (89%) rename {src/apps/social/app => development/social/app/components}/explore/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/main.css (100%) rename {src/apps/social/app => development/social/app/components}/main.tsx (100%) rename {src/apps/social/app => development/social/app/components}/notification/Main.tsx (91%) rename {src/apps/social/app => development/social/app/components}/notification/Routes.tsx (78%) rename {src/apps/social/app => development/social/app/components}/notification/components/Panel.tsx (97%) rename {src/apps/social/app => development/social/app/components}/notification/components/PanelList.tsx (100%) rename {src/apps/social/app => development/social/app/components}/notification/components/elements/Comic.tsx (100%) rename {src/apps/social/app => development/social/app/components}/notification/components/elements/Comment.tsx (100%) rename {src/apps/social/app => development/social/app/components}/notification/components/elements/RatedPost.tsx (100%) rename {src/apps/social/app => development/social/app/components}/notification/components/elements/ReactedToPost.tsx (100%) rename {src/apps/social/app => development/social/app/components}/notification/components/elements/StartedFollowing.tsx (100%) rename {src/apps/social/app => development/social/app/components}/notification/hooks/useNotifications.ts (100%) rename {src/apps/social/app => development/social/app/components}/notification/hooks/useViewNotificationDetails.ts (100%) rename {src/apps/social/app => development/social/app/components}/notification/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/Create.tsx (80%) rename {src/apps/social/app => development/social/app/components}/post/Creator.tsx (94%) rename {src/apps/social/app => development/social/app/components}/post/Details.tsx (88%) rename {src/apps/social/app => development/social/app/components}/post/Explore.tsx (89%) rename {src/apps/social/app => development/social/app/components}/post/Following.tsx (88%) rename {src/apps/social/app => development/social/app/components}/post/Highlight.tsx (88%) rename {src/apps/social/app => development/social/app/components}/post/Main.tsx (100%) rename {src/apps/social/app => development/social/app/components}/post/Reactions.tsx (90%) rename {src/apps/social/app => development/social/app/components}/post/Recommended.tsx (88%) rename {src/apps/social/app => development/social/app/components}/post/Remove.tsx (88%) rename {src/apps/social/app => development/social/app/components}/post/Routes.tsx (92%) rename {src/apps/social/app => development/social/app/components}/post/components/DetailsPanel.tsx (90%) rename {src/apps/social/app => development/social/app/components}/post/components/LargePanel.tsx (91%) rename {src/apps/social/app => development/social/app/components}/post/components/PanelGrid.tsx (100%) rename {src/apps/social/app => development/social/app/components}/post/components/PanelList.tsx (100%) rename {src/apps/social/app => development/social/app/components}/post/components/SmallPanel.tsx (89%) rename {src/apps/social/app => development/social/app/components}/post/components/elements/EngagementRow.tsx (81%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useAddComicPost.ts (90%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useConfirmPostRemoval.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useCreatorPosts.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useExplorePosts.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useGoToParentPost.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useHighlight.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/usePost.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/usePostsFollowing.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/usePostsRecommended.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useReactions.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useRemovePost.ts (90%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useReorderList.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useShowCreateReaction.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useViewPostDetails.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/hooks/useViewPostHighlightDetails.ts (100%) rename {src/apps/social/app => development/social/app/components}/post/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/profile/Comics.tsx (84%) rename {src/apps/social/app => development/social/app/components}/profile/Followers.tsx (82%) rename {src/apps/social/app => development/social/app/components}/profile/Following.tsx (82%) rename {src/apps/social/app => development/social/app/components}/profile/Main.tsx (89%) rename {src/apps/social/app => development/social/app/components}/profile/Routes.tsx (91%) rename {src/apps/social/app => development/social/app/components}/profile/hooks/useEditProfile.ts (100%) rename {src/apps/social/app => development/social/app/components}/profile/hooks/useProfile.ts (100%) rename {src/apps/social/app => development/social/app/components}/profile/hooks/useViewProfile.ts (100%) rename {src/apps/social/app => development/social/app/components}/profile/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/rating/components/Engagement.tsx (93%) rename {src/apps/social/app => development/social/app/components}/rating/components/elements/Icon.tsx (100%) rename {src/apps/social/app => development/social/app/components}/rating/components/hooks/useEngagement.ts (100%) rename {src/apps/social/app => development/social/app/components}/rating/hooks/useTogglePostRating.ts (100%) rename {src/apps/social/app => development/social/app/components}/rating/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/reaction/Create.tsx (92%) rename {src/apps/social/app => development/social/app/components}/reaction/CreateComic.tsx (91%) rename {src/apps/social/app => development/social/app/components}/reaction/CreateComment.tsx (92%) rename {src/apps/social/app => development/social/app/components}/reaction/Routes.tsx (100%) rename {src/apps/social/app => development/social/app/components}/reaction/components/Engagement.tsx (89%) rename {src/apps/social/app => development/social/app/components}/reaction/components/SingleReactionRow.tsx (100%) rename {src/apps/social/app => development/social/app/components}/reaction/components/elements/Icon.tsx (100%) rename {src/apps/social/app => development/social/app/components}/reaction/hooks/useCreateComic.ts (100%) rename {src/apps/social/app => development/social/app/components}/reaction/hooks/useCreateComment.ts (100%) rename {src/apps/social/app => development/social/app/components}/reaction/hooks/useViewPost.tsx (100%) rename {src/apps/social/app => development/social/app/components}/reaction/hooks/useViewReaction.tsx (100%) rename {src/apps/social/app => development/social/app/components}/reaction/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/relation/Explore.tsx (94%) rename {src/apps/social/app => development/social/app/components}/relation/Followers.tsx (94%) rename {src/apps/social/app => development/social/app/components}/relation/Following.tsx (94%) rename {src/apps/social/app => development/social/app/components}/relation/Profile.tsx (92%) rename {src/apps/social/app => development/social/app/components}/relation/components/Counters.tsx (93%) rename {src/apps/social/app => development/social/app/components}/relation/components/Panel.tsx (100%) rename {src/apps/social/app => development/social/app/components}/relation/components/PanelList.tsx (100%) rename {src/apps/social/app => development/social/app/components}/relation/components/Profile.tsx (93%) rename {src/apps/social/app => development/social/app/components}/relation/components/TimeElapsed.tsx (95%) rename {src/apps/social/app => development/social/app/components}/relation/components/elements/FollowButton.tsx (100%) rename {src/apps/social/app => development/social/app/components}/relation/components/elements/FollowRow.tsx (93%) rename {src/apps/social/app => development/social/app/components}/relation/components/hooks/useEstablish.ts (100%) rename {src/apps/social/app => development/social/app/components}/relation/hooks/useCreatorFollowers.ts (100%) rename {src/apps/social/app => development/social/app/components}/relation/hooks/useCreatorFollowing.ts (100%) rename {src/apps/social/app => development/social/app/components}/relation/hooks/useEstablish.ts (100%) rename {src/apps/social/app => development/social/app/components}/relation/hooks/useExploreCreators.ts (100%) rename {src/apps/social/app => development/social/app/components}/relation/hooks/useRelation.ts (92%) rename {src/apps/social/app => development/social/app/components}/relation/hooks/useReorderList.ts (100%) rename {src/apps/social/app => development/social/app/components}/relation/index.ts (100%) rename {src/apps/social/app => development/social/app/components}/theme.css (100%) rename {src/apps/social/app => development/social/app/components}/timeline/Following.tsx (58%) rename {src/apps/social/app => development/social/app/components}/timeline/ForYou.tsx (58%) rename {src/apps/social/app => development/social/app/components}/timeline/Main.tsx (85%) rename {src/apps/social/app => development/social/app/components}/timeline/Routes.tsx (89%) rename {src/apps/social/app => development/social/app/components}/timeline/index.ts (100%) create mode 100644 development/social/app/components/vite-env.d.ts rename {src/apps/social => development/social/app}/index.html (90%) rename {src/apps/social => development/social/app}/public/robots.txt (100%) create mode 100644 development/social/app/tsconfig.json create mode 100644 development/social/app/vite-env.d.ts create mode 100644 development/social/app/vite.config.ts rename {src => development/social}/assets/appicon192.png (100%) rename {src => development/social}/assets/appicon32.png (100%) rename {src => development/social}/assets/appicon512.png (100%) create mode 100644 development/social/assets/localhost.css rename {src => development/social}/domain/authentication/getLoginUrl/getLoginUrl.ts (100%) rename {src => development/social}/domain/authentication/getLoginUrl/index.ts (100%) rename {src => development/social}/domain/authentication/index.ts (100%) rename {src => development/social}/domain/authentication/login/index.ts (100%) rename {src => development/social}/domain/authentication/login/login.ts (100%) rename {src => development/social}/domain/authentication/logout/index.ts (100%) rename {src => development/social}/domain/authentication/logout/logout.ts (100%) rename {src => development/social}/domain/authentication/requester.ts (100%) rename {src => development/social}/domain/authentication/types.ts (100%) rename {src => development/social}/domain/comic/aggregate/aggregate.ts (100%) rename {src => development/social}/domain/comic/aggregate/index.ts (100%) rename {src => development/social}/domain/comic/aggregate/types.ts (100%) rename {src => development/social}/domain/comic/create/InvalidComic.ts (100%) rename {src => development/social}/domain/comic/create/create.ts (100%) rename {src => development/social}/domain/comic/create/createData.ts (100%) rename {src => development/social}/domain/comic/create/index.ts (100%) rename {src => development/social}/domain/comic/create/insertData.ts (100%) rename {src => development/social}/domain/comic/create/types.ts (100%) rename {src => development/social}/domain/comic/create/validateData.ts (100%) rename {src => development/social}/domain/comic/definitions.ts (100%) rename {src => development/social}/domain/comic/erase/erase.ts (100%) rename {src => development/social}/domain/comic/erase/eraseData.ts (100%) rename {src => development/social}/domain/comic/erase/index.ts (100%) rename {src => development/social}/domain/comic/getById/ComicNotFound.ts (100%) rename {src => development/social}/domain/comic/getById/getById.ts (100%) rename {src => development/social}/domain/comic/getById/index.ts (100%) rename {src => development/social}/domain/comic/getByIdAggregated/getByIdAggregated.ts (100%) rename {src => development/social}/domain/comic/getByIdAggregated/index.ts (100%) rename {src => development/social}/domain/comic/index.ts (100%) rename {src => development/social}/domain/comic/types.ts (100%) rename {src => development/social}/domain/comment/create/InvalidComment.ts (100%) rename {src => development/social}/domain/comment/create/create.ts (100%) rename {src => development/social}/domain/comment/create/createData.ts (100%) rename {src => development/social}/domain/comment/create/index.ts (100%) rename {src => development/social}/domain/comment/create/insertData.ts (100%) rename {src => development/social}/domain/comment/create/types.ts (100%) rename {src => development/social}/domain/comment/create/validateData.ts (100%) rename {src => development/social}/domain/comment/definitions.ts (100%) rename {src => development/social}/domain/comment/erase/erase.ts (100%) rename {src => development/social}/domain/comment/erase/index.ts (100%) rename {src => development/social}/domain/comment/getById/CommentNotFound.ts (100%) rename {src => development/social}/domain/comment/getById/getById.ts (100%) rename {src => development/social}/domain/comment/getById/index.ts (100%) rename {src => development/social}/domain/comment/index.ts (100%) rename {src => development/social}/domain/comment/types.ts (100%) rename {src => development/social}/domain/common/filterResolved/filterResolved.ts (100%) rename {src => development/social}/domain/common/filterResolved/index.ts (100%) rename {src => development/social}/domain/common/validateRange/InvalidRange.ts (100%) rename {src => development/social}/domain/common/validateRange/index.ts (100%) rename {src => development/social}/domain/common/validateRange/types.ts (100%) rename {src => development/social}/domain/common/validateRange/validateRange.ts (100%) rename {src => development/social}/domain/creator.metrics/create/create.ts (100%) rename {src => development/social}/domain/creator.metrics/create/createData.ts (100%) rename {src => development/social}/domain/creator.metrics/create/index.ts (100%) rename {src => development/social}/domain/creator.metrics/create/insertData.ts (100%) rename {src => development/social}/domain/creator.metrics/create/subscriptions.ts (100%) rename {src => development/social}/domain/creator.metrics/definitions.ts (100%) rename {src => development/social}/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts (100%) rename {src => development/social}/domain/creator.metrics/getByCreator/getByCreator.ts (100%) rename {src => development/social}/domain/creator.metrics/getByCreator/index.ts (100%) rename {src => development/social}/domain/creator.metrics/index.ts (100%) rename {src => development/social}/domain/creator.metrics/types.ts (100%) rename {src => development/social}/domain/creator.metrics/update/index.ts (100%) rename {src => development/social}/domain/creator.metrics/update/update.ts (100%) rename {src => development/social}/domain/creator.metrics/updateFollowers/index.ts (100%) rename {src => development/social}/domain/creator.metrics/updateFollowers/subscriptions.ts (100%) rename {src => development/social}/domain/creator.metrics/updateFollowers/updateFollowers.ts (100%) rename {src => development/social}/domain/creator.metrics/updateFollowing/index.ts (100%) rename {src => development/social}/domain/creator.metrics/updateFollowing/subscriptions.ts (100%) rename {src => development/social}/domain/creator.metrics/updateFollowing/updateFollowing.ts (100%) rename {src => development/social}/domain/creator.metrics/updatePosts/index.ts (100%) rename {src => development/social}/domain/creator.metrics/updatePosts/subscriptions.ts (100%) rename {src => development/social}/domain/creator.metrics/updatePosts/updatePosts.ts (100%) rename {src => development/social}/domain/creator/aggregate/aggregate.ts (100%) rename {src => development/social}/domain/creator/aggregate/index.ts (100%) rename {src => development/social}/domain/creator/aggregate/types.ts (100%) rename {src => development/social}/domain/creator/cleanNickname/cleanNickname.ts (100%) rename {src => development/social}/domain/creator/cleanNickname/definitions.ts (100%) rename {src => development/social}/domain/creator/cleanNickname/index.ts (100%) rename {src => development/social}/domain/creator/create/InvalidCreator.ts (100%) rename {src => development/social}/domain/creator/create/create.ts (100%) rename {src => development/social}/domain/creator/create/createData.ts (100%) rename {src => development/social}/domain/creator/create/index.ts (100%) rename {src => development/social}/domain/creator/create/insertData.ts (100%) rename {src => development/social}/domain/creator/create/types.ts (100%) rename {src => development/social}/domain/creator/create/validateData.ts (100%) rename {src => development/social}/domain/creator/definitions.ts (100%) rename {src => development/social}/domain/creator/erase/erase.ts (100%) rename {src => development/social}/domain/creator/erase/index.ts (100%) rename {src => development/social}/domain/creator/generateNickname/TooManySimilarNicknames.ts (100%) rename {src => development/social}/domain/creator/generateNickname/generateNickname.ts (100%) rename {src => development/social}/domain/creator/generateNickname/index.ts (100%) rename {src => development/social}/domain/creator/generateNickname/retrieveByNickname.ts (100%) rename {src => development/social}/domain/creator/generateNickname/retrieveByStartNickname.ts (100%) rename {src => development/social}/domain/creator/getByEmail/getByEmail.ts (100%) rename {src => development/social}/domain/creator/getByEmail/index.ts (100%) rename {src => development/social}/domain/creator/getById/CreatorNotFound.ts (100%) rename {src => development/social}/domain/creator/getById/getById.ts (100%) rename {src => development/social}/domain/creator/getById/index.ts (100%) rename {src => development/social}/domain/creator/getByIdAggregated/getByIdAggregated.ts (100%) rename {src => development/social}/domain/creator/getByIdAggregated/index.ts (100%) rename {src => development/social}/domain/creator/getByNickname/NicknameNotFound.ts (100%) rename {src => development/social}/domain/creator/getByNickname/getByNickname.ts (100%) rename {src => development/social}/domain/creator/getByNickname/index.ts (100%) rename {src => development/social}/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts (100%) rename {src => development/social}/domain/creator/getByNicknameAggregated/index.ts (100%) rename {src => development/social}/domain/creator/getMe/getMe.ts (100%) rename {src => development/social}/domain/creator/getMe/index.ts (100%) rename {src => development/social}/domain/creator/getMeAggregated/getMeAggregated.ts (100%) rename {src => development/social}/domain/creator/getMeAggregated/index.ts (100%) rename {src => development/social}/domain/creator/getOthers/getOthers.ts (100%) rename {src => development/social}/domain/creator/getOthers/index.ts (100%) rename {src => development/social}/domain/creator/index.ts (100%) rename {src => development/social}/domain/creator/register/definitions.ts (100%) rename {src => development/social}/domain/creator/register/downloadPortrait.ts (100%) rename {src => development/social}/domain/creator/register/index.ts (100%) rename {src => development/social}/domain/creator/register/publish.ts (100%) rename {src => development/social}/domain/creator/register/register.ts (100%) rename {src => development/social}/domain/creator/register/subscribe.ts (100%) rename {src => development/social}/domain/creator/register/types.ts (100%) rename {src => development/social}/domain/creator/types.ts (100%) rename {src => development/social}/domain/creator/update/index.ts (100%) rename {src => development/social}/domain/creator/update/update.ts (100%) rename {src => development/social}/domain/creator/updateFullName/InvalidFullName.ts (100%) rename {src => development/social}/domain/creator/updateFullName/index.ts (100%) rename {src => development/social}/domain/creator/updateFullName/types.ts (100%) rename {src => development/social}/domain/creator/updateFullName/updateFullName.ts (100%) rename {src => development/social}/domain/creator/updateFullName/validateData.ts (100%) rename {src => development/social}/domain/creator/updateNickname/NicknameAlreadyExists.ts (100%) rename {src => development/social}/domain/creator/updateNickname/index.ts (100%) rename {src => development/social}/domain/creator/updateNickname/retrieveByNickname.ts (100%) rename {src => development/social}/domain/creator/updateNickname/updateNickname.ts (100%) rename {src => development/social}/domain/definitions.ts (100%) rename {src => development/social}/domain/image/create/InvalidDataURL.ts (100%) rename {src => development/social}/domain/image/create/convertDataUrl.ts (100%) rename {src => development/social}/domain/image/create/create.ts (100%) rename {src => development/social}/domain/image/create/index.ts (100%) rename {src => development/social}/domain/image/definitions.ts (100%) rename {src => development/social}/domain/image/download/ImageNotDownloaded.ts (100%) rename {src => development/social}/domain/image/download/download.ts (100%) rename {src => development/social}/domain/image/download/downloadImage.ts (100%) rename {src => development/social}/domain/image/download/getMetaData.ts (100%) rename {src => development/social}/domain/image/download/index.ts (100%) rename {src => development/social}/domain/image/erase/erase.ts (100%) rename {src => development/social}/domain/image/erase/index.ts (100%) rename {src => development/social}/domain/image/getById/ImageNotFound.ts (100%) rename {src => development/social}/domain/image/getById/createDataUrl.ts (100%) rename {src => development/social}/domain/image/getById/getById.ts (100%) rename {src => development/social}/domain/image/getById/index.ts (100%) rename {src => development/social}/domain/image/getById/retrieveData.ts (100%) rename {src => development/social}/domain/image/getById/retrieveFile.ts (100%) rename {src => development/social}/domain/image/index.ts (100%) rename {src => development/social}/domain/image/save/InvalidImage.ts (100%) rename {src => development/social}/domain/image/save/createData.ts (100%) rename {src => development/social}/domain/image/save/fileExists.ts (100%) rename {src => development/social}/domain/image/save/generateStorageKey.ts (100%) rename {src => development/social}/domain/image/save/index.ts (100%) rename {src => development/social}/domain/image/save/insertData.ts (100%) rename {src => development/social}/domain/image/save/insertFile.ts (100%) rename {src => development/social}/domain/image/save/save.ts (100%) rename {src => development/social}/domain/image/save/validateData.ts (100%) rename {src => development/social}/domain/image/types.ts (100%) rename {src => development/social}/domain/image/validate/InvalidImage.ts (100%) rename {src => development/social}/domain/image/validate/index.ts (100%) rename {src => development/social}/domain/image/validate/validate.ts (100%) rename {src => development/social}/domain/notification/aggregate/aggregate.ts (100%) rename {src => development/social}/domain/notification/aggregate/index.ts (100%) rename {src => development/social}/domain/notification/aggregate/types.ts (100%) rename {src => development/social}/domain/notification/create/create.ts (100%) rename {src => development/social}/domain/notification/create/createData.ts (100%) rename {src => development/social}/domain/notification/create/index.ts (100%) rename {src => development/social}/domain/notification/create/insertData.ts (100%) rename {src => development/social}/domain/notification/definitions.ts (100%) rename {src => development/social}/domain/notification/getByPostId/getByPostId.ts (100%) rename {src => development/social}/domain/notification/getByPostId/index.ts (100%) rename {src => development/social}/domain/notification/getRecent/getRecent.ts (100%) rename {src => development/social}/domain/notification/getRecent/index.ts (100%) rename {src => development/social}/domain/notification/getRecentAggregated/getRecentAggregated.ts (100%) rename {src => development/social}/domain/notification/getRecentAggregated/index.ts (100%) rename {src => development/social}/domain/notification/index.ts (100%) rename {src => development/social}/domain/notification/notify/createdPost.ts (100%) rename {src => development/social}/domain/notification/notify/index.ts (100%) rename {src => development/social}/domain/notification/notify/ratedPost.ts (100%) rename {src => development/social}/domain/notification/notify/removedPost.ts (100%) rename {src => development/social}/domain/notification/notify/startedFollowing.ts (100%) rename {src => development/social}/domain/notification/notify/subscriptions.ts (100%) rename {src => development/social}/domain/notification/remove/index.ts (100%) rename {src => development/social}/domain/notification/remove/remove.ts (100%) rename {src => development/social}/domain/notification/types.ts (100%) rename {src => development/social}/domain/post.metrics/create/create.ts (100%) rename {src => development/social}/domain/post.metrics/create/createData.ts (100%) rename {src => development/social}/domain/post.metrics/create/index.ts (100%) rename {src => development/social}/domain/post.metrics/create/insertData.ts (100%) rename {src => development/social}/domain/post.metrics/create/subscriptions.ts (100%) rename {src => development/social}/domain/post.metrics/definitions.ts (100%) rename {src => development/social}/domain/post.metrics/getByPost/PostMetricsNotFound.ts (100%) rename {src => development/social}/domain/post.metrics/getByPost/getByPost.ts (100%) rename {src => development/social}/domain/post.metrics/getByPost/index.ts (100%) rename {src => development/social}/domain/post.metrics/index.ts (100%) rename {src => development/social}/domain/post.metrics/types.ts (100%) rename {src => development/social}/domain/post.metrics/update/index.ts (100%) rename {src => development/social}/domain/post.metrics/update/update.ts (100%) rename {src => development/social}/domain/post.metrics/updateRatings/index.ts (100%) rename {src => development/social}/domain/post.metrics/updateRatings/subscriptions.ts (100%) rename {src => development/social}/domain/post.metrics/updateRatings/updateRatings.ts (100%) rename {src => development/social}/domain/post.metrics/updateReactions/index.ts (100%) rename {src => development/social}/domain/post.metrics/updateReactions/subscriptions.ts (100%) rename {src => development/social}/domain/post.metrics/updateReactions/updateReactions.ts (100%) rename {src => development/social}/domain/post/aggregate/aggregate.ts (100%) rename {src => development/social}/domain/post/aggregate/index.ts (100%) rename {src => development/social}/domain/post/aggregate/types.ts (100%) rename {src => development/social}/domain/post/create/InvalidPost.ts (100%) rename {src => development/social}/domain/post/create/create.ts (100%) rename {src => development/social}/domain/post/create/createData.ts (100%) rename {src => development/social}/domain/post/create/definitions.ts (100%) rename {src => development/social}/domain/post/create/index.ts (100%) rename {src => development/social}/domain/post/create/insertData.ts (100%) rename {src => development/social}/domain/post/create/publish.ts (100%) rename {src => development/social}/domain/post/create/subscribe.ts (100%) rename {src => development/social}/domain/post/create/types.ts (100%) rename {src => development/social}/domain/post/create/validateData.ts (100%) rename {src => development/social}/domain/post/createWithComic/createWithComic.ts (100%) rename {src => development/social}/domain/post/createWithComic/index.ts (100%) rename {src => development/social}/domain/post/createWithComment/createWithComment.ts (100%) rename {src => development/social}/domain/post/createWithComment/index.ts (100%) rename {src => development/social}/domain/post/definitions.ts (100%) rename {src => development/social}/domain/post/erase/erase.ts (100%) rename {src => development/social}/domain/post/erase/index.ts (100%) rename {src => development/social}/domain/post/explore/explore.ts (100%) rename {src => development/social}/domain/post/explore/index.ts (100%) rename {src => development/social}/domain/post/explore/retrieveData.ts (100%) rename {src => development/social}/domain/post/exploreAggregated/exploreAggregated.ts (100%) rename {src => development/social}/domain/post/exploreAggregated/index.ts (100%) rename {src => development/social}/domain/post/getByCreator/getByCreator.ts (100%) rename {src => development/social}/domain/post/getByCreator/index.ts (100%) rename {src => development/social}/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts (100%) rename {src => development/social}/domain/post/getByCreatorAggregated/index.ts (100%) rename {src => development/social}/domain/post/getByFollowing/getByFollowing.ts (100%) rename {src => development/social}/domain/post/getByFollowing/index.ts (100%) rename {src => development/social}/domain/post/getByFollowing/retrieveData.ts (100%) rename {src => development/social}/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts (100%) rename {src => development/social}/domain/post/getByFollowingAggregated/index.ts (100%) rename {src => development/social}/domain/post/getById/PostNotFound.ts (100%) rename {src => development/social}/domain/post/getById/getById.ts (100%) rename {src => development/social}/domain/post/getById/index.ts (100%) rename {src => development/social}/domain/post/getByIdAggregated/getByIdAggregated.ts (100%) rename {src => development/social}/domain/post/getByIdAggregated/index.ts (100%) rename {src => development/social}/domain/post/getByParent/getByParent.ts (100%) rename {src => development/social}/domain/post/getByParent/index.ts (100%) rename {src => development/social}/domain/post/getByParentAggregated/getByParentAggregated.ts (100%) rename {src => development/social}/domain/post/getByParentAggregated/index.ts (100%) rename {src => development/social}/domain/post/getRecommended/getRecommended.ts (100%) rename {src => development/social}/domain/post/getRecommended/index.ts (100%) rename {src => development/social}/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts (100%) rename {src => development/social}/domain/post/getRecommendedAggregated/index.ts (100%) rename {src => development/social}/domain/post/index.ts (100%) rename {src => development/social}/domain/post/remove/definitions.ts (100%) rename {src => development/social}/domain/post/remove/deleteData.ts (100%) rename {src => development/social}/domain/post/remove/index.ts (100%) rename {src => development/social}/domain/post/remove/isNotOwner.ts (100%) rename {src => development/social}/domain/post/remove/publish.ts (100%) rename {src => development/social}/domain/post/remove/remove.ts (100%) rename {src => development/social}/domain/post/remove/subscribe.ts (100%) rename {src => development/social}/domain/post/remove/types.ts (100%) rename {src => development/social}/domain/post/remove/undeleteData.ts (100%) rename {src => development/social}/domain/post/types.ts (100%) rename {src => development/social}/domain/post/update/index.ts (100%) rename {src => development/social}/domain/post/update/update.ts (100%) rename {src => development/social}/domain/rating/create/InvalidRating.ts (100%) rename {src => development/social}/domain/rating/create/create.ts (100%) rename {src => development/social}/domain/rating/create/createData.ts (100%) rename {src => development/social}/domain/rating/create/index.ts (100%) rename {src => development/social}/domain/rating/create/insertData.ts (100%) rename {src => development/social}/domain/rating/create/types.ts (100%) rename {src => development/social}/domain/rating/create/validateData.ts (100%) rename {src => development/social}/domain/rating/definitions.ts (100%) rename {src => development/social}/domain/rating/erase/erase.ts (100%) rename {src => development/social}/domain/rating/erase/index.ts (100%) rename {src => development/social}/domain/rating/exists/exists.ts (100%) rename {src => development/social}/domain/rating/exists/index.ts (100%) rename {src => development/social}/domain/rating/index.ts (100%) rename {src => development/social}/domain/rating/toggle/definitions.ts (100%) rename {src => development/social}/domain/rating/toggle/getData.ts (100%) rename {src => development/social}/domain/rating/toggle/index.ts (100%) rename {src => development/social}/domain/rating/toggle/publish.ts (100%) rename {src => development/social}/domain/rating/toggle/subscribe.ts (100%) rename {src => development/social}/domain/rating/toggle/switchOff.ts (100%) rename {src => development/social}/domain/rating/toggle/switchOn.ts (100%) rename {src => development/social}/domain/rating/toggle/toggle.ts (100%) rename {src => development/social}/domain/rating/toggle/types.ts (100%) rename {src => development/social}/domain/rating/types.ts (100%) rename {src => development/social}/domain/relation/aggregate/aggregate.ts (100%) rename {src => development/social}/domain/relation/aggregate/index.ts (100%) rename {src => development/social}/domain/relation/aggregate/types.ts (100%) rename {src => development/social}/domain/relation/create/InvalidRelation.ts (100%) rename {src => development/social}/domain/relation/create/create.ts (100%) rename {src => development/social}/domain/relation/create/createData.ts (100%) rename {src => development/social}/domain/relation/create/index.ts (100%) rename {src => development/social}/domain/relation/create/insertData.ts (100%) rename {src => development/social}/domain/relation/create/types.ts (100%) rename {src => development/social}/domain/relation/create/validateData.ts (100%) rename {src => development/social}/domain/relation/definitions.ts (100%) rename {src => development/social}/domain/relation/erase/erase.ts (100%) rename {src => development/social}/domain/relation/erase/index.ts (100%) rename {src => development/social}/domain/relation/establish/RelationAlreadyExists.ts (100%) rename {src => development/social}/domain/relation/establish/definitions.ts (100%) rename {src => development/social}/domain/relation/establish/establish.ts (100%) rename {src => development/social}/domain/relation/establish/index.ts (100%) rename {src => development/social}/domain/relation/establish/publish.ts (100%) rename {src => development/social}/domain/relation/establish/subscribe.ts (100%) rename {src => development/social}/domain/relation/establish/types.ts (100%) rename {src => development/social}/domain/relation/exists/exists.ts (100%) rename {src => development/social}/domain/relation/exists/index.ts (100%) rename {src => development/social}/domain/relation/explore/explore.ts (100%) rename {src => development/social}/domain/relation/explore/index.ts (100%) rename {src => development/social}/domain/relation/exploreAggregated/exploreAggregated.ts (100%) rename {src => development/social}/domain/relation/exploreAggregated/index.ts (100%) rename {src => development/social}/domain/relation/get/get.ts (100%) rename {src => development/social}/domain/relation/get/index.ts (100%) rename {src => development/social}/domain/relation/getAggregated/getAggregated.ts (100%) rename {src => development/social}/domain/relation/getAggregated/index.ts (100%) rename {src => development/social}/domain/relation/getFollowers/getFollowers.ts (100%) rename {src => development/social}/domain/relation/getFollowers/index.ts (100%) rename {src => development/social}/domain/relation/getFollowers/retrieveData.ts (100%) rename {src => development/social}/domain/relation/getFollowersAggregated/getFollowersAggregated.ts (100%) rename {src => development/social}/domain/relation/getFollowersAggregated/index.ts (100%) rename {src => development/social}/domain/relation/getFollowing/getFollowing.ts (100%) rename {src => development/social}/domain/relation/getFollowing/index.ts (100%) rename {src => development/social}/domain/relation/getFollowing/retrieveData.ts (100%) rename {src => development/social}/domain/relation/getFollowingAggregated/getFollowingAggregated.ts (100%) rename {src => development/social}/domain/relation/getFollowingAggregated/index.ts (100%) rename {src => development/social}/domain/relation/index.ts (100%) rename {src => development/social}/domain/relation/translateToRequester/index.ts (100%) rename {src => development/social}/domain/relation/translateToRequester/translate.ts (100%) rename {src => development/social}/domain/relation/translateToRequester/translateToRequester.ts (100%) rename {src => development/social}/domain/relation/translateToRequester/types.ts (100%) rename {src => development/social}/domain/relation/types.ts (100%) rename {src => development/social}/domain/tenant/definitions.ts (100%) rename {src => development/social}/domain/tenant/getByOrigin/TenantNotFound.ts (100%) rename {src => development/social}/domain/tenant/getByOrigin/getByOrigin.ts (100%) rename {src => development/social}/domain/tenant/getByOrigin/index.ts (100%) rename {src => development/social}/domain/tenant/getByOriginConverted/InvalidOrigin.ts (100%) rename {src => development/social}/domain/tenant/getByOriginConverted/getByOriginConverted.ts (100%) rename {src => development/social}/domain/tenant/getByOriginConverted/index.ts (100%) rename {src => development/social}/domain/tenant/getByOriginConverted/types.ts (100%) rename {src => development/social}/domain/tenant/getByOriginConverted/validateData.ts (100%) rename {src => development/social}/domain/tenant/index.ts (100%) rename {src => development/social}/domain/tenant/tenant.ts (100%) rename {src => development/social}/domain/tenant/types.ts (100%) rename {src => development/social}/domain/types.ts (100%) rename {src => development/social}/integrations/authentication/authenticationMiddleware.ts (63%) rename {src => development/social}/integrations/authentication/identityProvider.ts (100%) rename {src => development/social}/integrations/authentication/originMiddleware.ts (100%) rename {src => development/social}/integrations/authentication/requesterMiddleware.ts (100%) rename {src => development/social}/integrations/authentication/setUp.ts (100%) rename {src => development/social}/integrations/authentication/tearDown.ts (100%) rename {src => development/social}/integrations/database/database.ts (100%) rename {src => development/social}/integrations/database/healthCheck.ts (100%) rename {src => development/social}/integrations/database/index.ts (100%) rename {src => development/social}/integrations/database/setUp.ts (100%) rename {src => development/social}/integrations/database/tearDown.ts (100%) rename {src => development/social}/integrations/errors/BadRequest.ts (100%) rename {src => development/social}/integrations/errors/NotFound.ts (100%) rename {src => development/social}/integrations/errors/ServerError.ts (100%) rename {src => development/social}/integrations/errors/Unauthorized.ts (100%) rename {src => development/social}/integrations/errors/ValidationError.ts (100%) rename {src => development/social}/integrations/errors/index.ts (100%) rename {src => development/social}/integrations/eventBroker/eventBroker.ts (100%) rename {src => development/social}/integrations/eventBroker/healthCheck.ts (100%) rename {src => development/social}/integrations/eventBroker/index.ts (100%) rename {src => development/social}/integrations/eventBroker/setUp.ts (100%) rename {src => development/social}/integrations/eventBroker/tearDown.ts (100%) rename {src => development/social}/integrations/fileStore/fileStore.ts (100%) rename {src => development/social}/integrations/fileStore/healthCheck.ts (100%) rename {src => development/social}/integrations/fileStore/index.ts (100%) rename {src => development/social}/integrations/fileStore/setUp.ts (100%) rename {src => development/social}/integrations/fileStore/tearDown.ts (100%) rename {src => development/social}/integrations/http/http.ts (100%) rename {src => development/social}/integrations/http/index.ts (100%) rename {src => development/social}/integrations/logging/index.ts (100%) rename {src => development/social}/integrations/logging/logger.ts (100%) rename {src => development/social}/integrations/notification/notificationHealthCheck.ts (100%) rename {src => development/social}/integrations/notification/notificationService.ts (100%) rename {src => development/social}/integrations/tenancy/middleware/MultiTenantMiddleware.ts (95%) rename {src => development/social}/integrations/tenancy/tenantMiddleware.ts (100%) rename {src => development/social}/integrations/utilities/crypto.ts (100%) rename {src => development/social}/integrations/utilities/dates.ts (100%) rename {src => development/social}/integrations/utilities/webbrowser.ts (100%) rename {src => development/social}/integrations/validation/index.ts (100%) rename {src => development/social}/integrations/validation/validator.ts (100%) create mode 100644 development/social/package.json create mode 100644 development/social/tsconfig.json create mode 100644 development/tsconfig.json delete mode 100644 docs/README.md delete mode 100644 docs/assets/README.md delete mode 100644 docs/assets/images/architecture/containers.png delete mode 100644 docs/assets/images/architecture/context.png delete mode 100644 docs/assets/images/architecture/shadows.png delete mode 100644 docs/assets/images/domain/modules.png delete mode 100644 docs/assets/images/webui/example.png delete mode 100644 docs/assets/images/webui/modules.png delete mode 100644 docs/domain/README.md delete mode 100644 docs/integrations/AUTHENTICATION.md delete mode 100644 docs/integrations/DATABASE.md delete mode 100644 docs/integrations/EVENT_BROKER.md delete mode 100644 docs/integrations/FILE_STORE.md delete mode 100644 docs/integrations/HTTP.md delete mode 100644 docs/integrations/LOGGING.md delete mode 100644 docs/integrations/NOTIFICATION.md delete mode 100644 docs/integrations/README.md delete mode 100644 docs/integrations/RUNTIME.md delete mode 100644 docs/integrations/VALIDATION.md delete mode 100644 docs/webui/DESIGNSYSTEM.md delete mode 100644 docs/webui/README.md rename {docs => documentation}/diagrams/context.cml (100%) rename {docs => documentation}/diagrams/workspace.dsl (100%) delete mode 100644 segments/bff.json delete mode 100644 segments/notification.json delete mode 100644 segments/reads.json delete mode 100644 segments/writes.json delete mode 100644 services/standalone.json delete mode 100644 src/apps/social/public/manifest.webmanifest delete mode 100644 src/apps/social/vite.config.ts delete mode 100644 src/tsconfig.json create mode 100644 testing/insights/tsconfig.json create mode 100644 testing/moderation/tsconfig.json rename {test => testing/social}/domain/authentication/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/fileStores.fixture.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/httpClients.fixture.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/identities.fixture.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/images.fixture.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/index.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/records.fixture.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/tenants.fixture.ts (100%) rename {test => testing/social}/domain/authentication/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/authentication/login.spec.ts (100%) rename {test => testing/social}/domain/comic/create.spec.ts (100%) rename {test => testing/social}/domain/comic/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/comic/fixtures/fileStores.fixture.ts (100%) rename {test => testing/social}/domain/comic/fixtures/index.ts (100%) rename {test => testing/social}/domain/comic/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/comment/create.spec.ts (100%) rename {test => testing/social}/domain/comment/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/comment/fixtures/index.ts (100%) rename {test => testing/social}/domain/comment/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/common/fixtures/index.ts (100%) rename {test => testing/social}/domain/common/fixtures/values.fixtures.ts (100%) rename {test => testing/social}/domain/common/validateRange.spec.ts (100%) rename {test => testing/social}/domain/creator/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/creator/fixtures/index.ts (100%) rename {test => testing/social}/domain/creator/fixtures/records.fixture.ts (100%) rename {test => testing/social}/domain/creator/fixtures/requesters.fixture.ts (100%) rename {test => testing/social}/domain/creator/fixtures/tenants.fixture.ts (100%) rename {test => testing/social}/domain/creator/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/creator/updateFullName.spec.ts (100%) rename {test => testing/social}/domain/creator/updateNickname.spec.ts (100%) rename {test => testing/social}/domain/image/create.spec.ts (100%) rename {test => testing/social}/domain/image/download.spec.ts (100%) rename {test => testing/social}/domain/image/fixtures/dataUrls.fixture.ts (100%) rename {test => testing/social}/domain/image/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/image/fixtures/fileStores.fixture.ts (100%) rename {test => testing/social}/domain/image/fixtures/httpClients.fixture.ts (100%) rename {test => testing/social}/domain/image/fixtures/index.ts (100%) rename {test => testing/social}/domain/image/fixtures/responses.fixture.ts (100%) rename {test => testing/social}/domain/image/fixtures/urls.fixture.ts (100%) rename {test => testing/social}/domain/notification/create.spec.ts (100%) rename {test => testing/social}/domain/notification/fixtures/dataUrls.fixture.ts (100%) rename {test => testing/social}/domain/notification/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/notification/fixtures/fileStores.fixture.ts (100%) rename {test => testing/social}/domain/notification/fixtures/files.fixture.ts (100%) rename {test => testing/social}/domain/notification/fixtures/index.ts (100%) rename {test => testing/social}/domain/notification/fixtures/records.fixture.ts (100%) rename {test => testing/social}/domain/notification/fixtures/requesters.fixture.ts (100%) rename {test => testing/social}/domain/notification/fixtures/tenants.fixture.ts (100%) rename {test => testing/social}/domain/notification/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/notification/getRecentAggregated.spec.ts (100%) rename {test => testing/social}/domain/notification/removePostNotifications.spec.ts (100%) rename {test => testing/social}/domain/post/createWithComic.spec.ts (100%) rename {test => testing/social}/domain/post/fixtures/dataUrls.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/fileStores.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/files.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/index.ts (100%) rename {test => testing/social}/domain/post/fixtures/queries.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/records.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/requesters.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/tenants.fixture.ts (100%) rename {test => testing/social}/domain/post/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/post/getByFollowingAggregated.spec.ts (100%) rename {test => testing/social}/domain/post/getRecommendedAggregated.spec.ts (100%) rename {test => testing/social}/domain/post/remove.spec.ts (100%) rename {test => testing/social}/domain/rating/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/rating/fixtures/index.ts (100%) rename {test => testing/social}/domain/rating/fixtures/records.fixture.ts (100%) rename {test => testing/social}/domain/rating/fixtures/requesters.fixture.ts (100%) rename {test => testing/social}/domain/rating/fixtures/tenants.fixture.ts (100%) rename {test => testing/social}/domain/rating/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/rating/toggle.spec.ts (100%) rename {test => testing/social}/domain/relation/establish.spec.ts (100%) rename {test => testing/social}/domain/relation/exploreAggregated.spec.ts (100%) rename {test => testing/social}/domain/relation/fixtures/databases.fixture.ts (100%) rename {test => testing/social}/domain/relation/fixtures/index.ts (100%) rename {test => testing/social}/domain/relation/fixtures/queries.fixture.ts (100%) rename {test => testing/social}/domain/relation/fixtures/records.fixture.ts (100%) rename {test => testing/social}/domain/relation/fixtures/requesters.fixture.ts (100%) rename {test => testing/social}/domain/relation/fixtures/tenants.fixture.ts (100%) rename {test => testing/social}/domain/relation/fixtures/values.fixture.ts (100%) rename {test => testing/social}/domain/relation/getFollowersAggregated.spec.ts (100%) rename {test => testing/social}/domain/relation/getFollowingAggregated.spec.ts (100%) rename {test => testing/social}/domain/tenant/fixtures/databases.fixtures.ts (100%) rename {test => testing/social}/domain/tenant/fixtures/index.ts (100%) rename {test => testing/social}/domain/tenant/fixtures/records.fixtures.ts (100%) rename {test => testing/social}/domain/tenant/fixtures/values.fixtures.ts (100%) rename {test => testing/social}/domain/tenant/getByOrigin.spec.ts (100%) rename {test => testing/social}/domain/tenant/getByOriginConverted.spec.ts (100%) create mode 100644 testing/social/tsconfig.json create mode 100644 testing/tsconfig.json diff --git a/.gitignore b/.gitignore index d41b0545..94b8f06e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,12 +7,9 @@ yarn-error.log* pnpm-debug.log* lerna-debug.log* -node_modules +artifacts coverage -build -dist -dist-ssr -*.local +node_modules # Editor directories and files !.vscode/extensions.json diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 36060ce8..00000000 --- a/.nvmrc +++ /dev/null @@ -1,2 +0,0 @@ -# .nvmrc -lts/* \ No newline at end of file diff --git a/changelog.hbs b/changelog.hbs deleted file mode 100644 index 5a9d2342..00000000 --- a/changelog.hbs +++ /dev/null @@ -1,33 +0,0 @@ -{{#each releases}} -# {{title}} -[{{isoDate}}] - -{{#commit-list -merges -heading='### Features' -message='feat(?:(\(\w+\))|):'}} -* \[[{{id}}]({{href}})] {{commit.subject}} by {{commit.author}} -{{/commit-list}} - -{{#commit-list -merges -heading='### Fixes' -message='(bug(?:(\(\w+\))|):)|(fix(?:(\(\w+\))|):)'}} -* \[[{{id}}]({{href}})] {{commit.subject}} by {{commit.author}} -{{/commit-list}} - -{{#commit-list -merges -heading='### Chores' -message='(chore(?:(\(\w+\))|):)|(build(?:(\(\w+\))|):)|(npm(?:(\(\w+\))|):)'}} -* \[[{{id}}]({{href}})] {{commit.subject}} by {{commit.author}} -{{/commit-list}} - -{{#commit-list -merges -heading='### Other' -exclude='(feat(?:(\(\w+\))|):)|(chore(?:(\(\w+\))|):)|(build(?:(\(\w+\))|):)|(npm(?:(\(\w+\))|):)|(fix(?:(\(\w+\))|):)|(bug(?:(\(\w+\))|):)'}} -* \[[{{id}}]({{href}})] {{commit.subject}} by {{commit.author}} -{{/commit-list}} - -{{/each}} \ No newline at end of file diff --git a/docker/Dockerfile b/deployment/docker/Dockerfile similarity index 100% rename from docker/Dockerfile rename to deployment/docker/Dockerfile diff --git a/docker/build.sh b/deployment/docker/build.sh similarity index 100% rename from docker/build.sh rename to deployment/docker/build.sh diff --git a/docker/keycloak/comify-realm.json b/deployment/docker/keycloak/comify-realm.json similarity index 100% rename from docker/keycloak/comify-realm.json rename to deployment/docker/keycloak/comify-realm.json diff --git a/docker/keycloak/themes/keycloak-theme-for-kc-all-other-versions.jar b/deployment/docker/keycloak/themes/keycloak-theme-for-kc-all-other-versions.jar similarity index 100% rename from docker/keycloak/themes/keycloak-theme-for-kc-all-other-versions.jar rename to deployment/docker/keycloak/themes/keycloak-theme-for-kc-all-other-versions.jar diff --git a/docker/keycloak/themes_src/README.md b/deployment/docker/keycloak/themes_src/README.md similarity index 100% rename from docker/keycloak/themes_src/README.md rename to deployment/docker/keycloak/themes_src/README.md diff --git a/docker/keycloak/themes_src/logo.svg b/deployment/docker/keycloak/themes_src/logo.svg similarity index 100% rename from docker/keycloak/themes_src/logo.svg rename to deployment/docker/keycloak/themes_src/logo.svg diff --git a/docker/keycloak/themes_src/main.css b/deployment/docker/keycloak/themes_src/main.css similarity index 100% rename from docker/keycloak/themes_src/main.css rename to deployment/docker/keycloak/themes_src/main.css diff --git a/docker/mongodb/init.js b/deployment/docker/mongodb/init.js similarity index 100% rename from docker/mongodb/init.js rename to deployment/docker/mongodb/init.js diff --git a/docker/push.sh b/deployment/docker/push.sh similarity index 100% rename from docker/push.sh rename to deployment/docker/push.sh diff --git a/resources/global.json b/deployment/resources/global.json similarity index 100% rename from resources/global.json rename to deployment/resources/global.json diff --git a/deployment/segments/social.bff.json b/deployment/segments/social.bff.json new file mode 100644 index 00000000..a609273a --- /dev/null +++ b/deployment/segments/social.bff.json @@ -0,0 +1,48 @@ +{ + "./social/domain/authentication/getLoginUrl": { "default": { "access": "public" } }, + "./social/domain/authentication/login": { "default": { "access": "public" } }, + "./social/domain/authentication/logout": { "default": { "access": "public" } }, + + "./social/domain/creator/aggregate": { "default": { "access": "private" }}, + "./social/domain/creator/getByIdAggregated": { "default": { "access": "private" } }, + "./social/domain/creator/getByNicknameAggregated": { "default": { "access": "public" } }, + "./social/domain/creator/getMeAggregated": { "default": { "access": "public" } }, + "./social/domain/creator/updateFullName": { "default": { "access": "public" } }, + "./social/domain/creator/updateNickname": { "default": { "access": "public" } }, + + "./social/domain/creator.metrics/create": { "subscriptions": { "access": "private" } }, + "./social/domain/creator.metrics/updateFollowers": { "subscriptions": { "access": "private" } }, + "./social/domain/creator.metrics/updateFollowing": { "subscriptions": { "access": "private" } }, + "./social/domain/creator.metrics/updatePosts": { "subscriptions": { "access": "private" } }, + + "./social/domain/notification/aggregate": { "default": { "access": "private" } }, + "./social/domain/notification/notify": { "subscriptions": { "access": "private" } }, + "./social/domain/notification/getRecentAggregated": { "default": { "access": "public" } }, + + "./social/domain/post/aggregate": { "default": { "access": "private" } }, + "./social/domain/post/create": { "default": { "access": "private" }, "subscribe": { "access": "private" } }, + "./social/domain/post/createWithComic": { "default": { "access": "public" } }, + "./social/domain/post/createWithComment": { "default": { "access": "public" } }, + "./social/domain/post/getByCreatorAggregated": { "default": { "access": "public" } }, + "./social/domain/post/getByFollowingAggregated": { "default": { "access": "public" } }, + "./social/domain/post/exploreAggregated": { "default": { "access": "public" } }, + "./social/domain/post/getByIdAggregated": { "default": { "access": "public" } }, + "./social/domain/post/getByParentAggregated": { "default": { "access": "public" } }, + "./social/domain/post/getRecommendedAggregated": { "default": { "access": "public"}}, + "./social/domain/post/remove": { "default": { "access": "public" }, "subscribe": { "access": "private" } }, + + "./social/domain/post.metrics/create": { "subscriptions": { "access": "private" } }, + "./social/domain/post.metrics/updateRatings": { "subscriptions": { "access": "private" } }, + "./social/domain/post.metrics/updateReactions": { "subscriptions": { "access": "private" } }, + + "./social/domain/rating/toggle": { "default": { "access": "public" }, "subscribe": { "access": "private" } }, + + "./social/domain/relation/aggregate": { "default": { "access": "private" }}, + "./social/domain/relation/exploreAggregated": { "default": { "access": "public" } }, + "./social/domain/relation/establish": { "default": { "access": "public" }, "subscribe": { "access": "private" } }, + "./social/domain/relation/getAggregated": { "default": { "access": "public" } }, + "./social/domain/relation/getFollowersAggregated": { "default": { "access": "public" } }, + "./social/domain/relation/getFollowingAggregated": { "default": { "access": "public" } }, + + "./social/domain/tenant/getByOriginConverted": { "default": { "access": "public" } } +} \ No newline at end of file diff --git a/deployment/segments/social.notification.json b/deployment/segments/social.notification.json new file mode 100644 index 00000000..2715950d --- /dev/null +++ b/deployment/segments/social.notification.json @@ -0,0 +1,6 @@ +{ + " ./social/domain/notification/create": { "default": { "access": "protected" } }, + " ./social/domain/notification/getByPostId": { "default": { "access": "protected" } }, + " ./social/domain/notification/getRecent": { "default": { "access": "protected" } }, + " ./social/domain/notification/remove": { "default": { "access": "protected" } } +} \ No newline at end of file diff --git a/deployment/segments/social.reads.json b/deployment/segments/social.reads.json new file mode 100644 index 00000000..34525ae3 --- /dev/null +++ b/deployment/segments/social.reads.json @@ -0,0 +1,38 @@ +{ + " ./social/domain/comic/getById": { "default": { "access": "protected" } }, + + " ./social/domain/comment/getById": { "default": { "access": "protected" } }, + + " ./social/domain/creator/generateNickname/retrieveByNickname": { "default": { "access": "protected" } }, + " ./social/domain/creator/generateNickname/retrieveByStartNickname": { "default": { "access": "protected" } }, + " ./social/domain/creator/getByEmail": { "default": { "access": "protected" } }, + " ./social/domain/creator/getById": { "default": { "access": "protected" } }, + " ./social/domain/creator/getByNickname": { "default": { "access": "protected" } }, + " ./social/domain/creator/getMe": { "default": { "access": "protected" } }, + " ./social/domain/creator/getOthers": { "default": { "access": "private" }}, + " ./social/domain/creator/updateNickname/retrieveByNickname": { "default": { "access": "protected" } }, + + " ./social/domain/creator.metrics/getByCreator": { "default": { "access": "protected" } }, + + " ./social/domain/image/getById": { "default": { "access": "protected" } }, + + " ./social/domain/post/explore": { "default": { "access": "protected" } }, + " ./social/domain/post/getByCreator": { "default": { "access": "protected" } }, + " ./social/domain/post/getByFollowing": { "default": { "access": "protected" } }, + " ./social/domain/post/getById": { "default": { "access": "protected" } }, + " ./social/domain/post/getByParent": { "default": { "access": "protected" } }, + " ./social/domain/post/getRecommended": { "default": { "access": "protected" } }, + + " ./social/domain/post.metrics/getByPost": { "default": { "access": "protected" } }, + + " ./social/domain/rating/exists": { "default": { "access": "protected" } }, + " ./social/domain/rating/toggle/getData": { "default": { "access": "protected" } }, + + " ./social/domain/relation/exists": { "default": { "access": "protected" } }, + " ./social/domain/relation/explore": { "default": { "access": "protected" } }, + " ./social/domain/relation/get": { "default": { "access": "protected" } }, + " ./social/domain/relation/getFollowers": { "default": { "access": "protected" } }, + " ./social/domain/relation/getFollowing": { "default": { "access": "protected" } }, + + " ./social/domain/tenant/getByOrigin": { "default": { "access": "protected" }, "TenantNotFound": { } } +} \ No newline at end of file diff --git a/deployment/segments/social.writes.json b/deployment/segments/social.writes.json new file mode 100644 index 00000000..1fe3a9b0 --- /dev/null +++ b/deployment/segments/social.writes.json @@ -0,0 +1,32 @@ +{ + " ./social/domain/comic/create/insertData": { "default": { "access": "protected" } }, + " ./social/domain/comic/erase": { "default": { "access": "protected" } }, + + " ./social/domain/comment/create": { "default": { "access": "protected" } }, + " ./social/domain/comment/erase": { "default": { "access": "protected" } }, + + " ./social/domain/creator/create": { "default": { "access": "protected" } }, + " ./social/domain/creator/erase": { "default": { "access": "protected" } }, + " ./social/domain/creator/update": { "default": { "access": "protected" } }, + + " ./social/domain/creator.metrics/create/insertData": { "default": { "access": "protected" } }, + " ./social/domain/creator.metrics/update": { "default": { "access": "protected" } }, + + " ./social/domain/image/erase": { "default": { "access": "protected" } }, + " ./social/domain/image/save": { "default": { "access": "protected" } }, + + " ./social/domain/post/create/insertData": { "default": { "access": "protected" } }, + " ./social/domain/post/erase": { "default": { "access": "protected" } }, + " ./social/domain/post/remove/deleteData": { "default": { "access": "protected" }}, + " ./social/domain/post/remove/undeleteData": { "default": { "access": "protected" }}, + " ./social/domain/post/update": { "default": { "access": "protected" } }, + + " ./social/domain/post.metrics/create/insertData": { "default": { "access": "protected" } }, + " ./social/domain/post.metrics/update": { "default": { "access": "protected" } }, + + " ./social/domain/rating/create": { "default": { "access": "protected" } }, + " ./social/domain/rating/erase": { "default": { "access": "protected" } }, + + " ./social/domain/relation/create": { "default": { "access": "protected" } }, + " ./social/domain/relation/erase": { "default": { "access": "protected" } } +} \ No newline at end of file diff --git a/services/bff.json b/deployment/services/bff.json similarity index 100% rename from services/bff.json rename to deployment/services/bff.json diff --git a/services/gateway.json b/deployment/services/gateway.json similarity index 100% rename from services/gateway.json rename to deployment/services/gateway.json diff --git a/services/notification.json b/deployment/services/notification.json similarity index 100% rename from services/notification.json rename to deployment/services/notification.json diff --git a/services/proxy.json b/deployment/services/proxy.json similarity index 100% rename from services/proxy.json rename to deployment/services/proxy.json diff --git a/services/reads.json b/deployment/services/reads.json similarity index 100% rename from services/reads.json rename to deployment/services/reads.json diff --git a/services/reads2.json b/deployment/services/reads2.json similarity index 100% rename from services/reads2.json rename to deployment/services/reads2.json diff --git a/services/repository.json b/deployment/services/repository.json similarity index 100% rename from services/repository.json rename to deployment/services/repository.json diff --git a/deployment/services/social.json b/deployment/services/social.json new file mode 100644 index 00000000..fb21f611 --- /dev/null +++ b/deployment/services/social.json @@ -0,0 +1,38 @@ +{ + "url": "http://127.0.0.1:3000", + "setUp": [ + "./social/integrations/authentication/setUp", + "./social/integrations/database/setUp", + "./social/integrations/fileStore/setUp", + "./social/integrations/eventBroker/setUp" + ], + "tearDown": [ + "./social/integrations/authentication/tearDown", + "./social/integrations/database/tearDown", + "./social/integrations/fileStore/tearDown", + "./social/integrations/eventBroker/tearDown" + ], + "healthChecks": [ + "./social/integrations/database/healthCheck", + "./social/integrations/fileStore/healthCheck", + "./social/integrations/eventBroker/healthCheck" + ], + "middleware": [ + "./social/integrations/authentication/originMiddleware", + "./social/integrations/authentication/authenticationMiddleware", + "./social/integrations/tenancy/tenantMiddleware" + ], + "standalone": + { + "segments": [ + "social.bff", + "social.notification", + "social.reads", + "social.writes" + ], + + "serveIndexOnNotFound": true, + "assetRoot": "./social/app", + "assets": ["index.html", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] + } +} \ No newline at end of file diff --git a/deployment/services/standalone.json b/deployment/services/standalone.json new file mode 100644 index 00000000..edf9af53 --- /dev/null +++ b/deployment/services/standalone.json @@ -0,0 +1,34 @@ +{ + "url": "http://127.0.0.1:3000", + "setUp": [ + "./social/integrations/authentication/setUp", + "./social/integrations/database/setUp", + "./social/integrations/fileStore/setUp", + "./social/integrations/eventBroker/setUp" + ], + "tearDown": [ + "./social/integrations/authentication/tearDown", + "./social/integrations/database/tearDown", + "./social/integrations/fileStore/tearDown", + "./social/integrations/eventBroker/tearDown" + ], + "healthChecks": [ + "./social/integrations/database/healthCheck", + "./social/integrations/fileStore/healthCheck", + "./social/integrations/eventBroker/healthCheck" + ], + "middleware": [ + "./social/integrations/authentication/originMiddleware", + "./social/integrations/authentication/authenticationMiddleware", + "./social/integrations/tenancy/tenantMiddleware" + ], + "worker": + { + "segments": [ + "social.bff", + "social.notification", + "social.reads", + "social.writes" + ] + } +} \ No newline at end of file diff --git a/services/writes.json b/deployment/services/writes.json similarity index 100% rename from services/writes.json rename to deployment/services/writes.json diff --git a/src/assets/localhost.css b/development/insights/app/assets/.gitkeep similarity index 100% rename from src/assets/localhost.css rename to development/insights/app/assets/.gitkeep diff --git a/development/insights/app/components/main.tsx b/development/insights/app/components/main.tsx new file mode 100644 index 00000000..29ad513b --- /dev/null +++ b/development/insights/app/components/main.tsx @@ -0,0 +1,6 @@ + +import ReactDOM from 'react-dom/client'; + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( +

Hello Insights

+); diff --git a/development/insights/app/index.html b/development/insights/app/index.html new file mode 100644 index 00000000..9f8de572 --- /dev/null +++ b/development/insights/app/index.html @@ -0,0 +1,14 @@ + + + + + + Insights + + + +
+ + + + \ No newline at end of file diff --git a/development/insights/app/public/.gitkeep b/development/insights/app/public/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/src/apps/social/tsconfig.json b/development/insights/app/tsconfig.json similarity index 75% rename from src/apps/social/tsconfig.json rename to development/insights/app/tsconfig.json index d62702c7..2e1aba0d 100644 --- a/src/apps/social/tsconfig.json +++ b/development/insights/app/tsconfig.json @@ -3,9 +3,8 @@ "compilerOptions": { "jsx": "react-jsx", "noEmit": true, - "outDir": "../../../dist", "paths": { - "^/*": ["../../*"], + "^/*": ["../*"], "~/*": ["./*"], } }, diff --git a/src/apps/social/app/vite-env.d.ts b/development/insights/app/vite-env.d.ts similarity index 100% rename from src/apps/social/app/vite-env.d.ts rename to development/insights/app/vite-env.d.ts diff --git a/development/insights/app/vite.config.ts b/development/insights/app/vite.config.ts new file mode 100644 index 00000000..7b437368 --- /dev/null +++ b/development/insights/app/vite.config.ts @@ -0,0 +1,32 @@ + +import jitar, { JitarConfig } from '@jitar/plugin-vite'; +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +const JITAR_URL = 'http://localhost:3000'; +const JITAR_SEGMENTS: string[] = []; +const JITAR_MIDDLEWARES: string[] = []; + +const jitarConfig: JitarConfig = { + projectRoot: '../../../', + sourceRoot: '../../', + jitarUrl: JITAR_URL, + segments: JITAR_SEGMENTS, + middleware: JITAR_MIDDLEWARES +}; + +export default defineConfig({ + root: './app', + publicDir: 'public', + build: { + outDir: '../../../artifacts/build/insights/app', + assetsDir: 'assets', + emptyOutDir: true + }, + plugins: [ + react(), + tsconfigPaths(), + jitar(jitarConfig) + ] +}); \ No newline at end of file diff --git a/development/insights/domain/definitions.ts b/development/insights/domain/definitions.ts new file mode 100644 index 00000000..e69de29b diff --git a/development/insights/domain/types.ts b/development/insights/domain/types.ts new file mode 100644 index 00000000..e69de29b diff --git a/development/insights/integrations/database/index.ts b/development/insights/integrations/database/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/development/insights/package.json b/development/insights/package.json new file mode 100644 index 00000000..ddffca4c --- /dev/null +++ b/development/insights/package.json @@ -0,0 +1,15 @@ +{ + "name": "@concept/insights", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "build": "npm run clean && npm run build-domain && npm run build-app", + "build-app": "vite build --config app/vite.config.js", + "build-domain": "tsc && tsc-alias", + "clean": "rimraf ../../artifacts/build/insights", + "lint": "eslint", + "review": "npm run build && npm run lint", + "prepublishOnly": "npm run clean && npm run build" + } +} diff --git a/development/insights/tsconfig.json b/development/insights/tsconfig.json new file mode 100644 index 00000000..2a93edf6 --- /dev/null +++ b/development/insights/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../../artifacts/build/insights", + "paths": { + "^/*": ["./*"], + } + }, + "include": ["./domain", "./integrations"] +} \ No newline at end of file diff --git a/development/moderation/app/assets/.gitkeep b/development/moderation/app/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/development/moderation/app/components/main.tsx b/development/moderation/app/components/main.tsx new file mode 100644 index 00000000..24d7fea2 --- /dev/null +++ b/development/moderation/app/components/main.tsx @@ -0,0 +1,6 @@ + +import ReactDOM from 'react-dom/client'; + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( +

Hello Moderation

+); diff --git a/development/moderation/app/index.html b/development/moderation/app/index.html new file mode 100644 index 00000000..1d24f377 --- /dev/null +++ b/development/moderation/app/index.html @@ -0,0 +1,14 @@ + + + + + + Moderation + + + +
+ + + + \ No newline at end of file diff --git a/development/moderation/app/public/.gitkeep b/development/moderation/app/public/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/development/moderation/app/tsconfig.json b/development/moderation/app/tsconfig.json new file mode 100644 index 00000000..2e1aba0d --- /dev/null +++ b/development/moderation/app/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "jsx": "react-jsx", + "noEmit": true, + "paths": { + "^/*": ["../*"], + "~/*": ["./*"], + } + }, + "include": ["./"] +} \ No newline at end of file diff --git a/src/apps/social/vite-env.d.ts b/development/moderation/app/vite-env.d.ts similarity index 100% rename from src/apps/social/vite-env.d.ts rename to development/moderation/app/vite-env.d.ts diff --git a/development/moderation/app/vite.config.ts b/development/moderation/app/vite.config.ts new file mode 100644 index 00000000..d5d854bd --- /dev/null +++ b/development/moderation/app/vite.config.ts @@ -0,0 +1,32 @@ + +import jitar, { JitarConfig } from '@jitar/plugin-vite'; +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +const JITAR_URL = 'http://localhost:3000'; +const JITAR_SEGMENTS: string[] = []; +const JITAR_MIDDLEWARES: string[] = []; + +const jitarConfig: JitarConfig = { + projectRoot: '../../../', + sourceRoot: '../../', + jitarUrl: JITAR_URL, + segments: JITAR_SEGMENTS, + middleware: JITAR_MIDDLEWARES +}; + +export default defineConfig({ + root: './app', + publicDir: 'public', + build: { + outDir: '../../../artifacts/build/moderation/app', + assetsDir: 'assets', + emptyOutDir: true + }, + plugins: [ + react(), + tsconfigPaths(), + jitar(jitarConfig) + ] +}); \ No newline at end of file diff --git a/development/moderation/domain/definitions.ts b/development/moderation/domain/definitions.ts new file mode 100644 index 00000000..e69de29b diff --git a/development/moderation/domain/types.ts b/development/moderation/domain/types.ts new file mode 100644 index 00000000..e69de29b diff --git a/development/moderation/integrations/database/index.ts b/development/moderation/integrations/database/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/development/moderation/package.json b/development/moderation/package.json new file mode 100644 index 00000000..329f5eeb --- /dev/null +++ b/development/moderation/package.json @@ -0,0 +1,15 @@ +{ + "name": "@concept/moderation", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "build": "npm run clean && npm run build-domain && npm run build-app", + "build-app": "vite build --config app/vite.config.js", + "build-domain": "tsc && tsc-alias", + "clean": "rimraf ../../artifacts/build/moderation", + "lint": "eslint", + "review": "npm run build && npm run lint", + "prepublishOnly": "npm run clean && npm run build" + } +} diff --git a/development/moderation/tsconfig.json b/development/moderation/tsconfig.json new file mode 100644 index 00000000..a8757519 --- /dev/null +++ b/development/moderation/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../../artifacts/build/moderation", + "paths": { + "^/*": ["./*"], + } + }, + "include": ["./domain", "./integrations"] +} \ No newline at end of file diff --git a/src/apps/social/assets/images/icons/logout.svg b/development/social/app/assets/images/icons/logout.svg similarity index 100% rename from src/apps/social/assets/images/icons/logout.svg rename to development/social/app/assets/images/icons/logout.svg diff --git a/src/apps/social/assets/images/icons/rated.svg b/development/social/app/assets/images/icons/rated.svg similarity index 100% rename from src/apps/social/assets/images/icons/rated.svg rename to development/social/app/assets/images/icons/rated.svg diff --git a/src/apps/social/assets/images/icons/reactions.svg b/development/social/app/assets/images/icons/reactions.svg similarity index 100% rename from src/apps/social/assets/images/icons/reactions.svg rename to development/social/app/assets/images/icons/reactions.svg diff --git a/src/apps/social/assets/images/icons/unrated.svg b/development/social/app/assets/images/icons/unrated.svg similarity index 100% rename from src/apps/social/assets/images/icons/unrated.svg rename to development/social/app/assets/images/icons/unrated.svg diff --git a/src/apps/social/assets/images/introduction.png b/development/social/app/assets/images/introduction.png similarity index 100% rename from src/apps/social/assets/images/introduction.png rename to development/social/app/assets/images/introduction.png diff --git a/src/apps/social/assets/images/logo.svg b/development/social/app/assets/images/logo.svg similarity index 100% rename from src/apps/social/assets/images/logo.svg rename to development/social/app/assets/images/logo.svg diff --git a/src/apps/social/assets/images/navigation/create-active.svg b/development/social/app/assets/images/navigation/create-active.svg similarity index 100% rename from src/apps/social/assets/images/navigation/create-active.svg rename to development/social/app/assets/images/navigation/create-active.svg diff --git a/src/apps/social/assets/images/navigation/create-inactive.svg b/development/social/app/assets/images/navigation/create-inactive.svg similarity index 100% rename from src/apps/social/assets/images/navigation/create-inactive.svg rename to development/social/app/assets/images/navigation/create-inactive.svg diff --git a/src/apps/social/assets/images/navigation/explore-active.svg b/development/social/app/assets/images/navigation/explore-active.svg similarity index 100% rename from src/apps/social/assets/images/navigation/explore-active.svg rename to development/social/app/assets/images/navigation/explore-active.svg diff --git a/src/apps/social/assets/images/navigation/explore-inactive.svg b/development/social/app/assets/images/navigation/explore-inactive.svg similarity index 100% rename from src/apps/social/assets/images/navigation/explore-inactive.svg rename to development/social/app/assets/images/navigation/explore-inactive.svg diff --git a/src/apps/social/assets/images/navigation/notifications-active.svg b/development/social/app/assets/images/navigation/notifications-active.svg similarity index 100% rename from src/apps/social/assets/images/navigation/notifications-active.svg rename to development/social/app/assets/images/navigation/notifications-active.svg diff --git a/src/apps/social/assets/images/navigation/notifications-inactive.svg b/development/social/app/assets/images/navigation/notifications-inactive.svg similarity index 100% rename from src/apps/social/assets/images/navigation/notifications-inactive.svg rename to development/social/app/assets/images/navigation/notifications-inactive.svg diff --git a/src/apps/social/assets/images/navigation/profile-active.svg b/development/social/app/assets/images/navigation/profile-active.svg similarity index 100% rename from src/apps/social/assets/images/navigation/profile-active.svg rename to development/social/app/assets/images/navigation/profile-active.svg diff --git a/src/apps/social/assets/images/navigation/profile-inactive.svg b/development/social/app/assets/images/navigation/profile-inactive.svg similarity index 100% rename from src/apps/social/assets/images/navigation/profile-inactive.svg rename to development/social/app/assets/images/navigation/profile-inactive.svg diff --git a/src/apps/social/assets/images/navigation/timeline-active.svg b/development/social/app/assets/images/navigation/timeline-active.svg similarity index 100% rename from src/apps/social/assets/images/navigation/timeline-active.svg rename to development/social/app/assets/images/navigation/timeline-active.svg diff --git a/src/apps/social/assets/images/navigation/timeline-inactive.svg b/development/social/app/assets/images/navigation/timeline-inactive.svg similarity index 100% rename from src/apps/social/assets/images/navigation/timeline-inactive.svg rename to development/social/app/assets/images/navigation/timeline-inactive.svg diff --git a/src/apps/social/assets/images/noresult.svg b/development/social/app/assets/images/noresult.svg similarity index 100% rename from src/apps/social/assets/images/noresult.svg rename to development/social/app/assets/images/noresult.svg diff --git a/src/apps/social/assets/images/portrait.svg b/development/social/app/assets/images/portrait.svg similarity index 100% rename from src/apps/social/assets/images/portrait.svg rename to development/social/app/assets/images/portrait.svg diff --git a/src/apps/social/app/App.tsx b/development/social/app/components/App.tsx similarity index 100% rename from src/apps/social/app/App.tsx rename to development/social/app/components/App.tsx diff --git a/src/apps/social/app/Routes.tsx b/development/social/app/components/Routes.tsx similarity index 100% rename from src/apps/social/app/Routes.tsx rename to development/social/app/components/Routes.tsx diff --git a/src/apps/social/app/account/Edit.tsx b/development/social/app/components/account/Edit.tsx similarity index 100% rename from src/apps/social/app/account/Edit.tsx rename to development/social/app/components/account/Edit.tsx diff --git a/src/apps/social/app/account/Main.tsx b/development/social/app/components/account/Main.tsx similarity index 82% rename from src/apps/social/app/account/Main.tsx rename to development/social/app/components/account/Main.tsx index 4a6a44e6..41dc751f 100644 --- a/src/apps/social/app/account/Main.tsx +++ b/development/social/app/components/account/Main.tsx @@ -5,8 +5,8 @@ import { Column, Ruler } from '@maskingtech/designsystem'; import type { AggregatedData as AggregatedCreatorData } from '^/domain/creator/aggregate'; -import { useAppContext } from '~/app/application'; -import { Profile } from '~/app/creator'; +import { useAppContext } from '~/components/application'; +import { Profile } from '~/components/creator'; export default function Feature() { diff --git a/src/apps/social/app/account/Routes.tsx b/development/social/app/components/account/Routes.tsx similarity index 83% rename from src/apps/social/app/account/Routes.tsx rename to development/social/app/components/account/Routes.tsx index 14fb3b2f..9c69c0a3 100644 --- a/src/apps/social/app/account/Routes.tsx +++ b/development/social/app/components/account/Routes.tsx @@ -1,7 +1,7 @@ import { Route } from 'react-router-dom'; -import { NotFound } from '~/app/common'; +import { NotFound } from '~/components/common'; import Main from './Main'; import Edit from './Edit'; diff --git a/src/apps/social/app/account/components/FullNameForm.tsx b/development/social/app/components/account/components/FullNameForm.tsx similarity index 95% rename from src/apps/social/app/account/components/FullNameForm.tsx rename to development/social/app/components/account/components/FullNameForm.tsx index ee013406..2f1dd1cf 100644 --- a/src/apps/social/app/account/components/FullNameForm.tsx +++ b/development/social/app/components/account/components/FullNameForm.tsx @@ -1,7 +1,7 @@ import { Input, Label, Panel, TextBox } from '@maskingtech/designsystem'; -import { Form } from '~/app/common'; +import { Form } from '~/components/common'; import type { SubmitHandler } from './hooks/useFullNameFormHandler'; import useFullNameFormHandler from './hooks/useFullNameFormHandler'; diff --git a/src/apps/social/app/account/components/NicknameForm.tsx b/development/social/app/components/account/components/NicknameForm.tsx similarity index 96% rename from src/apps/social/app/account/components/NicknameForm.tsx rename to development/social/app/components/account/components/NicknameForm.tsx index 2ffce43b..cb71f21f 100644 --- a/src/apps/social/app/account/components/NicknameForm.tsx +++ b/development/social/app/components/account/components/NicknameForm.tsx @@ -1,7 +1,7 @@ import { Input, Label, Panel, TextBox } from '@maskingtech/designsystem'; -import { Form } from '~/app/common'; +import { Form } from '~/components/common'; import type { SubmitHandler } from './hooks/useNicknameFormHandler'; import useNicknameFormHandler from './hooks/useNicknameFormHandler'; diff --git a/src/apps/social/app/account/components/hooks/useFullNameFormHandler.ts b/development/social/app/components/account/components/hooks/useFullNameFormHandler.ts similarity index 100% rename from src/apps/social/app/account/components/hooks/useFullNameFormHandler.ts rename to development/social/app/components/account/components/hooks/useFullNameFormHandler.ts diff --git a/src/apps/social/app/account/components/hooks/useNicknameFormHandler.ts b/development/social/app/components/account/components/hooks/useNicknameFormHandler.ts similarity index 100% rename from src/apps/social/app/account/components/hooks/useNicknameFormHandler.ts rename to development/social/app/components/account/components/hooks/useNicknameFormHandler.ts diff --git a/src/apps/social/app/account/hooks/useUpdateFullName.ts b/development/social/app/components/account/hooks/useUpdateFullName.ts similarity index 90% rename from src/apps/social/app/account/hooks/useUpdateFullName.ts rename to development/social/app/components/account/hooks/useUpdateFullName.ts index fccccc7b..9b30a96b 100644 --- a/src/apps/social/app/account/hooks/useUpdateFullName.ts +++ b/development/social/app/components/account/hooks/useUpdateFullName.ts @@ -5,7 +5,7 @@ import { requester } from '^/domain/authentication'; import type { AggregatedData as AggregatedCreatorData } from '^/domain/creator/aggregate'; import updateFullName from '^/domain/creator/updateFullName'; -import { useAppContext } from '~/app/application'; +import { useAppContext } from '~/components/application'; export default function useUpdateFullName() { diff --git a/src/apps/social/app/account/hooks/useUpdateNickname.ts b/development/social/app/components/account/hooks/useUpdateNickname.ts similarity index 95% rename from src/apps/social/app/account/hooks/useUpdateNickname.ts rename to development/social/app/components/account/hooks/useUpdateNickname.ts index 5c88070a..f4fcb22a 100644 --- a/src/apps/social/app/account/hooks/useUpdateNickname.ts +++ b/development/social/app/components/account/hooks/useUpdateNickname.ts @@ -7,7 +7,7 @@ import updateNickname from '^/domain/creator/updateNickname'; import NicknameAlreadyExists from '^/domain/creator/updateNickname/NicknameAlreadyExists'; import { tenant } from '^/domain/tenant'; -import { useAppContext } from '~/app/application'; +import { useAppContext } from '~/components/application'; export default function useUpdateNickname() { diff --git a/src/apps/social/app/account/index.ts b/development/social/app/components/account/index.ts similarity index 100% rename from src/apps/social/app/account/index.ts rename to development/social/app/components/account/index.ts diff --git a/src/apps/social/app/application/ErrorHandler.tsx b/development/social/app/components/application/ErrorHandler.tsx similarity index 100% rename from src/apps/social/app/application/ErrorHandler.tsx rename to development/social/app/components/application/ErrorHandler.tsx diff --git a/src/apps/social/app/application/Home.tsx b/development/social/app/components/application/Home.tsx similarity index 100% rename from src/apps/social/app/application/Home.tsx rename to development/social/app/components/application/Home.tsx diff --git a/src/apps/social/app/application/Identify.tsx b/development/social/app/components/application/Identify.tsx similarity index 100% rename from src/apps/social/app/application/Identify.tsx rename to development/social/app/components/application/Identify.tsx diff --git a/src/apps/social/app/application/Login.tsx b/development/social/app/components/application/Login.tsx similarity index 100% rename from src/apps/social/app/application/Login.tsx rename to development/social/app/components/application/Login.tsx diff --git a/src/apps/social/app/application/Logout.tsx b/development/social/app/components/application/Logout.tsx similarity index 100% rename from src/apps/social/app/application/Logout.tsx rename to development/social/app/components/application/Logout.tsx diff --git a/src/apps/social/app/application/NotFound.tsx b/development/social/app/components/application/NotFound.tsx similarity index 100% rename from src/apps/social/app/application/NotFound.tsx rename to development/social/app/components/application/NotFound.tsx diff --git a/src/apps/social/app/application/Privacy.tsx b/development/social/app/components/application/Privacy.tsx similarity index 100% rename from src/apps/social/app/application/Privacy.tsx rename to development/social/app/components/application/Privacy.tsx diff --git a/src/apps/social/app/application/ProtectedRoute.tsx b/development/social/app/components/application/ProtectedRoute.tsx similarity index 100% rename from src/apps/social/app/application/ProtectedRoute.tsx rename to development/social/app/components/application/ProtectedRoute.tsx diff --git a/src/apps/social/app/application/Routes.tsx b/development/social/app/components/application/Routes.tsx similarity index 93% rename from src/apps/social/app/application/Routes.tsx rename to development/social/app/components/application/Routes.tsx index 1f2526b8..47719151 100644 --- a/src/apps/social/app/application/Routes.tsx +++ b/development/social/app/components/application/Routes.tsx @@ -1,7 +1,7 @@ import { Route } from 'react-router-dom'; -import { NotFound } from '~/app/common'; +import { NotFound } from '~/components/common'; import Home from './Home'; import Login from './Login'; diff --git a/src/apps/social/app/application/Terms.tsx b/development/social/app/components/application/Terms.tsx similarity index 100% rename from src/apps/social/app/application/Terms.tsx rename to development/social/app/components/application/Terms.tsx diff --git a/src/apps/social/app/application/components/Footer.tsx b/development/social/app/components/application/components/Footer.tsx similarity index 100% rename from src/apps/social/app/application/components/Footer.tsx rename to development/social/app/components/application/components/Footer.tsx diff --git a/src/apps/social/app/application/components/Header.tsx b/development/social/app/components/application/components/Header.tsx similarity index 91% rename from src/apps/social/app/application/components/Header.tsx rename to development/social/app/components/application/components/Header.tsx index 766084be..ad2afad3 100644 --- a/src/apps/social/app/application/components/Header.tsx +++ b/development/social/app/components/application/components/Header.tsx @@ -3,7 +3,7 @@ import { Row } from '@maskingtech/designsystem'; import type { AggregatedData as IdentityModel } from '^/domain/creator/aggregate'; -import { ConciseIdentity } from '~/app/creator'; +import { ConciseIdentity } from '~/components/creator'; import Logo from './Logo'; import LogoutButton from './LogoutButton'; diff --git a/src/apps/social/app/application/components/Identity.tsx b/development/social/app/components/application/components/Identity.tsx similarity index 90% rename from src/apps/social/app/application/components/Identity.tsx rename to development/social/app/components/application/components/Identity.tsx index 112de7f4..f29c6bca 100644 --- a/src/apps/social/app/application/components/Identity.tsx +++ b/development/social/app/components/application/components/Identity.tsx @@ -3,7 +3,7 @@ import { Row } from '@maskingtech/designsystem'; import type { AggregatedData as AggregatedCreatorData } from '^/domain/creator/aggregate'; -import { FullIdentity } from '~/app/creator'; +import { FullIdentity } from '~/components/creator'; import LogoutButton from './LogoutButton'; type Props = { diff --git a/src/apps/social/app/application/components/Introduction.tsx b/development/social/app/components/application/components/Introduction.tsx similarity index 100% rename from src/apps/social/app/application/components/Introduction.tsx rename to development/social/app/components/application/components/Introduction.tsx diff --git a/src/apps/social/app/application/components/LegalHeader.tsx b/development/social/app/components/application/components/LegalHeader.tsx similarity index 100% rename from src/apps/social/app/application/components/LegalHeader.tsx rename to development/social/app/components/application/components/LegalHeader.tsx diff --git a/src/apps/social/app/application/components/LegalInfo.tsx b/development/social/app/components/application/components/LegalInfo.tsx similarity index 100% rename from src/apps/social/app/application/components/LegalInfo.tsx rename to development/social/app/components/application/components/LegalInfo.tsx diff --git a/src/apps/social/app/application/components/Logo.tsx b/development/social/app/components/application/components/Logo.tsx similarity index 100% rename from src/apps/social/app/application/components/Logo.tsx rename to development/social/app/components/application/components/Logo.tsx diff --git a/src/apps/social/app/application/components/LogoutButton.tsx b/development/social/app/components/application/components/LogoutButton.tsx similarity index 100% rename from src/apps/social/app/application/components/LogoutButton.tsx rename to development/social/app/components/application/components/LogoutButton.tsx diff --git a/src/apps/social/app/application/components/LogoutPanel.tsx b/development/social/app/components/application/components/LogoutPanel.tsx similarity index 100% rename from src/apps/social/app/application/components/LogoutPanel.tsx rename to development/social/app/components/application/components/LogoutPanel.tsx diff --git a/src/apps/social/app/application/components/Menu.tsx b/development/social/app/components/application/components/Menu.tsx similarity index 97% rename from src/apps/social/app/application/components/Menu.tsx rename to development/social/app/components/application/components/Menu.tsx index 1d23a4a7..0f24b160 100644 --- a/src/apps/social/app/application/components/Menu.tsx +++ b/development/social/app/components/application/components/Menu.tsx @@ -14,7 +14,7 @@ import profileInactiveIcon from '~/assets/images/navigation/profile-inactive.svg import timelineActiveIcon from '~/assets/images/navigation/timeline-active.svg'; import timelineInactiveIcon from '~/assets/images/navigation/timeline-inactive.svg'; -import { Menu } from '~/app/common'; +import { Menu } from '~/components/common'; type Props = { readonly vertical: boolean; diff --git a/src/apps/social/app/application/components/Modal.tsx b/development/social/app/components/application/components/Modal.tsx similarity index 100% rename from src/apps/social/app/application/components/Modal.tsx rename to development/social/app/components/application/components/Modal.tsx diff --git a/src/apps/social/app/application/components/Sidebar.tsx b/development/social/app/components/application/components/Sidebar.tsx similarity index 100% rename from src/apps/social/app/application/components/Sidebar.tsx rename to development/social/app/components/application/components/Sidebar.tsx diff --git a/src/apps/social/app/application/contexts/AppContext.tsx b/development/social/app/components/application/contexts/AppContext.tsx similarity index 100% rename from src/apps/social/app/application/contexts/AppContext.tsx rename to development/social/app/components/application/contexts/AppContext.tsx diff --git a/src/apps/social/app/application/contexts/hooks/useAppContextValue.ts b/development/social/app/components/application/contexts/hooks/useAppContextValue.ts similarity index 100% rename from src/apps/social/app/application/contexts/hooks/useAppContextValue.ts rename to development/social/app/components/application/contexts/hooks/useAppContextValue.ts diff --git a/src/apps/social/app/application/hooks/useAppState.ts b/development/social/app/components/application/hooks/useAppState.ts similarity index 100% rename from src/apps/social/app/application/hooks/useAppState.ts rename to development/social/app/components/application/hooks/useAppState.ts diff --git a/src/apps/social/app/application/hooks/useIdentify.ts b/development/social/app/components/application/hooks/useIdentify.ts similarity index 100% rename from src/apps/social/app/application/hooks/useIdentify.ts rename to development/social/app/components/application/hooks/useIdentify.ts diff --git a/src/apps/social/app/application/hooks/useLogin.ts b/development/social/app/components/application/hooks/useLogin.ts similarity index 100% rename from src/apps/social/app/application/hooks/useLogin.ts rename to development/social/app/components/application/hooks/useLogin.ts diff --git a/src/apps/social/app/application/hooks/useLogout.ts b/development/social/app/components/application/hooks/useLogout.ts similarity index 100% rename from src/apps/social/app/application/hooks/useLogout.ts rename to development/social/app/components/application/hooks/useLogout.ts diff --git a/src/apps/social/app/application/hooks/useNavigateHome.ts b/development/social/app/components/application/hooks/useNavigateHome.ts similarity index 100% rename from src/apps/social/app/application/hooks/useNavigateHome.ts rename to development/social/app/components/application/hooks/useNavigateHome.ts diff --git a/src/apps/social/app/application/hooks/useNavigateLogin.ts b/development/social/app/components/application/hooks/useNavigateLogin.ts similarity index 100% rename from src/apps/social/app/application/hooks/useNavigateLogin.ts rename to development/social/app/components/application/hooks/useNavigateLogin.ts diff --git a/src/apps/social/app/application/index.ts b/development/social/app/components/application/index.ts similarity index 100% rename from src/apps/social/app/application/index.ts rename to development/social/app/components/application/index.ts diff --git a/src/apps/social/app/application/layouts/Application.tsx b/development/social/app/components/application/layouts/Application.tsx similarity index 100% rename from src/apps/social/app/application/layouts/Application.tsx rename to development/social/app/components/application/layouts/Application.tsx diff --git a/src/apps/social/app/application/layouts/Guest.tsx b/development/social/app/components/application/layouts/Guest.tsx similarity index 100% rename from src/apps/social/app/application/layouts/Guest.tsx rename to development/social/app/components/application/layouts/Guest.tsx diff --git a/src/apps/social/app/application/layouts/Legal.tsx b/development/social/app/components/application/layouts/Legal.tsx similarity index 100% rename from src/apps/social/app/application/layouts/Legal.tsx rename to development/social/app/components/application/layouts/Legal.tsx diff --git a/src/apps/social/app/comic/components/Editor.tsx b/development/social/app/components/comic/components/Editor.tsx similarity index 100% rename from src/apps/social/app/comic/components/Editor.tsx rename to development/social/app/components/comic/components/Editor.tsx diff --git a/src/apps/social/app/comic/components/Image.tsx b/development/social/app/components/comic/components/Image.tsx similarity index 100% rename from src/apps/social/app/comic/components/Image.tsx rename to development/social/app/components/comic/components/Image.tsx diff --git a/src/apps/social/app/comic/components/hooks/useCreateHandler.ts b/development/social/app/components/comic/components/hooks/useCreateHandler.ts similarity index 100% rename from src/apps/social/app/comic/components/hooks/useCreateHandler.ts rename to development/social/app/components/comic/components/hooks/useCreateHandler.ts diff --git a/src/apps/social/app/comic/components/hooks/useEditor.ts b/development/social/app/components/comic/components/hooks/useEditor.ts similarity index 100% rename from src/apps/social/app/comic/components/hooks/useEditor.ts rename to development/social/app/components/comic/components/hooks/useEditor.ts diff --git a/src/apps/social/app/comic/index.ts b/development/social/app/components/comic/index.ts similarity index 100% rename from src/apps/social/app/comic/index.ts rename to development/social/app/components/comic/index.ts diff --git a/src/apps/social/app/comment/components/Comment.tsx b/development/social/app/components/comment/components/Comment.tsx similarity index 100% rename from src/apps/social/app/comment/components/Comment.tsx rename to development/social/app/components/comment/components/Comment.tsx diff --git a/src/apps/social/app/comment/components/Form.tsx b/development/social/app/components/comment/components/Form.tsx similarity index 100% rename from src/apps/social/app/comment/components/Form.tsx rename to development/social/app/components/comment/components/Form.tsx diff --git a/src/apps/social/app/comment/components/hooks/useCreateHandler.ts b/development/social/app/components/comment/components/hooks/useCreateHandler.ts similarity index 100% rename from src/apps/social/app/comment/components/hooks/useCreateHandler.ts rename to development/social/app/components/comment/components/hooks/useCreateHandler.ts diff --git a/src/apps/social/app/comment/index.ts b/development/social/app/components/comment/index.ts similarity index 100% rename from src/apps/social/app/comment/index.ts rename to development/social/app/components/comment/index.ts diff --git a/src/apps/social/app/common/components/BackButton.tsx b/development/social/app/components/common/components/BackButton.tsx similarity index 100% rename from src/apps/social/app/common/components/BackButton.tsx rename to development/social/app/components/common/components/BackButton.tsx diff --git a/src/apps/social/app/common/components/BackRow.tsx b/development/social/app/components/common/components/BackRow.tsx similarity index 100% rename from src/apps/social/app/common/components/BackRow.tsx rename to development/social/app/components/common/components/BackRow.tsx diff --git a/src/apps/social/app/common/components/CompactNumber.tsx b/development/social/app/components/common/components/CompactNumber.tsx similarity index 100% rename from src/apps/social/app/common/components/CompactNumber.tsx rename to development/social/app/components/common/components/CompactNumber.tsx diff --git a/src/apps/social/app/common/components/ConfirmationPanel.tsx b/development/social/app/components/common/components/ConfirmationPanel.tsx similarity index 100% rename from src/apps/social/app/common/components/ConfirmationPanel.tsx rename to development/social/app/components/common/components/ConfirmationPanel.tsx diff --git a/src/apps/social/app/common/components/EditButton.tsx b/development/social/app/components/common/components/EditButton.tsx similarity index 100% rename from src/apps/social/app/common/components/EditButton.tsx rename to development/social/app/components/common/components/EditButton.tsx diff --git a/src/apps/social/app/common/components/Form.tsx b/development/social/app/components/common/components/Form.tsx similarity index 100% rename from src/apps/social/app/common/components/Form.tsx rename to development/social/app/components/common/components/Form.tsx diff --git a/src/apps/social/app/common/components/LoadingAndResultContainer.tsx b/development/social/app/components/common/components/LoadingAndResultContainer.tsx similarity index 100% rename from src/apps/social/app/common/components/LoadingAndResultContainer.tsx rename to development/social/app/components/common/components/LoadingAndResultContainer.tsx diff --git a/src/apps/social/app/common/components/LoadingContainer.tsx b/development/social/app/components/common/components/LoadingContainer.tsx similarity index 100% rename from src/apps/social/app/common/components/LoadingContainer.tsx rename to development/social/app/components/common/components/LoadingContainer.tsx diff --git a/src/apps/social/app/common/components/Menu.tsx b/development/social/app/components/common/components/Menu.tsx similarity index 100% rename from src/apps/social/app/common/components/Menu.tsx rename to development/social/app/components/common/components/Menu.tsx diff --git a/src/apps/social/app/common/components/Modal.tsx b/development/social/app/components/common/components/Modal.tsx similarity index 100% rename from src/apps/social/app/common/components/Modal.tsx rename to development/social/app/components/common/components/Modal.tsx diff --git a/src/apps/social/app/common/components/NotFound.tsx b/development/social/app/components/common/components/NotFound.tsx similarity index 100% rename from src/apps/social/app/common/components/NotFound.tsx rename to development/social/app/components/common/components/NotFound.tsx diff --git a/src/apps/social/app/common/components/OrderAndAddRow.tsx b/development/social/app/components/common/components/OrderAndAddRow.tsx similarity index 100% rename from src/apps/social/app/common/components/OrderAndAddRow.tsx rename to development/social/app/components/common/components/OrderAndAddRow.tsx diff --git a/src/apps/social/app/common/components/OrderAndSearchRow.tsx b/development/social/app/components/common/components/OrderAndSearchRow.tsx similarity index 100% rename from src/apps/social/app/common/components/OrderAndSearchRow.tsx rename to development/social/app/components/common/components/OrderAndSearchRow.tsx diff --git a/src/apps/social/app/common/components/OrderRow.tsx b/development/social/app/components/common/components/OrderRow.tsx similarity index 100% rename from src/apps/social/app/common/components/OrderRow.tsx rename to development/social/app/components/common/components/OrderRow.tsx diff --git a/src/apps/social/app/common/components/PullToRefresh.tsx b/development/social/app/components/common/components/PullToRefresh.tsx similarity index 100% rename from src/apps/social/app/common/components/PullToRefresh.tsx rename to development/social/app/components/common/components/PullToRefresh.tsx diff --git a/src/apps/social/app/common/components/Quantifier.tsx b/development/social/app/components/common/components/Quantifier.tsx similarity index 100% rename from src/apps/social/app/common/components/Quantifier.tsx rename to development/social/app/components/common/components/Quantifier.tsx diff --git a/src/apps/social/app/common/components/RemoveOption.tsx b/development/social/app/components/common/components/RemoveOption.tsx similarity index 100% rename from src/apps/social/app/common/components/RemoveOption.tsx rename to development/social/app/components/common/components/RemoveOption.tsx diff --git a/src/apps/social/app/common/components/ResultContainer.tsx b/development/social/app/components/common/components/ResultContainer.tsx similarity index 100% rename from src/apps/social/app/common/components/ResultContainer.tsx rename to development/social/app/components/common/components/ResultContainer.tsx diff --git a/src/apps/social/app/common/components/ScrollLoader.tsx b/development/social/app/components/common/components/ScrollLoader.tsx similarity index 100% rename from src/apps/social/app/common/components/ScrollLoader.tsx rename to development/social/app/components/common/components/ScrollLoader.tsx diff --git a/src/apps/social/app/common/components/Tabs.tsx b/development/social/app/components/common/components/Tabs.tsx similarity index 100% rename from src/apps/social/app/common/components/Tabs.tsx rename to development/social/app/components/common/components/Tabs.tsx diff --git a/src/apps/social/app/common/components/TenantContainer.tsx b/development/social/app/components/common/components/TenantContainer.tsx similarity index 100% rename from src/apps/social/app/common/components/TenantContainer.tsx rename to development/social/app/components/common/components/TenantContainer.tsx diff --git a/src/apps/social/app/common/components/TimeElapsed.tsx b/development/social/app/components/common/components/TimeElapsed.tsx similarity index 100% rename from src/apps/social/app/common/components/TimeElapsed.tsx rename to development/social/app/components/common/components/TimeElapsed.tsx diff --git a/src/apps/social/app/common/components/elements/LoadingIndicator.tsx b/development/social/app/components/common/components/elements/LoadingIndicator.tsx similarity index 100% rename from src/apps/social/app/common/components/elements/LoadingIndicator.tsx rename to development/social/app/components/common/components/elements/LoadingIndicator.tsx diff --git a/src/apps/social/app/common/components/elements/NoResult.tsx b/development/social/app/components/common/components/elements/NoResult.tsx similarity index 100% rename from src/apps/social/app/common/components/elements/NoResult.tsx rename to development/social/app/components/common/components/elements/NoResult.tsx diff --git a/src/apps/social/app/common/components/elements/OrderSelection.tsx b/development/social/app/components/common/components/elements/OrderSelection.tsx similarity index 100% rename from src/apps/social/app/common/components/elements/OrderSelection.tsx rename to development/social/app/components/common/components/elements/OrderSelection.tsx diff --git a/src/apps/social/app/common/components/hooks/useLoadOnScroll.ts b/development/social/app/components/common/components/hooks/useLoadOnScroll.ts similarity index 100% rename from src/apps/social/app/common/components/hooks/useLoadOnScroll.ts rename to development/social/app/components/common/components/hooks/useLoadOnScroll.ts diff --git a/src/apps/social/app/common/components/hooks/useRefreshOnPull.ts b/development/social/app/components/common/components/hooks/useRefreshOnPull.ts similarity index 100% rename from src/apps/social/app/common/components/hooks/useRefreshOnPull.ts rename to development/social/app/components/common/components/hooks/useRefreshOnPull.ts diff --git a/src/apps/social/app/common/components/hooks/useScrollContainer.ts b/development/social/app/components/common/components/hooks/useScrollContainer.ts similarity index 100% rename from src/apps/social/app/common/components/hooks/useScrollContainer.ts rename to development/social/app/components/common/components/hooks/useScrollContainer.ts diff --git a/src/apps/social/app/common/components/hooks/useTenant.ts b/development/social/app/components/common/components/hooks/useTenant.ts similarity index 100% rename from src/apps/social/app/common/components/hooks/useTenant.ts rename to development/social/app/components/common/components/hooks/useTenant.ts diff --git a/src/apps/social/app/common/index.ts b/development/social/app/components/common/index.ts similarity index 100% rename from src/apps/social/app/common/index.ts rename to development/social/app/components/common/index.ts diff --git a/src/apps/social/app/creator/components/ConciseIdentity.tsx b/development/social/app/components/creator/components/ConciseIdentity.tsx similarity index 100% rename from src/apps/social/app/creator/components/ConciseIdentity.tsx rename to development/social/app/components/creator/components/ConciseIdentity.tsx diff --git a/src/apps/social/app/creator/components/Counters.tsx b/development/social/app/components/creator/components/Counters.tsx similarity index 100% rename from src/apps/social/app/creator/components/Counters.tsx rename to development/social/app/components/creator/components/Counters.tsx diff --git a/src/apps/social/app/creator/components/FullIdentity.tsx b/development/social/app/components/creator/components/FullIdentity.tsx similarity index 100% rename from src/apps/social/app/creator/components/FullIdentity.tsx rename to development/social/app/components/creator/components/FullIdentity.tsx diff --git a/src/apps/social/app/creator/components/Profile.tsx b/development/social/app/components/creator/components/Profile.tsx similarity index 100% rename from src/apps/social/app/creator/components/Profile.tsx rename to development/social/app/components/creator/components/Profile.tsx diff --git a/src/apps/social/app/creator/components/TimeElapsed.tsx b/development/social/app/components/creator/components/TimeElapsed.tsx similarity index 100% rename from src/apps/social/app/creator/components/TimeElapsed.tsx rename to development/social/app/components/creator/components/TimeElapsed.tsx diff --git a/src/apps/social/app/creator/components/elements/Avatar.tsx b/development/social/app/components/creator/components/elements/Avatar.tsx similarity index 100% rename from src/apps/social/app/creator/components/elements/Avatar.tsx rename to development/social/app/components/creator/components/elements/Avatar.tsx diff --git a/src/apps/social/app/creator/components/elements/AvatarRow.tsx b/development/social/app/components/creator/components/elements/AvatarRow.tsx similarity index 100% rename from src/apps/social/app/creator/components/elements/AvatarRow.tsx rename to development/social/app/components/creator/components/elements/AvatarRow.tsx diff --git a/src/apps/social/app/creator/components/elements/CountersColumn.tsx b/development/social/app/components/creator/components/elements/CountersColumn.tsx similarity index 100% rename from src/apps/social/app/creator/components/elements/CountersColumn.tsx rename to development/social/app/components/creator/components/elements/CountersColumn.tsx diff --git a/src/apps/social/app/creator/components/elements/CountersRow.tsx b/development/social/app/components/creator/components/elements/CountersRow.tsx similarity index 90% rename from src/apps/social/app/creator/components/elements/CountersRow.tsx rename to development/social/app/components/creator/components/elements/CountersRow.tsx index 9f4eafc3..f364adcb 100644 --- a/src/apps/social/app/creator/components/elements/CountersRow.tsx +++ b/development/social/app/components/creator/components/elements/CountersRow.tsx @@ -1,7 +1,7 @@ import { Row } from '@maskingtech/designsystem'; -import { Quantifier } from '~/app/common'; +import { Quantifier } from '~/components/common'; type Props = { readonly postCount: number; diff --git a/src/apps/social/app/creator/components/elements/JoinedColumn.tsx b/development/social/app/components/creator/components/elements/JoinedColumn.tsx similarity index 100% rename from src/apps/social/app/creator/components/elements/JoinedColumn.tsx rename to development/social/app/components/creator/components/elements/JoinedColumn.tsx diff --git a/src/apps/social/app/creator/components/elements/NamesColumn.tsx b/development/social/app/components/creator/components/elements/NamesColumn.tsx similarity index 100% rename from src/apps/social/app/creator/components/elements/NamesColumn.tsx rename to development/social/app/components/creator/components/elements/NamesColumn.tsx diff --git a/src/apps/social/app/creator/components/elements/NamesRow.tsx b/development/social/app/components/creator/components/elements/NamesRow.tsx similarity index 100% rename from src/apps/social/app/creator/components/elements/NamesRow.tsx rename to development/social/app/components/creator/components/elements/NamesRow.tsx diff --git a/src/apps/social/app/creator/components/elements/TimeElapsedColumn.tsx b/development/social/app/components/creator/components/elements/TimeElapsedColumn.tsx similarity index 90% rename from src/apps/social/app/creator/components/elements/TimeElapsedColumn.tsx rename to development/social/app/components/creator/components/elements/TimeElapsedColumn.tsx index 4963982b..e3c9cb41 100644 --- a/src/apps/social/app/creator/components/elements/TimeElapsedColumn.tsx +++ b/development/social/app/components/creator/components/elements/TimeElapsedColumn.tsx @@ -1,7 +1,7 @@ import { ClickArea, Column, Text } from '@maskingtech/designsystem'; -import { TimeElapsed } from '~/app/common'; +import { TimeElapsed } from '~/components/common'; type Props = { readonly fullName: string; diff --git a/src/apps/social/app/creator/index.ts b/development/social/app/components/creator/index.ts similarity index 100% rename from src/apps/social/app/creator/index.ts rename to development/social/app/components/creator/index.ts diff --git a/src/apps/social/app/editor/Editor.ts b/development/social/app/components/editor/Editor.ts similarity index 100% rename from src/apps/social/app/editor/Editor.ts rename to development/social/app/components/editor/Editor.ts diff --git a/src/apps/social/app/editor/Renderer.ts b/development/social/app/components/editor/Renderer.ts similarity index 100% rename from src/apps/social/app/editor/Renderer.ts rename to development/social/app/components/editor/Renderer.ts diff --git a/src/apps/social/app/editor/Workbench.ts b/development/social/app/components/editor/Workbench.ts similarity index 100% rename from src/apps/social/app/editor/Workbench.ts rename to development/social/app/components/editor/Workbench.ts diff --git a/src/apps/social/app/editor/assets/add-speech-bubble.png b/development/social/app/components/editor/assets/add-speech-bubble.png similarity index 100% rename from src/apps/social/app/editor/assets/add-speech-bubble.png rename to development/social/app/components/editor/assets/add-speech-bubble.png diff --git a/src/apps/social/app/editor/assets/delete.png b/development/social/app/components/editor/assets/delete.png similarity index 100% rename from src/apps/social/app/editor/assets/delete.png rename to development/social/app/components/editor/assets/delete.png diff --git a/src/apps/social/app/editor/assets/edit.png b/development/social/app/components/editor/assets/edit.png similarity index 100% rename from src/apps/social/app/editor/assets/edit.png rename to development/social/app/components/editor/assets/edit.png diff --git a/src/apps/social/app/editor/assets/instructions.png b/development/social/app/components/editor/assets/instructions.png similarity index 100% rename from src/apps/social/app/editor/assets/instructions.png rename to development/social/app/components/editor/assets/instructions.png diff --git a/src/apps/social/app/editor/assets/move.png b/development/social/app/components/editor/assets/move.png similarity index 100% rename from src/apps/social/app/editor/assets/move.png rename to development/social/app/components/editor/assets/move.png diff --git a/src/apps/social/app/editor/assets/resize.png b/development/social/app/components/editor/assets/resize.png similarity index 100% rename from src/apps/social/app/editor/assets/resize.png rename to development/social/app/components/editor/assets/resize.png diff --git a/src/apps/social/app/editor/assets/select-image.png b/development/social/app/components/editor/assets/select-image.png similarity index 100% rename from src/apps/social/app/editor/assets/select-image.png rename to development/social/app/components/editor/assets/select-image.png diff --git a/src/apps/social/app/editor/assets/take-picture.png b/development/social/app/components/editor/assets/take-picture.png similarity index 100% rename from src/apps/social/app/editor/assets/take-picture.png rename to development/social/app/components/editor/assets/take-picture.png diff --git a/src/apps/social/app/editor/definitions/Styling.ts b/development/social/app/components/editor/definitions/Styling.ts similarity index 100% rename from src/apps/social/app/editor/definitions/Styling.ts rename to development/social/app/components/editor/definitions/Styling.ts diff --git a/src/apps/social/app/editor/elements/Element.ts b/development/social/app/components/editor/elements/Element.ts similarity index 100% rename from src/apps/social/app/editor/elements/Element.ts rename to development/social/app/components/editor/elements/Element.ts diff --git a/src/apps/social/app/editor/elements/Group.ts b/development/social/app/components/editor/elements/Group.ts similarity index 100% rename from src/apps/social/app/editor/elements/Group.ts rename to development/social/app/components/editor/elements/Group.ts diff --git a/src/apps/social/app/editor/elements/ImageElement.ts b/development/social/app/components/editor/elements/ImageElement.ts similarity index 100% rename from src/apps/social/app/editor/elements/ImageElement.ts rename to development/social/app/components/editor/elements/ImageElement.ts diff --git a/src/apps/social/app/editor/index.ts b/development/social/app/components/editor/index.ts similarity index 100% rename from src/apps/social/app/editor/index.ts rename to development/social/app/components/editor/index.ts diff --git a/src/apps/social/app/editor/model/Background.ts b/development/social/app/components/editor/model/Background.ts similarity index 100% rename from src/apps/social/app/editor/model/Background.ts rename to development/social/app/components/editor/model/Background.ts diff --git a/src/apps/social/app/editor/model/Bubble.ts b/development/social/app/components/editor/model/Bubble.ts similarity index 100% rename from src/apps/social/app/editor/model/Bubble.ts rename to development/social/app/components/editor/model/Bubble.ts diff --git a/src/apps/social/app/editor/model/Model.ts b/development/social/app/components/editor/model/Model.ts similarity index 100% rename from src/apps/social/app/editor/model/Model.ts rename to development/social/app/components/editor/model/Model.ts diff --git a/src/apps/social/app/editor/model/SpeechBubble.ts b/development/social/app/components/editor/model/SpeechBubble.ts similarity index 100% rename from src/apps/social/app/editor/model/SpeechBubble.ts rename to development/social/app/components/editor/model/SpeechBubble.ts diff --git a/src/apps/social/app/editor/toolkit/BubbleSelection.ts b/development/social/app/components/editor/toolkit/BubbleSelection.ts similarity index 100% rename from src/apps/social/app/editor/toolkit/BubbleSelection.ts rename to development/social/app/components/editor/toolkit/BubbleSelection.ts diff --git a/src/apps/social/app/editor/toolkit/Button.ts b/development/social/app/components/editor/toolkit/Button.ts similarity index 100% rename from src/apps/social/app/editor/toolkit/Button.ts rename to development/social/app/components/editor/toolkit/Button.ts diff --git a/src/apps/social/app/editor/toolkit/MainActions.ts b/development/social/app/components/editor/toolkit/MainActions.ts similarity index 100% rename from src/apps/social/app/editor/toolkit/MainActions.ts rename to development/social/app/components/editor/toolkit/MainActions.ts diff --git a/src/apps/social/app/editor/utils/Camera.ts b/development/social/app/components/editor/utils/Camera.ts similarity index 100% rename from src/apps/social/app/editor/utils/Camera.ts rename to development/social/app/components/editor/utils/Camera.ts diff --git a/src/apps/social/app/editor/utils/CameraDialog.ts b/development/social/app/components/editor/utils/CameraDialog.ts similarity index 100% rename from src/apps/social/app/editor/utils/CameraDialog.ts rename to development/social/app/components/editor/utils/CameraDialog.ts diff --git a/src/apps/social/app/editor/utils/FileDialog.ts b/development/social/app/components/editor/utils/FileDialog.ts similarity index 100% rename from src/apps/social/app/editor/utils/FileDialog.ts rename to development/social/app/components/editor/utils/FileDialog.ts diff --git a/src/apps/social/app/editor/utils/Geometry.ts b/development/social/app/components/editor/utils/Geometry.ts similarity index 100% rename from src/apps/social/app/editor/utils/Geometry.ts rename to development/social/app/components/editor/utils/Geometry.ts diff --git a/src/apps/social/app/editor/utils/InputDialog.ts b/development/social/app/components/editor/utils/InputDialog.ts similarity index 100% rename from src/apps/social/app/editor/utils/InputDialog.ts rename to development/social/app/components/editor/utils/InputDialog.ts diff --git a/src/apps/social/app/editor/utils/InputManager.ts b/development/social/app/components/editor/utils/InputManager.ts similarity index 100% rename from src/apps/social/app/editor/utils/InputManager.ts rename to development/social/app/components/editor/utils/InputManager.ts diff --git a/src/apps/social/app/editor/utils/TextProcessor.ts b/development/social/app/components/editor/utils/TextProcessor.ts similarity index 100% rename from src/apps/social/app/editor/utils/TextProcessor.ts rename to development/social/app/components/editor/utils/TextProcessor.ts diff --git a/src/apps/social/app/explore/Creators.tsx b/development/social/app/components/explore/Creators.tsx similarity index 56% rename from src/apps/social/app/explore/Creators.tsx rename to development/social/app/components/explore/Creators.tsx index 121bfa40..183aa422 100644 --- a/src/apps/social/app/explore/Creators.tsx +++ b/development/social/app/components/explore/Creators.tsx @@ -1,5 +1,5 @@ -import { Explore } from '~/app/relation'; +import { Explore } from '~/components/relation'; export default function Feature() { diff --git a/src/apps/social/app/explore/Main.tsx b/development/social/app/components/explore/Main.tsx similarity index 85% rename from src/apps/social/app/explore/Main.tsx rename to development/social/app/components/explore/Main.tsx index 04f6bf88..6a58bb9e 100644 --- a/src/apps/social/app/explore/Main.tsx +++ b/development/social/app/components/explore/Main.tsx @@ -1,7 +1,7 @@ import { Outlet } from 'react-router-dom'; -import { Tabs } from '~/app/common'; +import { Tabs } from '~/components/common'; const tabItems = [ { title: 'Comics', route: 'comics' }, diff --git a/src/apps/social/app/explore/Posts.tsx b/development/social/app/components/explore/Posts.tsx similarity index 58% rename from src/apps/social/app/explore/Posts.tsx rename to development/social/app/components/explore/Posts.tsx index 6ae248b6..e3af0d5c 100644 --- a/src/apps/social/app/explore/Posts.tsx +++ b/development/social/app/components/explore/Posts.tsx @@ -1,5 +1,5 @@ -import { Explore } from '~/app/post'; +import { Explore } from '~/components/post'; export default function Feature() { diff --git a/src/apps/social/app/explore/Routes.tsx b/development/social/app/components/explore/Routes.tsx similarity index 89% rename from src/apps/social/app/explore/Routes.tsx rename to development/social/app/components/explore/Routes.tsx index 0d78ad96..cbad8a1c 100644 --- a/src/apps/social/app/explore/Routes.tsx +++ b/development/social/app/components/explore/Routes.tsx @@ -1,7 +1,7 @@ import { Route, Navigate } from 'react-router-dom'; -import { NotFound } from '~/app/common'; +import { NotFound } from '~/components/common'; import Main from './Main'; import Posts from './Posts'; diff --git a/src/apps/social/app/explore/index.ts b/development/social/app/components/explore/index.ts similarity index 100% rename from src/apps/social/app/explore/index.ts rename to development/social/app/components/explore/index.ts diff --git a/src/apps/social/app/main.css b/development/social/app/components/main.css similarity index 100% rename from src/apps/social/app/main.css rename to development/social/app/components/main.css diff --git a/src/apps/social/app/main.tsx b/development/social/app/components/main.tsx similarity index 100% rename from src/apps/social/app/main.tsx rename to development/social/app/components/main.tsx diff --git a/src/apps/social/app/notification/Main.tsx b/development/social/app/components/notification/Main.tsx similarity index 91% rename from src/apps/social/app/notification/Main.tsx rename to development/social/app/components/notification/Main.tsx index e24d69ff..a7c895ee 100644 --- a/src/apps/social/app/notification/Main.tsx +++ b/development/social/app/components/notification/Main.tsx @@ -3,9 +3,9 @@ import { Column } from '@maskingtech/designsystem'; import type { AggregatedData as AggregatedNotificationData } from '^/domain/notification/aggregate'; -import { PullToRefresh, ResultContainer, ScrollLoader } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; -import { useEstablish } from '~/app/relation'; +import { PullToRefresh, ResultContainer, ScrollLoader } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; +import { useEstablish } from '~/components/relation'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/notification/Routes.tsx b/development/social/app/components/notification/Routes.tsx similarity index 78% rename from src/apps/social/app/notification/Routes.tsx rename to development/social/app/components/notification/Routes.tsx index 3d08e651..88e65259 100644 --- a/src/apps/social/app/notification/Routes.tsx +++ b/development/social/app/components/notification/Routes.tsx @@ -1,7 +1,7 @@ import { Route } from 'react-router-dom'; -import { NotFound } from '~/app/common'; +import { NotFound } from '~/components/common'; import Main from './Main'; diff --git a/src/apps/social/app/notification/components/Panel.tsx b/development/social/app/components/notification/components/Panel.tsx similarity index 97% rename from src/apps/social/app/notification/components/Panel.tsx rename to development/social/app/components/notification/components/Panel.tsx index 89b3efe1..4ef8ae0d 100644 --- a/src/apps/social/app/notification/components/Panel.tsx +++ b/development/social/app/components/notification/components/Panel.tsx @@ -5,7 +5,7 @@ import { Types } from '^/domain/notification'; import type { AggregatedData as AggregatedNotificationData } from '^/domain/notification/aggregate'; import type { AggregatedData as AggregatedRelationData } from '^/domain/relation/aggregate'; -import { TimeElapsed } from '~/app/relation'; +import { TimeElapsed } from '~/components/relation'; import RatedPost from './elements/RatedPost'; import ReactedToPost from './elements/ReactedToPost'; diff --git a/src/apps/social/app/notification/components/PanelList.tsx b/development/social/app/components/notification/components/PanelList.tsx similarity index 100% rename from src/apps/social/app/notification/components/PanelList.tsx rename to development/social/app/components/notification/components/PanelList.tsx diff --git a/src/apps/social/app/notification/components/elements/Comic.tsx b/development/social/app/components/notification/components/elements/Comic.tsx similarity index 100% rename from src/apps/social/app/notification/components/elements/Comic.tsx rename to development/social/app/components/notification/components/elements/Comic.tsx diff --git a/src/apps/social/app/notification/components/elements/Comment.tsx b/development/social/app/components/notification/components/elements/Comment.tsx similarity index 100% rename from src/apps/social/app/notification/components/elements/Comment.tsx rename to development/social/app/components/notification/components/elements/Comment.tsx diff --git a/src/apps/social/app/notification/components/elements/RatedPost.tsx b/development/social/app/components/notification/components/elements/RatedPost.tsx similarity index 100% rename from src/apps/social/app/notification/components/elements/RatedPost.tsx rename to development/social/app/components/notification/components/elements/RatedPost.tsx diff --git a/src/apps/social/app/notification/components/elements/ReactedToPost.tsx b/development/social/app/components/notification/components/elements/ReactedToPost.tsx similarity index 100% rename from src/apps/social/app/notification/components/elements/ReactedToPost.tsx rename to development/social/app/components/notification/components/elements/ReactedToPost.tsx diff --git a/src/apps/social/app/notification/components/elements/StartedFollowing.tsx b/development/social/app/components/notification/components/elements/StartedFollowing.tsx similarity index 100% rename from src/apps/social/app/notification/components/elements/StartedFollowing.tsx rename to development/social/app/components/notification/components/elements/StartedFollowing.tsx diff --git a/src/apps/social/app/notification/hooks/useNotifications.ts b/development/social/app/components/notification/hooks/useNotifications.ts similarity index 100% rename from src/apps/social/app/notification/hooks/useNotifications.ts rename to development/social/app/components/notification/hooks/useNotifications.ts diff --git a/src/apps/social/app/notification/hooks/useViewNotificationDetails.ts b/development/social/app/components/notification/hooks/useViewNotificationDetails.ts similarity index 100% rename from src/apps/social/app/notification/hooks/useViewNotificationDetails.ts rename to development/social/app/components/notification/hooks/useViewNotificationDetails.ts diff --git a/src/apps/social/app/notification/index.ts b/development/social/app/components/notification/index.ts similarity index 100% rename from src/apps/social/app/notification/index.ts rename to development/social/app/components/notification/index.ts diff --git a/src/apps/social/app/post/Create.tsx b/development/social/app/components/post/Create.tsx similarity index 80% rename from src/apps/social/app/post/Create.tsx rename to development/social/app/components/post/Create.tsx index b27a425c..e6653096 100644 --- a/src/apps/social/app/post/Create.tsx +++ b/development/social/app/components/post/Create.tsx @@ -1,5 +1,5 @@ -import { Editor } from '~/app/comic'; +import { Editor } from '~/components/comic'; import useAddComicPost from './hooks/useAddComicPost'; diff --git a/src/apps/social/app/post/Creator.tsx b/development/social/app/components/post/Creator.tsx similarity index 94% rename from src/apps/social/app/post/Creator.tsx rename to development/social/app/components/post/Creator.tsx index 7ffcb11e..5402c774 100644 --- a/src/apps/social/app/post/Creator.tsx +++ b/development/social/app/components/post/Creator.tsx @@ -1,8 +1,8 @@ import { Column } from '@maskingtech/designsystem'; -import { PullToRefresh, ResultContainer, ScrollLoader } from '~/app/common'; -import { useToggle } from '~/app/rating'; +import { PullToRefresh, ResultContainer, ScrollLoader } from '~/components/common'; +import { useToggle } from '~/components/rating'; import useCreatorPosts from './hooks/useCreatorPosts'; import useViewPostDetails from './hooks/useViewPostDetails'; diff --git a/src/apps/social/app/post/Details.tsx b/development/social/app/components/post/Details.tsx similarity index 88% rename from src/apps/social/app/post/Details.tsx rename to development/social/app/components/post/Details.tsx index 4b1f3749..5a04af7d 100644 --- a/src/apps/social/app/post/Details.tsx +++ b/development/social/app/components/post/Details.tsx @@ -5,10 +5,10 @@ import { Column, Ruler } from '@maskingtech/designsystem'; import type { AggregatedData as AggregatedPostData } from '^/domain/post/aggregate'; -import { BackRow, LoadingAndResultContainer } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; -import { useToggle } from '~/app/rating'; -import { useEstablish } from '~/app/relation'; +import { BackRow, LoadingAndResultContainer } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; +import { useToggle } from '~/components/rating'; +import { useEstablish } from '~/components/relation'; import DetailsPanel from './components/DetailsPanel'; diff --git a/src/apps/social/app/post/Explore.tsx b/development/social/app/components/post/Explore.tsx similarity index 89% rename from src/apps/social/app/post/Explore.tsx rename to development/social/app/components/post/Explore.tsx index 8be8c3db..72736cc2 100644 --- a/src/apps/social/app/post/Explore.tsx +++ b/development/social/app/components/post/Explore.tsx @@ -1,11 +1,11 @@ import { Column } from '@maskingtech/designsystem'; -import { PullToRefresh, ResultContainer, ScrollLoader, OrderRow } from '~/app/common'; +import { PullToRefresh, ResultContainer, ScrollLoader, OrderRow } from '~/components/common'; -import { useViewProfile } from '~/app/profile'; -import { useToggle } from '~/app/rating'; -import { useEstablish } from '~/app/relation'; +import { useViewProfile } from '~/components/profile'; +import { useToggle } from '~/components/rating'; +import { useEstablish } from '~/components/relation'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/post/Following.tsx b/development/social/app/components/post/Following.tsx similarity index 88% rename from src/apps/social/app/post/Following.tsx rename to development/social/app/components/post/Following.tsx index bc299632..d52e3d00 100644 --- a/src/apps/social/app/post/Following.tsx +++ b/development/social/app/components/post/Following.tsx @@ -1,10 +1,10 @@ import { Column } from '@maskingtech/designsystem'; -import { PullToRefresh, ResultContainer, ScrollLoader } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; -import { useToggle } from '~/app/rating'; -import { useEstablish } from '~/app/relation'; +import { PullToRefresh, ResultContainer, ScrollLoader } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; +import { useToggle } from '~/components/rating'; +import { useEstablish } from '~/components/relation'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/post/Highlight.tsx b/development/social/app/components/post/Highlight.tsx similarity index 88% rename from src/apps/social/app/post/Highlight.tsx rename to development/social/app/components/post/Highlight.tsx index a42c945c..f635aa4f 100644 --- a/src/apps/social/app/post/Highlight.tsx +++ b/development/social/app/components/post/Highlight.tsx @@ -5,11 +5,11 @@ import { Column, Ruler } from '@maskingtech/designsystem'; import type { AggregatedData as AggregatedPostData } from '^/domain/post/aggregate'; -import { LoadingAndResultContainer } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; -import { useToggle } from '~/app/rating'; -import { SingleReactionRow } from '~/app/reaction'; -import { useEstablish } from '~/app/relation'; +import { LoadingAndResultContainer } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; +import { useToggle } from '~/components/rating'; +import { SingleReactionRow } from '~/components/reaction'; +import { useEstablish } from '~/components/relation'; import DetailsPanel from './components/DetailsPanel'; import LargePanel from './components/LargePanel'; diff --git a/src/apps/social/app/post/Main.tsx b/development/social/app/components/post/Main.tsx similarity index 100% rename from src/apps/social/app/post/Main.tsx rename to development/social/app/components/post/Main.tsx diff --git a/src/apps/social/app/post/Reactions.tsx b/development/social/app/components/post/Reactions.tsx similarity index 90% rename from src/apps/social/app/post/Reactions.tsx rename to development/social/app/components/post/Reactions.tsx index 8da2d5b5..2594a9cf 100644 --- a/src/apps/social/app/post/Reactions.tsx +++ b/development/social/app/components/post/Reactions.tsx @@ -3,11 +3,11 @@ import { Column } from '@maskingtech/designsystem'; import type { AggregatedData as AggregatedPostData } from '^/domain/post/aggregate'; -import { PullToRefresh, ResultContainer, ScrollLoader, OrderAndAddRow } from '~/app/common'; +import { PullToRefresh, ResultContainer, ScrollLoader, OrderAndAddRow } from '~/components/common'; -import { useViewProfile } from '~/app/profile'; -import { useToggle } from '~/app/rating'; -import { useEstablish } from '~/app/relation'; +import { useViewProfile } from '~/components/profile'; +import { useToggle } from '~/components/rating'; +import { useEstablish } from '~/components/relation'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/post/Recommended.tsx b/development/social/app/components/post/Recommended.tsx similarity index 88% rename from src/apps/social/app/post/Recommended.tsx rename to development/social/app/components/post/Recommended.tsx index 68f9b502..fc192738 100644 --- a/src/apps/social/app/post/Recommended.tsx +++ b/development/social/app/components/post/Recommended.tsx @@ -1,10 +1,10 @@ import { Column } from '@maskingtech/designsystem'; -import { PullToRefresh, ResultContainer, ScrollLoader } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; -import { useToggle } from '~/app/rating'; -import { useEstablish } from '~/app/relation'; +import { PullToRefresh, ResultContainer, ScrollLoader } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; +import { useToggle } from '~/components/rating'; +import { useEstablish } from '~/components/relation'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/post/Remove.tsx b/development/social/app/components/post/Remove.tsx similarity index 88% rename from src/apps/social/app/post/Remove.tsx rename to development/social/app/components/post/Remove.tsx index 89046146..451a863d 100644 --- a/src/apps/social/app/post/Remove.tsx +++ b/development/social/app/components/post/Remove.tsx @@ -1,7 +1,7 @@ import { useNavigate, useParams } from 'react-router-dom'; -import { ConfirmationPanel, Modal } from '~/app/common'; +import { ConfirmationPanel, Modal } from '~/components/common'; import useRemove from './hooks/useRemovePost'; diff --git a/src/apps/social/app/post/Routes.tsx b/development/social/app/components/post/Routes.tsx similarity index 92% rename from src/apps/social/app/post/Routes.tsx rename to development/social/app/components/post/Routes.tsx index 440bc8c4..17101d4c 100644 --- a/src/apps/social/app/post/Routes.tsx +++ b/development/social/app/components/post/Routes.tsx @@ -1,7 +1,7 @@ import { Route } from 'react-router-dom'; -import reactionRoutes from '~/app/reaction'; +import reactionRoutes from '~/components/reaction'; import Main from './Main'; import Create from './Create'; diff --git a/src/apps/social/app/post/components/DetailsPanel.tsx b/development/social/app/components/post/components/DetailsPanel.tsx similarity index 90% rename from src/apps/social/app/post/components/DetailsPanel.tsx rename to development/social/app/components/post/components/DetailsPanel.tsx index 3a9c01ee..a9a76d0f 100644 --- a/src/apps/social/app/post/components/DetailsPanel.tsx +++ b/development/social/app/components/post/components/DetailsPanel.tsx @@ -4,10 +4,10 @@ import type { AggregatedData as AggregatedRelationData } from '^/domain/relation import { Column, Panel, Row } from '@maskingtech/designsystem'; -import { RemoveOption } from '~/app/common'; -import { Image as Comic } from '~/app/comic'; -import { Comment } from '~/app/comment'; -import { TimeElapsed } from '~/app/relation'; +import { RemoveOption } from '~/components/common'; +import { Image as Comic } from '~/components/comic'; +import { Comment } from '~/components/comment'; +import { TimeElapsed } from '~/components/relation'; import EngagementRow from './elements/EngagementRow'; diff --git a/src/apps/social/app/post/components/LargePanel.tsx b/development/social/app/components/post/components/LargePanel.tsx similarity index 91% rename from src/apps/social/app/post/components/LargePanel.tsx rename to development/social/app/components/post/components/LargePanel.tsx index 10a49878..f12cb719 100644 --- a/src/apps/social/app/post/components/LargePanel.tsx +++ b/development/social/app/components/post/components/LargePanel.tsx @@ -4,9 +4,9 @@ import type { AggregatedData as AggregatedRelationData } from '^/domain/relation import { ClickArea, Column, Panel } from '@maskingtech/designsystem'; -import { Image as Comic } from '~/app/comic'; -import { Comment } from '~/app/comment'; -import { TimeElapsed } from '~/app/relation'; +import { Image as Comic } from '~/components/comic'; +import { Comment } from '~/components/comment'; +import { TimeElapsed } from '~/components/relation'; import EngagementsRow from './elements/EngagementRow'; diff --git a/src/apps/social/app/post/components/PanelGrid.tsx b/development/social/app/components/post/components/PanelGrid.tsx similarity index 100% rename from src/apps/social/app/post/components/PanelGrid.tsx rename to development/social/app/components/post/components/PanelGrid.tsx diff --git a/src/apps/social/app/post/components/PanelList.tsx b/development/social/app/components/post/components/PanelList.tsx similarity index 100% rename from src/apps/social/app/post/components/PanelList.tsx rename to development/social/app/components/post/components/PanelList.tsx diff --git a/src/apps/social/app/post/components/SmallPanel.tsx b/development/social/app/components/post/components/SmallPanel.tsx similarity index 89% rename from src/apps/social/app/post/components/SmallPanel.tsx rename to development/social/app/components/post/components/SmallPanel.tsx index 0db750e9..86cdb9cb 100644 --- a/src/apps/social/app/post/components/SmallPanel.tsx +++ b/development/social/app/components/post/components/SmallPanel.tsx @@ -3,9 +3,9 @@ import type { AggregatedData as AggregatedPostData } from '^/domain/post/aggrega import { ClickArea, Column, Panel, Row } from '@maskingtech/designsystem'; -import { TimeElapsed } from '~/app/common'; -import { Image as Comic } from '~/app/comic'; -import { Comment } from '~/app/comment'; +import { TimeElapsed } from '~/components/common'; +import { Image as Comic } from '~/components/comic'; +import { Comment } from '~/components/comment'; import EngagementsRow from './elements/EngagementRow'; diff --git a/src/apps/social/app/post/components/elements/EngagementRow.tsx b/development/social/app/components/post/components/elements/EngagementRow.tsx similarity index 81% rename from src/apps/social/app/post/components/elements/EngagementRow.tsx rename to development/social/app/components/post/components/elements/EngagementRow.tsx index 4ce50827..ae45ce22 100644 --- a/src/apps/social/app/post/components/elements/EngagementRow.tsx +++ b/development/social/app/components/post/components/elements/EngagementRow.tsx @@ -1,8 +1,8 @@ import { Row } from '@maskingtech/designsystem'; -import { Engagement as RatingEngagement } from '~/app/rating'; -import { Engagement as ReactionEngagement } from '~/app/reaction'; +import { Engagement as RatingEngagement } from '~/components/rating'; +import { Engagement as ReactionEngagement } from '~/components/reaction'; type Props = { readonly isRated: boolean; diff --git a/src/apps/social/app/post/hooks/useAddComicPost.ts b/development/social/app/components/post/hooks/useAddComicPost.ts similarity index 90% rename from src/apps/social/app/post/hooks/useAddComicPost.ts rename to development/social/app/components/post/hooks/useAddComicPost.ts index ac4a21b9..054f4fb6 100644 --- a/src/apps/social/app/post/hooks/useAddComicPost.ts +++ b/development/social/app/components/post/hooks/useAddComicPost.ts @@ -6,7 +6,7 @@ import { requester } from '^/domain/authentication'; import createPostWithComic from '^/domain/post/createWithComic'; import { tenant } from '^/domain/tenant'; -import { useAppContext } from '~/app/application'; +import { useAppContext } from '~/components/application'; export default function useAddComicPost() { diff --git a/src/apps/social/app/post/hooks/useConfirmPostRemoval.ts b/development/social/app/components/post/hooks/useConfirmPostRemoval.ts similarity index 100% rename from src/apps/social/app/post/hooks/useConfirmPostRemoval.ts rename to development/social/app/components/post/hooks/useConfirmPostRemoval.ts diff --git a/src/apps/social/app/post/hooks/useCreatorPosts.ts b/development/social/app/components/post/hooks/useCreatorPosts.ts similarity index 100% rename from src/apps/social/app/post/hooks/useCreatorPosts.ts rename to development/social/app/components/post/hooks/useCreatorPosts.ts diff --git a/src/apps/social/app/post/hooks/useExplorePosts.ts b/development/social/app/components/post/hooks/useExplorePosts.ts similarity index 100% rename from src/apps/social/app/post/hooks/useExplorePosts.ts rename to development/social/app/components/post/hooks/useExplorePosts.ts diff --git a/src/apps/social/app/post/hooks/useGoToParentPost.ts b/development/social/app/components/post/hooks/useGoToParentPost.ts similarity index 100% rename from src/apps/social/app/post/hooks/useGoToParentPost.ts rename to development/social/app/components/post/hooks/useGoToParentPost.ts diff --git a/src/apps/social/app/post/hooks/useHighlight.ts b/development/social/app/components/post/hooks/useHighlight.ts similarity index 100% rename from src/apps/social/app/post/hooks/useHighlight.ts rename to development/social/app/components/post/hooks/useHighlight.ts diff --git a/src/apps/social/app/post/hooks/usePost.ts b/development/social/app/components/post/hooks/usePost.ts similarity index 100% rename from src/apps/social/app/post/hooks/usePost.ts rename to development/social/app/components/post/hooks/usePost.ts diff --git a/src/apps/social/app/post/hooks/usePostsFollowing.ts b/development/social/app/components/post/hooks/usePostsFollowing.ts similarity index 100% rename from src/apps/social/app/post/hooks/usePostsFollowing.ts rename to development/social/app/components/post/hooks/usePostsFollowing.ts diff --git a/src/apps/social/app/post/hooks/usePostsRecommended.ts b/development/social/app/components/post/hooks/usePostsRecommended.ts similarity index 100% rename from src/apps/social/app/post/hooks/usePostsRecommended.ts rename to development/social/app/components/post/hooks/usePostsRecommended.ts diff --git a/src/apps/social/app/post/hooks/useReactions.ts b/development/social/app/components/post/hooks/useReactions.ts similarity index 100% rename from src/apps/social/app/post/hooks/useReactions.ts rename to development/social/app/components/post/hooks/useReactions.ts diff --git a/src/apps/social/app/post/hooks/useRemovePost.ts b/development/social/app/components/post/hooks/useRemovePost.ts similarity index 90% rename from src/apps/social/app/post/hooks/useRemovePost.ts rename to development/social/app/components/post/hooks/useRemovePost.ts index 3eb4c500..4a1730a6 100644 --- a/src/apps/social/app/post/hooks/useRemovePost.ts +++ b/development/social/app/components/post/hooks/useRemovePost.ts @@ -2,7 +2,7 @@ import { useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; -import { useAppContext } from '~/app/application'; +import { useAppContext } from '~/components/application'; import { requester } from '^/domain/authentication'; import remove from '^/domain/post/remove'; diff --git a/src/apps/social/app/post/hooks/useReorderList.ts b/development/social/app/components/post/hooks/useReorderList.ts similarity index 100% rename from src/apps/social/app/post/hooks/useReorderList.ts rename to development/social/app/components/post/hooks/useReorderList.ts diff --git a/src/apps/social/app/post/hooks/useShowCreateReaction.ts b/development/social/app/components/post/hooks/useShowCreateReaction.ts similarity index 100% rename from src/apps/social/app/post/hooks/useShowCreateReaction.ts rename to development/social/app/components/post/hooks/useShowCreateReaction.ts diff --git a/src/apps/social/app/post/hooks/useViewPostDetails.ts b/development/social/app/components/post/hooks/useViewPostDetails.ts similarity index 100% rename from src/apps/social/app/post/hooks/useViewPostDetails.ts rename to development/social/app/components/post/hooks/useViewPostDetails.ts diff --git a/src/apps/social/app/post/hooks/useViewPostHighlightDetails.ts b/development/social/app/components/post/hooks/useViewPostHighlightDetails.ts similarity index 100% rename from src/apps/social/app/post/hooks/useViewPostHighlightDetails.ts rename to development/social/app/components/post/hooks/useViewPostHighlightDetails.ts diff --git a/src/apps/social/app/post/index.ts b/development/social/app/components/post/index.ts similarity index 100% rename from src/apps/social/app/post/index.ts rename to development/social/app/components/post/index.ts diff --git a/src/apps/social/app/profile/Comics.tsx b/development/social/app/components/profile/Comics.tsx similarity index 84% rename from src/apps/social/app/profile/Comics.tsx rename to development/social/app/components/profile/Comics.tsx index 8cbaee07..4bbcb131 100644 --- a/src/apps/social/app/profile/Comics.tsx +++ b/development/social/app/components/profile/Comics.tsx @@ -1,7 +1,7 @@ import { useOutletContext } from 'react-router-dom'; -import { Creator } from '~/app/post'; +import { Creator } from '~/components/post'; type Props = { readonly creatorId: string; diff --git a/src/apps/social/app/profile/Followers.tsx b/development/social/app/components/profile/Followers.tsx similarity index 82% rename from src/apps/social/app/profile/Followers.tsx rename to development/social/app/components/profile/Followers.tsx index e4fff87d..edac690e 100644 --- a/src/apps/social/app/profile/Followers.tsx +++ b/development/social/app/components/profile/Followers.tsx @@ -1,7 +1,7 @@ import { useOutletContext } from 'react-router-dom'; -import { Followers } from '~/app/relation'; +import { Followers } from '~/components/relation'; type Props = { readonly creatorId?: string; diff --git a/src/apps/social/app/profile/Following.tsx b/development/social/app/components/profile/Following.tsx similarity index 82% rename from src/apps/social/app/profile/Following.tsx rename to development/social/app/components/profile/Following.tsx index 73faf4a6..633e90c2 100644 --- a/src/apps/social/app/profile/Following.tsx +++ b/development/social/app/components/profile/Following.tsx @@ -1,7 +1,7 @@ import { useOutletContext } from 'react-router-dom'; -import { Following } from '~/app/relation'; +import { Following } from '~/components/relation'; type Props = { readonly creatorId?: string; diff --git a/src/apps/social/app/profile/Main.tsx b/development/social/app/components/profile/Main.tsx similarity index 89% rename from src/apps/social/app/profile/Main.tsx rename to development/social/app/components/profile/Main.tsx index 13b8a829..00c977f4 100644 --- a/src/apps/social/app/profile/Main.tsx +++ b/development/social/app/components/profile/Main.tsx @@ -4,8 +4,8 @@ import { useParams, Outlet } from 'react-router-dom'; import { Column } from '@maskingtech/designsystem'; -import { Tabs, LoadingAndResultContainer } from '~/app/common'; -import { Profile } from '~/app/relation'; +import { Tabs, LoadingAndResultContainer } from '~/components/common'; +import { Profile } from '~/components/relation'; import useProfile from './hooks/useProfile'; import useEditProfile from './hooks/useEditProfile'; diff --git a/src/apps/social/app/profile/Routes.tsx b/development/social/app/components/profile/Routes.tsx similarity index 91% rename from src/apps/social/app/profile/Routes.tsx rename to development/social/app/components/profile/Routes.tsx index fcd363bc..5ed6a4d1 100644 --- a/src/apps/social/app/profile/Routes.tsx +++ b/development/social/app/components/profile/Routes.tsx @@ -1,7 +1,7 @@ import { Route, Navigate } from 'react-router-dom'; -import { NotFound } from '~/app/common'; +import { NotFound } from '~/components/common'; import Main from './Main'; import Comics from './Comics'; diff --git a/src/apps/social/app/profile/hooks/useEditProfile.ts b/development/social/app/components/profile/hooks/useEditProfile.ts similarity index 100% rename from src/apps/social/app/profile/hooks/useEditProfile.ts rename to development/social/app/components/profile/hooks/useEditProfile.ts diff --git a/src/apps/social/app/profile/hooks/useProfile.ts b/development/social/app/components/profile/hooks/useProfile.ts similarity index 100% rename from src/apps/social/app/profile/hooks/useProfile.ts rename to development/social/app/components/profile/hooks/useProfile.ts diff --git a/src/apps/social/app/profile/hooks/useViewProfile.ts b/development/social/app/components/profile/hooks/useViewProfile.ts similarity index 100% rename from src/apps/social/app/profile/hooks/useViewProfile.ts rename to development/social/app/components/profile/hooks/useViewProfile.ts diff --git a/src/apps/social/app/profile/index.ts b/development/social/app/components/profile/index.ts similarity index 100% rename from src/apps/social/app/profile/index.ts rename to development/social/app/components/profile/index.ts diff --git a/src/apps/social/app/rating/components/Engagement.tsx b/development/social/app/components/rating/components/Engagement.tsx similarity index 93% rename from src/apps/social/app/rating/components/Engagement.tsx rename to development/social/app/components/rating/components/Engagement.tsx index 197232b1..b8316591 100644 --- a/src/apps/social/app/rating/components/Engagement.tsx +++ b/development/social/app/components/rating/components/Engagement.tsx @@ -1,7 +1,7 @@ import { ClickArea, Row } from '@maskingtech/designsystem'; -import { CompactNumber } from '~/app/common'; +import { CompactNumber } from '~/components/common'; import Icon from './elements/Icon'; import type { EngageHandler } from './hooks/useEngagement'; diff --git a/src/apps/social/app/rating/components/elements/Icon.tsx b/development/social/app/components/rating/components/elements/Icon.tsx similarity index 100% rename from src/apps/social/app/rating/components/elements/Icon.tsx rename to development/social/app/components/rating/components/elements/Icon.tsx diff --git a/src/apps/social/app/rating/components/hooks/useEngagement.ts b/development/social/app/components/rating/components/hooks/useEngagement.ts similarity index 100% rename from src/apps/social/app/rating/components/hooks/useEngagement.ts rename to development/social/app/components/rating/components/hooks/useEngagement.ts diff --git a/src/apps/social/app/rating/hooks/useTogglePostRating.ts b/development/social/app/components/rating/hooks/useTogglePostRating.ts similarity index 100% rename from src/apps/social/app/rating/hooks/useTogglePostRating.ts rename to development/social/app/components/rating/hooks/useTogglePostRating.ts diff --git a/src/apps/social/app/rating/index.ts b/development/social/app/components/rating/index.ts similarity index 100% rename from src/apps/social/app/rating/index.ts rename to development/social/app/components/rating/index.ts diff --git a/src/apps/social/app/reaction/Create.tsx b/development/social/app/components/reaction/Create.tsx similarity index 92% rename from src/apps/social/app/reaction/Create.tsx rename to development/social/app/components/reaction/Create.tsx index 2985d55e..6b10c48e 100644 --- a/src/apps/social/app/reaction/Create.tsx +++ b/development/social/app/components/reaction/Create.tsx @@ -1,7 +1,7 @@ import { useParams, Outlet } from 'react-router-dom'; -import { Modal, Tabs } from '~/app/common'; +import { Modal, Tabs } from '~/components/common'; import useViewPost from './hooks/useViewPost'; import useViewReaction from './hooks/useViewReaction'; diff --git a/src/apps/social/app/reaction/CreateComic.tsx b/development/social/app/components/reaction/CreateComic.tsx similarity index 91% rename from src/apps/social/app/reaction/CreateComic.tsx rename to development/social/app/components/reaction/CreateComic.tsx index 01951503..f75aab5b 100644 --- a/src/apps/social/app/reaction/CreateComic.tsx +++ b/development/social/app/components/reaction/CreateComic.tsx @@ -1,7 +1,7 @@ import { useOutletContext } from 'react-router-dom'; -import { Editor } from '~/app/comic'; +import { Editor } from '~/components/comic'; import useCreateComic from './hooks/useCreateComic'; diff --git a/src/apps/social/app/reaction/CreateComment.tsx b/development/social/app/components/reaction/CreateComment.tsx similarity index 92% rename from src/apps/social/app/reaction/CreateComment.tsx rename to development/social/app/components/reaction/CreateComment.tsx index b0998d14..1d839580 100644 --- a/src/apps/social/app/reaction/CreateComment.tsx +++ b/development/social/app/components/reaction/CreateComment.tsx @@ -1,7 +1,7 @@ import { useOutletContext } from 'react-router-dom'; -import { Form } from '~/app/comment'; +import { Form } from '~/components/comment'; import useCreateComment from './hooks/useCreateComment'; diff --git a/src/apps/social/app/reaction/Routes.tsx b/development/social/app/components/reaction/Routes.tsx similarity index 100% rename from src/apps/social/app/reaction/Routes.tsx rename to development/social/app/components/reaction/Routes.tsx diff --git a/src/apps/social/app/reaction/components/Engagement.tsx b/development/social/app/components/reaction/components/Engagement.tsx similarity index 89% rename from src/apps/social/app/reaction/components/Engagement.tsx rename to development/social/app/components/reaction/components/Engagement.tsx index 3a15b60f..f03ffba1 100644 --- a/src/apps/social/app/reaction/components/Engagement.tsx +++ b/development/social/app/components/reaction/components/Engagement.tsx @@ -1,7 +1,7 @@ import { ClickArea, Row } from '@maskingtech/designsystem'; -import { CompactNumber } from '~/app/common'; +import { CompactNumber } from '~/components/common'; import Icon from './elements/Icon'; diff --git a/src/apps/social/app/reaction/components/SingleReactionRow.tsx b/development/social/app/components/reaction/components/SingleReactionRow.tsx similarity index 100% rename from src/apps/social/app/reaction/components/SingleReactionRow.tsx rename to development/social/app/components/reaction/components/SingleReactionRow.tsx diff --git a/src/apps/social/app/reaction/components/elements/Icon.tsx b/development/social/app/components/reaction/components/elements/Icon.tsx similarity index 100% rename from src/apps/social/app/reaction/components/elements/Icon.tsx rename to development/social/app/components/reaction/components/elements/Icon.tsx diff --git a/src/apps/social/app/reaction/hooks/useCreateComic.ts b/development/social/app/components/reaction/hooks/useCreateComic.ts similarity index 100% rename from src/apps/social/app/reaction/hooks/useCreateComic.ts rename to development/social/app/components/reaction/hooks/useCreateComic.ts diff --git a/src/apps/social/app/reaction/hooks/useCreateComment.ts b/development/social/app/components/reaction/hooks/useCreateComment.ts similarity index 100% rename from src/apps/social/app/reaction/hooks/useCreateComment.ts rename to development/social/app/components/reaction/hooks/useCreateComment.ts diff --git a/src/apps/social/app/reaction/hooks/useViewPost.tsx b/development/social/app/components/reaction/hooks/useViewPost.tsx similarity index 100% rename from src/apps/social/app/reaction/hooks/useViewPost.tsx rename to development/social/app/components/reaction/hooks/useViewPost.tsx diff --git a/src/apps/social/app/reaction/hooks/useViewReaction.tsx b/development/social/app/components/reaction/hooks/useViewReaction.tsx similarity index 100% rename from src/apps/social/app/reaction/hooks/useViewReaction.tsx rename to development/social/app/components/reaction/hooks/useViewReaction.tsx diff --git a/src/apps/social/app/reaction/index.ts b/development/social/app/components/reaction/index.ts similarity index 100% rename from src/apps/social/app/reaction/index.ts rename to development/social/app/components/reaction/index.ts diff --git a/src/apps/social/app/relation/Explore.tsx b/development/social/app/components/relation/Explore.tsx similarity index 94% rename from src/apps/social/app/relation/Explore.tsx rename to development/social/app/components/relation/Explore.tsx index b8f364da..b5027fd6 100644 --- a/src/apps/social/app/relation/Explore.tsx +++ b/development/social/app/components/relation/Explore.tsx @@ -3,8 +3,8 @@ import { Column } from '@maskingtech/designsystem'; import type { AggregatedData as AggregatedRelationData } from '^/domain/relation/aggregate'; -import { OrderAndSearchRow, PullToRefresh, ResultContainer, ScrollLoader } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; +import { OrderAndSearchRow, PullToRefresh, ResultContainer, ScrollLoader } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/relation/Followers.tsx b/development/social/app/components/relation/Followers.tsx similarity index 94% rename from src/apps/social/app/relation/Followers.tsx rename to development/social/app/components/relation/Followers.tsx index 89849a13..55f9af4e 100644 --- a/src/apps/social/app/relation/Followers.tsx +++ b/development/social/app/components/relation/Followers.tsx @@ -1,8 +1,8 @@ import { Column } from '@maskingtech/designsystem'; -import { OrderAndSearchRow, PullToRefresh, ResultContainer, ScrollLoader } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; +import { OrderAndSearchRow, PullToRefresh, ResultContainer, ScrollLoader } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/relation/Following.tsx b/development/social/app/components/relation/Following.tsx similarity index 94% rename from src/apps/social/app/relation/Following.tsx rename to development/social/app/components/relation/Following.tsx index 86dcd366..6588c261 100644 --- a/src/apps/social/app/relation/Following.tsx +++ b/development/social/app/components/relation/Following.tsx @@ -1,8 +1,8 @@ import { Column } from '@maskingtech/designsystem'; -import { OrderAndSearchRow, PullToRefresh, ResultContainer, ScrollLoader } from '~/app/common'; -import { useViewProfile } from '~/app/profile'; +import { OrderAndSearchRow, PullToRefresh, ResultContainer, ScrollLoader } from '~/components/common'; +import { useViewProfile } from '~/components/profile'; import PanelList from './components/PanelList'; diff --git a/src/apps/social/app/relation/Profile.tsx b/development/social/app/components/relation/Profile.tsx similarity index 92% rename from src/apps/social/app/relation/Profile.tsx rename to development/social/app/components/relation/Profile.tsx index c5abfe56..72ccf580 100644 --- a/src/apps/social/app/relation/Profile.tsx +++ b/development/social/app/components/relation/Profile.tsx @@ -1,7 +1,7 @@ import type { AggregatedData as AggregatedRelationData } from '^/domain/relation/aggregate'; -import { LoadingAndResultContainer } from '~/app/common'; +import { LoadingAndResultContainer } from '~/components/common'; import Profile from './components/Profile'; diff --git a/src/apps/social/app/relation/components/Counters.tsx b/development/social/app/components/relation/components/Counters.tsx similarity index 93% rename from src/apps/social/app/relation/components/Counters.tsx rename to development/social/app/components/relation/components/Counters.tsx index e3a2c471..ba8c2313 100644 --- a/src/apps/social/app/relation/components/Counters.tsx +++ b/development/social/app/components/relation/components/Counters.tsx @@ -1,7 +1,7 @@ import type { AggregatedData as AggregatedRelationData } from '^/domain/relation/aggregate'; -import { Counters } from '~/app/creator'; +import { Counters } from '~/components/creator'; import FollowRow from './elements/FollowRow'; diff --git a/src/apps/social/app/relation/components/Panel.tsx b/development/social/app/components/relation/components/Panel.tsx similarity index 100% rename from src/apps/social/app/relation/components/Panel.tsx rename to development/social/app/components/relation/components/Panel.tsx diff --git a/src/apps/social/app/relation/components/PanelList.tsx b/development/social/app/components/relation/components/PanelList.tsx similarity index 100% rename from src/apps/social/app/relation/components/PanelList.tsx rename to development/social/app/components/relation/components/PanelList.tsx diff --git a/src/apps/social/app/relation/components/Profile.tsx b/development/social/app/components/relation/components/Profile.tsx similarity index 93% rename from src/apps/social/app/relation/components/Profile.tsx rename to development/social/app/components/relation/components/Profile.tsx index 18e1bbbb..34448930 100644 --- a/src/apps/social/app/relation/components/Profile.tsx +++ b/development/social/app/components/relation/components/Profile.tsx @@ -1,7 +1,7 @@ import type { AggregatedData as AggregatedRelationData } from '^/domain/relation/aggregate'; -import { Profile } from '~/app/creator'; +import { Profile } from '~/components/creator'; import FollowRow from './elements/FollowRow'; diff --git a/src/apps/social/app/relation/components/TimeElapsed.tsx b/development/social/app/components/relation/components/TimeElapsed.tsx similarity index 95% rename from src/apps/social/app/relation/components/TimeElapsed.tsx rename to development/social/app/components/relation/components/TimeElapsed.tsx index 2d897fc1..d2896da5 100644 --- a/src/apps/social/app/relation/components/TimeElapsed.tsx +++ b/development/social/app/components/relation/components/TimeElapsed.tsx @@ -1,7 +1,7 @@ import type { AggregatedData as AggregatedRelationData } from '^/domain/relation/aggregate'; -import { TimeElapsed } from '~/app/creator'; +import { TimeElapsed } from '~/components/creator'; import FollowRow from './elements/FollowRow'; diff --git a/src/apps/social/app/relation/components/elements/FollowButton.tsx b/development/social/app/components/relation/components/elements/FollowButton.tsx similarity index 100% rename from src/apps/social/app/relation/components/elements/FollowButton.tsx rename to development/social/app/components/relation/components/elements/FollowButton.tsx diff --git a/src/apps/social/app/relation/components/elements/FollowRow.tsx b/development/social/app/components/relation/components/elements/FollowRow.tsx similarity index 93% rename from src/apps/social/app/relation/components/elements/FollowRow.tsx rename to development/social/app/components/relation/components/elements/FollowRow.tsx index 7e8d44ac..fb3c8d9a 100644 --- a/src/apps/social/app/relation/components/elements/FollowRow.tsx +++ b/development/social/app/components/relation/components/elements/FollowRow.tsx @@ -3,7 +3,7 @@ import type { ReactNode } from 'react'; import { Row } from '@maskingtech/designsystem'; -import { EditButton } from '~/app/common'; +import { EditButton } from '~/components/common'; import FollowButton from './FollowButton'; diff --git a/src/apps/social/app/relation/components/hooks/useEstablish.ts b/development/social/app/components/relation/components/hooks/useEstablish.ts similarity index 100% rename from src/apps/social/app/relation/components/hooks/useEstablish.ts rename to development/social/app/components/relation/components/hooks/useEstablish.ts diff --git a/src/apps/social/app/relation/hooks/useCreatorFollowers.ts b/development/social/app/components/relation/hooks/useCreatorFollowers.ts similarity index 100% rename from src/apps/social/app/relation/hooks/useCreatorFollowers.ts rename to development/social/app/components/relation/hooks/useCreatorFollowers.ts diff --git a/src/apps/social/app/relation/hooks/useCreatorFollowing.ts b/development/social/app/components/relation/hooks/useCreatorFollowing.ts similarity index 100% rename from src/apps/social/app/relation/hooks/useCreatorFollowing.ts rename to development/social/app/components/relation/hooks/useCreatorFollowing.ts diff --git a/src/apps/social/app/relation/hooks/useEstablish.ts b/development/social/app/components/relation/hooks/useEstablish.ts similarity index 100% rename from src/apps/social/app/relation/hooks/useEstablish.ts rename to development/social/app/components/relation/hooks/useEstablish.ts diff --git a/src/apps/social/app/relation/hooks/useExploreCreators.ts b/development/social/app/components/relation/hooks/useExploreCreators.ts similarity index 100% rename from src/apps/social/app/relation/hooks/useExploreCreators.ts rename to development/social/app/components/relation/hooks/useExploreCreators.ts diff --git a/src/apps/social/app/relation/hooks/useRelation.ts b/development/social/app/components/relation/hooks/useRelation.ts similarity index 92% rename from src/apps/social/app/relation/hooks/useRelation.ts rename to development/social/app/components/relation/hooks/useRelation.ts index 91e9d3b3..0bf80316 100644 --- a/src/apps/social/app/relation/hooks/useRelation.ts +++ b/development/social/app/components/relation/hooks/useRelation.ts @@ -7,7 +7,7 @@ import { requester } from '^/domain/authentication'; import getRelation from '^/domain/relation/getAggregated'; import { tenant } from '^/domain/tenant'; -import { useAppContext } from '~/app/application'; +import { useAppContext } from '~/components/application'; export default function useRelation(creatorId?: string) { diff --git a/src/apps/social/app/relation/hooks/useReorderList.ts b/development/social/app/components/relation/hooks/useReorderList.ts similarity index 100% rename from src/apps/social/app/relation/hooks/useReorderList.ts rename to development/social/app/components/relation/hooks/useReorderList.ts diff --git a/src/apps/social/app/relation/index.ts b/development/social/app/components/relation/index.ts similarity index 100% rename from src/apps/social/app/relation/index.ts rename to development/social/app/components/relation/index.ts diff --git a/src/apps/social/app/theme.css b/development/social/app/components/theme.css similarity index 100% rename from src/apps/social/app/theme.css rename to development/social/app/components/theme.css diff --git a/src/apps/social/app/timeline/Following.tsx b/development/social/app/components/timeline/Following.tsx similarity index 58% rename from src/apps/social/app/timeline/Following.tsx rename to development/social/app/components/timeline/Following.tsx index f17f851a..c09d5225 100644 --- a/src/apps/social/app/timeline/Following.tsx +++ b/development/social/app/components/timeline/Following.tsx @@ -1,5 +1,5 @@ -import { Following } from '~/app/post'; +import { Following } from '~/components/post'; export default function Feature() { diff --git a/src/apps/social/app/timeline/ForYou.tsx b/development/social/app/components/timeline/ForYou.tsx similarity index 58% rename from src/apps/social/app/timeline/ForYou.tsx rename to development/social/app/components/timeline/ForYou.tsx index e7b849ad..6564b52f 100644 --- a/src/apps/social/app/timeline/ForYou.tsx +++ b/development/social/app/components/timeline/ForYou.tsx @@ -1,5 +1,5 @@ -import { Recommended } from '~/app/post'; +import { Recommended } from '~/components/post'; export default function Feature() { diff --git a/src/apps/social/app/timeline/Main.tsx b/development/social/app/components/timeline/Main.tsx similarity index 85% rename from src/apps/social/app/timeline/Main.tsx rename to development/social/app/components/timeline/Main.tsx index d122bd5f..03098b12 100644 --- a/src/apps/social/app/timeline/Main.tsx +++ b/development/social/app/components/timeline/Main.tsx @@ -1,7 +1,7 @@ import { Outlet } from 'react-router-dom'; -import { Tabs } from '~/app/common'; +import { Tabs } from '~/components/common'; const tabItems = [ { title: 'For you', route: 'foryou' }, diff --git a/src/apps/social/app/timeline/Routes.tsx b/development/social/app/components/timeline/Routes.tsx similarity index 89% rename from src/apps/social/app/timeline/Routes.tsx rename to development/social/app/components/timeline/Routes.tsx index d980689d..bca64cb6 100644 --- a/src/apps/social/app/timeline/Routes.tsx +++ b/development/social/app/components/timeline/Routes.tsx @@ -1,7 +1,7 @@ import { Route, Navigate } from 'react-router-dom'; -import { NotFound } from '~/app/common'; +import { NotFound } from '~/components/common'; import Main from './Main'; import ForYou from './ForYou'; diff --git a/src/apps/social/app/timeline/index.ts b/development/social/app/components/timeline/index.ts similarity index 100% rename from src/apps/social/app/timeline/index.ts rename to development/social/app/components/timeline/index.ts diff --git a/development/social/app/components/vite-env.d.ts b/development/social/app/components/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/development/social/app/components/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/apps/social/index.html b/development/social/app/index.html similarity index 90% rename from src/apps/social/index.html rename to development/social/app/index.html index ede92781..3a40dc8e 100644 --- a/src/apps/social/index.html +++ b/development/social/app/index.html @@ -15,7 +15,7 @@
- + \ No newline at end of file diff --git a/src/apps/social/public/robots.txt b/development/social/app/public/robots.txt similarity index 100% rename from src/apps/social/public/robots.txt rename to development/social/app/public/robots.txt diff --git a/development/social/app/tsconfig.json b/development/social/app/tsconfig.json new file mode 100644 index 00000000..2e1aba0d --- /dev/null +++ b/development/social/app/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "jsx": "react-jsx", + "noEmit": true, + "paths": { + "^/*": ["../*"], + "~/*": ["./*"], + } + }, + "include": ["./"] +} \ No newline at end of file diff --git a/development/social/app/vite-env.d.ts b/development/social/app/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/development/social/app/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/development/social/app/vite.config.ts b/development/social/app/vite.config.ts new file mode 100644 index 00000000..785444fb --- /dev/null +++ b/development/social/app/vite.config.ts @@ -0,0 +1,34 @@ + +import jitar, { JitarConfig } from '@jitar/plugin-vite'; +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +const JITAR_URL = 'http://localhost:3000'; +const JITAR_SEGMENTS: string[] = []; +const JITAR_MIDDLEWARES: string[] = [ + '../integrations/authentication/requesterMiddleware' +]; + +const jitarConfig: JitarConfig = { + projectRoot: '../../../', + sourceRoot: '../../', + jitarUrl: JITAR_URL, + segments: JITAR_SEGMENTS, + middleware: JITAR_MIDDLEWARES +}; + +export default defineConfig({ + root: './app', + publicDir: 'public', + build: { + outDir: '../../../artifacts/build/social/app', + assetsDir: 'assets', + emptyOutDir: true + }, + plugins: [ + react(), + tsconfigPaths(), + jitar(jitarConfig) + ] +}); \ No newline at end of file diff --git a/src/assets/appicon192.png b/development/social/assets/appicon192.png similarity index 100% rename from src/assets/appicon192.png rename to development/social/assets/appicon192.png diff --git a/src/assets/appicon32.png b/development/social/assets/appicon32.png similarity index 100% rename from src/assets/appicon32.png rename to development/social/assets/appicon32.png diff --git a/src/assets/appicon512.png b/development/social/assets/appicon512.png similarity index 100% rename from src/assets/appicon512.png rename to development/social/assets/appicon512.png diff --git a/development/social/assets/localhost.css b/development/social/assets/localhost.css new file mode 100644 index 00000000..e69de29b diff --git a/src/domain/authentication/getLoginUrl/getLoginUrl.ts b/development/social/domain/authentication/getLoginUrl/getLoginUrl.ts similarity index 100% rename from src/domain/authentication/getLoginUrl/getLoginUrl.ts rename to development/social/domain/authentication/getLoginUrl/getLoginUrl.ts diff --git a/src/domain/authentication/getLoginUrl/index.ts b/development/social/domain/authentication/getLoginUrl/index.ts similarity index 100% rename from src/domain/authentication/getLoginUrl/index.ts rename to development/social/domain/authentication/getLoginUrl/index.ts diff --git a/src/domain/authentication/index.ts b/development/social/domain/authentication/index.ts similarity index 100% rename from src/domain/authentication/index.ts rename to development/social/domain/authentication/index.ts diff --git a/src/domain/authentication/login/index.ts b/development/social/domain/authentication/login/index.ts similarity index 100% rename from src/domain/authentication/login/index.ts rename to development/social/domain/authentication/login/index.ts diff --git a/src/domain/authentication/login/login.ts b/development/social/domain/authentication/login/login.ts similarity index 100% rename from src/domain/authentication/login/login.ts rename to development/social/domain/authentication/login/login.ts diff --git a/src/domain/authentication/logout/index.ts b/development/social/domain/authentication/logout/index.ts similarity index 100% rename from src/domain/authentication/logout/index.ts rename to development/social/domain/authentication/logout/index.ts diff --git a/src/domain/authentication/logout/logout.ts b/development/social/domain/authentication/logout/logout.ts similarity index 100% rename from src/domain/authentication/logout/logout.ts rename to development/social/domain/authentication/logout/logout.ts diff --git a/src/domain/authentication/requester.ts b/development/social/domain/authentication/requester.ts similarity index 100% rename from src/domain/authentication/requester.ts rename to development/social/domain/authentication/requester.ts diff --git a/src/domain/authentication/types.ts b/development/social/domain/authentication/types.ts similarity index 100% rename from src/domain/authentication/types.ts rename to development/social/domain/authentication/types.ts diff --git a/src/domain/comic/aggregate/aggregate.ts b/development/social/domain/comic/aggregate/aggregate.ts similarity index 100% rename from src/domain/comic/aggregate/aggregate.ts rename to development/social/domain/comic/aggregate/aggregate.ts diff --git a/src/domain/comic/aggregate/index.ts b/development/social/domain/comic/aggregate/index.ts similarity index 100% rename from src/domain/comic/aggregate/index.ts rename to development/social/domain/comic/aggregate/index.ts diff --git a/src/domain/comic/aggregate/types.ts b/development/social/domain/comic/aggregate/types.ts similarity index 100% rename from src/domain/comic/aggregate/types.ts rename to development/social/domain/comic/aggregate/types.ts diff --git a/src/domain/comic/create/InvalidComic.ts b/development/social/domain/comic/create/InvalidComic.ts similarity index 100% rename from src/domain/comic/create/InvalidComic.ts rename to development/social/domain/comic/create/InvalidComic.ts diff --git a/src/domain/comic/create/create.ts b/development/social/domain/comic/create/create.ts similarity index 100% rename from src/domain/comic/create/create.ts rename to development/social/domain/comic/create/create.ts diff --git a/src/domain/comic/create/createData.ts b/development/social/domain/comic/create/createData.ts similarity index 100% rename from src/domain/comic/create/createData.ts rename to development/social/domain/comic/create/createData.ts diff --git a/src/domain/comic/create/index.ts b/development/social/domain/comic/create/index.ts similarity index 100% rename from src/domain/comic/create/index.ts rename to development/social/domain/comic/create/index.ts diff --git a/src/domain/comic/create/insertData.ts b/development/social/domain/comic/create/insertData.ts similarity index 100% rename from src/domain/comic/create/insertData.ts rename to development/social/domain/comic/create/insertData.ts diff --git a/src/domain/comic/create/types.ts b/development/social/domain/comic/create/types.ts similarity index 100% rename from src/domain/comic/create/types.ts rename to development/social/domain/comic/create/types.ts diff --git a/src/domain/comic/create/validateData.ts b/development/social/domain/comic/create/validateData.ts similarity index 100% rename from src/domain/comic/create/validateData.ts rename to development/social/domain/comic/create/validateData.ts diff --git a/src/domain/comic/definitions.ts b/development/social/domain/comic/definitions.ts similarity index 100% rename from src/domain/comic/definitions.ts rename to development/social/domain/comic/definitions.ts diff --git a/src/domain/comic/erase/erase.ts b/development/social/domain/comic/erase/erase.ts similarity index 100% rename from src/domain/comic/erase/erase.ts rename to development/social/domain/comic/erase/erase.ts diff --git a/src/domain/comic/erase/eraseData.ts b/development/social/domain/comic/erase/eraseData.ts similarity index 100% rename from src/domain/comic/erase/eraseData.ts rename to development/social/domain/comic/erase/eraseData.ts diff --git a/src/domain/comic/erase/index.ts b/development/social/domain/comic/erase/index.ts similarity index 100% rename from src/domain/comic/erase/index.ts rename to development/social/domain/comic/erase/index.ts diff --git a/src/domain/comic/getById/ComicNotFound.ts b/development/social/domain/comic/getById/ComicNotFound.ts similarity index 100% rename from src/domain/comic/getById/ComicNotFound.ts rename to development/social/domain/comic/getById/ComicNotFound.ts diff --git a/src/domain/comic/getById/getById.ts b/development/social/domain/comic/getById/getById.ts similarity index 100% rename from src/domain/comic/getById/getById.ts rename to development/social/domain/comic/getById/getById.ts diff --git a/src/domain/comic/getById/index.ts b/development/social/domain/comic/getById/index.ts similarity index 100% rename from src/domain/comic/getById/index.ts rename to development/social/domain/comic/getById/index.ts diff --git a/src/domain/comic/getByIdAggregated/getByIdAggregated.ts b/development/social/domain/comic/getByIdAggregated/getByIdAggregated.ts similarity index 100% rename from src/domain/comic/getByIdAggregated/getByIdAggregated.ts rename to development/social/domain/comic/getByIdAggregated/getByIdAggregated.ts diff --git a/src/domain/comic/getByIdAggregated/index.ts b/development/social/domain/comic/getByIdAggregated/index.ts similarity index 100% rename from src/domain/comic/getByIdAggregated/index.ts rename to development/social/domain/comic/getByIdAggregated/index.ts diff --git a/src/domain/comic/index.ts b/development/social/domain/comic/index.ts similarity index 100% rename from src/domain/comic/index.ts rename to development/social/domain/comic/index.ts diff --git a/src/domain/comic/types.ts b/development/social/domain/comic/types.ts similarity index 100% rename from src/domain/comic/types.ts rename to development/social/domain/comic/types.ts diff --git a/src/domain/comment/create/InvalidComment.ts b/development/social/domain/comment/create/InvalidComment.ts similarity index 100% rename from src/domain/comment/create/InvalidComment.ts rename to development/social/domain/comment/create/InvalidComment.ts diff --git a/src/domain/comment/create/create.ts b/development/social/domain/comment/create/create.ts similarity index 100% rename from src/domain/comment/create/create.ts rename to development/social/domain/comment/create/create.ts diff --git a/src/domain/comment/create/createData.ts b/development/social/domain/comment/create/createData.ts similarity index 100% rename from src/domain/comment/create/createData.ts rename to development/social/domain/comment/create/createData.ts diff --git a/src/domain/comment/create/index.ts b/development/social/domain/comment/create/index.ts similarity index 100% rename from src/domain/comment/create/index.ts rename to development/social/domain/comment/create/index.ts diff --git a/src/domain/comment/create/insertData.ts b/development/social/domain/comment/create/insertData.ts similarity index 100% rename from src/domain/comment/create/insertData.ts rename to development/social/domain/comment/create/insertData.ts diff --git a/src/domain/comment/create/types.ts b/development/social/domain/comment/create/types.ts similarity index 100% rename from src/domain/comment/create/types.ts rename to development/social/domain/comment/create/types.ts diff --git a/src/domain/comment/create/validateData.ts b/development/social/domain/comment/create/validateData.ts similarity index 100% rename from src/domain/comment/create/validateData.ts rename to development/social/domain/comment/create/validateData.ts diff --git a/src/domain/comment/definitions.ts b/development/social/domain/comment/definitions.ts similarity index 100% rename from src/domain/comment/definitions.ts rename to development/social/domain/comment/definitions.ts diff --git a/src/domain/comment/erase/erase.ts b/development/social/domain/comment/erase/erase.ts similarity index 100% rename from src/domain/comment/erase/erase.ts rename to development/social/domain/comment/erase/erase.ts diff --git a/src/domain/comment/erase/index.ts b/development/social/domain/comment/erase/index.ts similarity index 100% rename from src/domain/comment/erase/index.ts rename to development/social/domain/comment/erase/index.ts diff --git a/src/domain/comment/getById/CommentNotFound.ts b/development/social/domain/comment/getById/CommentNotFound.ts similarity index 100% rename from src/domain/comment/getById/CommentNotFound.ts rename to development/social/domain/comment/getById/CommentNotFound.ts diff --git a/src/domain/comment/getById/getById.ts b/development/social/domain/comment/getById/getById.ts similarity index 100% rename from src/domain/comment/getById/getById.ts rename to development/social/domain/comment/getById/getById.ts diff --git a/src/domain/comment/getById/index.ts b/development/social/domain/comment/getById/index.ts similarity index 100% rename from src/domain/comment/getById/index.ts rename to development/social/domain/comment/getById/index.ts diff --git a/src/domain/comment/index.ts b/development/social/domain/comment/index.ts similarity index 100% rename from src/domain/comment/index.ts rename to development/social/domain/comment/index.ts diff --git a/src/domain/comment/types.ts b/development/social/domain/comment/types.ts similarity index 100% rename from src/domain/comment/types.ts rename to development/social/domain/comment/types.ts diff --git a/src/domain/common/filterResolved/filterResolved.ts b/development/social/domain/common/filterResolved/filterResolved.ts similarity index 100% rename from src/domain/common/filterResolved/filterResolved.ts rename to development/social/domain/common/filterResolved/filterResolved.ts diff --git a/src/domain/common/filterResolved/index.ts b/development/social/domain/common/filterResolved/index.ts similarity index 100% rename from src/domain/common/filterResolved/index.ts rename to development/social/domain/common/filterResolved/index.ts diff --git a/src/domain/common/validateRange/InvalidRange.ts b/development/social/domain/common/validateRange/InvalidRange.ts similarity index 100% rename from src/domain/common/validateRange/InvalidRange.ts rename to development/social/domain/common/validateRange/InvalidRange.ts diff --git a/src/domain/common/validateRange/index.ts b/development/social/domain/common/validateRange/index.ts similarity index 100% rename from src/domain/common/validateRange/index.ts rename to development/social/domain/common/validateRange/index.ts diff --git a/src/domain/common/validateRange/types.ts b/development/social/domain/common/validateRange/types.ts similarity index 100% rename from src/domain/common/validateRange/types.ts rename to development/social/domain/common/validateRange/types.ts diff --git a/src/domain/common/validateRange/validateRange.ts b/development/social/domain/common/validateRange/validateRange.ts similarity index 100% rename from src/domain/common/validateRange/validateRange.ts rename to development/social/domain/common/validateRange/validateRange.ts diff --git a/src/domain/creator.metrics/create/create.ts b/development/social/domain/creator.metrics/create/create.ts similarity index 100% rename from src/domain/creator.metrics/create/create.ts rename to development/social/domain/creator.metrics/create/create.ts diff --git a/src/domain/creator.metrics/create/createData.ts b/development/social/domain/creator.metrics/create/createData.ts similarity index 100% rename from src/domain/creator.metrics/create/createData.ts rename to development/social/domain/creator.metrics/create/createData.ts diff --git a/src/domain/creator.metrics/create/index.ts b/development/social/domain/creator.metrics/create/index.ts similarity index 100% rename from src/domain/creator.metrics/create/index.ts rename to development/social/domain/creator.metrics/create/index.ts diff --git a/src/domain/creator.metrics/create/insertData.ts b/development/social/domain/creator.metrics/create/insertData.ts similarity index 100% rename from src/domain/creator.metrics/create/insertData.ts rename to development/social/domain/creator.metrics/create/insertData.ts diff --git a/src/domain/creator.metrics/create/subscriptions.ts b/development/social/domain/creator.metrics/create/subscriptions.ts similarity index 100% rename from src/domain/creator.metrics/create/subscriptions.ts rename to development/social/domain/creator.metrics/create/subscriptions.ts diff --git a/src/domain/creator.metrics/definitions.ts b/development/social/domain/creator.metrics/definitions.ts similarity index 100% rename from src/domain/creator.metrics/definitions.ts rename to development/social/domain/creator.metrics/definitions.ts diff --git a/src/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts b/development/social/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts similarity index 100% rename from src/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts rename to development/social/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts diff --git a/src/domain/creator.metrics/getByCreator/getByCreator.ts b/development/social/domain/creator.metrics/getByCreator/getByCreator.ts similarity index 100% rename from src/domain/creator.metrics/getByCreator/getByCreator.ts rename to development/social/domain/creator.metrics/getByCreator/getByCreator.ts diff --git a/src/domain/creator.metrics/getByCreator/index.ts b/development/social/domain/creator.metrics/getByCreator/index.ts similarity index 100% rename from src/domain/creator.metrics/getByCreator/index.ts rename to development/social/domain/creator.metrics/getByCreator/index.ts diff --git a/src/domain/creator.metrics/index.ts b/development/social/domain/creator.metrics/index.ts similarity index 100% rename from src/domain/creator.metrics/index.ts rename to development/social/domain/creator.metrics/index.ts diff --git a/src/domain/creator.metrics/types.ts b/development/social/domain/creator.metrics/types.ts similarity index 100% rename from src/domain/creator.metrics/types.ts rename to development/social/domain/creator.metrics/types.ts diff --git a/src/domain/creator.metrics/update/index.ts b/development/social/domain/creator.metrics/update/index.ts similarity index 100% rename from src/domain/creator.metrics/update/index.ts rename to development/social/domain/creator.metrics/update/index.ts diff --git a/src/domain/creator.metrics/update/update.ts b/development/social/domain/creator.metrics/update/update.ts similarity index 100% rename from src/domain/creator.metrics/update/update.ts rename to development/social/domain/creator.metrics/update/update.ts diff --git a/src/domain/creator.metrics/updateFollowers/index.ts b/development/social/domain/creator.metrics/updateFollowers/index.ts similarity index 100% rename from src/domain/creator.metrics/updateFollowers/index.ts rename to development/social/domain/creator.metrics/updateFollowers/index.ts diff --git a/src/domain/creator.metrics/updateFollowers/subscriptions.ts b/development/social/domain/creator.metrics/updateFollowers/subscriptions.ts similarity index 100% rename from src/domain/creator.metrics/updateFollowers/subscriptions.ts rename to development/social/domain/creator.metrics/updateFollowers/subscriptions.ts diff --git a/src/domain/creator.metrics/updateFollowers/updateFollowers.ts b/development/social/domain/creator.metrics/updateFollowers/updateFollowers.ts similarity index 100% rename from src/domain/creator.metrics/updateFollowers/updateFollowers.ts rename to development/social/domain/creator.metrics/updateFollowers/updateFollowers.ts diff --git a/src/domain/creator.metrics/updateFollowing/index.ts b/development/social/domain/creator.metrics/updateFollowing/index.ts similarity index 100% rename from src/domain/creator.metrics/updateFollowing/index.ts rename to development/social/domain/creator.metrics/updateFollowing/index.ts diff --git a/src/domain/creator.metrics/updateFollowing/subscriptions.ts b/development/social/domain/creator.metrics/updateFollowing/subscriptions.ts similarity index 100% rename from src/domain/creator.metrics/updateFollowing/subscriptions.ts rename to development/social/domain/creator.metrics/updateFollowing/subscriptions.ts diff --git a/src/domain/creator.metrics/updateFollowing/updateFollowing.ts b/development/social/domain/creator.metrics/updateFollowing/updateFollowing.ts similarity index 100% rename from src/domain/creator.metrics/updateFollowing/updateFollowing.ts rename to development/social/domain/creator.metrics/updateFollowing/updateFollowing.ts diff --git a/src/domain/creator.metrics/updatePosts/index.ts b/development/social/domain/creator.metrics/updatePosts/index.ts similarity index 100% rename from src/domain/creator.metrics/updatePosts/index.ts rename to development/social/domain/creator.metrics/updatePosts/index.ts diff --git a/src/domain/creator.metrics/updatePosts/subscriptions.ts b/development/social/domain/creator.metrics/updatePosts/subscriptions.ts similarity index 100% rename from src/domain/creator.metrics/updatePosts/subscriptions.ts rename to development/social/domain/creator.metrics/updatePosts/subscriptions.ts diff --git a/src/domain/creator.metrics/updatePosts/updatePosts.ts b/development/social/domain/creator.metrics/updatePosts/updatePosts.ts similarity index 100% rename from src/domain/creator.metrics/updatePosts/updatePosts.ts rename to development/social/domain/creator.metrics/updatePosts/updatePosts.ts diff --git a/src/domain/creator/aggregate/aggregate.ts b/development/social/domain/creator/aggregate/aggregate.ts similarity index 100% rename from src/domain/creator/aggregate/aggregate.ts rename to development/social/domain/creator/aggregate/aggregate.ts diff --git a/src/domain/creator/aggregate/index.ts b/development/social/domain/creator/aggregate/index.ts similarity index 100% rename from src/domain/creator/aggregate/index.ts rename to development/social/domain/creator/aggregate/index.ts diff --git a/src/domain/creator/aggregate/types.ts b/development/social/domain/creator/aggregate/types.ts similarity index 100% rename from src/domain/creator/aggregate/types.ts rename to development/social/domain/creator/aggregate/types.ts diff --git a/src/domain/creator/cleanNickname/cleanNickname.ts b/development/social/domain/creator/cleanNickname/cleanNickname.ts similarity index 100% rename from src/domain/creator/cleanNickname/cleanNickname.ts rename to development/social/domain/creator/cleanNickname/cleanNickname.ts diff --git a/src/domain/creator/cleanNickname/definitions.ts b/development/social/domain/creator/cleanNickname/definitions.ts similarity index 100% rename from src/domain/creator/cleanNickname/definitions.ts rename to development/social/domain/creator/cleanNickname/definitions.ts diff --git a/src/domain/creator/cleanNickname/index.ts b/development/social/domain/creator/cleanNickname/index.ts similarity index 100% rename from src/domain/creator/cleanNickname/index.ts rename to development/social/domain/creator/cleanNickname/index.ts diff --git a/src/domain/creator/create/InvalidCreator.ts b/development/social/domain/creator/create/InvalidCreator.ts similarity index 100% rename from src/domain/creator/create/InvalidCreator.ts rename to development/social/domain/creator/create/InvalidCreator.ts diff --git a/src/domain/creator/create/create.ts b/development/social/domain/creator/create/create.ts similarity index 100% rename from src/domain/creator/create/create.ts rename to development/social/domain/creator/create/create.ts diff --git a/src/domain/creator/create/createData.ts b/development/social/domain/creator/create/createData.ts similarity index 100% rename from src/domain/creator/create/createData.ts rename to development/social/domain/creator/create/createData.ts diff --git a/src/domain/creator/create/index.ts b/development/social/domain/creator/create/index.ts similarity index 100% rename from src/domain/creator/create/index.ts rename to development/social/domain/creator/create/index.ts diff --git a/src/domain/creator/create/insertData.ts b/development/social/domain/creator/create/insertData.ts similarity index 100% rename from src/domain/creator/create/insertData.ts rename to development/social/domain/creator/create/insertData.ts diff --git a/src/domain/creator/create/types.ts b/development/social/domain/creator/create/types.ts similarity index 100% rename from src/domain/creator/create/types.ts rename to development/social/domain/creator/create/types.ts diff --git a/src/domain/creator/create/validateData.ts b/development/social/domain/creator/create/validateData.ts similarity index 100% rename from src/domain/creator/create/validateData.ts rename to development/social/domain/creator/create/validateData.ts diff --git a/src/domain/creator/definitions.ts b/development/social/domain/creator/definitions.ts similarity index 100% rename from src/domain/creator/definitions.ts rename to development/social/domain/creator/definitions.ts diff --git a/src/domain/creator/erase/erase.ts b/development/social/domain/creator/erase/erase.ts similarity index 100% rename from src/domain/creator/erase/erase.ts rename to development/social/domain/creator/erase/erase.ts diff --git a/src/domain/creator/erase/index.ts b/development/social/domain/creator/erase/index.ts similarity index 100% rename from src/domain/creator/erase/index.ts rename to development/social/domain/creator/erase/index.ts diff --git a/src/domain/creator/generateNickname/TooManySimilarNicknames.ts b/development/social/domain/creator/generateNickname/TooManySimilarNicknames.ts similarity index 100% rename from src/domain/creator/generateNickname/TooManySimilarNicknames.ts rename to development/social/domain/creator/generateNickname/TooManySimilarNicknames.ts diff --git a/src/domain/creator/generateNickname/generateNickname.ts b/development/social/domain/creator/generateNickname/generateNickname.ts similarity index 100% rename from src/domain/creator/generateNickname/generateNickname.ts rename to development/social/domain/creator/generateNickname/generateNickname.ts diff --git a/src/domain/creator/generateNickname/index.ts b/development/social/domain/creator/generateNickname/index.ts similarity index 100% rename from src/domain/creator/generateNickname/index.ts rename to development/social/domain/creator/generateNickname/index.ts diff --git a/src/domain/creator/generateNickname/retrieveByNickname.ts b/development/social/domain/creator/generateNickname/retrieveByNickname.ts similarity index 100% rename from src/domain/creator/generateNickname/retrieveByNickname.ts rename to development/social/domain/creator/generateNickname/retrieveByNickname.ts diff --git a/src/domain/creator/generateNickname/retrieveByStartNickname.ts b/development/social/domain/creator/generateNickname/retrieveByStartNickname.ts similarity index 100% rename from src/domain/creator/generateNickname/retrieveByStartNickname.ts rename to development/social/domain/creator/generateNickname/retrieveByStartNickname.ts diff --git a/src/domain/creator/getByEmail/getByEmail.ts b/development/social/domain/creator/getByEmail/getByEmail.ts similarity index 100% rename from src/domain/creator/getByEmail/getByEmail.ts rename to development/social/domain/creator/getByEmail/getByEmail.ts diff --git a/src/domain/creator/getByEmail/index.ts b/development/social/domain/creator/getByEmail/index.ts similarity index 100% rename from src/domain/creator/getByEmail/index.ts rename to development/social/domain/creator/getByEmail/index.ts diff --git a/src/domain/creator/getById/CreatorNotFound.ts b/development/social/domain/creator/getById/CreatorNotFound.ts similarity index 100% rename from src/domain/creator/getById/CreatorNotFound.ts rename to development/social/domain/creator/getById/CreatorNotFound.ts diff --git a/src/domain/creator/getById/getById.ts b/development/social/domain/creator/getById/getById.ts similarity index 100% rename from src/domain/creator/getById/getById.ts rename to development/social/domain/creator/getById/getById.ts diff --git a/src/domain/creator/getById/index.ts b/development/social/domain/creator/getById/index.ts similarity index 100% rename from src/domain/creator/getById/index.ts rename to development/social/domain/creator/getById/index.ts diff --git a/src/domain/creator/getByIdAggregated/getByIdAggregated.ts b/development/social/domain/creator/getByIdAggregated/getByIdAggregated.ts similarity index 100% rename from src/domain/creator/getByIdAggregated/getByIdAggregated.ts rename to development/social/domain/creator/getByIdAggregated/getByIdAggregated.ts diff --git a/src/domain/creator/getByIdAggregated/index.ts b/development/social/domain/creator/getByIdAggregated/index.ts similarity index 100% rename from src/domain/creator/getByIdAggregated/index.ts rename to development/social/domain/creator/getByIdAggregated/index.ts diff --git a/src/domain/creator/getByNickname/NicknameNotFound.ts b/development/social/domain/creator/getByNickname/NicknameNotFound.ts similarity index 100% rename from src/domain/creator/getByNickname/NicknameNotFound.ts rename to development/social/domain/creator/getByNickname/NicknameNotFound.ts diff --git a/src/domain/creator/getByNickname/getByNickname.ts b/development/social/domain/creator/getByNickname/getByNickname.ts similarity index 100% rename from src/domain/creator/getByNickname/getByNickname.ts rename to development/social/domain/creator/getByNickname/getByNickname.ts diff --git a/src/domain/creator/getByNickname/index.ts b/development/social/domain/creator/getByNickname/index.ts similarity index 100% rename from src/domain/creator/getByNickname/index.ts rename to development/social/domain/creator/getByNickname/index.ts diff --git a/src/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts b/development/social/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts similarity index 100% rename from src/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts rename to development/social/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts diff --git a/src/domain/creator/getByNicknameAggregated/index.ts b/development/social/domain/creator/getByNicknameAggregated/index.ts similarity index 100% rename from src/domain/creator/getByNicknameAggregated/index.ts rename to development/social/domain/creator/getByNicknameAggregated/index.ts diff --git a/src/domain/creator/getMe/getMe.ts b/development/social/domain/creator/getMe/getMe.ts similarity index 100% rename from src/domain/creator/getMe/getMe.ts rename to development/social/domain/creator/getMe/getMe.ts diff --git a/src/domain/creator/getMe/index.ts b/development/social/domain/creator/getMe/index.ts similarity index 100% rename from src/domain/creator/getMe/index.ts rename to development/social/domain/creator/getMe/index.ts diff --git a/src/domain/creator/getMeAggregated/getMeAggregated.ts b/development/social/domain/creator/getMeAggregated/getMeAggregated.ts similarity index 100% rename from src/domain/creator/getMeAggregated/getMeAggregated.ts rename to development/social/domain/creator/getMeAggregated/getMeAggregated.ts diff --git a/src/domain/creator/getMeAggregated/index.ts b/development/social/domain/creator/getMeAggregated/index.ts similarity index 100% rename from src/domain/creator/getMeAggregated/index.ts rename to development/social/domain/creator/getMeAggregated/index.ts diff --git a/src/domain/creator/getOthers/getOthers.ts b/development/social/domain/creator/getOthers/getOthers.ts similarity index 100% rename from src/domain/creator/getOthers/getOthers.ts rename to development/social/domain/creator/getOthers/getOthers.ts diff --git a/src/domain/creator/getOthers/index.ts b/development/social/domain/creator/getOthers/index.ts similarity index 100% rename from src/domain/creator/getOthers/index.ts rename to development/social/domain/creator/getOthers/index.ts diff --git a/src/domain/creator/index.ts b/development/social/domain/creator/index.ts similarity index 100% rename from src/domain/creator/index.ts rename to development/social/domain/creator/index.ts diff --git a/src/domain/creator/register/definitions.ts b/development/social/domain/creator/register/definitions.ts similarity index 100% rename from src/domain/creator/register/definitions.ts rename to development/social/domain/creator/register/definitions.ts diff --git a/src/domain/creator/register/downloadPortrait.ts b/development/social/domain/creator/register/downloadPortrait.ts similarity index 100% rename from src/domain/creator/register/downloadPortrait.ts rename to development/social/domain/creator/register/downloadPortrait.ts diff --git a/src/domain/creator/register/index.ts b/development/social/domain/creator/register/index.ts similarity index 100% rename from src/domain/creator/register/index.ts rename to development/social/domain/creator/register/index.ts diff --git a/src/domain/creator/register/publish.ts b/development/social/domain/creator/register/publish.ts similarity index 100% rename from src/domain/creator/register/publish.ts rename to development/social/domain/creator/register/publish.ts diff --git a/src/domain/creator/register/register.ts b/development/social/domain/creator/register/register.ts similarity index 100% rename from src/domain/creator/register/register.ts rename to development/social/domain/creator/register/register.ts diff --git a/src/domain/creator/register/subscribe.ts b/development/social/domain/creator/register/subscribe.ts similarity index 100% rename from src/domain/creator/register/subscribe.ts rename to development/social/domain/creator/register/subscribe.ts diff --git a/src/domain/creator/register/types.ts b/development/social/domain/creator/register/types.ts similarity index 100% rename from src/domain/creator/register/types.ts rename to development/social/domain/creator/register/types.ts diff --git a/src/domain/creator/types.ts b/development/social/domain/creator/types.ts similarity index 100% rename from src/domain/creator/types.ts rename to development/social/domain/creator/types.ts diff --git a/src/domain/creator/update/index.ts b/development/social/domain/creator/update/index.ts similarity index 100% rename from src/domain/creator/update/index.ts rename to development/social/domain/creator/update/index.ts diff --git a/src/domain/creator/update/update.ts b/development/social/domain/creator/update/update.ts similarity index 100% rename from src/domain/creator/update/update.ts rename to development/social/domain/creator/update/update.ts diff --git a/src/domain/creator/updateFullName/InvalidFullName.ts b/development/social/domain/creator/updateFullName/InvalidFullName.ts similarity index 100% rename from src/domain/creator/updateFullName/InvalidFullName.ts rename to development/social/domain/creator/updateFullName/InvalidFullName.ts diff --git a/src/domain/creator/updateFullName/index.ts b/development/social/domain/creator/updateFullName/index.ts similarity index 100% rename from src/domain/creator/updateFullName/index.ts rename to development/social/domain/creator/updateFullName/index.ts diff --git a/src/domain/creator/updateFullName/types.ts b/development/social/domain/creator/updateFullName/types.ts similarity index 100% rename from src/domain/creator/updateFullName/types.ts rename to development/social/domain/creator/updateFullName/types.ts diff --git a/src/domain/creator/updateFullName/updateFullName.ts b/development/social/domain/creator/updateFullName/updateFullName.ts similarity index 100% rename from src/domain/creator/updateFullName/updateFullName.ts rename to development/social/domain/creator/updateFullName/updateFullName.ts diff --git a/src/domain/creator/updateFullName/validateData.ts b/development/social/domain/creator/updateFullName/validateData.ts similarity index 100% rename from src/domain/creator/updateFullName/validateData.ts rename to development/social/domain/creator/updateFullName/validateData.ts diff --git a/src/domain/creator/updateNickname/NicknameAlreadyExists.ts b/development/social/domain/creator/updateNickname/NicknameAlreadyExists.ts similarity index 100% rename from src/domain/creator/updateNickname/NicknameAlreadyExists.ts rename to development/social/domain/creator/updateNickname/NicknameAlreadyExists.ts diff --git a/src/domain/creator/updateNickname/index.ts b/development/social/domain/creator/updateNickname/index.ts similarity index 100% rename from src/domain/creator/updateNickname/index.ts rename to development/social/domain/creator/updateNickname/index.ts diff --git a/src/domain/creator/updateNickname/retrieveByNickname.ts b/development/social/domain/creator/updateNickname/retrieveByNickname.ts similarity index 100% rename from src/domain/creator/updateNickname/retrieveByNickname.ts rename to development/social/domain/creator/updateNickname/retrieveByNickname.ts diff --git a/src/domain/creator/updateNickname/updateNickname.ts b/development/social/domain/creator/updateNickname/updateNickname.ts similarity index 100% rename from src/domain/creator/updateNickname/updateNickname.ts rename to development/social/domain/creator/updateNickname/updateNickname.ts diff --git a/src/domain/definitions.ts b/development/social/domain/definitions.ts similarity index 100% rename from src/domain/definitions.ts rename to development/social/domain/definitions.ts diff --git a/src/domain/image/create/InvalidDataURL.ts b/development/social/domain/image/create/InvalidDataURL.ts similarity index 100% rename from src/domain/image/create/InvalidDataURL.ts rename to development/social/domain/image/create/InvalidDataURL.ts diff --git a/src/domain/image/create/convertDataUrl.ts b/development/social/domain/image/create/convertDataUrl.ts similarity index 100% rename from src/domain/image/create/convertDataUrl.ts rename to development/social/domain/image/create/convertDataUrl.ts diff --git a/src/domain/image/create/create.ts b/development/social/domain/image/create/create.ts similarity index 100% rename from src/domain/image/create/create.ts rename to development/social/domain/image/create/create.ts diff --git a/src/domain/image/create/index.ts b/development/social/domain/image/create/index.ts similarity index 100% rename from src/domain/image/create/index.ts rename to development/social/domain/image/create/index.ts diff --git a/src/domain/image/definitions.ts b/development/social/domain/image/definitions.ts similarity index 100% rename from src/domain/image/definitions.ts rename to development/social/domain/image/definitions.ts diff --git a/src/domain/image/download/ImageNotDownloaded.ts b/development/social/domain/image/download/ImageNotDownloaded.ts similarity index 100% rename from src/domain/image/download/ImageNotDownloaded.ts rename to development/social/domain/image/download/ImageNotDownloaded.ts diff --git a/src/domain/image/download/download.ts b/development/social/domain/image/download/download.ts similarity index 100% rename from src/domain/image/download/download.ts rename to development/social/domain/image/download/download.ts diff --git a/src/domain/image/download/downloadImage.ts b/development/social/domain/image/download/downloadImage.ts similarity index 100% rename from src/domain/image/download/downloadImage.ts rename to development/social/domain/image/download/downloadImage.ts diff --git a/src/domain/image/download/getMetaData.ts b/development/social/domain/image/download/getMetaData.ts similarity index 100% rename from src/domain/image/download/getMetaData.ts rename to development/social/domain/image/download/getMetaData.ts diff --git a/src/domain/image/download/index.ts b/development/social/domain/image/download/index.ts similarity index 100% rename from src/domain/image/download/index.ts rename to development/social/domain/image/download/index.ts diff --git a/src/domain/image/erase/erase.ts b/development/social/domain/image/erase/erase.ts similarity index 100% rename from src/domain/image/erase/erase.ts rename to development/social/domain/image/erase/erase.ts diff --git a/src/domain/image/erase/index.ts b/development/social/domain/image/erase/index.ts similarity index 100% rename from src/domain/image/erase/index.ts rename to development/social/domain/image/erase/index.ts diff --git a/src/domain/image/getById/ImageNotFound.ts b/development/social/domain/image/getById/ImageNotFound.ts similarity index 100% rename from src/domain/image/getById/ImageNotFound.ts rename to development/social/domain/image/getById/ImageNotFound.ts diff --git a/src/domain/image/getById/createDataUrl.ts b/development/social/domain/image/getById/createDataUrl.ts similarity index 100% rename from src/domain/image/getById/createDataUrl.ts rename to development/social/domain/image/getById/createDataUrl.ts diff --git a/src/domain/image/getById/getById.ts b/development/social/domain/image/getById/getById.ts similarity index 100% rename from src/domain/image/getById/getById.ts rename to development/social/domain/image/getById/getById.ts diff --git a/src/domain/image/getById/index.ts b/development/social/domain/image/getById/index.ts similarity index 100% rename from src/domain/image/getById/index.ts rename to development/social/domain/image/getById/index.ts diff --git a/src/domain/image/getById/retrieveData.ts b/development/social/domain/image/getById/retrieveData.ts similarity index 100% rename from src/domain/image/getById/retrieveData.ts rename to development/social/domain/image/getById/retrieveData.ts diff --git a/src/domain/image/getById/retrieveFile.ts b/development/social/domain/image/getById/retrieveFile.ts similarity index 100% rename from src/domain/image/getById/retrieveFile.ts rename to development/social/domain/image/getById/retrieveFile.ts diff --git a/src/domain/image/index.ts b/development/social/domain/image/index.ts similarity index 100% rename from src/domain/image/index.ts rename to development/social/domain/image/index.ts diff --git a/src/domain/image/save/InvalidImage.ts b/development/social/domain/image/save/InvalidImage.ts similarity index 100% rename from src/domain/image/save/InvalidImage.ts rename to development/social/domain/image/save/InvalidImage.ts diff --git a/src/domain/image/save/createData.ts b/development/social/domain/image/save/createData.ts similarity index 100% rename from src/domain/image/save/createData.ts rename to development/social/domain/image/save/createData.ts diff --git a/src/domain/image/save/fileExists.ts b/development/social/domain/image/save/fileExists.ts similarity index 100% rename from src/domain/image/save/fileExists.ts rename to development/social/domain/image/save/fileExists.ts diff --git a/src/domain/image/save/generateStorageKey.ts b/development/social/domain/image/save/generateStorageKey.ts similarity index 100% rename from src/domain/image/save/generateStorageKey.ts rename to development/social/domain/image/save/generateStorageKey.ts diff --git a/src/domain/image/save/index.ts b/development/social/domain/image/save/index.ts similarity index 100% rename from src/domain/image/save/index.ts rename to development/social/domain/image/save/index.ts diff --git a/src/domain/image/save/insertData.ts b/development/social/domain/image/save/insertData.ts similarity index 100% rename from src/domain/image/save/insertData.ts rename to development/social/domain/image/save/insertData.ts diff --git a/src/domain/image/save/insertFile.ts b/development/social/domain/image/save/insertFile.ts similarity index 100% rename from src/domain/image/save/insertFile.ts rename to development/social/domain/image/save/insertFile.ts diff --git a/src/domain/image/save/save.ts b/development/social/domain/image/save/save.ts similarity index 100% rename from src/domain/image/save/save.ts rename to development/social/domain/image/save/save.ts diff --git a/src/domain/image/save/validateData.ts b/development/social/domain/image/save/validateData.ts similarity index 100% rename from src/domain/image/save/validateData.ts rename to development/social/domain/image/save/validateData.ts diff --git a/src/domain/image/types.ts b/development/social/domain/image/types.ts similarity index 100% rename from src/domain/image/types.ts rename to development/social/domain/image/types.ts diff --git a/src/domain/image/validate/InvalidImage.ts b/development/social/domain/image/validate/InvalidImage.ts similarity index 100% rename from src/domain/image/validate/InvalidImage.ts rename to development/social/domain/image/validate/InvalidImage.ts diff --git a/src/domain/image/validate/index.ts b/development/social/domain/image/validate/index.ts similarity index 100% rename from src/domain/image/validate/index.ts rename to development/social/domain/image/validate/index.ts diff --git a/src/domain/image/validate/validate.ts b/development/social/domain/image/validate/validate.ts similarity index 100% rename from src/domain/image/validate/validate.ts rename to development/social/domain/image/validate/validate.ts diff --git a/src/domain/notification/aggregate/aggregate.ts b/development/social/domain/notification/aggregate/aggregate.ts similarity index 100% rename from src/domain/notification/aggregate/aggregate.ts rename to development/social/domain/notification/aggregate/aggregate.ts diff --git a/src/domain/notification/aggregate/index.ts b/development/social/domain/notification/aggregate/index.ts similarity index 100% rename from src/domain/notification/aggregate/index.ts rename to development/social/domain/notification/aggregate/index.ts diff --git a/src/domain/notification/aggregate/types.ts b/development/social/domain/notification/aggregate/types.ts similarity index 100% rename from src/domain/notification/aggregate/types.ts rename to development/social/domain/notification/aggregate/types.ts diff --git a/src/domain/notification/create/create.ts b/development/social/domain/notification/create/create.ts similarity index 100% rename from src/domain/notification/create/create.ts rename to development/social/domain/notification/create/create.ts diff --git a/src/domain/notification/create/createData.ts b/development/social/domain/notification/create/createData.ts similarity index 100% rename from src/domain/notification/create/createData.ts rename to development/social/domain/notification/create/createData.ts diff --git a/src/domain/notification/create/index.ts b/development/social/domain/notification/create/index.ts similarity index 100% rename from src/domain/notification/create/index.ts rename to development/social/domain/notification/create/index.ts diff --git a/src/domain/notification/create/insertData.ts b/development/social/domain/notification/create/insertData.ts similarity index 100% rename from src/domain/notification/create/insertData.ts rename to development/social/domain/notification/create/insertData.ts diff --git a/src/domain/notification/definitions.ts b/development/social/domain/notification/definitions.ts similarity index 100% rename from src/domain/notification/definitions.ts rename to development/social/domain/notification/definitions.ts diff --git a/src/domain/notification/getByPostId/getByPostId.ts b/development/social/domain/notification/getByPostId/getByPostId.ts similarity index 100% rename from src/domain/notification/getByPostId/getByPostId.ts rename to development/social/domain/notification/getByPostId/getByPostId.ts diff --git a/src/domain/notification/getByPostId/index.ts b/development/social/domain/notification/getByPostId/index.ts similarity index 100% rename from src/domain/notification/getByPostId/index.ts rename to development/social/domain/notification/getByPostId/index.ts diff --git a/src/domain/notification/getRecent/getRecent.ts b/development/social/domain/notification/getRecent/getRecent.ts similarity index 100% rename from src/domain/notification/getRecent/getRecent.ts rename to development/social/domain/notification/getRecent/getRecent.ts diff --git a/src/domain/notification/getRecent/index.ts b/development/social/domain/notification/getRecent/index.ts similarity index 100% rename from src/domain/notification/getRecent/index.ts rename to development/social/domain/notification/getRecent/index.ts diff --git a/src/domain/notification/getRecentAggregated/getRecentAggregated.ts b/development/social/domain/notification/getRecentAggregated/getRecentAggregated.ts similarity index 100% rename from src/domain/notification/getRecentAggregated/getRecentAggregated.ts rename to development/social/domain/notification/getRecentAggregated/getRecentAggregated.ts diff --git a/src/domain/notification/getRecentAggregated/index.ts b/development/social/domain/notification/getRecentAggregated/index.ts similarity index 100% rename from src/domain/notification/getRecentAggregated/index.ts rename to development/social/domain/notification/getRecentAggregated/index.ts diff --git a/src/domain/notification/index.ts b/development/social/domain/notification/index.ts similarity index 100% rename from src/domain/notification/index.ts rename to development/social/domain/notification/index.ts diff --git a/src/domain/notification/notify/createdPost.ts b/development/social/domain/notification/notify/createdPost.ts similarity index 100% rename from src/domain/notification/notify/createdPost.ts rename to development/social/domain/notification/notify/createdPost.ts diff --git a/src/domain/notification/notify/index.ts b/development/social/domain/notification/notify/index.ts similarity index 100% rename from src/domain/notification/notify/index.ts rename to development/social/domain/notification/notify/index.ts diff --git a/src/domain/notification/notify/ratedPost.ts b/development/social/domain/notification/notify/ratedPost.ts similarity index 100% rename from src/domain/notification/notify/ratedPost.ts rename to development/social/domain/notification/notify/ratedPost.ts diff --git a/src/domain/notification/notify/removedPost.ts b/development/social/domain/notification/notify/removedPost.ts similarity index 100% rename from src/domain/notification/notify/removedPost.ts rename to development/social/domain/notification/notify/removedPost.ts diff --git a/src/domain/notification/notify/startedFollowing.ts b/development/social/domain/notification/notify/startedFollowing.ts similarity index 100% rename from src/domain/notification/notify/startedFollowing.ts rename to development/social/domain/notification/notify/startedFollowing.ts diff --git a/src/domain/notification/notify/subscriptions.ts b/development/social/domain/notification/notify/subscriptions.ts similarity index 100% rename from src/domain/notification/notify/subscriptions.ts rename to development/social/domain/notification/notify/subscriptions.ts diff --git a/src/domain/notification/remove/index.ts b/development/social/domain/notification/remove/index.ts similarity index 100% rename from src/domain/notification/remove/index.ts rename to development/social/domain/notification/remove/index.ts diff --git a/src/domain/notification/remove/remove.ts b/development/social/domain/notification/remove/remove.ts similarity index 100% rename from src/domain/notification/remove/remove.ts rename to development/social/domain/notification/remove/remove.ts diff --git a/src/domain/notification/types.ts b/development/social/domain/notification/types.ts similarity index 100% rename from src/domain/notification/types.ts rename to development/social/domain/notification/types.ts diff --git a/src/domain/post.metrics/create/create.ts b/development/social/domain/post.metrics/create/create.ts similarity index 100% rename from src/domain/post.metrics/create/create.ts rename to development/social/domain/post.metrics/create/create.ts diff --git a/src/domain/post.metrics/create/createData.ts b/development/social/domain/post.metrics/create/createData.ts similarity index 100% rename from src/domain/post.metrics/create/createData.ts rename to development/social/domain/post.metrics/create/createData.ts diff --git a/src/domain/post.metrics/create/index.ts b/development/social/domain/post.metrics/create/index.ts similarity index 100% rename from src/domain/post.metrics/create/index.ts rename to development/social/domain/post.metrics/create/index.ts diff --git a/src/domain/post.metrics/create/insertData.ts b/development/social/domain/post.metrics/create/insertData.ts similarity index 100% rename from src/domain/post.metrics/create/insertData.ts rename to development/social/domain/post.metrics/create/insertData.ts diff --git a/src/domain/post.metrics/create/subscriptions.ts b/development/social/domain/post.metrics/create/subscriptions.ts similarity index 100% rename from src/domain/post.metrics/create/subscriptions.ts rename to development/social/domain/post.metrics/create/subscriptions.ts diff --git a/src/domain/post.metrics/definitions.ts b/development/social/domain/post.metrics/definitions.ts similarity index 100% rename from src/domain/post.metrics/definitions.ts rename to development/social/domain/post.metrics/definitions.ts diff --git a/src/domain/post.metrics/getByPost/PostMetricsNotFound.ts b/development/social/domain/post.metrics/getByPost/PostMetricsNotFound.ts similarity index 100% rename from src/domain/post.metrics/getByPost/PostMetricsNotFound.ts rename to development/social/domain/post.metrics/getByPost/PostMetricsNotFound.ts diff --git a/src/domain/post.metrics/getByPost/getByPost.ts b/development/social/domain/post.metrics/getByPost/getByPost.ts similarity index 100% rename from src/domain/post.metrics/getByPost/getByPost.ts rename to development/social/domain/post.metrics/getByPost/getByPost.ts diff --git a/src/domain/post.metrics/getByPost/index.ts b/development/social/domain/post.metrics/getByPost/index.ts similarity index 100% rename from src/domain/post.metrics/getByPost/index.ts rename to development/social/domain/post.metrics/getByPost/index.ts diff --git a/src/domain/post.metrics/index.ts b/development/social/domain/post.metrics/index.ts similarity index 100% rename from src/domain/post.metrics/index.ts rename to development/social/domain/post.metrics/index.ts diff --git a/src/domain/post.metrics/types.ts b/development/social/domain/post.metrics/types.ts similarity index 100% rename from src/domain/post.metrics/types.ts rename to development/social/domain/post.metrics/types.ts diff --git a/src/domain/post.metrics/update/index.ts b/development/social/domain/post.metrics/update/index.ts similarity index 100% rename from src/domain/post.metrics/update/index.ts rename to development/social/domain/post.metrics/update/index.ts diff --git a/src/domain/post.metrics/update/update.ts b/development/social/domain/post.metrics/update/update.ts similarity index 100% rename from src/domain/post.metrics/update/update.ts rename to development/social/domain/post.metrics/update/update.ts diff --git a/src/domain/post.metrics/updateRatings/index.ts b/development/social/domain/post.metrics/updateRatings/index.ts similarity index 100% rename from src/domain/post.metrics/updateRatings/index.ts rename to development/social/domain/post.metrics/updateRatings/index.ts diff --git a/src/domain/post.metrics/updateRatings/subscriptions.ts b/development/social/domain/post.metrics/updateRatings/subscriptions.ts similarity index 100% rename from src/domain/post.metrics/updateRatings/subscriptions.ts rename to development/social/domain/post.metrics/updateRatings/subscriptions.ts diff --git a/src/domain/post.metrics/updateRatings/updateRatings.ts b/development/social/domain/post.metrics/updateRatings/updateRatings.ts similarity index 100% rename from src/domain/post.metrics/updateRatings/updateRatings.ts rename to development/social/domain/post.metrics/updateRatings/updateRatings.ts diff --git a/src/domain/post.metrics/updateReactions/index.ts b/development/social/domain/post.metrics/updateReactions/index.ts similarity index 100% rename from src/domain/post.metrics/updateReactions/index.ts rename to development/social/domain/post.metrics/updateReactions/index.ts diff --git a/src/domain/post.metrics/updateReactions/subscriptions.ts b/development/social/domain/post.metrics/updateReactions/subscriptions.ts similarity index 100% rename from src/domain/post.metrics/updateReactions/subscriptions.ts rename to development/social/domain/post.metrics/updateReactions/subscriptions.ts diff --git a/src/domain/post.metrics/updateReactions/updateReactions.ts b/development/social/domain/post.metrics/updateReactions/updateReactions.ts similarity index 100% rename from src/domain/post.metrics/updateReactions/updateReactions.ts rename to development/social/domain/post.metrics/updateReactions/updateReactions.ts diff --git a/src/domain/post/aggregate/aggregate.ts b/development/social/domain/post/aggregate/aggregate.ts similarity index 100% rename from src/domain/post/aggregate/aggregate.ts rename to development/social/domain/post/aggregate/aggregate.ts diff --git a/src/domain/post/aggregate/index.ts b/development/social/domain/post/aggregate/index.ts similarity index 100% rename from src/domain/post/aggregate/index.ts rename to development/social/domain/post/aggregate/index.ts diff --git a/src/domain/post/aggregate/types.ts b/development/social/domain/post/aggregate/types.ts similarity index 100% rename from src/domain/post/aggregate/types.ts rename to development/social/domain/post/aggregate/types.ts diff --git a/src/domain/post/create/InvalidPost.ts b/development/social/domain/post/create/InvalidPost.ts similarity index 100% rename from src/domain/post/create/InvalidPost.ts rename to development/social/domain/post/create/InvalidPost.ts diff --git a/src/domain/post/create/create.ts b/development/social/domain/post/create/create.ts similarity index 100% rename from src/domain/post/create/create.ts rename to development/social/domain/post/create/create.ts diff --git a/src/domain/post/create/createData.ts b/development/social/domain/post/create/createData.ts similarity index 100% rename from src/domain/post/create/createData.ts rename to development/social/domain/post/create/createData.ts diff --git a/src/domain/post/create/definitions.ts b/development/social/domain/post/create/definitions.ts similarity index 100% rename from src/domain/post/create/definitions.ts rename to development/social/domain/post/create/definitions.ts diff --git a/src/domain/post/create/index.ts b/development/social/domain/post/create/index.ts similarity index 100% rename from src/domain/post/create/index.ts rename to development/social/domain/post/create/index.ts diff --git a/src/domain/post/create/insertData.ts b/development/social/domain/post/create/insertData.ts similarity index 100% rename from src/domain/post/create/insertData.ts rename to development/social/domain/post/create/insertData.ts diff --git a/src/domain/post/create/publish.ts b/development/social/domain/post/create/publish.ts similarity index 100% rename from src/domain/post/create/publish.ts rename to development/social/domain/post/create/publish.ts diff --git a/src/domain/post/create/subscribe.ts b/development/social/domain/post/create/subscribe.ts similarity index 100% rename from src/domain/post/create/subscribe.ts rename to development/social/domain/post/create/subscribe.ts diff --git a/src/domain/post/create/types.ts b/development/social/domain/post/create/types.ts similarity index 100% rename from src/domain/post/create/types.ts rename to development/social/domain/post/create/types.ts diff --git a/src/domain/post/create/validateData.ts b/development/social/domain/post/create/validateData.ts similarity index 100% rename from src/domain/post/create/validateData.ts rename to development/social/domain/post/create/validateData.ts diff --git a/src/domain/post/createWithComic/createWithComic.ts b/development/social/domain/post/createWithComic/createWithComic.ts similarity index 100% rename from src/domain/post/createWithComic/createWithComic.ts rename to development/social/domain/post/createWithComic/createWithComic.ts diff --git a/src/domain/post/createWithComic/index.ts b/development/social/domain/post/createWithComic/index.ts similarity index 100% rename from src/domain/post/createWithComic/index.ts rename to development/social/domain/post/createWithComic/index.ts diff --git a/src/domain/post/createWithComment/createWithComment.ts b/development/social/domain/post/createWithComment/createWithComment.ts similarity index 100% rename from src/domain/post/createWithComment/createWithComment.ts rename to development/social/domain/post/createWithComment/createWithComment.ts diff --git a/src/domain/post/createWithComment/index.ts b/development/social/domain/post/createWithComment/index.ts similarity index 100% rename from src/domain/post/createWithComment/index.ts rename to development/social/domain/post/createWithComment/index.ts diff --git a/src/domain/post/definitions.ts b/development/social/domain/post/definitions.ts similarity index 100% rename from src/domain/post/definitions.ts rename to development/social/domain/post/definitions.ts diff --git a/src/domain/post/erase/erase.ts b/development/social/domain/post/erase/erase.ts similarity index 100% rename from src/domain/post/erase/erase.ts rename to development/social/domain/post/erase/erase.ts diff --git a/src/domain/post/erase/index.ts b/development/social/domain/post/erase/index.ts similarity index 100% rename from src/domain/post/erase/index.ts rename to development/social/domain/post/erase/index.ts diff --git a/src/domain/post/explore/explore.ts b/development/social/domain/post/explore/explore.ts similarity index 100% rename from src/domain/post/explore/explore.ts rename to development/social/domain/post/explore/explore.ts diff --git a/src/domain/post/explore/index.ts b/development/social/domain/post/explore/index.ts similarity index 100% rename from src/domain/post/explore/index.ts rename to development/social/domain/post/explore/index.ts diff --git a/src/domain/post/explore/retrieveData.ts b/development/social/domain/post/explore/retrieveData.ts similarity index 100% rename from src/domain/post/explore/retrieveData.ts rename to development/social/domain/post/explore/retrieveData.ts diff --git a/src/domain/post/exploreAggregated/exploreAggregated.ts b/development/social/domain/post/exploreAggregated/exploreAggregated.ts similarity index 100% rename from src/domain/post/exploreAggregated/exploreAggregated.ts rename to development/social/domain/post/exploreAggregated/exploreAggregated.ts diff --git a/src/domain/post/exploreAggregated/index.ts b/development/social/domain/post/exploreAggregated/index.ts similarity index 100% rename from src/domain/post/exploreAggregated/index.ts rename to development/social/domain/post/exploreAggregated/index.ts diff --git a/src/domain/post/getByCreator/getByCreator.ts b/development/social/domain/post/getByCreator/getByCreator.ts similarity index 100% rename from src/domain/post/getByCreator/getByCreator.ts rename to development/social/domain/post/getByCreator/getByCreator.ts diff --git a/src/domain/post/getByCreator/index.ts b/development/social/domain/post/getByCreator/index.ts similarity index 100% rename from src/domain/post/getByCreator/index.ts rename to development/social/domain/post/getByCreator/index.ts diff --git a/src/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts b/development/social/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts similarity index 100% rename from src/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts rename to development/social/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts diff --git a/src/domain/post/getByCreatorAggregated/index.ts b/development/social/domain/post/getByCreatorAggregated/index.ts similarity index 100% rename from src/domain/post/getByCreatorAggregated/index.ts rename to development/social/domain/post/getByCreatorAggregated/index.ts diff --git a/src/domain/post/getByFollowing/getByFollowing.ts b/development/social/domain/post/getByFollowing/getByFollowing.ts similarity index 100% rename from src/domain/post/getByFollowing/getByFollowing.ts rename to development/social/domain/post/getByFollowing/getByFollowing.ts diff --git a/src/domain/post/getByFollowing/index.ts b/development/social/domain/post/getByFollowing/index.ts similarity index 100% rename from src/domain/post/getByFollowing/index.ts rename to development/social/domain/post/getByFollowing/index.ts diff --git a/src/domain/post/getByFollowing/retrieveData.ts b/development/social/domain/post/getByFollowing/retrieveData.ts similarity index 100% rename from src/domain/post/getByFollowing/retrieveData.ts rename to development/social/domain/post/getByFollowing/retrieveData.ts diff --git a/src/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts b/development/social/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts similarity index 100% rename from src/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts rename to development/social/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts diff --git a/src/domain/post/getByFollowingAggregated/index.ts b/development/social/domain/post/getByFollowingAggregated/index.ts similarity index 100% rename from src/domain/post/getByFollowingAggregated/index.ts rename to development/social/domain/post/getByFollowingAggregated/index.ts diff --git a/src/domain/post/getById/PostNotFound.ts b/development/social/domain/post/getById/PostNotFound.ts similarity index 100% rename from src/domain/post/getById/PostNotFound.ts rename to development/social/domain/post/getById/PostNotFound.ts diff --git a/src/domain/post/getById/getById.ts b/development/social/domain/post/getById/getById.ts similarity index 100% rename from src/domain/post/getById/getById.ts rename to development/social/domain/post/getById/getById.ts diff --git a/src/domain/post/getById/index.ts b/development/social/domain/post/getById/index.ts similarity index 100% rename from src/domain/post/getById/index.ts rename to development/social/domain/post/getById/index.ts diff --git a/src/domain/post/getByIdAggregated/getByIdAggregated.ts b/development/social/domain/post/getByIdAggregated/getByIdAggregated.ts similarity index 100% rename from src/domain/post/getByIdAggregated/getByIdAggregated.ts rename to development/social/domain/post/getByIdAggregated/getByIdAggregated.ts diff --git a/src/domain/post/getByIdAggregated/index.ts b/development/social/domain/post/getByIdAggregated/index.ts similarity index 100% rename from src/domain/post/getByIdAggregated/index.ts rename to development/social/domain/post/getByIdAggregated/index.ts diff --git a/src/domain/post/getByParent/getByParent.ts b/development/social/domain/post/getByParent/getByParent.ts similarity index 100% rename from src/domain/post/getByParent/getByParent.ts rename to development/social/domain/post/getByParent/getByParent.ts diff --git a/src/domain/post/getByParent/index.ts b/development/social/domain/post/getByParent/index.ts similarity index 100% rename from src/domain/post/getByParent/index.ts rename to development/social/domain/post/getByParent/index.ts diff --git a/src/domain/post/getByParentAggregated/getByParentAggregated.ts b/development/social/domain/post/getByParentAggregated/getByParentAggregated.ts similarity index 100% rename from src/domain/post/getByParentAggregated/getByParentAggregated.ts rename to development/social/domain/post/getByParentAggregated/getByParentAggregated.ts diff --git a/src/domain/post/getByParentAggregated/index.ts b/development/social/domain/post/getByParentAggregated/index.ts similarity index 100% rename from src/domain/post/getByParentAggregated/index.ts rename to development/social/domain/post/getByParentAggregated/index.ts diff --git a/src/domain/post/getRecommended/getRecommended.ts b/development/social/domain/post/getRecommended/getRecommended.ts similarity index 100% rename from src/domain/post/getRecommended/getRecommended.ts rename to development/social/domain/post/getRecommended/getRecommended.ts diff --git a/src/domain/post/getRecommended/index.ts b/development/social/domain/post/getRecommended/index.ts similarity index 100% rename from src/domain/post/getRecommended/index.ts rename to development/social/domain/post/getRecommended/index.ts diff --git a/src/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts b/development/social/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts similarity index 100% rename from src/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts rename to development/social/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts diff --git a/src/domain/post/getRecommendedAggregated/index.ts b/development/social/domain/post/getRecommendedAggregated/index.ts similarity index 100% rename from src/domain/post/getRecommendedAggregated/index.ts rename to development/social/domain/post/getRecommendedAggregated/index.ts diff --git a/src/domain/post/index.ts b/development/social/domain/post/index.ts similarity index 100% rename from src/domain/post/index.ts rename to development/social/domain/post/index.ts diff --git a/src/domain/post/remove/definitions.ts b/development/social/domain/post/remove/definitions.ts similarity index 100% rename from src/domain/post/remove/definitions.ts rename to development/social/domain/post/remove/definitions.ts diff --git a/src/domain/post/remove/deleteData.ts b/development/social/domain/post/remove/deleteData.ts similarity index 100% rename from src/domain/post/remove/deleteData.ts rename to development/social/domain/post/remove/deleteData.ts diff --git a/src/domain/post/remove/index.ts b/development/social/domain/post/remove/index.ts similarity index 100% rename from src/domain/post/remove/index.ts rename to development/social/domain/post/remove/index.ts diff --git a/src/domain/post/remove/isNotOwner.ts b/development/social/domain/post/remove/isNotOwner.ts similarity index 100% rename from src/domain/post/remove/isNotOwner.ts rename to development/social/domain/post/remove/isNotOwner.ts diff --git a/src/domain/post/remove/publish.ts b/development/social/domain/post/remove/publish.ts similarity index 100% rename from src/domain/post/remove/publish.ts rename to development/social/domain/post/remove/publish.ts diff --git a/src/domain/post/remove/remove.ts b/development/social/domain/post/remove/remove.ts similarity index 100% rename from src/domain/post/remove/remove.ts rename to development/social/domain/post/remove/remove.ts diff --git a/src/domain/post/remove/subscribe.ts b/development/social/domain/post/remove/subscribe.ts similarity index 100% rename from src/domain/post/remove/subscribe.ts rename to development/social/domain/post/remove/subscribe.ts diff --git a/src/domain/post/remove/types.ts b/development/social/domain/post/remove/types.ts similarity index 100% rename from src/domain/post/remove/types.ts rename to development/social/domain/post/remove/types.ts diff --git a/src/domain/post/remove/undeleteData.ts b/development/social/domain/post/remove/undeleteData.ts similarity index 100% rename from src/domain/post/remove/undeleteData.ts rename to development/social/domain/post/remove/undeleteData.ts diff --git a/src/domain/post/types.ts b/development/social/domain/post/types.ts similarity index 100% rename from src/domain/post/types.ts rename to development/social/domain/post/types.ts diff --git a/src/domain/post/update/index.ts b/development/social/domain/post/update/index.ts similarity index 100% rename from src/domain/post/update/index.ts rename to development/social/domain/post/update/index.ts diff --git a/src/domain/post/update/update.ts b/development/social/domain/post/update/update.ts similarity index 100% rename from src/domain/post/update/update.ts rename to development/social/domain/post/update/update.ts diff --git a/src/domain/rating/create/InvalidRating.ts b/development/social/domain/rating/create/InvalidRating.ts similarity index 100% rename from src/domain/rating/create/InvalidRating.ts rename to development/social/domain/rating/create/InvalidRating.ts diff --git a/src/domain/rating/create/create.ts b/development/social/domain/rating/create/create.ts similarity index 100% rename from src/domain/rating/create/create.ts rename to development/social/domain/rating/create/create.ts diff --git a/src/domain/rating/create/createData.ts b/development/social/domain/rating/create/createData.ts similarity index 100% rename from src/domain/rating/create/createData.ts rename to development/social/domain/rating/create/createData.ts diff --git a/src/domain/rating/create/index.ts b/development/social/domain/rating/create/index.ts similarity index 100% rename from src/domain/rating/create/index.ts rename to development/social/domain/rating/create/index.ts diff --git a/src/domain/rating/create/insertData.ts b/development/social/domain/rating/create/insertData.ts similarity index 100% rename from src/domain/rating/create/insertData.ts rename to development/social/domain/rating/create/insertData.ts diff --git a/src/domain/rating/create/types.ts b/development/social/domain/rating/create/types.ts similarity index 100% rename from src/domain/rating/create/types.ts rename to development/social/domain/rating/create/types.ts diff --git a/src/domain/rating/create/validateData.ts b/development/social/domain/rating/create/validateData.ts similarity index 100% rename from src/domain/rating/create/validateData.ts rename to development/social/domain/rating/create/validateData.ts diff --git a/src/domain/rating/definitions.ts b/development/social/domain/rating/definitions.ts similarity index 100% rename from src/domain/rating/definitions.ts rename to development/social/domain/rating/definitions.ts diff --git a/src/domain/rating/erase/erase.ts b/development/social/domain/rating/erase/erase.ts similarity index 100% rename from src/domain/rating/erase/erase.ts rename to development/social/domain/rating/erase/erase.ts diff --git a/src/domain/rating/erase/index.ts b/development/social/domain/rating/erase/index.ts similarity index 100% rename from src/domain/rating/erase/index.ts rename to development/social/domain/rating/erase/index.ts diff --git a/src/domain/rating/exists/exists.ts b/development/social/domain/rating/exists/exists.ts similarity index 100% rename from src/domain/rating/exists/exists.ts rename to development/social/domain/rating/exists/exists.ts diff --git a/src/domain/rating/exists/index.ts b/development/social/domain/rating/exists/index.ts similarity index 100% rename from src/domain/rating/exists/index.ts rename to development/social/domain/rating/exists/index.ts diff --git a/src/domain/rating/index.ts b/development/social/domain/rating/index.ts similarity index 100% rename from src/domain/rating/index.ts rename to development/social/domain/rating/index.ts diff --git a/src/domain/rating/toggle/definitions.ts b/development/social/domain/rating/toggle/definitions.ts similarity index 100% rename from src/domain/rating/toggle/definitions.ts rename to development/social/domain/rating/toggle/definitions.ts diff --git a/src/domain/rating/toggle/getData.ts b/development/social/domain/rating/toggle/getData.ts similarity index 100% rename from src/domain/rating/toggle/getData.ts rename to development/social/domain/rating/toggle/getData.ts diff --git a/src/domain/rating/toggle/index.ts b/development/social/domain/rating/toggle/index.ts similarity index 100% rename from src/domain/rating/toggle/index.ts rename to development/social/domain/rating/toggle/index.ts diff --git a/src/domain/rating/toggle/publish.ts b/development/social/domain/rating/toggle/publish.ts similarity index 100% rename from src/domain/rating/toggle/publish.ts rename to development/social/domain/rating/toggle/publish.ts diff --git a/src/domain/rating/toggle/subscribe.ts b/development/social/domain/rating/toggle/subscribe.ts similarity index 100% rename from src/domain/rating/toggle/subscribe.ts rename to development/social/domain/rating/toggle/subscribe.ts diff --git a/src/domain/rating/toggle/switchOff.ts b/development/social/domain/rating/toggle/switchOff.ts similarity index 100% rename from src/domain/rating/toggle/switchOff.ts rename to development/social/domain/rating/toggle/switchOff.ts diff --git a/src/domain/rating/toggle/switchOn.ts b/development/social/domain/rating/toggle/switchOn.ts similarity index 100% rename from src/domain/rating/toggle/switchOn.ts rename to development/social/domain/rating/toggle/switchOn.ts diff --git a/src/domain/rating/toggle/toggle.ts b/development/social/domain/rating/toggle/toggle.ts similarity index 100% rename from src/domain/rating/toggle/toggle.ts rename to development/social/domain/rating/toggle/toggle.ts diff --git a/src/domain/rating/toggle/types.ts b/development/social/domain/rating/toggle/types.ts similarity index 100% rename from src/domain/rating/toggle/types.ts rename to development/social/domain/rating/toggle/types.ts diff --git a/src/domain/rating/types.ts b/development/social/domain/rating/types.ts similarity index 100% rename from src/domain/rating/types.ts rename to development/social/domain/rating/types.ts diff --git a/src/domain/relation/aggregate/aggregate.ts b/development/social/domain/relation/aggregate/aggregate.ts similarity index 100% rename from src/domain/relation/aggregate/aggregate.ts rename to development/social/domain/relation/aggregate/aggregate.ts diff --git a/src/domain/relation/aggregate/index.ts b/development/social/domain/relation/aggregate/index.ts similarity index 100% rename from src/domain/relation/aggregate/index.ts rename to development/social/domain/relation/aggregate/index.ts diff --git a/src/domain/relation/aggregate/types.ts b/development/social/domain/relation/aggregate/types.ts similarity index 100% rename from src/domain/relation/aggregate/types.ts rename to development/social/domain/relation/aggregate/types.ts diff --git a/src/domain/relation/create/InvalidRelation.ts b/development/social/domain/relation/create/InvalidRelation.ts similarity index 100% rename from src/domain/relation/create/InvalidRelation.ts rename to development/social/domain/relation/create/InvalidRelation.ts diff --git a/src/domain/relation/create/create.ts b/development/social/domain/relation/create/create.ts similarity index 100% rename from src/domain/relation/create/create.ts rename to development/social/domain/relation/create/create.ts diff --git a/src/domain/relation/create/createData.ts b/development/social/domain/relation/create/createData.ts similarity index 100% rename from src/domain/relation/create/createData.ts rename to development/social/domain/relation/create/createData.ts diff --git a/src/domain/relation/create/index.ts b/development/social/domain/relation/create/index.ts similarity index 100% rename from src/domain/relation/create/index.ts rename to development/social/domain/relation/create/index.ts diff --git a/src/domain/relation/create/insertData.ts b/development/social/domain/relation/create/insertData.ts similarity index 100% rename from src/domain/relation/create/insertData.ts rename to development/social/domain/relation/create/insertData.ts diff --git a/src/domain/relation/create/types.ts b/development/social/domain/relation/create/types.ts similarity index 100% rename from src/domain/relation/create/types.ts rename to development/social/domain/relation/create/types.ts diff --git a/src/domain/relation/create/validateData.ts b/development/social/domain/relation/create/validateData.ts similarity index 100% rename from src/domain/relation/create/validateData.ts rename to development/social/domain/relation/create/validateData.ts diff --git a/src/domain/relation/definitions.ts b/development/social/domain/relation/definitions.ts similarity index 100% rename from src/domain/relation/definitions.ts rename to development/social/domain/relation/definitions.ts diff --git a/src/domain/relation/erase/erase.ts b/development/social/domain/relation/erase/erase.ts similarity index 100% rename from src/domain/relation/erase/erase.ts rename to development/social/domain/relation/erase/erase.ts diff --git a/src/domain/relation/erase/index.ts b/development/social/domain/relation/erase/index.ts similarity index 100% rename from src/domain/relation/erase/index.ts rename to development/social/domain/relation/erase/index.ts diff --git a/src/domain/relation/establish/RelationAlreadyExists.ts b/development/social/domain/relation/establish/RelationAlreadyExists.ts similarity index 100% rename from src/domain/relation/establish/RelationAlreadyExists.ts rename to development/social/domain/relation/establish/RelationAlreadyExists.ts diff --git a/src/domain/relation/establish/definitions.ts b/development/social/domain/relation/establish/definitions.ts similarity index 100% rename from src/domain/relation/establish/definitions.ts rename to development/social/domain/relation/establish/definitions.ts diff --git a/src/domain/relation/establish/establish.ts b/development/social/domain/relation/establish/establish.ts similarity index 100% rename from src/domain/relation/establish/establish.ts rename to development/social/domain/relation/establish/establish.ts diff --git a/src/domain/relation/establish/index.ts b/development/social/domain/relation/establish/index.ts similarity index 100% rename from src/domain/relation/establish/index.ts rename to development/social/domain/relation/establish/index.ts diff --git a/src/domain/relation/establish/publish.ts b/development/social/domain/relation/establish/publish.ts similarity index 100% rename from src/domain/relation/establish/publish.ts rename to development/social/domain/relation/establish/publish.ts diff --git a/src/domain/relation/establish/subscribe.ts b/development/social/domain/relation/establish/subscribe.ts similarity index 100% rename from src/domain/relation/establish/subscribe.ts rename to development/social/domain/relation/establish/subscribe.ts diff --git a/src/domain/relation/establish/types.ts b/development/social/domain/relation/establish/types.ts similarity index 100% rename from src/domain/relation/establish/types.ts rename to development/social/domain/relation/establish/types.ts diff --git a/src/domain/relation/exists/exists.ts b/development/social/domain/relation/exists/exists.ts similarity index 100% rename from src/domain/relation/exists/exists.ts rename to development/social/domain/relation/exists/exists.ts diff --git a/src/domain/relation/exists/index.ts b/development/social/domain/relation/exists/index.ts similarity index 100% rename from src/domain/relation/exists/index.ts rename to development/social/domain/relation/exists/index.ts diff --git a/src/domain/relation/explore/explore.ts b/development/social/domain/relation/explore/explore.ts similarity index 100% rename from src/domain/relation/explore/explore.ts rename to development/social/domain/relation/explore/explore.ts diff --git a/src/domain/relation/explore/index.ts b/development/social/domain/relation/explore/index.ts similarity index 100% rename from src/domain/relation/explore/index.ts rename to development/social/domain/relation/explore/index.ts diff --git a/src/domain/relation/exploreAggregated/exploreAggregated.ts b/development/social/domain/relation/exploreAggregated/exploreAggregated.ts similarity index 100% rename from src/domain/relation/exploreAggregated/exploreAggregated.ts rename to development/social/domain/relation/exploreAggregated/exploreAggregated.ts diff --git a/src/domain/relation/exploreAggregated/index.ts b/development/social/domain/relation/exploreAggregated/index.ts similarity index 100% rename from src/domain/relation/exploreAggregated/index.ts rename to development/social/domain/relation/exploreAggregated/index.ts diff --git a/src/domain/relation/get/get.ts b/development/social/domain/relation/get/get.ts similarity index 100% rename from src/domain/relation/get/get.ts rename to development/social/domain/relation/get/get.ts diff --git a/src/domain/relation/get/index.ts b/development/social/domain/relation/get/index.ts similarity index 100% rename from src/domain/relation/get/index.ts rename to development/social/domain/relation/get/index.ts diff --git a/src/domain/relation/getAggregated/getAggregated.ts b/development/social/domain/relation/getAggregated/getAggregated.ts similarity index 100% rename from src/domain/relation/getAggregated/getAggregated.ts rename to development/social/domain/relation/getAggregated/getAggregated.ts diff --git a/src/domain/relation/getAggregated/index.ts b/development/social/domain/relation/getAggregated/index.ts similarity index 100% rename from src/domain/relation/getAggregated/index.ts rename to development/social/domain/relation/getAggregated/index.ts diff --git a/src/domain/relation/getFollowers/getFollowers.ts b/development/social/domain/relation/getFollowers/getFollowers.ts similarity index 100% rename from src/domain/relation/getFollowers/getFollowers.ts rename to development/social/domain/relation/getFollowers/getFollowers.ts diff --git a/src/domain/relation/getFollowers/index.ts b/development/social/domain/relation/getFollowers/index.ts similarity index 100% rename from src/domain/relation/getFollowers/index.ts rename to development/social/domain/relation/getFollowers/index.ts diff --git a/src/domain/relation/getFollowers/retrieveData.ts b/development/social/domain/relation/getFollowers/retrieveData.ts similarity index 100% rename from src/domain/relation/getFollowers/retrieveData.ts rename to development/social/domain/relation/getFollowers/retrieveData.ts diff --git a/src/domain/relation/getFollowersAggregated/getFollowersAggregated.ts b/development/social/domain/relation/getFollowersAggregated/getFollowersAggregated.ts similarity index 100% rename from src/domain/relation/getFollowersAggregated/getFollowersAggregated.ts rename to development/social/domain/relation/getFollowersAggregated/getFollowersAggregated.ts diff --git a/src/domain/relation/getFollowersAggregated/index.ts b/development/social/domain/relation/getFollowersAggregated/index.ts similarity index 100% rename from src/domain/relation/getFollowersAggregated/index.ts rename to development/social/domain/relation/getFollowersAggregated/index.ts diff --git a/src/domain/relation/getFollowing/getFollowing.ts b/development/social/domain/relation/getFollowing/getFollowing.ts similarity index 100% rename from src/domain/relation/getFollowing/getFollowing.ts rename to development/social/domain/relation/getFollowing/getFollowing.ts diff --git a/src/domain/relation/getFollowing/index.ts b/development/social/domain/relation/getFollowing/index.ts similarity index 100% rename from src/domain/relation/getFollowing/index.ts rename to development/social/domain/relation/getFollowing/index.ts diff --git a/src/domain/relation/getFollowing/retrieveData.ts b/development/social/domain/relation/getFollowing/retrieveData.ts similarity index 100% rename from src/domain/relation/getFollowing/retrieveData.ts rename to development/social/domain/relation/getFollowing/retrieveData.ts diff --git a/src/domain/relation/getFollowingAggregated/getFollowingAggregated.ts b/development/social/domain/relation/getFollowingAggregated/getFollowingAggregated.ts similarity index 100% rename from src/domain/relation/getFollowingAggregated/getFollowingAggregated.ts rename to development/social/domain/relation/getFollowingAggregated/getFollowingAggregated.ts diff --git a/src/domain/relation/getFollowingAggregated/index.ts b/development/social/domain/relation/getFollowingAggregated/index.ts similarity index 100% rename from src/domain/relation/getFollowingAggregated/index.ts rename to development/social/domain/relation/getFollowingAggregated/index.ts diff --git a/src/domain/relation/index.ts b/development/social/domain/relation/index.ts similarity index 100% rename from src/domain/relation/index.ts rename to development/social/domain/relation/index.ts diff --git a/src/domain/relation/translateToRequester/index.ts b/development/social/domain/relation/translateToRequester/index.ts similarity index 100% rename from src/domain/relation/translateToRequester/index.ts rename to development/social/domain/relation/translateToRequester/index.ts diff --git a/src/domain/relation/translateToRequester/translate.ts b/development/social/domain/relation/translateToRequester/translate.ts similarity index 100% rename from src/domain/relation/translateToRequester/translate.ts rename to development/social/domain/relation/translateToRequester/translate.ts diff --git a/src/domain/relation/translateToRequester/translateToRequester.ts b/development/social/domain/relation/translateToRequester/translateToRequester.ts similarity index 100% rename from src/domain/relation/translateToRequester/translateToRequester.ts rename to development/social/domain/relation/translateToRequester/translateToRequester.ts diff --git a/src/domain/relation/translateToRequester/types.ts b/development/social/domain/relation/translateToRequester/types.ts similarity index 100% rename from src/domain/relation/translateToRequester/types.ts rename to development/social/domain/relation/translateToRequester/types.ts diff --git a/src/domain/relation/types.ts b/development/social/domain/relation/types.ts similarity index 100% rename from src/domain/relation/types.ts rename to development/social/domain/relation/types.ts diff --git a/src/domain/tenant/definitions.ts b/development/social/domain/tenant/definitions.ts similarity index 100% rename from src/domain/tenant/definitions.ts rename to development/social/domain/tenant/definitions.ts diff --git a/src/domain/tenant/getByOrigin/TenantNotFound.ts b/development/social/domain/tenant/getByOrigin/TenantNotFound.ts similarity index 100% rename from src/domain/tenant/getByOrigin/TenantNotFound.ts rename to development/social/domain/tenant/getByOrigin/TenantNotFound.ts diff --git a/src/domain/tenant/getByOrigin/getByOrigin.ts b/development/social/domain/tenant/getByOrigin/getByOrigin.ts similarity index 100% rename from src/domain/tenant/getByOrigin/getByOrigin.ts rename to development/social/domain/tenant/getByOrigin/getByOrigin.ts diff --git a/src/domain/tenant/getByOrigin/index.ts b/development/social/domain/tenant/getByOrigin/index.ts similarity index 100% rename from src/domain/tenant/getByOrigin/index.ts rename to development/social/domain/tenant/getByOrigin/index.ts diff --git a/src/domain/tenant/getByOriginConverted/InvalidOrigin.ts b/development/social/domain/tenant/getByOriginConverted/InvalidOrigin.ts similarity index 100% rename from src/domain/tenant/getByOriginConverted/InvalidOrigin.ts rename to development/social/domain/tenant/getByOriginConverted/InvalidOrigin.ts diff --git a/src/domain/tenant/getByOriginConverted/getByOriginConverted.ts b/development/social/domain/tenant/getByOriginConverted/getByOriginConverted.ts similarity index 100% rename from src/domain/tenant/getByOriginConverted/getByOriginConverted.ts rename to development/social/domain/tenant/getByOriginConverted/getByOriginConverted.ts diff --git a/src/domain/tenant/getByOriginConverted/index.ts b/development/social/domain/tenant/getByOriginConverted/index.ts similarity index 100% rename from src/domain/tenant/getByOriginConverted/index.ts rename to development/social/domain/tenant/getByOriginConverted/index.ts diff --git a/src/domain/tenant/getByOriginConverted/types.ts b/development/social/domain/tenant/getByOriginConverted/types.ts similarity index 100% rename from src/domain/tenant/getByOriginConverted/types.ts rename to development/social/domain/tenant/getByOriginConverted/types.ts diff --git a/src/domain/tenant/getByOriginConverted/validateData.ts b/development/social/domain/tenant/getByOriginConverted/validateData.ts similarity index 100% rename from src/domain/tenant/getByOriginConverted/validateData.ts rename to development/social/domain/tenant/getByOriginConverted/validateData.ts diff --git a/src/domain/tenant/index.ts b/development/social/domain/tenant/index.ts similarity index 100% rename from src/domain/tenant/index.ts rename to development/social/domain/tenant/index.ts diff --git a/src/domain/tenant/tenant.ts b/development/social/domain/tenant/tenant.ts similarity index 100% rename from src/domain/tenant/tenant.ts rename to development/social/domain/tenant/tenant.ts diff --git a/src/domain/tenant/types.ts b/development/social/domain/tenant/types.ts similarity index 100% rename from src/domain/tenant/types.ts rename to development/social/domain/tenant/types.ts diff --git a/src/domain/types.ts b/development/social/domain/types.ts similarity index 100% rename from src/domain/types.ts rename to development/social/domain/types.ts diff --git a/src/integrations/authentication/authenticationMiddleware.ts b/development/social/integrations/authentication/authenticationMiddleware.ts similarity index 63% rename from src/integrations/authentication/authenticationMiddleware.ts rename to development/social/integrations/authentication/authenticationMiddleware.ts index 8e40278a..9a4761cd 100644 --- a/src/integrations/authentication/authenticationMiddleware.ts +++ b/development/social/integrations/authentication/authenticationMiddleware.ts @@ -4,15 +4,15 @@ import { AuthenticationMiddleware } from '@jitar-plugins/authentication'; import identityProvider from './identityProvider'; const authProcedures = { - loginUrl: 'domain/authentication/getLoginUrl', - login: 'domain/authentication/login', - logout: 'domain/authentication/logout' + loginUrl: 'social/domain/authentication/getLoginUrl', + login: 'social/domain/authentication/login', + logout: 'social/domain/authentication/logout' }; const redirectPath = process.env.AUTHENTICATION_CLIENT_PATH || ''; const whiteList: string[] = [ - 'domain/tenant/getByOriginConverted' + 'social/domain/tenant/getByOriginConverted' ]; export default new AuthenticationMiddleware(identityProvider, authProcedures, redirectPath, whiteList); diff --git a/src/integrations/authentication/identityProvider.ts b/development/social/integrations/authentication/identityProvider.ts similarity index 100% rename from src/integrations/authentication/identityProvider.ts rename to development/social/integrations/authentication/identityProvider.ts diff --git a/src/integrations/authentication/originMiddleware.ts b/development/social/integrations/authentication/originMiddleware.ts similarity index 100% rename from src/integrations/authentication/originMiddleware.ts rename to development/social/integrations/authentication/originMiddleware.ts diff --git a/src/integrations/authentication/requesterMiddleware.ts b/development/social/integrations/authentication/requesterMiddleware.ts similarity index 100% rename from src/integrations/authentication/requesterMiddleware.ts rename to development/social/integrations/authentication/requesterMiddleware.ts diff --git a/src/integrations/authentication/setUp.ts b/development/social/integrations/authentication/setUp.ts similarity index 100% rename from src/integrations/authentication/setUp.ts rename to development/social/integrations/authentication/setUp.ts diff --git a/src/integrations/authentication/tearDown.ts b/development/social/integrations/authentication/tearDown.ts similarity index 100% rename from src/integrations/authentication/tearDown.ts rename to development/social/integrations/authentication/tearDown.ts diff --git a/src/integrations/database/database.ts b/development/social/integrations/database/database.ts similarity index 100% rename from src/integrations/database/database.ts rename to development/social/integrations/database/database.ts diff --git a/src/integrations/database/healthCheck.ts b/development/social/integrations/database/healthCheck.ts similarity index 100% rename from src/integrations/database/healthCheck.ts rename to development/social/integrations/database/healthCheck.ts diff --git a/src/integrations/database/index.ts b/development/social/integrations/database/index.ts similarity index 100% rename from src/integrations/database/index.ts rename to development/social/integrations/database/index.ts diff --git a/src/integrations/database/setUp.ts b/development/social/integrations/database/setUp.ts similarity index 100% rename from src/integrations/database/setUp.ts rename to development/social/integrations/database/setUp.ts diff --git a/src/integrations/database/tearDown.ts b/development/social/integrations/database/tearDown.ts similarity index 100% rename from src/integrations/database/tearDown.ts rename to development/social/integrations/database/tearDown.ts diff --git a/src/integrations/errors/BadRequest.ts b/development/social/integrations/errors/BadRequest.ts similarity index 100% rename from src/integrations/errors/BadRequest.ts rename to development/social/integrations/errors/BadRequest.ts diff --git a/src/integrations/errors/NotFound.ts b/development/social/integrations/errors/NotFound.ts similarity index 100% rename from src/integrations/errors/NotFound.ts rename to development/social/integrations/errors/NotFound.ts diff --git a/src/integrations/errors/ServerError.ts b/development/social/integrations/errors/ServerError.ts similarity index 100% rename from src/integrations/errors/ServerError.ts rename to development/social/integrations/errors/ServerError.ts diff --git a/src/integrations/errors/Unauthorized.ts b/development/social/integrations/errors/Unauthorized.ts similarity index 100% rename from src/integrations/errors/Unauthorized.ts rename to development/social/integrations/errors/Unauthorized.ts diff --git a/src/integrations/errors/ValidationError.ts b/development/social/integrations/errors/ValidationError.ts similarity index 100% rename from src/integrations/errors/ValidationError.ts rename to development/social/integrations/errors/ValidationError.ts diff --git a/src/integrations/errors/index.ts b/development/social/integrations/errors/index.ts similarity index 100% rename from src/integrations/errors/index.ts rename to development/social/integrations/errors/index.ts diff --git a/src/integrations/eventBroker/eventBroker.ts b/development/social/integrations/eventBroker/eventBroker.ts similarity index 100% rename from src/integrations/eventBroker/eventBroker.ts rename to development/social/integrations/eventBroker/eventBroker.ts diff --git a/src/integrations/eventBroker/healthCheck.ts b/development/social/integrations/eventBroker/healthCheck.ts similarity index 100% rename from src/integrations/eventBroker/healthCheck.ts rename to development/social/integrations/eventBroker/healthCheck.ts diff --git a/src/integrations/eventBroker/index.ts b/development/social/integrations/eventBroker/index.ts similarity index 100% rename from src/integrations/eventBroker/index.ts rename to development/social/integrations/eventBroker/index.ts diff --git a/src/integrations/eventBroker/setUp.ts b/development/social/integrations/eventBroker/setUp.ts similarity index 100% rename from src/integrations/eventBroker/setUp.ts rename to development/social/integrations/eventBroker/setUp.ts diff --git a/src/integrations/eventBroker/tearDown.ts b/development/social/integrations/eventBroker/tearDown.ts similarity index 100% rename from src/integrations/eventBroker/tearDown.ts rename to development/social/integrations/eventBroker/tearDown.ts diff --git a/src/integrations/fileStore/fileStore.ts b/development/social/integrations/fileStore/fileStore.ts similarity index 100% rename from src/integrations/fileStore/fileStore.ts rename to development/social/integrations/fileStore/fileStore.ts diff --git a/src/integrations/fileStore/healthCheck.ts b/development/social/integrations/fileStore/healthCheck.ts similarity index 100% rename from src/integrations/fileStore/healthCheck.ts rename to development/social/integrations/fileStore/healthCheck.ts diff --git a/src/integrations/fileStore/index.ts b/development/social/integrations/fileStore/index.ts similarity index 100% rename from src/integrations/fileStore/index.ts rename to development/social/integrations/fileStore/index.ts diff --git a/src/integrations/fileStore/setUp.ts b/development/social/integrations/fileStore/setUp.ts similarity index 100% rename from src/integrations/fileStore/setUp.ts rename to development/social/integrations/fileStore/setUp.ts diff --git a/src/integrations/fileStore/tearDown.ts b/development/social/integrations/fileStore/tearDown.ts similarity index 100% rename from src/integrations/fileStore/tearDown.ts rename to development/social/integrations/fileStore/tearDown.ts diff --git a/src/integrations/http/http.ts b/development/social/integrations/http/http.ts similarity index 100% rename from src/integrations/http/http.ts rename to development/social/integrations/http/http.ts diff --git a/src/integrations/http/index.ts b/development/social/integrations/http/index.ts similarity index 100% rename from src/integrations/http/index.ts rename to development/social/integrations/http/index.ts diff --git a/src/integrations/logging/index.ts b/development/social/integrations/logging/index.ts similarity index 100% rename from src/integrations/logging/index.ts rename to development/social/integrations/logging/index.ts diff --git a/src/integrations/logging/logger.ts b/development/social/integrations/logging/logger.ts similarity index 100% rename from src/integrations/logging/logger.ts rename to development/social/integrations/logging/logger.ts diff --git a/src/integrations/notification/notificationHealthCheck.ts b/development/social/integrations/notification/notificationHealthCheck.ts similarity index 100% rename from src/integrations/notification/notificationHealthCheck.ts rename to development/social/integrations/notification/notificationHealthCheck.ts diff --git a/src/integrations/notification/notificationService.ts b/development/social/integrations/notification/notificationService.ts similarity index 100% rename from src/integrations/notification/notificationService.ts rename to development/social/integrations/notification/notificationService.ts diff --git a/src/integrations/tenancy/middleware/MultiTenantMiddleware.ts b/development/social/integrations/tenancy/middleware/MultiTenantMiddleware.ts similarity index 95% rename from src/integrations/tenancy/middleware/MultiTenantMiddleware.ts rename to development/social/integrations/tenancy/middleware/MultiTenantMiddleware.ts index b8fd22b0..e33a5ddf 100644 --- a/src/integrations/tenancy/middleware/MultiTenantMiddleware.ts +++ b/development/social/integrations/tenancy/middleware/MultiTenantMiddleware.ts @@ -5,7 +5,7 @@ import { Response } from 'jitar'; import type { Tenant } from '^/domain/tenant'; import getByOrigin from '^/domain/tenant/getByOriginConverted'; -const GEY_BY_ORIGIN_FQN = 'domain/tenant/getByOriginConverted'; +const GEY_BY_ORIGIN_FQN = 'social/domain/tenant/getByOriginConverted'; const TENANT_PARAMETER = '*tenant'; export default class MultiTenantMiddleware implements Middleware diff --git a/src/integrations/tenancy/tenantMiddleware.ts b/development/social/integrations/tenancy/tenantMiddleware.ts similarity index 100% rename from src/integrations/tenancy/tenantMiddleware.ts rename to development/social/integrations/tenancy/tenantMiddleware.ts diff --git a/src/integrations/utilities/crypto.ts b/development/social/integrations/utilities/crypto.ts similarity index 100% rename from src/integrations/utilities/crypto.ts rename to development/social/integrations/utilities/crypto.ts diff --git a/src/integrations/utilities/dates.ts b/development/social/integrations/utilities/dates.ts similarity index 100% rename from src/integrations/utilities/dates.ts rename to development/social/integrations/utilities/dates.ts diff --git a/src/integrations/utilities/webbrowser.ts b/development/social/integrations/utilities/webbrowser.ts similarity index 100% rename from src/integrations/utilities/webbrowser.ts rename to development/social/integrations/utilities/webbrowser.ts diff --git a/src/integrations/validation/index.ts b/development/social/integrations/validation/index.ts similarity index 100% rename from src/integrations/validation/index.ts rename to development/social/integrations/validation/index.ts diff --git a/src/integrations/validation/validator.ts b/development/social/integrations/validation/validator.ts similarity index 100% rename from src/integrations/validation/validator.ts rename to development/social/integrations/validation/validator.ts diff --git a/development/social/package.json b/development/social/package.json new file mode 100644 index 00000000..232c29f6 --- /dev/null +++ b/development/social/package.json @@ -0,0 +1,15 @@ +{ + "name": "@concept/social", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "build": "npm run clean && npm run build-domain && npm run build-app", + "build-app": "vite build --config app/vite.config.js", + "build-domain": "tsc && tsc-alias", + "clean": "rimraf ../../artifacts/build/social", + "lint": "eslint", + "review": "npm run build && npm run lint", + "prepublishOnly": "npm run clean && npm run build" + } +} diff --git a/development/social/tsconfig.json b/development/social/tsconfig.json new file mode 100644 index 00000000..bc1dd47b --- /dev/null +++ b/development/social/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../../artifacts/build/social", + "paths": { + "^/*": ["./*"], + } + }, + "include": ["./domain", "./integrations"] +} \ No newline at end of file diff --git a/development/tsconfig.json b/development/tsconfig.json new file mode 100644 index 00000000..8b4ff642 --- /dev/null +++ b/development/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../tsconfig.json" +} \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 5d183cc9..00000000 --- a/docs/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -# Comify docs - -Hi, welcome to the Comify documentation. 👋 - -Here you'll find all the technical details on how we are building the application. We'll start with the fundamentals below. From there you can zoom in at any part for the details. - -## Architecture - -At the heart of any application lies architecture. To explain ours, we found inspiration from the [C4 model](https://c4model.com/) and added our own sauce. - -### Context - -Comify runs as a stand-alone application and hasn't many external dependencies (yet?). The most important one is the `Creator` that represents the end-user. Without it, the application doesn't have any value. Secondly we're outsourcing the identity and access management (IAM) to save on development that doesn't add business value. - -Application context - -**Note:** We use OpenID Connect for the IAM integration. - -### Shadows - -The application has two shadows. Each shadow contains content related to the application. - -Application shadows - -If you're reading this, then you've already found the docs. This is the darkest shadow, because it's the furthest away from the code. The tests are more code related, and can be found in the `test` folder in the project root. The application itself is placed in the `src` folder also in the project root. - -The structure of the shadows mimic the application structure to make navigating them easy. This structure is explained in the containers section below. - -### Containers - -The application is divided into multiple parts, called containers. We have these four. - -Application containers - -Let's look at their usages and responsibilities. - -* [**Web UI**](./webui/) - Contains the web based interface for user interaction (SPA). -* [**Assets**](./assets/) - Contains shared things like images, downloads, etc... -* [**Domain**](./domain/) - Contains business related components like business logic, data entities, etc.. -* [**Integrations**](./integrations/) - Contains implementations for IAM, database, etc.. - -Each part has its own folder in the application (and its shadows). For more detailed information you can click on their names. - -## Technology stack - -The project is 100% [TypeScript](https://www.typescriptlang.org/) based. - -**Runtime requirements** - -* [Node.js](https://nodejs.org/) as runtime (version 20+). -* [Docker](https://www.docker.com/) for additional services. - -**Main dependencies** - -* [Jitar](http://jitar.dev) for E2E communication and scaling concerns. -* [React](https://react.dev) for the frontend. - -All backend components are written in pure TypeScript without a framework. - -**Additional services** - -* [MongoDB](https://www.mongodb.com/) as database. -* [MinIO](https://min.io/) as file store (images). -* [Keycloak](https://www.keycloak.org/) as identity and access manager. - -## Configuration - -The application has several configuration options. You can find them here. - -### Environment - -For both the application and Docker services we've set up environment variables that can be managed from a single configuration file. An example of this file is located in the root of the project with the name `example.env`. - -**Note:** The project uses the `development.env` file for development. - -### Segments - -The domain container can be split into multiple segments for scalability reasons like deployment, load balancing and fail over. This is a feature provided by Jitar, more information on this can be found in the [documentation](https://docs.jitar.dev/deploy/segmentation.html). The configuration files can be found in the `segments` folder in the project root. - -We use a backend for frontend (BFF) segmentation strategy. The `bff.json` file exposes all functions that can be remotely accessed by the frontend. The other segment files are used to demonstrate two deployment strategies: - -1. vertical slicing (`notification.json`) -1. horizontal slicing (`reads.json` and `writes.json`) - -Based on this segmentation model, the application can run in a monolithic and microservice fashion. - -### Resources - -The application uses resources like a database, file store, event broker, etc. that need to be defined in Jitar for sharing them across segments that are running on the same node. More information on this can be found in the [documentation](https://docs.jitar.dev/deploy/resources.html). The configuration files can be found in the `resources` folder in the project root. - -### Services - -Jitar provides [multiple services](https://docs.jitar.dev/fundamentals/runtime-services.html) to deploy applications with different strategies. Currently, we have configurations for running the application as a monolith and as microservices. The configuration files can de found in the `services` folder in the project root. - -The `standalone.json` configuration file configures the monolithic deployment. All other files configure the microservice setup. - -## Getting started - -Before you start, make sure you meet all the runtime requirements. Follow these instructions next. - -1. Run `npm install` from a terminal to install the dependencies. -1. Copy the `example.env` file to a `development.env` file. -1. Run `npm run build` to build the application. -1. Run `npm run standalone` to run Jitar at port 3000. - -To start the application you need to open a new terminal and run `npm run dev`. Now a [Vite](https://vitest.dev/) dev server is running on port 5173. You can then navigate to to open the application. - -To stop the application you can press CONTROL+C in both terminals. - -### Build & run - -To build and run the application you can keep using the `npm run build` and `npm run standalone` commands. For convenience both commands are combined in the following command: `npm run rebuild`. - -### Test & lint - -To run the tests you can use the `npm run test` command. You can also run the linter with the `npm run lint` command. For convenience the **build**, **test** and **lint** commands are combined in the following command: `npm run review`. - -### Run without Vite - -If you want to run the application without a Vite dev server, you can change the port number in the `AUTHENTICATION_CLIENT_URI` environment variable to `3000`. After that you can start the application again as standalone and navigate to to open the application. - -### Run as microservices - -For running the application as microservices, you need to start some additional helper services: - -* Proxy - central access point for the web browser. -* Repository - provider for static assets. -* Gateway - locator and load balancer for all procedures. - -After that, the segment services can be started. You can follow these instructions: - -1. Start the proxy by running `npm run proxy`. -1. Start the repository by running `npm run repository`. -1. Start the gateway by running `npm run gateway`. -1. Start the BFF service by running `npm run bff`. -1. Start the Notification service by running `npm run notification`. -1. Start the Reads service by running `npm run reads`. -1. Start the Writes service by running `npm run writes`. - -You can then navigate to to open the application via the proxy service. diff --git a/docs/assets/README.md b/docs/assets/README.md deleted file mode 100644 index 62f52f61..00000000 --- a/docs/assets/README.md +++ /dev/null @@ -1,6 +0,0 @@ - -# Assets | Comify docs - -The assets container contains all kind of non-code related things that can be use by the [Web UI](../webui/) and / or the [Domain](../domain/) containers. Currently it only holds the application icon, but sooner or later it will be accompanied by other files like the *privacy statement* and the *terms of use* documents. - -This shadow container serves the same goal. It contains all the images used for the documentation. diff --git a/docs/assets/images/architecture/containers.png b/docs/assets/images/architecture/containers.png deleted file mode 100644 index ab9a08ebe60fed39cd5f8608ba43b3b33a1afa23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21724 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 diff --git a/docs/assets/images/architecture/context.png b/docs/assets/images/architecture/context.png deleted file mode 100644 index e76451cb1323b573d8dfdfe83199ca4a89c9e3fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42053 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 XI@)(d&obX1X@m9l^ubrUlWG3~+Hhiw diff --git a/docs/assets/images/architecture/shadows.png b/docs/assets/images/architecture/shadows.png deleted file mode 100644 index b81b047d7f10fb3476488391ec61f0e737bb50e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10226 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 TxxhoRv)i>DwvDmn$m#zBF0pwg diff --git a/docs/assets/images/webui/example.png b/docs/assets/images/webui/example.png deleted file mode 100644 index d7121335d0b653931b310ea4d1724b6d3a8a4221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690563 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�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

TrN((H-Vk%nCWBbD|FnFh~{zU@d0$p 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�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 F{|)^W8G!%* diff --git a/docs/domain/README.md b/docs/domain/README.md deleted file mode 100644 index 17986ca1..00000000 --- a/docs/domain/README.md +++ /dev/null @@ -1,69 +0,0 @@ - -# Domain | Comify docs - -The domain contains the implementation of all business related components. It leverages a procedural approach using [Jitar](https://jitar.dev). - -## Module structure - -We're using a feature-oriented approach. Our root module structure looks like this. - -Web UI module structure - -Basically, it boils down to a root module per domain concept. Each module contains its features. - -A module is implemented as a folder containing an index file that exposes its essentials for consumers. - -## Features - -A feature is a sub-module containing all components required for its implementation. Features vary in size, ranging from small (single components) to large (multiple components), depending on the requirements. - -Every feature exposes its main function as the default export through the index file. Additionally, its types, errors, etc., can be exposed if their consumers require them. - -We aim to keep features as autonomous as possible by encapsulating their internal components. If another feature requires the same component (such as retrieving data by ID), we tend to make a copy on the first occurrence and move the component to its own feature upon multiple occurrences. This decision heavily depends on the complexity of the component. - -## Components - -Components can have different types depending on their responsibilities. Currently, we distinct the following types: - -* **Process** - a series of steps, where each step is a separate component. -* **Task** - handles calculations, data manipulations, etc. -* **Persistence** - responsible for querying, inserting, and updating the database. -* **Aggregation** - gathers all related data. -* **Validation** - ensures incoming data meets the required criteria. -* **Event** - handles publications and subscriptions. - -Each component is implemented in its own file and exported as the default. - -A feature typically contains a combination of these component types. Process components that perform multiple database writes follow the [SAGA pattern](https://microservices.io/patterns/data/saga.html) as described in the [Jitar documentation](https://docs.jitar.dev/develop/data-consistency.html). - -## Data - -Data is defined per domain concept. We distinguish between two types: - -* **Persistent** - data stored in the database. -* **Aggregated** - a data view containing all referenced data. - -Both types are defined as TypeScript types with read-only fields to ensure immutability. - -Persistent data is defined in the `types.ts` file in the root of the domain concept folder, as it is used by multiple features. Aggregated data is defined in the `types.ts` file of the aggregation feature, as it is more specific. - -Persistent data is read and written by persistence components using the database integration. - -## Events - -We use a publish/subscribe model for side effects such as updating counters, creating notifications, etc. - -Features that trigger side effects contain both a **publish** and **subscribe** component. Both components use the event broker integration to manage events. - -The publish component is used as the last step in the process. The subscribe component is exported in the feature's index file for use by other features. - -Features leverage a **subscriptions** component that imports and uses the subscribe components of other features. The subscriptions component is also exported in the feature's index file. - -## Definitions - -Every module (domain, concept, and feature) can have two types of definitions: - -* **Types** - TypeScript types such as data and event definitions, defined in the `types.ts` file. -* **Definitions** - constants such as enums, validation schemas, record types, etc., defined in the `definitions.ts` file. - -The location of a definition depends on its scope of use. For example, the base data model is located in the domain root module, a record type is defined per domain concept, and a validation schema is defined per validation feature. diff --git a/docs/integrations/AUTHENTICATION.md b/docs/integrations/AUTHENTICATION.md deleted file mode 100644 index 1d42319a..00000000 --- a/docs/integrations/AUTHENTICATION.md +++ /dev/null @@ -1,109 +0,0 @@ - -# Authentication | Comify docs - -The authentication integration provides a universal interaction layer with an actual identity provider solution. - -This integration is based on the following authentication flow: - -1. Browser redirects to the IDP login page. -2. User authenticate at the IDP. -3. IDP provides identity information to this integration. -4. This integration starts a session based on the provided identity. -5. Sessions can be refreshed via this integration. -6. Until the user logs out via this integration. - -## Implementations - -Currently, there is only one implementation: - -* **OpenID** - persistent document storage (used in production). - -## Configuration - -The used implementation needs to be configured in the `.env` file, together with the client URL. - -```env -AUTHENTICATION_IMPLEMENTATION="openid" -AUTHENTICATION_CLIENT_URI="http://localhost:5173/identify" -``` - -In case of OpenID, additional configuration is required. - -```env -OPENID_ISSUER="http://localhost:8080/realms/comify" -OPENID_CLIENT_ID="openid" -OPENID_CLIENT_SECRET="" -OPENID_REDIRECT_PATH="/rpc/domain/authentication/login" -OPENID_ALLOW_INSECURE_REQUESTS=true -``` - -## How to use - -An instance of the configured identity provider implementation can be imported for performing authentication operations. - -```ts -import identityProvider from '^/integrations/authentication'; - -// Perform operations with the identityProvider instance -``` - -### Operations - -```ts -import identityProvider, { Session } from '^/integrations/authentication'; - -// Open connection -await identityProvider.connect(); - -// Close connection -await identityProvider.disconnect(); - -// Request the URL of the login page -const loginUrl: string = await identityProvider.getLoginUrl(); - -// Handle a login and get a session -// Throws LoginFailed if not successful -const firstSession: Session = await identityProvider.login(providedIdentity); - -// Refresh a session -// Throws LoginFailed if not successful -const secondSession: Session = await identityProvider.refresh(firstSession); - -// Logout -await identityProvider.logout(secondSession); -``` - -### Session structure - -The session has the following structure. - -```ts -type Session = { - key?: string; - requester?: unknown; - identity: Identity; - accessToken: Token; - refreshToken: Token; - expires: Date; -}; -``` - -Every session has a unique key that will be provided to external clients. This key is an unrelated hash value that contains no session information. It's ony used for referencing and storage. - -The requester represents the actual logged in user retrieved from the identity information (email), and can be stored in the session for quick reference. The full Identity structure looks like this. - -```ts -type Identity = { - name: string; - nickname: string | undefined; - picture: string | undefined; - email: string; - email_verified: boolean; -}; -``` - -The access and refresh tokens can be of any type, but is always represented as string. This depends on the configured implementation. In most cases this will be a JWT. - -```ts -type Token = string; -``` diff --git a/docs/integrations/DATABASE.md b/docs/integrations/DATABASE.md deleted file mode 100644 index 3f24a7b5..00000000 --- a/docs/integrations/DATABASE.md +++ /dev/null @@ -1,120 +0,0 @@ - -# Database | Comify docs - -The database integration provides a universal interaction layer with an actual data storage solution. - -This integration is based on simple CRUD operations and purposely does NOT support relational querying. - -## Implementations - -Currently, there are two implementations: - -* **Memory** - non-persistent in memory storage (used for testing). -* **MongoDB** - persistent document storage (used in production). - -## Configuration - -The used implementation needs to be configured in the `.env` file. - -```env -DATABASE_IMPLEMENTATION="mongodb" # (memory | mongodb) -``` - -In case of MongoDB, additional configuration is required. - -```env -MONGODB_CONNECTION_STRING="mongodb://development:development@localhost:27017" -MONGODB_DATABASE_NAME="comify" -``` - -## How to use - -An instance of the configured implementation can be imported for performing database operations. - -```ts -import database from '^/integrations/database'; - -// Perform operations with the database instance -``` - -### Operations - -```ts -import database, { RecordData, RecordQuery, RecordSort, SortDirections } from '^/integrations/database'; - -// Open connection -await database.connect(); - -// Close connection -await database.disconnect(); - -// INSERT INTO items (name, quantity) VALUES (?, ?) -const id: string = await database.createRecord('items', { name: 'Popcorn', quantity: 3 }); - -// SELECT * FROM items WHERE id = ? -// Throws RecordNotFound if not found -const record: RecordData = await database.readRecord('items', id); - -// SELECT name FROM items WHERE id = ? -const record: RecordData = await database.readRecord('items', id, ['name']); - -// SELECT * FROM items WHERE id = ? LIMIT 1 OFFSET 0 -const records: RecordData | undefined = await database.findRecord('items', { id }); - -// SELECT * FROM items -const records: RecordData[] = await database.searchRecords('items', {}); - -// SELECT name FROM items -const records: RecordData[] = await database.searchRecords('items', {}, ['name']); - -// UPDATE items SET name = ? WHERE id = ? -// Throws RecordNotFound if not found -await database.updateRecord('items', item.id, { 'name': item.name }); - -// DELETE FROM items WHERE id = ? -// Throws RecordNotFound if not found -await database.deleteRecord('items', item.id); - -// SELECT * FROM items WHERE name LIKE "%?%" ORDER BY name ASC LIMIT ? OFFSET ? -const query: RecordQuery = { name: { CONTAINS: name }}; -const sort: RecordSort = { name: SortDirections.ASCENDING }; -const records: RecordData[] = await database.searchRecords('items', query, undefined, sort, limit, offset); - -// SELECT name FROM items WHERE name LIKE "?%" OR name LIKE "%?" ORDER BY name ASC, quantity DESC LIMIT ? OFFSET ?; -const query: RecordQuery = { OR: [ { name: { STARTS_WITH: name } }, { name: { ENDS_WITH: name } } ] }; -const sort: RecordSort = { name: SortDirections.ASCENDING, quantity: SortDirections.DESCENDING }; -const records: RecordData[] = await database.searchRecords('items', query, ['name'], sort, limit, offset); -``` - -### Query options - -A basic query has the following structure. - -```ts -const query: RecordQuery = { fieldName1: { OPERATOR: value }, fieldName2: { OPERATOR: value }, ... } -``` - -The following operators are supported: `EQUALS`, `NOT_EQUALS`, `LESS_THAN`, `LESS_THAN_OR_EQUALS`, `GREATER_THAN`, `GREATER_THAN_OR_EQUALS`, `IN`, `NOT_IN`, `CONTAINS`, `STARTS_WITH`, `ENDS_WITH` - -Multiple queries can be grouped using the logical operators: `AND`, `OR`. - -```ts -const andQuery: RecordQuery = { AND: [ query1, query2, ...] } -const orQuery: RecordQuery = { OR: [ query1, query2, ...] } -``` - -### Sort options - -A basic query has the following structure. - -```ts -const sort: RecordSort = { fieldName1: DIRECTION, fieldName2: DIRECTION, ... }; -``` - -The following directions are supported: `ASCENDING`, `DESCENDING`. Both are defined in the `SortDirections` enum. - -```ts -const sort: RecordSort = { fieldName1: SortDirections.ASCENDING, fieldName2: SortDirections.DESCENDING, ... }; -``` - -The sort will be performed in the configured order. diff --git a/docs/integrations/EVENT_BROKER.md b/docs/integrations/EVENT_BROKER.md deleted file mode 100644 index efe62e6c..00000000 --- a/docs/integrations/EVENT_BROKER.md +++ /dev/null @@ -1,55 +0,0 @@ - -# Event Broker | Comify docs - -The event broker integration provides a universal interaction layer with an actual event broker solution. - -This integration is based on a publish / subscribe model. - -## Implementations - -Currently, there is only one implementation: - -* **Memory** - non-persistent event broker based on the Node.js `EventEmitter` (used in test and production). - -We have plans to add a Kafka implementation later on. - -## Configuration - -The used implementation needs to be configured in the `.env` file. - -```env -EVENT_BROKER_IMPLEMENTATION="memory" -``` - -## How to use - -An instance of the configured event broker implementation can be imported for performing event operations. - -```ts -import eventBroker from '^/integrations/eventbroker'; - -// Perform operations with the eventBroker instance -``` - -### Operations - -```ts -import eventBroker, { Publication, Subscription } from '^/integrations/eventbroker'; - -// Open connection -await eventBroker.connect(); - -// Close connection -await eventBroker.disconnect(); - -// Subscribe to an event -const subscription: Subscription = { channel: 'post', name: 'updated', handler: (postId: string) => { ... } }; -await eventBroker.subscribe(subscription); - -// Publish an event -const publication: Publication = { channel: 'post', name: 'updated', data: { postId: '123' } }; -await eventBroker.publish(publication); - -// Unsubscribe from an event -await eventBroker.unsubscribe(subscription); -``` diff --git a/docs/integrations/FILE_STORE.md b/docs/integrations/FILE_STORE.md deleted file mode 100644 index ba4b081d..00000000 --- a/docs/integrations/FILE_STORE.md +++ /dev/null @@ -1,66 +0,0 @@ - -# File Store | Comify docs - -The file store integration provides a universal interaction layer with an actual file storage solution. - -## Implementations - -Currently, there are two implementations: - -* **Memory** - non-persistent in memory storage (used for testing). -* **Minio** - persistent S3 compatible object storage (used in production). - -## Configuration - -The used implementation needs to be configured in the `.env` file. - -```env -FILE_STORE_IMPLEMENTATION="minio" # (memory | minio) -``` - -In case of Minio, additional configuration is required. - -```env -MINIO_END_POINT="localhost" -MINIO_PORT_NUMBER=9000 -MINIO_USE_SSL=false -MINIO_ACCESS_KEY="development" -MINIO_SECRET_KEY="development" -``` - -## How to use - -An instance of the configured file storage implementation can be imported for performing file operations. - -```ts -import fileStorage from '^/integrations/filestorage'; - -// Perform operations with the fileStorage instance -``` - -### Operations - -```ts -import fileStorage from '^/integrations/filestorage'; - -// Open connection -await fileStorage.connect(); - -// Close connection -await fileStorage.disconnect(); - -// Check if a file exists -const exists: boolean = await fileStorage.hasFile('path/to/file.txt'); - -// Write a file to the storage -const data: Buffer = Buffer.from('Something interesting'); -await fileStorage.writeFile('path/to/file.txt', data); - -// Read a file from storage -// Throws FileNotFound if not found -const data: Buffer = await fileStorage.readFile('path/to/file.txt'); - -// Delete a file from storage -// Throws FileNotFound if not found -await fileStorage.deleteFile('path/to/file.txt'); -``` diff --git a/docs/integrations/HTTP.md b/docs/integrations/HTTP.md deleted file mode 100644 index 3e4fd6f1..00000000 --- a/docs/integrations/HTTP.md +++ /dev/null @@ -1,82 +0,0 @@ - -# HTTP | Comify docs - -The HTTP integration provides a universal interaction layer with an actual HTTP client solution. - -## Implementations - -Currently, there is only one implementation: - -* **Fetch** - Node.js fetch implementation. - -## Configuration - -The used implementation needs to be configured in the `.env` file. - -```env -HTTP_IMPLEMENTATION="fetch" -``` - -## How to use - -An instance of the configured HTTP client implementation can be imported for performing HTTP operations. - -```ts -import httpClient from '^/integrations/http'; - -// Perform operations with the httpClient instance -``` - -### Operations - -```ts -import httpClient, { HTTP_METHODS } from '^/integrations/http'; - -// Set a cached response -const response: Response = new Response(); -httpClient.setCache(HTTP_METHODS.GET, url, response); - -// Get a cached response -const response: Response | undefined = httpClient.getCache(HTTP_METHODS.GET, url); - -// Remove a cached response -httpClient.removeCache(method: string, url: string) - -// Clear all cache -httpClient.clearCache() - -// Perform a GET request -const response: Response = await httpClient.get(url); - -// Perform a GET request with optional headers -const headers: Record = { 'Accept': 'application/json' }; -const response: Response = await httpClient.get(url, headers); - -// Perform a POST request with optional headers -const headers: Record = { 'Content-Type': 'application/json' }; -const response: Response = await httpClient.post(url, data, headers); - -// Perform a PUT request with optional headers -const headers: Record = { 'Content-Type': 'application/json' }; -const response: Response = await httpClient.put(url, data, headers); - -// Perform a PATCH request with optional headers -const headers: Record = { 'Content-Type': 'application/json' }; -const response: Response = await httpClient.patch(url, data, headers); - -// Perform a DELETE request with optional headers -const headers: Record = { }; -const response: Response = await httpClient.delete(url, headers); - -// Perform a HEAD request with optional headers -const headers: Record = { }; -const response: Response = await httpClient.head(url, headers); -``` - -### Response model - -The result of every request is a standard [ECMAScript Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) object. - -### Caching mechanism - -All requests are cached by URL. To prevent this behavior, the cache for the URL must be deleted before performing the request. diff --git a/docs/integrations/LOGGING.md b/docs/integrations/LOGGING.md deleted file mode 100644 index 7188dc7f..00000000 --- a/docs/integrations/LOGGING.md +++ /dev/null @@ -1,66 +0,0 @@ - -# Logging | Comify docs - -The logging integration provides a universal interaction layer with an actual logging solution. - -## Implementations - -Currently, there are two implementations: - -* **Void** - dummy implementation that doesn't log anything (used for testing). -* **Console** - implementation based on the Node.js console (used in production). - -## Configuration - -The used implementation needs to be configured in the `.env` file with the debug enabled setting. - -```env -LOGGING_IMPLEMENTATION="console" # (void | console) -LOGGING_DEBUG_ENABLED=true -``` - -## How to use - -An instance of the configured logger implementation can be imported for performing logging operations. - -```ts -import logger from '^/integrations/logging'; - -// Perform operations with the logger instance -``` - -### Operations - -```ts -import logger from '^/integrations/logging'; - -// Log info -await logger.logInfo(message); - -// Log warning -await logger.logWarn(message); - -// Log error -await logger.logError(message); - -// Log debug information -await logger.logDebug(message); - -// Log multiple messages (works for all levels) -await logger.logInfo(message1, message2, ...); - -// Logging multiple types of values (works for all levels) -await logger.logInfo('string', new Error('Oops...'), 42, [ 'a', 3.14 ], { name: 'John Doe', age: null }); -``` - -### Value interpretation - -Currently, the logger has support for the following types of values: - -* All primitive types -* Null / undefined -* Errors (its stack if available or else its message) -* Arrays (all values will be interpreted and concatenated with a space between them) -* Objects (will be stringyfied) - -In case multiple messages are given, they will be concatenated with a space between them. diff --git a/docs/integrations/NOTIFICATION.md b/docs/integrations/NOTIFICATION.md deleted file mode 100644 index 9b945444..00000000 --- a/docs/integrations/NOTIFICATION.md +++ /dev/null @@ -1,62 +0,0 @@ - -# Notification | Comify docs - -The notification integration provides a universal interaction layer with an actual notification solution. - -This integration is based on a push notification model. - -## Implementations - -Currently, there are two implementations: - -* **Memory** - non-persistent in memory notifications (used for testing). -* **WebPush** - web browser based push notifications (used in production). - -## Configuration - -The used implementation needs to be configured in the `.env` file with the debug enabled setting. - -```env -NOTIFICATION_IMPLEMENTATION="webpush" # (memory | webpush) -``` - -In case of WebPush, additional configuration is required. - -```env -WEBPUSH_VAPID_SUBJECT="..." -WEBPUSH_VAPID_PUBLIC_KEY="..." -WEBPUSH_VAPID_PRIVATE_KEY="..." -``` - -## How to use - -An instance of the configured notification service implementation can be imported for performing notification operations. - -```ts -import notificationService from '^/integrations/notification'; - -// Perform operations with the notificationService instance -``` - -### Operations - -```ts -import notificationService from '^/integrations/notification'; - -// Open connection -await notificationService.connect(); - -// Close connection -await notificationService.disconnect(); - -// Subscribe to receive notifications -await notificationService.subscribe(recipientId); - -// Unsubscribe from receiving notifications -// Throws SubscriptionNotFound if subscription not found. -await notificationService.unsubscribe(recipientId); - -// Send a notification to a recipient -// Throws SubscriptionNotFound if subscription not found. -await notificationService.sendNotification(recipientId, title, body); -``` diff --git a/docs/integrations/README.md b/docs/integrations/README.md deleted file mode 100644 index 4d4516be..00000000 --- a/docs/integrations/README.md +++ /dev/null @@ -1,25 +0,0 @@ - -# Integrations | Comify docs - -The integrations contain interfaces and implementations for decoupling technical concerns and external dependencies from the domain and Web UI containers. - -## Concerns - -Currently, we have dependency integrations for the following concerns: - -* [**Authentication**](./AUTHENTICATION.md) - handles access and identity management. -* [**Database**](./DATABASE.md) - handles storing and retrieving data. -* [**Event broker**](./EVENT_BROKER.md) - handles event management. -* [**File store**](./FILE_STORE.md) - handles storing and retrieving files (comic images). -* [**HTTP**](./HTTP.md) - handles outgoing HTTP requests. -* [**Logging**](./LOGGING.md) - handles application logging. -* [**Notification**](./NOTIFICATION.md) - handles sending notifications to devices. -* [**Runtime**](./RUNTIME.md) - handles the runtime configuration for setting up the infrastructure. -* [**Validation**](./VALIDATION.md) - handles incoming data validation. - -Besides these, we have some smaller integrations for the following utilities: - -* [**Crypto**](../../src/integrations/utilities/crypto.ts) - handles generating hashes and IDs. -* [**Dates**](../../src/integrations/utilities/dates.ts) - handles complex date querying like calculating time elapsed. -* [**Sanitize**](../../src/integrations/utilities/sanitize.ts) - handles sanitizing incoming data. -* [**Web browser**](../../src/integrations/utilities/webbrowser.ts) - handles common web browser-related functions. diff --git a/docs/integrations/RUNTIME.md b/docs/integrations/RUNTIME.md deleted file mode 100644 index a9f32db1..00000000 --- a/docs/integrations/RUNTIME.md +++ /dev/null @@ -1,48 +0,0 @@ - -# Runtime | Comify docs - -The runtime integration provides a universal interaction layer with Jitar and the configuration for setting up the other integrations. - -## Errors - -Both the domain and web UI containers do not depend on Jitar to operate. However, there are certain aspects of Jitar that we want to utilize for better debuggability—specifically, its error handling. - -Jitar automatically creates API endpoints based on the segment configuration. By default, it translates every application error into an Internal Server Error, which is transported with a 500 status code over HTTP. To help Jitar translate application errors into more meaningful status codes, we can leverage its error-handling mechanisms. - -To decouple these errors from the domain, a separate set of errors has been added to this integration, which are used by the domain. Each error is an extension of a Jitar error: - -* **BadRequest** - status code 400 -* **Unauthorized** - status code 401 -* **NotFound** - status code 404 -* **ValidationError** - status code 400 (specialization of BadRequest) -* **ServerError** - status code 500 - -If we decide to migrate from Jitar to another solution, these errors will need to be remapped. - -## Health checks - -Jitar provides a [health check](https://docs.jitar.dev/deploy/health-checks.html) system for monitoring the health of worker nodes. We leverage this system to check the availability of the services behind the integrations: - -* Database -* File store -* Notification - -For each health check, we implemented Jitar's interface. These implementations are located in the `healthchecks` folder. An instance is created and provided to Jitar from the similarly named health check file in the runtime root folder. - -## Middleware - -Jitar provides a [middleware](https://docs.jitar.dev/develop/middleware.html) system for intercepting RPC requests. We leverage this system for authentication. For this we've created two types of middleware: - -* Authentication - server side middleware hooked to the authentication integration -* Requester - client side middleware for browser control - -For each middleware, we implemented Jitar's interface. These implementations are located in the `middleswares` folder. An instance is created and provided to Jitar from the similarly named middleware file in the runtime root folder. - -## Set up and tear down - -Jitar provides a [set-up and tear-down](https://docs.jitar.dev/develop/setup-and-teardown.html) system for executing tasks before starting and stopping a service. We leverage this system for connection / disconnecting the services behind the integrations. We have script for the following two Jitar services: - -* Gateway (authentication) -* Node (database, event broker, file store, notification) - -For each service, we implemented a separate set-up and tear-down script in the runtime root folder. diff --git a/docs/integrations/VALIDATION.md b/docs/integrations/VALIDATION.md deleted file mode 100644 index e3df929e..00000000 --- a/docs/integrations/VALIDATION.md +++ /dev/null @@ -1,96 +0,0 @@ - -# Validation | Comify docs - -The validation integration provides a universal interaction layer with an actual data validation solution. - -## Implementations - -Currently, there is only one implementation: - -* **Zod** - implementation for the currently popular Zod library (used in test and production). - -## Configuration - -The used implementation needs to be configured in the `.env` file. - -```env -VALIDATION_IMPLEMENTATION="zod" -``` - -## How to use - -An instance of the configured validator implementation can be imported for performing validation operations. - -```ts -import validator from '^/integrations/validation'; - -// Perform operations with the validator instance -``` - -### Operations - -```ts -import validator, { ValidationSchema, ValidationResult } from '^/integrations/validation'; - -const data = { - name: 'John Doe', - age: '42' -}; - -const schema: ValidationSchema = { - name: { message: 'Invalid name', STRING: { required: true, minLength: 4, maxLength: 40 } }, - nickname: { message: 'Invalid nickname', STRING: { required: false, , pattern: '^[a-z]+$' } }, - age: { message: 'Invalid age', NUMBER: { required: true, minValue: 18, maxValue: 99 } } -}; - -// Validate data -const result: ValidationResult = validator.validate(data, schema); -``` - -### Validation scheme options - -A basic validation scheme has the following structure. - -```ts -const schema: ValidationSchema = { - fieldName1: { TYPE: { /* type options */ } }, - fieldName2: { TYPE: { /* type options */ } }, - ... -} -``` - -**Note** that a custom validation error `message` can optionally be set per field. - -The following types are supported: - -* **STRING** - * `required: boolean` - * `minLength?: number` - * `maxLength?: number` - * `pattern?: string` -* **NUMBER** - * `required: boolean` - * `minValue?: number` - * `maxValue?: number` -* **ARRAY** - * `required: boolean` - * `minLength?: number` - * `maxLength?: number` - * `validations?: Partial` -* **BOOLEAN** - * `required: boolean` -* **DATE** - * `required: boolean` -* **UUID** - * `required: boolean` -* **EMAIL** - * `required: boolean` -* **URL** - * `required: boolean` - -### Validation result structure - -The validation result has two fields: - -* **invalid** - boolean indicating if at least one of the fields is invalid. -* **messages** - map containing the validation error messages per field. diff --git a/docs/webui/DESIGNSYSTEM.md b/docs/webui/DESIGNSYSTEM.md deleted file mode 100644 index 10dac4a8..00000000 --- a/docs/webui/DESIGNSYSTEM.md +++ /dev/null @@ -1,4 +0,0 @@ - -# Design System | Web UI | Comify docs - -Yet to be written... diff --git a/docs/webui/README.md b/docs/webui/README.md deleted file mode 100644 index 463907b6..00000000 --- a/docs/webui/README.md +++ /dev/null @@ -1,105 +0,0 @@ - -# Web UI | Comify docs - -The Web UI container contains the web based interface for user interaction. It's set up as a single page application (SPA) using [React](https://react.dev). - -## Module structure - -We're using a modular composable approach. Our primary module structure looks like this. - -Web UI module structure - -Let's look at their usages and responsibilities. - -* **Layouts** - templates for building pages. -* **Pages** - composition of features. -* **Features** - interactive composition of components. -* **Components** - small reusable building blocks. - -Each module has its own folder in the `webui` folder and exports its components in an `index.ts` file. - -Besides these, there are some additional modules. - -* **Context** - custom React context providers -* **Design system** - our own simple design system (details provided later) -* **Editor** - implementation of the comic editor -* **Hooks** - custom React hooks -* **Utils** - custom React utils - -## Composition model - -The following example shows the graphical design of the UI showing the users timeline containing comics from followed users. - -Web UI page example - -We'll use this design to explain the composition from layout till components. - -### Layout - -A layout only provide containers for content and do not contain any content themselves. We currently have two layouts: - -1. **Centered** - centers all content both vertically and horizontally. -2. **Sidebar** - two-column layout with a 100% height and centered horizontally. - -The example clearly shows the **Sidebar** layout. - -### Page - -Each page picks a layout and fills its containers. We have a single page per layout because we're using feature based routing: - -1. **Guest** - for non-logged in users (centered layout). -1. **Application** - for logged in users (sidebar layout). - -The example shows the **Application** page. This page has a fixed sidebar coming from the components module. The content is a feature coming from the router. - -### Feature - -Features compose components and make them work as a functional whole. For the largest part the features are implementations of a use-case, like the **Timeline** showed in the example. The other main features are: - -* **Explore** - posts and creators the user isn't following yet. -* **Notifications** - of likes, reactions, followers, etc.. -* **Create** - a new post. -* **Profile** - the users posts, followers and following. - -These features can link to, or contain, sub-features like **PostDetails**, **PostReactions**, etc.. - -At the composition of a feature, actions need to be defined for the components. For example, what needs to happen when the ordering of the overview has changed, or when the follow button is pressed. All available actions are provided as hooks (from the `hooks` module), so they only need to be imported and linked. For example, the `useEstablishRelation` hook is linked as action for the follow button. - -A feature is also responsible for loading data. For this, hooks are also available like the `useNotifications` hook used for the notifications feature. - -### Components - -Components are small reusable building blocks grouped per domain concept. To keep them small, we break them down into smaller pieces. Conceptually we distinguish two types of components: - -1. **Primary** - public (shared) components for building features. -1. **Elementary** - private components for building primary components. - -Our basic design rule: components are dumb! A component can define actions, but does not implement them. Features will provide the implementation, because they know the context of use. - -Also, primary components can be bound to a domain model. Elementary components cannot, because they are even dumber. - -### Design system - -At the core of the design lies a design system that we use for building the pages, features and components. When done correctly, you won't find a trace of standard HTML in them. - -The design system consists for the most part of a set of elements like a button, panel, etc.. But it also has interactive components like a dropdown and tabs. A full description of the design system can be found in a [separate document](./DESIGNSYSTEM.md). - -**Note:** In the future we might move the design system to its own project so we can reuse it for other projects. - -## Other topics - -### Routing - -The routes can be found in the `Routes.tsx` file in the root of the webui folder. They are used in the `App` components that is also placed in the root folder. - -### Contexts - -Currently we only a single context for the application. The `AppContext` only provides the identity of the user. We try to limit the number of contexts, so we hope we can leave it like this. - -### Server communication - -All server communication comes from hooks. A hook is allowed to import and execute a domain function, like establishing a relation. - -Many of the domain functions require a requester object for authorization purposes. We've created a `requester` object to act as placeholder when calling these functions. The authentication middleware will replace this object with the actual requester. - -**Note:** Because we're using Jitar, we can import and call the functions directly and don't have to build API requests. diff --git a/docs/diagrams/context.cml b/documentation/diagrams/context.cml similarity index 100% rename from docs/diagrams/context.cml rename to documentation/diagrams/context.cml diff --git a/docs/diagrams/workspace.dsl b/documentation/diagrams/workspace.dsl similarity index 100% rename from docs/diagrams/workspace.dsl rename to documentation/diagrams/workspace.dsl diff --git a/example.env b/example.env index 65c9c7be..baa5d76d 100644 --- a/example.env +++ b/example.env @@ -55,7 +55,7 @@ NOTIFICATION_DRIVER="memory" MONGODB_PORT_NUMBER=27017 MONGODB_ROOT_USERNAME="development" MONGODB_ROOT_PASSWORD="development" -MONGODB_INIT_PATH="./docker/mongodb" +MONGODB_INIT_PATH="./deployment/docker/mongodb" # MONGO EXPRESS MONGO_EXPRESS_PORT_NUMBER=8081 @@ -73,8 +73,8 @@ KEYCLOAK_HOSTNAME_STRICT="false" KEYCLOAK_PORT_NUMBER=8080 KEYCLOAK_BOOTSTRAP_ADMIN_USERNAME="development" KEYCLOAK_BOOTSTRAP_ADMIN_PASSWORD="development" -KEYCLOAK_IMPORT_PATH="./docker/keycloak" -KEYCLOAK_THEME_PATH="./docker/keycloak/themes" +KEYCLOAK_IMPORT_PATH="./deployment/docker/keycloak" +KEYCLOAK_THEME_PATH="./deployment/docker/keycloak/themes" KEYCLOAK_GITHUB_CLIENT_ID="development" KEYCLOAK_GITHUB_CLIENT_SECRET="development" KEYCLOAK_GOOGLE_CLIENT_ID="development" diff --git a/jitar.json b/jitar.json index dc40ac1f..5083665e 100644 --- a/jitar.json +++ b/jitar.json @@ -1,6 +1,6 @@ { - "source": "./build", - "target": "./dist", - "segments": "./segments", - "resources": "./resources" + "source": "./artifacts/build", + "target": "./artifacts/dist", + "segments": "./deployment/segments", + "resources": "./deployment/resources" } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 70d7fe82..49e4eb8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,17 @@ { - "name": "comify", - "version": "0.1.4", + "name": "concept", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "comify", - "version": "0.1.4", + "name": "concept", + "version": "0.0.1", + "workspaces": [ + "development/insights", + "development/social", + "development/moderation" + ], "dependencies": { "@jitar-plugins/authentication": "0.1.3", "@jitar-plugins/database": "0.1.3", @@ -39,7 +44,7 @@ "devDependencies": { "@eslint/js": "9.39.4", "@jitar/plugin-vite": "0.10.7", - "@types/node": "25.3.0", + "@types/node": "24.10.4", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "5.1.4", @@ -57,6 +62,18 @@ "vitest": "4.0.18" } }, + "development/insights": { + "name": "@concept/insights", + "version": "0.0.1" + }, + "development/moderation": { + "name": "@concept/moderation", + "version": "0.0.1" + }, + "development/social": { + "name": "@concept/social", + "version": "0.0.1" + }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -96,31 +113,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", @@ -149,31 +141,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", @@ -221,31 +188,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", @@ -260,65 +202,65 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1019.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1019.0.tgz", - "integrity": "sha512-0pb9x7PPhS4oEi4c0rL3vzQQoXA4cWKtPuGga/UfVYLZ68yrqdq0NDKg0fr55qzdhNvWFCpmGx73g9Iyy03kkA==", + "version": "3.1045.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1045.0.tgz", + "integrity": "sha512-fsuO3Y6t+3Ro9Bsg41DKj4Sfy53CGSrhnMldNplWmG8Tx0UbYk+YDa4RD1hVlJpERw4JBmPkl0+J9qlxMh1pcA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/credential-provider-node": "^3.972.27", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", - "@aws-sdk/middleware-expect-continue": "^3.972.8", - "@aws-sdk/middleware-flexible-checksums": "^3.974.5", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-location-constraint": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-sdk-s3": "^3.972.26", - "@aws-sdk/middleware-ssec": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.26", - "@aws-sdk/region-config-resolver": "^3.972.10", - "@aws-sdk/signature-v4-multi-region": "^3.996.14", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.12", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/eventstream-serde-browser": "^4.2.12", - "@smithy/eventstream-serde-config-resolver": "^4.3.12", - "@smithy/eventstream-serde-node": "^4.2.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-blob-browser": "^4.2.13", - "@smithy/hash-node": "^4.2.12", - "@smithy/hash-stream-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/md5-js": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-node": "^3.972.39", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.10", + "@aws-sdk/middleware-expect-continue": "^3.972.10", + "@aws-sdk/middleware-flexible-checksums": "^3.974.16", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-location-constraint": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-sdk-s3": "^3.972.37", + "@aws-sdk/middleware-ssec": "^3.972.10", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/signature-v4-multi-region": "^3.996.25", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/eventstream-serde-browser": "^4.2.14", + "@smithy/eventstream-serde-config-resolver": "^4.3.14", + "@smithy/eventstream-serde-node": "^4.2.14", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-blob-browser": "^4.2.15", + "@smithy/hash-node": "^4.2.14", + "@smithy/hash-stream-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/md5-js": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.20", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", + "@smithy/util-waiter": "^4.3.0", "tslib": "^2.6.2" }, "engines": { @@ -326,22 +268,23 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.973.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.25.tgz", - "integrity": "sha512-TNrx7eq6nKNOO62HWPqoBqPLXEkW6nLZQGwjL6lq1jZtigWYbK1NbCnT7mKDzbLMHZfuOECUt3n6CzxjUW9HWQ==", + "version": "3.974.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", + "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/xml-builder": "^3.972.16", - "@smithy/core": "^3.23.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/signature-v4": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/xml-builder": "^3.972.22", + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.12", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -350,12 +293,12 @@ } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.5.tgz", - "integrity": "sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==", + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", + "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -363,15 +306,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.23", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.23.tgz", - "integrity": "sha512-EamaclJcCEaPHp6wiVknNMM2RlsPMjAHSsYSFLNENBM8Wz92QPc6cOn3dif6vPDQt0Oo4IEghDy3NMDCzY/IvA==", + "version": "3.972.34", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz", + "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -379,20 +322,20 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.25.tgz", - "integrity": "sha512-qPymamdPcLp6ugoVocG1y5r69ScNiRzb0hogX25/ij+Wz7c7WnsgjLTaz7+eB5BfRxeyUwuw5hgULMuwOGOpcw==", + "version": "3.972.36", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz", + "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/types": "^3.973.6", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/property-provider": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/util-stream": "^4.5.20", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-stream": "^4.5.25", "tslib": "^2.6.2" }, "engines": { @@ -400,24 +343,24 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.26.tgz", - "integrity": "sha512-xKxEAMuP6GYx2y5GET+d3aGEroax3AgGfwBE65EQAUe090lzyJ/RzxPX9s8v7Z6qAk0XwfQl+LrmH05X7YvTeg==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz", + "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/credential-provider-env": "^3.972.23", - "@aws-sdk/credential-provider-http": "^3.972.25", - "@aws-sdk/credential-provider-login": "^3.972.26", - "@aws-sdk/credential-provider-process": "^3.972.23", - "@aws-sdk/credential-provider-sso": "^3.972.26", - "@aws-sdk/credential-provider-web-identity": "^3.972.26", - "@aws-sdk/nested-clients": "^3.996.16", - "@aws-sdk/types": "^3.973.6", - "@smithy/credential-provider-imds": "^4.2.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-env": "^3.972.34", + "@aws-sdk/credential-provider-http": "^3.972.36", + "@aws-sdk/credential-provider-login": "^3.972.38", + "@aws-sdk/credential-provider-process": "^3.972.34", + "@aws-sdk/credential-provider-sso": "^3.972.38", + "@aws-sdk/credential-provider-web-identity": "^3.972.38", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -425,18 +368,18 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.26.tgz", - "integrity": "sha512-EFcM8RM3TUxnZOfMJo++3PnyxFu1fL/huzmn3Vh+8IWRgqZawUD3cRwwOr+/4bE9DpyHaLOWFAjY0lfK5X9ZkQ==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz", + "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/nested-clients": "^3.996.16", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -444,22 +387,22 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.27", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.27.tgz", - "integrity": "sha512-jXpxSolfFnPVj6GCTtx3xIdWNoDR7hYC/0SbetGZxOC9UnNmipHeX1k6spVstf7eWJrMhXNQEgXC0pD1r5tXIg==", + "version": "3.972.39", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz", + "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.23", - "@aws-sdk/credential-provider-http": "^3.972.25", - "@aws-sdk/credential-provider-ini": "^3.972.26", - "@aws-sdk/credential-provider-process": "^3.972.23", - "@aws-sdk/credential-provider-sso": "^3.972.26", - "@aws-sdk/credential-provider-web-identity": "^3.972.26", - "@aws-sdk/types": "^3.973.6", - "@smithy/credential-provider-imds": "^4.2.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/credential-provider-env": "^3.972.34", + "@aws-sdk/credential-provider-http": "^3.972.36", + "@aws-sdk/credential-provider-ini": "^3.972.38", + "@aws-sdk/credential-provider-process": "^3.972.34", + "@aws-sdk/credential-provider-sso": "^3.972.38", + "@aws-sdk/credential-provider-web-identity": "^3.972.38", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -467,16 +410,16 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.23", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.23.tgz", - "integrity": "sha512-IL/TFW59++b7MpHserjUblGrdP5UXy5Ekqqx1XQkERXBFJcZr74I7VaSrQT5dxdRMU16xGK4L0RQ5fQG1pMgnA==", + "version": "3.972.34", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz", + "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -484,18 +427,18 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.26.tgz", - "integrity": "sha512-c6ghvRb6gTlMznWhGxn/bpVCcp0HRaz4DobGVD9kI4vwHq186nU2xN/S7QGkm0lo0H2jQU8+dgpUFLxfTcwCOg==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz", + "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/nested-clients": "^3.996.16", - "@aws-sdk/token-providers": "3.1019.0", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/token-providers": "3.1041.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -503,17 +446,17 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.26.tgz", - "integrity": "sha512-cXcS3+XD3iwhoXkM44AmxjmbcKueoLCINr1e+IceMmCySda5ysNIfiGBGe9qn5EMiQ9Jd7pP0AGFtcd6OV3Lvg==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz", + "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/nested-clients": "^3.996.16", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -521,16 +464,16 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.8.tgz", - "integrity": "sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", + "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", + "@aws-sdk/types": "^3.973.8", "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, @@ -539,14 +482,14 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.8.tgz", - "integrity": "sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", + "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -554,23 +497,23 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.5.tgz", - "integrity": "sha512-SPSvF0G1t8m8CcB0L+ClNFszzQOvXaxmRj25oRWDf6aU+TuN2PXPFAJ9A6lt1IvX4oGAqqbTdMPTYs/SSHUYYQ==", + "version": "3.974.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.16.tgz", + "integrity": "sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/crc64-nvme": "^3.972.5", - "@aws-sdk/types": "^3.973.6", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/crc64-nvme": "^3.972.7", + "@aws-sdk/types": "^3.973.8", "@smithy/is-array-buffer": "^4.2.2", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-stream": "^4.5.20", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -579,14 +522,14 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", - "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", + "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -594,13 +537,13 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.8.tgz", - "integrity": "sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", + "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -608,13 +551,13 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", - "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", + "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -622,15 +565,15 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.9.tgz", - "integrity": "sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", + "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", + "@aws-sdk/types": "^3.973.8", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -638,23 +581,23 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.26.tgz", - "integrity": "sha512-5q7UGSTtt7/KF0Os8wj2VZtlLxeWJVb0e2eDrDJlWot2EIxUNKDDMPFq/FowUqrwZ40rO2bu6BypxaKNvQhI+g==", + "version": "3.972.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz", + "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/types": "^3.973.6", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/core": "^3.23.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/signature-v4": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-stream": "^4.5.20", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -663,13 +606,13 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.8.tgz", - "integrity": "sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", + "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -677,18 +620,18 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.26", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.26.tgz", - "integrity": "sha512-AilFIh4rI/2hKyyGN6XrB0yN96W2o7e7wyrPWCM6QjZM1mcC/pVkW3IWWRvuBWMpVP8Fg+rMpbzeLQ6dTM4gig==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz", + "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@smithy/core": "^3.23.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-retry": "^4.2.12", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@smithy/core": "^3.23.17", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-retry": "^4.3.6", "tslib": "^2.6.2" }, "engines": { @@ -696,47 +639,48 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.996.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.16.tgz", - "integrity": "sha512-L7Qzoj/qQU1cL5GnYLQP5LbI+wlLCLoINvcykR3htKcQ4tzrPf2DOs72x933BM7oArYj1SKrkb2lGlsJHIic3g==", + "version": "3.997.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz", + "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.26", - "@aws-sdk/region-config-resolver": "^3.972.10", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.12", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/signature-v4-multi-region": "^3.996.25", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -745,15 +689,15 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.10.tgz", - "integrity": "sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==", + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", + "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/config-resolver": "^4.4.13", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/config-resolver": "^4.4.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -761,16 +705,16 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.14.tgz", - "integrity": "sha512-4nZSrBr1NO+48HCM/6BRU8mnRjuHZjcpziCvLXZk5QVftwWz5Mxqbhwdz4xf7WW88buaTB8uRO2MHklSX1m0vg==", + "version": "3.996.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz", + "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.26", - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/signature-v4": "^5.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/middleware-sdk-s3": "^3.972.37", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -778,17 +722,17 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1019.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1019.0.tgz", - "integrity": "sha512-OF+2RfRmUKyjzrRWlDcyju3RBsuqcrYDQ8TwrJg8efcOotMzuZN4U9mpVTIdATpmEc4lWNZBMSjPzrGm6JPnAQ==", + "version": "3.1041.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz", + "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/nested-clients": "^3.996.16", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -796,12 +740,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", - "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "version": "3.973.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -821,15 +765,15 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", - "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "version": "3.996.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", + "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-endpoints": "^3.3.3", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-endpoints": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -849,27 +793,27 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", - "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", + "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.12", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.12.tgz", - "integrity": "sha512-8phW0TS8ntENJgDcFewYT/Q8dOmarpvSxEjATu2GUBAutiHr++oEGCiBUwxslCMNvwW2cAPZNT53S/ym8zm/gg==", + "version": "3.973.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz", + "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.26", - "@aws-sdk/types": "^3.973.6", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/types": "^3.973.8", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, @@ -886,13 +830,14 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.16.tgz", - "integrity": "sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", + "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "fast-xml-parser": "5.5.8", + "@nodable/entities": "2.1.0", + "@smithy/types": "^4.14.1", + "fast-xml-parser": "5.7.2", "tslib": "^2.6.2" }, "engines": { @@ -924,9 +869,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", "dev": true, "license": "MIT", "engines": { @@ -1012,9 +957,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", - "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz", + "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==", "dev": true, "license": "MIT", "dependencies": { @@ -1023,7 +968,7 @@ "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.6", + "@babel/traverse": "^7.29.0", "semver": "^6.3.1" }, "engines": { @@ -1321,6 +1266,23 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz", + "integrity": "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", @@ -1840,9 +1802,9 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", - "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", + "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", "dev": true, "license": "MIT", "dependencies": { @@ -2307,19 +2269,20 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", - "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", + "version": "7.29.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.5.tgz", + "integrity": "sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.29.0", + "@babel/compat-data": "^7.29.3", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", @@ -2351,7 +2314,7 @@ "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-systemjs": "^7.29.4", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", @@ -2474,10 +2437,22 @@ "node": ">=18" } }, + "node_modules/@concept/insights": { + "resolved": "development/insights", + "link": true + }, + "node_modules/@concept/moderation": { + "resolved": "development/moderation", + "link": true + }, + "node_modules/@concept/social": { + "resolved": "development/social", + "link": true + }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", - "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", "cpu": [ "ppc64" ], @@ -2492,9 +2467,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", - "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", "cpu": [ "arm" ], @@ -2509,9 +2484,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", - "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", "cpu": [ "arm64" ], @@ -2526,9 +2501,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", - "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", "cpu": [ "x64" ], @@ -2543,9 +2518,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", - "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", "cpu": [ "arm64" ], @@ -2560,9 +2535,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", - "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", "cpu": [ "x64" ], @@ -2577,9 +2552,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", - "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", "cpu": [ "arm64" ], @@ -2594,9 +2569,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", - "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", "cpu": [ "x64" ], @@ -2611,9 +2586,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", - "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", "cpu": [ "arm" ], @@ -2628,9 +2603,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", - "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", "cpu": [ "arm64" ], @@ -2645,9 +2620,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", - "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", "cpu": [ "ia32" ], @@ -2662,9 +2637,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", - "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", "cpu": [ "loong64" ], @@ -2679,9 +2654,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", - "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", "cpu": [ "mips64el" ], @@ -2696,9 +2671,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", - "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", "cpu": [ "ppc64" ], @@ -2713,9 +2688,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", - "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", "cpu": [ "riscv64" ], @@ -2730,9 +2705,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", - "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", "cpu": [ "s390x" ], @@ -2747,9 +2722,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", - "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", "cpu": [ "x64" ], @@ -2764,9 +2739,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", - "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", "cpu": [ "arm64" ], @@ -2781,9 +2756,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", - "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", "cpu": [ "x64" ], @@ -2798,9 +2773,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", - "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", "cpu": [ "arm64" ], @@ -2815,9 +2790,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", - "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", "cpu": [ "x64" ], @@ -2832,9 +2807,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", - "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", "cpu": [ "arm64" ], @@ -2849,9 +2824,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", - "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", "cpu": [ "x64" ], @@ -2866,9 +2841,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", - "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", "cpu": [ "arm64" ], @@ -2883,9 +2858,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", - "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", "cpu": [ "ia32" ], @@ -2900,9 +2875,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", - "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", "cpu": [ "x64" ], @@ -2983,9 +2958,9 @@ "peer": true }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "peer": true, @@ -3070,9 +3045,9 @@ "peer": true }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "peer": true, @@ -3146,31 +3121,46 @@ } }, "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, "license": "Apache-2.0", "peer": true, + "dependencies": { + "@humanfs/types": "^0.15.0" + }, "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@humanfs/core": "^0.19.1", + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -3351,6 +3341,22 @@ "react": "^19.2.0" } }, + "node_modules/@maskingtech/designsystem/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", + "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@maskingtech/react-toolkit": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/@maskingtech/react-toolkit/-/react-toolkit-0.0.4.tgz", @@ -3369,6 +3375,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3376,14 +3385,26 @@ ] }, "node_modules/@mongodb-js/saslprep": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.6.tgz", - "integrity": "sha512-y+x3H1xBZd38n10NZF/rEBlvDOOMQ6LKUTHqr8R9VkJ+mmQOYtJFxIlkkK8fZrtOiL6VixbOBWMbZGBdal3Z1g==", + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.11.tgz", + "integrity": "sha512-o9rAHc0IpIjuPSxRutWpE1F62x7n+4mVS4rCNHkzhIUMQcc18bb6xEq5wd2NdN0WjepIyXIppRshYI2kQDOZVA==", "license": "MIT", "dependencies": { "sparse-bitfield": "^3.0.3" } }, + "node_modules/@nodable/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3429,10 +3450,37 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/plugin-babel": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz", + "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", - "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", + "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", "dev": true, "license": "MIT", "dependencies": { @@ -3454,6 +3502,28 @@ } } }, + "node_modules/@rollup/plugin-replace": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz", + "integrity": "sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-terser": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz", @@ -3521,9 +3591,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", - "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", "cpu": [ "arm" ], @@ -3535,9 +3605,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", - "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", "cpu": [ "arm64" ], @@ -3549,9 +3619,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", - "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", "cpu": [ "arm64" ], @@ -3563,9 +3633,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", - "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", "cpu": [ "x64" ], @@ -3577,9 +3647,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", - "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", "cpu": [ "arm64" ], @@ -3591,9 +3661,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", - "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", "cpu": [ "x64" ], @@ -3605,13 +3675,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", - "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3619,13 +3692,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", - "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3633,13 +3709,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", - "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3647,13 +3726,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", - "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3661,13 +3743,16 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", - "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", "cpu": [ "loong64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3675,13 +3760,16 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", - "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", "cpu": [ "loong64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3689,13 +3777,16 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", - "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3703,13 +3794,16 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", - "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3717,13 +3811,16 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", - "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3731,13 +3828,16 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", - "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3745,13 +3845,16 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", - "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3759,12 +3862,16 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.54.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", - "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", "cpu": [ "x64" ], + "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3772,13 +3879,16 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", - "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3786,9 +3896,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", - "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", "cpu": [ "x64" ], @@ -3800,9 +3910,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", - "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", "cpu": [ "arm64" ], @@ -3814,9 +3924,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", - "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", "cpu": [ "arm64" ], @@ -3828,9 +3938,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", - "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", "cpu": [ "ia32" ], @@ -3842,9 +3952,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", - "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", "cpu": [ "x64" ], @@ -3856,9 +3966,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", - "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", "cpu": [ "x64" ], @@ -3869,55 +3979,13 @@ "win32" ] }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.12.tgz", - "integrity": "sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", - "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", - "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@smithy/config-resolver": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.13.tgz", - "integrity": "sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.5.0.tgz", + "integrity": "sha512-m5PNfr7xKdIegNG8DlLz+Gf/DlAhHWFGmFbe0DZo9pnvBwuZ3P/9OMtQU0UyWMYy8zjl+HDFVS7rdD9p2xEFjQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -3925,20 +3993,13 @@ } }, "node_modules/@smithy/core": { - "version": "3.23.12", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.12.tgz", - "integrity": "sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.0.tgz", + "integrity": "sha512-rZ5YfycIXX6puoGjthnDiMpUgtKNOq3c7CndQYkCNYQTv26AiCrZQOJPy7ANSfZ6Okk3UvCRnmO1OYWlLnYZgg==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", - "@smithy/uuid": "^1.1.2", + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -3946,30 +4007,13 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", - "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.12.tgz", - "integrity": "sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.0.tgz", + "integrity": "sha512-5gi+28FH+RurB2+tcRH1CK7KiLJ0dVnabjWLY3DgeFLiU45dbyrsq7NOYvMUcHgu9LVZH5F7G+Qk1GdXF0y6jg==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.13.1", - "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/core": "^3.24.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -3977,13 +4021,12 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.12.tgz", - "integrity": "sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.3.0.tgz", + "integrity": "sha512-JlY17/ZwBJ2O7FK/bKt8PZR+HBkyFwvgssgT6LiB0xYtz5/E5XG/HeKr5q2NMaVm8u8xjFfGk/6DVlbBe1qNkA==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -3991,12 +4034,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.12.tgz", - "integrity": "sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.4.0.tgz", + "integrity": "sha512-1Pg7aqxIdMilTbGJKCHTx0toIkKSrHdO6VHCh9oCncWJG+1wkJa90O/xb9mmRPuoOFCg2DLZAqnRyuBiUQnNIA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4004,27 +4047,12 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.12.tgz", - "integrity": "sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz", - "integrity": "sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.3.0.tgz", + "integrity": "sha512-Xte1Td6CQpc/D0WnPZ2k98CvF7y1GopylMoGY/r26a9wbRHV5xusRbT6O9vouSeZlvtxoVb4ON/1fLRofO7m4Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4032,15 +4060,13 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.15", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", - "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.0.tgz", + "integrity": "sha512-yxurumLvHfgYgM0FVtjOVIyBSJXfno4xKKOgD43wOk9Qh+2lTKfP9Qhu4JHU7IUwrqVPa888byUzomHMgvKVMg==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/querystring-builder": "^4.2.12", - "@smithy/types": "^4.13.1", - "@smithy/util-base64": "^4.3.2", + "@smithy/core": "^3.24.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4048,14 +4074,12 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.13.tgz", - "integrity": "sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.3.0.tgz", + "integrity": "sha512-xOQ7w5hSzTe8IAwQ6BAbX+1d9s9SRwWUbU8cYYh5DHgkYOi131Q5+B9Blelg9u0zoPfM4VYOuuBRAmregPkzpQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.2", - "@smithy/chunked-blob-reader-native": "^4.2.3", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4063,14 +4087,12 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", - "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.3.0.tgz", + "integrity": "sha512-4a+KoVqr1SZtw7cZvY24XU1S5OL+c23MdDQ3jFmMCQ5s9diBFdMG/UIgp5dNqlwvDrWA0U5KO+z3Gzq1ize+LA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4078,13 +4100,12 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.12.tgz", - "integrity": "sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.3.0.tgz", + "integrity": "sha512-DPDT0UyOREMPwipO7BzSJfD8z2YYp/x1FMpHqEppBF+gmGr7FoqUUFlXfK+YPOfHhlr8HDJRQpmShNb9C9po5Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4092,12 +4113,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", - "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.3.0.tgz", + "integrity": "sha512-TaoGtqi2ZNdGzxUgYcLczjW8rb/h5DQ8vlCMYDSdZ4LRzGQrrEYgUjlZVM9dAagTsLK5gZx1f7+44sFTjz5vuQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4105,11 +4126,12 @@ } }, "node_modules/@smithy/is-array-buffer": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", - "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.3.0.tgz", + "integrity": "sha512-V9ZCT5mHNteWOKtu3LkGHTheEyBWzTU3XydeSOHrqG6znEoCARjxFZ0XP9JJyKV9jxEMx7hNbzGlQaXtKkmvSQ==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4117,13 +4139,12 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.12.tgz", - "integrity": "sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.3.0.tgz", + "integrity": "sha512-bODwWrXILREpCL7XZq1/QxiMqFxdWadw3noiKGjNKsPl1/nvWtLVFInNjK6pmHjM4BUOgfgZkrl9+V56ez2FNA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4131,13 +4152,12 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", - "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.3.0.tgz", + "integrity": "sha512-IbSiS/3nOxsimCthzElEoBrjQo+Na4bsQ63qyC8qSI8lkMjOv9+VlosDQd8gfNolAD9XmC5tLqYTI0bJGJsscg==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4145,18 +4165,12 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.27", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.27.tgz", - "integrity": "sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.5.0.tgz", + "integrity": "sha512-ux8LgN/m/X7ET2ISRc8G4aKFI1QhINZtkKpoayNPTrhwpsCVxb47mlpYFuWceTlesc0Wmb0S9y6DP195ReQoXA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.12", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-middleware": "^4.2.12", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4164,19 +4178,12 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.44", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.44.tgz", - "integrity": "sha512-Y1Rav7m5CFRPQyM4CI0koD/bXjyjJu3EQxZZhtLGD88WIrBrQ7kqXM96ncd6rYnojwOo/u9MXu57JrEvu/nLrA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.6.0.tgz", + "integrity": "sha512-8CtxY9aHT4f3UvZUbU2O0bccRckqTDfTKk3t1DawUZa5DWRZdV2AMABLsdMTdj7KE1uumhzEaT0X7/jTcOtoBw==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/service-error-classification": "^4.2.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/uuid": "^1.1.2", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4184,14 +4191,12 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.15", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.15.tgz", - "integrity": "sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.3.0.tgz", + "integrity": "sha512-c+V02hZlIStscI4ie2VllJjM4DLxdI2SymIBvXmqCqicrNb0NAbgDXDTBiwcMiruaBOqEFYxpKXbz6JjsNEN3Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4199,12 +4204,12 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", - "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.3.0.tgz", + "integrity": "sha512-KtYcs+sJn7AiT0YdM53/6MT0dKsaW2MSAr9MpprRVSfwN9qyKQf2dBIuCXt18/nEZaWerol/bGaQ63G949aovw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4212,14 +4217,12 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", - "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.4.0.tgz", + "integrity": "sha512-5RutFJsYoqK4tWYZOjGQrPLowGf2Ku8rbNuVeGkNJ5axIDO4LV/fydBojPtwcDz2zf87YNCOXfNyuEyAwYgI7A==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4227,15 +4230,13 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.5.0.tgz", - "integrity": "sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.0.tgz", + "integrity": "sha512-PxF57Jr3dPm+RgZWekOL+o96FPdaT62xZUyDfi47uMRFi5rHpwO/ewFbrztrASQ/7H8moNi1sspIHihHpfoKsQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/querystring-builder": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4243,12 +4244,12 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", - "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.3.0.tgz", + "integrity": "sha512-/YBWtO2SdvPSAUk/Ke1Xpdg1E1lfaNGblla7mnIVGtaGkSQ5bK7KBZqpuj5IokHlU9UcLDvt2QwTLV7oRzBUTA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4256,64 +4257,25 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.12", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", - "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.4.0.tgz", + "integrity": "sha512-WG0LgSZg+WbvWYD04uwIYVyMEpyd0cPx1lkqx61JxunxiFti+wGoFiDKr6wswun1r25Z2f8yUoMQWyxjMnnXtw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", - "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-uri-escape": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", - "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", - "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", - "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.5.0.tgz", + "integrity": "sha512-xATpw6gcurFztdsUrMNaKb2ugqk3545Whhqg7ZD4sxTg+zI27THjg3IY+InXsVWturOWdCdV+UHQx11g9Sp5Kw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4321,18 +4283,13 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.12", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", - "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.0.tgz", + "integrity": "sha512-nkdB9T8JS6iD5PukE5TB8KqcvMEPVPHVUY7J0odYJgyIM40Du2msUhBdoPNRqRArDDcGQqVQcbzu0CZA7b+Nkw==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-uri-escape": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4340,17 +4297,13 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.12.7", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.7.tgz", - "integrity": "sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.13.0.tgz", + "integrity": "sha512-lysfoRCr7PdD9CsPp9VQuJYRGI5mWYb8FRkbdBSQttxpQmW7tZsFgmpBNKVcgvBsAgBCkYX/UQs0NmznuBcZQQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-stream": "^4.5.20", + "@smithy/core": "^3.24.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4358,9 +4311,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", - "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -4370,13 +4323,12 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", - "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.3.0.tgz", + "integrity": "sha512-I5tCWs/ndLrJrbvlnsN1cOt8PVAbQEqg0nNeQqebD5ynQcbhgch9uA7KmpX9vfq/vEudq0iVYAOxt+4aBkUlWA==", "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4384,13 +4336,12 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", - "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.4.0.tgz", + "integrity": "sha512-puJITyefgQ9a5F+wKylCLkf0VCwesWbaN4O3YCEalRin4N0CTPQu/XA3kz/QsMOTgd3knhd0BQwGCBm/tv0Y1A==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4398,11 +4349,12 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", - "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.3.0.tgz", + "integrity": "sha512-83U8xa8EmdExGzFuqBzgXvtmbLQIYcCuCNm5no4rlPqpGdOPGUufzMvLdlw+sPTb01qHIsDDNwOecm4s8ROOPw==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4410,11 +4362,12 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", - "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.3.0.tgz", + "integrity": "sha512-Ok2v9zPFfd6uOJMTIIJ8HFdCpARD77q4OHYhwhG9y5X1Y9oeQ0CHUQVJD6LhT6l8FUkFYisqcUaZSg7SArFUTA==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4422,83 +4375,76 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", - "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", + "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", - "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.43", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.43.tgz", - "integrity": "sha512-Qd/0wCKMaXxev/z00TvNzGCH2jlKKKxXP1aDxB6oKwSQthe3Og2dMhSayGCnsma1bK/kQX1+X7SMP99t6FgiiQ==", + "node_modules/@smithy/util-config-provider": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.3.0.tgz", + "integrity": "sha512-kAC6/UB9qW9r2xQAOko2iDxAXmRD2VGMZjnXSEacAhQySdJs58CwvoOE0tHWdtc/lWF4g78X6Z9ucLanJnuVUw==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.47", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.47.tgz", - "integrity": "sha512-qSRbYp1EQ7th+sPFuVcVO05AE0QH635hycdEXlpzIahqHHf2Fyd/Zl+8v0XYMJ3cgDVPa0lkMefU7oNUjAP+DQ==", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.4.0.tgz", + "integrity": "sha512-jKezW5Taa+N2gbkB02UVijH1rFlEJC+cskZzwasFqFJMBBi/bcVgHqcYOX0WOnUk6MDZfHf0gEsr5Br4XMHiAg==", "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.13", - "@smithy/credential-provider-imds": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-endpoints": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", - "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.3.0.tgz", + "integrity": "sha512-xYRuNHHIztu5AzruMJ8kTyA1JsBL/yZKvX5z/A7OHUxsf+rkEESZFZWJDcAj5dDWSu6brWFe5KH6qJNTVztX/w==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", - "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "node_modules/@smithy/util-endpoints": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.5.0.tgz", + "integrity": "sha512-pcvTCp9Wch/9UnWWfRGoG5GJogDXFPjevE+CqALxtPFGA4GqFQRD6eUtgJhHN+NPtohcozI12u1skF2/iubGrQ==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4506,12 +4452,12 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", - "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.3.0.tgz", + "integrity": "sha512-X/DNQxgUCbjjs3HosLmt5Yi1NocxjRFiiOgHml4tVV3w4mIbqZxPR8kq7apGPEMnhIpyxeTgFyypMrfxfn2DlQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4519,13 +4465,12 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.12.tgz", - "integrity": "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.4.0.tgz", + "integrity": "sha512-pV/Kq4jUuP9raOqwSPeBiut2IWmwbc9vM+nE3ly4YUkzPHbBZvfhikwMOyudER+KHPjakuc8r4TecEPMsI7nVg==", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4533,30 +4478,12 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.20", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.20.tgz", - "integrity": "sha512-4yXLm5n/B5SRBR2p8cZ90Sbv4zL4NKsgxdzCzp/83cXw2KxLEumt5p+GAVyRNZgQOSrzXn9ARpO0lUe8XSlSDw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/types": "^4.13.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", - "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.6.0.tgz", + "integrity": "sha512-BlWg46UASokl3O5YqWmbLpINE5stmAxynXlyOe1nE4dx+tvwgqtT4ug/rPcRg0xVcBnj68XlcOqbXeaGGcH0DA==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4564,12 +4491,12 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", - "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.3.0.tgz", + "integrity": "sha512-5hrmCc+dTgZkiFhX72Q16LemYPkvZ1M4pFMOhk0X9tQnLY7dn7zC1+C+aAJn0dw6CXldbqY/KMbMYCwm8yw14g==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4577,25 +4504,12 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.13.tgz", - "integrity": "sha512-2zdZ9DTHngRtcYxJK1GUDxruNr53kv5W2Lupe0LMU+Imr6ohQg8M2T14MNkj1Y0wS3FFwpgpGQyvuaMF7CiTmQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/uuid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", - "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.4.0.tgz", + "integrity": "sha512-7kAlrB3n7/BHyw+uLq83d5jdadPUcDkdMOUSGxvpXjrJ++G0hTedTnoNChjybIxhZ/Gk7sCrfIOLkMAB0LhRBA==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { @@ -4609,29 +4523,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, "node_modules/@theshelf/authentication": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@theshelf/authentication/-/authentication-0.4.3.tgz", @@ -4768,6 +4659,22 @@ "@theshelf/validation": "^0.4.3" } }, + "node_modules/@trickfilm400/rollup-plugin-off-main-thread": { + "version": "3.0.0-pre1", + "resolved": "https://registry.npmjs.org/@trickfilm400/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-3.0.0-pre1.tgz", + "integrity": "sha512-/67zpWDBLV+oYAEL682s1ktXL0HgqX76f6gaVGkGnVZlBbm1zd0v4Bz8MFF2GGhoX9rvfq3KSQHubFHwa6w6/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.10", + "json5": "^2.2.3", + "magic-string": "^0.30.21", + "string.prototype.matchall": "^4.0.12" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -4847,15 +4754,22 @@ "peer": true }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "24.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", + "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.16.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/react": { "version": "19.2.14", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", @@ -5101,9 +5015,9 @@ "license": "MIT" }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -5127,9 +5041,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -5395,9 +5309,9 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "peer": true, @@ -5723,9 +5637,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.12", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.12.tgz", - "integrity": "sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==", + "version": "2.10.17", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.17.tgz", + "integrity": "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5804,9 +5718,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -5824,11 +5738,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -5863,15 +5777,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -5922,9 +5836,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001782", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001782.tgz", - "integrity": "sha512-dZcaJLJeDMh4rELYFw1tvSn1bhZWYFOt468FcbHHxx/Z/dFidd1I6ciyFdi3iwfQCyOjqo9upF6lGQYtMiJWxw==", + "version": "1.0.30001787", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", + "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", "dev": true, "funding": [ { @@ -6058,9 +5972,9 @@ "license": "MIT" }, "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", "license": "MIT", "engines": { "node": ">=18" @@ -6468,9 +6382,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.328", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.328.tgz", - "integrity": "sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==", + "version": "1.5.334", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", + "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==", "dev": true, "license": "ISC" }, @@ -6496,9 +6410,9 @@ } }, "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", "dev": true, "license": "MIT", "dependencies": { @@ -6583,16 +6497,16 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", - "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", + "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", + "call-bind": "^1.0.9", "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.24.1", + "es-abstract": "^1.24.2", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", @@ -6604,8 +6518,7 @@ "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", - "math-intrinsics": "^1.1.0", - "safe-array-concat": "^1.1.3" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6678,9 +6591,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", - "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -6691,32 +6604,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.4", - "@esbuild/android-arm": "0.27.4", - "@esbuild/android-arm64": "0.27.4", - "@esbuild/android-x64": "0.27.4", - "@esbuild/darwin-arm64": "0.27.4", - "@esbuild/darwin-x64": "0.27.4", - "@esbuild/freebsd-arm64": "0.27.4", - "@esbuild/freebsd-x64": "0.27.4", - "@esbuild/linux-arm": "0.27.4", - "@esbuild/linux-arm64": "0.27.4", - "@esbuild/linux-ia32": "0.27.4", - "@esbuild/linux-loong64": "0.27.4", - "@esbuild/linux-mips64el": "0.27.4", - "@esbuild/linux-ppc64": "0.27.4", - "@esbuild/linux-riscv64": "0.27.4", - "@esbuild/linux-s390x": "0.27.4", - "@esbuild/linux-x64": "0.27.4", - "@esbuild/netbsd-arm64": "0.27.4", - "@esbuild/netbsd-x64": "0.27.4", - "@esbuild/openbsd-arm64": "0.27.4", - "@esbuild/openbsd-x64": "0.27.4", - "@esbuild/openharmony-arm64": "0.27.4", - "@esbuild/sunos-x64": "0.27.4", - "@esbuild/win32-arm64": "0.27.4", - "@esbuild/win32-ia32": "0.27.4", - "@esbuild/win32-x64": "0.27.4" + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" } }, "node_modules/escalade": { @@ -6869,9 +6782,9 @@ "license": "MIT" }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -6957,9 +6870,9 @@ "peer": true }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "peer": true, @@ -7070,6 +6983,19 @@ "node": ">=0.10.0" } }, + "node_modules/eta": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-4.6.0.tgz", + "integrity": "sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/bgub/eta?sponsor=1" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -7185,9 +7111,9 @@ "peer": true }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, "funding": [ { @@ -7202,9 +7128,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-builder": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", "funding": [ { "type": "github", @@ -7213,13 +7139,14 @@ ], "license": "MIT", "dependencies": { - "path-expression-matcher": "^1.1.3" + "path-expression-matcher": "^1.5.0", + "xml-naming": "^0.1.0" } }, "node_modules/fast-xml-parser": { - "version": "5.5.8", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz", - "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", + "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", "funding": [ { "type": "github", @@ -7228,9 +7155,10 @@ ], "license": "MIT", "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.0" + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.1.5", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" @@ -7278,9 +7206,9 @@ "license": "MIT" }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -8585,9 +8513,9 @@ } }, "node_modules/jose": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", - "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" @@ -8756,13 +8684,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -8847,9 +8768,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -8945,12 +8866,12 @@ } }, "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -9111,9 +9032,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -9128,9 +9049,9 @@ } }, "node_modules/oauth4webapi": { - "version": "3.8.5", - "resolved": "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-3.8.5.tgz", - "integrity": "sha512-A8jmyUckVhRJj5lspguklcl90Ydqk61H3dcU0oLhH3Yv13KpAliKTt5hknpGGPZSSfOwGyraNEFmofDYH+1kSg==", + "version": "3.8.6", + "resolved": "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-3.8.6.tgz", + "integrity": "sha512-iwemM91xz8nryHti2yTmg5fhyEMVOkOXwHNqbvcATjyajb5oQxCQzrNOA6uElRHuMhQQTKUyFKV9y/CNyg25BQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" @@ -9420,9 +9341,9 @@ } }, "node_modules/path-expression-matcher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", "funding": [ { "type": "github", @@ -9468,18 +9389,18 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.3.tgz", + "integrity": "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/path-to-regexp": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.0.tgz", - "integrity": "sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "license": "MIT", "funding": { "type": "opencollective", @@ -9546,9 +9467,9 @@ } }, "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "funding": [ { "type": "opencollective", @@ -9632,9 +9553,9 @@ } }, "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -9893,9 +9814,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10007,9 +9928,9 @@ } }, "node_modules/rollup": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", - "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", "dev": true, "license": "MIT", "dependencies": { @@ -10023,48 +9944,34 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.0", - "@rollup/rollup-android-arm64": "4.60.0", - "@rollup/rollup-darwin-arm64": "4.60.0", - "@rollup/rollup-darwin-x64": "4.60.0", - "@rollup/rollup-freebsd-arm64": "4.60.0", - "@rollup/rollup-freebsd-x64": "4.60.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", - "@rollup/rollup-linux-arm-musleabihf": "4.60.0", - "@rollup/rollup-linux-arm64-gnu": "4.60.0", - "@rollup/rollup-linux-arm64-musl": "4.60.0", - "@rollup/rollup-linux-loong64-gnu": "4.60.0", - "@rollup/rollup-linux-loong64-musl": "4.60.0", - "@rollup/rollup-linux-ppc64-gnu": "4.60.0", - "@rollup/rollup-linux-ppc64-musl": "4.60.0", - "@rollup/rollup-linux-riscv64-gnu": "4.60.0", - "@rollup/rollup-linux-riscv64-musl": "4.60.0", - "@rollup/rollup-linux-s390x-gnu": "4.60.0", - "@rollup/rollup-linux-x64-gnu": "4.60.0", - "@rollup/rollup-linux-x64-musl": "4.60.0", - "@rollup/rollup-openbsd-x64": "4.60.0", - "@rollup/rollup-openharmony-arm64": "4.60.0", - "@rollup/rollup-win32-arm64-msvc": "4.60.0", - "@rollup/rollup-win32-ia32-msvc": "4.60.0", - "@rollup/rollup-win32-x64-gnu": "4.60.0", - "@rollup/rollup-win32-x64-msvc": "4.60.0", + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", "fsevents": "~2.3.2" } }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", - "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -10106,15 +10013,15 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, @@ -10389,13 +10296,13 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -10554,14 +10461,6 @@ "webidl-conversions": "^4.0.2" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true, - "license": "MIT" - }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -10746,9 +10645,9 @@ } }, "node_modules/strnum": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", - "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", + "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", "funding": [ { "type": "github", @@ -10823,9 +10722,9 @@ } }, "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "version": "5.47.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", + "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10856,9 +10755,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", - "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz", + "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==", "dev": true, "license": "MIT", "engines": { @@ -10866,14 +10765,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -11195,13 +11094,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "dev": true, - "license": "MIT" - }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", @@ -11744,30 +11636,30 @@ } }, "node_modules/workbox-background-sync": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.4.0.tgz", - "integrity": "sha512-8CB9OxKAgKZKyNMwfGZ1XESx89GryWTfI+V5yEj8sHjFH8MFelUwYXEyldEK6M6oKMmn807GoJFUEA1sC4XS9w==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.4.1.tgz", + "integrity": "sha512-HhT7KE8tOWDm02wRNshXUnUPofMlhenF2DBdUnDPOubhizzPeItkYTmAB6td1Z2cjYPa98vzEiPLEuzn5hN66g==", "dev": true, "license": "MIT", "dependencies": { "idb": "^7.0.1", - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-broadcast-update": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.4.0.tgz", - "integrity": "sha512-+eZQwoktlvo62cI0b+QBr40v5XjighxPq3Fzo9AWMiAosmpG5gxRHgTbGGhaJv/q/MFVxwFNGh/UwHZ/8K88lA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.4.1.tgz", + "integrity": "sha512-uAlgslKLvbQY+suirIdnBCSYrcgBhjp81Nj4l1lj/Jmj0MJO2CJERnCJjT0GFVwmReV0N+zs78K6gqd5gr9/+A==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-build": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.4.0.tgz", - "integrity": "sha512-Ntk1pWb0caOFIvwz/hfgrov/OJ45wPEhI5PbTywQcYjyZiVhT3UrwwUPl6TRYbTm4moaFYithYnl1lvZ8UjxcA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.4.1.tgz", + "integrity": "sha512-SDhxIvEAde9Gy/5w4Yo1Jh/M49Z0qE3q0oteyE8zGq0DScxFqVBcCtIXFuLtmtxRQZCMbf0prco4VyEu3KBQuw==", "dev": true, "license": "MIT", "dependencies": { @@ -11775,39 +11667,39 @@ "@babel/core": "^7.24.4", "@babel/preset-env": "^7.11.0", "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^2.4.1", - "@rollup/plugin-terser": "^0.4.3", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "@rollup/plugin-babel": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-replace": "^6.0.3", + "@rollup/plugin-terser": "^1.0.0", + "@trickfilm400/rollup-plugin-off-main-thread": "^3.0.0-pre1", "ajv": "^8.6.0", "common-tags": "^1.8.0", + "eta": "^4.5.1", "fast-json-stable-stringify": "^2.1.0", "fs-extra": "^9.0.1", "glob": "^11.0.1", - "lodash": "^4.17.20", "pretty-bytes": "^5.3.0", - "rollup": "^2.79.2", + "rollup": "^4.53.3", "source-map": "^0.8.0-beta.0", "stringify-object": "^3.3.0", "strip-comments": "^2.0.1", "tempy": "^0.6.0", "upath": "^1.2.0", - "workbox-background-sync": "7.4.0", - "workbox-broadcast-update": "7.4.0", - "workbox-cacheable-response": "7.4.0", - "workbox-core": "7.4.0", - "workbox-expiration": "7.4.0", - "workbox-google-analytics": "7.4.0", - "workbox-navigation-preload": "7.4.0", - "workbox-precaching": "7.4.0", - "workbox-range-requests": "7.4.0", - "workbox-recipes": "7.4.0", - "workbox-routing": "7.4.0", - "workbox-strategies": "7.4.0", - "workbox-streams": "7.4.0", - "workbox-sw": "7.4.0", - "workbox-window": "7.4.0" + "workbox-background-sync": "7.4.1", + "workbox-broadcast-update": "7.4.1", + "workbox-cacheable-response": "7.4.1", + "workbox-core": "7.4.1", + "workbox-expiration": "7.4.1", + "workbox-google-analytics": "7.4.1", + "workbox-navigation-preload": "7.4.1", + "workbox-precaching": "7.4.1", + "workbox-range-requests": "7.4.1", + "workbox-recipes": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1", + "workbox-streams": "7.4.1", + "workbox-sw": "7.4.1", + "workbox-window": "7.4.1" }, "engines": { "node": ">=20.0.0" @@ -11830,73 +11722,10 @@ "ajv": ">=8" } }, - "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } - } - }, - "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/workbox-build/node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/workbox-build/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true, - "license": "MIT" - }, "node_modules/workbox-build/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -11910,13 +11739,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/workbox-build/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true, - "license": "MIT" - }, "node_modules/workbox-build/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -11940,16 +11762,6 @@ "dev": true, "license": "MIT" }, - "node_modules/workbox-build/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, "node_modules/workbox-build/node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -11963,157 +11775,141 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/workbox-build/node_modules/rollup": { - "version": "2.80.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz", - "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/workbox-cacheable-response": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.4.0.tgz", - "integrity": "sha512-0Fb8795zg/x23ISFkAc7lbWes6vbw34DGFIMw31cwuHPgDEC/5EYm6m/ZkylLX0EnEbbOyOCLjKgFS/Z5g0HeQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.4.1.tgz", + "integrity": "sha512-8xaFoJdDc2OjrlbbL3gEeBO1WKcMwRqwLRupgqahYXu75yXajPLuwrbXMrIGZuWYXrQwk0xDjOxZ/ujCy/oJYw==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-core": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.4.0.tgz", - "integrity": "sha512-6BMfd8tYEnN4baG4emG9U0hdXM4gGuDU3ectXuVHnj71vwxTFI7WOpQJC4siTOlVtGqCUtj0ZQNsrvi6kZZTAQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.4.1.tgz", + "integrity": "sha512-DT+vu46eh/2vRsSHTY4Xmc32Z1rr9PRlQUXr1Dx30ZuXRWwOsvZgGgcwxcasubQLQmbTNYZjv44LkBAQ4tT5tQ==", "dev": true, "license": "MIT" }, "node_modules/workbox-expiration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.4.0.tgz", - "integrity": "sha512-V50p4BxYhtA80eOvulu8xVfPBgZbkxJ1Jr8UUn0rvqjGhLDqKNtfrDfjJKnLz2U8fO2xGQJTx/SKXNTzHOjnHw==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.4.1.tgz", + "integrity": "sha512-lRKUF7b+OGbeXkQk1s6MHXOa3d7Xxf7Of31W6c6hCfipfIyrtdWZ89stq21AHZMaoG7VNFoHply4Ox+rU31TWg==", "dev": true, "license": "MIT", "dependencies": { "idb": "^7.0.1", - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-google-analytics": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.4.0.tgz", - "integrity": "sha512-MVPXQslRF6YHkzGoFw1A4GIB8GrKym/A5+jYDUSL+AeJw4ytQGrozYdiZqUW1TPQHW8isBCBtyFJergUXyNoWQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.4.1.tgz", + "integrity": "sha512-Mks1JwLEt++ZAkF6sS1OpSh9RtAMIsiDgRpK+codiHGIPXeaUOgi4cPc3GFadUl8V5QPeypEk8Oxgl3HlwVzHw==", "dev": true, "license": "MIT", "dependencies": { - "workbox-background-sync": "7.4.0", - "workbox-core": "7.4.0", - "workbox-routing": "7.4.0", - "workbox-strategies": "7.4.0" + "workbox-background-sync": "7.4.1", + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" } }, "node_modules/workbox-navigation-preload": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.4.0.tgz", - "integrity": "sha512-etzftSgdQfjMcfPgbfaZCfM2QuR1P+4o8uCA2s4rf3chtKTq/Om7g/qvEOcZkG6v7JZOSOxVYQiOu6PbAZgU6w==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.4.1.tgz", + "integrity": "sha512-C4KVsjPcYKJOhr631AxR9XoG2rLF3QiTk5aMv36MXOjtWvm8axwNFAtKUPGsWUwLXXAMgYM1En7fsvndaXeXRQ==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-precaching": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.4.0.tgz", - "integrity": "sha512-VQs37T6jDqf1rTxUJZXRl3yjZMf5JX/vDPhmx2CPgDDKXATzEoqyRqhYnRoxl6Kr0rqaQlp32i9rtG5zTzIlNg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.4.1.tgz", + "integrity": "sha512-cdr/9qByww7yzEp7zg/qI4ukUrrNjQLgN+ONQRpjy/VqGQXwkgHwr00KksGJK8v0VifwDXBb8a4cWNZH71jn3Q==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0", - "workbox-routing": "7.4.0", - "workbox-strategies": "7.4.0" + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" } }, "node_modules/workbox-range-requests": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.4.0.tgz", - "integrity": "sha512-3Vq854ZNuP6Y0KZOQWLaLC9FfM7ZaE+iuQl4VhADXybwzr4z/sMmnLgTeUZLq5PaDlcJBxYXQ3U91V7dwAIfvw==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.4.1.tgz", + "integrity": "sha512-7i2oxAUE82gHdAJBCAQ04JzNOdRPqzuOzGfoUyJpFSmeqBNYGPrAH8GPoPjUQTfp+NycwrD2H68VtuF8qxv0vQ==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-recipes": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.4.0.tgz", - "integrity": "sha512-kOkWvsAn4H8GvAkwfJTbwINdv4voFoiE9hbezgB1sb/0NLyTG4rE7l6LvS8lLk5QIRIto+DjXLuAuG3Vmt3cxQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.4.1.tgz", + "integrity": "sha512-gnbVfmV4/TtmQaM4x9AtuXhcdstJsep3XMVeztOrQVPT+R6+6DeBjGTCQ7fFCXm+4GEHUA5VEBTyi5+4gWGeog==", "dev": true, "license": "MIT", "dependencies": { - "workbox-cacheable-response": "7.4.0", - "workbox-core": "7.4.0", - "workbox-expiration": "7.4.0", - "workbox-precaching": "7.4.0", - "workbox-routing": "7.4.0", - "workbox-strategies": "7.4.0" + "workbox-cacheable-response": "7.4.1", + "workbox-core": "7.4.1", + "workbox-expiration": "7.4.1", + "workbox-precaching": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" } }, "node_modules/workbox-routing": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.4.0.tgz", - "integrity": "sha512-C/ooj5uBWYAhAqwmU8HYQJdOjjDKBp9MzTQ+otpMmd+q0eF59K+NuXUek34wbL0RFrIXe/KKT+tUWcZcBqxbHQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.4.1.tgz", + "integrity": "sha512-yubJGErZOusuidAenaL5ypfhQOa7urxP/f8E0ws7FPb4039RiWXUWBAyUkmUoOL/BcQGen3h0J8872d51IYxtA==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-strategies": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.4.0.tgz", - "integrity": "sha512-T4hVqIi5A4mHi92+5EppMX3cLaVywDp8nsyUgJhOZxcfSV/eQofcOA6/EMo5rnTNmNTpw0rUgjAI6LaVullPpg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.4.1.tgz", + "integrity": "sha512-GZxpaw9NbmOelj7667uZ2kpk5BFpOGbO4X0qjwh5ls8XQ8C+Lha5LQchTiUzsTFSS+NlUpftYAyOVXvQUrcqOQ==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/workbox-streams": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.4.0.tgz", - "integrity": "sha512-QHPBQrey7hQbnTs5GrEVoWz7RhHJXnPT+12qqWM378orDMo5VMJLCkCM1cnCk+8Eq92lccx/VgRZ7WAzZWbSLg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.4.1.tgz", + "integrity": "sha512-HWWtraKUbJknd9kgqGcpQ3G114HOPYvqs8HaJMDs2ebLNAimDkVDaWfAXE6Ybl+m8U6KsCE6pWyLYuigWmnAXw==", "dev": true, "license": "MIT", "dependencies": { - "workbox-core": "7.4.0", - "workbox-routing": "7.4.0" + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1" } }, "node_modules/workbox-sw": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.4.0.tgz", - "integrity": "sha512-ltU+Kr3qWR6BtbdlMnCjobZKzeV1hN+S6UvDywBrwM19TTyqA03X66dzw1tEIdJvQ4lYKkBFox6IAEhoSEZ8Xw==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.4.1.tgz", + "integrity": "sha512-fez5f2DUlDJWTFYkCWQpY10N8gtztd849NswCbVFk0QlcSM4HT5A8x4g4ii650yem4I8tHY0R7JZahwp3ltIPw==", "dev": true, "license": "MIT" }, "node_modules/workbox-window": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.4.0.tgz", - "integrity": "sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.4.1.tgz", + "integrity": "sha512-notZDH2u8VXaqyuD7xaqIfEFi6SRM4SUSd7ewe9PDsVqADuepxX2ZMY3uvuZGxzY5ZOsGC/vD3A/3smFtJt4/A==", "dev": true, "license": "MIT", "dependencies": { "@types/trusted-types": "^2.0.2", - "workbox-core": "7.4.0" + "workbox-core": "7.4.1" } }, "node_modules/wrappy": { @@ -12122,6 +11918,21 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/xml-naming": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/package.json b/package.json index f29d73f1..d9d037c9 100644 --- a/package.json +++ b/package.json @@ -1,43 +1,34 @@ { - "name": "comify", + "name": "concept", "private": true, - "version": "0.1.4", + "version": "0.0.1", "type": "module", - "scripts": { - "dev": "vite --config src/apps/social/vite.config.js", - "copy-assets": "cpx src/assets/**/* dist/assets", - "build": "npm run clean && npm run build-domain && npm run build-social", - "build-domain": "tsc -p src && tsc-alias -p src/tsconfig.json && jitar build && npm run copy-assets", - "build-social": "vite build --config src/apps/social/vite.config.js", - "clean": "rimraf build && rimraf dist", + "scripts": + { + "build": "npm run build --workspaces", + "lint": "npm run lint --workspaces", + "review": "npm run review --workspaces", + "clean": "npm run clean --workspaces", "test": "vitest run", "test-coverage": "vitest run --coverage", - "lint": "eslint", - "compile": "npm run compile-domain && npm run compile-social", - "compile-domain": "tsc -p src --noEmit", - "compile-social": "tsc -p src/apps/social --noEmit", - "preview": "vite preview", - "version": "npm version $VERSION --no-git-tag-version", + + "dist": "npm run clean-dist && npm run bundle && npm run copy", + "bundle": "jitar build", + "clean-build": "rimraf artifacts/build", + "clean-dist": "rimraf artifacts/dist", + "copy": "npm run copy-apps && npm run copy-assets", + "copy-apps": "cpx 'artifacts/build/*/app/**/*' 'artifacts/dist'", + "copy-assets": "cpx 'artifacts/build/*/assets/**/*' 'artifacts/dist'", + "docker-up": "docker compose --env-file development.env up -d", "docker-down": "docker compose --env-file development.env down", - "review": "npm run compile && npm run lint && npm run test", - "rebuild": "npm run clean && npm run build && npm run standalone", - - "standalone": "jitar start --env-file=development.env --service=services/standalone.json --http-body-limit=512000", - "repository": "jitar start --env-file=development.env --service=services/repository.json", - "proxy": "jitar start --env-file=development.env --service=services/proxy.json --http-body-limit=512000", - "gateway": "jitar start --env-file=development.env --service=services/gateway.json --http-body-limit=640000", - "bff": "jitar start --env-file=development.env --service=services/bff.json --http-body-limit=640000", - "notification": "jitar start --env-file=development.env --service=services/notification.json --http-body-limit=640000", - "reads": "jitar start --env-file=development.env --service=services/reads.json --http-body-limit=640000", - "reads2": "jitar start --env-file=development.env --service=services/reads2.json --http-body-limit=640000", - "writes": "jitar start --env-file=development.env --service=services/writes.json --http-body-limit=640000", - "production": "jitar start --log-level=warn --service=services/standalone.json --http-body-limit=640000" + + "social": "jitar start --env-file=development.env --service=deployment/services/social.json --http-body-limit=512000" }, - "files": [ - "CHANGELOG.md", - "README.md", - "dist" + "workspaces": [ + "development/insights", + "development/social", + "development/moderation" ], "dependencies": { "dayjs": "1.11.20", @@ -70,8 +61,8 @@ }, "devDependencies": { "@eslint/js": "9.39.4", + "@types/node": "24.10.4", "@jitar/plugin-vite": "0.10.7", - "@types/node": "25.3.0", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "5.1.4", diff --git a/segments/bff.json b/segments/bff.json deleted file mode 100644 index 000d9812..00000000 --- a/segments/bff.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "./domain/authentication/getLoginUrl": { "default": { "access": "public" } }, - "./domain/authentication/login": { "default": { "access": "public" } }, - "./domain/authentication/logout": { "default": { "access": "public" } }, - - "./domain/creator/aggregate": { "default": { "access": "private" }}, - "./domain/creator/getByIdAggregated": { "default": { "access": "private" } }, - "./domain/creator/getByNicknameAggregated": { "default": { "access": "public" } }, - "./domain/creator/getMeAggregated": { "default": { "access": "public" } }, - "./domain/creator/updateFullName": { "default": { "access": "public" } }, - "./domain/creator/updateNickname": { "default": { "access": "public" } }, - - "./domain/creator.metrics/create": { "subscriptions": { "access": "private" } }, - "./domain/creator.metrics/updateFollowers": { "subscriptions": { "access": "private" } }, - "./domain/creator.metrics/updateFollowing": { "subscriptions": { "access": "private" } }, - "./domain/creator.metrics/updatePosts": { "subscriptions": { "access": "private" } }, - - "./domain/notification/aggregate": { "default": { "access": "private" } }, - "./domain/notification/notify": { "subscriptions": { "access": "private" } }, - "./domain/notification/getRecentAggregated": { "default": { "access": "public" } }, - - "./domain/post/aggregate": { "default": { "access": "private" } }, - "./domain/post/create": { "default": { "access": "private" }, "subscribe": { "access": "private" } }, - "./domain/post/createWithComic": { "default": { "access": "public" } }, - "./domain/post/createWithComment": { "default": { "access": "public" } }, - "./domain/post/getByCreatorAggregated": { "default": { "access": "public" } }, - "./domain/post/getByFollowingAggregated": { "default": { "access": "public" } }, - "./domain/post/exploreAggregated": { "default": { "access": "public" } }, - "./domain/post/getByIdAggregated": { "default": { "access": "public" } }, - "./domain/post/getByParentAggregated": { "default": { "access": "public" } }, - "./domain/post/getRecommendedAggregated": { "default": { "access": "public"}}, - "./domain/post/remove": { "default": { "access": "public" }, "subscribe": { "access": "private" } }, - - "./domain/post.metrics/create": { "subscriptions": { "access": "private" } }, - "./domain/post.metrics/updateRatings": { "subscriptions": { "access": "private" } }, - "./domain/post.metrics/updateReactions": { "subscriptions": { "access": "private" } }, - - "./domain/rating/toggle": { "default": { "access": "public" }, "subscribe": { "access": "private" } }, - - "./domain/relation/aggregate": { "default": { "access": "private" }}, - "./domain/relation/exploreAggregated": { "default": { "access": "public" } }, - "./domain/relation/establish": { "default": { "access": "public" }, "subscribe": { "access": "private" } }, - "./domain/relation/getAggregated": { "default": { "access": "public" } }, - "./domain/relation/getFollowersAggregated": { "default": { "access": "public" } }, - "./domain/relation/getFollowingAggregated": { "default": { "access": "public" } }, - - "./domain/tenant/getByOriginConverted": { "default": { "access": "public" } } -} \ No newline at end of file diff --git a/segments/notification.json b/segments/notification.json deleted file mode 100644 index a6c6a98c..00000000 --- a/segments/notification.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "./domain/notification/create": { "default": { "access": "protected" } }, - "./domain/notification/getByPostId": { "default": { "access": "protected" } }, - "./domain/notification/getRecent": { "default": { "access": "protected" } }, - "./domain/notification/remove": { "default": { "access": "protected" } } -} \ No newline at end of file diff --git a/segments/reads.json b/segments/reads.json deleted file mode 100644 index a5e99a36..00000000 --- a/segments/reads.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "./domain/comic/getById": { "default": { "access": "protected" } }, - - "./domain/comment/getById": { "default": { "access": "protected" } }, - - "./domain/creator/generateNickname/retrieveByNickname": { "default": { "access": "protected" } }, - "./domain/creator/generateNickname/retrieveByStartNickname": { "default": { "access": "protected" } }, - "./domain/creator/getByEmail": { "default": { "access": "protected" } }, - "./domain/creator/getById": { "default": { "access": "protected" } }, - "./domain/creator/getByNickname": { "default": { "access": "protected" } }, - "./domain/creator/getMe": { "default": { "access": "protected" } }, - "./domain/creator/getOthers": { "default": { "access": "private" }}, - "./domain/creator/updateNickname/retrieveByNickname": { "default": { "access": "protected" } }, - - "./domain/creator.metrics/getByCreator": { "default": { "access": "protected" } }, - - "./domain/image/getById": { "default": { "access": "protected" } }, - - "./domain/post/explore": { "default": { "access": "protected" } }, - "./domain/post/getByCreator": { "default": { "access": "protected" } }, - "./domain/post/getByFollowing": { "default": { "access": "protected" } }, - "./domain/post/getById": { "default": { "access": "protected" } }, - "./domain/post/getByParent": { "default": { "access": "protected" } }, - "./domain/post/getRecommended": { "default": { "access": "protected" } }, - - "./domain/post.metrics/getByPost": { "default": { "access": "protected" } }, - - "./domain/rating/exists": { "default": { "access": "protected" } }, - "./domain/rating/toggle/getData": { "default": { "access": "protected" } }, - - "./domain/relation/exists": { "default": { "access": "protected" } }, - "./domain/relation/explore": { "default": { "access": "protected" } }, - "./domain/relation/get": { "default": { "access": "protected" } }, - "./domain/relation/getFollowers": { "default": { "access": "protected" } }, - "./domain/relation/getFollowing": { "default": { "access": "protected" } }, - - "./domain/tenant/getByOrigin": { "default": { "access": "protected" }, "TenantNotFound": { } } -} \ No newline at end of file diff --git a/segments/writes.json b/segments/writes.json deleted file mode 100644 index 11e4fa36..00000000 --- a/segments/writes.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "./domain/comic/create/insertData": { "default": { "access": "protected" } }, - "./domain/comic/erase": { "default": { "access": "protected" } }, - - "./domain/comment/create": { "default": { "access": "protected" } }, - "./domain/comment/erase": { "default": { "access": "protected" } }, - - "./domain/creator/create": { "default": { "access": "protected" } }, - "./domain/creator/erase": { "default": { "access": "protected" } }, - "./domain/creator/update": { "default": { "access": "protected" } }, - - "./domain/creator.metrics/create/insertData": { "default": { "access": "protected" } }, - "./domain/creator.metrics/update": { "default": { "access": "protected" } }, - - "./domain/image/erase": { "default": { "access": "protected" } }, - "./domain/image/save": { "default": { "access": "protected" } }, - - "./domain/post/create/insertData": { "default": { "access": "protected" } }, - "./domain/post/erase": { "default": { "access": "protected" } }, - "./domain/post/remove/deleteData": { "default": { "access": "protected" }}, - "./domain/post/remove/undeleteData": { "default": { "access": "protected" }}, - "./domain/post/update": { "default": { "access": "protected" } }, - - "./domain/post.metrics/create/insertData": { "default": { "access": "protected" } }, - "./domain/post.metrics/update": { "default": { "access": "protected" } }, - - "./domain/rating/create": { "default": { "access": "protected" } }, - "./domain/rating/erase": { "default": { "access": "protected" } }, - - "./domain/relation/create": { "default": { "access": "protected" } }, - "./domain/relation/erase": { "default": { "access": "protected" } } -} \ No newline at end of file diff --git a/services/standalone.json b/services/standalone.json deleted file mode 100644 index 68590ded..00000000 --- a/services/standalone.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "url": "http://127.0.0.1:3000", - "setUp": [ - "./integrations/authentication/setUp", - "./integrations/database/setUp", - "./integrations/fileStore/setUp", - "./integrations/eventBroker/setUp" - ], - "tearDown": [ - "./integrations/authentication/tearDown", - "./integrations/database/tearDown", - "./integrations/fileStore/tearDown", - "./integrations/eventBroker/tearDown" - ], - "healthChecks": [ - "./integrations/database/healthCheck", - "./integrations/fileStore/healthCheck", - "./integrations/eventBroker/healthCheck" - ], - "middleware": [ - "./integrations/authentication/originMiddleware", - "./integrations/authentication/authenticationMiddleware", - "./integrations/tenancy/tenantMiddleware" - ], - "standalone": - { - "segments": ["bff", "notification", "reads", "writes"], - - "serveIndexOnNotFound": true, - "assets": ["index.html", "assets/**/*", "social/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] - } -} \ No newline at end of file diff --git a/src/apps/social/public/manifest.webmanifest b/src/apps/social/public/manifest.webmanifest deleted file mode 100644 index 9dbaa7e8..00000000 --- a/src/apps/social/public/manifest.webmanifest +++ /dev/null @@ -1,41 +0,0 @@ - -{ - "name": "Comify", - "short_name": "Comify", - "theme_color": "#ffffff", - - "icons": [ - - { - "src": "/assets/appicon32.png", - "type": "image/png", - "sizes": "32x32" - }, - - { - "src": "/assets/appicon192.png", - "type": "image/png", - "sizes": "192x192" - }, - - { - "src": "/assets/appicon512.png", - "type": "image/png", - "sizes": "512x512" - } - - ], - - "start_url": "/", - - "id": "/", - - "display": "standalone", - "description": "Take or upload a picture. Add speech bubbles. Share with friends.", - "background_color": "#ffffff", - "dir": "ltr", - "lang": "en-US", - "orientation": "portrait-primary" - - - } diff --git a/src/apps/social/vite.config.ts b/src/apps/social/vite.config.ts deleted file mode 100644 index 83f54511..00000000 --- a/src/apps/social/vite.config.ts +++ /dev/null @@ -1,58 +0,0 @@ -import jitar, { JitarConfig } from '@jitar/plugin-vite'; -import react from '@vitejs/plugin-react'; -import { defineConfig } from 'vite'; -import tsconfigPaths from 'vite-tsconfig-paths'; - -const JITAR_URL = 'http://localhost:3000'; -const JITAR_SEGMENTS: string[] = []; -const JITAR_MIDDLEWARES: string[] = [ - './integrations/authentication/requesterMiddleware' -]; - -const jitarConfig: JitarConfig = { - projectRoot: '../../../', - sourceRoot: '../../', - jitarUrl: JITAR_URL, - segments: JITAR_SEGMENTS, - middleware: JITAR_MIDDLEWARES -}; - -// const pwaConfig: Partial = { -// strategies: 'generateSW', -// manifest: false, -// workbox: { -// navigateFallbackDenylist: [/^\/rpc/], -// additionalManifestEntries: [ -// { url: '/manifest.webmanifest', revision: null } -// ], -// globPatterns: ['index.html', 'registerSW.js', 'assets/*', 'social/**/*.{js,css,html,png,svg}'] -// } -// }; - -// const addManifestLink = { -// name: 'add-manifest-link', -// transformIndexHtml(html) -// { -// return html.replace( -// '', -// '' -// ); -// } -// }; - -export default defineConfig({ - root: './src/apps/social', - publicDir: 'public', - build: { - outDir: '../../../dist', - assetsDir: 'social', - emptyOutDir: false - }, - plugins: [ - react(), - // VitePWA(pwaConfig), - // addManifestLink, - tsconfigPaths(), - jitar(jitarConfig) - ] -}); \ No newline at end of file diff --git a/src/tsconfig.json b/src/tsconfig.json deleted file mode 100644 index 63462fd9..00000000 --- a/src/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["./domain", "./integrations"] -} \ No newline at end of file diff --git a/testing/insights/tsconfig.json b/testing/insights/tsconfig.json new file mode 100644 index 00000000..faa2835d --- /dev/null +++ b/testing/insights/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "paths": { + "^/*": ["../../development/social/*"], + } + } +} \ No newline at end of file diff --git a/testing/moderation/tsconfig.json b/testing/moderation/tsconfig.json new file mode 100644 index 00000000..faa2835d --- /dev/null +++ b/testing/moderation/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "paths": { + "^/*": ["../../development/social/*"], + } + } +} \ No newline at end of file diff --git a/test/domain/authentication/fixtures/databases.fixture.ts b/testing/social/domain/authentication/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/databases.fixture.ts rename to testing/social/domain/authentication/fixtures/databases.fixture.ts diff --git a/test/domain/authentication/fixtures/fileStores.fixture.ts b/testing/social/domain/authentication/fixtures/fileStores.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/fileStores.fixture.ts rename to testing/social/domain/authentication/fixtures/fileStores.fixture.ts diff --git a/test/domain/authentication/fixtures/httpClients.fixture.ts b/testing/social/domain/authentication/fixtures/httpClients.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/httpClients.fixture.ts rename to testing/social/domain/authentication/fixtures/httpClients.fixture.ts diff --git a/test/domain/authentication/fixtures/identities.fixture.ts b/testing/social/domain/authentication/fixtures/identities.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/identities.fixture.ts rename to testing/social/domain/authentication/fixtures/identities.fixture.ts diff --git a/test/domain/authentication/fixtures/images.fixture.ts b/testing/social/domain/authentication/fixtures/images.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/images.fixture.ts rename to testing/social/domain/authentication/fixtures/images.fixture.ts diff --git a/test/domain/authentication/fixtures/index.ts b/testing/social/domain/authentication/fixtures/index.ts similarity index 100% rename from test/domain/authentication/fixtures/index.ts rename to testing/social/domain/authentication/fixtures/index.ts diff --git a/test/domain/authentication/fixtures/records.fixture.ts b/testing/social/domain/authentication/fixtures/records.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/records.fixture.ts rename to testing/social/domain/authentication/fixtures/records.fixture.ts diff --git a/test/domain/authentication/fixtures/tenants.fixture.ts b/testing/social/domain/authentication/fixtures/tenants.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/tenants.fixture.ts rename to testing/social/domain/authentication/fixtures/tenants.fixture.ts diff --git a/test/domain/authentication/fixtures/values.fixture.ts b/testing/social/domain/authentication/fixtures/values.fixture.ts similarity index 100% rename from test/domain/authentication/fixtures/values.fixture.ts rename to testing/social/domain/authentication/fixtures/values.fixture.ts diff --git a/test/domain/authentication/login.spec.ts b/testing/social/domain/authentication/login.spec.ts similarity index 100% rename from test/domain/authentication/login.spec.ts rename to testing/social/domain/authentication/login.spec.ts diff --git a/test/domain/comic/create.spec.ts b/testing/social/domain/comic/create.spec.ts similarity index 100% rename from test/domain/comic/create.spec.ts rename to testing/social/domain/comic/create.spec.ts diff --git a/test/domain/comic/fixtures/databases.fixture.ts b/testing/social/domain/comic/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/comic/fixtures/databases.fixture.ts rename to testing/social/domain/comic/fixtures/databases.fixture.ts diff --git a/test/domain/comic/fixtures/fileStores.fixture.ts b/testing/social/domain/comic/fixtures/fileStores.fixture.ts similarity index 100% rename from test/domain/comic/fixtures/fileStores.fixture.ts rename to testing/social/domain/comic/fixtures/fileStores.fixture.ts diff --git a/test/domain/comic/fixtures/index.ts b/testing/social/domain/comic/fixtures/index.ts similarity index 100% rename from test/domain/comic/fixtures/index.ts rename to testing/social/domain/comic/fixtures/index.ts diff --git a/test/domain/comic/fixtures/values.fixture.ts b/testing/social/domain/comic/fixtures/values.fixture.ts similarity index 100% rename from test/domain/comic/fixtures/values.fixture.ts rename to testing/social/domain/comic/fixtures/values.fixture.ts diff --git a/test/domain/comment/create.spec.ts b/testing/social/domain/comment/create.spec.ts similarity index 100% rename from test/domain/comment/create.spec.ts rename to testing/social/domain/comment/create.spec.ts diff --git a/test/domain/comment/fixtures/databases.fixture.ts b/testing/social/domain/comment/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/comment/fixtures/databases.fixture.ts rename to testing/social/domain/comment/fixtures/databases.fixture.ts diff --git a/test/domain/comment/fixtures/index.ts b/testing/social/domain/comment/fixtures/index.ts similarity index 100% rename from test/domain/comment/fixtures/index.ts rename to testing/social/domain/comment/fixtures/index.ts diff --git a/test/domain/comment/fixtures/values.fixture.ts b/testing/social/domain/comment/fixtures/values.fixture.ts similarity index 100% rename from test/domain/comment/fixtures/values.fixture.ts rename to testing/social/domain/comment/fixtures/values.fixture.ts diff --git a/test/domain/common/fixtures/index.ts b/testing/social/domain/common/fixtures/index.ts similarity index 100% rename from test/domain/common/fixtures/index.ts rename to testing/social/domain/common/fixtures/index.ts diff --git a/test/domain/common/fixtures/values.fixtures.ts b/testing/social/domain/common/fixtures/values.fixtures.ts similarity index 100% rename from test/domain/common/fixtures/values.fixtures.ts rename to testing/social/domain/common/fixtures/values.fixtures.ts diff --git a/test/domain/common/validateRange.spec.ts b/testing/social/domain/common/validateRange.spec.ts similarity index 100% rename from test/domain/common/validateRange.spec.ts rename to testing/social/domain/common/validateRange.spec.ts diff --git a/test/domain/creator/fixtures/databases.fixture.ts b/testing/social/domain/creator/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/creator/fixtures/databases.fixture.ts rename to testing/social/domain/creator/fixtures/databases.fixture.ts diff --git a/test/domain/creator/fixtures/index.ts b/testing/social/domain/creator/fixtures/index.ts similarity index 100% rename from test/domain/creator/fixtures/index.ts rename to testing/social/domain/creator/fixtures/index.ts diff --git a/test/domain/creator/fixtures/records.fixture.ts b/testing/social/domain/creator/fixtures/records.fixture.ts similarity index 100% rename from test/domain/creator/fixtures/records.fixture.ts rename to testing/social/domain/creator/fixtures/records.fixture.ts diff --git a/test/domain/creator/fixtures/requesters.fixture.ts b/testing/social/domain/creator/fixtures/requesters.fixture.ts similarity index 100% rename from test/domain/creator/fixtures/requesters.fixture.ts rename to testing/social/domain/creator/fixtures/requesters.fixture.ts diff --git a/test/domain/creator/fixtures/tenants.fixture.ts b/testing/social/domain/creator/fixtures/tenants.fixture.ts similarity index 100% rename from test/domain/creator/fixtures/tenants.fixture.ts rename to testing/social/domain/creator/fixtures/tenants.fixture.ts diff --git a/test/domain/creator/fixtures/values.fixture.ts b/testing/social/domain/creator/fixtures/values.fixture.ts similarity index 100% rename from test/domain/creator/fixtures/values.fixture.ts rename to testing/social/domain/creator/fixtures/values.fixture.ts diff --git a/test/domain/creator/updateFullName.spec.ts b/testing/social/domain/creator/updateFullName.spec.ts similarity index 100% rename from test/domain/creator/updateFullName.spec.ts rename to testing/social/domain/creator/updateFullName.spec.ts diff --git a/test/domain/creator/updateNickname.spec.ts b/testing/social/domain/creator/updateNickname.spec.ts similarity index 100% rename from test/domain/creator/updateNickname.spec.ts rename to testing/social/domain/creator/updateNickname.spec.ts diff --git a/test/domain/image/create.spec.ts b/testing/social/domain/image/create.spec.ts similarity index 100% rename from test/domain/image/create.spec.ts rename to testing/social/domain/image/create.spec.ts diff --git a/test/domain/image/download.spec.ts b/testing/social/domain/image/download.spec.ts similarity index 100% rename from test/domain/image/download.spec.ts rename to testing/social/domain/image/download.spec.ts diff --git a/test/domain/image/fixtures/dataUrls.fixture.ts b/testing/social/domain/image/fixtures/dataUrls.fixture.ts similarity index 100% rename from test/domain/image/fixtures/dataUrls.fixture.ts rename to testing/social/domain/image/fixtures/dataUrls.fixture.ts diff --git a/test/domain/image/fixtures/databases.fixture.ts b/testing/social/domain/image/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/image/fixtures/databases.fixture.ts rename to testing/social/domain/image/fixtures/databases.fixture.ts diff --git a/test/domain/image/fixtures/fileStores.fixture.ts b/testing/social/domain/image/fixtures/fileStores.fixture.ts similarity index 100% rename from test/domain/image/fixtures/fileStores.fixture.ts rename to testing/social/domain/image/fixtures/fileStores.fixture.ts diff --git a/test/domain/image/fixtures/httpClients.fixture.ts b/testing/social/domain/image/fixtures/httpClients.fixture.ts similarity index 100% rename from test/domain/image/fixtures/httpClients.fixture.ts rename to testing/social/domain/image/fixtures/httpClients.fixture.ts diff --git a/test/domain/image/fixtures/index.ts b/testing/social/domain/image/fixtures/index.ts similarity index 100% rename from test/domain/image/fixtures/index.ts rename to testing/social/domain/image/fixtures/index.ts diff --git a/test/domain/image/fixtures/responses.fixture.ts b/testing/social/domain/image/fixtures/responses.fixture.ts similarity index 100% rename from test/domain/image/fixtures/responses.fixture.ts rename to testing/social/domain/image/fixtures/responses.fixture.ts diff --git a/test/domain/image/fixtures/urls.fixture.ts b/testing/social/domain/image/fixtures/urls.fixture.ts similarity index 100% rename from test/domain/image/fixtures/urls.fixture.ts rename to testing/social/domain/image/fixtures/urls.fixture.ts diff --git a/test/domain/notification/create.spec.ts b/testing/social/domain/notification/create.spec.ts similarity index 100% rename from test/domain/notification/create.spec.ts rename to testing/social/domain/notification/create.spec.ts diff --git a/test/domain/notification/fixtures/dataUrls.fixture.ts b/testing/social/domain/notification/fixtures/dataUrls.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/dataUrls.fixture.ts rename to testing/social/domain/notification/fixtures/dataUrls.fixture.ts diff --git a/test/domain/notification/fixtures/databases.fixture.ts b/testing/social/domain/notification/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/databases.fixture.ts rename to testing/social/domain/notification/fixtures/databases.fixture.ts diff --git a/test/domain/notification/fixtures/fileStores.fixture.ts b/testing/social/domain/notification/fixtures/fileStores.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/fileStores.fixture.ts rename to testing/social/domain/notification/fixtures/fileStores.fixture.ts diff --git a/test/domain/notification/fixtures/files.fixture.ts b/testing/social/domain/notification/fixtures/files.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/files.fixture.ts rename to testing/social/domain/notification/fixtures/files.fixture.ts diff --git a/test/domain/notification/fixtures/index.ts b/testing/social/domain/notification/fixtures/index.ts similarity index 100% rename from test/domain/notification/fixtures/index.ts rename to testing/social/domain/notification/fixtures/index.ts diff --git a/test/domain/notification/fixtures/records.fixture.ts b/testing/social/domain/notification/fixtures/records.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/records.fixture.ts rename to testing/social/domain/notification/fixtures/records.fixture.ts diff --git a/test/domain/notification/fixtures/requesters.fixture.ts b/testing/social/domain/notification/fixtures/requesters.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/requesters.fixture.ts rename to testing/social/domain/notification/fixtures/requesters.fixture.ts diff --git a/test/domain/notification/fixtures/tenants.fixture.ts b/testing/social/domain/notification/fixtures/tenants.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/tenants.fixture.ts rename to testing/social/domain/notification/fixtures/tenants.fixture.ts diff --git a/test/domain/notification/fixtures/values.fixture.ts b/testing/social/domain/notification/fixtures/values.fixture.ts similarity index 100% rename from test/domain/notification/fixtures/values.fixture.ts rename to testing/social/domain/notification/fixtures/values.fixture.ts diff --git a/test/domain/notification/getRecentAggregated.spec.ts b/testing/social/domain/notification/getRecentAggregated.spec.ts similarity index 100% rename from test/domain/notification/getRecentAggregated.spec.ts rename to testing/social/domain/notification/getRecentAggregated.spec.ts diff --git a/test/domain/notification/removePostNotifications.spec.ts b/testing/social/domain/notification/removePostNotifications.spec.ts similarity index 100% rename from test/domain/notification/removePostNotifications.spec.ts rename to testing/social/domain/notification/removePostNotifications.spec.ts diff --git a/test/domain/post/createWithComic.spec.ts b/testing/social/domain/post/createWithComic.spec.ts similarity index 100% rename from test/domain/post/createWithComic.spec.ts rename to testing/social/domain/post/createWithComic.spec.ts diff --git a/test/domain/post/fixtures/dataUrls.fixture.ts b/testing/social/domain/post/fixtures/dataUrls.fixture.ts similarity index 100% rename from test/domain/post/fixtures/dataUrls.fixture.ts rename to testing/social/domain/post/fixtures/dataUrls.fixture.ts diff --git a/test/domain/post/fixtures/databases.fixture.ts b/testing/social/domain/post/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/post/fixtures/databases.fixture.ts rename to testing/social/domain/post/fixtures/databases.fixture.ts diff --git a/test/domain/post/fixtures/fileStores.fixture.ts b/testing/social/domain/post/fixtures/fileStores.fixture.ts similarity index 100% rename from test/domain/post/fixtures/fileStores.fixture.ts rename to testing/social/domain/post/fixtures/fileStores.fixture.ts diff --git a/test/domain/post/fixtures/files.fixture.ts b/testing/social/domain/post/fixtures/files.fixture.ts similarity index 100% rename from test/domain/post/fixtures/files.fixture.ts rename to testing/social/domain/post/fixtures/files.fixture.ts diff --git a/test/domain/post/fixtures/index.ts b/testing/social/domain/post/fixtures/index.ts similarity index 100% rename from test/domain/post/fixtures/index.ts rename to testing/social/domain/post/fixtures/index.ts diff --git a/test/domain/post/fixtures/queries.fixture.ts b/testing/social/domain/post/fixtures/queries.fixture.ts similarity index 100% rename from test/domain/post/fixtures/queries.fixture.ts rename to testing/social/domain/post/fixtures/queries.fixture.ts diff --git a/test/domain/post/fixtures/records.fixture.ts b/testing/social/domain/post/fixtures/records.fixture.ts similarity index 100% rename from test/domain/post/fixtures/records.fixture.ts rename to testing/social/domain/post/fixtures/records.fixture.ts diff --git a/test/domain/post/fixtures/requesters.fixture.ts b/testing/social/domain/post/fixtures/requesters.fixture.ts similarity index 100% rename from test/domain/post/fixtures/requesters.fixture.ts rename to testing/social/domain/post/fixtures/requesters.fixture.ts diff --git a/test/domain/post/fixtures/tenants.fixture.ts b/testing/social/domain/post/fixtures/tenants.fixture.ts similarity index 100% rename from test/domain/post/fixtures/tenants.fixture.ts rename to testing/social/domain/post/fixtures/tenants.fixture.ts diff --git a/test/domain/post/fixtures/values.fixture.ts b/testing/social/domain/post/fixtures/values.fixture.ts similarity index 100% rename from test/domain/post/fixtures/values.fixture.ts rename to testing/social/domain/post/fixtures/values.fixture.ts diff --git a/test/domain/post/getByFollowingAggregated.spec.ts b/testing/social/domain/post/getByFollowingAggregated.spec.ts similarity index 100% rename from test/domain/post/getByFollowingAggregated.spec.ts rename to testing/social/domain/post/getByFollowingAggregated.spec.ts diff --git a/test/domain/post/getRecommendedAggregated.spec.ts b/testing/social/domain/post/getRecommendedAggregated.spec.ts similarity index 100% rename from test/domain/post/getRecommendedAggregated.spec.ts rename to testing/social/domain/post/getRecommendedAggregated.spec.ts diff --git a/test/domain/post/remove.spec.ts b/testing/social/domain/post/remove.spec.ts similarity index 100% rename from test/domain/post/remove.spec.ts rename to testing/social/domain/post/remove.spec.ts diff --git a/test/domain/rating/fixtures/databases.fixture.ts b/testing/social/domain/rating/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/rating/fixtures/databases.fixture.ts rename to testing/social/domain/rating/fixtures/databases.fixture.ts diff --git a/test/domain/rating/fixtures/index.ts b/testing/social/domain/rating/fixtures/index.ts similarity index 100% rename from test/domain/rating/fixtures/index.ts rename to testing/social/domain/rating/fixtures/index.ts diff --git a/test/domain/rating/fixtures/records.fixture.ts b/testing/social/domain/rating/fixtures/records.fixture.ts similarity index 100% rename from test/domain/rating/fixtures/records.fixture.ts rename to testing/social/domain/rating/fixtures/records.fixture.ts diff --git a/test/domain/rating/fixtures/requesters.fixture.ts b/testing/social/domain/rating/fixtures/requesters.fixture.ts similarity index 100% rename from test/domain/rating/fixtures/requesters.fixture.ts rename to testing/social/domain/rating/fixtures/requesters.fixture.ts diff --git a/test/domain/rating/fixtures/tenants.fixture.ts b/testing/social/domain/rating/fixtures/tenants.fixture.ts similarity index 100% rename from test/domain/rating/fixtures/tenants.fixture.ts rename to testing/social/domain/rating/fixtures/tenants.fixture.ts diff --git a/test/domain/rating/fixtures/values.fixture.ts b/testing/social/domain/rating/fixtures/values.fixture.ts similarity index 100% rename from test/domain/rating/fixtures/values.fixture.ts rename to testing/social/domain/rating/fixtures/values.fixture.ts diff --git a/test/domain/rating/toggle.spec.ts b/testing/social/domain/rating/toggle.spec.ts similarity index 100% rename from test/domain/rating/toggle.spec.ts rename to testing/social/domain/rating/toggle.spec.ts diff --git a/test/domain/relation/establish.spec.ts b/testing/social/domain/relation/establish.spec.ts similarity index 100% rename from test/domain/relation/establish.spec.ts rename to testing/social/domain/relation/establish.spec.ts diff --git a/test/domain/relation/exploreAggregated.spec.ts b/testing/social/domain/relation/exploreAggregated.spec.ts similarity index 100% rename from test/domain/relation/exploreAggregated.spec.ts rename to testing/social/domain/relation/exploreAggregated.spec.ts diff --git a/test/domain/relation/fixtures/databases.fixture.ts b/testing/social/domain/relation/fixtures/databases.fixture.ts similarity index 100% rename from test/domain/relation/fixtures/databases.fixture.ts rename to testing/social/domain/relation/fixtures/databases.fixture.ts diff --git a/test/domain/relation/fixtures/index.ts b/testing/social/domain/relation/fixtures/index.ts similarity index 100% rename from test/domain/relation/fixtures/index.ts rename to testing/social/domain/relation/fixtures/index.ts diff --git a/test/domain/relation/fixtures/queries.fixture.ts b/testing/social/domain/relation/fixtures/queries.fixture.ts similarity index 100% rename from test/domain/relation/fixtures/queries.fixture.ts rename to testing/social/domain/relation/fixtures/queries.fixture.ts diff --git a/test/domain/relation/fixtures/records.fixture.ts b/testing/social/domain/relation/fixtures/records.fixture.ts similarity index 100% rename from test/domain/relation/fixtures/records.fixture.ts rename to testing/social/domain/relation/fixtures/records.fixture.ts diff --git a/test/domain/relation/fixtures/requesters.fixture.ts b/testing/social/domain/relation/fixtures/requesters.fixture.ts similarity index 100% rename from test/domain/relation/fixtures/requesters.fixture.ts rename to testing/social/domain/relation/fixtures/requesters.fixture.ts diff --git a/test/domain/relation/fixtures/tenants.fixture.ts b/testing/social/domain/relation/fixtures/tenants.fixture.ts similarity index 100% rename from test/domain/relation/fixtures/tenants.fixture.ts rename to testing/social/domain/relation/fixtures/tenants.fixture.ts diff --git a/test/domain/relation/fixtures/values.fixture.ts b/testing/social/domain/relation/fixtures/values.fixture.ts similarity index 100% rename from test/domain/relation/fixtures/values.fixture.ts rename to testing/social/domain/relation/fixtures/values.fixture.ts diff --git a/test/domain/relation/getFollowersAggregated.spec.ts b/testing/social/domain/relation/getFollowersAggregated.spec.ts similarity index 100% rename from test/domain/relation/getFollowersAggregated.spec.ts rename to testing/social/domain/relation/getFollowersAggregated.spec.ts diff --git a/test/domain/relation/getFollowingAggregated.spec.ts b/testing/social/domain/relation/getFollowingAggregated.spec.ts similarity index 100% rename from test/domain/relation/getFollowingAggregated.spec.ts rename to testing/social/domain/relation/getFollowingAggregated.spec.ts diff --git a/test/domain/tenant/fixtures/databases.fixtures.ts b/testing/social/domain/tenant/fixtures/databases.fixtures.ts similarity index 100% rename from test/domain/tenant/fixtures/databases.fixtures.ts rename to testing/social/domain/tenant/fixtures/databases.fixtures.ts diff --git a/test/domain/tenant/fixtures/index.ts b/testing/social/domain/tenant/fixtures/index.ts similarity index 100% rename from test/domain/tenant/fixtures/index.ts rename to testing/social/domain/tenant/fixtures/index.ts diff --git a/test/domain/tenant/fixtures/records.fixtures.ts b/testing/social/domain/tenant/fixtures/records.fixtures.ts similarity index 100% rename from test/domain/tenant/fixtures/records.fixtures.ts rename to testing/social/domain/tenant/fixtures/records.fixtures.ts diff --git a/test/domain/tenant/fixtures/values.fixtures.ts b/testing/social/domain/tenant/fixtures/values.fixtures.ts similarity index 100% rename from test/domain/tenant/fixtures/values.fixtures.ts rename to testing/social/domain/tenant/fixtures/values.fixtures.ts diff --git a/test/domain/tenant/getByOrigin.spec.ts b/testing/social/domain/tenant/getByOrigin.spec.ts similarity index 100% rename from test/domain/tenant/getByOrigin.spec.ts rename to testing/social/domain/tenant/getByOrigin.spec.ts diff --git a/test/domain/tenant/getByOriginConverted.spec.ts b/testing/social/domain/tenant/getByOriginConverted.spec.ts similarity index 100% rename from test/domain/tenant/getByOriginConverted.spec.ts rename to testing/social/domain/tenant/getByOriginConverted.spec.ts diff --git a/testing/social/tsconfig.json b/testing/social/tsconfig.json new file mode 100644 index 00000000..faa2835d --- /dev/null +++ b/testing/social/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "paths": { + "^/*": ["../../development/social/*"], + } + } +} \ No newline at end of file diff --git a/testing/tsconfig.json b/testing/tsconfig.json new file mode 100644 index 00000000..8b4ff642 --- /dev/null +++ b/testing/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../tsconfig.json" +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index bf6c2662..2825f22b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,17 @@ { "compilerOptions": { + "types": ["node"], + "target": "esnext", + "module": "esnext", + "moduleResolution": "bundler", + "isolatedModules": true, + "noEmit": false, + "declaration": true, "useDefineForClassFields": true, "allowJs": false, "skipLibCheck": true, - "esModuleInterop": false, "allowSyntheticDefaultImports": true, "strict": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "target": "esnext", - "module": "esnext", - "moduleResolution": "bundler", - "outDir": "./build", - "paths": { - "^/*": ["./src/*"], - } - }, - "include": ["src", "test"] + "forceConsistentCasingInFileNames": true + } } \ No newline at end of file From c2d43b50e60f1b69630b05e7a02b66c9327b6e3b Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 13 May 2026 14:52:42 +0200 Subject: [PATCH 05/14] #480: added npmrc file --- .npmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..84503b80 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +min-release-age=4 \ No newline at end of file From 6b7d1dfad06e24d92b9e0c4461015114ecdfde7d Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 13 May 2026 14:53:06 +0200 Subject: [PATCH 06/14] #480: updated runtime dependencies --- package-lock.json | 388 +++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 201 insertions(+), 193 deletions(-) diff --git a/package-lock.json b/package-lock.json index 49e4eb8d..c71bb670 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,9 +37,9 @@ "@theshelf/validation-driver-zod": "0.4.3", "dayjs": "1.11.20", "jitar": "0.10.7", - "react": "19.2.4", - "react-dom": "19.2.4", - "react-router-dom": "7.13.2" + "react": "19.2.6", + "react-dom": "19.2.6", + "react-router-dom": "7.15.0" }, "devDependencies": { "@eslint/js": "9.39.4", @@ -1202,9 +1202,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", "dev": true, "license": "MIT", "dependencies": { @@ -3341,22 +3341,6 @@ "react": "^19.2.0" } }, - "node_modules/@maskingtech/designsystem/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.54.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", - "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", - "cpu": [ - "x64" - ], - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/@maskingtech/react-toolkit": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/@maskingtech/react-toolkit/-/react-toolkit-0.0.4.tgz", @@ -3591,9 +3575,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", - "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.3.tgz", + "integrity": "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==", "cpu": [ "arm" ], @@ -3605,9 +3589,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", - "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.3.tgz", + "integrity": "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==", "cpu": [ "arm64" ], @@ -3619,9 +3603,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", - "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.3.tgz", + "integrity": "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==", "cpu": [ "arm64" ], @@ -3633,9 +3617,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", - "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.3.tgz", + "integrity": "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==", "cpu": [ "x64" ], @@ -3647,9 +3631,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", - "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.3.tgz", + "integrity": "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==", "cpu": [ "arm64" ], @@ -3661,9 +3645,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", - "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.3.tgz", + "integrity": "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==", "cpu": [ "x64" ], @@ -3675,9 +3659,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", - "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.3.tgz", + "integrity": "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==", "cpu": [ "arm" ], @@ -3692,9 +3676,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", - "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.3.tgz", + "integrity": "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==", "cpu": [ "arm" ], @@ -3709,9 +3693,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", - "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.3.tgz", + "integrity": "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==", "cpu": [ "arm64" ], @@ -3726,9 +3710,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", - "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.3.tgz", + "integrity": "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==", "cpu": [ "arm64" ], @@ -3743,9 +3727,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", - "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.3.tgz", + "integrity": "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==", "cpu": [ "loong64" ], @@ -3760,9 +3744,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", - "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.3.tgz", + "integrity": "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==", "cpu": [ "loong64" ], @@ -3777,9 +3761,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", - "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.3.tgz", + "integrity": "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==", "cpu": [ "ppc64" ], @@ -3794,9 +3778,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", - "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.3.tgz", + "integrity": "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==", "cpu": [ "ppc64" ], @@ -3811,9 +3795,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", - "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.3.tgz", + "integrity": "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==", "cpu": [ "riscv64" ], @@ -3828,9 +3812,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", - "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.3.tgz", + "integrity": "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==", "cpu": [ "riscv64" ], @@ -3845,9 +3829,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", - "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.3.tgz", + "integrity": "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==", "cpu": [ "s390x" ], @@ -3862,13 +3846,12 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", - "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", + "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", "cpu": [ "x64" ], - "dev": true, "libc": [ "glibc" ], @@ -3879,9 +3862,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", - "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.3.tgz", + "integrity": "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==", "cpu": [ "x64" ], @@ -3896,9 +3879,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", - "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.3.tgz", + "integrity": "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==", "cpu": [ "x64" ], @@ -3910,9 +3893,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", - "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.3.tgz", + "integrity": "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==", "cpu": [ "arm64" ], @@ -3924,9 +3907,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", - "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.3.tgz", + "integrity": "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==", "cpu": [ "arm64" ], @@ -3938,9 +3921,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", - "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.3.tgz", + "integrity": "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==", "cpu": [ "ia32" ], @@ -3952,9 +3935,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", - "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.3.tgz", + "integrity": "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==", "cpu": [ "x64" ], @@ -3966,9 +3949,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", - "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.3.tgz", + "integrity": "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==", "cpu": [ "x64" ], @@ -4739,9 +4722,9 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, @@ -4763,13 +4746,6 @@ "undici-types": "~7.16.0" } }, - "node_modules/@types/node/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/react": { "version": "19.2.14", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", @@ -5637,9 +5613,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.17", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.17.tgz", - "integrity": "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA==", + "version": "2.10.28", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.28.tgz", + "integrity": "sha512-Ic44hnOtFIgravCunj1ifSoQPSUrkNiJuH9Mf6jr2jjoA74icqV8wU0KuadXeOR8zuIJMOoTv0GuQjZ9ZYNMeA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5693,9 +5669,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -5836,9 +5812,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001787", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", - "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", "dev": true, "funding": [ { @@ -6382,9 +6358,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.334", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", - "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==", + "version": "1.5.353", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.353.tgz", + "integrity": "sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==", "dev": true, "license": "ISC" }, @@ -7362,9 +7338,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.4", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", - "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", "dev": true, "license": "MIT", "dependencies": { @@ -7514,9 +7490,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.13.7", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.7.tgz", - "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", "dev": true, "license": "MIT", "dependencies": { @@ -7746,9 +7722,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -8010,13 +7986,13 @@ } }, "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "hasown": "^2.0.3" }, "engines": { "node": ">= 0.4" @@ -8593,9 +8569,9 @@ } }, "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -8979,9 +8955,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "funding": [ { "type": "github", @@ -9032,9 +9008,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", "dev": true, "license": "MIT" }, @@ -9389,9 +9365,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.3.tgz", - "integrity": "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==", + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -9623,24 +9599,24 @@ } }, "node_modules/react": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", - "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", - "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.4" + "react": "^19.2.6" } }, "node_modules/react-is": { @@ -9661,9 +9637,9 @@ } }, "node_modules/react-router": { - "version": "7.13.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.2.tgz", - "integrity": "sha512-tX1Aee+ArlKQP+NIUd7SE6Li+CiGKwQtbS+FfRxPX6Pe4vHOo6nr9d++u5cwg+Z8K/x8tP+7qLmujDtfrAoUJA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.15.0.tgz", + "integrity": "sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -9683,12 +9659,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.13.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.2.tgz", - "integrity": "sha512-aR7SUORwTqAW0JDeiWF07e9SBE9qGpByR9I8kJT5h/FrBKxPMS6TiC7rmVO+gC0q52Bx7JnjWe8Z1sR9faN4YA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.15.0.tgz", + "integrity": "sha512-VcrVg64Fo8nwBvDscajG8gRTLIuTC6N50nb22l2HOOV4PTOHgoGp8mUjy9wLiHYoYTSYI36tUnXZgasSRFZorQ==", "license": "MIT", "dependencies": { - "react-router": "7.13.2" + "react-router": "7.15.0" }, "engines": { "node": ">=20.0.0" @@ -9837,12 +9813,13 @@ } }, "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", "dependencies": { + "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" @@ -9928,9 +9905,9 @@ } }, "node_modules/rollup": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", - "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.3.tgz", + "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", "dev": true, "license": "MIT", "dependencies": { @@ -9944,34 +9921,58 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.1", - "@rollup/rollup-android-arm64": "4.60.1", - "@rollup/rollup-darwin-arm64": "4.60.1", - "@rollup/rollup-darwin-x64": "4.60.1", - "@rollup/rollup-freebsd-arm64": "4.60.1", - "@rollup/rollup-freebsd-x64": "4.60.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", - "@rollup/rollup-linux-arm-musleabihf": "4.60.1", - "@rollup/rollup-linux-arm64-gnu": "4.60.1", - "@rollup/rollup-linux-arm64-musl": "4.60.1", - "@rollup/rollup-linux-loong64-gnu": "4.60.1", - "@rollup/rollup-linux-loong64-musl": "4.60.1", - "@rollup/rollup-linux-ppc64-gnu": "4.60.1", - "@rollup/rollup-linux-ppc64-musl": "4.60.1", - "@rollup/rollup-linux-riscv64-gnu": "4.60.1", - "@rollup/rollup-linux-riscv64-musl": "4.60.1", - "@rollup/rollup-linux-s390x-gnu": "4.60.1", - "@rollup/rollup-linux-x64-gnu": "4.60.1", - "@rollup/rollup-linux-x64-musl": "4.60.1", - "@rollup/rollup-openbsd-x64": "4.60.1", - "@rollup/rollup-openharmony-arm64": "4.60.1", - "@rollup/rollup-win32-arm64-msvc": "4.60.1", - "@rollup/rollup-win32-ia32-msvc": "4.60.1", - "@rollup/rollup-win32-x64-gnu": "4.60.1", - "@rollup/rollup-win32-x64-msvc": "4.60.1", + "@rollup/rollup-android-arm-eabi": "4.60.3", + "@rollup/rollup-android-arm64": "4.60.3", + "@rollup/rollup-darwin-arm64": "4.60.3", + "@rollup/rollup-darwin-x64": "4.60.3", + "@rollup/rollup-freebsd-arm64": "4.60.3", + "@rollup/rollup-freebsd-x64": "4.60.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", + "@rollup/rollup-linux-arm-musleabihf": "4.60.3", + "@rollup/rollup-linux-arm64-gnu": "4.60.3", + "@rollup/rollup-linux-arm64-musl": "4.60.3", + "@rollup/rollup-linux-loong64-gnu": "4.60.3", + "@rollup/rollup-linux-loong64-musl": "4.60.3", + "@rollup/rollup-linux-ppc64-gnu": "4.60.3", + "@rollup/rollup-linux-ppc64-musl": "4.60.3", + "@rollup/rollup-linux-riscv64-gnu": "4.60.3", + "@rollup/rollup-linux-riscv64-musl": "4.60.3", + "@rollup/rollup-linux-s390x-gnu": "4.60.3", + "@rollup/rollup-linux-x64-gnu": "4.60.3", + "@rollup/rollup-linux-x64-musl": "4.60.3", + "@rollup/rollup-openbsd-x64": "4.60.3", + "@rollup/rollup-openharmony-arm64": "4.60.3", + "@rollup/rollup-win32-arm64-msvc": "4.60.3", + "@rollup/rollup-win32-ia32-msvc": "4.60.3", + "@rollup/rollup-win32-x64-gnu": "4.60.3", + "@rollup/rollup-win32-x64-msvc": "4.60.3", "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.3.tgz", + "integrity": "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -11094,6 +11095,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", diff --git a/package.json b/package.json index d9d037c9..4caf438f 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,9 @@ ], "dependencies": { "dayjs": "1.11.20", - "react": "19.2.4", - "react-dom": "19.2.4", - "react-router-dom": "7.13.2", + "react": "19.2.6", + "react-dom": "19.2.6", + "react-router-dom": "7.15.0", "jitar": "0.10.7", "@maskingtech/designsystem": "0.0.8", "@maskingtech/react-toolkit": "0.0.4", From 7e65a20e4f799a315d28828092e675d3dde2bca5 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 13 May 2026 15:42:21 +0200 Subject: [PATCH 07/14] #480: set up new service configurations --- deployment/services/bff.json | 25 ------------ .../worker.json} | 0 deployment/services/production/bff.json | 25 ++++++++++++ .../services/{ => production}/gateway.json | 0 .../{ => production}/notification.json | 8 ++-- .../services/{ => production}/proxy.json | 0 deployment/services/production/reads.json | 21 ++++++++++ deployment/services/production/reads2.json | 21 ++++++++++ .../services/production/social-app.json | 9 +++++ deployment/services/production/writes.json | 21 ++++++++++ deployment/services/reads.json | 21 ---------- deployment/services/reads2.json | 21 ---------- deployment/services/repository.json | 8 ---- deployment/services/social.json | 38 ------------------- deployment/services/writes.json | 21 ---------- development/insights/package.json | 1 + development/moderation/package.json | 1 + development/social/package.json | 1 + package.json | 11 +++++- 19 files changed, 114 insertions(+), 139 deletions(-) delete mode 100644 deployment/services/bff.json rename deployment/services/{standalone.json => development/worker.json} (100%) create mode 100644 deployment/services/production/bff.json rename deployment/services/{ => production}/gateway.json (100%) rename deployment/services/{ => production}/notification.json (53%) rename deployment/services/{ => production}/proxy.json (100%) create mode 100644 deployment/services/production/reads.json create mode 100644 deployment/services/production/reads2.json create mode 100644 deployment/services/production/social-app.json create mode 100644 deployment/services/production/writes.json delete mode 100644 deployment/services/reads.json delete mode 100644 deployment/services/reads2.json delete mode 100644 deployment/services/repository.json delete mode 100644 deployment/services/social.json delete mode 100644 deployment/services/writes.json diff --git a/deployment/services/bff.json b/deployment/services/bff.json deleted file mode 100644 index b038be16..00000000 --- a/deployment/services/bff.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "url": "http://127.0.0.1:4000", - "setUp": [ - "./integrations/authentication/setUp", - "./integrations/eventBroker/setUp" - ], - "tearDown": [ - "./integrations/authentication/tearDown", - "./integrations/eventBroker/tearDown" - ], - "healthChecks": [ - "./integrations/eventBroker/healthCheck" - ], - "middleware": [ - "./integrations/authentication/originMiddleware", - "./integrations/authentication/authenticationMiddleware", - "./integrations/tenancy/tenantMiddleware" - ], - "worker": - { - "gateway": "http://127.0.0.1:2000", - "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["bff"] - } -} \ No newline at end of file diff --git a/deployment/services/standalone.json b/deployment/services/development/worker.json similarity index 100% rename from deployment/services/standalone.json rename to deployment/services/development/worker.json diff --git a/deployment/services/production/bff.json b/deployment/services/production/bff.json new file mode 100644 index 00000000..eca554f2 --- /dev/null +++ b/deployment/services/production/bff.json @@ -0,0 +1,25 @@ +{ + "url": "http://127.0.0.1:4000", + "setUp": [ + "./social/integrations/authentication/setUp", + "./social/integrations/eventBroker/setUp" + ], + "tearDown": [ + "./social/integrations/authentication/tearDown", + "./social/integrations/eventBroker/tearDown" + ], + "healthChecks": [ + "./social/integrations/eventBroker/healthCheck" + ], + "middleware": [ + "./social/integrations/authentication/originMiddleware", + "./social/integrations/authentication/authenticationMiddleware", + "./social/integrations/tenancy/tenantMiddleware" + ], + "worker": + { + "gateway": "http://127.0.0.1:2000", + "trustKey": "${JITAR_TRUST_KEY}", + "segments": ["social.bff"] + } +} \ No newline at end of file diff --git a/deployment/services/gateway.json b/deployment/services/production/gateway.json similarity index 100% rename from deployment/services/gateway.json rename to deployment/services/production/gateway.json diff --git a/deployment/services/notification.json b/deployment/services/production/notification.json similarity index 53% rename from deployment/services/notification.json rename to deployment/services/production/notification.json index 98f2fcf5..28ecf30c 100644 --- a/deployment/services/notification.json +++ b/deployment/services/production/notification.json @@ -1,18 +1,18 @@ { "url": "http://127.0.0.1:4001", "setUp": [ - "./integrations/database/setUp" + "./social/integrations/database/setUp" ], "tearDown": [ - "./integrations/database/tearDown" + "./social/integrations/database/tearDown" ], "healthChecks": [ - "./integrations/database/healthCheck" + "./social/integrations/database/healthCheck" ], "worker": { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["notification"] + "segments": ["social.notification"] } } \ No newline at end of file diff --git a/deployment/services/proxy.json b/deployment/services/production/proxy.json similarity index 100% rename from deployment/services/proxy.json rename to deployment/services/production/proxy.json diff --git a/deployment/services/production/reads.json b/deployment/services/production/reads.json new file mode 100644 index 00000000..ebd3ce58 --- /dev/null +++ b/deployment/services/production/reads.json @@ -0,0 +1,21 @@ +{ + "url": "http://127.0.0.1:4002", + "setUp": [ + "./social/integrations/database/setUp", + "./social/integrations/fileStore/setUp" + ], + "tearDown": [ + "./social/integrations/database/tearDown", + "./social/integrations/fileStore/tearDown" + ], + "healthChecks": [ + "./social/integrations/database/healthCheck", + "./social/integrations/fileStore/healthCheck" + ], + "worker": + { + "gateway": "http://127.0.0.1:2000", + "trustKey": "${JITAR_TRUST_KEY}", + "segments": ["social.reads"] + } +} \ No newline at end of file diff --git a/deployment/services/production/reads2.json b/deployment/services/production/reads2.json new file mode 100644 index 00000000..b0920889 --- /dev/null +++ b/deployment/services/production/reads2.json @@ -0,0 +1,21 @@ +{ + "url": "http://127.0.0.1:4003", + "setUp": [ + "./social/integrations/database/setUp", + "./social/integrations/fileStore/setUp" + ], + "tearDown": [ + "./social/integrations/database/tearDown", + "./social/integrations/fileStore/tearDown" + ], + "healthChecks": [ + "./social/integrations/database/healthCheck", + "./social/integrations/fileStore/healthCheck" + ], + "worker": + { + "gateway": "http://127.0.0.1:2000", + "trustKey": "${JITAR_TRUST_KEY}", + "segments": ["social.reads"] + } +} \ No newline at end of file diff --git a/deployment/services/production/social-app.json b/deployment/services/production/social-app.json new file mode 100644 index 00000000..fc9bd41b --- /dev/null +++ b/deployment/services/production/social-app.json @@ -0,0 +1,9 @@ +{ + "url": "http://127.0.0.1:1000", + "repository": + { + "serveIndexOnNotFound": true, + "assetRoot": "./social/app", + "assets": ["index.html", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] + } +} \ No newline at end of file diff --git a/deployment/services/production/writes.json b/deployment/services/production/writes.json new file mode 100644 index 00000000..7ab24d6e --- /dev/null +++ b/deployment/services/production/writes.json @@ -0,0 +1,21 @@ +{ + "url": "http://127.0.0.1:4004", + "setUp": [ + "./social/integrations/database/setUp", + "./social/integrations/fileStore/setUp" + ], + "tearDown": [ + "./social/integrations/database/tearDown", + "./social/integrations/fileStore/tearDown" + ], + "healthChecks": [ + "./social/integrations/database/healthCheck", + "./social/integrations/fileStore/healthCheck" + ], + "worker": + { + "gateway": "http://127.0.0.1:2000", + "trustKey": "${JITAR_TRUST_KEY}", + "segments": ["social.writes"] + } +} \ No newline at end of file diff --git a/deployment/services/reads.json b/deployment/services/reads.json deleted file mode 100644 index 539d917d..00000000 --- a/deployment/services/reads.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "url": "http://127.0.0.1:4002", - "setUp": [ - "./integrations/database/setUp", - "./integrations/fileStore/setUp" - ], - "tearDown": [ - "./integrations/database/tearDown", - "./integrations/fileStore/tearDown" - ], - "healthChecks": [ - "./integrations/database/healthCheck", - "./integrations/fileStore/healthCheck" - ], - "worker": - { - "gateway": "http://127.0.0.1:2000", - "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["reads"] - } -} \ No newline at end of file diff --git a/deployment/services/reads2.json b/deployment/services/reads2.json deleted file mode 100644 index a2dc0eea..00000000 --- a/deployment/services/reads2.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "url": "http://127.0.0.1:4003", - "setUp": [ - "./integrations/database/setUp", - "./integrations/fileStore/setUp" - ], - "tearDown": [ - "./integrations/database/tearDown", - "./integrations/fileStore/tearDown" - ], - "healthChecks": [ - "./integrations/database/healthCheck", - "./integrations/fileStore/healthCheck" - ], - "worker": - { - "gateway": "http://127.0.0.1:2000", - "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["reads"] - } -} \ No newline at end of file diff --git a/deployment/services/repository.json b/deployment/services/repository.json deleted file mode 100644 index 1cc2324d..00000000 --- a/deployment/services/repository.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "url": "http://127.0.0.1:1000", - "repository": - { - "serveIndexOnNotFound": true, - "assets": ["index.html", "assets/**/*", "social/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] - } -} \ No newline at end of file diff --git a/deployment/services/social.json b/deployment/services/social.json deleted file mode 100644 index fb21f611..00000000 --- a/deployment/services/social.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "url": "http://127.0.0.1:3000", - "setUp": [ - "./social/integrations/authentication/setUp", - "./social/integrations/database/setUp", - "./social/integrations/fileStore/setUp", - "./social/integrations/eventBroker/setUp" - ], - "tearDown": [ - "./social/integrations/authentication/tearDown", - "./social/integrations/database/tearDown", - "./social/integrations/fileStore/tearDown", - "./social/integrations/eventBroker/tearDown" - ], - "healthChecks": [ - "./social/integrations/database/healthCheck", - "./social/integrations/fileStore/healthCheck", - "./social/integrations/eventBroker/healthCheck" - ], - "middleware": [ - "./social/integrations/authentication/originMiddleware", - "./social/integrations/authentication/authenticationMiddleware", - "./social/integrations/tenancy/tenantMiddleware" - ], - "standalone": - { - "segments": [ - "social.bff", - "social.notification", - "social.reads", - "social.writes" - ], - - "serveIndexOnNotFound": true, - "assetRoot": "./social/app", - "assets": ["index.html", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] - } -} \ No newline at end of file diff --git a/deployment/services/writes.json b/deployment/services/writes.json deleted file mode 100644 index f60ee1c8..00000000 --- a/deployment/services/writes.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "url": "http://127.0.0.1:4004", - "setUp": [ - "./integrations/database/setUp", - "./integrations/fileStore/setUp" - ], - "tearDown": [ - "./integrations/database/tearDown", - "./integrations/fileStore/tearDown" - ], - "healthChecks": [ - "./integrations/database/healthCheck", - "./integrations/fileStore/healthCheck" - ], - "worker": - { - "gateway": "http://127.0.0.1:2000", - "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["writes"] - } -} \ No newline at end of file diff --git a/development/insights/package.json b/development/insights/package.json index ddffca4c..7b76e2ac 100644 --- a/development/insights/package.json +++ b/development/insights/package.json @@ -4,6 +4,7 @@ "version": "0.0.1", "type": "module", "scripts": { + "dev": "vite --config app/vite.config.js", "build": "npm run clean && npm run build-domain && npm run build-app", "build-app": "vite build --config app/vite.config.js", "build-domain": "tsc && tsc-alias", diff --git a/development/moderation/package.json b/development/moderation/package.json index 329f5eeb..9a36c768 100644 --- a/development/moderation/package.json +++ b/development/moderation/package.json @@ -4,6 +4,7 @@ "version": "0.0.1", "type": "module", "scripts": { + "dev": "vite --config app/vite.config.js", "build": "npm run clean && npm run build-domain && npm run build-app", "build-app": "vite build --config app/vite.config.js", "build-domain": "tsc && tsc-alias", diff --git a/development/social/package.json b/development/social/package.json index 232c29f6..f2c758b4 100644 --- a/development/social/package.json +++ b/development/social/package.json @@ -4,6 +4,7 @@ "version": "0.0.1", "type": "module", "scripts": { + "dev": "vite --config app/vite.config.js", "build": "npm run clean && npm run build-domain && npm run build-app", "build-app": "vite build --config app/vite.config.js", "build-domain": "tsc && tsc-alias", diff --git a/package.json b/package.json index 4caf438f..ee784be2 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,16 @@ "docker-up": "docker compose --env-file development.env up -d", "docker-down": "docker compose --env-file development.env down", - "social": "jitar start --env-file=development.env --service=deployment/services/social.json --http-body-limit=512000" + "dev": "jitar start --env-file=development.env --service=deployment/services/development/worker.json --http-body-limit=512000", + + "gateway": "jitar start --env-file=development.env --service=deployment/services/production/gateway.json --http-body-limit=512000", + "bff": "jitar start --env-file=development.env --service=deployment/services/production/bff.json --http-body-limit=512000", + "notification": "jitar start --env-file=development.env --service=deployment/services/production/notification.json --http-body-limit=512000", + "reads": "jitar start --env-file=development.env --service=deployment/services/production/reads.json --http-body-limit=512000", + "reads2": "jitar start --env-file=development.env --service=deployment/services/production/reads2.json --http-body-limit=512000", + "writes": "jitar start --env-file=development.env --service=deployment/services/production/writes.json --http-body-limit=512000", + "social-app": "jitar start --env-file=development.env --service=deployment/services/production/social-app.json --http-body-limit=512000", + "proxy": "jitar start --env-file=development.env --service=deployment/services/production/proxy.json --http-body-limit=512000" }, "workspaces": [ "development/insights", From ba107eff0b658beca68a5f5206c819dbb0fb0ca6 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 15 May 2026 23:58:54 +0200 Subject: [PATCH 08/14] #480: moved integrations to common --- deployment/segments/social.bff.json | 2 +- deployment/segments/social.reads.json | 2 +- deployment/services/development/worker.json | 28 +++++++++--------- .../domain/tenant/definitions.ts | 0 .../tenant/getByOrigin/TenantNotFound.ts | 0 .../domain/tenant/getByOrigin/getByOrigin.ts | 0 .../domain/tenant/getByOrigin/index.ts | 0 .../getByOriginConverted/InvalidOrigin.ts | 0 .../getByOriginConverted.ts | 0 .../tenant/getByOriginConverted/index.ts | 0 .../tenant/getByOriginConverted/types.ts | 0 .../getByOriginConverted/validateData.ts | 0 .../{social => common}/domain/tenant/index.ts | 0 .../domain/tenant/tenant.ts | 0 .../{social => common}/domain/tenant/types.ts | 0 development/common/domain/types.ts | 6 ++++ .../authenticationMiddleware.ts | 2 +- .../authentication/identityProvider.ts | 0 .../authentication/originMiddleware.ts | 0 .../authentication/requesterMiddleware.ts | 0 .../integrations/authentication/setUp.ts | 0 .../integrations/authentication/tearDown.ts | 0 .../integrations/database/database.ts | 0 .../integrations/database/healthCheck.ts | 0 .../integrations/database/index.ts | 0 .../integrations/database/setUp.ts | 0 .../integrations/database/tearDown.ts | 0 .../integrations/errors/BadRequest.ts | 0 .../integrations/errors/NotFound.ts | 0 .../integrations/errors/ServerError.ts | 0 .../integrations/errors/Unauthorized.ts | 0 .../integrations/errors/ValidationError.ts | 0 .../integrations/errors/index.ts | 0 .../integrations/eventBroker/eventBroker.ts | 0 .../integrations/eventBroker/healthCheck.ts | 0 .../integrations/eventBroker/index.ts | 0 .../integrations/eventBroker/setUp.ts | 0 .../integrations/eventBroker/tearDown.ts | 0 .../integrations/fileStore/fileStore.ts | 4 +-- .../integrations/fileStore/healthCheck.ts | 0 .../integrations/fileStore/index.ts | 0 .../integrations/fileStore/setUp.ts | 0 .../integrations/fileStore/tearDown.ts | 0 .../integrations/http/http.ts | 0 .../integrations/http/index.ts | 0 .../integrations/logging/index.ts | 0 .../integrations/logging/logger.ts | 0 .../notification/notificationHealthCheck.ts | 0 .../notification/notificationService.ts | 0 .../middleware/MultiTenantMiddleware.ts | 2 +- .../integrations/tenancy/tenantMiddleware.ts | 0 .../integrations/utilities/crypto.ts | 0 .../integrations/utilities/dates.ts | 0 .../integrations/utilities/webbrowser.ts | 0 .../integrations/validation/index.ts | 0 .../integrations/validation/validator.ts | 0 development/common/package.json | 14 +++++++++ development/common/tsconfig.json | 12 ++++++++ .../insights/integrations/database/index.ts | 0 development/insights/package.json | 2 +- development/insights/tsconfig.json | 8 ++++- .../moderation/integrations/database/index.ts | 0 development/moderation/package.json | 2 +- development/moderation/tsconfig.json | 8 ++++- .../account/hooks/useUpdateNickname.ts | 2 +- .../application/hooks/useIdentify.ts | 2 +- .../common/components/TimeElapsed.tsx | 2 +- .../common/components/hooks/useTenant.ts | 4 +-- .../notification/hooks/useNotifications.ts | 2 +- .../components/post/hooks/useAddComicPost.ts | 2 +- .../components/post/hooks/useCreatorPosts.ts | 2 +- .../components/post/hooks/useExplorePosts.ts | 2 +- .../app/components/post/hooks/useHighlight.ts | 2 +- .../app/components/post/hooks/usePost.ts | 2 +- .../post/hooks/usePostsFollowing.ts | 2 +- .../post/hooks/usePostsRecommended.ts | 2 +- .../app/components/post/hooks/useReactions.ts | 2 +- .../components/post/hooks/useRemovePost.ts | 2 +- .../components/profile/hooks/useProfile.ts | 2 +- .../rating/hooks/useTogglePostRating.ts | 2 +- .../reaction/hooks/useCreateComic.ts | 2 +- .../reaction/hooks/useCreateComment.ts | 2 +- .../relation/hooks/useCreatorFollowers.ts | 2 +- .../relation/hooks/useCreatorFollowing.ts | 2 +- .../components/relation/hooks/useEstablish.ts | 2 +- .../relation/hooks/useExploreCreators.ts | 2 +- .../components/relation/hooks/useRelation.ts | 2 +- .../{assets => app/public}/appicon192.png | Bin .../{assets => app/public}/appicon32.png | Bin .../{assets => app/public}/appicon512.png | Bin .../{assets => app/public}/localhost.css | 0 development/social/app/tsconfig.json | 1 + development/social/app/vite.config.ts | 2 +- .../domain/authentication/login/login.ts | 2 +- .../domain/comic/create/InvalidComic.ts | 2 +- .../social/domain/comic/create/createData.ts | 2 +- .../social/domain/comic/create/insertData.ts | 2 +- .../domain/comic/create/validateData.ts | 2 +- .../social/domain/comic/erase/eraseData.ts | 4 +-- .../domain/comic/getById/ComicNotFound.ts | 2 +- .../social/domain/comic/getById/getById.ts | 4 +-- .../domain/comment/create/InvalidComment.ts | 2 +- .../domain/comment/create/createData.ts | 2 +- .../domain/comment/create/insertData.ts | 2 +- .../domain/comment/create/validateData.ts | 2 +- .../social/domain/comment/erase/erase.ts | 4 +-- .../domain/comment/getById/CommentNotFound.ts | 2 +- .../social/domain/comment/getById/getById.ts | 4 +-- .../common/filterResolved/filterResolved.ts | 2 +- .../common/validateRange/InvalidRange.ts | 2 +- .../common/validateRange/validateRange.ts | 2 +- .../creator.metrics/create/createData.ts | 2 +- .../creator.metrics/create/insertData.ts | 2 +- .../getByCreator/CreatorMetricsNotFound.ts | 2 +- .../getByCreator/getByCreator.ts | 4 +-- .../domain/creator.metrics/update/update.ts | 4 +-- .../domain/creator/create/InvalidCreator.ts | 2 +- .../domain/creator/create/createData.ts | 2 +- .../domain/creator/create/insertData.ts | 2 +- .../domain/creator/create/validateData.ts | 2 +- .../social/domain/creator/erase/erase.ts | 4 +-- .../TooManySimilarNicknames.ts | 2 +- .../generateNickname/retrieveByNickname.ts | 2 +- .../retrieveByStartNickname.ts | 2 +- .../domain/creator/getByEmail/getByEmail.ts | 2 +- .../domain/creator/getById/CreatorNotFound.ts | 2 +- .../social/domain/creator/getById/getById.ts | 4 +-- .../creator/getByNickname/NicknameNotFound.ts | 2 +- .../creator/getByNickname/getByNickname.ts | 4 +-- .../getByNicknameAggregated.ts | 2 +- .../social/domain/creator/getMe/getMe.ts | 2 +- .../getMeAggregated/getMeAggregated.ts | 2 +- .../domain/creator/getOthers/getOthers.ts | 2 +- .../social/domain/creator/register/publish.ts | 2 +- .../domain/creator/register/register.ts | 2 +- .../domain/creator/register/subscribe.ts | 2 +- .../social/domain/creator/update/update.ts | 4 +-- .../creator/updateFullName/InvalidFullName.ts | 2 +- .../creator/updateFullName/validateData.ts | 2 +- .../updateNickname/NicknameAlreadyExists.ts | 2 +- .../updateNickname/retrieveByNickname.ts | 2 +- .../creator/updateNickname/updateNickname.ts | 4 +-- .../domain/image/create/InvalidDataURL.ts | 2 +- .../image/download/ImageNotDownloaded.ts | 2 +- .../domain/image/download/downloadImage.ts | 2 +- .../domain/image/download/getMetaData.ts | 2 +- .../social/domain/image/erase/erase.ts | 4 +-- .../domain/image/getById/ImageNotFound.ts | 2 +- .../domain/image/getById/retrieveData.ts | 4 +-- .../domain/image/getById/retrieveFile.ts | 2 +- .../social/domain/image/save/InvalidImage.ts | 2 +- .../social/domain/image/save/createData.ts | 2 +- .../social/domain/image/save/fileExists.ts | 2 +- .../domain/image/save/generateStorageKey.ts | 2 +- .../social/domain/image/save/insertData.ts | 2 +- .../social/domain/image/save/insertFile.ts | 2 +- .../social/domain/image/save/validateData.ts | 2 +- .../domain/image/validate/InvalidImage.ts | 2 +- .../social/domain/image/validate/validate.ts | 2 +- .../notification/aggregate/aggregate.ts | 2 +- .../domain/notification/create/create.ts | 2 +- .../domain/notification/create/createData.ts | 2 +- .../domain/notification/create/insertData.ts | 2 +- .../notification/getByPostId/getByPostId.ts | 2 +- .../notification/getRecent/getRecent.ts | 2 +- .../getRecentAggregated.ts | 2 +- .../domain/notification/remove/remove.ts | 4 +-- .../domain/post.metrics/create/createData.ts | 2 +- .../domain/post.metrics/create/insertData.ts | 2 +- .../getByPost/PostMetricsNotFound.ts | 2 +- .../post.metrics/getByPost/getByPost.ts | 4 +-- .../domain/post.metrics/update/update.ts | 4 +-- .../social/domain/post/aggregate/aggregate.ts | 2 +- .../social/domain/post/create/InvalidPost.ts | 2 +- .../social/domain/post/create/create.ts | 2 +- .../social/domain/post/create/createData.ts | 2 +- .../social/domain/post/create/insertData.ts | 2 +- .../social/domain/post/create/publish.ts | 2 +- .../social/domain/post/create/subscribe.ts | 2 +- .../social/domain/post/create/validateData.ts | 2 +- .../post/createWithComic/createWithComic.ts | 2 +- .../createWithComment/createWithComment.ts | 2 +- development/social/domain/post/erase/erase.ts | 4 +-- .../social/domain/post/explore/explore.ts | 2 +- .../domain/post/explore/retrieveData.ts | 2 +- .../exploreAggregated/exploreAggregated.ts | 2 +- .../domain/post/getByCreator/getByCreator.ts | 2 +- .../getByCreatorAggregated.ts | 2 +- .../post/getByFollowing/retrieveData.ts | 2 +- .../getByFollowingAggregated.ts | 2 +- .../domain/post/getById/PostNotFound.ts | 2 +- .../social/domain/post/getById/getById.ts | 4 +-- .../getByIdAggregated/getByIdAggregated.ts | 2 +- .../domain/post/getByParent/getByParent.ts | 2 +- .../getByParentAggregated.ts | 2 +- .../post/getRecommended/getRecommended.ts | 2 +- .../getRecommendedAggregated.ts | 2 +- .../social/domain/post/remove/deleteData.ts | 4 +-- .../social/domain/post/remove/publish.ts | 2 +- .../social/domain/post/remove/remove.ts | 4 +-- .../social/domain/post/remove/subscribe.ts | 2 +- .../social/domain/post/remove/undeleteData.ts | 4 +-- .../social/domain/post/update/update.ts | 4 +-- .../domain/rating/create/InvalidRating.ts | 2 +- .../social/domain/rating/create/createData.ts | 2 +- .../social/domain/rating/create/insertData.ts | 2 +- .../domain/rating/create/validateData.ts | 2 +- .../social/domain/rating/erase/erase.ts | 4 +-- .../social/domain/rating/exists/exists.ts | 2 +- .../social/domain/rating/toggle/getData.ts | 2 +- .../social/domain/rating/toggle/publish.ts | 2 +- .../social/domain/rating/toggle/subscribe.ts | 2 +- .../social/domain/rating/toggle/toggle.ts | 2 +- .../domain/relation/aggregate/aggregate.ts | 2 +- .../domain/relation/create/InvalidRelation.ts | 2 +- .../domain/relation/create/createData.ts | 2 +- .../domain/relation/create/insertData.ts | 2 +- .../domain/relation/create/validateData.ts | 2 +- .../social/domain/relation/erase/erase.ts | 4 +-- .../establish/RelationAlreadyExists.ts | 2 +- .../domain/relation/establish/establish.ts | 4 +-- .../domain/relation/establish/publish.ts | 2 +- .../domain/relation/establish/subscribe.ts | 2 +- .../social/domain/relation/exists/exists.ts | 2 +- .../social/domain/relation/explore/explore.ts | 2 +- .../exploreAggregated/exploreAggregated.ts | 2 +- development/social/domain/relation/get/get.ts | 2 +- .../relation/getAggregated/getAggregated.ts | 2 +- .../relation/getFollowers/retrieveData.ts | 2 +- .../getFollowersAggregated.ts | 2 +- .../relation/getFollowing/retrieveData.ts | 2 +- .../getFollowingAggregated.ts | 2 +- development/social/package.json | 2 +- development/social/tsconfig.json | 8 ++++- package.json | 3 +- 235 files changed, 268 insertions(+), 216 deletions(-) rename development/{social => common}/domain/tenant/definitions.ts (100%) rename development/{social => common}/domain/tenant/getByOrigin/TenantNotFound.ts (100%) rename development/{social => common}/domain/tenant/getByOrigin/getByOrigin.ts (100%) rename development/{social => common}/domain/tenant/getByOrigin/index.ts (100%) rename development/{social => common}/domain/tenant/getByOriginConverted/InvalidOrigin.ts (100%) rename development/{social => common}/domain/tenant/getByOriginConverted/getByOriginConverted.ts (100%) rename development/{social => common}/domain/tenant/getByOriginConverted/index.ts (100%) rename development/{social => common}/domain/tenant/getByOriginConverted/types.ts (100%) rename development/{social => common}/domain/tenant/getByOriginConverted/validateData.ts (100%) rename development/{social => common}/domain/tenant/index.ts (100%) rename development/{social => common}/domain/tenant/tenant.ts (100%) rename development/{social => common}/domain/tenant/types.ts (100%) create mode 100644 development/common/domain/types.ts rename development/{social => common}/integrations/authentication/authenticationMiddleware.ts (91%) rename development/{social => common}/integrations/authentication/identityProvider.ts (100%) rename development/{social => common}/integrations/authentication/originMiddleware.ts (100%) rename development/{social => common}/integrations/authentication/requesterMiddleware.ts (100%) rename development/{social => common}/integrations/authentication/setUp.ts (100%) rename development/{social => common}/integrations/authentication/tearDown.ts (100%) rename development/{social => common}/integrations/database/database.ts (100%) rename development/{social => common}/integrations/database/healthCheck.ts (100%) rename development/{social => common}/integrations/database/index.ts (100%) rename development/{social => common}/integrations/database/setUp.ts (100%) rename development/{social => common}/integrations/database/tearDown.ts (100%) rename development/{social => common}/integrations/errors/BadRequest.ts (100%) rename development/{social => common}/integrations/errors/NotFound.ts (100%) rename development/{social => common}/integrations/errors/ServerError.ts (100%) rename development/{social => common}/integrations/errors/Unauthorized.ts (100%) rename development/{social => common}/integrations/errors/ValidationError.ts (100%) rename development/{social => common}/integrations/errors/index.ts (100%) rename development/{social => common}/integrations/eventBroker/eventBroker.ts (100%) rename development/{social => common}/integrations/eventBroker/healthCheck.ts (100%) rename development/{social => common}/integrations/eventBroker/index.ts (100%) rename development/{social => common}/integrations/eventBroker/setUp.ts (100%) rename development/{social => common}/integrations/eventBroker/tearDown.ts (100%) rename development/{social => common}/integrations/fileStore/fileStore.ts (95%) rename development/{social => common}/integrations/fileStore/healthCheck.ts (100%) rename development/{social => common}/integrations/fileStore/index.ts (100%) rename development/{social => common}/integrations/fileStore/setUp.ts (100%) rename development/{social => common}/integrations/fileStore/tearDown.ts (100%) rename development/{social => common}/integrations/http/http.ts (100%) rename development/{social => common}/integrations/http/index.ts (100%) rename development/{social => common}/integrations/logging/index.ts (100%) rename development/{social => common}/integrations/logging/logger.ts (100%) rename development/{social => common}/integrations/notification/notificationHealthCheck.ts (100%) rename development/{social => common}/integrations/notification/notificationService.ts (100%) rename development/{social => common}/integrations/tenancy/middleware/MultiTenantMiddleware.ts (95%) rename development/{social => common}/integrations/tenancy/tenantMiddleware.ts (100%) rename development/{social => common}/integrations/utilities/crypto.ts (100%) rename development/{social => common}/integrations/utilities/dates.ts (100%) rename development/{social => common}/integrations/utilities/webbrowser.ts (100%) rename development/{social => common}/integrations/validation/index.ts (100%) rename development/{social => common}/integrations/validation/validator.ts (100%) create mode 100644 development/common/package.json create mode 100644 development/common/tsconfig.json delete mode 100644 development/insights/integrations/database/index.ts delete mode 100644 development/moderation/integrations/database/index.ts rename development/social/{assets => app/public}/appicon192.png (100%) rename development/social/{assets => app/public}/appicon32.png (100%) rename development/social/{assets => app/public}/appicon512.png (100%) rename development/social/{assets => app/public}/localhost.css (100%) diff --git a/deployment/segments/social.bff.json b/deployment/segments/social.bff.json index a609273a..b74176c3 100644 --- a/deployment/segments/social.bff.json +++ b/deployment/segments/social.bff.json @@ -44,5 +44,5 @@ "./social/domain/relation/getFollowersAggregated": { "default": { "access": "public" } }, "./social/domain/relation/getFollowingAggregated": { "default": { "access": "public" } }, - "./social/domain/tenant/getByOriginConverted": { "default": { "access": "public" } } + "./common/domain/tenant/getByOriginConverted": { "default": { "access": "public" } } } \ No newline at end of file diff --git a/deployment/segments/social.reads.json b/deployment/segments/social.reads.json index 34525ae3..b6c9ac06 100644 --- a/deployment/segments/social.reads.json +++ b/deployment/segments/social.reads.json @@ -34,5 +34,5 @@ " ./social/domain/relation/getFollowers": { "default": { "access": "protected" } }, " ./social/domain/relation/getFollowing": { "default": { "access": "protected" } }, - " ./social/domain/tenant/getByOrigin": { "default": { "access": "protected" }, "TenantNotFound": { } } + " ./common/domain/tenant/getByOrigin": { "default": { "access": "protected" }, "TenantNotFound": { } } } \ No newline at end of file diff --git a/deployment/services/development/worker.json b/deployment/services/development/worker.json index edf9af53..2365eca7 100644 --- a/deployment/services/development/worker.json +++ b/deployment/services/development/worker.json @@ -1,26 +1,26 @@ { "url": "http://127.0.0.1:3000", "setUp": [ - "./social/integrations/authentication/setUp", - "./social/integrations/database/setUp", - "./social/integrations/fileStore/setUp", - "./social/integrations/eventBroker/setUp" + "./common/integrations/authentication/setUp", + "./common/integrations/database/setUp", + "./common/integrations/fileStore/setUp", + "./common/integrations/eventBroker/setUp" ], "tearDown": [ - "./social/integrations/authentication/tearDown", - "./social/integrations/database/tearDown", - "./social/integrations/fileStore/tearDown", - "./social/integrations/eventBroker/tearDown" + "./common/integrations/authentication/tearDown", + "./common/integrations/database/tearDown", + "./common/integrations/fileStore/tearDown", + "./common/integrations/eventBroker/tearDown" ], "healthChecks": [ - "./social/integrations/database/healthCheck", - "./social/integrations/fileStore/healthCheck", - "./social/integrations/eventBroker/healthCheck" + "./common/integrations/database/healthCheck", + "./common/integrations/fileStore/healthCheck", + "./common/integrations/eventBroker/healthCheck" ], "middleware": [ - "./social/integrations/authentication/originMiddleware", - "./social/integrations/authentication/authenticationMiddleware", - "./social/integrations/tenancy/tenantMiddleware" + "./common/integrations/authentication/originMiddleware", + "./common/integrations/authentication/authenticationMiddleware", + "./common/integrations/tenancy/tenantMiddleware" ], "worker": { diff --git a/development/social/domain/tenant/definitions.ts b/development/common/domain/tenant/definitions.ts similarity index 100% rename from development/social/domain/tenant/definitions.ts rename to development/common/domain/tenant/definitions.ts diff --git a/development/social/domain/tenant/getByOrigin/TenantNotFound.ts b/development/common/domain/tenant/getByOrigin/TenantNotFound.ts similarity index 100% rename from development/social/domain/tenant/getByOrigin/TenantNotFound.ts rename to development/common/domain/tenant/getByOrigin/TenantNotFound.ts diff --git a/development/social/domain/tenant/getByOrigin/getByOrigin.ts b/development/common/domain/tenant/getByOrigin/getByOrigin.ts similarity index 100% rename from development/social/domain/tenant/getByOrigin/getByOrigin.ts rename to development/common/domain/tenant/getByOrigin/getByOrigin.ts diff --git a/development/social/domain/tenant/getByOrigin/index.ts b/development/common/domain/tenant/getByOrigin/index.ts similarity index 100% rename from development/social/domain/tenant/getByOrigin/index.ts rename to development/common/domain/tenant/getByOrigin/index.ts diff --git a/development/social/domain/tenant/getByOriginConverted/InvalidOrigin.ts b/development/common/domain/tenant/getByOriginConverted/InvalidOrigin.ts similarity index 100% rename from development/social/domain/tenant/getByOriginConverted/InvalidOrigin.ts rename to development/common/domain/tenant/getByOriginConverted/InvalidOrigin.ts diff --git a/development/social/domain/tenant/getByOriginConverted/getByOriginConverted.ts b/development/common/domain/tenant/getByOriginConverted/getByOriginConverted.ts similarity index 100% rename from development/social/domain/tenant/getByOriginConverted/getByOriginConverted.ts rename to development/common/domain/tenant/getByOriginConverted/getByOriginConverted.ts diff --git a/development/social/domain/tenant/getByOriginConverted/index.ts b/development/common/domain/tenant/getByOriginConverted/index.ts similarity index 100% rename from development/social/domain/tenant/getByOriginConverted/index.ts rename to development/common/domain/tenant/getByOriginConverted/index.ts diff --git a/development/social/domain/tenant/getByOriginConverted/types.ts b/development/common/domain/tenant/getByOriginConverted/types.ts similarity index 100% rename from development/social/domain/tenant/getByOriginConverted/types.ts rename to development/common/domain/tenant/getByOriginConverted/types.ts diff --git a/development/social/domain/tenant/getByOriginConverted/validateData.ts b/development/common/domain/tenant/getByOriginConverted/validateData.ts similarity index 100% rename from development/social/domain/tenant/getByOriginConverted/validateData.ts rename to development/common/domain/tenant/getByOriginConverted/validateData.ts diff --git a/development/social/domain/tenant/index.ts b/development/common/domain/tenant/index.ts similarity index 100% rename from development/social/domain/tenant/index.ts rename to development/common/domain/tenant/index.ts diff --git a/development/social/domain/tenant/tenant.ts b/development/common/domain/tenant/tenant.ts similarity index 100% rename from development/social/domain/tenant/tenant.ts rename to development/common/domain/tenant/tenant.ts diff --git a/development/social/domain/tenant/types.ts b/development/common/domain/tenant/types.ts similarity index 100% rename from development/social/domain/tenant/types.ts rename to development/common/domain/tenant/types.ts diff --git a/development/common/domain/types.ts b/development/common/domain/types.ts new file mode 100644 index 00000000..0ba2f92b --- /dev/null +++ b/development/common/domain/types.ts @@ -0,0 +1,6 @@ + +type BaseDataModel = { + readonly id: string; +}; + +export type { BaseDataModel }; diff --git a/development/social/integrations/authentication/authenticationMiddleware.ts b/development/common/integrations/authentication/authenticationMiddleware.ts similarity index 91% rename from development/social/integrations/authentication/authenticationMiddleware.ts rename to development/common/integrations/authentication/authenticationMiddleware.ts index 9a4761cd..492324e1 100644 --- a/development/social/integrations/authentication/authenticationMiddleware.ts +++ b/development/common/integrations/authentication/authenticationMiddleware.ts @@ -12,7 +12,7 @@ const authProcedures = { const redirectPath = process.env.AUTHENTICATION_CLIENT_PATH || ''; const whiteList: string[] = [ - 'social/domain/tenant/getByOriginConverted' + 'common/domain/tenant/getByOriginConverted' ]; export default new AuthenticationMiddleware(identityProvider, authProcedures, redirectPath, whiteList); diff --git a/development/social/integrations/authentication/identityProvider.ts b/development/common/integrations/authentication/identityProvider.ts similarity index 100% rename from development/social/integrations/authentication/identityProvider.ts rename to development/common/integrations/authentication/identityProvider.ts diff --git a/development/social/integrations/authentication/originMiddleware.ts b/development/common/integrations/authentication/originMiddleware.ts similarity index 100% rename from development/social/integrations/authentication/originMiddleware.ts rename to development/common/integrations/authentication/originMiddleware.ts diff --git a/development/social/integrations/authentication/requesterMiddleware.ts b/development/common/integrations/authentication/requesterMiddleware.ts similarity index 100% rename from development/social/integrations/authentication/requesterMiddleware.ts rename to development/common/integrations/authentication/requesterMiddleware.ts diff --git a/development/social/integrations/authentication/setUp.ts b/development/common/integrations/authentication/setUp.ts similarity index 100% rename from development/social/integrations/authentication/setUp.ts rename to development/common/integrations/authentication/setUp.ts diff --git a/development/social/integrations/authentication/tearDown.ts b/development/common/integrations/authentication/tearDown.ts similarity index 100% rename from development/social/integrations/authentication/tearDown.ts rename to development/common/integrations/authentication/tearDown.ts diff --git a/development/social/integrations/database/database.ts b/development/common/integrations/database/database.ts similarity index 100% rename from development/social/integrations/database/database.ts rename to development/common/integrations/database/database.ts diff --git a/development/social/integrations/database/healthCheck.ts b/development/common/integrations/database/healthCheck.ts similarity index 100% rename from development/social/integrations/database/healthCheck.ts rename to development/common/integrations/database/healthCheck.ts diff --git a/development/social/integrations/database/index.ts b/development/common/integrations/database/index.ts similarity index 100% rename from development/social/integrations/database/index.ts rename to development/common/integrations/database/index.ts diff --git a/development/social/integrations/database/setUp.ts b/development/common/integrations/database/setUp.ts similarity index 100% rename from development/social/integrations/database/setUp.ts rename to development/common/integrations/database/setUp.ts diff --git a/development/social/integrations/database/tearDown.ts b/development/common/integrations/database/tearDown.ts similarity index 100% rename from development/social/integrations/database/tearDown.ts rename to development/common/integrations/database/tearDown.ts diff --git a/development/social/integrations/errors/BadRequest.ts b/development/common/integrations/errors/BadRequest.ts similarity index 100% rename from development/social/integrations/errors/BadRequest.ts rename to development/common/integrations/errors/BadRequest.ts diff --git a/development/social/integrations/errors/NotFound.ts b/development/common/integrations/errors/NotFound.ts similarity index 100% rename from development/social/integrations/errors/NotFound.ts rename to development/common/integrations/errors/NotFound.ts diff --git a/development/social/integrations/errors/ServerError.ts b/development/common/integrations/errors/ServerError.ts similarity index 100% rename from development/social/integrations/errors/ServerError.ts rename to development/common/integrations/errors/ServerError.ts diff --git a/development/social/integrations/errors/Unauthorized.ts b/development/common/integrations/errors/Unauthorized.ts similarity index 100% rename from development/social/integrations/errors/Unauthorized.ts rename to development/common/integrations/errors/Unauthorized.ts diff --git a/development/social/integrations/errors/ValidationError.ts b/development/common/integrations/errors/ValidationError.ts similarity index 100% rename from development/social/integrations/errors/ValidationError.ts rename to development/common/integrations/errors/ValidationError.ts diff --git a/development/social/integrations/errors/index.ts b/development/common/integrations/errors/index.ts similarity index 100% rename from development/social/integrations/errors/index.ts rename to development/common/integrations/errors/index.ts diff --git a/development/social/integrations/eventBroker/eventBroker.ts b/development/common/integrations/eventBroker/eventBroker.ts similarity index 100% rename from development/social/integrations/eventBroker/eventBroker.ts rename to development/common/integrations/eventBroker/eventBroker.ts diff --git a/development/social/integrations/eventBroker/healthCheck.ts b/development/common/integrations/eventBroker/healthCheck.ts similarity index 100% rename from development/social/integrations/eventBroker/healthCheck.ts rename to development/common/integrations/eventBroker/healthCheck.ts diff --git a/development/social/integrations/eventBroker/index.ts b/development/common/integrations/eventBroker/index.ts similarity index 100% rename from development/social/integrations/eventBroker/index.ts rename to development/common/integrations/eventBroker/index.ts diff --git a/development/social/integrations/eventBroker/setUp.ts b/development/common/integrations/eventBroker/setUp.ts similarity index 100% rename from development/social/integrations/eventBroker/setUp.ts rename to development/common/integrations/eventBroker/setUp.ts diff --git a/development/social/integrations/eventBroker/tearDown.ts b/development/common/integrations/eventBroker/tearDown.ts similarity index 100% rename from development/social/integrations/eventBroker/tearDown.ts rename to development/common/integrations/eventBroker/tearDown.ts diff --git a/development/social/integrations/fileStore/fileStore.ts b/development/common/integrations/fileStore/fileStore.ts similarity index 95% rename from development/social/integrations/fileStore/fileStore.ts rename to development/common/integrations/fileStore/fileStore.ts index a7cade02..ed65f527 100644 --- a/development/social/integrations/fileStore/fileStore.ts +++ b/development/common/integrations/fileStore/fileStore.ts @@ -10,7 +10,7 @@ function setUpMemory(): MemoryDriver return new MemoryDriver(); } -function setUpMinio(): S3Driver +function setUpS3(): S3Driver { const config = { bucketName: process.env.S3_BUCKET_NAME ?? '', @@ -29,7 +29,7 @@ function setUpMinio(): S3Driver } export const driver = process.env.FILE_STORE_DRIVER === 's3' - ? setUpMinio() + ? setUpS3() : setUpMemory(); const fileStore = new FileStore(driver, shelfLogger); diff --git a/development/social/integrations/fileStore/healthCheck.ts b/development/common/integrations/fileStore/healthCheck.ts similarity index 100% rename from development/social/integrations/fileStore/healthCheck.ts rename to development/common/integrations/fileStore/healthCheck.ts diff --git a/development/social/integrations/fileStore/index.ts b/development/common/integrations/fileStore/index.ts similarity index 100% rename from development/social/integrations/fileStore/index.ts rename to development/common/integrations/fileStore/index.ts diff --git a/development/social/integrations/fileStore/setUp.ts b/development/common/integrations/fileStore/setUp.ts similarity index 100% rename from development/social/integrations/fileStore/setUp.ts rename to development/common/integrations/fileStore/setUp.ts diff --git a/development/social/integrations/fileStore/tearDown.ts b/development/common/integrations/fileStore/tearDown.ts similarity index 100% rename from development/social/integrations/fileStore/tearDown.ts rename to development/common/integrations/fileStore/tearDown.ts diff --git a/development/social/integrations/http/http.ts b/development/common/integrations/http/http.ts similarity index 100% rename from development/social/integrations/http/http.ts rename to development/common/integrations/http/http.ts diff --git a/development/social/integrations/http/index.ts b/development/common/integrations/http/index.ts similarity index 100% rename from development/social/integrations/http/index.ts rename to development/common/integrations/http/index.ts diff --git a/development/social/integrations/logging/index.ts b/development/common/integrations/logging/index.ts similarity index 100% rename from development/social/integrations/logging/index.ts rename to development/common/integrations/logging/index.ts diff --git a/development/social/integrations/logging/logger.ts b/development/common/integrations/logging/logger.ts similarity index 100% rename from development/social/integrations/logging/logger.ts rename to development/common/integrations/logging/logger.ts diff --git a/development/social/integrations/notification/notificationHealthCheck.ts b/development/common/integrations/notification/notificationHealthCheck.ts similarity index 100% rename from development/social/integrations/notification/notificationHealthCheck.ts rename to development/common/integrations/notification/notificationHealthCheck.ts diff --git a/development/social/integrations/notification/notificationService.ts b/development/common/integrations/notification/notificationService.ts similarity index 100% rename from development/social/integrations/notification/notificationService.ts rename to development/common/integrations/notification/notificationService.ts diff --git a/development/social/integrations/tenancy/middleware/MultiTenantMiddleware.ts b/development/common/integrations/tenancy/middleware/MultiTenantMiddleware.ts similarity index 95% rename from development/social/integrations/tenancy/middleware/MultiTenantMiddleware.ts rename to development/common/integrations/tenancy/middleware/MultiTenantMiddleware.ts index e33a5ddf..572693e3 100644 --- a/development/social/integrations/tenancy/middleware/MultiTenantMiddleware.ts +++ b/development/common/integrations/tenancy/middleware/MultiTenantMiddleware.ts @@ -5,7 +5,7 @@ import { Response } from 'jitar'; import type { Tenant } from '^/domain/tenant'; import getByOrigin from '^/domain/tenant/getByOriginConverted'; -const GEY_BY_ORIGIN_FQN = 'social/domain/tenant/getByOriginConverted'; +const GEY_BY_ORIGIN_FQN = 'common/domain/tenant/getByOriginConverted'; const TENANT_PARAMETER = '*tenant'; export default class MultiTenantMiddleware implements Middleware diff --git a/development/social/integrations/tenancy/tenantMiddleware.ts b/development/common/integrations/tenancy/tenantMiddleware.ts similarity index 100% rename from development/social/integrations/tenancy/tenantMiddleware.ts rename to development/common/integrations/tenancy/tenantMiddleware.ts diff --git a/development/social/integrations/utilities/crypto.ts b/development/common/integrations/utilities/crypto.ts similarity index 100% rename from development/social/integrations/utilities/crypto.ts rename to development/common/integrations/utilities/crypto.ts diff --git a/development/social/integrations/utilities/dates.ts b/development/common/integrations/utilities/dates.ts similarity index 100% rename from development/social/integrations/utilities/dates.ts rename to development/common/integrations/utilities/dates.ts diff --git a/development/social/integrations/utilities/webbrowser.ts b/development/common/integrations/utilities/webbrowser.ts similarity index 100% rename from development/social/integrations/utilities/webbrowser.ts rename to development/common/integrations/utilities/webbrowser.ts diff --git a/development/social/integrations/validation/index.ts b/development/common/integrations/validation/index.ts similarity index 100% rename from development/social/integrations/validation/index.ts rename to development/common/integrations/validation/index.ts diff --git a/development/social/integrations/validation/validator.ts b/development/common/integrations/validation/validator.ts similarity index 100% rename from development/social/integrations/validation/validator.ts rename to development/common/integrations/validation/validator.ts diff --git a/development/common/package.json b/development/common/package.json new file mode 100644 index 00000000..ffb73a81 --- /dev/null +++ b/development/common/package.json @@ -0,0 +1,14 @@ +{ + "name": "@comify/common", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite --config app/vite.config.js", + "build": "npm run clean && npm run build-domain", + "build-domain": "tsc && tsc-alias", + "clean": "rimraf ../../artifacts/build/common", + "lint": "eslint", + "review": "npm run build && npm run lint" + } +} diff --git a/development/common/tsconfig.json b/development/common/tsconfig.json new file mode 100644 index 00000000..2153ea77 --- /dev/null +++ b/development/common/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "composite": true, + "rootDir": "./", + "outDir": "../../artifacts/build/common", + "paths": { + "^/*": ["./*"], + } + }, + "include": ["./domain", "./integrations"] +} \ No newline at end of file diff --git a/development/insights/integrations/database/index.ts b/development/insights/integrations/database/index.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/development/insights/package.json b/development/insights/package.json index 7b76e2ac..9ad6f186 100644 --- a/development/insights/package.json +++ b/development/insights/package.json @@ -1,5 +1,5 @@ { - "name": "@concept/insights", + "name": "@comify/insights", "private": true, "version": "0.0.1", "type": "module", diff --git a/development/insights/tsconfig.json b/development/insights/tsconfig.json index 2a93edf6..86a26e91 100644 --- a/development/insights/tsconfig.json +++ b/development/insights/tsconfig.json @@ -1,10 +1,16 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "composite": true, + "rootDir": "./", "outDir": "../../artifacts/build/insights", "paths": { "^/*": ["./*"], + "@comify/common/*": ["../common/*"] } }, - "include": ["./domain", "./integrations"] + "references": [ + { "path" : "../common" } + ], + "include": ["./domain"] } \ No newline at end of file diff --git a/development/moderation/integrations/database/index.ts b/development/moderation/integrations/database/index.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/development/moderation/package.json b/development/moderation/package.json index 9a36c768..231ced23 100644 --- a/development/moderation/package.json +++ b/development/moderation/package.json @@ -1,5 +1,5 @@ { - "name": "@concept/moderation", + "name": "@comify/moderation", "private": true, "version": "0.0.1", "type": "module", diff --git a/development/moderation/tsconfig.json b/development/moderation/tsconfig.json index a8757519..7cca0e3e 100644 --- a/development/moderation/tsconfig.json +++ b/development/moderation/tsconfig.json @@ -1,10 +1,16 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "composite": true, + "rootDir": "./", "outDir": "../../artifacts/build/moderation", "paths": { "^/*": ["./*"], + "@comify/common/*": ["../common/*"] } }, - "include": ["./domain", "./integrations"] + "references": [ + { "path" : "../common" } + ], + "include": ["./domain"] } \ No newline at end of file diff --git a/development/social/app/components/account/hooks/useUpdateNickname.ts b/development/social/app/components/account/hooks/useUpdateNickname.ts index f4fcb22a..d5bdae9b 100644 --- a/development/social/app/components/account/hooks/useUpdateNickname.ts +++ b/development/social/app/components/account/hooks/useUpdateNickname.ts @@ -5,7 +5,7 @@ import { requester } from '^/domain/authentication'; import type { AggregatedData as AggregatedCreatorData } from '^/domain/creator/aggregate'; import updateNickname from '^/domain/creator/updateNickname'; import NicknameAlreadyExists from '^/domain/creator/updateNickname/NicknameAlreadyExists'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; import { useAppContext } from '~/components/application'; diff --git a/development/social/app/components/application/hooks/useIdentify.ts b/development/social/app/components/application/hooks/useIdentify.ts index a2d7d5be..2b58bafe 100644 --- a/development/social/app/components/application/hooks/useIdentify.ts +++ b/development/social/app/components/application/hooks/useIdentify.ts @@ -5,7 +5,7 @@ import { useNavigate } from 'react-router-dom'; import { requester } from '^/domain/authentication'; import type { AggregatedData as IdentityModel } from '^/domain/creator/aggregate'; import getMe from '^/domain/creator/getMeAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; import { useAppContext } from '../contexts/AppContext'; diff --git a/development/social/app/components/common/components/TimeElapsed.tsx b/development/social/app/components/common/components/TimeElapsed.tsx index 880ee07f..3982922c 100644 --- a/development/social/app/components/common/components/TimeElapsed.tsx +++ b/development/social/app/components/common/components/TimeElapsed.tsx @@ -1,7 +1,7 @@ import { Text } from '@maskingtech/designsystem'; -import { timeElapsed } from '^/integrations/utilities/dates'; +import { timeElapsed } from '@comify/common/integrations/utilities/dates'; type Props = { readonly date: string; diff --git a/development/social/app/components/common/components/hooks/useTenant.ts b/development/social/app/components/common/components/hooks/useTenant.ts index 16c087d8..9e14a657 100644 --- a/development/social/app/components/common/components/hooks/useTenant.ts +++ b/development/social/app/components/common/components/hooks/useTenant.ts @@ -3,8 +3,8 @@ import { useCallback } from 'react'; import { useLoadData } from '@maskingtech/react-toolkit'; -import { tenant } from '^/domain/tenant'; -import getByOriginConverted from '^/domain/tenant/getByOriginConverted'; +import { tenant } from '@comify/common/domain/tenant'; +import getByOriginConverted from '@comify/common/domain/tenant/getByOriginConverted'; export function useTenant() { diff --git a/development/social/app/components/notification/hooks/useNotifications.ts b/development/social/app/components/notification/hooks/useNotifications.ts index 14c390d4..73ca7021 100644 --- a/development/social/app/components/notification/hooks/useNotifications.ts +++ b/development/social/app/components/notification/hooks/useNotifications.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getRecentNotifications from '^/domain/notification/getRecentAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useNotifications() { diff --git a/development/social/app/components/post/hooks/useAddComicPost.ts b/development/social/app/components/post/hooks/useAddComicPost.ts index 054f4fb6..1af22460 100644 --- a/development/social/app/components/post/hooks/useAddComicPost.ts +++ b/development/social/app/components/post/hooks/useAddComicPost.ts @@ -4,7 +4,7 @@ import { useNavigate } from 'react-router-dom'; import { requester } from '^/domain/authentication'; import createPostWithComic from '^/domain/post/createWithComic'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; import { useAppContext } from '~/components/application'; diff --git a/development/social/app/components/post/hooks/useCreatorPosts.ts b/development/social/app/components/post/hooks/useCreatorPosts.ts index e4f15277..b3535339 100644 --- a/development/social/app/components/post/hooks/useCreatorPosts.ts +++ b/development/social/app/components/post/hooks/useCreatorPosts.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getCreatorPosts from '^/domain/post/getByCreatorAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useCreatorPosts(creatorId: string) { diff --git a/development/social/app/components/post/hooks/useExplorePosts.ts b/development/social/app/components/post/hooks/useExplorePosts.ts index 002150dc..055e79e9 100644 --- a/development/social/app/components/post/hooks/useExplorePosts.ts +++ b/development/social/app/components/post/hooks/useExplorePosts.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import explorePosts from '^/domain/post/exploreAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useExplorePosts() { diff --git a/development/social/app/components/post/hooks/useHighlight.ts b/development/social/app/components/post/hooks/useHighlight.ts index f06bfaea..84b2ba19 100644 --- a/development/social/app/components/post/hooks/useHighlight.ts +++ b/development/social/app/components/post/hooks/useHighlight.ts @@ -6,7 +6,7 @@ import { useLoadData } from '@maskingtech/react-toolkit'; import requester from '^/domain/authentication/requester'; import get from '^/domain/post/getByIdAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useReaction() { diff --git a/development/social/app/components/post/hooks/usePost.ts b/development/social/app/components/post/hooks/usePost.ts index acdddbe6..d6d4288c 100644 --- a/development/social/app/components/post/hooks/usePost.ts +++ b/development/social/app/components/post/hooks/usePost.ts @@ -6,7 +6,7 @@ import { useLoadData } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import get from '^/domain/post/getByIdAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function usePost() { diff --git a/development/social/app/components/post/hooks/usePostsFollowing.ts b/development/social/app/components/post/hooks/usePostsFollowing.ts index ebe8a4b7..c67a75cb 100644 --- a/development/social/app/components/post/hooks/usePostsFollowing.ts +++ b/development/social/app/components/post/hooks/usePostsFollowing.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getPostsFollowing from '^/domain/post/getByFollowingAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function usePostsFollowing() { diff --git a/development/social/app/components/post/hooks/usePostsRecommended.ts b/development/social/app/components/post/hooks/usePostsRecommended.ts index fffaf3f0..dcfd1452 100644 --- a/development/social/app/components/post/hooks/usePostsRecommended.ts +++ b/development/social/app/components/post/hooks/usePostsRecommended.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getPostsRecommended from '^/domain/post/getRecommendedAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function usePostsRecommended() { diff --git a/development/social/app/components/post/hooks/useReactions.ts b/development/social/app/components/post/hooks/useReactions.ts index d711dae6..38d8073b 100644 --- a/development/social/app/components/post/hooks/useReactions.ts +++ b/development/social/app/components/post/hooks/useReactions.ts @@ -6,7 +6,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import type { AggregatedData as AggregatedPostData } from '^/domain/post/aggregate'; import getReactionsByPost from '^/domain/post/getByParentAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useReactions(post: AggregatedPostData) { diff --git a/development/social/app/components/post/hooks/useRemovePost.ts b/development/social/app/components/post/hooks/useRemovePost.ts index 4a1730a6..f2ee6314 100644 --- a/development/social/app/components/post/hooks/useRemovePost.ts +++ b/development/social/app/components/post/hooks/useRemovePost.ts @@ -6,7 +6,7 @@ import { useAppContext } from '~/components/application'; import { requester } from '^/domain/authentication'; import remove from '^/domain/post/remove'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useRemovePost(id?: string) { diff --git a/development/social/app/components/profile/hooks/useProfile.ts b/development/social/app/components/profile/hooks/useProfile.ts index ec424cf5..a7372330 100644 --- a/development/social/app/components/profile/hooks/useProfile.ts +++ b/development/social/app/components/profile/hooks/useProfile.ts @@ -5,7 +5,7 @@ import { useLoadData } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getCreatorByNickname from '^/domain/creator/getByNicknameAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useProfile(nickname?: string) { diff --git a/development/social/app/components/rating/hooks/useTogglePostRating.ts b/development/social/app/components/rating/hooks/useTogglePostRating.ts index 13ba8ed1..07f0f066 100644 --- a/development/social/app/components/rating/hooks/useTogglePostRating.ts +++ b/development/social/app/components/rating/hooks/useTogglePostRating.ts @@ -4,7 +4,7 @@ import { useCallback } from 'react'; import { requester } from '^/domain/authentication'; import type { AggregatedData as AggregatedPostData } from '^/domain/post/aggregate'; import toggleRating from '^/domain/rating/toggle'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useTogglePostRating() { diff --git a/development/social/app/components/reaction/hooks/useCreateComic.ts b/development/social/app/components/reaction/hooks/useCreateComic.ts index bb8e72c0..e8ad3eb6 100644 --- a/development/social/app/components/reaction/hooks/useCreateComic.ts +++ b/development/social/app/components/reaction/hooks/useCreateComic.ts @@ -3,7 +3,7 @@ import { useCallback } from 'react'; import { requester } from '^/domain/authentication'; import createComicReaction from '^/domain/post/createWithComic'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useCreateComic(postId: string, onCreated: (reactionId: string) => void) { diff --git a/development/social/app/components/reaction/hooks/useCreateComment.ts b/development/social/app/components/reaction/hooks/useCreateComment.ts index 6962f55e..23bdc4eb 100644 --- a/development/social/app/components/reaction/hooks/useCreateComment.ts +++ b/development/social/app/components/reaction/hooks/useCreateComment.ts @@ -3,7 +3,7 @@ import { useCallback } from 'react'; import { requester } from '^/domain/authentication'; import createCommentReaction from '^/domain/post/createWithComment'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useCreateComment(postId: string, onCreated: (reactionId: string) => void) { diff --git a/development/social/app/components/relation/hooks/useCreatorFollowers.ts b/development/social/app/components/relation/hooks/useCreatorFollowers.ts index 21e78745..77f2eaa1 100644 --- a/development/social/app/components/relation/hooks/useCreatorFollowers.ts +++ b/development/social/app/components/relation/hooks/useCreatorFollowers.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getFollowers from '^/domain/relation/getFollowersAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useCreatorFollowers(creatorId?: string) { diff --git a/development/social/app/components/relation/hooks/useCreatorFollowing.ts b/development/social/app/components/relation/hooks/useCreatorFollowing.ts index 96c80638..f64ba8fb 100644 --- a/development/social/app/components/relation/hooks/useCreatorFollowing.ts +++ b/development/social/app/components/relation/hooks/useCreatorFollowing.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getFollowing from '^/domain/relation/getFollowingAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useCreatorFollowing(creatorId?: string) { diff --git a/development/social/app/components/relation/hooks/useEstablish.ts b/development/social/app/components/relation/hooks/useEstablish.ts index c4f81320..88fae99c 100644 --- a/development/social/app/components/relation/hooks/useEstablish.ts +++ b/development/social/app/components/relation/hooks/useEstablish.ts @@ -4,7 +4,7 @@ import { useCallback } from 'react'; import { requester } from '^/domain/authentication'; import type { AggregatedData as AggregatedRelationData } from '^/domain/relation/aggregate'; import establishRelation from '^/domain/relation/establish'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useEstablish() { diff --git a/development/social/app/components/relation/hooks/useExploreCreators.ts b/development/social/app/components/relation/hooks/useExploreCreators.ts index 8b65726f..7cf072be 100644 --- a/development/social/app/components/relation/hooks/useExploreCreators.ts +++ b/development/social/app/components/relation/hooks/useExploreCreators.ts @@ -5,7 +5,7 @@ import { usePagination } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import exploreRelations from '^/domain/relation/exploreAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export default function useExploreCreators() { diff --git a/development/social/app/components/relation/hooks/useRelation.ts b/development/social/app/components/relation/hooks/useRelation.ts index 0bf80316..da36fa4e 100644 --- a/development/social/app/components/relation/hooks/useRelation.ts +++ b/development/social/app/components/relation/hooks/useRelation.ts @@ -5,7 +5,7 @@ import { useLoadData } from '@maskingtech/react-toolkit'; import { requester } from '^/domain/authentication'; import getRelation from '^/domain/relation/getAggregated'; -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; import { useAppContext } from '~/components/application'; diff --git a/development/social/assets/appicon192.png b/development/social/app/public/appicon192.png similarity index 100% rename from development/social/assets/appicon192.png rename to development/social/app/public/appicon192.png diff --git a/development/social/assets/appicon32.png b/development/social/app/public/appicon32.png similarity index 100% rename from development/social/assets/appicon32.png rename to development/social/app/public/appicon32.png diff --git a/development/social/assets/appicon512.png b/development/social/app/public/appicon512.png similarity index 100% rename from development/social/assets/appicon512.png rename to development/social/app/public/appicon512.png diff --git a/development/social/assets/localhost.css b/development/social/app/public/localhost.css similarity index 100% rename from development/social/assets/localhost.css rename to development/social/app/public/localhost.css diff --git a/development/social/app/tsconfig.json b/development/social/app/tsconfig.json index 2e1aba0d..b9bb13f9 100644 --- a/development/social/app/tsconfig.json +++ b/development/social/app/tsconfig.json @@ -6,6 +6,7 @@ "paths": { "^/*": ["../*"], "~/*": ["./*"], + "@comify/common/*": ["../../common/*"] } }, "include": ["./"] diff --git a/development/social/app/vite.config.ts b/development/social/app/vite.config.ts index 785444fb..89848e45 100644 --- a/development/social/app/vite.config.ts +++ b/development/social/app/vite.config.ts @@ -7,7 +7,7 @@ import tsconfigPaths from 'vite-tsconfig-paths'; const JITAR_URL = 'http://localhost:3000'; const JITAR_SEGMENTS: string[] = []; const JITAR_MIDDLEWARES: string[] = [ - '../integrations/authentication/requesterMiddleware' + '../../common/integrations/authentication/requesterMiddleware' ]; const jitarConfig: JitarConfig = { diff --git a/development/social/domain/authentication/login/login.ts b/development/social/domain/authentication/login/login.ts index 6cfe4cf7..a4926b73 100644 --- a/development/social/domain/authentication/login/login.ts +++ b/development/social/domain/authentication/login/login.ts @@ -3,7 +3,7 @@ import type { Identity } from '@theshelf/authentication'; import getCreatorByEmail from '^/domain/creator/getByEmail'; import registerCreator from '^/domain/creator/register'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { Requester } from '../types'; diff --git a/development/social/domain/comic/create/InvalidComic.ts b/development/social/domain/comic/create/InvalidComic.ts index 9a3acf13..519f7468 100644 --- a/development/social/domain/comic/create/InvalidComic.ts +++ b/development/social/domain/comic/create/InvalidComic.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidComic extends ValidationError { diff --git a/development/social/domain/comic/create/createData.ts b/development/social/domain/comic/create/createData.ts index 0f0772ac..cd68bf03 100644 --- a/development/social/domain/comic/create/createData.ts +++ b/development/social/domain/comic/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/comic/create/insertData.ts b/development/social/domain/comic/create/insertData.ts index 764eeeb9..6a519f76 100644 --- a/development/social/domain/comic/create/insertData.ts +++ b/development/social/domain/comic/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/comic/create/validateData.ts b/development/social/domain/comic/create/validateData.ts index 7dc6e964..a9bdfa02 100644 --- a/development/social/domain/comic/create/validateData.ts +++ b/development/social/domain/comic/create/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { requiredIdValidation } from '^/domain/definitions'; diff --git a/development/social/domain/comic/erase/eraseData.ts b/development/social/domain/comic/erase/eraseData.ts index cf62de8f..440ac23d 100644 --- a/development/social/domain/comic/erase/eraseData.ts +++ b/development/social/domain/comic/erase/eraseData.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/comic/getById/ComicNotFound.ts b/development/social/domain/comic/getById/ComicNotFound.ts index 1da29a1a..4a30d1d4 100644 --- a/development/social/domain/comic/getById/ComicNotFound.ts +++ b/development/social/domain/comic/getById/ComicNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class ComicNotFound extends NotFound { diff --git a/development/social/domain/comic/getById/getById.ts b/development/social/domain/comic/getById/getById.ts index 43bc1fbf..ede65c95 100644 --- a/development/social/domain/comic/getById/getById.ts +++ b/development/social/domain/comic/getById/getById.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/comment/create/InvalidComment.ts b/development/social/domain/comment/create/InvalidComment.ts index 6d88f797..3b6ffa6a 100644 --- a/development/social/domain/comment/create/InvalidComment.ts +++ b/development/social/domain/comment/create/InvalidComment.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidComment extends ValidationError { diff --git a/development/social/domain/comment/create/createData.ts b/development/social/domain/comment/create/createData.ts index 1cc948ec..6cda6157 100644 --- a/development/social/domain/comment/create/createData.ts +++ b/development/social/domain/comment/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/comment/create/insertData.ts b/development/social/domain/comment/create/insertData.ts index 764eeeb9..6a519f76 100644 --- a/development/social/domain/comment/create/insertData.ts +++ b/development/social/domain/comment/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/comment/create/validateData.ts b/development/social/domain/comment/create/validateData.ts index 9d7f6850..a085c1c1 100644 --- a/development/social/domain/comment/create/validateData.ts +++ b/development/social/domain/comment/create/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { MESSAGE_MAX_LENGTH } from '../definitions'; import InvalidComment from './InvalidComment'; diff --git a/development/social/domain/comment/erase/erase.ts b/development/social/domain/comment/erase/erase.ts index d0d90407..a77690ca 100644 --- a/development/social/domain/comment/erase/erase.ts +++ b/development/social/domain/comment/erase/erase.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/comment/getById/CommentNotFound.ts b/development/social/domain/comment/getById/CommentNotFound.ts index c01a1b23..917e464d 100644 --- a/development/social/domain/comment/getById/CommentNotFound.ts +++ b/development/social/domain/comment/getById/CommentNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class CommentNotFound extends NotFound { diff --git a/development/social/domain/comment/getById/getById.ts b/development/social/domain/comment/getById/getById.ts index 5bcd16a0..a4de8c93 100644 --- a/development/social/domain/comment/getById/getById.ts +++ b/development/social/domain/comment/getById/getById.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/common/filterResolved/filterResolved.ts b/development/social/domain/common/filterResolved/filterResolved.ts index 7c65f540..dcd74a8e 100644 --- a/development/social/domain/common/filterResolved/filterResolved.ts +++ b/development/social/domain/common/filterResolved/filterResolved.ts @@ -1,5 +1,5 @@ -import logger from '^/integrations/logging'; +import logger from '@comify/common/integrations/logging'; export default async function filterResolved(items: Promise[]): Promise { diff --git a/development/social/domain/common/validateRange/InvalidRange.ts b/development/social/domain/common/validateRange/InvalidRange.ts index ef602844..5ce6d4a0 100644 --- a/development/social/domain/common/validateRange/InvalidRange.ts +++ b/development/social/domain/common/validateRange/InvalidRange.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidRange extends ValidationError { diff --git a/development/social/domain/common/validateRange/validateRange.ts b/development/social/domain/common/validateRange/validateRange.ts index 67fa2be0..553debbd 100644 --- a/development/social/domain/common/validateRange/validateRange.ts +++ b/development/social/domain/common/validateRange/validateRange.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import InvalidRange from './InvalidRange'; import type { Range } from './types'; diff --git a/development/social/domain/creator.metrics/create/createData.ts b/development/social/domain/creator.metrics/create/createData.ts index 4d0a2827..bc208d26 100644 --- a/development/social/domain/creator.metrics/create/createData.ts +++ b/development/social/domain/creator.metrics/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator.metrics/create/insertData.ts b/development/social/domain/creator.metrics/create/insertData.ts index aa1171c6..f1dd37ce 100644 --- a/development/social/domain/creator.metrics/create/insertData.ts +++ b/development/social/domain/creator.metrics/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts b/development/social/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts index 9a27ada6..cac8e979 100644 --- a/development/social/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts +++ b/development/social/domain/creator.metrics/getByCreator/CreatorMetricsNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class CreatorMetricsNotFound extends NotFound { diff --git a/development/social/domain/creator.metrics/getByCreator/getByCreator.ts b/development/social/domain/creator.metrics/getByCreator/getByCreator.ts index 274c9300..072820ae 100644 --- a/development/social/domain/creator.metrics/getByCreator/getByCreator.ts +++ b/development/social/domain/creator.metrics/getByCreator/getByCreator.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator.metrics/update/update.ts b/development/social/domain/creator.metrics/update/update.ts index 5d49f23c..0dc08948 100644 --- a/development/social/domain/creator.metrics/update/update.ts +++ b/development/social/domain/creator.metrics/update/update.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/create/InvalidCreator.ts b/development/social/domain/creator/create/InvalidCreator.ts index 9265a501..20998005 100644 --- a/development/social/domain/creator/create/InvalidCreator.ts +++ b/development/social/domain/creator/create/InvalidCreator.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidCreator extends ValidationError { diff --git a/development/social/domain/creator/create/createData.ts b/development/social/domain/creator/create/createData.ts index aaed975e..c1c5f8c2 100644 --- a/development/social/domain/creator/create/createData.ts +++ b/development/social/domain/creator/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/create/insertData.ts b/development/social/domain/creator/create/insertData.ts index 764eeeb9..6a519f76 100644 --- a/development/social/domain/creator/create/insertData.ts +++ b/development/social/domain/creator/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/create/validateData.ts b/development/social/domain/creator/create/validateData.ts index e29fac6e..018eca13 100644 --- a/development/social/domain/creator/create/validateData.ts +++ b/development/social/domain/creator/create/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { optionalIdValidation } from '^/domain/definitions'; diff --git a/development/social/domain/creator/erase/erase.ts b/development/social/domain/creator/erase/erase.ts index 91657532..6390c6b8 100644 --- a/development/social/domain/creator/erase/erase.ts +++ b/development/social/domain/creator/erase/erase.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/creator/generateNickname/TooManySimilarNicknames.ts b/development/social/domain/creator/generateNickname/TooManySimilarNicknames.ts index 70c29bce..8490e4b2 100644 --- a/development/social/domain/creator/generateNickname/TooManySimilarNicknames.ts +++ b/development/social/domain/creator/generateNickname/TooManySimilarNicknames.ts @@ -1,5 +1,5 @@ -import { BadRequest } from '^/integrations/errors'; +import { BadRequest } from '@comify/common/integrations/errors'; export default class TooManySimilarNicknames extends BadRequest { diff --git a/development/social/domain/creator/generateNickname/retrieveByNickname.ts b/development/social/domain/creator/generateNickname/retrieveByNickname.ts index f2ed8675..3c884892 100644 --- a/development/social/domain/creator/generateNickname/retrieveByNickname.ts +++ b/development/social/domain/creator/generateNickname/retrieveByNickname.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/generateNickname/retrieveByStartNickname.ts b/development/social/domain/creator/generateNickname/retrieveByStartNickname.ts index 0422f323..1add1824 100644 --- a/development/social/domain/creator/generateNickname/retrieveByStartNickname.ts +++ b/development/social/domain/creator/generateNickname/retrieveByStartNickname.ts @@ -2,7 +2,7 @@ import type { RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/getByEmail/getByEmail.ts b/development/social/domain/creator/getByEmail/getByEmail.ts index 6195913d..91f4b3b4 100644 --- a/development/social/domain/creator/getByEmail/getByEmail.ts +++ b/development/social/domain/creator/getByEmail/getByEmail.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/getById/CreatorNotFound.ts b/development/social/domain/creator/getById/CreatorNotFound.ts index fd560001..28cb5216 100644 --- a/development/social/domain/creator/getById/CreatorNotFound.ts +++ b/development/social/domain/creator/getById/CreatorNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class CreatorNotFound extends NotFound { diff --git a/development/social/domain/creator/getById/getById.ts b/development/social/domain/creator/getById/getById.ts index 85d9e1a6..6be80530 100644 --- a/development/social/domain/creator/getById/getById.ts +++ b/development/social/domain/creator/getById/getById.ts @@ -1,8 +1,8 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/getByNickname/NicknameNotFound.ts b/development/social/domain/creator/getByNickname/NicknameNotFound.ts index e2cca6b5..473c55b8 100644 --- a/development/social/domain/creator/getByNickname/NicknameNotFound.ts +++ b/development/social/domain/creator/getByNickname/NicknameNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class NicknameNotFound extends NotFound { diff --git a/development/social/domain/creator/getByNickname/getByNickname.ts b/development/social/domain/creator/getByNickname/getByNickname.ts index 72abce22..b83c5113 100644 --- a/development/social/domain/creator/getByNickname/getByNickname.ts +++ b/development/social/domain/creator/getByNickname/getByNickname.ts @@ -1,8 +1,8 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts b/development/social/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts index 7c4d61fd..98874aa5 100644 --- a/development/social/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts +++ b/development/social/domain/creator/getByNicknameAggregated/getByNicknameAggregated.ts @@ -1,6 +1,6 @@ import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/creator/getMe/getMe.ts b/development/social/domain/creator/getMe/getMe.ts index 79f71b3f..af1f6541 100644 --- a/development/social/domain/creator/getMe/getMe.ts +++ b/development/social/domain/creator/getMe/getMe.ts @@ -1,6 +1,6 @@ import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import getById from '../getById'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/getMeAggregated/getMeAggregated.ts b/development/social/domain/creator/getMeAggregated/getMeAggregated.ts index 1b170185..27f5f0ed 100644 --- a/development/social/domain/creator/getMeAggregated/getMeAggregated.ts +++ b/development/social/domain/creator/getMeAggregated/getMeAggregated.ts @@ -1,6 +1,6 @@ import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/creator/getOthers/getOthers.ts b/development/social/domain/creator/getOthers/getOthers.ts index 4f0fe13c..7ae01c78 100644 --- a/development/social/domain/creator/getOthers/getOthers.ts +++ b/development/social/domain/creator/getOthers/getOthers.ts @@ -2,7 +2,7 @@ import type { QueryStatement, RecordQuery, RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import type { SortOrder } from '../definitions'; import { RECORD_TYPE, SortOrders } from '../definitions'; diff --git a/development/social/domain/creator/register/publish.ts b/development/social/domain/creator/register/publish.ts index 0e725860..b1233e28 100644 --- a/development/social/domain/creator/register/publish.ts +++ b/development/social/domain/creator/register/publish.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/creator/register/register.ts b/development/social/domain/creator/register/register.ts index 8a0656e8..94202648 100644 --- a/development/social/domain/creator/register/register.ts +++ b/development/social/domain/creator/register/register.ts @@ -1,5 +1,5 @@ -import logger from '^/integrations/logging'; +import logger from '@comify/common/integrations/logging'; import create from '../create'; import { FULL_NAME_MAX_LENGTH } from '../definitions'; diff --git a/development/social/domain/creator/register/subscribe.ts b/development/social/domain/creator/register/subscribe.ts index eb1a4632..948cd58d 100644 --- a/development/social/domain/creator/register/subscribe.ts +++ b/development/social/domain/creator/register/subscribe.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/creator/update/update.ts b/development/social/domain/creator/update/update.ts index 8e7c1e31..2bd00c76 100644 --- a/development/social/domain/creator/update/update.ts +++ b/development/social/domain/creator/update/update.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/updateFullName/InvalidFullName.ts b/development/social/domain/creator/updateFullName/InvalidFullName.ts index b9081bce..468874b4 100644 --- a/development/social/domain/creator/updateFullName/InvalidFullName.ts +++ b/development/social/domain/creator/updateFullName/InvalidFullName.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidFullName extends ValidationError { diff --git a/development/social/domain/creator/updateFullName/validateData.ts b/development/social/domain/creator/updateFullName/validateData.ts index ecfd6a9b..08043094 100644 --- a/development/social/domain/creator/updateFullName/validateData.ts +++ b/development/social/domain/creator/updateFullName/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { fullNameValidation } from '../definitions'; import InvalidFullName from './InvalidFullName'; diff --git a/development/social/domain/creator/updateNickname/NicknameAlreadyExists.ts b/development/social/domain/creator/updateNickname/NicknameAlreadyExists.ts index bc5792ce..326be867 100644 --- a/development/social/domain/creator/updateNickname/NicknameAlreadyExists.ts +++ b/development/social/domain/creator/updateNickname/NicknameAlreadyExists.ts @@ -1,5 +1,5 @@ -import { BadRequest } from '^/integrations/errors'; +import { BadRequest } from '@comify/common/integrations/errors'; export default class NicknameAlreadyExists extends BadRequest { diff --git a/development/social/domain/creator/updateNickname/retrieveByNickname.ts b/development/social/domain/creator/updateNickname/retrieveByNickname.ts index eb44bb04..693cfcd7 100644 --- a/development/social/domain/creator/updateNickname/retrieveByNickname.ts +++ b/development/social/domain/creator/updateNickname/retrieveByNickname.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/creator/updateNickname/updateNickname.ts b/development/social/domain/creator/updateNickname/updateNickname.ts index 3ea94a35..efd73134 100644 --- a/development/social/domain/creator/updateNickname/updateNickname.ts +++ b/development/social/domain/creator/updateNickname/updateNickname.ts @@ -1,8 +1,8 @@ -import logger from '^/integrations/logging'; +import logger from '@comify/common/integrations/logging'; import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import cleanNickname from '../cleanNickname'; import update from '../update'; diff --git a/development/social/domain/image/create/InvalidDataURL.ts b/development/social/domain/image/create/InvalidDataURL.ts index fa032a83..2772f624 100644 --- a/development/social/domain/image/create/InvalidDataURL.ts +++ b/development/social/domain/image/create/InvalidDataURL.ts @@ -1,5 +1,5 @@ -import { BadRequest } from '^/integrations/errors'; +import { BadRequest } from '@comify/common/integrations/errors'; export default class InvalidDataURL extends BadRequest { diff --git a/development/social/domain/image/download/ImageNotDownloaded.ts b/development/social/domain/image/download/ImageNotDownloaded.ts index 39dd64bd..c0710605 100644 --- a/development/social/domain/image/download/ImageNotDownloaded.ts +++ b/development/social/domain/image/download/ImageNotDownloaded.ts @@ -1,5 +1,5 @@ -import { ServerError } from '^/integrations/errors'; +import { ServerError } from '@comify/common/integrations/errors'; export default class ImageNotDownloaded extends ServerError { diff --git a/development/social/domain/image/download/downloadImage.ts b/development/social/domain/image/download/downloadImage.ts index 3bf76b6a..4ab37538 100644 --- a/development/social/domain/image/download/downloadImage.ts +++ b/development/social/domain/image/download/downloadImage.ts @@ -1,5 +1,5 @@ -import http from '^/integrations/http'; +import http from '@comify/common/integrations/http'; import ImageNotDownloaded from './ImageNotDownloaded'; diff --git a/development/social/domain/image/download/getMetaData.ts b/development/social/domain/image/download/getMetaData.ts index ed7858e5..afa629b0 100644 --- a/development/social/domain/image/download/getMetaData.ts +++ b/development/social/domain/image/download/getMetaData.ts @@ -1,5 +1,5 @@ -import http from '^/integrations/http'; +import http from '@comify/common/integrations/http'; import type { MetaData } from '../types'; import ImageNotDownloaded from './ImageNotDownloaded'; diff --git a/development/social/domain/image/erase/erase.ts b/development/social/domain/image/erase/erase.ts index b57a2c64..e53040c2 100644 --- a/development/social/domain/image/erase/erase.ts +++ b/development/social/domain/image/erase/erase.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/image/getById/ImageNotFound.ts b/development/social/domain/image/getById/ImageNotFound.ts index 9591936a..7c9a90de 100644 --- a/development/social/domain/image/getById/ImageNotFound.ts +++ b/development/social/domain/image/getById/ImageNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class ImageNotFound extends NotFound { diff --git a/development/social/domain/image/getById/retrieveData.ts b/development/social/domain/image/getById/retrieveData.ts index 4145f76a..2b8937da 100644 --- a/development/social/domain/image/getById/retrieveData.ts +++ b/development/social/domain/image/getById/retrieveData.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/image/getById/retrieveFile.ts b/development/social/domain/image/getById/retrieveFile.ts index 2fe35317..be208854 100644 --- a/development/social/domain/image/getById/retrieveFile.ts +++ b/development/social/domain/image/getById/retrieveFile.ts @@ -1,5 +1,5 @@ -import fileStore from '^/integrations/fileStore'; +import fileStore from '@comify/common/integrations/fileStore'; export default async function retrieveFile(storageKey: string): Promise { diff --git a/development/social/domain/image/save/InvalidImage.ts b/development/social/domain/image/save/InvalidImage.ts index 6e1d9597..78425cba 100644 --- a/development/social/domain/image/save/InvalidImage.ts +++ b/development/social/domain/image/save/InvalidImage.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidImage extends ValidationError { diff --git a/development/social/domain/image/save/createData.ts b/development/social/domain/image/save/createData.ts index f02d3ebb..0cc0a50b 100644 --- a/development/social/domain/image/save/createData.ts +++ b/development/social/domain/image/save/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; type Data = { readonly id: string; diff --git a/development/social/domain/image/save/fileExists.ts b/development/social/domain/image/save/fileExists.ts index 65888881..d8cece32 100644 --- a/development/social/domain/image/save/fileExists.ts +++ b/development/social/domain/image/save/fileExists.ts @@ -1,5 +1,5 @@ -import fileStore from '^/integrations/fileStore'; +import fileStore from '@comify/common/integrations/fileStore'; export default async function fileExists(storageKey: string): Promise { diff --git a/development/social/domain/image/save/generateStorageKey.ts b/development/social/domain/image/save/generateStorageKey.ts index 7c2fb5a0..0965b317 100644 --- a/development/social/domain/image/save/generateStorageKey.ts +++ b/development/social/domain/image/save/generateStorageKey.ts @@ -1,5 +1,5 @@ -import { generateHash } from '^/integrations/utilities/crypto'; +import { generateHash } from '@comify/common/integrations/utilities/crypto'; export default function generateStorageKey(type: string, data: Buffer): string { diff --git a/development/social/domain/image/save/insertData.ts b/development/social/domain/image/save/insertData.ts index 764eeeb9..6a519f76 100644 --- a/development/social/domain/image/save/insertData.ts +++ b/development/social/domain/image/save/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/image/save/insertFile.ts b/development/social/domain/image/save/insertFile.ts index 11be7821..e2693916 100644 --- a/development/social/domain/image/save/insertFile.ts +++ b/development/social/domain/image/save/insertFile.ts @@ -1,5 +1,5 @@ -import fileStore from '^/integrations/fileStore'; +import fileStore from '@comify/common/integrations/fileStore'; export default async function insertFile(path: string, buffer: Buffer): Promise { diff --git a/development/social/domain/image/save/validateData.ts b/development/social/domain/image/save/validateData.ts index 92615c5e..71ef0984 100644 --- a/development/social/domain/image/save/validateData.ts +++ b/development/social/domain/image/save/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { requiredStringValidation } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/image/validate/InvalidImage.ts b/development/social/domain/image/validate/InvalidImage.ts index 6e1d9597..78425cba 100644 --- a/development/social/domain/image/validate/InvalidImage.ts +++ b/development/social/domain/image/validate/InvalidImage.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidImage extends ValidationError { diff --git a/development/social/domain/image/validate/validate.ts b/development/social/domain/image/validate/validate.ts index de83128f..5249f6d8 100644 --- a/development/social/domain/image/validate/validate.ts +++ b/development/social/domain/image/validate/validate.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import type { MetaData } from '../types'; import InvalidImage from './InvalidImage'; diff --git a/development/social/domain/notification/aggregate/aggregate.ts b/development/social/domain/notification/aggregate/aggregate.ts index 41664b0a..8bfaba39 100644 --- a/development/social/domain/notification/aggregate/aggregate.ts +++ b/development/social/domain/notification/aggregate/aggregate.ts @@ -2,7 +2,7 @@ import type { Requester } from '^/domain/authentication'; import { default as getPostData } from '^/domain/post/getByIdAggregated'; import getRelationData from '^/domain/relation/getAggregated'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { DataModel } from '../types'; import type { AggregatedData } from './types'; diff --git a/development/social/domain/notification/create/create.ts b/development/social/domain/notification/create/create.ts index c91def04..d4ee214f 100644 --- a/development/social/domain/notification/create/create.ts +++ b/development/social/domain/notification/create/create.ts @@ -1,5 +1,5 @@ -import logger from '^/integrations/logging'; +import logger from '@comify/common/integrations/logging'; import type { Type } from '../definitions'; import createData from './createData'; diff --git a/development/social/domain/notification/create/createData.ts b/development/social/domain/notification/create/createData.ts index ec38349c..2af18b68 100644 --- a/development/social/domain/notification/create/createData.ts +++ b/development/social/domain/notification/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/notification/create/insertData.ts b/development/social/domain/notification/create/insertData.ts index 1742358e..58afd3ce 100644 --- a/development/social/domain/notification/create/insertData.ts +++ b/development/social/domain/notification/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/notification/getByPostId/getByPostId.ts b/development/social/domain/notification/getByPostId/getByPostId.ts index 95dfcdcd..dca6c57c 100644 --- a/development/social/domain/notification/getByPostId/getByPostId.ts +++ b/development/social/domain/notification/getByPostId/getByPostId.ts @@ -1,7 +1,7 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/notification/getRecent/getRecent.ts b/development/social/domain/notification/getRecent/getRecent.ts index 1edb8092..0e95f137 100644 --- a/development/social/domain/notification/getRecent/getRecent.ts +++ b/development/social/domain/notification/getRecent/getRecent.ts @@ -2,7 +2,7 @@ import type { RecordQuery, RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/notification/getRecentAggregated/getRecentAggregated.ts b/development/social/domain/notification/getRecentAggregated/getRecentAggregated.ts index e7dbb559..eef718d3 100644 --- a/development/social/domain/notification/getRecentAggregated/getRecentAggregated.ts +++ b/development/social/domain/notification/getRecentAggregated/getRecentAggregated.ts @@ -3,7 +3,7 @@ import type { Requester } from '^/domain/authentication'; import filterResolved from '^/domain/common/filterResolved'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/notification/remove/remove.ts b/development/social/domain/notification/remove/remove.ts index 970501ba..195a1696 100644 --- a/development/social/domain/notification/remove/remove.ts +++ b/development/social/domain/notification/remove/remove.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/post.metrics/create/createData.ts b/development/social/domain/post.metrics/create/createData.ts index 3b7daccf..4bd61f99 100644 --- a/development/social/domain/post.metrics/create/createData.ts +++ b/development/social/domain/post.metrics/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post.metrics/create/insertData.ts b/development/social/domain/post.metrics/create/insertData.ts index aa1171c6..f1dd37ce 100644 --- a/development/social/domain/post.metrics/create/insertData.ts +++ b/development/social/domain/post.metrics/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post.metrics/getByPost/PostMetricsNotFound.ts b/development/social/domain/post.metrics/getByPost/PostMetricsNotFound.ts index 1a93019f..49080b6d 100644 --- a/development/social/domain/post.metrics/getByPost/PostMetricsNotFound.ts +++ b/development/social/domain/post.metrics/getByPost/PostMetricsNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class PostMetricsNotFound extends NotFound { diff --git a/development/social/domain/post.metrics/getByPost/getByPost.ts b/development/social/domain/post.metrics/getByPost/getByPost.ts index 79eb59e7..52594288 100644 --- a/development/social/domain/post.metrics/getByPost/getByPost.ts +++ b/development/social/domain/post.metrics/getByPost/getByPost.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post.metrics/update/update.ts b/development/social/domain/post.metrics/update/update.ts index 37a10908..12f9be62 100644 --- a/development/social/domain/post.metrics/update/update.ts +++ b/development/social/domain/post.metrics/update/update.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/aggregate/aggregate.ts b/development/social/domain/post/aggregate/aggregate.ts index 473c28da..55fd2e3c 100644 --- a/development/social/domain/post/aggregate/aggregate.ts +++ b/development/social/domain/post/aggregate/aggregate.ts @@ -5,7 +5,7 @@ import getCommentData from '^/domain/comment/getById'; import getMetrics from '^/domain/post.metrics/getByPost'; import ratingExists from '^/domain/rating/exists'; import getRelationData from '^/domain/relation/getAggregated'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { DataModel } from '../types'; import type { AggregatedData } from './types'; diff --git a/development/social/domain/post/create/InvalidPost.ts b/development/social/domain/post/create/InvalidPost.ts index 3522fbd5..80cc7dc6 100644 --- a/development/social/domain/post/create/InvalidPost.ts +++ b/development/social/domain/post/create/InvalidPost.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidPost extends ValidationError { diff --git a/development/social/domain/post/create/create.ts b/development/social/domain/post/create/create.ts index 55c6f6a7..2a361f49 100644 --- a/development/social/domain/post/create/create.ts +++ b/development/social/domain/post/create/create.ts @@ -1,5 +1,5 @@ -import logger from '^/integrations/logging'; +import logger from '@comify/common/integrations/logging'; import erase from '../erase'; import createData from './createData'; diff --git a/development/social/domain/post/create/createData.ts b/development/social/domain/post/create/createData.ts index 91ade3f8..18aeed46 100644 --- a/development/social/domain/post/create/createData.ts +++ b/development/social/domain/post/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/create/insertData.ts b/development/social/domain/post/create/insertData.ts index 1742358e..58afd3ce 100644 --- a/development/social/domain/post/create/insertData.ts +++ b/development/social/domain/post/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/create/publish.ts b/development/social/domain/post/create/publish.ts index 40b7bb56..e7b0a69d 100644 --- a/development/social/domain/post/create/publish.ts +++ b/development/social/domain/post/create/publish.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/post/create/subscribe.ts b/development/social/domain/post/create/subscribe.ts index 1a2d5997..02cbab43 100644 --- a/development/social/domain/post/create/subscribe.ts +++ b/development/social/domain/post/create/subscribe.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/post/create/validateData.ts b/development/social/domain/post/create/validateData.ts index 21bfff8e..8c894b9c 100644 --- a/development/social/domain/post/create/validateData.ts +++ b/development/social/domain/post/create/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { optionalIdValidation, requiredIdValidation } from '^/domain/definitions'; diff --git a/development/social/domain/post/createWithComic/createWithComic.ts b/development/social/domain/post/createWithComic/createWithComic.ts index 32b01d8f..7179e698 100644 --- a/development/social/domain/post/createWithComic/createWithComic.ts +++ b/development/social/domain/post/createWithComic/createWithComic.ts @@ -1,7 +1,7 @@ import type { Requester } from '^/domain/authentication'; import createComic from '^/domain/comic/create'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import createPost from '../create'; diff --git a/development/social/domain/post/createWithComment/createWithComment.ts b/development/social/domain/post/createWithComment/createWithComment.ts index 6d36295e..2837c225 100644 --- a/development/social/domain/post/createWithComment/createWithComment.ts +++ b/development/social/domain/post/createWithComment/createWithComment.ts @@ -1,7 +1,7 @@ import type { Requester } from '^/domain/authentication'; import createComment from '^/domain/comment/create'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import createPost from '../create'; diff --git a/development/social/domain/post/erase/erase.ts b/development/social/domain/post/erase/erase.ts index 01ce3d10..2e0d4def 100644 --- a/development/social/domain/post/erase/erase.ts +++ b/development/social/domain/post/erase/erase.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/post/explore/explore.ts b/development/social/domain/post/explore/explore.ts index b08cb69e..3003db5f 100644 --- a/development/social/domain/post/explore/explore.ts +++ b/development/social/domain/post/explore/explore.ts @@ -1,7 +1,7 @@ import type { Requester } from '^/domain/authentication'; import retrieveRelationsByFollower from '^/domain/relation/getFollowing'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { DataModel } from '../types'; import retrieveData from './retrieveData'; diff --git a/development/social/domain/post/explore/retrieveData.ts b/development/social/domain/post/explore/retrieveData.ts index 692a8ac6..0fa1d713 100644 --- a/development/social/domain/post/explore/retrieveData.ts +++ b/development/social/domain/post/explore/retrieveData.ts @@ -2,7 +2,7 @@ import type { RecordQuery, RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/exploreAggregated/exploreAggregated.ts b/development/social/domain/post/exploreAggregated/exploreAggregated.ts index 27e7a8d9..e66df47f 100644 --- a/development/social/domain/post/exploreAggregated/exploreAggregated.ts +++ b/development/social/domain/post/exploreAggregated/exploreAggregated.ts @@ -3,7 +3,7 @@ import type { Requester } from '^/domain/authentication'; import filterResolved from '^/domain/common/filterResolved'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/post/getByCreator/getByCreator.ts b/development/social/domain/post/getByCreator/getByCreator.ts index 8d6e3020..4a67b4ce 100644 --- a/development/social/domain/post/getByCreator/getByCreator.ts +++ b/development/social/domain/post/getByCreator/getByCreator.ts @@ -2,7 +2,7 @@ import type { RecordQuery, RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts b/development/social/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts index 312f1d1b..f75e04a4 100644 --- a/development/social/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts +++ b/development/social/domain/post/getByCreatorAggregated/getByCreatorAggregated.ts @@ -3,7 +3,7 @@ import type { Requester } from '^/domain/authentication'; import filterResolved from '^/domain/common/filterResolved'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/post/getByFollowing/retrieveData.ts b/development/social/domain/post/getByFollowing/retrieveData.ts index 7a526b60..51a7cedf 100644 --- a/development/social/domain/post/getByFollowing/retrieveData.ts +++ b/development/social/domain/post/getByFollowing/retrieveData.ts @@ -2,7 +2,7 @@ import type { RecordQuery, RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts b/development/social/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts index 108d4c0c..5f3ce892 100644 --- a/development/social/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts +++ b/development/social/domain/post/getByFollowingAggregated/getByFollowingAggregated.ts @@ -3,7 +3,7 @@ import type { Requester } from '^/domain/authentication'; import filterResolved from '^/domain/common/filterResolved'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/post/getById/PostNotFound.ts b/development/social/domain/post/getById/PostNotFound.ts index e28f9948..167ef8bc 100644 --- a/development/social/domain/post/getById/PostNotFound.ts +++ b/development/social/domain/post/getById/PostNotFound.ts @@ -1,5 +1,5 @@ -import { NotFound } from '^/integrations/errors'; +import { NotFound } from '@comify/common/integrations/errors'; export default class PostNotFound extends NotFound { diff --git a/development/social/domain/post/getById/getById.ts b/development/social/domain/post/getById/getById.ts index e251d7f8..c5cc73f4 100644 --- a/development/social/domain/post/getById/getById.ts +++ b/development/social/domain/post/getById/getById.ts @@ -1,8 +1,8 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/getByIdAggregated/getByIdAggregated.ts b/development/social/domain/post/getByIdAggregated/getByIdAggregated.ts index 7b269a56..f5ca2cf4 100644 --- a/development/social/domain/post/getByIdAggregated/getByIdAggregated.ts +++ b/development/social/domain/post/getByIdAggregated/getByIdAggregated.ts @@ -1,6 +1,6 @@ import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/post/getByParent/getByParent.ts b/development/social/domain/post/getByParent/getByParent.ts index 4c867071..233d701f 100644 --- a/development/social/domain/post/getByParent/getByParent.ts +++ b/development/social/domain/post/getByParent/getByParent.ts @@ -2,7 +2,7 @@ import type { RecordQuery, RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/getByParentAggregated/getByParentAggregated.ts b/development/social/domain/post/getByParentAggregated/getByParentAggregated.ts index f68457d1..4981912b 100644 --- a/development/social/domain/post/getByParentAggregated/getByParentAggregated.ts +++ b/development/social/domain/post/getByParentAggregated/getByParentAggregated.ts @@ -2,7 +2,7 @@ import type { Requester } from '^/domain/authentication'; import filterResolved from '^/domain/common/filterResolved'; import type { Range } from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/post/getRecommended/getRecommended.ts b/development/social/domain/post/getRecommended/getRecommended.ts index d4360d00..f5b3c677 100644 --- a/development/social/domain/post/getRecommended/getRecommended.ts +++ b/development/social/domain/post/getRecommended/getRecommended.ts @@ -2,7 +2,7 @@ import type { RecordQuery, RecordSort } from '@theshelf/database'; import { SortDirections } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts b/development/social/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts index 23be9c13..050505b3 100644 --- a/development/social/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts +++ b/development/social/domain/post/getRecommendedAggregated/getRecommendedAggregated.ts @@ -3,7 +3,7 @@ import type { Requester } from '^/domain/authentication'; import filterResolved from '^/domain/common/filterResolved'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/post/remove/deleteData.ts b/development/social/domain/post/remove/deleteData.ts index 104d3b40..397c49b2 100644 --- a/development/social/domain/post/remove/deleteData.ts +++ b/development/social/domain/post/remove/deleteData.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/post/remove/publish.ts b/development/social/domain/post/remove/publish.ts index b1084d45..aee957ea 100644 --- a/development/social/domain/post/remove/publish.ts +++ b/development/social/domain/post/remove/publish.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/post/remove/remove.ts b/development/social/domain/post/remove/remove.ts index 1d9b46ee..85eccfd8 100644 --- a/development/social/domain/post/remove/remove.ts +++ b/development/social/domain/post/remove/remove.ts @@ -1,8 +1,8 @@ -import logger from '^/integrations/logging'; +import logger from '@comify/common/integrations/logging'; import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import getById from '../getById'; import deleteData from './deleteData'; diff --git a/development/social/domain/post/remove/subscribe.ts b/development/social/domain/post/remove/subscribe.ts index fd46f25b..2e87af31 100644 --- a/development/social/domain/post/remove/subscribe.ts +++ b/development/social/domain/post/remove/subscribe.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/post/remove/undeleteData.ts b/development/social/domain/post/remove/undeleteData.ts index e99c0aea..c6bd587a 100644 --- a/development/social/domain/post/remove/undeleteData.ts +++ b/development/social/domain/post/remove/undeleteData.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/post/update/update.ts b/development/social/domain/post/update/update.ts index 43cc4d5c..958c266a 100644 --- a/development/social/domain/post/update/update.ts +++ b/development/social/domain/post/update/update.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/rating/create/InvalidRating.ts b/development/social/domain/rating/create/InvalidRating.ts index dfc6f3cd..57516091 100644 --- a/development/social/domain/rating/create/InvalidRating.ts +++ b/development/social/domain/rating/create/InvalidRating.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidRating extends ValidationError { diff --git a/development/social/domain/rating/create/createData.ts b/development/social/domain/rating/create/createData.ts index 0b3febc0..de4cf2e7 100644 --- a/development/social/domain/rating/create/createData.ts +++ b/development/social/domain/rating/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/rating/create/insertData.ts b/development/social/domain/rating/create/insertData.ts index 764eeeb9..6a519f76 100644 --- a/development/social/domain/rating/create/insertData.ts +++ b/development/social/domain/rating/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/rating/create/validateData.ts b/development/social/domain/rating/create/validateData.ts index 294dc5b6..ac2f183b 100644 --- a/development/social/domain/rating/create/validateData.ts +++ b/development/social/domain/rating/create/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { requiredIdValidation } from '^/domain/definitions'; diff --git a/development/social/domain/rating/erase/erase.ts b/development/social/domain/rating/erase/erase.ts index 21c4e77d..3b4c427d 100644 --- a/development/social/domain/rating/erase/erase.ts +++ b/development/social/domain/rating/erase/erase.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/rating/exists/exists.ts b/development/social/domain/rating/exists/exists.ts index 615034a1..4ff58192 100644 --- a/development/social/domain/rating/exists/exists.ts +++ b/development/social/domain/rating/exists/exists.ts @@ -1,7 +1,7 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/rating/toggle/getData.ts b/development/social/domain/rating/toggle/getData.ts index 58f897f0..60965ffd 100644 --- a/development/social/domain/rating/toggle/getData.ts +++ b/development/social/domain/rating/toggle/getData.ts @@ -1,7 +1,7 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/rating/toggle/publish.ts b/development/social/domain/rating/toggle/publish.ts index 1f96ffd4..d0c997c6 100644 --- a/development/social/domain/rating/toggle/publish.ts +++ b/development/social/domain/rating/toggle/publish.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/rating/toggle/subscribe.ts b/development/social/domain/rating/toggle/subscribe.ts index 3b4dbd34..7c438631 100644 --- a/development/social/domain/rating/toggle/subscribe.ts +++ b/development/social/domain/rating/toggle/subscribe.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/rating/toggle/toggle.ts b/development/social/domain/rating/toggle/toggle.ts index 9b9d023c..6c4ee2db 100644 --- a/development/social/domain/rating/toggle/toggle.ts +++ b/development/social/domain/rating/toggle/toggle.ts @@ -1,6 +1,6 @@ import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import getData from './getData'; import switchOff from './switchOff'; diff --git a/development/social/domain/relation/aggregate/aggregate.ts b/development/social/domain/relation/aggregate/aggregate.ts index fbfc8624..8b93dd2a 100644 --- a/development/social/domain/relation/aggregate/aggregate.ts +++ b/development/social/domain/relation/aggregate/aggregate.ts @@ -1,6 +1,6 @@ import getCreatorData from '^/domain/creator/getByIdAggregated'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { DataModel } from '../types'; import type { AggregatedData } from './types'; diff --git a/development/social/domain/relation/create/InvalidRelation.ts b/development/social/domain/relation/create/InvalidRelation.ts index b3681251..9f35f3c2 100644 --- a/development/social/domain/relation/create/InvalidRelation.ts +++ b/development/social/domain/relation/create/InvalidRelation.ts @@ -1,5 +1,5 @@ -import { ValidationError } from '^/integrations/errors'; +import { ValidationError } from '@comify/common/integrations/errors'; export default class InvalidRelation extends ValidationError { diff --git a/development/social/domain/relation/create/createData.ts b/development/social/domain/relation/create/createData.ts index e1b65d19..b60a707f 100644 --- a/development/social/domain/relation/create/createData.ts +++ b/development/social/domain/relation/create/createData.ts @@ -1,5 +1,5 @@ -import { generateId } from '^/integrations/utilities/crypto'; +import { generateId } from '@comify/common/integrations/utilities/crypto'; import type { DataModel } from '../types'; diff --git a/development/social/domain/relation/create/insertData.ts b/development/social/domain/relation/create/insertData.ts index 764eeeb9..6a519f76 100644 --- a/development/social/domain/relation/create/insertData.ts +++ b/development/social/domain/relation/create/insertData.ts @@ -1,5 +1,5 @@ -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/relation/create/validateData.ts b/development/social/domain/relation/create/validateData.ts index 327f949b..30f7459e 100644 --- a/development/social/domain/relation/create/validateData.ts +++ b/development/social/domain/relation/create/validateData.ts @@ -1,7 +1,7 @@ import type { ValidationSchema } from '@theshelf/validation'; -import validator from '^/integrations/validation'; +import validator from '@comify/common/integrations/validation'; import { requiredIdValidation } from '^/domain/definitions'; diff --git a/development/social/domain/relation/erase/erase.ts b/development/social/domain/relation/erase/erase.ts index 01ce3d10..2e0d4def 100644 --- a/development/social/domain/relation/erase/erase.ts +++ b/development/social/domain/relation/erase/erase.ts @@ -1,6 +1,6 @@ -import database from '^/integrations/database'; -import logger from '^/integrations/logging'; +import database from '@comify/common/integrations/database'; +import logger from '@comify/common/integrations/logging'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/relation/establish/RelationAlreadyExists.ts b/development/social/domain/relation/establish/RelationAlreadyExists.ts index 92a18fe4..3bd98ca2 100644 --- a/development/social/domain/relation/establish/RelationAlreadyExists.ts +++ b/development/social/domain/relation/establish/RelationAlreadyExists.ts @@ -1,5 +1,5 @@ -import { BadRequest } from '^/integrations/errors'; +import { BadRequest } from '@comify/common/integrations/errors'; export default class RelationAlreadyExists extends BadRequest { diff --git a/development/social/domain/relation/establish/establish.ts b/development/social/domain/relation/establish/establish.ts index 568ec1e1..72c649fd 100644 --- a/development/social/domain/relation/establish/establish.ts +++ b/development/social/domain/relation/establish/establish.ts @@ -1,9 +1,9 @@ -import logger from '^/integrations/logging'; +import logger from '@comify/common/integrations/logging'; import type { Requester } from '^/domain/authentication'; import getCreator from '^/domain/creator/getById'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import create from '../create'; import erase from '../erase'; diff --git a/development/social/domain/relation/establish/publish.ts b/development/social/domain/relation/establish/publish.ts index 3eda3abd..cf82092e 100644 --- a/development/social/domain/relation/establish/publish.ts +++ b/development/social/domain/relation/establish/publish.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/relation/establish/subscribe.ts b/development/social/domain/relation/establish/subscribe.ts index 48e36424..87a1c575 100644 --- a/development/social/domain/relation/establish/subscribe.ts +++ b/development/social/domain/relation/establish/subscribe.ts @@ -1,5 +1,5 @@ -import eventBroker from '^/integrations/eventBroker'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { EVENT_CHANNEL } from '../definitions'; import { EVENT_NAME } from './definitions'; diff --git a/development/social/domain/relation/exists/exists.ts b/development/social/domain/relation/exists/exists.ts index 8023a722..4d4c82e0 100644 --- a/development/social/domain/relation/exists/exists.ts +++ b/development/social/domain/relation/exists/exists.ts @@ -1,7 +1,7 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; diff --git a/development/social/domain/relation/explore/explore.ts b/development/social/domain/relation/explore/explore.ts index 520de360..1eba391f 100644 --- a/development/social/domain/relation/explore/explore.ts +++ b/development/social/domain/relation/explore/explore.ts @@ -1,7 +1,7 @@ import type { Requester } from '^/domain/authentication'; import getOtherCreators from '^/domain/creator/getOthers'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { SortOrder } from '../definitions'; import getFollowing from '../getFollowing'; diff --git a/development/social/domain/relation/exploreAggregated/exploreAggregated.ts b/development/social/domain/relation/exploreAggregated/exploreAggregated.ts index d6d9270e..c644274c 100644 --- a/development/social/domain/relation/exploreAggregated/exploreAggregated.ts +++ b/development/social/domain/relation/exploreAggregated/exploreAggregated.ts @@ -2,7 +2,7 @@ import type { Requester } from '^/domain/authentication'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/relation/get/get.ts b/development/social/domain/relation/get/get.ts index 037c05b4..adc0ede6 100644 --- a/development/social/domain/relation/get/get.ts +++ b/development/social/domain/relation/get/get.ts @@ -1,7 +1,7 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/relation/getAggregated/getAggregated.ts b/development/social/domain/relation/getAggregated/getAggregated.ts index 5af6c16a..c25435dd 100644 --- a/development/social/domain/relation/getAggregated/getAggregated.ts +++ b/development/social/domain/relation/getAggregated/getAggregated.ts @@ -1,6 +1,6 @@ import type { Requester } from '^/domain/authentication'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/relation/getFollowers/retrieveData.ts b/development/social/domain/relation/getFollowers/retrieveData.ts index e15ff9ad..bd548456 100644 --- a/development/social/domain/relation/getFollowers/retrieveData.ts +++ b/development/social/domain/relation/getFollowers/retrieveData.ts @@ -1,7 +1,7 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/relation/getFollowersAggregated/getFollowersAggregated.ts b/development/social/domain/relation/getFollowersAggregated/getFollowersAggregated.ts index 03017f8a..ca98f654 100644 --- a/development/social/domain/relation/getFollowersAggregated/getFollowersAggregated.ts +++ b/development/social/domain/relation/getFollowersAggregated/getFollowersAggregated.ts @@ -2,7 +2,7 @@ import type { Requester } from '^/domain/authentication'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/domain/relation/getFollowing/retrieveData.ts b/development/social/domain/relation/getFollowing/retrieveData.ts index 42edd554..66fc9750 100644 --- a/development/social/domain/relation/getFollowing/retrieveData.ts +++ b/development/social/domain/relation/getFollowing/retrieveData.ts @@ -1,7 +1,7 @@ import type { RecordQuery } from '@theshelf/database'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '../definitions'; import type { DataModel } from '../types'; diff --git a/development/social/domain/relation/getFollowingAggregated/getFollowingAggregated.ts b/development/social/domain/relation/getFollowingAggregated/getFollowingAggregated.ts index 0ec87187..b02a7353 100644 --- a/development/social/domain/relation/getFollowingAggregated/getFollowingAggregated.ts +++ b/development/social/domain/relation/getFollowingAggregated/getFollowingAggregated.ts @@ -2,7 +2,7 @@ import type { Requester } from '^/domain/authentication'; import type { Range } from '^/domain/common/validateRange'; import validateRange from '^/domain/common/validateRange'; -import type { Tenant } from '^/domain/tenant'; +import type { Tenant } from '@comify/common/domain/tenant'; import type { AggregatedData } from '../aggregate'; import aggregate from '../aggregate'; diff --git a/development/social/package.json b/development/social/package.json index f2c758b4..148deea1 100644 --- a/development/social/package.json +++ b/development/social/package.json @@ -1,5 +1,5 @@ { - "name": "@concept/social", + "name": "@comify/social", "private": true, "version": "0.0.1", "type": "module", diff --git a/development/social/tsconfig.json b/development/social/tsconfig.json index bc1dd47b..543eea36 100644 --- a/development/social/tsconfig.json +++ b/development/social/tsconfig.json @@ -1,10 +1,16 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "composite": true, + "rootDir": "./", "outDir": "../../artifacts/build/social", "paths": { "^/*": ["./*"], + "@comify/common/*": ["../common/*"] } }, - "include": ["./domain", "./integrations"] + "references": [ + { "path" : "../common" } + ], + "include": ["./domain"] } \ No newline at end of file diff --git a/package.json b/package.json index ee784be2..0ae1e9e5 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "concept", + "name": "comify", "private": true, "version": "0.0.1", "type": "module", @@ -35,6 +35,7 @@ "proxy": "jitar start --env-file=development.env --service=deployment/services/production/proxy.json --http-body-limit=512000" }, "workspaces": [ + "development/common", "development/insights", "development/social", "development/moderation" From a731fbb59a38280b6d0bb92b41ae1fd081288b40 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Sat, 16 May 2026 00:23:35 +0200 Subject: [PATCH 09/14] #480: updated deployment configurations --- deployment/segments/common.bff.json | 3 ++ deployment/segments/common.reads.json | 3 ++ deployment/segments/social.bff.json | 4 +- deployment/segments/social.notification.json | 8 +-- deployment/segments/social.reads.json | 54 +++++++++---------- deployment/segments/social.writes.json | 44 +++++++-------- deployment/services/development/worker.json | 2 + deployment/services/production/bff.json | 18 +++---- .../services/production/insights-app.json | 9 ++++ .../services/production/moderation-app.json | 9 ++++ .../services/production/notification.json | 6 +-- deployment/services/production/reads.json | 14 ++--- deployment/services/production/reads2.json | 14 ++--- deployment/services/production/writes.json | 12 ++--- .../common/components/TenantContainer.tsx | 2 +- 15 files changed, 112 insertions(+), 90 deletions(-) create mode 100644 deployment/segments/common.bff.json create mode 100644 deployment/segments/common.reads.json create mode 100644 deployment/services/production/insights-app.json create mode 100644 deployment/services/production/moderation-app.json diff --git a/deployment/segments/common.bff.json b/deployment/segments/common.bff.json new file mode 100644 index 00000000..d85acbfc --- /dev/null +++ b/deployment/segments/common.bff.json @@ -0,0 +1,3 @@ +{ + "./common/domain/tenant/getByOriginConverted": { "default": { "access": "public" } } +} \ No newline at end of file diff --git a/deployment/segments/common.reads.json b/deployment/segments/common.reads.json new file mode 100644 index 00000000..d2157492 --- /dev/null +++ b/deployment/segments/common.reads.json @@ -0,0 +1,3 @@ +{ + "./common/domain/tenant/getByOrigin": { "default": { "access": "protected" }, "TenantNotFound": { } } +} \ No newline at end of file diff --git a/deployment/segments/social.bff.json b/deployment/segments/social.bff.json index b74176c3..1b61bd4f 100644 --- a/deployment/segments/social.bff.json +++ b/deployment/segments/social.bff.json @@ -42,7 +42,5 @@ "./social/domain/relation/establish": { "default": { "access": "public" }, "subscribe": { "access": "private" } }, "./social/domain/relation/getAggregated": { "default": { "access": "public" } }, "./social/domain/relation/getFollowersAggregated": { "default": { "access": "public" } }, - "./social/domain/relation/getFollowingAggregated": { "default": { "access": "public" } }, - - "./common/domain/tenant/getByOriginConverted": { "default": { "access": "public" } } + "./social/domain/relation/getFollowingAggregated": { "default": { "access": "public" } } } \ No newline at end of file diff --git a/deployment/segments/social.notification.json b/deployment/segments/social.notification.json index 2715950d..02806337 100644 --- a/deployment/segments/social.notification.json +++ b/deployment/segments/social.notification.json @@ -1,6 +1,6 @@ { - " ./social/domain/notification/create": { "default": { "access": "protected" } }, - " ./social/domain/notification/getByPostId": { "default": { "access": "protected" } }, - " ./social/domain/notification/getRecent": { "default": { "access": "protected" } }, - " ./social/domain/notification/remove": { "default": { "access": "protected" } } + "./social/domain/notification/create": { "default": { "access": "protected" } }, + "./social/domain/notification/getByPostId": { "default": { "access": "protected" } }, + "./social/domain/notification/getRecent": { "default": { "access": "protected" } }, + "./social/domain/notification/remove": { "default": { "access": "protected" } } } \ No newline at end of file diff --git a/deployment/segments/social.reads.json b/deployment/segments/social.reads.json index b6c9ac06..865e5b94 100644 --- a/deployment/segments/social.reads.json +++ b/deployment/segments/social.reads.json @@ -1,38 +1,36 @@ { - " ./social/domain/comic/getById": { "default": { "access": "protected" } }, + "./social/domain/comic/getById": { "default": { "access": "protected" } }, - " ./social/domain/comment/getById": { "default": { "access": "protected" } }, + "./social/domain/comment/getById": { "default": { "access": "protected" } }, - " ./social/domain/creator/generateNickname/retrieveByNickname": { "default": { "access": "protected" } }, - " ./social/domain/creator/generateNickname/retrieveByStartNickname": { "default": { "access": "protected" } }, - " ./social/domain/creator/getByEmail": { "default": { "access": "protected" } }, - " ./social/domain/creator/getById": { "default": { "access": "protected" } }, - " ./social/domain/creator/getByNickname": { "default": { "access": "protected" } }, - " ./social/domain/creator/getMe": { "default": { "access": "protected" } }, - " ./social/domain/creator/getOthers": { "default": { "access": "private" }}, - " ./social/domain/creator/updateNickname/retrieveByNickname": { "default": { "access": "protected" } }, + "./social/domain/creator/generateNickname/retrieveByNickname": { "default": { "access": "protected" } }, + "./social/domain/creator/generateNickname/retrieveByStartNickname": { "default": { "access": "protected" } }, + "./social/domain/creator/getByEmail": { "default": { "access": "protected" } }, + "./social/domain/creator/getById": { "default": { "access": "protected" } }, + "./social/domain/creator/getByNickname": { "default": { "access": "protected" } }, + "./social/domain/creator/getMe": { "default": { "access": "protected" } }, + "./social/domain/creator/getOthers": { "default": { "access": "private" }}, + "./social/domain/creator/updateNickname/retrieveByNickname": { "default": { "access": "protected" } }, - " ./social/domain/creator.metrics/getByCreator": { "default": { "access": "protected" } }, + "./social/domain/creator.metrics/getByCreator": { "default": { "access": "protected" } }, - " ./social/domain/image/getById": { "default": { "access": "protected" } }, + "./social/domain/image/getById": { "default": { "access": "protected" } }, - " ./social/domain/post/explore": { "default": { "access": "protected" } }, - " ./social/domain/post/getByCreator": { "default": { "access": "protected" } }, - " ./social/domain/post/getByFollowing": { "default": { "access": "protected" } }, - " ./social/domain/post/getById": { "default": { "access": "protected" } }, - " ./social/domain/post/getByParent": { "default": { "access": "protected" } }, - " ./social/domain/post/getRecommended": { "default": { "access": "protected" } }, + "./social/domain/post/explore": { "default": { "access": "protected" } }, + "./social/domain/post/getByCreator": { "default": { "access": "protected" } }, + "./social/domain/post/getByFollowing": { "default": { "access": "protected" } }, + "./social/domain/post/getById": { "default": { "access": "protected" } }, + "./social/domain/post/getByParent": { "default": { "access": "protected" } }, + "./social/domain/post/getRecommended": { "default": { "access": "protected" } }, - " ./social/domain/post.metrics/getByPost": { "default": { "access": "protected" } }, + "./social/domain/post.metrics/getByPost": { "default": { "access": "protected" } }, - " ./social/domain/rating/exists": { "default": { "access": "protected" } }, - " ./social/domain/rating/toggle/getData": { "default": { "access": "protected" } }, + "./social/domain/rating/exists": { "default": { "access": "protected" } }, + "./social/domain/rating/toggle/getData": { "default": { "access": "protected" } }, - " ./social/domain/relation/exists": { "default": { "access": "protected" } }, - " ./social/domain/relation/explore": { "default": { "access": "protected" } }, - " ./social/domain/relation/get": { "default": { "access": "protected" } }, - " ./social/domain/relation/getFollowers": { "default": { "access": "protected" } }, - " ./social/domain/relation/getFollowing": { "default": { "access": "protected" } }, - - " ./common/domain/tenant/getByOrigin": { "default": { "access": "protected" }, "TenantNotFound": { } } + "./social/domain/relation/exists": { "default": { "access": "protected" } }, + "./social/domain/relation/explore": { "default": { "access": "protected" } }, + "./social/domain/relation/get": { "default": { "access": "protected" } }, + "./social/domain/relation/getFollowers": { "default": { "access": "protected" } }, + "./social/domain/relation/getFollowing": { "default": { "access": "protected" } } } \ No newline at end of file diff --git a/deployment/segments/social.writes.json b/deployment/segments/social.writes.json index 1fe3a9b0..37c8b288 100644 --- a/deployment/segments/social.writes.json +++ b/deployment/segments/social.writes.json @@ -1,32 +1,32 @@ { - " ./social/domain/comic/create/insertData": { "default": { "access": "protected" } }, - " ./social/domain/comic/erase": { "default": { "access": "protected" } }, + "./social/domain/comic/create/insertData": { "default": { "access": "protected" } }, + "./social/domain/comic/erase": { "default": { "access": "protected" } }, - " ./social/domain/comment/create": { "default": { "access": "protected" } }, - " ./social/domain/comment/erase": { "default": { "access": "protected" } }, + "./social/domain/comment/create": { "default": { "access": "protected" } }, + "./social/domain/comment/erase": { "default": { "access": "protected" } }, - " ./social/domain/creator/create": { "default": { "access": "protected" } }, - " ./social/domain/creator/erase": { "default": { "access": "protected" } }, - " ./social/domain/creator/update": { "default": { "access": "protected" } }, + "./social/domain/creator/create": { "default": { "access": "protected" } }, + "./social/domain/creator/erase": { "default": { "access": "protected" } }, + "./social/domain/creator/update": { "default": { "access": "protected" } }, - " ./social/domain/creator.metrics/create/insertData": { "default": { "access": "protected" } }, - " ./social/domain/creator.metrics/update": { "default": { "access": "protected" } }, + "./social/domain/creator.metrics/create/insertData": { "default": { "access": "protected" } }, + "./social/domain/creator.metrics/update": { "default": { "access": "protected" } }, - " ./social/domain/image/erase": { "default": { "access": "protected" } }, - " ./social/domain/image/save": { "default": { "access": "protected" } }, + "./social/domain/image/erase": { "default": { "access": "protected" } }, + "./social/domain/image/save": { "default": { "access": "protected" } }, - " ./social/domain/post/create/insertData": { "default": { "access": "protected" } }, - " ./social/domain/post/erase": { "default": { "access": "protected" } }, - " ./social/domain/post/remove/deleteData": { "default": { "access": "protected" }}, - " ./social/domain/post/remove/undeleteData": { "default": { "access": "protected" }}, - " ./social/domain/post/update": { "default": { "access": "protected" } }, + "./social/domain/post/create/insertData": { "default": { "access": "protected" } }, + "./social/domain/post/erase": { "default": { "access": "protected" } }, + "./social/domain/post/remove/deleteData": { "default": { "access": "protected" }}, + "./social/domain/post/remove/undeleteData": { "default": { "access": "protected" }}, + "./social/domain/post/update": { "default": { "access": "protected" } }, - " ./social/domain/post.metrics/create/insertData": { "default": { "access": "protected" } }, - " ./social/domain/post.metrics/update": { "default": { "access": "protected" } }, + "./social/domain/post.metrics/create/insertData": { "default": { "access": "protected" } }, + "./social/domain/post.metrics/update": { "default": { "access": "protected" } }, - " ./social/domain/rating/create": { "default": { "access": "protected" } }, - " ./social/domain/rating/erase": { "default": { "access": "protected" } }, + "./social/domain/rating/create": { "default": { "access": "protected" } }, + "./social/domain/rating/erase": { "default": { "access": "protected" } }, - " ./social/domain/relation/create": { "default": { "access": "protected" } }, - " ./social/domain/relation/erase": { "default": { "access": "protected" } } + "./social/domain/relation/create": { "default": { "access": "protected" } }, + "./social/domain/relation/erase": { "default": { "access": "protected" } } } \ No newline at end of file diff --git a/deployment/services/development/worker.json b/deployment/services/development/worker.json index 2365eca7..a598ba4f 100644 --- a/deployment/services/development/worker.json +++ b/deployment/services/development/worker.json @@ -25,6 +25,8 @@ "worker": { "segments": [ + "common.bff", + "common.reads", "social.bff", "social.notification", "social.reads", diff --git a/deployment/services/production/bff.json b/deployment/services/production/bff.json index eca554f2..0c09bd56 100644 --- a/deployment/services/production/bff.json +++ b/deployment/services/production/bff.json @@ -1,25 +1,25 @@ { "url": "http://127.0.0.1:4000", "setUp": [ - "./social/integrations/authentication/setUp", - "./social/integrations/eventBroker/setUp" + "./common/integrations/authentication/setUp", + "./common/integrations/eventBroker/setUp" ], "tearDown": [ - "./social/integrations/authentication/tearDown", - "./social/integrations/eventBroker/tearDown" + "./common/integrations/authentication/tearDown", + "./common/integrations/eventBroker/tearDown" ], "healthChecks": [ - "./social/integrations/eventBroker/healthCheck" + "./common/integrations/eventBroker/healthCheck" ], "middleware": [ - "./social/integrations/authentication/originMiddleware", - "./social/integrations/authentication/authenticationMiddleware", - "./social/integrations/tenancy/tenantMiddleware" + "./common/integrations/authentication/originMiddleware", + "./common/integrations/authentication/authenticationMiddleware", + "./common/integrations/tenancy/tenantMiddleware" ], "worker": { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["social.bff"] + "segments": ["common.bff", "social.bff"] } } \ No newline at end of file diff --git a/deployment/services/production/insights-app.json b/deployment/services/production/insights-app.json new file mode 100644 index 00000000..5f262b45 --- /dev/null +++ b/deployment/services/production/insights-app.json @@ -0,0 +1,9 @@ +{ + "url": "http://127.0.0.1:1000", + "repository": + { + "serveIndexOnNotFound": true, + "assetRoot": "./insights/app", + "assets": ["index.html", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] + } +} \ No newline at end of file diff --git a/deployment/services/production/moderation-app.json b/deployment/services/production/moderation-app.json new file mode 100644 index 00000000..a555f21d --- /dev/null +++ b/deployment/services/production/moderation-app.json @@ -0,0 +1,9 @@ +{ + "url": "http://127.0.0.1:1000", + "repository": + { + "serveIndexOnNotFound": true, + "assetRoot": "./moderation/app", + "assets": ["index.html", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] + } +} \ No newline at end of file diff --git a/deployment/services/production/notification.json b/deployment/services/production/notification.json index 28ecf30c..e48fb644 100644 --- a/deployment/services/production/notification.json +++ b/deployment/services/production/notification.json @@ -1,13 +1,13 @@ { "url": "http://127.0.0.1:4001", "setUp": [ - "./social/integrations/database/setUp" + "./common/integrations/database/setUp" ], "tearDown": [ - "./social/integrations/database/tearDown" + "./common/integrations/database/tearDown" ], "healthChecks": [ - "./social/integrations/database/healthCheck" + "./common/integrations/database/healthCheck" ], "worker": { diff --git a/deployment/services/production/reads.json b/deployment/services/production/reads.json index ebd3ce58..64e5f547 100644 --- a/deployment/services/production/reads.json +++ b/deployment/services/production/reads.json @@ -1,21 +1,21 @@ { "url": "http://127.0.0.1:4002", "setUp": [ - "./social/integrations/database/setUp", - "./social/integrations/fileStore/setUp" + "./common/integrations/database/setUp", + "./common/integrations/fileStore/setUp" ], "tearDown": [ - "./social/integrations/database/tearDown", - "./social/integrations/fileStore/tearDown" + "./common/integrations/database/tearDown", + "./common/integrations/fileStore/tearDown" ], "healthChecks": [ - "./social/integrations/database/healthCheck", - "./social/integrations/fileStore/healthCheck" + "./common/integrations/database/healthCheck", + "./common/integrations/fileStore/healthCheck" ], "worker": { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["social.reads"] + "segments": ["common.reads", "social.reads"] } } \ No newline at end of file diff --git a/deployment/services/production/reads2.json b/deployment/services/production/reads2.json index b0920889..6fa08551 100644 --- a/deployment/services/production/reads2.json +++ b/deployment/services/production/reads2.json @@ -1,21 +1,21 @@ { "url": "http://127.0.0.1:4003", "setUp": [ - "./social/integrations/database/setUp", - "./social/integrations/fileStore/setUp" + "./common/integrations/database/setUp", + "./common/integrations/fileStore/setUp" ], "tearDown": [ - "./social/integrations/database/tearDown", - "./social/integrations/fileStore/tearDown" + "./common/integrations/database/tearDown", + "./common/integrations/fileStore/tearDown" ], "healthChecks": [ - "./social/integrations/database/healthCheck", - "./social/integrations/fileStore/healthCheck" + "./common/integrations/database/healthCheck", + "./common/integrations/fileStore/healthCheck" ], "worker": { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["social.reads"] + "segments": ["common.reads", "social.reads"] } } \ No newline at end of file diff --git a/deployment/services/production/writes.json b/deployment/services/production/writes.json index 7ab24d6e..66c7bd18 100644 --- a/deployment/services/production/writes.json +++ b/deployment/services/production/writes.json @@ -1,16 +1,16 @@ { "url": "http://127.0.0.1:4004", "setUp": [ - "./social/integrations/database/setUp", - "./social/integrations/fileStore/setUp" + "./common/integrations/database/setUp", + "./common/integrations/fileStore/setUp" ], "tearDown": [ - "./social/integrations/database/tearDown", - "./social/integrations/fileStore/tearDown" + "./common/integrations/database/tearDown", + "./common/integrations/fileStore/tearDown" ], "healthChecks": [ - "./social/integrations/database/healthCheck", - "./social/integrations/fileStore/healthCheck" + "./common/integrations/database/healthCheck", + "./common/integrations/fileStore/healthCheck" ], "worker": { diff --git a/development/social/app/components/common/components/TenantContainer.tsx b/development/social/app/components/common/components/TenantContainer.tsx index 4e54256f..9ef0a558 100644 --- a/development/social/app/components/common/components/TenantContainer.tsx +++ b/development/social/app/components/common/components/TenantContainer.tsx @@ -17,7 +17,7 @@ export default function Component({ children }: Props) const link = document.createElement('link'); link.setAttribute('rel', 'stylesheet'); - link.setAttribute('href', `/assets/${tenant.id}.css`); + link.setAttribute('href', `/${tenant.id}.css`); document.head.appendChild(link); From 66962a59241036da3f591561cd6fc762b649a494 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Tue, 19 May 2026 10:52:17 +0200 Subject: [PATCH 10/14] #480: updated tests --- .../domain/tenant/fixtures/databases.fixtures.ts | 0 .../{social => common}/domain/tenant/fixtures/index.ts | 0 .../domain/tenant/fixtures/records.fixtures.ts | 0 .../domain/tenant/fixtures/values.fixtures.ts | 0 .../{social => common}/domain/tenant/getByOrigin.spec.ts | 0 .../domain/tenant/getByOriginConverted.spec.ts | 0 testing/common/tsconfig.json | 8 ++++++++ testing/insights/tsconfig.json | 3 ++- testing/moderation/tsconfig.json | 3 ++- .../domain/authentication/fixtures/databases.fixture.ts | 2 +- .../domain/authentication/fixtures/fileStores.fixture.ts | 2 +- .../domain/authentication/fixtures/httpClients.fixture.ts | 2 +- .../domain/authentication/fixtures/tenants.fixture.ts | 2 +- testing/social/domain/authentication/login.spec.ts | 6 +++--- testing/social/domain/comic/create.spec.ts | 4 ++-- testing/social/domain/comic/fixtures/databases.fixture.ts | 2 +- .../social/domain/comic/fixtures/fileStores.fixture.ts | 2 +- testing/social/domain/comment/create.spec.ts | 2 +- .../social/domain/comment/fixtures/databases.fixture.ts | 2 +- .../social/domain/creator/fixtures/databases.fixture.ts | 2 +- testing/social/domain/creator/fixtures/tenants.fixture.ts | 2 +- testing/social/domain/creator/updateFullName.spec.ts | 2 +- testing/social/domain/creator/updateNickname.spec.ts | 2 +- testing/social/domain/image/create.spec.ts | 4 ++-- testing/social/domain/image/download.spec.ts | 4 ++-- testing/social/domain/image/fixtures/databases.fixture.ts | 2 +- .../social/domain/image/fixtures/fileStores.fixture.ts | 2 +- .../social/domain/image/fixtures/httpClients.fixture.ts | 2 +- testing/social/domain/notification/create.spec.ts | 2 +- .../domain/notification/fixtures/databases.fixture.ts | 2 +- .../domain/notification/fixtures/fileStores.fixture.ts | 2 +- .../domain/notification/fixtures/tenants.fixture.ts | 2 +- .../domain/notification/getRecentAggregated.spec.ts | 4 ++-- .../domain/notification/removePostNotifications.spec.ts | 2 +- testing/social/domain/post/createWithComic.spec.ts | 6 +++--- testing/social/domain/post/fixtures/databases.fixture.ts | 2 +- testing/social/domain/post/fixtures/fileStores.fixture.ts | 2 +- testing/social/domain/post/fixtures/tenants.fixture.ts | 2 +- .../social/domain/post/getByFollowingAggregated.spec.ts | 4 ++-- .../social/domain/post/getRecommendedAggregated.spec.ts | 4 ++-- testing/social/domain/post/remove.spec.ts | 4 ++-- .../social/domain/rating/fixtures/databases.fixture.ts | 2 +- testing/social/domain/rating/fixtures/tenants.fixture.ts | 2 +- testing/social/domain/rating/toggle.spec.ts | 4 ++-- testing/social/domain/relation/establish.spec.ts | 4 ++-- testing/social/domain/relation/exploreAggregated.spec.ts | 2 +- .../social/domain/relation/fixtures/databases.fixture.ts | 2 +- .../social/domain/relation/fixtures/tenants.fixture.ts | 2 +- .../social/domain/relation/getFollowersAggregated.spec.ts | 2 +- .../social/domain/relation/getFollowingAggregated.spec.ts | 2 +- testing/social/tsconfig.json | 1 + 51 files changed, 67 insertions(+), 56 deletions(-) rename testing/{social => common}/domain/tenant/fixtures/databases.fixtures.ts (100%) rename testing/{social => common}/domain/tenant/fixtures/index.ts (100%) rename testing/{social => common}/domain/tenant/fixtures/records.fixtures.ts (100%) rename testing/{social => common}/domain/tenant/fixtures/values.fixtures.ts (100%) rename testing/{social => common}/domain/tenant/getByOrigin.spec.ts (100%) rename testing/{social => common}/domain/tenant/getByOriginConverted.spec.ts (100%) create mode 100644 testing/common/tsconfig.json diff --git a/testing/social/domain/tenant/fixtures/databases.fixtures.ts b/testing/common/domain/tenant/fixtures/databases.fixtures.ts similarity index 100% rename from testing/social/domain/tenant/fixtures/databases.fixtures.ts rename to testing/common/domain/tenant/fixtures/databases.fixtures.ts diff --git a/testing/social/domain/tenant/fixtures/index.ts b/testing/common/domain/tenant/fixtures/index.ts similarity index 100% rename from testing/social/domain/tenant/fixtures/index.ts rename to testing/common/domain/tenant/fixtures/index.ts diff --git a/testing/social/domain/tenant/fixtures/records.fixtures.ts b/testing/common/domain/tenant/fixtures/records.fixtures.ts similarity index 100% rename from testing/social/domain/tenant/fixtures/records.fixtures.ts rename to testing/common/domain/tenant/fixtures/records.fixtures.ts diff --git a/testing/social/domain/tenant/fixtures/values.fixtures.ts b/testing/common/domain/tenant/fixtures/values.fixtures.ts similarity index 100% rename from testing/social/domain/tenant/fixtures/values.fixtures.ts rename to testing/common/domain/tenant/fixtures/values.fixtures.ts diff --git a/testing/social/domain/tenant/getByOrigin.spec.ts b/testing/common/domain/tenant/getByOrigin.spec.ts similarity index 100% rename from testing/social/domain/tenant/getByOrigin.spec.ts rename to testing/common/domain/tenant/getByOrigin.spec.ts diff --git a/testing/social/domain/tenant/getByOriginConverted.spec.ts b/testing/common/domain/tenant/getByOriginConverted.spec.ts similarity index 100% rename from testing/social/domain/tenant/getByOriginConverted.spec.ts rename to testing/common/domain/tenant/getByOriginConverted.spec.ts diff --git a/testing/common/tsconfig.json b/testing/common/tsconfig.json new file mode 100644 index 00000000..8747e78c --- /dev/null +++ b/testing/common/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "paths": { + "^/*": ["../../development/common/*"] + } + } +} \ No newline at end of file diff --git a/testing/insights/tsconfig.json b/testing/insights/tsconfig.json index faa2835d..c98f8637 100644 --- a/testing/insights/tsconfig.json +++ b/testing/insights/tsconfig.json @@ -2,7 +2,8 @@ "extends": "../tsconfig.json", "compilerOptions": { "paths": { - "^/*": ["../../development/social/*"], + "^/*": ["../../development/insights/*"], + "@comify/common/*": ["../../development/common/*"] } } } \ No newline at end of file diff --git a/testing/moderation/tsconfig.json b/testing/moderation/tsconfig.json index faa2835d..958dda8c 100644 --- a/testing/moderation/tsconfig.json +++ b/testing/moderation/tsconfig.json @@ -2,7 +2,8 @@ "extends": "../tsconfig.json", "compilerOptions": { "paths": { - "^/*": ["../../development/social/*"], + "^/*": ["../../development/moderation/*"], + "@comify/common/*": ["../../development/common/*"] } } } \ No newline at end of file diff --git a/testing/social/domain/authentication/fixtures/databases.fixture.ts b/testing/social/domain/authentication/fixtures/databases.fixture.ts index 3ec6de7f..448ad423 100644 --- a/testing/social/domain/authentication/fixtures/databases.fixture.ts +++ b/testing/social/domain/authentication/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import database, { driver } from '^/integrations/database'; +import database, { driver } from '@comify/common/integrations/database'; import { RECORD_TYPE as CREATOR_RECORD_TYPE } from '^/domain/creator'; diff --git a/testing/social/domain/authentication/fixtures/fileStores.fixture.ts b/testing/social/domain/authentication/fixtures/fileStores.fixture.ts index 01badd4f..db8ede55 100644 --- a/testing/social/domain/authentication/fixtures/fileStores.fixture.ts +++ b/testing/social/domain/authentication/fixtures/fileStores.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/filestore'; -import { driver } from '^/integrations/fileStore'; +import { driver } from '@comify/common/integrations/fileStore'; async function empty(): Promise { diff --git a/testing/social/domain/authentication/fixtures/httpClients.fixture.ts b/testing/social/domain/authentication/fixtures/httpClients.fixture.ts index b588818c..ec9fc648 100644 --- a/testing/social/domain/authentication/fixtures/httpClients.fixture.ts +++ b/testing/social/domain/authentication/fixtures/httpClients.fixture.ts @@ -2,7 +2,7 @@ import { HttpMethods } from '@theshelf/http'; import type { MappedDriver } from '@theshelf/http'; -import { driver } from '^/integrations/http'; +import { driver } from '@comify/common/integrations/http'; import { IMAGES } from './images.fixture'; import { VALUES } from './values.fixture'; diff --git a/testing/social/domain/authentication/fixtures/tenants.fixture.ts b/testing/social/domain/authentication/fixtures/tenants.fixture.ts index ea725060..9a322b6c 100644 --- a/testing/social/domain/authentication/fixtures/tenants.fixture.ts +++ b/testing/social/domain/authentication/fixtures/tenants.fixture.ts @@ -1,4 +1,4 @@ -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export const TENANTS = { default: tenant }; diff --git a/testing/social/domain/authentication/login.spec.ts b/testing/social/domain/authentication/login.spec.ts index 602df17e..6367a1ff 100644 --- a/testing/social/domain/authentication/login.spec.ts +++ b/testing/social/domain/authentication/login.spec.ts @@ -1,9 +1,9 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import eventBroker from '^/integrations/eventBroker'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/eventBroker'; +import fileStore from '@comify/common/integrations/fileStore'; import login from '^/domain/authentication/login'; import { TooManySimilarNicknames } from '^/domain/creator/generateNickname'; diff --git a/testing/social/domain/comic/create.spec.ts b/testing/social/domain/comic/create.spec.ts index 642ae9ef..5ab6c4c9 100644 --- a/testing/social/domain/comic/create.spec.ts +++ b/testing/social/domain/comic/create.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import fileStore from '@comify/common/integrations/fileStore'; import create from '^/domain/comic/create'; import { RECORD_TYPE as COMIC_RECORD_TYPE } from '^/domain/comic/definitions'; diff --git a/testing/social/domain/comic/fixtures/databases.fixture.ts b/testing/social/domain/comic/fixtures/databases.fixture.ts index 3c27b6d1..4724233f 100644 --- a/testing/social/domain/comic/fixtures/databases.fixture.ts +++ b/testing/social/domain/comic/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import { driver } from '^/integrations/database'; +import { driver } from '@comify/common/integrations/database'; async function empty(): Promise { diff --git a/testing/social/domain/comic/fixtures/fileStores.fixture.ts b/testing/social/domain/comic/fixtures/fileStores.fixture.ts index 01badd4f..db8ede55 100644 --- a/testing/social/domain/comic/fixtures/fileStores.fixture.ts +++ b/testing/social/domain/comic/fixtures/fileStores.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/filestore'; -import { driver } from '^/integrations/fileStore'; +import { driver } from '@comify/common/integrations/fileStore'; async function empty(): Promise { diff --git a/testing/social/domain/comment/create.spec.ts b/testing/social/domain/comment/create.spec.ts index d3ad91f6..e4645169 100644 --- a/testing/social/domain/comment/create.spec.ts +++ b/testing/social/domain/comment/create.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE } from '^/domain/comment'; import create, { InvalidComment } from '^/domain/comment/create'; diff --git a/testing/social/domain/comment/fixtures/databases.fixture.ts b/testing/social/domain/comment/fixtures/databases.fixture.ts index 3c27b6d1..4724233f 100644 --- a/testing/social/domain/comment/fixtures/databases.fixture.ts +++ b/testing/social/domain/comment/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import { driver } from '^/integrations/database'; +import { driver } from '@comify/common/integrations/database'; async function empty(): Promise { diff --git a/testing/social/domain/creator/fixtures/databases.fixture.ts b/testing/social/domain/creator/fixtures/databases.fixture.ts index 8224d6a9..19998a3b 100644 --- a/testing/social/domain/creator/fixtures/databases.fixture.ts +++ b/testing/social/domain/creator/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import database, { driver } from '^/integrations/database'; +import database, { driver } from '@comify/common/integrations/database'; import { RECORD_TYPE as CREATOR_RECORD_TYPE } from '^/domain/creator'; diff --git a/testing/social/domain/creator/fixtures/tenants.fixture.ts b/testing/social/domain/creator/fixtures/tenants.fixture.ts index ea725060..9a322b6c 100644 --- a/testing/social/domain/creator/fixtures/tenants.fixture.ts +++ b/testing/social/domain/creator/fixtures/tenants.fixture.ts @@ -1,4 +1,4 @@ -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export const TENANTS = { default: tenant }; diff --git a/testing/social/domain/creator/updateFullName.spec.ts b/testing/social/domain/creator/updateFullName.spec.ts index b5c0d112..0a472c0e 100644 --- a/testing/social/domain/creator/updateFullName.spec.ts +++ b/testing/social/domain/creator/updateFullName.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE as CREATOR_RECORD_TYPE } from '^/domain/creator'; import updateFullName, { InvalidFullName } from '^/domain/creator/updateFullName'; diff --git a/testing/social/domain/creator/updateNickname.spec.ts b/testing/social/domain/creator/updateNickname.spec.ts index 8321d4f9..1b33df6c 100644 --- a/testing/social/domain/creator/updateNickname.spec.ts +++ b/testing/social/domain/creator/updateNickname.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { RECORD_TYPE as CREATOR_RECORD_TYPE } from '^/domain/creator'; import updateNickname, { NicknameAlreadyExists } from '^/domain/creator/updateNickname'; diff --git a/testing/social/domain/image/create.spec.ts b/testing/social/domain/image/create.spec.ts index 54e86665..371dc72c 100644 --- a/testing/social/domain/image/create.spec.ts +++ b/testing/social/domain/image/create.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import fileStore from '@comify/common/integrations/fileStore'; import { RECORD_TYPE } from '^/domain/image'; import create, { InvalidDataURL } from '^/domain/image/create'; diff --git a/testing/social/domain/image/download.spec.ts b/testing/social/domain/image/download.spec.ts index a83f641d..ca24d637 100644 --- a/testing/social/domain/image/download.spec.ts +++ b/testing/social/domain/image/download.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import fileStore from '@comify/common/integrations/fileStore'; import { RECORD_TYPE } from '^/domain/image'; import download, { ImageNotDownloaded } from '^/domain/image/download'; diff --git a/testing/social/domain/image/fixtures/databases.fixture.ts b/testing/social/domain/image/fixtures/databases.fixture.ts index 0462361f..ad1d96b8 100644 --- a/testing/social/domain/image/fixtures/databases.fixture.ts +++ b/testing/social/domain/image/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import { driver } from '^/integrations/database'; +import { driver } from '@comify/common/integrations/database'; async function empty() { diff --git a/testing/social/domain/image/fixtures/fileStores.fixture.ts b/testing/social/domain/image/fixtures/fileStores.fixture.ts index 01badd4f..db8ede55 100644 --- a/testing/social/domain/image/fixtures/fileStores.fixture.ts +++ b/testing/social/domain/image/fixtures/fileStores.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/filestore'; -import { driver } from '^/integrations/fileStore'; +import { driver } from '@comify/common/integrations/fileStore'; async function empty(): Promise { diff --git a/testing/social/domain/image/fixtures/httpClients.fixture.ts b/testing/social/domain/image/fixtures/httpClients.fixture.ts index 81943854..41398a50 100644 --- a/testing/social/domain/image/fixtures/httpClients.fixture.ts +++ b/testing/social/domain/image/fixtures/httpClients.fixture.ts @@ -2,7 +2,7 @@ import { HttpMethods } from '@theshelf/http'; import type { MappedDriver } from '@theshelf/http'; -import { driver } from '^/integrations/http'; +import { driver } from '@comify/common/integrations/http'; import { RESPONSES } from './responses.fixture'; import { URLS } from './urls.fixture'; diff --git a/testing/social/domain/notification/create.spec.ts b/testing/social/domain/notification/create.spec.ts index 4afb8791..52af3bdb 100644 --- a/testing/social/domain/notification/create.spec.ts +++ b/testing/social/domain/notification/create.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import type { DataModel} from '^/domain/notification'; import { RECORD_TYPE as NOTIFICATION_RECORD_TYPE, Types } from '^/domain/notification'; diff --git a/testing/social/domain/notification/fixtures/databases.fixture.ts b/testing/social/domain/notification/fixtures/databases.fixture.ts index acec49a8..2cc49d6b 100644 --- a/testing/social/domain/notification/fixtures/databases.fixture.ts +++ b/testing/social/domain/notification/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import database, { driver } from '^/integrations/database'; +import database, { driver } from '@comify/common/integrations/database'; import { RECORD_TYPE as COMIC_RECORD_TYPE } from '^/domain/comic'; import { RECORD_TYPE as CREATOR_RECORD_TYPE } from '^/domain/creator'; diff --git a/testing/social/domain/notification/fixtures/fileStores.fixture.ts b/testing/social/domain/notification/fixtures/fileStores.fixture.ts index 73785195..1a5eadb7 100644 --- a/testing/social/domain/notification/fixtures/fileStores.fixture.ts +++ b/testing/social/domain/notification/fixtures/fileStores.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/filestore'; -import fileStore, { driver } from '^/integrations/fileStore'; +import fileStore, { driver } from '@comify/common/integrations/fileStore'; import { FILES } from './files.fixture'; import { VALUES } from './values.fixture'; diff --git a/testing/social/domain/notification/fixtures/tenants.fixture.ts b/testing/social/domain/notification/fixtures/tenants.fixture.ts index ea725060..9a322b6c 100644 --- a/testing/social/domain/notification/fixtures/tenants.fixture.ts +++ b/testing/social/domain/notification/fixtures/tenants.fixture.ts @@ -1,4 +1,4 @@ -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export const TENANTS = { default: tenant }; diff --git a/testing/social/domain/notification/getRecentAggregated.spec.ts b/testing/social/domain/notification/getRecentAggregated.spec.ts index 9e57304d..17bb20c6 100644 --- a/testing/social/domain/notification/getRecentAggregated.spec.ts +++ b/testing/social/domain/notification/getRecentAggregated.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import fileStore from '@comify/common/integrations/fileStore'; import { Types } from '^/domain/notification'; import getRecentAggregated from '^/domain/notification/getRecentAggregated'; diff --git a/testing/social/domain/notification/removePostNotifications.spec.ts b/testing/social/domain/notification/removePostNotifications.spec.ts index d3d4a780..5495b3cc 100644 --- a/testing/social/domain/notification/removePostNotifications.spec.ts +++ b/testing/social/domain/notification/removePostNotifications.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import getByPostId from '^/domain/notification/getByPostId'; import removedPost from '^/domain/notification/notify/removedPost'; diff --git a/testing/social/domain/post/createWithComic.spec.ts b/testing/social/domain/post/createWithComic.spec.ts index 1a795c8c..882e2870 100644 --- a/testing/social/domain/post/createWithComic.spec.ts +++ b/testing/social/domain/post/createWithComic.spec.ts @@ -1,9 +1,9 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import eventBroker from '^/integrations/eventBroker'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/eventBroker'; +import fileStore from '@comify/common/integrations/fileStore'; import { RECORD_TYPE as POST_RECORD_TYPE } from '^/domain/post'; import createWithComic from '^/domain/post/createWithComic'; diff --git a/testing/social/domain/post/fixtures/databases.fixture.ts b/testing/social/domain/post/fixtures/databases.fixture.ts index 3131fac2..e03e51a0 100644 --- a/testing/social/domain/post/fixtures/databases.fixture.ts +++ b/testing/social/domain/post/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import database, { driver } from '^/integrations/database'; +import database, { driver } from '@comify/common/integrations/database'; import { RECORD_TYPE as COMIC_RECORD_TYPE } from '^/domain/comic'; import { RECORD_TYPE as CREATOR_RECORD_TYPE } from '^/domain/creator'; diff --git a/testing/social/domain/post/fixtures/fileStores.fixture.ts b/testing/social/domain/post/fixtures/fileStores.fixture.ts index 5d32f5fd..3e590357 100644 --- a/testing/social/domain/post/fixtures/fileStores.fixture.ts +++ b/testing/social/domain/post/fixtures/fileStores.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/filestore'; -import fileStore, { driver } from '^/integrations/fileStore'; +import fileStore, { driver } from '@comify/common/integrations/fileStore'; import { FILES } from './files.fixture'; import { VALUES } from './values.fixture'; diff --git a/testing/social/domain/post/fixtures/tenants.fixture.ts b/testing/social/domain/post/fixtures/tenants.fixture.ts index ea725060..9a322b6c 100644 --- a/testing/social/domain/post/fixtures/tenants.fixture.ts +++ b/testing/social/domain/post/fixtures/tenants.fixture.ts @@ -1,4 +1,4 @@ -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export const TENANTS = { default: tenant }; diff --git a/testing/social/domain/post/getByFollowingAggregated.spec.ts b/testing/social/domain/post/getByFollowingAggregated.spec.ts index 0e2ee438..e00b0a60 100644 --- a/testing/social/domain/post/getByFollowingAggregated.spec.ts +++ b/testing/social/domain/post/getByFollowingAggregated.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import fileStore from '@comify/common/integrations/fileStore'; import getByFollowingAggregated from '^/domain/post/getByFollowingAggregated'; diff --git a/testing/social/domain/post/getRecommendedAggregated.spec.ts b/testing/social/domain/post/getRecommendedAggregated.spec.ts index 8275b3d0..abddd9ea 100644 --- a/testing/social/domain/post/getRecommendedAggregated.spec.ts +++ b/testing/social/domain/post/getRecommendedAggregated.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import fileStore from '^/integrations/fileStore'; +import database from '@comify/common/integrations/database'; +import fileStore from '@comify/common/integrations/fileStore'; import getRecommendedAggregated from '^/domain/post/getRecommendedAggregated'; diff --git a/testing/social/domain/post/remove.spec.ts b/testing/social/domain/post/remove.spec.ts index 573c2af4..b195f06a 100644 --- a/testing/social/domain/post/remove.spec.ts +++ b/testing/social/domain/post/remove.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import eventBroker from '^/integrations/eventBroker'; +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { PostNotFound, RECORD_TYPE } from '^/domain/post'; import remove from '^/domain/post/remove'; diff --git a/testing/social/domain/rating/fixtures/databases.fixture.ts b/testing/social/domain/rating/fixtures/databases.fixture.ts index d7ef6510..a9478ef7 100644 --- a/testing/social/domain/rating/fixtures/databases.fixture.ts +++ b/testing/social/domain/rating/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import database, { driver } from '^/integrations/database'; +import database, { driver } from '@comify/common/integrations/database'; import { RECORD_TYPE as RATING_RECORD_TYPE } from '^/domain/rating'; diff --git a/testing/social/domain/rating/fixtures/tenants.fixture.ts b/testing/social/domain/rating/fixtures/tenants.fixture.ts index ea725060..9a322b6c 100644 --- a/testing/social/domain/rating/fixtures/tenants.fixture.ts +++ b/testing/social/domain/rating/fixtures/tenants.fixture.ts @@ -1,4 +1,4 @@ -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export const TENANTS = { default: tenant }; diff --git a/testing/social/domain/rating/toggle.spec.ts b/testing/social/domain/rating/toggle.spec.ts index 1f4ce9ec..4c559e4d 100644 --- a/testing/social/domain/rating/toggle.spec.ts +++ b/testing/social/domain/rating/toggle.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import eventBroker from '^/integrations/eventBroker'; +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/eventBroker'; import toggle from '^/domain/rating/toggle'; diff --git a/testing/social/domain/relation/establish.spec.ts b/testing/social/domain/relation/establish.spec.ts index ccb7dac7..3869dbaf 100644 --- a/testing/social/domain/relation/establish.spec.ts +++ b/testing/social/domain/relation/establish.spec.ts @@ -1,8 +1,8 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; -import eventBroker from '^/integrations/eventBroker'; +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/eventBroker'; import { RECORD_TYPE as RELATION_RECORD_TYPE } from '^/domain/relation'; import establish, { RelationAlreadyExists } from '^/domain/relation/establish'; diff --git a/testing/social/domain/relation/exploreAggregated.spec.ts b/testing/social/domain/relation/exploreAggregated.spec.ts index 3c9d76df..0bbb6c6f 100644 --- a/testing/social/domain/relation/exploreAggregated.spec.ts +++ b/testing/social/domain/relation/exploreAggregated.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import { SortOrders } from '^/domain/relation/definitions'; import explore from '^/domain/relation/exploreAggregated'; diff --git a/testing/social/domain/relation/fixtures/databases.fixture.ts b/testing/social/domain/relation/fixtures/databases.fixture.ts index a2c75fcf..13edf74d 100644 --- a/testing/social/domain/relation/fixtures/databases.fixture.ts +++ b/testing/social/domain/relation/fixtures/databases.fixture.ts @@ -1,7 +1,7 @@ import type { MemoryDriver } from '@theshelf/database'; -import database, { driver } from '^/integrations/database'; +import database, { driver } from '@comify/common/integrations/database'; import { RECORD_TYPE as CREATOR_RECORD_TYPE } from '^/domain/creator'; import { RECORD_TYPE as CREATOR_METRICS_RECORD_TYPE } from '^/domain/creator.metrics'; diff --git a/testing/social/domain/relation/fixtures/tenants.fixture.ts b/testing/social/domain/relation/fixtures/tenants.fixture.ts index ea725060..9a322b6c 100644 --- a/testing/social/domain/relation/fixtures/tenants.fixture.ts +++ b/testing/social/domain/relation/fixtures/tenants.fixture.ts @@ -1,4 +1,4 @@ -import { tenant } from '^/domain/tenant'; +import { tenant } from '@comify/common/domain/tenant'; export const TENANTS = { default: tenant }; diff --git a/testing/social/domain/relation/getFollowersAggregated.spec.ts b/testing/social/domain/relation/getFollowersAggregated.spec.ts index 149bb993..f2999726 100644 --- a/testing/social/domain/relation/getFollowersAggregated.spec.ts +++ b/testing/social/domain/relation/getFollowersAggregated.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import getFollowers from '^/domain/relation/getFollowersAggregated'; diff --git a/testing/social/domain/relation/getFollowingAggregated.spec.ts b/testing/social/domain/relation/getFollowingAggregated.spec.ts index d96d1e08..fa2ba3e7 100644 --- a/testing/social/domain/relation/getFollowingAggregated.spec.ts +++ b/testing/social/domain/relation/getFollowingAggregated.spec.ts @@ -1,7 +1,7 @@ import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; -import database from '^/integrations/database'; +import database from '@comify/common/integrations/database'; import getFollowing from '^/domain/relation/getFollowingAggregated'; diff --git a/testing/social/tsconfig.json b/testing/social/tsconfig.json index faa2835d..160244d4 100644 --- a/testing/social/tsconfig.json +++ b/testing/social/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "paths": { "^/*": ["../../development/social/*"], + "@comify/common/*": ["../../development/common/*"] } } } \ No newline at end of file From fed649df3a3d51eb8fbc2a842624be9ec20eaf12 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Tue, 19 May 2026 10:52:47 +0200 Subject: [PATCH 11/14] #480: cleaned up context packages --- development/common/package.json | 3 +-- development/insights/package.json | 4 +--- development/moderation/package.json | 4 +--- development/social/package.json | 4 +--- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/development/common/package.json b/development/common/package.json index ffb73a81..1bcfc493 100644 --- a/development/common/package.json +++ b/development/common/package.json @@ -8,7 +8,6 @@ "build": "npm run clean && npm run build-domain", "build-domain": "tsc && tsc-alias", "clean": "rimraf ../../artifacts/build/common", - "lint": "eslint", - "review": "npm run build && npm run lint" + "lint": "eslint" } } diff --git a/development/insights/package.json b/development/insights/package.json index 9ad6f186..60effa42 100644 --- a/development/insights/package.json +++ b/development/insights/package.json @@ -9,8 +9,6 @@ "build-app": "vite build --config app/vite.config.js", "build-domain": "tsc && tsc-alias", "clean": "rimraf ../../artifacts/build/insights", - "lint": "eslint", - "review": "npm run build && npm run lint", - "prepublishOnly": "npm run clean && npm run build" + "lint": "eslint" } } diff --git a/development/moderation/package.json b/development/moderation/package.json index 231ced23..734a8d03 100644 --- a/development/moderation/package.json +++ b/development/moderation/package.json @@ -9,8 +9,6 @@ "build-app": "vite build --config app/vite.config.js", "build-domain": "tsc && tsc-alias", "clean": "rimraf ../../artifacts/build/moderation", - "lint": "eslint", - "review": "npm run build && npm run lint", - "prepublishOnly": "npm run clean && npm run build" + "lint": "eslint" } } diff --git a/development/social/package.json b/development/social/package.json index 148deea1..d47257c0 100644 --- a/development/social/package.json +++ b/development/social/package.json @@ -9,8 +9,6 @@ "build-app": "vite build --config app/vite.config.js", "build-domain": "tsc && tsc-alias", "clean": "rimraf ../../artifacts/build/social", - "lint": "eslint", - "review": "npm run build && npm run lint", - "prepublishOnly": "npm run clean && npm run build" + "lint": "eslint" } } From 6b3aa79f14062dd8db577c373b54d51742fd89b4 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Tue, 19 May 2026 11:29:17 +0200 Subject: [PATCH 12/14] #480: added demo service --- deployment/services/demonstration/social.json | 40 +++++++++++++++++++ package.json | 2 + 2 files changed, 42 insertions(+) create mode 100644 deployment/services/demonstration/social.json diff --git a/deployment/services/demonstration/social.json b/deployment/services/demonstration/social.json new file mode 100644 index 00000000..6d3ef2da --- /dev/null +++ b/deployment/services/demonstration/social.json @@ -0,0 +1,40 @@ +{ + "url": "http://127.0.0.1:3000", + "setUp": [ + "./common/integrations/authentication/setUp", + "./common/integrations/database/setUp", + "./common/integrations/fileStore/setUp", + "./common/integrations/eventBroker/setUp" + ], + "tearDown": [ + "./common/integrations/authentication/tearDown", + "./common/integrations/database/tearDown", + "./common/integrations/fileStore/tearDown", + "./common/integrations/eventBroker/tearDown" + ], + "healthChecks": [ + "./common/integrations/database/healthCheck", + "./common/integrations/fileStore/healthCheck", + "./common/integrations/eventBroker/healthCheck" + ], + "middleware": [ + "./common/integrations/authentication/originMiddleware", + "./common/integrations/authentication/authenticationMiddleware", + "./common/integrations/tenancy/tenantMiddleware" + ], + "standalone": + { + "segments": [ + "common.bff", + "common.reads", + "social.bff", + "social.notification", + "social.reads", + "social.writes" + ], + + "serveIndexOnNotFound": true, + "assetRoot": "./social/app", + "assets": ["index.html", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] + } +} \ No newline at end of file diff --git a/package.json b/package.json index 0ae1e9e5..cb5d745f 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "dev": "jitar start --env-file=development.env --service=deployment/services/development/worker.json --http-body-limit=512000", + "demo": "jitar start --env-file=development.env --service=deployment/services/demonstration/social.json --http-body-limit=512000", + "gateway": "jitar start --env-file=development.env --service=deployment/services/production/gateway.json --http-body-limit=512000", "bff": "jitar start --env-file=development.env --service=deployment/services/production/bff.json --http-body-limit=512000", "notification": "jitar start --env-file=development.env --service=deployment/services/production/notification.json --http-body-limit=512000", From 84a8c155c2e9bbe0d0d8d7fdbb78c94b5f67e9b3 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Tue, 19 May 2026 11:31:49 +0200 Subject: [PATCH 13/14] #480: updated Jitar version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index cb5d745f..959054ac 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "react": "19.2.6", "react-dom": "19.2.6", "react-router-dom": "7.15.0", - "jitar": "0.10.7", + "jitar": "0.11.0", "@maskingtech/designsystem": "0.0.8", "@maskingtech/react-toolkit": "0.0.4", "@theshelf/authentication": "0.4.3", @@ -74,7 +74,7 @@ "devDependencies": { "@eslint/js": "9.39.4", "@types/node": "24.10.4", - "@jitar/plugin-vite": "0.10.7", + "@jitar/plugin-vite": "0.11.0", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "5.1.4", From 13ec55208a14635d1b5f94b2dcdc203b181a8a37 Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Wed, 20 May 2026 09:19:14 +0200 Subject: [PATCH 14/14] #480: updated to latest jitar version --- package-lock.json | 1970 +++++++++++++++------------------------------ package.json | 46 +- 2 files changed, 690 insertions(+), 1326 deletions(-) diff --git a/package-lock.json b/package-lock.json index c71bb670..488e6d95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,54 +1,55 @@ { - "name": "concept", + "name": "comify", "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "concept", + "name": "comify", "version": "0.0.1", "workspaces": [ + "development/common", "development/insights", "development/social", "development/moderation" ], "dependencies": { - "@jitar-plugins/authentication": "0.1.3", - "@jitar-plugins/database": "0.1.3", - "@jitar-plugins/eventbroker": "0.1.3", - "@jitar-plugins/filestore": "0.1.3", - "@jitar-plugins/http": "0.1.3", - "@jitar-plugins/notification": "0.1.3", + "@jitar-plugins/authentication": "0.1.5", + "@jitar-plugins/database": "0.1.5", + "@jitar-plugins/eventbroker": "0.1.5", + "@jitar-plugins/filestore": "0.1.5", + "@jitar-plugins/http": "0.1.5", + "@jitar-plugins/notification": "0.1.5", "@maskingtech/designsystem": "0.0.8", "@maskingtech/react-toolkit": "0.0.4", - "@theshelf/authentication": "0.4.3", - "@theshelf/authentication-driver-openid": "0.4.3", - "@theshelf/connection": "0.4.3", - "@theshelf/database": "0.4.3", - "@theshelf/database-driver-mongodb": "0.4.3", - "@theshelf/eventbroker": "0.4.3", - "@theshelf/filestore": "0.4.3", - "@theshelf/filestore-driver-s3": "0.4.3", - "@theshelf/http": "0.4.3", - "@theshelf/logging": "0.4.3", - "@theshelf/logging-driver-database": "0.4.3", - "@theshelf/notification": "0.4.3", - "@theshelf/validation": "0.4.3", - "@theshelf/validation-driver-zod": "0.4.3", + "@theshelf/authentication": "0.4.5", + "@theshelf/authentication-driver-openid": "0.4.5", + "@theshelf/connection": "0.4.5", + "@theshelf/database": "0.4.5", + "@theshelf/database-driver-mongodb": "0.4.5", + "@theshelf/eventbroker": "0.4.5", + "@theshelf/filestore": "0.4.5", + "@theshelf/filestore-driver-s3": "0.4.5", + "@theshelf/http": "0.4.5", + "@theshelf/logging": "0.4.5", + "@theshelf/logging-driver-database": "0.4.5", + "@theshelf/notification": "0.4.5", + "@theshelf/validation": "0.4.5", + "@theshelf/validation-driver-zod": "0.4.5", "dayjs": "1.11.20", - "jitar": "0.10.7", + "jitar": "0.11.0", "react": "19.2.6", "react-dom": "19.2.6", "react-router-dom": "7.15.0" }, "devDependencies": { "@eslint/js": "9.39.4", - "@jitar/plugin-vite": "0.10.7", + "@jitar/plugin-vite": "0.11.0", "@types/node": "24.10.4", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "5.1.4", - "@vitest/coverage-v8": "4.0.18", + "@vitest/coverage-v8": "4.1.6", "cpx2": "8.0.0", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "7.0.1", @@ -56,22 +57,26 @@ "tsc-alias": "1.8.16", "typescript": "5.9.3", "typescript-eslint": "8.56.0", - "vite": "7.3.1", + "vite": "7.3.3", "vite-plugin-pwa": "1.2.0", "vite-tsconfig-paths": "5.1.4", - "vitest": "4.0.18" + "vitest": "4.1.6" } }, + "development/common": { + "name": "@comify/common", + "version": "0.0.1" + }, "development/insights": { - "name": "@concept/insights", + "name": "@comify/insights", "version": "0.0.1" }, "development/moderation": { - "name": "@concept/moderation", + "name": "@comify/moderation", "version": "0.0.1" }, "development/social": { - "name": "@concept/social", + "name": "@comify/social", "version": "0.0.1" }, "node_modules/@aws-crypto/crc32": { @@ -113,19 +118,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", @@ -141,19 +133,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", @@ -188,79 +167,29 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1045.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1045.0.tgz", - "integrity": "sha512-fsuO3Y6t+3Ro9Bsg41DKj4Sfy53CGSrhnMldNplWmG8Tx0UbYk+YDa4RD1hVlJpERw4JBmPkl0+J9qlxMh1pcA==", + "version": "3.1050.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1050.0.tgz", + "integrity": "sha512-9kgtv+bXZQrOIJT2INPPBCezrJu1FlgGrzEat/ut4A4V53IT00LynsBZgp12eFKbjJuNCeTo7iPSKjPsX8ub+A==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/credential-provider-node": "^3.972.39", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.10", - "@aws-sdk/middleware-expect-continue": "^3.972.10", - "@aws-sdk/middleware-flexible-checksums": "^3.974.16", - "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/credential-provider-node": "^3.972.43", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.14", + "@aws-sdk/middleware-expect-continue": "^3.972.12", + "@aws-sdk/middleware-flexible-checksums": "^3.974.20", "@aws-sdk/middleware-location-constraint": "^3.972.10", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-sdk-s3": "^3.972.37", + "@aws-sdk/middleware-sdk-s3": "^3.972.41", "@aws-sdk/middleware-ssec": "^3.972.10", - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.25", + "@aws-sdk/signature-v4-multi-region": "^3.996.27", "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.24", - "@smithy/config-resolver": "^4.4.17", - "@smithy/core": "^3.23.17", - "@smithy/eventstream-serde-browser": "^4.2.14", - "@smithy/eventstream-serde-config-resolver": "^4.3.14", - "@smithy/eventstream-serde-node": "^4.2.14", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/hash-blob-browser": "^4.2.15", - "@smithy/hash-node": "^4.2.14", - "@smithy/hash-stream-node": "^4.2.14", - "@smithy/invalid-dependency": "^4.2.14", - "@smithy/md5-js": "^4.2.14", - "@smithy/middleware-content-length": "^4.2.14", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.7", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", + "@smithy/core": "^3.24.2", + "@smithy/fetch-http-handler": "^5.4.2", + "@smithy/node-http-handler": "^4.7.2", "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.49", - "@smithy/util-defaults-mode-node": "^4.2.54", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.3.0", "tslib": "^2.6.2" }, "engines": { @@ -268,24 +197,18 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", - "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", + "version": "3.974.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.12.tgz", + "integrity": "sha512-qrqgioqYFjwR6LatVNS1L2Vk++EwRIxqSQXPKNv5Ofux2D8UNgqMQ1znnMyEImXquVPTtbf71fc128pvmU6y9A==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.8", - "@aws-sdk/xml-builder": "^3.972.22", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", + "@aws-sdk/xml-builder": "^3.972.24", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/core": "^3.24.2", + "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", + "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { @@ -293,9 +216,9 @@ } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.7", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", - "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.8.tgz", + "integrity": "sha512-fVfUCL/Xh2zINYMPZvj+iBn6XWouQf0DAnjaWCI9MkmqXzL2Iy5FoQB8O7syFe6gN6AH1ecDDU58T51Ou0kFkA==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.14.1", @@ -306,14 +229,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz", - "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.38.tgz", + "integrity": "sha512-m3WjZEgPtioMhPmwqUt+DhlTJ2i9ufR6DhfkyXojb9puEvfR+ur2U5shavu5/Cc9WHHsDCvALi6UFHgcqjhQ5w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", + "@aws-sdk/core": "^3.974.12", "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -322,20 +245,17 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz", - "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==", + "version": "3.972.40", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.40.tgz", + "integrity": "sha512-D78L/m2Dr6cJnnSvWoAudPhQmCwmJ7j6APXsPYmFpPaKfQTfCSu0rdm8j14Np+VmXF9z8Aj8HE3xFpsrwtfgeg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", + "@aws-sdk/core": "^3.974.12", "@aws-sdk/types": "^3.973.8", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", + "@smithy/core": "^3.24.2", + "@smithy/fetch-http-handler": "^5.4.2", + "@smithy/node-http-handler": "^4.7.2", "@smithy/types": "^4.14.1", - "@smithy/util-stream": "^4.5.25", "tslib": "^2.6.2" }, "engines": { @@ -343,23 +263,22 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz", - "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==", + "version": "3.972.42", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.42.tgz", + "integrity": "sha512-Mu5ESvFXeinafVM8jTIvRqcvK2Ehj4kz3auT39yUcHwu1Vfxo6xRlmUafdKLW4tusjAJukQwK09sCSMgOm7OKg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-login": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", - "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/credential-provider-env": "^3.972.38", + "@aws-sdk/credential-provider-http": "^3.972.40", + "@aws-sdk/credential-provider-login": "^3.972.42", + "@aws-sdk/credential-provider-process": "^3.972.38", + "@aws-sdk/credential-provider-sso": "^3.972.42", + "@aws-sdk/credential-provider-web-identity": "^3.972.42", + "@aws-sdk/nested-clients": "^3.997.10", "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/core": "^3.24.2", + "@smithy/credential-provider-imds": "^4.3.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -368,17 +287,15 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz", - "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==", + "version": "3.972.42", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.42.tgz", + "integrity": "sha512-O6WkZga3kf0yqyJYd1dbeJqVhEgJx/x1UaLgtbR+XuL/YP+K5y6QTxQKL7ka9z3jnQASESKGAPnRyt4D5hQrxA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/nested-clients": "^3.997.10", "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -387,21 +304,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.39", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz", - "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.43.tgz", + "integrity": "sha512-D/DJmbrWRP5BXEO3FH+ar4el+2n6OlGofiud7dQun2jES+AQEJjczenp1jBb4MBN7CpGpS8nsWGQLtuzc9tQbA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-ini": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", + "@aws-sdk/credential-provider-env": "^3.972.38", + "@aws-sdk/credential-provider-http": "^3.972.40", + "@aws-sdk/credential-provider-ini": "^3.972.42", + "@aws-sdk/credential-provider-process": "^3.972.38", + "@aws-sdk/credential-provider-sso": "^3.972.42", + "@aws-sdk/credential-provider-web-identity": "^3.972.42", "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/core": "^3.24.2", + "@smithy/credential-provider-imds": "^4.3.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -410,15 +326,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz", - "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.38.tgz", + "integrity": "sha512-EnbYVajGgbkb24s0K1eo4VNAPV5mHIET7LSvirTaFCwkfrfaOJxtSE+wY/tJdKDS21cEYkZs2ruCaAm+W4iblg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", + "@aws-sdk/core": "^3.974.12", "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -427,17 +342,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz", - "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==", + "version": "3.972.42", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.42.tgz", + "integrity": "sha512-RVV/9NbFwI8ZHEH5dn39lGyFmSbSVj1+orZdr6QsOe1mW9DCglmlen0cFaNZmCcqkqc7erNRHNBduxbeZuHAnw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/token-providers": "3.1041.0", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/nested-clients": "^3.997.10", + "@aws-sdk/token-providers": "3.1049.0", "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -446,16 +360,15 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz", - "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==", + "version": "3.972.42", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.42.tgz", + "integrity": "sha512-/67fXX0ddllD4u2Nujc5PvT4byHgpMUfz6+RxIKi/0nFIckeorm7JvXgzBuDyVKw0s58EbofmETDWUf9vTEuHQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/nested-clients": "^3.997.10", "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -464,17 +377,15 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", - "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", + "version": "3.972.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.14.tgz", + "integrity": "sha512-Aaj0d+xbo1jJquBWJP0/9V/XZRYukO3LWIRp3dOLHmoFrYKb4YZ0aLefgVHfGcNOVBS2ZTq7L/n5JcrE7DaC+Q==", "license": "Apache-2.0", "dependencies": { + "@aws-sdk/core": "^3.974.12", "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -482,13 +393,13 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", - "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", + "version": "3.972.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.12.tgz", + "integrity": "sha512-dA5pKTom/Ls9mgeyeaRBNQrRIVOLVjv4AmKOB0/e4yaiXEUy0gSz2d3liP8JHtYoCAEWySU1jWnyzwLOREN+4g==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -497,38 +408,18 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.16.tgz", - "integrity": "sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==", + "version": "3.974.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.20.tgz", + "integrity": "sha512-NdnMVQCR1YjIcqFAiNLdBiOwr2DyQDB2IiXQrBhzolKOv32ae4d4Ll7IzLMi04eMHiq/o/Y/GjFuVjF9HuG0QA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/crc64-nvme": "^3.972.7", - "@aws-sdk/types": "^3.973.8", - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", - "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", - "license": "Apache-2.0", - "dependencies": { + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/crc64-nvme": "^3.972.8", "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -550,55 +441,18 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", - "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", - "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.37", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz", - "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==", + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.41.tgz", + "integrity": "sha512-M4T2I2WPuH5WQpU8Tsp+u2bcO29zGRkU14ATzuqb9I4xh8tzsLqtp4hzaJM5aO2dhMZnHDzyQwSFVgc3XbnoGg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/signature-v4-multi-region": "^3.996.27", "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", + "@smithy/core": "^3.24.2", + "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -619,84 +473,20 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz", - "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@smithy/core": "^3.23.17", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-retry": "^4.3.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz", - "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==", + "version": "3.997.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.10.tgz", + "integrity": "sha512-FtQ/Bt327peZJuyo4WZSOLVUTw9ujRxntepiC7L65FxA2P82Xlq0g14T22BuqBUeMjDoxa9nvwiMHjLIfP3eUg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/middleware-host-header": "^3.972.10", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.25", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/signature-v4-multi-region": "^3.996.27", "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.24", - "@smithy/config-resolver": "^4.4.17", - "@smithy/core": "^3.23.17", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/hash-node": "^4.2.14", - "@smithy/invalid-dependency": "^4.2.14", - "@smithy/middleware-content-length": "^4.2.14", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.7", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.49", - "@smithy/util-defaults-mode-node": "^4.2.54", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", - "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/config-resolver": "^4.4.17", - "@smithy/node-config-provider": "^4.3.14", + "@smithy/core": "^3.24.2", + "@smithy/fetch-http-handler": "^5.4.2", + "@smithy/node-http-handler": "^4.7.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -705,15 +495,14 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz", - "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==", + "version": "3.996.27", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz", + "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.37", "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", + "@smithy/core": "^3.24.2", + "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -722,16 +511,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1041.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz", - "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==", + "version": "3.1049.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1049.0.tgz", + "integrity": "sha512-r7+d0lQMTHKypkmaF5jRTBYLYHCUHzt3gaVoN9SidLhQeWhCmHk3AKrboDTpPF5b7Pt7vKu3+oeMjznM2Eu1ow==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/core": "^3.974.12", + "@aws-sdk/nested-clients": "^3.997.10", "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, @@ -752,34 +540,6 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", - "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", - "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-endpoints": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.965.5", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", @@ -792,52 +552,15 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", - "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.24", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz", - "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/types": "^3.973.8", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.22", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", - "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", + "version": "3.972.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", + "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", "license": "Apache-2.0", "dependencies": { "@nodable/entities": "2.1.0", "@smithy/types": "^4.14.1", - "fast-xml-parser": "5.7.2", + "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" }, "engines": { @@ -2437,15 +2160,19 @@ "node": ">=18" } }, - "node_modules/@concept/insights": { + "node_modules/@comify/common": { + "resolved": "development/common", + "link": true + }, + "node_modules/@comify/insights": { "resolved": "development/insights", "link": true }, - "node_modules/@concept/moderation": { + "node_modules/@comify/moderation": { "resolved": "development/moderation", "link": true }, - "node_modules/@concept/social": { + "node_modules/@comify/social": { "resolved": "development/social", "link": true }, @@ -3202,65 +2929,66 @@ } }, "node_modules/@jitar-plugins/authentication": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jitar-plugins/authentication/-/authentication-0.1.3.tgz", - "integrity": "sha512-hP7Yj1thB1M0iKYu3okKL06EwXPlwD5yWb6C0cuFmaITsn5/sVowwDBna9BhUIFqtE+VXDQsSHGrASYOGLWwKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@jitar-plugins/authentication/-/authentication-0.1.5.tgz", + "integrity": "sha512-ZeKBQqBb7phOcS2g3iCVNM04rom8sEy1ZQHGXAi1mC1aiku93UNCdQQKs8YIsQJvUpioqGXL7NbVvo6XY04Lbw==", "peerDependencies": { - "@theshelf/authentication": "^0.4.0", - "jitar": "^0.10.4" + "@theshelf/authentication": "^0.4.5", + "jitar": "^0.10.4 || ^0.11.0" } }, "node_modules/@jitar-plugins/database": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jitar-plugins/database/-/database-0.1.3.tgz", - "integrity": "sha512-DzBDeV3OnwH7zN3vfYWp6NZSw5/WgADLNXF4vqbrSLZ/H81GVvKIr1PLFmMaDl5xl2upNeODYq8SQYZNSdzSBQ==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@jitar-plugins/database/-/database-0.1.5.tgz", + "integrity": "sha512-8LupcfWOEPhygBI+aZijNj74jF7lu8CSNs0Fta+Fd7ZEdMEBI/cDZJaSUn9ilj2O/7OvqK7Pn/aLN9rakW/+zw==", "peerDependencies": { - "@theshelf/database": "^0.4.0", - "jitar": "^0.10.4" + "@theshelf/database": "^0.4.5", + "jitar": "^0.10.4 || ^0.11.0" } }, "node_modules/@jitar-plugins/eventbroker": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jitar-plugins/eventbroker/-/eventbroker-0.1.3.tgz", - "integrity": "sha512-4TconjYqozfNQIpdRSTddsFEVJfrhZPzNtagg+GIqedHWOqGO4SDiGRRj9VXsFO8WOFWnvuPaT5EUHGJNvaH9Q==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@jitar-plugins/eventbroker/-/eventbroker-0.1.5.tgz", + "integrity": "sha512-PljiHiOiRWMLatC4Y7f+rYh0dCY7s0AfHemCbzmTauVmjdqKxWfu01Pb2SVfQ5fLRc0kGRS8hLIIYNVb4LOrrQ==", "peerDependencies": { - "@theshelf/eventbroker": "^0.4.0", - "jitar": "^0.10.4" + "@theshelf/eventbroker": "^0.4.5", + "jitar": "^0.10.4 || ^0.11.0" } }, "node_modules/@jitar-plugins/filestore": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jitar-plugins/filestore/-/filestore-0.1.3.tgz", - "integrity": "sha512-r2PyvpNMPZscOxUttd7YWqG8r/at7Fe/pnnsQ41MVx66yDO7glWYMlWDF7FFCa+6u4UEVEa8M3TmNrhJbVe5sQ==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@jitar-plugins/filestore/-/filestore-0.1.5.tgz", + "integrity": "sha512-Z9pI2meQamPq5cbqGETKjWQGdOvm5kcj7BtS+hxPpExAPyNXdH1X0iMpT+YZrGV4zqrkPSo2wZ10UJmxjVRKPQ==", "peerDependencies": { - "@theshelf/filestore": "^0.4.0", - "jitar": "^0.10.4" + "@theshelf/filestore": "^0.4.5", + "jitar": "^0.10.4 || ^0.11.0" } }, "node_modules/@jitar-plugins/http": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jitar-plugins/http/-/http-0.1.3.tgz", - "integrity": "sha512-stvnknAClTdD8OM7OPlSLJNj2h1eyaOnF3mQyAmkdCGc+gP8PXdoDLfAh1UK0ZQ+gBPxh3Pdi03W5UaFD9t7cQ==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@jitar-plugins/http/-/http-0.1.5.tgz", + "integrity": "sha512-WsNE1THUy347kMLpn4ld+a68Xvf3cCE2ceqpWuDvfjT+Y9liwnruOMsGYshw19oHcctuQx7SraCYTUdZ2nq80Q==", "peerDependencies": { - "jitar": "^0.10.4" + "jitar": "^0.10.4 || ^0.11.0" } }, "node_modules/@jitar-plugins/notification": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jitar-plugins/notification/-/notification-0.1.3.tgz", - "integrity": "sha512-xqWIoNcMBMojUtiC9nayBuymTJFAsTz7wtzg0iIzWtiYuh4KZZiKfaxRlb4t7Hpb4xUfHMjpR3b2nv0P7hpADw==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@jitar-plugins/notification/-/notification-0.1.5.tgz", + "integrity": "sha512-8Q62r6buAsvnxQULkMiDHBk6qXBT4BDaIVOAlDw9IgwNIChBRWpzjMMf4klt9B8eSlcg3TpQP2T/C8CqaCEcuQ==", "peerDependencies": { - "@theshelf/notification": "^0.4.0", - "jitar": "^0.10.4" + "@theshelf/notification": "^0.4.5", + "jitar": "^0.10.4 || ^0.11.0" } }, "node_modules/@jitar/plugin-vite": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.10.7.tgz", - "integrity": "sha512-/J0wDzk1/L8LkDcRdTz/PTT8cTBA9G9xBJsDIowk8HHY2VX4Ty8WmgwXTX0km6yHf/6lWkFc/wz1aBxstMLJBQ==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.11.0.tgz", + "integrity": "sha512-lBH3x12ukzFbtkhCeK4MtfWJlazEKiyjzwO3YwuF53z7e7xj0AYIWZBABfPpmw/W/463j0TpF7Z5HJGS1Ez4QA==", "dev": true, "license": "MIT", "peerDependencies": { + "jitar": "^0.11.0", "vite": ">=4.0.0 || >=5.0.0 || >=6.0.0 || >=7.0.0" }, "peerDependenciesMeta": { @@ -3575,9 +3303,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.3.tgz", - "integrity": "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", + "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", "cpu": [ "arm" ], @@ -3589,9 +3317,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.3.tgz", - "integrity": "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", + "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", "cpu": [ "arm64" ], @@ -3603,9 +3331,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.3.tgz", - "integrity": "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", + "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", "cpu": [ "arm64" ], @@ -3617,9 +3345,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.3.tgz", - "integrity": "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", + "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", "cpu": [ "x64" ], @@ -3631,9 +3359,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.3.tgz", - "integrity": "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", + "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", "cpu": [ "arm64" ], @@ -3645,9 +3373,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.3.tgz", - "integrity": "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", + "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", "cpu": [ "x64" ], @@ -3659,9 +3387,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.3.tgz", - "integrity": "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", + "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", "cpu": [ "arm" ], @@ -3676,9 +3404,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.3.tgz", - "integrity": "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", + "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", "cpu": [ "arm" ], @@ -3693,9 +3421,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.3.tgz", - "integrity": "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", + "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", "cpu": [ "arm64" ], @@ -3710,9 +3438,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.3.tgz", - "integrity": "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", + "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", "cpu": [ "arm64" ], @@ -3727,9 +3455,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.3.tgz", - "integrity": "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", + "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", "cpu": [ "loong64" ], @@ -3744,9 +3472,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.3.tgz", - "integrity": "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", + "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", "cpu": [ "loong64" ], @@ -3761,9 +3489,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.3.tgz", - "integrity": "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", + "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", "cpu": [ "ppc64" ], @@ -3778,9 +3506,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.3.tgz", - "integrity": "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", + "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", "cpu": [ "ppc64" ], @@ -3795,9 +3523,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.3.tgz", - "integrity": "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", + "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", "cpu": [ "riscv64" ], @@ -3812,9 +3540,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.3.tgz", - "integrity": "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", + "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", "cpu": [ "riscv64" ], @@ -3829,9 +3557,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.3.tgz", - "integrity": "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", + "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", "cpu": [ "s390x" ], @@ -3862,515 +3590,149 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.3.tgz", - "integrity": "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", + "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", "cpu": [ "x64" ], "dev": true, "libc": [ "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.3.tgz", - "integrity": "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.3.tgz", - "integrity": "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.3.tgz", - "integrity": "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.3.tgz", - "integrity": "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.3.tgz", - "integrity": "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.3.tgz", - "integrity": "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@smithy/config-resolver": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.5.0.tgz", - "integrity": "sha512-m5PNfr7xKdIegNG8DlLz+Gf/DlAhHWFGmFbe0DZo9pnvBwuZ3P/9OMtQU0UyWMYy8zjl+HDFVS7rdD9p2xEFjQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.0.tgz", - "integrity": "sha512-rZ5YfycIXX6puoGjthnDiMpUgtKNOq3c7CndQYkCNYQTv26AiCrZQOJPy7ANSfZ6Okk3UvCRnmO1OYWlLnYZgg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.0.tgz", - "integrity": "sha512-5gi+28FH+RurB2+tcRH1CK7KiLJ0dVnabjWLY3DgeFLiU45dbyrsq7NOYvMUcHgu9LVZH5F7G+Qk1GdXF0y6jg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.3.0.tgz", - "integrity": "sha512-JlY17/ZwBJ2O7FK/bKt8PZR+HBkyFwvgssgT6LiB0xYtz5/E5XG/HeKr5q2NMaVm8u8xjFfGk/6DVlbBe1qNkA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.4.0.tgz", - "integrity": "sha512-1Pg7aqxIdMilTbGJKCHTx0toIkKSrHdO6VHCh9oCncWJG+1wkJa90O/xb9mmRPuoOFCg2DLZAqnRyuBiUQnNIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.3.0.tgz", - "integrity": "sha512-Xte1Td6CQpc/D0WnPZ2k98CvF7y1GopylMoGY/r26a9wbRHV5xusRbT6O9vouSeZlvtxoVb4ON/1fLRofO7m4Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.0.tgz", - "integrity": "sha512-yxurumLvHfgYgM0FVtjOVIyBSJXfno4xKKOgD43wOk9Qh+2lTKfP9Qhu4JHU7IUwrqVPa888byUzomHMgvKVMg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-blob-browser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.3.0.tgz", - "integrity": "sha512-xOQ7w5hSzTe8IAwQ6BAbX+1d9s9SRwWUbU8cYYh5DHgkYOi131Q5+B9Blelg9u0zoPfM4VYOuuBRAmregPkzpQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-node": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.3.0.tgz", - "integrity": "sha512-4a+KoVqr1SZtw7cZvY24XU1S5OL+c23MdDQ3jFmMCQ5s9diBFdMG/UIgp5dNqlwvDrWA0U5KO+z3Gzq1ize+LA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-stream-node": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.3.0.tgz", - "integrity": "sha512-DPDT0UyOREMPwipO7BzSJfD8z2YYp/x1FMpHqEppBF+gmGr7FoqUUFlXfK+YPOfHhlr8HDJRQpmShNb9C9po5Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.3.0.tgz", - "integrity": "sha512-TaoGtqi2ZNdGzxUgYcLczjW8rb/h5DQ8vlCMYDSdZ4LRzGQrrEYgUjlZVM9dAagTsLK5gZx1f7+44sFTjz5vuQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.3.0.tgz", - "integrity": "sha512-V9ZCT5mHNteWOKtu3LkGHTheEyBWzTU3XydeSOHrqG6znEoCARjxFZ0XP9JJyKV9jxEMx7hNbzGlQaXtKkmvSQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/md5-js": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.3.0.tgz", - "integrity": "sha512-bODwWrXILREpCL7XZq1/QxiMqFxdWadw3noiKGjNKsPl1/nvWtLVFInNjK6pmHjM4BUOgfgZkrl9+V56ez2FNA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.3.0.tgz", - "integrity": "sha512-IbSiS/3nOxsimCthzElEoBrjQo+Na4bsQ63qyC8qSI8lkMjOv9+VlosDQd8gfNolAD9XmC5tLqYTI0bJGJsscg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.5.0.tgz", - "integrity": "sha512-ux8LgN/m/X7ET2ISRc8G4aKFI1QhINZtkKpoayNPTrhwpsCVxb47mlpYFuWceTlesc0Wmb0S9y6DP195ReQoXA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.6.0.tgz", - "integrity": "sha512-8CtxY9aHT4f3UvZUbU2O0bccRckqTDfTKk3t1DawUZa5DWRZdV2AMABLsdMTdj7KE1uumhzEaT0X7/jTcOtoBw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.3.0.tgz", - "integrity": "sha512-c+V02hZlIStscI4ie2VllJjM4DLxdI2SymIBvXmqCqicrNb0NAbgDXDTBiwcMiruaBOqEFYxpKXbz6JjsNEN3Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.3.0.tgz", - "integrity": "sha512-KtYcs+sJn7AiT0YdM53/6MT0dKsaW2MSAr9MpprRVSfwN9qyKQf2dBIuCXt18/nEZaWerol/bGaQ63G949aovw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.4.0.tgz", - "integrity": "sha512-5RutFJsYoqK4tWYZOjGQrPLowGf2Ku8rbNuVeGkNJ5axIDO4LV/fydBojPtwcDz2zf87YNCOXfNyuEyAwYgI7A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.0.tgz", - "integrity": "sha512-PxF57Jr3dPm+RgZWekOL+o96FPdaT62xZUyDfi47uMRFi5rHpwO/ewFbrztrASQ/7H8moNi1sspIHihHpfoKsQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.3.0.tgz", - "integrity": "sha512-/YBWtO2SdvPSAUk/Ke1Xpdg1E1lfaNGblla7mnIVGtaGkSQ5bK7KBZqpuj5IokHlU9UcLDvt2QwTLV7oRzBUTA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@smithy/protocol-http": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.4.0.tgz", - "integrity": "sha512-WG0LgSZg+WbvWYD04uwIYVyMEpyd0cPx1lkqx61JxunxiFti+wGoFiDKr6wswun1r25Z2f8yUoMQWyxjMnnXtw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", + "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.5.0.tgz", - "integrity": "sha512-xATpw6gcurFztdsUrMNaKb2ugqk3545Whhqg7ZD4sxTg+zI27THjg3IY+InXsVWturOWdCdV+UHQx11g9Sp5Kw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", + "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] }, - "node_modules/@smithy/signature-v4": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.0.tgz", - "integrity": "sha512-nkdB9T8JS6iD5PukE5TB8KqcvMEPVPHVUY7J0odYJgyIM40Du2msUhBdoPNRqRArDDcGQqVQcbzu0CZA7b+Nkw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", + "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@smithy/smithy-client": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.13.0.tgz", - "integrity": "sha512-lysfoRCr7PdD9CsPp9VQuJYRGI5mWYb8FRkbdBSQttxpQmW7tZsFgmpBNKVcgvBsAgBCkYX/UQs0NmznuBcZQQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", + "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@smithy/types": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", - "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", + "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@smithy/url-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.3.0.tgz", - "integrity": "sha512-I5tCWs/ndLrJrbvlnsN1cOt8PVAbQEqg0nNeQqebD5ynQcbhgch9uA7KmpX9vfq/vEudq0iVYAOxt+4aBkUlWA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", + "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@smithy/util-base64": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.4.0.tgz", - "integrity": "sha512-puJITyefgQ9a5F+wKylCLkf0VCwesWbaN4O3YCEalRin4N0CTPQu/XA3kz/QsMOTgd3knhd0BQwGCBm/tv0Y1A==", + "node_modules/@smithy/core": { + "version": "3.24.3", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", + "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.3.0.tgz", - "integrity": "sha512-83U8xa8EmdExGzFuqBzgXvtmbLQIYcCuCNm5no4rlPqpGdOPGUufzMvLdlw+sPTb01qHIsDDNwOecm4s8ROOPw==", + "node_modules/@smithy/credential-provider-imds": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", + "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.3.0.tgz", - "integrity": "sha512-Ok2v9zPFfd6uOJMTIIJ8HFdCpARD77q4OHYhwhG9y5X1Y9oeQ0CHUQVJD6LhT6l8FUkFYisqcUaZSg7SArFUTA==", + "node_modules/@smithy/fetch-http-handler": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", + "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": { + "node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", @@ -4382,121 +3744,70 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-config-provider": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.3.0.tgz", - "integrity": "sha512-kAC6/UB9qW9r2xQAOko2iDxAXmRD2VGMZjnXSEacAhQySdJs58CwvoOE0tHWdtc/lWF4g78X6Z9ucLanJnuVUw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.4.0.tgz", - "integrity": "sha512-jKezW5Taa+N2gbkB02UVijH1rFlEJC+cskZzwasFqFJMBBi/bcVgHqcYOX0WOnUk6MDZfHf0gEsr5Br4XMHiAg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.3.0.tgz", - "integrity": "sha512-xYRuNHHIztu5AzruMJ8kTyA1JsBL/yZKvX5z/A7OHUxsf+rkEESZFZWJDcAj5dDWSu6brWFe5KH6qJNTVztX/w==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.5.0.tgz", - "integrity": "sha512-pcvTCp9Wch/9UnWWfRGoG5GJogDXFPjevE+CqALxtPFGA4GqFQRD6eUtgJhHN+NPtohcozI12u1skF2/iubGrQ==", + "node_modules/@smithy/node-http-handler": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", + "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-middleware": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.3.0.tgz", - "integrity": "sha512-X/DNQxgUCbjjs3HosLmt5Yi1NocxjRFiiOgHml4tVV3w4mIbqZxPR8kq7apGPEMnhIpyxeTgFyypMrfxfn2DlQ==", + "node_modules/@smithy/signature-v4": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", + "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-retry": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.4.0.tgz", - "integrity": "sha512-pV/Kq4jUuP9raOqwSPeBiut2IWmwbc9vM+nE3ly4YUkzPHbBZvfhikwMOyudER+KHPjakuc8r4TecEPMsI7nVg==", + "node_modules/@smithy/types": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", + "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-stream": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.6.0.tgz", - "integrity": "sha512-BlWg46UASokl3O5YqWmbLpINE5stmAxynXlyOe1nE4dx+tvwgqtT4ug/rPcRg0xVcBnj68XlcOqbXeaGGcH0DA==", + "node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", + "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, "node_modules/@smithy/util-utf8": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.3.0.tgz", - "integrity": "sha512-5hrmCc+dTgZkiFhX72Q16LemYPkvZ1M4pFMOhk0X9tQnLY7dn7zC1+C+aAJn0dw6CXldbqY/KMbMYCwm8yw14g==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-waiter": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.4.0.tgz", - "integrity": "sha512-7kAlrB3n7/BHyw+uLq83d5jdadPUcDkdMOUSGxvpXjrJ++G0hTedTnoNChjybIxhZ/Gk7sCrfIOLkMAB0LhRBA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.0", + "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, "node_modules/@standard-schema/spec": { @@ -4507,105 +3818,105 @@ "license": "MIT" }, "node_modules/@theshelf/authentication": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/authentication/-/authentication-0.4.3.tgz", - "integrity": "sha512-+puuBUWIiAWReIMX621fiRLYS6q5qa+69ETYfzbv4R0EwJ8dyGzKy1UxaM3nKh3vxmJkhoQk0XfNhuYYTtorMA==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/authentication/-/authentication-0.4.5.tgz", + "integrity": "sha512-k+sHuaML2YAUtRcVl3ZlWKm8QaPqeSxxi5gIK0FPxE5aIVex45sTLm6yYtWiSCvv6ZZip3DehEpwWW83eovO/g==", "license": "MIT", "peerDependencies": { "@theshelf/logging": "^0.4.3" } }, "node_modules/@theshelf/authentication-driver-openid": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/authentication-driver-openid/-/authentication-driver-openid-0.4.3.tgz", - "integrity": "sha512-vwn7zUxX4AVVm+acQKrxWwSCnbJ0VyqrbaT8F8qxfjeWBK0rjNDd3e4bIglbDCqSzYmEaoXGYahcLcjQBfA/eA==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/authentication-driver-openid/-/authentication-driver-openid-0.4.5.tgz", + "integrity": "sha512-zqDxDQfiwa8NZtbsFMRNR9cSRjnZrxBmbCYN9so4SgUd53CfiY8Np5pRuZAk8htDaKA2akR/1TrVCF7LNTDwjg==", "license": "MIT", "dependencies": { - "openid-client": "6.8.2" + "openid-client": "6.8.4" }, "peerDependencies": { "@theshelf/authentication": "^0.4.3" } }, "node_modules/@theshelf/connection": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/connection/-/connection-0.4.3.tgz", - "integrity": "sha512-A0Ug48tcbWLMVD9wG5ypznPcb53nb5Fk8FJADMuSCdGnq+DV1o1hKx561Ak1XSgnHOX5k37SUI5UXgnS+8MMSw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/connection/-/connection-0.4.5.tgz", + "integrity": "sha512-TwA0IA/jwK+pvnAT2R0VXsx58u18VzQrrynZPbsvmgJScNXW4JqhxpgXdlcqv1BYQXc/vhaiLpAdjQIwwg7AOw==", "license": "MIT", "peerDependencies": { "@theshelf/logging": "^0.4.3" } }, "node_modules/@theshelf/database": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/database/-/database-0.4.3.tgz", - "integrity": "sha512-HP6MG9rgFgVeuye2IyVuSriFdUgwpuXdTOHA44CQUF2/LTViwrPVBTC4FmqALsja75Yrm0nkzbWaVSRAGemGcg==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/database/-/database-0.4.5.tgz", + "integrity": "sha512-chRcYnwyJpvNQO4VDcjhwghxvZNGDnP2KwfUWdg7/t4Ih9IWKg3d4pKtIMjzSWsmuu8e58VA9FuDn4cvEEtQww==", "license": "MIT", "dependencies": { - "sanitize-html": "2.17.1" + "sanitize-html": "2.17.4" }, "peerDependencies": { "@theshelf/logging": "^0.4.3" } }, "node_modules/@theshelf/database-driver-mongodb": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/database-driver-mongodb/-/database-driver-mongodb-0.4.3.tgz", - "integrity": "sha512-tDEuPRBJ4d81i7ny9Xsw1ANZOAz8hYDVvxE0rYcXhbpj4oCou5fDwvOfAKSLqCW99R3t8KPor2cWnRWB7wkuTw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/database-driver-mongodb/-/database-driver-mongodb-0.4.5.tgz", + "integrity": "sha512-b0KjTrJvGGHfSEHrR9TOFnQIbSNF7M0KS2avlXbOszHLkRQvcy/qIh4nh7ull/AqSi+L7U/JRuswyzfJZA2thg==", "license": "MIT", "dependencies": { - "mongodb": "7.1.0" + "mongodb": "7.2.0" }, "peerDependencies": { "@theshelf/database": "^0.4.3" } }, "node_modules/@theshelf/eventbroker": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/eventbroker/-/eventbroker-0.4.3.tgz", - "integrity": "sha512-H9xJ76iZzH29UI4OWvXtK29mG5OExdhG2exTP1qND9Xyr3jFjg8gyzKOzf/yrEkcN/lTHTSdWv8J4j8EXKlIkw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/eventbroker/-/eventbroker-0.4.5.tgz", + "integrity": "sha512-lRxKCPTZUG7qITtn1m6Y9TqeZxiuqs4qCOU6QgGVcQ8C2wjytDNb0J8mT+Ahxuu1WRsMgDX/8oQjhMZIRSBQUg==", "license": "MIT" }, "node_modules/@theshelf/filestore": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/filestore/-/filestore-0.4.3.tgz", - "integrity": "sha512-qpSMKSs3jv3n58GtUVlCe2rqVbHjYdggc1hBmXnYFrgueNB0Y46Ok+0So4bF8OBg7Up5zrd+1fOvokaUfmY36A==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/filestore/-/filestore-0.4.5.tgz", + "integrity": "sha512-Eh3qedaAsloslFo5Bx4iVp+i95qTffiuE86lm17KEigXL1q6yBmSK182FKxqqwJXNy2vFrzlVHstJ7mnEZXDlA==", "license": "MIT", "peerDependencies": { "@theshelf/logging": "^0.4.3" } }, "node_modules/@theshelf/filestore-driver-s3": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/filestore-driver-s3/-/filestore-driver-s3-0.4.3.tgz", - "integrity": "sha512-TIzzvdu0xtwIQ8gI+/SXA3adJUTit2qhK8h1R+lQQrTaJ/ikk5x4a9aNsK9YLEZ7x5uT4zxCYjRldy2Pcdv3Mw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/filestore-driver-s3/-/filestore-driver-s3-0.4.5.tgz", + "integrity": "sha512-RrBzVotXxnGi4BJIYgaytVOphQZeY3wzYGo520S6zHoY7F3YncLgtXMzXUz3GifjKyS5ObiBrzaODDIjNBLXPw==", "license": "MIT", "dependencies": { - "@aws-sdk/client-s3": "^3.1000.0" + "@aws-sdk/client-s3": "^3.1048.0" }, "peerDependencies": { "@theshelf/filestore": "^0.4.3" } }, "node_modules/@theshelf/http": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/http/-/http-0.4.3.tgz", - "integrity": "sha512-FhTsk7XapGIYd4ompt7Mozr/VF5sAer2X82whyHe9c7M4WRS4sSSgwuM4C15sOXiTULpDlet9zhxloi7RK9F0Q==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/http/-/http-0.4.5.tgz", + "integrity": "sha512-HaVFRAEx7lkTTLFUtvkU/dmmiB9d0CSdDflcL8NKVFkLTchYx208s1ZkuMs+eGiN5R1Gty57Ajlqgc+pbeySHQ==", "license": "MIT", "peerDependencies": { "@theshelf/logging": "^0.4.3" } }, "node_modules/@theshelf/logging": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/logging/-/logging-0.4.3.tgz", - "integrity": "sha512-W9xWdPYN5n+PCaDeM+2uqYdGlcHh7tflHhAozleHKU/VcROFxsRJzGb0za2t/fsI+ONtskwRSC61NiT2Nwx+cg==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/logging/-/logging-0.4.5.tgz", + "integrity": "sha512-qkv9T63oufQdKnLe4Be5ZpyZw3L1g17fXaMmjdbUo/Qqf6So5Qy10XGDklO1ndrIEoVWFGUHYYSdEPcCfv/84Q==", "license": "MIT" }, "node_modules/@theshelf/logging-driver-database": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/logging-driver-database/-/logging-driver-database-0.4.3.tgz", - "integrity": "sha512-w1M4g5UVPz24Z9aomhnAVxhhH4VSlVUbo8NWCtapYK2ErVK1IwS3QISGBdzJDxz3plgjjmfXlDHKKX3d4QKRTw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/logging-driver-database/-/logging-driver-database-0.4.5.tgz", + "integrity": "sha512-qx22/QeOl2RWhkB+vY6ofFXnu/enpvNtZsYSQnrOH+D1O8CbY9CGrZ8L69PgUtfolNFDhTgrkyNuDAk4BGB+6w==", "license": "MIT", "peerDependencies": { "@theshelf/database": "^0.4.3", @@ -4613,30 +3924,30 @@ } }, "node_modules/@theshelf/notification": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/notification/-/notification-0.4.3.tgz", - "integrity": "sha512-GDW6RvL/XtqYySySY5ibkjFHgt4pN1Kg3fqb3qJmlq3DEYNxJo3u3XQ1LMs4hXyd2IooNp0KhuJlatd8Ub0gqg==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/notification/-/notification-0.4.5.tgz", + "integrity": "sha512-Vzs5Pba/FyHzqYtJgRWay1u6DK6yaMfdEeL4JMxXe8U1mu4g/dRAAxbzLE0F+PcjZEuP4lLgEHRxHs/VNqOg7w==", "license": "MIT", "peerDependencies": { "@theshelf/logging": "^0.4.3" } }, "node_modules/@theshelf/validation": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/validation/-/validation-0.4.3.tgz", - "integrity": "sha512-ZKOM29Rs+ia9KNgJpgKPfTWhc9T3OHCqFTyMDU96XNsiDy4oM8sZMocL4z8Q5d4fwsh755Z2sXZlzVE0/XzlOQ==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/validation/-/validation-0.4.5.tgz", + "integrity": "sha512-rAvgiQFMXYB0Ya8SM2ejUk7n9qK2sTyAf6h2DK53aeoOZsYoxKiAA9Q419AyMrxNC76jvLk9V89xmCjfuZ5F7A==", "license": "MIT", "peerDependencies": { "@theshelf/logging": "^0.4.3" } }, "node_modules/@theshelf/validation-driver-zod": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@theshelf/validation-driver-zod/-/validation-driver-zod-0.4.3.tgz", - "integrity": "sha512-pJBj09uqlfAhbZ65Qq0UZKEnw1N7dmUKes9rV31FKCZ7ruiJlKzL6/ANgI75ZBp1JVwUhM3KeH21M4ZW85wiug==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@theshelf/validation-driver-zod/-/validation-driver-zod-0.4.5.tgz", + "integrity": "sha512-zeIpn1N/Xzf8aCsup9KpJYBATT35GlKc/KFQDoqignLQzgrrd6OV/QCIpdVYOJNwOsAd21Zela86FnGB97sM2g==", "license": "MIT", "dependencies": { - "zod": "4.3.6" + "zod": "4.4.3" }, "peerDependencies": { "@theshelf/validation": "^0.4.3" @@ -5106,29 +4417,29 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz", - "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.6.tgz", + "integrity": "sha512-36l628fQ/9a/8ihy97eOtEnvWQEdqULQOJtcaxtoNq0G1w3Mxd4szSahOaMM9/NGyZ+hyKcMtIW/WIxq0XQViQ==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.18", - "ast-v8-to-istanbul": "^0.3.10", + "@vitest/utils": "4.1.6", + "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", - "magicast": "^0.5.1", + "magicast": "^0.5.2", "obug": "^2.1.1", - "std-env": "^3.10.0", - "tinyrainbow": "^3.0.3" + "std-env": "^4.0.0-rc.1", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.0.18", - "vitest": "4.0.18" + "@vitest/browser": "4.1.6", + "vitest": "4.1.6" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -5137,31 +4448,31 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.6.tgz", + "integrity": "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==", "dev": true, "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", + "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", - "tinyrainbow": "^3.0.3" + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.6.tgz", + "integrity": "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.18", + "@vitest/spy": "4.1.6", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -5170,7 +4481,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "msw": { @@ -5182,26 +4493,26 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.6.tgz", + "integrity": "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.6.tgz", + "integrity": "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", + "@vitest/utils": "4.1.6", "pathe": "^2.0.3" }, "funding": { @@ -5209,13 +4520,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.6.tgz", + "integrity": "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", + "@vitest/pretty-format": "4.1.6", + "@vitest/utils": "4.1.6", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -5224,9 +4536,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.6.tgz", + "integrity": "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==", "dev": true, "license": "MIT", "funding": { @@ -5234,14 +4546,15 @@ } }, "node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.6.tgz", + "integrity": "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" + "@vitest/pretty-format": "4.1.6", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -5500,9 +4813,9 @@ } }, "node_modules/ast-v8-to-istanbul": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.12.tgz", - "integrity": "sha512-BRRC8VRZY2R4Z4lFIL35MwNXmwVqBityvOIwETtsCSwvjl0IdgFsy9NhdaA6j74nUdtJJlIypeRhpDam19Wq3g==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.0.tgz", + "integrity": "sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -5613,9 +4926,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.28", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.28.tgz", - "integrity": "sha512-Ic44hnOtFIgravCunj1ifSoQPSUrkNiJuH9Mf6jr2jjoA74icqV8wU0KuadXeOR8zuIJMOoTv0GuQjZ9ZYNMeA==", + "version": "2.10.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", + "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5812,9 +5125,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001792", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", - "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", + "version": "1.0.30001793", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", + "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", "dev": true, "funding": [ { @@ -6261,6 +5574,18 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -6303,9 +5628,9 @@ } }, "node_modules/dotenv": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", - "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -6358,9 +5683,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.353", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.353.tgz", - "integrity": "sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==", + "version": "1.5.360", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.360.tgz", + "integrity": "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==", "dev": true, "license": "ISC" }, @@ -6374,9 +5699,9 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -6501,9 +5826,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "dev": true, "license": "MIT" }, @@ -6782,14 +6107,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", - "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "version": "2.0.0-next.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", + "integrity": "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", + "is-core-module": "^2.16.2", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", @@ -7120,9 +6445,9 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", - "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", + "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", "funding": [ { "type": "github", @@ -7132,7 +6457,7 @@ "license": "MIT", "dependencies": { "@nodable/entities": "^2.1.0", - "fast-xml-builder": "^1.1.5", + "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, @@ -7758,9 +7083,9 @@ "license": "MIT" }, "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -7772,8 +7097,8 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "domutils": "^3.2.2", + "entities": "^7.0.1" } }, "node_modules/http-errors": { @@ -8454,12 +7779,12 @@ } }, "node_modules/jitar": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/jitar/-/jitar-0.10.7.tgz", - "integrity": "sha512-HeyI5g8/7IRAZtpwYqIzhWsLTYXIW963fTcbGWDKDb0xf5qUxejZ+fpRE3rMifGrH+TtEvDvXL5W5l+uIJgXkw==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/jitar/-/jitar-0.11.0.tgz", + "integrity": "sha512-tAusuGbZxuPnFuE65TsSZHuK5WrL3jeNm/ioRh3mMTvEGgEzxM7uocIrm7u6GS716igCd9vV5CFKOMvJqhexsQ==", "license": "MIT", "dependencies": { - "dotenv": "17.3.1", + "dotenv": "17.4.2", "express": "5.2.1", "glob": "13.0.6", "mime-types": "3.0.2" @@ -8618,6 +7943,15 @@ "json-buffer": "3.0.1" } }, + "node_modules/launder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/launder/-/launder-1.7.1.tgz", + "integrity": "sha512-mU6WRz5EusL9ZZuiZ5SO4Y6C0P9PAUR9iwdb6bzj4KDihm28DiHFw+/yk9DBH4f+Pv1wuzQ4e2jV3oQ7mkIqvw==", + "license": "MIT", + "dependencies": { + "dayjs": "^1.11.7" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -8716,13 +8050,13 @@ } }, "node_modules/magicast": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", - "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", + "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", + "@babel/parser": "^7.29.3", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } @@ -8876,13 +8210,13 @@ } }, "node_modules/mongodb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-7.1.0.tgz", - "integrity": "sha512-kMfnKunbolQYwCIyrkxNJFB4Ypy91pYqua5NargS/f8ODNSJxT03ZU3n1JqL4mCzbSih8tvmMEMLpKTT7x5gCg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-7.2.0.tgz", + "integrity": "sha512-F/2+BMZtLVhY30ioZp0dAmZ+IRZMBqI+nrv6t5+9/1AIwCa8sMRC3jBf81lpxMhnZgqq8CoUD503Z1oZWq1/sw==", "license": "Apache-2.0", "dependencies": { "@mongodb-js/saslprep": "^1.3.0", - "bson": "^7.1.1", + "bson": "^7.2.0", "mongodb-connection-string-url": "^7.0.0" }, "engines": { @@ -9008,9 +8342,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.38", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", - "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "version": "2.0.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", + "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", "dev": true, "license": "MIT" }, @@ -9173,13 +8507,13 @@ } }, "node_modules/openid-client": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-6.8.2.tgz", - "integrity": "sha512-uOvTCndr4udZsKihJ68H9bUICrriHdUVJ6Az+4Ns6cW55rwM5h0bjVIzDz2SxgOI84LKjFyjOFvERLzdTUROGA==", + "version": "6.8.4", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-6.8.4.tgz", + "integrity": "sha512-QSw0BA08piujetEwfZsHoTrDpMEha7GDZDicQqVwX4u0ChCjefvjDB++TZ8BTg76UpwhzIQgdvvfgfl3HpCSAw==", "license": "MIT", "dependencies": { - "jose": "^6.1.3", - "oauth4webapi": "^3.8.4" + "jose": "^6.2.2", + "oauth4webapi": "^3.8.5" }, "funding": { "url": "https://github.com/sponsors/panva" @@ -9365,9 +8699,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", - "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", + "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -9443,9 +8777,9 @@ } }, "node_modules/postcss": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", - "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", "funding": [ { "type": "opencollective", @@ -9462,7 +8796,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -9529,9 +8863,9 @@ } }, "node_modules/qs": { - "version": "6.15.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", - "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -9905,9 +9239,9 @@ } }, "node_modules/rollup": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.3.tgz", - "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz", + "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", "dev": true, "license": "MIT", "dependencies": { @@ -9921,38 +9255,38 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.3", - "@rollup/rollup-android-arm64": "4.60.3", - "@rollup/rollup-darwin-arm64": "4.60.3", - "@rollup/rollup-darwin-x64": "4.60.3", - "@rollup/rollup-freebsd-arm64": "4.60.3", - "@rollup/rollup-freebsd-x64": "4.60.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", - "@rollup/rollup-linux-arm-musleabihf": "4.60.3", - "@rollup/rollup-linux-arm64-gnu": "4.60.3", - "@rollup/rollup-linux-arm64-musl": "4.60.3", - "@rollup/rollup-linux-loong64-gnu": "4.60.3", - "@rollup/rollup-linux-loong64-musl": "4.60.3", - "@rollup/rollup-linux-ppc64-gnu": "4.60.3", - "@rollup/rollup-linux-ppc64-musl": "4.60.3", - "@rollup/rollup-linux-riscv64-gnu": "4.60.3", - "@rollup/rollup-linux-riscv64-musl": "4.60.3", - "@rollup/rollup-linux-s390x-gnu": "4.60.3", - "@rollup/rollup-linux-x64-gnu": "4.60.3", - "@rollup/rollup-linux-x64-musl": "4.60.3", - "@rollup/rollup-openbsd-x64": "4.60.3", - "@rollup/rollup-openharmony-arm64": "4.60.3", - "@rollup/rollup-win32-arm64-msvc": "4.60.3", - "@rollup/rollup-win32-ia32-msvc": "4.60.3", - "@rollup/rollup-win32-x64-gnu": "4.60.3", - "@rollup/rollup-win32-x64-msvc": "4.60.3", + "@rollup/rollup-android-arm-eabi": "4.60.4", + "@rollup/rollup-android-arm64": "4.60.4", + "@rollup/rollup-darwin-arm64": "4.60.4", + "@rollup/rollup-darwin-x64": "4.60.4", + "@rollup/rollup-freebsd-arm64": "4.60.4", + "@rollup/rollup-freebsd-x64": "4.60.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", + "@rollup/rollup-linux-arm-musleabihf": "4.60.4", + "@rollup/rollup-linux-arm64-gnu": "4.60.4", + "@rollup/rollup-linux-arm64-musl": "4.60.4", + "@rollup/rollup-linux-loong64-gnu": "4.60.4", + "@rollup/rollup-linux-loong64-musl": "4.60.4", + "@rollup/rollup-linux-ppc64-gnu": "4.60.4", + "@rollup/rollup-linux-ppc64-musl": "4.60.4", + "@rollup/rollup-linux-riscv64-gnu": "4.60.4", + "@rollup/rollup-linux-riscv64-musl": "4.60.4", + "@rollup/rollup-linux-s390x-gnu": "4.60.4", + "@rollup/rollup-linux-x64-gnu": "4.60.4", + "@rollup/rollup-linux-x64-musl": "4.60.4", + "@rollup/rollup-openbsd-x64": "4.60.4", + "@rollup/rollup-openharmony-arm64": "4.60.4", + "@rollup/rollup-win32-arm64-msvc": "4.60.4", + "@rollup/rollup-win32-ia32-msvc": "4.60.4", + "@rollup/rollup-win32-x64-gnu": "4.60.4", + "@rollup/rollup-win32-x64-msvc": "4.60.4", "fsevents": "~2.3.2" } }, "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.3.tgz", - "integrity": "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==", + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", + "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", "cpu": [ "x64" ], @@ -10096,15 +9430,16 @@ "license": "MIT" }, "node_modules/sanitize-html": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.1.tgz", - "integrity": "sha512-ehFCW+q1a4CSOWRAdX97BX/6/PDEkCqw7/0JXZAGQV57FQB3YOkTa/rrzHPeJ+Aghy4vZAFfWMYyfxIiB7F/gw==", + "version": "2.17.4", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.4.tgz", + "integrity": "sha512-2HW7v2ol/uAM7sX4hbD8Z59OGWmAPrvjL8E71UWlBcj6m+kcF6ilQBLny+cIgY214QJeJT5tQuxKKqX0SQqjGQ==", "license": "MIT", "dependencies": { "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", - "htmlparser2": "^8.0.0", + "htmlparser2": "^10.1.0", "is-plain-object": "^5.0.0", + "launder": "^1.7.1", "parse-srcset": "^1.0.2", "postcss": "^8.3.11" } @@ -10380,9 +9715,9 @@ } }, "node_modules/smob": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/smob/-/smob-1.6.1.tgz", - "integrity": "sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.6.2.tgz", + "integrity": "sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==", "dev": true, "license": "MIT", "engines": { @@ -10488,9 +9823,9 @@ } }, "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", "dev": true, "license": "MIT" }, @@ -10947,17 +10282,34 @@ } }, "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "license": "MIT", "dependencies": { - "content-type": "^1.0.5", + "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/typed-array-buffer": { @@ -11241,9 +10593,9 @@ } }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", + "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", "dev": true, "license": "MIT", "dependencies": { @@ -11398,31 +10750,31 @@ } }, "node_modules/vitest": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", - "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.6.tgz", + "integrity": "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.0.18", - "@vitest/mocker": "4.0.18", - "@vitest/pretty-format": "4.0.18", - "@vitest/runner": "4.0.18", - "@vitest/snapshot": "4.0.18", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "es-module-lexer": "^1.7.0", - "expect-type": "^1.2.2", + "@vitest/expect": "4.1.6", + "@vitest/mocker": "4.1.6", + "@vitest/pretty-format": "4.1.6", + "@vitest/runner": "4.1.6", + "@vitest/snapshot": "4.1.6", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", - "std-env": "^3.10.0", + "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "bin": { @@ -11438,12 +10790,15 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.18", - "@vitest/browser-preview": "4.0.18", - "@vitest/browser-webdriverio": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/browser-playwright": "4.1.6", + "@vitest/browser-preview": "4.1.6", + "@vitest/browser-webdriverio": "4.1.6", + "@vitest/coverage-istanbul": "4.1.6", + "@vitest/coverage-v8": "4.1.6", + "@vitest/ui": "4.1.6", "happy-dom": "*", - "jsdom": "*" + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { @@ -11464,6 +10819,12 @@ "@vitest/browser-webdriverio": { "optional": true }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, "@vitest/ui": { "optional": true }, @@ -11472,6 +10833,9 @@ }, "jsdom": { "optional": true + }, + "vite": { + "optional": false } } }, @@ -11963,9 +11327,9 @@ } }, "node_modules/zod": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 959054ac..63a36e86 100644 --- a/package.json +++ b/package.json @@ -50,26 +50,26 @@ "jitar": "0.11.0", "@maskingtech/designsystem": "0.0.8", "@maskingtech/react-toolkit": "0.0.4", - "@theshelf/authentication": "0.4.3", - "@theshelf/database": "0.4.3", - "@theshelf/connection": "0.4.3", - "@theshelf/eventbroker": "0.4.3", - "@theshelf/filestore": "0.4.3", - "@theshelf/http": "0.4.3", - "@theshelf/logging": "0.4.3", - "@theshelf/notification": "0.4.3", - "@theshelf/validation": "0.4.3", - "@theshelf/authentication-driver-openid": "0.4.3", - "@theshelf/database-driver-mongodb": "0.4.3", - "@theshelf/filestore-driver-s3": "0.4.3", - "@theshelf/logging-driver-database": "0.4.3", - "@theshelf/validation-driver-zod": "0.4.3", - "@jitar-plugins/authentication": "0.1.3", - "@jitar-plugins/database": "0.1.3", - "@jitar-plugins/eventbroker": "0.1.3", - "@jitar-plugins/filestore": "0.1.3", - "@jitar-plugins/http": "0.1.3", - "@jitar-plugins/notification": "0.1.3" + "@theshelf/authentication": "0.4.5", + "@theshelf/database": "0.4.5", + "@theshelf/connection": "0.4.5", + "@theshelf/eventbroker": "0.4.5", + "@theshelf/filestore": "0.4.5", + "@theshelf/http": "0.4.5", + "@theshelf/logging": "0.4.5", + "@theshelf/notification": "0.4.5", + "@theshelf/validation": "0.4.5", + "@theshelf/authentication-driver-openid": "0.4.5", + "@theshelf/database-driver-mongodb": "0.4.5", + "@theshelf/filestore-driver-s3": "0.4.5", + "@theshelf/logging-driver-database": "0.4.5", + "@theshelf/validation-driver-zod": "0.4.5", + "@jitar-plugins/authentication": "0.1.5", + "@jitar-plugins/database": "0.1.5", + "@jitar-plugins/eventbroker": "0.1.5", + "@jitar-plugins/filestore": "0.1.5", + "@jitar-plugins/http": "0.1.5", + "@jitar-plugins/notification": "0.1.5" }, "devDependencies": { "@eslint/js": "9.39.4", @@ -78,7 +78,7 @@ "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "5.1.4", - "@vitest/coverage-v8": "4.0.18", + "@vitest/coverage-v8": "4.1.6", "cpx2": "8.0.0", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "7.0.1", @@ -86,10 +86,10 @@ "tsc-alias": "1.8.16", "typescript": "5.9.3", "typescript-eslint": "8.56.0", - "vite": "7.3.1", + "vite": "7.3.3", "vite-plugin-pwa": "1.2.0", "vite-tsconfig-paths": "5.1.4", - "vitest": "4.0.18" + "vitest": "4.1.6" }, "overrides": { "@rollup/plugin-terser": "1.0.0"