@aeolus-fleet/gateway 0.28.1 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/dist/adapters/crypto/account-sign-in-seals.d.ts +7 -0
- package/dist/adapters/crypto/account-sign-in-seals.js +21 -0
- package/dist/adapters/crypto/account-sign-in-seals.js.map +1 -0
- package/dist/adapters/crypto/sign-in-seals.d.ts +1 -1
- package/dist/adapters/crypto/sign-in-seals.js +3 -6
- package/dist/adapters/crypto/sign-in-seals.js.map +1 -1
- package/dist/adapters/fleet/core-version.d.ts +1 -1
- package/dist/adapters/fleet/core-version.js +1 -1
- package/dist/adapters/fleet/fleet-ships.d.ts +6 -0
- package/dist/adapters/fleet/fleet-ships.js +23 -0
- package/dist/adapters/fleet/fleet-ships.js.map +1 -0
- package/dist/adapters/fleet/proxy-ship-reads.d.ts +2 -2
- package/dist/adapters/fleet/proxy-ship-reads.js +6 -3
- package/dist/adapters/fleet/proxy-ship-reads.js.map +1 -1
- package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -1
- package/dist/adapters/fleet/rest-fleet-door.js +34 -14
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/account-sign-in-routes.d.ts +19 -0
- package/dist/adapters/http/account-sign-in-routes.js +61 -0
- package/dist/adapters/http/account-sign-in-routes.js.map +1 -0
- package/dist/adapters/http/forms.d.ts +9 -0
- package/dist/adapters/http/forms.js +23 -0
- package/dist/adapters/http/forms.js.map +1 -0
- package/dist/adapters/http/front-door.d.ts +11 -4
- package/dist/adapters/http/front-door.js +48 -8
- package/dist/adapters/http/front-door.js.map +1 -1
- package/dist/adapters/http/live.d.ts +2 -12
- package/dist/adapters/http/live.js +4 -65
- package/dist/adapters/http/live.js.map +1 -1
- package/dist/adapters/http/oauth-routes.d.ts +14 -16
- package/dist/adapters/http/oauth-routes.js +23 -139
- package/dist/adapters/http/oauth-routes.js.map +1 -1
- package/dist/adapters/http/person-tools.d.ts +9 -4
- package/dist/adapters/http/person-tools.js +49 -5
- package/dist/adapters/http/person-tools.js.map +1 -1
- package/dist/adapters/pagasae/shared-sign-in.d.ts +11 -0
- package/dist/adapters/pagasae/shared-sign-in.js +123 -0
- package/dist/adapters/pagasae/shared-sign-in.js.map +1 -0
- package/dist/adapters/prisma/generated/browser.d.ts +1 -1
- package/dist/adapters/prisma/generated/client.d.ts +1 -1
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +30 -2
- package/dist/adapters/prisma/opened-deliveries.js +18 -12
- package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +143 -4
- package/dist/adapters/trpc/router.js +151 -5
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/adapters/web/next-web-app.d.ts +10 -0
- package/dist/adapters/web/next-web-app.js +27 -0
- package/dist/adapters/web/next-web-app.js.map +1 -0
- package/dist/app.d.ts +9 -1
- package/dist/app.js +53 -29
- package/dist/app.js.map +1 -1
- package/dist/bin/aeolus-gateway.js +12 -1
- package/dist/bin/aeolus-gateway.js.map +1 -1
- package/dist/config.d.ts +18 -0
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/core/account-sign-in/account-in-view.d.ts +43 -0
- package/dist/core/account-sign-in/account-in-view.js +52 -0
- package/dist/core/account-sign-in/account-in-view.js.map +1 -0
- package/dist/core/account-sign-in/account-of-sign-in.d.ts +23 -0
- package/dist/core/account-sign-in/account-of-sign-in.js +41 -0
- package/dist/core/account-sign-in/account-of-sign-in.js.map +1 -0
- package/dist/core/account-sign-in/complete-account-sign-in.d.ts +37 -0
- package/dist/core/account-sign-in/complete-account-sign-in.js +25 -0
- package/dist/core/account-sign-in/complete-account-sign-in.js.map +1 -0
- package/dist/core/account-sign-in/ports.d.ts +92 -0
- package/dist/core/account-sign-in/ports.js +3 -0
- package/dist/core/account-sign-in/ports.js.map +1 -0
- package/dist/core/account-sign-in/sign-out-account.d.ts +15 -0
- package/dist/core/account-sign-in/sign-out-account.js +12 -0
- package/dist/core/account-sign-in/sign-out-account.js.map +1 -0
- package/dist/core/account-sign-in/start-account-sign-in.d.ts +25 -0
- package/dist/core/account-sign-in/start-account-sign-in.js +26 -0
- package/dist/core/account-sign-in/start-account-sign-in.js.map +1 -0
- package/dist/core/actors/authenticate-actor.d.ts +14 -15
- package/dist/core/actors/authenticate-actor.js +10 -12
- package/dist/core/actors/authenticate-actor.js.map +1 -1
- package/dist/core/actors/credential-of.d.ts +4 -6
- package/dist/core/actors/credential-of.js +4 -8
- package/dist/core/actors/credential-of.js.map +1 -1
- package/dist/core/connection/answer-pings.d.ts +19 -0
- package/dist/core/connection/answer-pings.js +34 -0
- package/dist/core/connection/answer-pings.js.map +1 -0
- package/dist/core/connection/ports.d.ts +18 -1
- package/dist/core/operator/authenticate-operator.d.ts +4 -3
- package/dist/core/operator/authenticate-operator.js +4 -2
- package/dist/core/operator/authenticate-operator.js.map +1 -1
- package/dist/core/parties/list-owner-choices.d.ts +24 -0
- package/dist/core/parties/list-owner-choices.js +25 -0
- package/dist/core/parties/list-owner-choices.js.map +1 -0
- package/dist/core/parties/list-parties.js +1 -1
- package/dist/core/parties/list-parties.js.map +1 -1
- package/dist/core/parties/ports.d.ts +14 -5
- package/dist/core/parties/shown-party.d.ts +8 -2
- package/dist/core/parties/shown-party.js.map +1 -1
- package/dist/core/people/crew-person-ship.d.ts +3 -5
- package/dist/core/people/crew-person-ship.js +6 -5
- package/dist/core/people/crew-person-ship.js.map +1 -1
- package/dist/core/people/inbox-entry.d.ts +2 -1
- package/dist/core/people/inbox-entry.js +3 -0
- package/dist/core/people/inbox-entry.js.map +1 -1
- package/dist/core/people/list-ships.d.ts +17 -0
- package/dist/core/people/list-ships.js +20 -0
- package/dist/core/people/list-ships.js.map +1 -0
- package/dist/core/people/open-delivery.d.ts +14 -9
- package/dist/core/people/open-delivery.js +24 -4
- package/dist/core/people/open-delivery.js.map +1 -1
- package/dist/core/people/person-crew.d.ts +13 -1
- package/dist/core/people/person-crew.js.map +1 -1
- package/dist/core/people/ports.d.ts +42 -3
- package/dist/core/people/read-inbox.d.ts +15 -9
- package/dist/core/people/read-inbox.js +17 -6
- package/dist/core/people/read-inbox.js.map +1 -1
- package/dist/core/people/send-message.d.ts +32 -0
- package/dist/core/people/send-message.js +22 -0
- package/dist/core/people/send-message.js.map +1 -0
- package/dist/core/requests/ask-for-server.d.ts +2 -2
- package/dist/core/requests/watch-waiting.d.ts +2 -1
- package/dist/core/requests/watch-waiting.js +2 -2
- package/dist/core/requests/watch-waiting.js.map +1 -1
- package/dist/core/sign-in/complete-sign-in.d.ts +4 -11
- package/dist/core/sign-in/complete-sign-in.js +1 -23
- package/dist/core/sign-in/complete-sign-in.js.map +1 -1
- package/dist/core/sign-in/own-page.d.ts +10 -0
- package/dist/core/sign-in/own-page.js +35 -0
- package/dist/core/sign-in/own-page.js.map +1 -0
- package/dist/core/sign-in/ports.d.ts +3 -24
- package/dist/ping-worker.d.ts +20 -0
- package/dist/ping-worker.js +33 -0
- package/dist/ping-worker.js.map +1 -0
- package/package.json +23 -5
- package/src/adapters/prisma/migrations/20261021120000_opened_deliveries_sent_at/migration.sql +4 -0
- package/src/adapters/prisma/schema.prisma +2 -1
- package/web/.next/BUILD_ID +1 -0
- package/web/.next/app-path-routes-manifest.json +17 -0
- package/web/.next/build/chunks/[root-of-the-server]__17pn3jjqv9c44._.js +192 -0
- package/web/.next/build/chunks/[root-of-the-server]__17pn3jjqv9c44._.js.map +8 -0
- package/web/.next/build/chunks/[root-of-the-server]__1ehkf7gbe4e6q._.js +502 -0
- package/web/.next/build/chunks/[root-of-the-server]__1ehkf7gbe4e6q._.js.map +11 -0
- package/web/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1t6pazwwggn3s._.js +13 -0
- package/web/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1t6pazwwggn3s._.js.map +5 -0
- package/web/.next/build/chunks/[turbopack]_runtime.js +1056 -0
- package/web/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
- package/web/.next/build/chunks/node_modules_0ds4fgws35qq2._.js +7337 -0
- package/web/.next/build/chunks/node_modules_0ds4fgws35qq2._.js.map +47 -0
- package/web/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_1inl-dyesk97a._.js +6 -0
- package/web/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_1inl-dyesk97a._.js.map +5 -0
- package/web/.next/build/package.json +1 -0
- package/web/.next/build-manifest.json +194 -0
- package/web/.next/diagnostics/build-diagnostics.json +6 -0
- package/web/.next/diagnostics/framework.json +1 -0
- package/web/.next/diagnostics/route-bundle-stats.json +195 -0
- package/web/.next/export-marker.json +6 -0
- package/web/.next/fallback-build-manifest.json +15 -0
- package/web/.next/images-manifest.json +68 -0
- package/web/.next/next-minimal-server.js.nft.json +1 -0
- package/web/.next/next-server.js.nft.json +1 -0
- package/web/.next/package.json +1 -0
- package/web/.next/prerender-manifest.json +40 -0
- package/web/.next/required-server-files.js +367 -0
- package/web/.next/required-server-files.json +367 -0
- package/web/.next/routes-manifest.json +144 -0
- package/web/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/_global-error/page/build-manifest.json +23 -0
- package/web/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/web/.next/server/app/_global-error/page.js +12 -0
- package/web/.next/server/app/_global-error/page.js.map +5 -0
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/_global-error.html +1 -0
- package/web/.next/server/app/_global-error.meta +30 -0
- package/web/.next/server/app/_global-error.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +23 -0
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/_not-found/page/build-manifest.json +23 -0
- package/web/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/_not-found/page.js +17 -0
- package/web/.next/server/app/_not-found/page.js.map +5 -0
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/authorize/failed/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/authorize/failed/page/build-manifest.json +23 -0
- package/web/.next/server/app/authorize/failed/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/authorize/failed/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/authorize/failed/page.js +18 -0
- package/web/.next/server/app/authorize/failed/page.js.map +5 -0
- package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -0
- package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/authorize/pick/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/authorize/pick/page/build-manifest.json +23 -0
- package/web/.next/server/app/authorize/pick/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/authorize/pick/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/authorize/pick/page.js +19 -0
- package/web/.next/server/app/authorize/pick/page.js.map +5 -0
- package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -0
- package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/authorize/waiting/approval/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +23 -0
- package/web/.next/server/app/authorize/waiting/approval/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/authorize/waiting/approval/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/authorize/waiting/approval/page.js +19 -0
- package/web/.next/server/app/authorize/waiting/approval/page.js.map +5 -0
- package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -0
- package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/change/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/outside-parties/[name]/change/page.js +22 -0
- package/web/.next/server/app/outside-parties/[name]/change/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/[name]/change/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/change/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/[name]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/[name]/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/[name]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/[name]/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/outside-parties/[name]/page.js +20 -0
- package/web/.next/server/app/outside-parties/[name]/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/[name]/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page.js +21 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/[name]/retire/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/add/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/add/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/add/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/add/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/add/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/outside-parties/add/page.js +19 -0
- package/web/.next/server/app/outside-parties/add/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/add/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/add/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/outside-parties/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/outside-parties/page/build-manifest.json +23 -0
- package/web/.next/server/app/outside-parties/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/outside-parties/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/outside-parties/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/outside-parties/page.js +20 -0
- package/web/.next/server/app/outside-parties/page.js.map +5 -0
- package/web/.next/server/app/outside-parties/page.js.nft.json +1 -0
- package/web/.next/server/app/outside-parties/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/overview/changes/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/overview/changes/route/build-manifest.json +12 -0
- package/web/.next/server/app/overview/changes/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/overview/changes/route.js +6 -0
- package/web/.next/server/app/overview/changes/route.js.map +5 -0
- package/web/.next/server/app/overview/changes/route.js.nft.json +1 -0
- package/web/.next/server/app/overview/changes/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/overview/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/overview/page/build-manifest.json +23 -0
- package/web/.next/server/app/overview/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/overview/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/overview/page/server-reference-manifest.json +45 -0
- package/web/.next/server/app/overview/page.js +24 -0
- package/web/.next/server/app/overview/page.js.map +5 -0
- package/web/.next/server/app/overview/page.js.nft.json +1 -0
- package/web/.next/server/app/overview/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/build-manifest.json +23 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/overview/requests/[requestId]/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/overview/requests/[requestId]/page.js +24 -0
- package/web/.next/server/app/overview/requests/[requestId]/page.js.map +5 -0
- package/web/.next/server/app/overview/requests/[requestId]/page.js.nft.json +1 -0
- package/web/.next/server/app/overview/requests/[requestId]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/parties/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/parties/page/build-manifest.json +23 -0
- package/web/.next/server/app/parties/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/parties/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/parties/page/server-reference-manifest.json +55 -0
- package/web/.next/server/app/parties/page.js +22 -0
- package/web/.next/server/app/parties/page.js.map +5 -0
- package/web/.next/server/app/parties/page.js.nft.json +1 -0
- package/web/.next/server/app/parties/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/sign-in/failed/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/sign-in/failed/page/build-manifest.json +23 -0
- package/web/.next/server/app/sign-in/failed/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/sign-in/failed/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/sign-in/failed/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/sign-in/failed/page.js +18 -0
- package/web/.next/server/app/sign-in/failed/page.js.map +5 -0
- package/web/.next/server/app/sign-in/failed/page.js.nft.json +1 -0
- package/web/.next/server/app/sign-in/failed/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app-paths-manifest.json +17 -0
- package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +3 -0
- package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js +369 -0
- package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js.map +1 -0
- package/web/.next/server/chunks/[turbopack]_runtime.js +937 -0
- package/web/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04_bc8g0oe4jt._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04_bc8g0oe4jt._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0py1t7q9ntzgc._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0py1t7q9ntzgc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +14 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[turbopack]_runtime.js +937 -0
- package/web/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +4 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +57 -0
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js +4 -0
- package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js +4 -0
- package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +4 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js +4 -0
- package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js +4 -0
- package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js +3 -0
- package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +4 -0
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +4 -0
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0gxlxpuufujz9._.js +33 -0
- package/web/.next/server/chunks/ssr/node_modules_0gxlxpuufujz9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0h91jdk0pr40d._.js +33 -0
- package/web/.next/server/chunks/ssr/node_modules_0h91jdk0pr40d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +17 -0
- package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_164yuq6c86vw2._.js +291 -0
- package/web/.next/server/chunks/ssr/node_modules_next_164yuq6c86vw2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_17rgm9-6qzdn5._.js +313 -0
- package/web/.next/server/chunks/ssr/node_modules_next_17rgm9-6qzdn5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +6 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892nagajq.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892nagajq.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0xky89qu.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0xky89qu.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@edge-runtime_cookies_index_1kiz_an963mbg.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@edge-runtime_cookies_index_1kiz_an963mbg.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z4y02i7.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z4y02i7.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js +3 -0
- package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js +10 -0
- package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app__global-error_page_actions_0crg1npwvbfn5.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app__global-error_page_actions_0crg1npwvbfn5.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_authorize_ui_waiting-for-approval_tsx_00iwjvj4orq9g._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_authorize_ui_waiting-for-approval_tsx_00iwjvj4orq9g._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -0
- package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js +3 -0
- package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js.map +1 -0
- package/web/.next/server/functions-config-manifest.json +4 -0
- package/web/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/web/.next/server/middleware-build-manifest.js +194 -0
- package/web/.next/server/middleware-manifest.json +6 -0
- package/web/.next/server/next-font-manifest.js +1 -0
- package/web/.next/server/next-font-manifest.json +59 -0
- package/web/.next/server/pages/500.html +1 -0
- package/web/.next/server/pages-manifest.json +3 -0
- package/web/.next/server/prefetch-hints.json +11 -0
- package/web/.next/server/preview-props.json +5 -0
- package/web/.next/server/server-reference-manifest.js +1 -0
- package/web/.next/server/server-reference-manifest.json +202 -0
- package/web/.next/static/6OjpPl7qD1uqwr6E41aT5/_buildManifest.js +11 -0
- package/web/.next/static/6OjpPl7qD1uqwr6E41aT5/_clientMiddlewareManifest.js +1 -0
- package/web/.next/static/6OjpPl7qD1uqwr6E41aT5/_ssgManifest.js +1 -0
- package/web/.next/static/chunks/0a1vw3r93lh06.js +1 -0
- package/web/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
- package/web/.next/static/chunks/0lzisjsmhlhjf.js +1 -0
- package/web/.next/static/chunks/0umf92h1sb77c.js +1 -0
- package/web/.next/static/chunks/131oz96e71xwn.js +1 -0
- package/web/.next/static/chunks/1cduebcshlfd5.js +1 -0
- package/web/.next/static/chunks/1ma7v1viiz247.js +1 -0
- package/web/.next/static/chunks/1w-xaw2grqv_2.js +1 -0
- package/web/.next/static/chunks/22u81hd6kxqsx.js +1 -0
- package/web/.next/static/chunks/2ewacyhp73due.js +1 -0
- package/web/.next/static/chunks/2hz8yws_wswjz.js +31 -0
- package/web/.next/static/chunks/2qpupho1jn-iy.js +1 -0
- package/web/.next/static/chunks/2ta7dqldhv69y.js +1 -0
- package/web/.next/static/chunks/30n1j9zag1f0q.css +3 -0
- package/web/.next/static/chunks/3knqujtrdi225.js +1 -0
- package/web/.next/static/chunks/3sv0_hjr9t4cp.js +1 -0
- package/web/.next/static/chunks/3yltnnufhaitm.js +1 -0
- package/web/.next/static/chunks/41rcj9-d-7p_4.js +22 -0
- package/web/.next/static/chunks/turbopack-3-ry682tkyiqk.js +1 -0
- package/web/.next/static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2 +0 -0
- package/web/.next/static/media/geist_variable-s.p.0mrjj4bg00-he.woff2 +0 -0
- package/web/.next/trace +1 -0
- package/web/.next/trace-build +1 -0
- package/web/.next/turbopack +0 -0
- package/web/.next/types/cache-life.d.ts +114 -0
- package/web/.next/types/root-params.d.ts +3 -0
- package/web/.next/types/routes.d.ts +85 -0
- package/web/.next/types/validator.ts +288 -0
- package/web/next.config.ts +9 -0
- package/dist/adapters/crypto/page-sessions.d.ts +0 -15
- package/dist/adapters/crypto/page-sessions.js +0 -40
- package/dist/adapters/crypto/page-sessions.js.map +0 -1
- package/dist/adapters/http/add-server-page.d.ts +0 -7
- package/dist/adapters/http/add-server-page.js +0 -175
- package/dist/adapters/http/add-server-page.js.map +0 -1
- package/dist/adapters/http/delivery-page.d.ts +0 -24
- package/dist/adapters/http/delivery-page.js +0 -115
- package/dist/adapters/http/delivery-page.js.map +0 -1
- package/dist/adapters/http/html.d.ts +0 -15
- package/dist/adapters/http/html.js +0 -53
- package/dist/adapters/http/html.js.map +0 -1
- package/dist/adapters/http/outside-parties-page.d.ts +0 -33
- package/dist/adapters/http/outside-parties-page.js +0 -153
- package/dist/adapters/http/outside-parties-page.js.map +0 -1
- package/dist/adapters/http/outside-party-page.d.ts +0 -7
- package/dist/adapters/http/outside-party-page.js +0 -212
- package/dist/adapters/http/outside-party-page.js.map +0 -1
- package/dist/adapters/http/overview-page.d.ts +0 -17
- package/dist/adapters/http/overview-page.js +0 -298
- package/dist/adapters/http/overview-page.js.map +0 -1
- package/dist/adapters/http/parties-page.d.ts +0 -7
- package/dist/adapters/http/parties-page.js +0 -139
- package/dist/adapters/http/parties-page.js.map +0 -1
- package/dist/adapters/http/scope-rows.d.ts +0 -10
- package/dist/adapters/http/scope-rows.js +0 -30
- package/dist/adapters/http/scope-rows.js.map +0 -1
- package/dist/adapters/http/signal.d.ts +0 -61
- package/dist/adapters/http/signal.js +0 -263
- package/dist/adapters/http/signal.js.map +0 -1
- package/dist/core/sign-in/sign-out.d.ts +0 -10
- package/dist/core/sign-in/sign-out.js +0 -9
- package/dist/core/sign-in/sign-out.js.map +0 -1
- package/dist/core/sign-in/start-page-sign-in.d.ts +0 -25
- package/dist/core/sign-in/start-page-sign-in.js +0 -30
- package/dist/core/sign-in/start-page-sign-in.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { FleetId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { Clock } from '../shared/clock.js';
|
|
3
|
+
import { type Result } from '../shared/result.js';
|
|
4
|
+
import type { SharedAccountToken, SharedSignIn, SharedSignInRefusal } from './ports.js';
|
|
5
|
+
export type AccountOfSignIn = ((asked: {
|
|
6
|
+
signIn: string;
|
|
7
|
+
fleetId: FleetId;
|
|
8
|
+
}) => Promise<Result<SharedAccountToken, SharedSignInRefusal>>) & {
|
|
9
|
+
/** Drops every token kept for the sign-in, as when it is signed out here. */
|
|
10
|
+
forget(signIn: string): void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Use case: the account token a shared sign-in has in a fleet (header design
|
|
14
|
+
* H5, accounts design A3). pagasae answers a fresh one at every exchange; the
|
|
15
|
+
* gateway keeps it per sign-in and fleet until a minute before it ends, so a
|
|
16
|
+
* page's many calls make one exchange, and a sign-out anywhere or a change of
|
|
17
|
+
* rights lands at the next. A refusal is never kept, and a sign-out here
|
|
18
|
+
* drops what was kept at once.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createAccountOfSignIn(deps: {
|
|
21
|
+
signIns: Pick<SharedSignIn, 'accountToken'>;
|
|
22
|
+
clock: Clock;
|
|
23
|
+
}): AccountOfSignIn;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ok } from '../shared/result.js';
|
|
2
|
+
import { ACCOUNT_TOKEN_MARGIN_MS } from '../sign-in/account-token.js';
|
|
3
|
+
/**
|
|
4
|
+
* Use case: the account token a shared sign-in has in a fleet (header design
|
|
5
|
+
* H5, accounts design A3). pagasae answers a fresh one at every exchange; the
|
|
6
|
+
* gateway keeps it per sign-in and fleet until a minute before it ends, so a
|
|
7
|
+
* page's many calls make one exchange, and a sign-out anywhere or a change of
|
|
8
|
+
* rights lands at the next. A refusal is never kept, and a sign-out here
|
|
9
|
+
* drops what was kept at once.
|
|
10
|
+
*/
|
|
11
|
+
export function createAccountOfSignIn(deps) {
|
|
12
|
+
const kept = new Map();
|
|
13
|
+
const isFresh = (token) => token.endsAt.getTime() - ACCOUNT_TOKEN_MARGIN_MS > deps.clock.now().getTime();
|
|
14
|
+
const accountOf = async ({ signIn, fleetId }) => {
|
|
15
|
+
const key = `${fleetId} ${signIn}`;
|
|
16
|
+
const held = kept.get(key);
|
|
17
|
+
if (held !== undefined && isFresh(held)) {
|
|
18
|
+
return ok(held);
|
|
19
|
+
}
|
|
20
|
+
kept.delete(key);
|
|
21
|
+
const exchanged = await deps.signIns.accountToken({ signIn, fleetId });
|
|
22
|
+
if (exchanged.isOk) {
|
|
23
|
+
for (const [other, token] of kept) {
|
|
24
|
+
if (!isFresh(token)) {
|
|
25
|
+
kept.delete(other);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
kept.set(key, exchanged.value);
|
|
29
|
+
}
|
|
30
|
+
return exchanged;
|
|
31
|
+
};
|
|
32
|
+
const forget = (signIn) => {
|
|
33
|
+
for (const key of kept.keys()) {
|
|
34
|
+
if (key.endsWith(` ${signIn}`)) {
|
|
35
|
+
kept.delete(key);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return Object.assign(accountOf, { forget });
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=account-of-sign-in.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-of-sign-in.js","sourceRoot":"","sources":["../../../src/core/account-sign-in/account-of-sign-in.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAQtE;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAmE;IACvG,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,MAAM,OAAO,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7H,MAAM,SAAS,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAwC,EAAE,EAAE;QACpF,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Clock } from '../shared/clock.js';
|
|
2
|
+
import { type Result } from '../shared/result.js';
|
|
3
|
+
import type { AccountSignInSeals, SharedSignIn } from './ports.js';
|
|
4
|
+
/**
|
|
5
|
+
* Why a sign-in sent the person nowhere:
|
|
6
|
+
* - unknownSignIn: the gateway sealed no sign-in into this state, or its 10 minutes passed;
|
|
7
|
+
* - otherBrowser: the browser that came back does not hold the sign-in's secret, as when another site makes it finish its own;
|
|
8
|
+
* - pagasaeRefused: pagasae sent no code, or did not redeem it, for the reason given.
|
|
9
|
+
*/
|
|
10
|
+
export type AccountSignInRefusal = {
|
|
11
|
+
readonly kind: 'unknownSignIn';
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'otherBrowser';
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: 'pagasaeRefused';
|
|
16
|
+
readonly message: string;
|
|
17
|
+
};
|
|
18
|
+
export type CompleteAccountSignIn = (back: {
|
|
19
|
+
state?: string | undefined;
|
|
20
|
+
code?: string | undefined;
|
|
21
|
+
error?: string | undefined;
|
|
22
|
+
browserSecret?: string | undefined;
|
|
23
|
+
}) => Promise<Result<{
|
|
24
|
+
redirectTo: string;
|
|
25
|
+
}, AccountSignInRefusal>>;
|
|
26
|
+
/**
|
|
27
|
+
* Use case: pagasae sends the person back. Their sign-in is opened from its
|
|
28
|
+
* state, and pagasae's code redeemed with the gateway's verifier, which
|
|
29
|
+
* proves the round trip; the shared sign-in is then the browser's, in
|
|
30
|
+
* pagasae's cookie, and the gateway keeps nothing. The person goes back to
|
|
31
|
+
* the page they asked for.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createCompleteAccountSignIn(deps: {
|
|
34
|
+
seals: AccountSignInSeals;
|
|
35
|
+
signIns: SharedSignIn;
|
|
36
|
+
clock: Clock;
|
|
37
|
+
}): CompleteAccountSignIn;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { err, ok } from '../shared/result.js';
|
|
2
|
+
/**
|
|
3
|
+
* Use case: pagasae sends the person back. Their sign-in is opened from its
|
|
4
|
+
* state, and pagasae's code redeemed with the gateway's verifier, which
|
|
5
|
+
* proves the round trip; the shared sign-in is then the browser's, in
|
|
6
|
+
* pagasae's cookie, and the gateway keeps nothing. The person goes back to
|
|
7
|
+
* the page they asked for.
|
|
8
|
+
*/
|
|
9
|
+
export function createCompleteAccountSignIn(deps) {
|
|
10
|
+
return async ({ state, code, error, browserSecret }) => {
|
|
11
|
+
const signIn = state === undefined ? undefined : deps.seals.open(state);
|
|
12
|
+
if (signIn === undefined || signIn.expiresAt.getTime() <= deps.clock.now().getTime()) {
|
|
13
|
+
return err({ kind: 'unknownSignIn' });
|
|
14
|
+
}
|
|
15
|
+
if (browserSecret !== signIn.browserSecret) {
|
|
16
|
+
return err({ kind: 'otherBrowser' });
|
|
17
|
+
}
|
|
18
|
+
if (error !== undefined || code === undefined) {
|
|
19
|
+
return err({ kind: 'pagasaeRefused', message: error ?? 'pagasae sent no code' });
|
|
20
|
+
}
|
|
21
|
+
const redeemed = await deps.signIns.redeemCode({ code, verifier: signIn.verifier });
|
|
22
|
+
return redeemed.isOk ? ok({ redirectTo: signIn.returnTo }) : err({ kind: 'pagasaeRefused', message: redeemed.error.reason });
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=complete-account-sign-in.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complete-account-sign-in.js","sourceRoot":"","sources":["../../../src/core/account-sign-in/complete-account-sign-in.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAkB3D;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAwE;IAClH,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACrF,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,aAAa,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3C,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/H,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The account sign-in every Aeolus app shares (aeolus-fleet's header design,
|
|
3
|
+
* H5): pagasae keeps one sign-in per browser in its own cookie on the domain
|
|
4
|
+
* the apps share, and the gateway's pages, an app in pagasae's APP_CLIENTS,
|
|
5
|
+
* exchange it server to server for the account token of the fleet in view.
|
|
6
|
+
* The gateway keeps no grant for it: every token is that one exchange.
|
|
7
|
+
*/
|
|
8
|
+
import type { FleetId, ShipId } from '@aeolus-fleet/common';
|
|
9
|
+
import type { Result } from '../shared/result.js';
|
|
10
|
+
/** The cookie pagasae keeps the shared sign-in in, on the domain every Aeolus app shares. */
|
|
11
|
+
export declare const SHARED_SIGN_IN_COOKIE = "aeolus_account_session";
|
|
12
|
+
/** A sign-in to the gateway's pages under way at pagasae: its PKCE verifier, the browser's secret and the page to go back to. */
|
|
13
|
+
export interface AccountSignInUnderWay {
|
|
14
|
+
readonly verifier: string;
|
|
15
|
+
/** The secret the browser that started the sign-in holds, so no other browser finishes it (login CSRF). */
|
|
16
|
+
readonly browserSecret: string;
|
|
17
|
+
/** The gateway's own path the browser goes back to once signed in. */
|
|
18
|
+
readonly returnTo: string;
|
|
19
|
+
readonly expiresAt: Date;
|
|
20
|
+
}
|
|
21
|
+
/** Outbound port: seals a sign-in under way into the state pagasae carries back, so the gateway stores nothing for it. */
|
|
22
|
+
export interface AccountSignInSeals {
|
|
23
|
+
seal(signIn: AccountSignInUnderWay): string;
|
|
24
|
+
/** The sign-in a state seals; none for a state the gateway did not seal. */
|
|
25
|
+
open(state: string): AccountSignInUnderWay | undefined;
|
|
26
|
+
}
|
|
27
|
+
/** The account token pagasae exchanged the shared sign-in for, and what it names. */
|
|
28
|
+
export interface SharedAccountToken {
|
|
29
|
+
readonly accountToken: string;
|
|
30
|
+
readonly endsAt: Date;
|
|
31
|
+
readonly accountId: string;
|
|
32
|
+
/** The account's person ship in the fleet, if it has one (decision 0052). */
|
|
33
|
+
readonly personShipId: ShipId | null;
|
|
34
|
+
readonly scopes: readonly string[];
|
|
35
|
+
}
|
|
36
|
+
/** An Aeolus app an account may open, and its address (header design H1). */
|
|
37
|
+
export interface OpenableApp {
|
|
38
|
+
readonly app: string;
|
|
39
|
+
readonly url: string;
|
|
40
|
+
}
|
|
41
|
+
/** What the account may open (header design H1): the account, its apps beside the fleets, and per fleet its name and the apps it may open there. */
|
|
42
|
+
export interface OpenableApps {
|
|
43
|
+
readonly account: {
|
|
44
|
+
readonly id: string;
|
|
45
|
+
readonly email: string;
|
|
46
|
+
};
|
|
47
|
+
readonly apps: readonly OpenableApp[];
|
|
48
|
+
readonly fleets: readonly {
|
|
49
|
+
readonly fleetId: FleetId;
|
|
50
|
+
readonly name: string;
|
|
51
|
+
readonly apps: readonly OpenableApp[];
|
|
52
|
+
}[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Why there is no account token: the shared sign-in ended or never was
|
|
56
|
+
* (signedOut), the account holds no right in that fleet (noRights), or
|
|
57
|
+
* pagasae did not answer (unavailable).
|
|
58
|
+
*/
|
|
59
|
+
export type SharedSignInRefusal = {
|
|
60
|
+
readonly kind: 'signedOut';
|
|
61
|
+
} | {
|
|
62
|
+
readonly kind: 'noRights';
|
|
63
|
+
} | {
|
|
64
|
+
readonly kind: 'unavailable';
|
|
65
|
+
};
|
|
66
|
+
/** Outbound port: pagasae, for the gateway's pages as one of its apps. */
|
|
67
|
+
export interface SharedSignIn {
|
|
68
|
+
/** pagasae's authorize address for the gateway's pages, with the state and the PKCE challenge, naming no fleet. */
|
|
69
|
+
authorizeUrl(signIn: {
|
|
70
|
+
state: string;
|
|
71
|
+
codeChallenge: string;
|
|
72
|
+
}): string;
|
|
73
|
+
/** Redeems the code pagasae sent the browser back with; its answer names the account, and the shared sign-in is then the browser's. */
|
|
74
|
+
redeemCode(code: {
|
|
75
|
+
code: string;
|
|
76
|
+
verifier: string;
|
|
77
|
+
}): Promise<Result<void, {
|
|
78
|
+
reason: string;
|
|
79
|
+
}>>;
|
|
80
|
+
/** The account token of the fleet for the shared sign-in, fresh at every call. */
|
|
81
|
+
accountToken(asked: {
|
|
82
|
+
signIn: string;
|
|
83
|
+
fleetId: FleetId;
|
|
84
|
+
}): Promise<Result<SharedAccountToken, SharedSignInRefusal>>;
|
|
85
|
+
apps(signIn: string): Promise<Result<OpenableApps, {
|
|
86
|
+
kind: 'signedOut' | 'unavailable';
|
|
87
|
+
}>>;
|
|
88
|
+
/** Ends the shared sign-in, in every app at once. */
|
|
89
|
+
revoke(signIn: string): Promise<Result<void, {
|
|
90
|
+
kind: 'unavailable';
|
|
91
|
+
}>>;
|
|
92
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/core/account-sign-in/ports.ts"],"names":[],"mappings":"AAWA,6FAA6F;AAC7F,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Result } from '../shared/result.js';
|
|
2
|
+
import type { AccountOfSignIn } from './account-of-sign-in.js';
|
|
3
|
+
import type { SharedSignIn } from './ports.js';
|
|
4
|
+
export type SignOutAccount = (signIn: string) => Promise<Result<void, {
|
|
5
|
+
kind: 'unavailable';
|
|
6
|
+
}>>;
|
|
7
|
+
/**
|
|
8
|
+
* Use case: a person signs out of the gateway's pages, which ends the shared
|
|
9
|
+
* sign-in at pagasae, so every Aeolus app is signed out (header design H5).
|
|
10
|
+
* The tokens the gateway kept for it go at once.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createSignOutAccount(deps: {
|
|
13
|
+
signIns: Pick<SharedSignIn, 'revoke'>;
|
|
14
|
+
accountOf: Pick<AccountOfSignIn, 'forget'>;
|
|
15
|
+
}): SignOutAccount;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use case: a person signs out of the gateway's pages, which ends the shared
|
|
3
|
+
* sign-in at pagasae, so every Aeolus app is signed out (header design H5).
|
|
4
|
+
* The tokens the gateway kept for it go at once.
|
|
5
|
+
*/
|
|
6
|
+
export function createSignOutAccount(deps) {
|
|
7
|
+
return (signIn) => {
|
|
8
|
+
deps.accountOf.forget(signIn);
|
|
9
|
+
return deps.signIns.revoke(signIn);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=sign-out-account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign-out-account.js","sourceRoot":"","sources":["../../../src/core/account-sign-in/sign-out-account.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA2F;IAC9H,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { OAuthSecrets } from '../oauth/ports.js';
|
|
2
|
+
import type { Clock } from '../shared/clock.js';
|
|
3
|
+
import type { AccountSignInSeals, SharedSignIn } from './ports.js';
|
|
4
|
+
/** Where a person lands once signed in, when they asked for no page of the gateway's own. */
|
|
5
|
+
export declare const FIRST_PAGE = "/overview";
|
|
6
|
+
export type StartAccountSignIn = (asked: {
|
|
7
|
+
returnTo?: string | undefined;
|
|
8
|
+
}) => {
|
|
9
|
+
redirectTo: string;
|
|
10
|
+
browserSecret: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Use case: a person signs in to the gateway's pages with the shared account
|
|
14
|
+
* sign-in (header design H5). The page to go back to is sealed with the
|
|
15
|
+
* gateway's PKCE verifier into the state, and the person is sent to pagasae
|
|
16
|
+
* naming no fleet. Only a path of the gateway's own is kept, so a sign-in
|
|
17
|
+
* never sends the browser to another site. The browser is given a secret of
|
|
18
|
+
* its own, sealed too, so only it finishes the sign-in.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createStartAccountSignIn(deps: {
|
|
21
|
+
seals: AccountSignInSeals;
|
|
22
|
+
signIns: SharedSignIn;
|
|
23
|
+
secrets: OAuthSecrets;
|
|
24
|
+
clock: Clock;
|
|
25
|
+
}): StartAccountSignIn;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ownPageOf } from '../sign-in/own-page.js';
|
|
2
|
+
import { SIGN_IN_LIFETIME_MS } from '../sign-in/start-sign-in.js';
|
|
3
|
+
/** Where a person lands once signed in, when they asked for no page of the gateway's own. */
|
|
4
|
+
export const FIRST_PAGE = '/overview';
|
|
5
|
+
/**
|
|
6
|
+
* Use case: a person signs in to the gateway's pages with the shared account
|
|
7
|
+
* sign-in (header design H5). The page to go back to is sealed with the
|
|
8
|
+
* gateway's PKCE verifier into the state, and the person is sent to pagasae
|
|
9
|
+
* naming no fleet. Only a path of the gateway's own is kept, so a sign-in
|
|
10
|
+
* never sends the browser to another site. The browser is given a secret of
|
|
11
|
+
* its own, sealed too, so only it finishes the sign-in.
|
|
12
|
+
*/
|
|
13
|
+
export function createStartAccountSignIn(deps) {
|
|
14
|
+
return ({ returnTo }) => {
|
|
15
|
+
const verifier = deps.secrets.newSecret();
|
|
16
|
+
const browserSecret = deps.secrets.newSecret();
|
|
17
|
+
const state = deps.seals.seal({
|
|
18
|
+
returnTo: (returnTo === undefined ? undefined : ownPageOf(returnTo)) ?? FIRST_PAGE,
|
|
19
|
+
verifier,
|
|
20
|
+
browserSecret,
|
|
21
|
+
expiresAt: new Date(deps.clock.now().getTime() + SIGN_IN_LIFETIME_MS),
|
|
22
|
+
});
|
|
23
|
+
return { redirectTo: deps.signIns.authorizeUrl({ state, codeChallenge: deps.secrets.challengeOf(verifier) }), browserSecret };
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=start-account-sign-in.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-account-sign-in.js","sourceRoot":"","sources":["../../../src/core/account-sign-in/start-account-sign-in.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,6FAA6F;AAC7F,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAItC;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAA+F;IACtI,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,UAAU;YAClF,QAAQ;YACR,aAAa;YACb,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC;SACtE,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;IAChI,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import type { FleetId, ShipId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { AccountOfSignIn } from '../account-sign-in/account-of-sign-in.js';
|
|
2
3
|
import type { ConnectionStore, FleetDoor } from '../connection/ports.js';
|
|
3
4
|
import type { AuthenticateOperator } from '../operator/authenticate-operator.js';
|
|
4
|
-
import type { AccountTokenOf } from '../sign-in/account-token.js';
|
|
5
|
-
import type { PageSessions } from '../sign-in/ports.js';
|
|
6
5
|
import { type DomainError } from '../shared/errors.js';
|
|
7
6
|
import { type Result } from '../shared/result.js';
|
|
8
7
|
/**
|
|
9
|
-
* Who calls the gateway's API (decision 0057): an account by the
|
|
10
|
-
*
|
|
11
|
-
* console session, or a ship by its own crew token. Its scopes are the
|
|
8
|
+
* Who calls the gateway's API (decision 0057): an account by the shared
|
|
9
|
+
* sign-in the web app's page forwarded (header design H5), argo or a viewer
|
|
10
|
+
* by the console session, or a ship by its own crew token. Its scopes are the
|
|
12
11
|
* fleet's or its account token's, never the request's, plugin scopes such
|
|
13
12
|
* as gateway:approve among them.
|
|
14
13
|
*/
|
|
@@ -22,33 +21,33 @@ export type Actor = {
|
|
|
22
21
|
readonly shipId: ShipId;
|
|
23
22
|
readonly scopes: readonly string[];
|
|
24
23
|
} | AccountActor;
|
|
25
|
-
/** An account on the gateway's pages,
|
|
24
|
+
/** An account on the gateway's pages, by the account token pagasae exchanged its shared sign-in for. */
|
|
26
25
|
export interface AccountActor {
|
|
27
26
|
readonly fleetId: FleetId;
|
|
28
27
|
readonly kind: 'account';
|
|
29
28
|
readonly accountId: string;
|
|
30
29
|
readonly personShipId: ShipId | null;
|
|
31
|
-
readonly
|
|
30
|
+
readonly accountToken: string;
|
|
32
31
|
readonly scopes: readonly string[];
|
|
33
32
|
}
|
|
34
33
|
export type AuthenticateActor = (sent: {
|
|
35
34
|
cookie?: string | undefined;
|
|
36
35
|
crewToken?: string | undefined;
|
|
36
|
+
signIn?: string | undefined;
|
|
37
|
+
fleetId?: FleetId | undefined;
|
|
37
38
|
}) => Promise<Result<Actor, DomainError<'NOT_AN_ACTOR'>>>;
|
|
38
39
|
/**
|
|
39
40
|
* Use case: whom a call of the gateway's API is for. A crew token, sent
|
|
40
41
|
* deliberately, names its ship: the fleet says which ship it crews, and the
|
|
41
|
-
* gateway, as its own ship in that fleet, reads the ship's scopes.
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* it is about to end; a session whose sign-in ended is no actor.
|
|
42
|
+
* gateway, as its own ship in that fleet, reads the ship's scopes. A ship of
|
|
43
|
+
* a fleet the gateway is not connected to is no actor here. The crew token
|
|
44
|
+
* is never kept. Else the shared sign-in the page forwarded names an account
|
|
45
|
+
* in the fleet the page names, by the account token pagasae exchanges it
|
|
46
|
+
* for. Else the console session cookie names argo or a viewer.
|
|
47
47
|
*/
|
|
48
48
|
export declare function createAuthenticateActor(deps: {
|
|
49
49
|
authenticateOperator: AuthenticateOperator;
|
|
50
50
|
door: Pick<FleetDoor, 'whoami' | 'getShip'>;
|
|
51
51
|
connections: Pick<ConnectionStore, 'find'>;
|
|
52
|
-
|
|
53
|
-
accountTokenOf: AccountTokenOf;
|
|
52
|
+
accountOf: AccountOfSignIn;
|
|
54
53
|
}): AuthenticateActor;
|
|
@@ -3,16 +3,15 @@ import { ok } from '../shared/result.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Use case: whom a call of the gateway's API is for. A crew token, sent
|
|
5
5
|
* deliberately, names its ship: the fleet says which ship it crews, and the
|
|
6
|
-
* gateway, as its own ship in that fleet, reads the ship's scopes.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* it is about to end; a session whose sign-in ended is no actor.
|
|
6
|
+
* gateway, as its own ship in that fleet, reads the ship's scopes. A ship of
|
|
7
|
+
* a fleet the gateway is not connected to is no actor here. The crew token
|
|
8
|
+
* is never kept. Else the shared sign-in the page forwarded names an account
|
|
9
|
+
* in the fleet the page names, by the account token pagasae exchanges it
|
|
10
|
+
* for. Else the console session cookie names argo or a viewer.
|
|
12
11
|
*/
|
|
13
12
|
export function createAuthenticateActor(deps) {
|
|
14
13
|
const refusal = refuse('NOT_AN_ACTOR', 'Sign in to the console of your fleet, or call with your ship\'s crew token');
|
|
15
|
-
return async ({ cookie, crewToken }) => {
|
|
14
|
+
return async ({ cookie, crewToken, signIn, fleetId }) => {
|
|
16
15
|
if (crewToken !== undefined) {
|
|
17
16
|
const who = await deps.door.whoami(crewToken);
|
|
18
17
|
if (!who.isOk) {
|
|
@@ -26,14 +25,13 @@ export function createAuthenticateActor(deps) {
|
|
|
26
25
|
const ship = await deps.door.getShip(gateway.crewToken, { shipId: who.value.shipId, onBehalfOf: who.value.shipId });
|
|
27
26
|
return ship.isOk ? ok({ fleetId: who.value.fleetId, kind: 'ship', shipId: who.value.shipId, scopes: ship.value.scopes }) : refusal;
|
|
28
27
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const token = await deps.accountTokenOf(session);
|
|
28
|
+
if (signIn !== undefined && fleetId !== undefined) {
|
|
29
|
+
const token = await deps.accountOf({ signIn, fleetId });
|
|
32
30
|
if (!token.isOk) {
|
|
33
31
|
return refusal;
|
|
34
32
|
}
|
|
35
|
-
const { accountId, personShipId, scopes } = token.value;
|
|
36
|
-
return ok({ fleetId
|
|
33
|
+
const { accountId, personShipId, scopes, accountToken } = token.value;
|
|
34
|
+
return ok({ fleetId, kind: 'account', accountId, personShipId, accountToken, scopes });
|
|
37
35
|
}
|
|
38
36
|
const operator = await deps.authenticateOperator(cookie);
|
|
39
37
|
return operator.isOk ? ok(operator.value) : refusal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticate-actor.js","sourceRoot":"","sources":["../../../src/core/actors/authenticate-actor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authenticate-actor.js","sourceRoot":"","sources":["../../../src/core/actors/authenticate-actor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AA0BtD;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAKvC;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,4EAA4E,CAAC,CAAC;IACrH,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACtD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,8GAA8G;YAC9G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACpH,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACrI,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;YACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { ConnectionStore } from '../connection/ports.js';
|
|
2
2
|
import { type DomainError } from '../shared/errors.js';
|
|
3
3
|
import { type Result } from '../shared/result.js';
|
|
4
|
-
import type { AccountTokenOf } from '../sign-in/account-token.js';
|
|
5
4
|
import type { Actor } from './authenticate-actor.js';
|
|
6
5
|
/**
|
|
7
6
|
* What the gateway calls the fleet with, so the fleet answers as the actor
|
|
@@ -14,14 +13,13 @@ export interface ActorCredential {
|
|
|
14
13
|
crewToken?: string;
|
|
15
14
|
accountToken?: string;
|
|
16
15
|
}
|
|
17
|
-
export type CredentialOf = (actor: Actor, sent: ActorCredential) => Promise<Result<ActorCredential, DomainError<'
|
|
16
|
+
export type CredentialOf = (actor: Actor, sent: ActorCredential) => Promise<Result<ActorCredential, DomainError<'FLEET_UNAVAILABLE'>>>;
|
|
18
17
|
/**
|
|
19
18
|
* Use case: the credential to call the fleet with as the actor. A ship, argo
|
|
20
|
-
* or a viewer sent its own, which goes on as it came. An account
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* or a viewer sent its own, which goes on as it came. An account signed in
|
|
20
|
+
* with the shared sign-in sent only that: the token pagasae exchanged it for
|
|
21
|
+
* goes, presented by the gateway's ship of its fleet.
|
|
23
22
|
*/
|
|
24
23
|
export declare function createCredentialOf(deps: {
|
|
25
24
|
connections: Pick<ConnectionStore, 'find'>;
|
|
26
|
-
accountTokenOf: AccountTokenOf;
|
|
27
25
|
}): CredentialOf;
|
|
@@ -2,9 +2,9 @@ import { refuse } from '../shared/errors.js';
|
|
|
2
2
|
import { ok } from '../shared/result.js';
|
|
3
3
|
/**
|
|
4
4
|
* Use case: the credential to call the fleet with as the actor. A ship, argo
|
|
5
|
-
* or a viewer sent its own, which goes on as it came. An account
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* or a viewer sent its own, which goes on as it came. An account signed in
|
|
6
|
+
* with the shared sign-in sent only that: the token pagasae exchanged it for
|
|
7
|
+
* goes, presented by the gateway's ship of its fleet.
|
|
8
8
|
*/
|
|
9
9
|
export function createCredentialOf(deps) {
|
|
10
10
|
return async (actor, sent) => {
|
|
@@ -15,11 +15,7 @@ export function createCredentialOf(deps) {
|
|
|
15
15
|
if (gateway === undefined) {
|
|
16
16
|
return refuse('FLEET_UNAVAILABLE', 'The gateway is not connected to your fleet');
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
if (!token.isOk) {
|
|
20
|
-
return token.error.kind === 'signedOut' ? refuse('NOT_AN_ACTOR', 'Your sign-in ended: sign in again') : refuse('FLEET_UNAVAILABLE', 'pagasae did not answer, so your account token could not be renewed');
|
|
21
|
-
}
|
|
22
|
-
return ok({ crewToken: gateway.crewToken, accountToken: token.value.accountToken });
|
|
18
|
+
return ok({ crewToken: gateway.crewToken, accountToken: actor.accountToken });
|
|
23
19
|
};
|
|
24
20
|
}
|
|
25
21
|
//# sourceMappingURL=credential-of.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-of.js","sourceRoot":"","sources":["../../../src/core/actors/credential-of.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"credential-of.js","sourceRoot":"","sources":["../../../src/core/actors/credential-of.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAiBtD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoD;IACrF,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,mBAAmB,EAAE,4CAA4C,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ConnectionStore, GatewayDelivery, GatewayInbox } from './ports.js';
|
|
2
|
+
/** What a round did: pings answered, other deliveries acked as kept by the fleet, and calls the fleet refused. */
|
|
3
|
+
export interface PingRound {
|
|
4
|
+
ponged: number;
|
|
5
|
+
acked: GatewayDelivery[];
|
|
6
|
+
refused: number;
|
|
7
|
+
}
|
|
8
|
+
/** A round, ended early once the signal aborts. */
|
|
9
|
+
export type AnswerPings = (signal: AbortSignal) => Promise<PingRound>;
|
|
10
|
+
/**
|
|
11
|
+
* Use case: the gateway's own ship takes what waits for it in each fleet it
|
|
12
|
+
* is connected to, as any crewed ship does (blueprint, "Ping"): argo's ping
|
|
13
|
+
* is answered with pong; anything else is acked, as the gateway's ship
|
|
14
|
+
* handles no messages of its own, and the fleet keeps it in its history.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createAnswerPings(deps: {
|
|
17
|
+
connections: ConnectionStore;
|
|
18
|
+
inbox: GatewayInbox;
|
|
19
|
+
}): AnswerPings;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { isPingContentType, RECEIVE_MAX_UPPER_BOUND } from '@aeolus-fleet/common';
|
|
2
|
+
/**
|
|
3
|
+
* Use case: the gateway's own ship takes what waits for it in each fleet it
|
|
4
|
+
* is connected to, as any crewed ship does (blueprint, "Ping"): argo's ping
|
|
5
|
+
* is answered with pong; anything else is acked, as the gateway's ship
|
|
6
|
+
* handles no messages of its own, and the fleet keeps it in its history.
|
|
7
|
+
*/
|
|
8
|
+
export function createAnswerPings(deps) {
|
|
9
|
+
return async (signal) => {
|
|
10
|
+
const round = { ponged: 0, acked: [], refused: 0 };
|
|
11
|
+
for (const crew of await deps.connections.connected()) {
|
|
12
|
+
const taken = await deps.inbox.receive(crew.crewToken, { max: RECEIVE_MAX_UPPER_BOUND, signal });
|
|
13
|
+
if (!taken.isOk) {
|
|
14
|
+
round.refused += 1;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
for (const delivery of taken.value) {
|
|
18
|
+
const isPing = isPingContentType(delivery.contentType);
|
|
19
|
+
const answered = isPing ? await deps.inbox.pong(crew.crewToken, delivery.deliveryId) : await deps.inbox.ack(crew.crewToken, delivery.deliveryId);
|
|
20
|
+
if (!answered.isOk) {
|
|
21
|
+
round.refused += 1;
|
|
22
|
+
}
|
|
23
|
+
else if (isPing) {
|
|
24
|
+
round.ponged += 1;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
round.acked.push(delivery);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return round;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=answer-pings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-pings.js","sourceRoot":"","sources":["../../../src/core/connection/answer-pings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAclF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA2D;IAC3F,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE;QACtB,MAAM,KAAK,GAAc,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,CAAC;YACjG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACjJ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;gBACrB,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBAClB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FleetId, ShipId } from '@aeolus-fleet/common';
|
|
1
|
+
import type { DeliveryId, FleetId, ShipId } from '@aeolus-fleet/common';
|
|
2
2
|
import type { Result } from '../shared/result.js';
|
|
3
3
|
/**
|
|
4
4
|
* Why the fleet refused a ship call: its code (CONFLICT, UNAUTHORIZED,
|
|
@@ -51,6 +51,23 @@ export interface FleetDoor {
|
|
|
51
51
|
}[];
|
|
52
52
|
}): Promise<Result<undefined, FleetRefusal>>;
|
|
53
53
|
}
|
|
54
|
+
/** A delivery to the gateway's own ship: what tells a ping apart, and who sent it. */
|
|
55
|
+
export interface GatewayDelivery {
|
|
56
|
+
deliveryId: DeliveryId;
|
|
57
|
+
contentType: string;
|
|
58
|
+
senderShipId: ShipId;
|
|
59
|
+
}
|
|
60
|
+
/** Outbound port: the deliveries to the gateway's own ship, as its crew takes, acks and pongs them. */
|
|
61
|
+
export interface GatewayInbox {
|
|
62
|
+
/** Takes up to max deliveries for the ship, waiting while the fleet waits for one, until the signal aborts; none when none came. */
|
|
63
|
+
receive(crewToken: string, take: {
|
|
64
|
+
max: number;
|
|
65
|
+
signal: AbortSignal;
|
|
66
|
+
}): Promise<Result<GatewayDelivery[], FleetRefusal>>;
|
|
67
|
+
ack(crewToken: string, deliveryId: DeliveryId): Promise<Result<undefined, FleetRefusal>>;
|
|
68
|
+
/** Answers argo's ping, in place of the ack. */
|
|
69
|
+
pong(crewToken: string, deliveryId: DeliveryId): Promise<Result<undefined, FleetRefusal>>;
|
|
70
|
+
}
|
|
54
71
|
/** The crew token the gateway holds for its ship in a fleet, and when it got it. */
|
|
55
72
|
export interface GatewayCrew {
|
|
56
73
|
/** The fleet the ship belongs to: the fleet the gateway serves. */
|