@aeolus-fleet/core 0.26.1 → 0.27.1
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 +1 -1
- package/dist/adapters/http/request-credentials.d.ts +2 -9
- package/dist/adapters/http/request-credentials.js +8 -1
- package/dist/adapters/http/request-credentials.js.map +1 -1
- package/dist/adapters/http/server.js +2 -1
- package/dist/adapters/http/server.js.map +1 -1
- package/dist/adapters/mcp/mcp-endpoint.js +11 -1
- package/dist/adapters/mcp/mcp-endpoint.js.map +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +14 -0
- package/dist/adapters/prisma/generated/client.d.ts +14 -0
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +30 -0
- package/dist/adapters/prisma/generated/enums.d.ts +10 -0
- package/dist/adapters/prisma/generated/enums.js +10 -1
- package/dist/adapters/prisma/generated/enums.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/class.d.ts +22 -0
- 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 +186 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +27 -2
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +27 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +27 -2
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/Delivery.d.ts +71 -1
- package/dist/adapters/prisma/generated/models/Fleet.d.ts +558 -0
- package/dist/adapters/prisma/generated/models/Lease.d.ts +172 -1
- package/dist/adapters/prisma/generated/models/NetworkSettings.d.ts +185 -21
- package/dist/adapters/prisma/generated/models/PluginConnection.d.ts +1180 -0
- package/dist/adapters/prisma/generated/models/PluginConnection.js +2 -0
- package/dist/adapters/prisma/generated/models/PluginConnection.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ReachRefusal.d.ts +71 -1
- package/dist/adapters/prisma/generated/models/ScopeNamespace.d.ts +1220 -0
- package/dist/adapters/prisma/generated/models/ScopeNamespace.js +2 -0
- package/dist/adapters/prisma/generated/models/ScopeNamespace.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Ship.d.ts +1269 -51
- package/dist/adapters/prisma/generated/models.d.ts +2 -0
- package/dist/adapters/prisma/health.js +27 -7
- package/dist/adapters/prisma/health.js.map +1 -1
- package/dist/adapters/prisma/history.js +18 -72
- package/dist/adapters/prisma/history.js.map +1 -1
- package/dist/adapters/prisma/messaging.js +31 -35
- package/dist/adapters/prisma/messaging.js.map +1 -1
- package/dist/adapters/prisma/network.js +45 -15
- package/dist/adapters/prisma/network.js.map +1 -1
- package/dist/adapters/prisma/overdue.js +4 -3
- package/dist/adapters/prisma/overdue.js.map +1 -1
- package/dist/adapters/prisma/plugin-connections.d.ts +4 -0
- package/dist/adapters/prisma/plugin-connections.js +20 -0
- package/dist/adapters/prisma/plugin-connections.js.map +1 -0
- package/dist/adapters/prisma/registry.js +68 -13
- package/dist/adapters/prisma/registry.js.map +1 -1
- package/dist/adapters/prisma/rows.d.ts +3 -0
- package/dist/adapters/prisma/rows.js +22 -7
- package/dist/adapters/prisma/rows.js.map +1 -1
- package/dist/adapters/prisma/scope-namespaces.d.ts +4 -0
- package/dist/adapters/prisma/scope-namespaces.js +39 -0
- package/dist/adapters/prisma/scope-namespaces.js.map +1 -0
- package/dist/adapters/prisma/unit-of-work.d.ts +3 -1
- package/dist/adapters/prisma/unit-of-work.js +4 -0
- package/dist/adapters/prisma/unit-of-work.js.map +1 -1
- package/dist/adapters/rest/rest-api.js +2 -2
- package/dist/adapters/rest/rest-api.js.map +1 -1
- package/dist/adapters/trpc/console.d.ts +1 -1
- package/dist/adapters/trpc/console.js +6 -4
- package/dist/adapters/trpc/console.js.map +1 -1
- package/dist/adapters/trpc/context.d.ts +28 -4
- package/dist/adapters/trpc/fleet.d.ts +243 -90
- package/dist/adapters/trpc/fleet.js +146 -57
- package/dist/adapters/trpc/fleet.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +366 -86
- package/dist/adapters/trpc/ship-contract.js +5 -0
- package/dist/adapters/trpc/ship-contract.js.map +1 -1
- package/dist/adapters/trpc/ship-protocol.js +7 -5
- package/dist/adapters/trpc/ship-protocol.js.map +1 -1
- package/dist/adapters/trpc/ship.d.ts +156 -3
- package/dist/adapters/trpc/ship.js +89 -8
- package/dist/adapters/trpc/ship.js.map +1 -1
- package/dist/adapters/trpc/trpc.d.ts +13 -9
- package/dist/adapters/trpc/trpc.js +90 -26
- package/dist/adapters/trpc/trpc.js.map +1 -1
- package/dist/domain/messaging/check-inbox.d.ts +5 -5
- package/dist/domain/messaging/check-inbox.js +9 -7
- package/dist/domain/messaging/check-inbox.js.map +1 -1
- package/dist/domain/messaging/delivery.d.ts +8 -2
- package/dist/domain/messaging/delivery.js +14 -9
- package/dist/domain/messaging/delivery.js.map +1 -1
- package/dist/domain/messaging/dismiss-delivery.d.ts +9 -4
- package/dist/domain/messaging/dismiss-delivery.js +26 -19
- package/dist/domain/messaging/dismiss-delivery.js.map +1 -1
- package/dist/domain/messaging/hand-over-delivery.d.ts +1 -0
- package/dist/domain/messaging/hand-over-delivery.js +1 -0
- package/dist/domain/messaging/hand-over-delivery.js.map +1 -1
- package/dist/domain/messaging/message.d.ts +11 -5
- package/dist/domain/messaging/message.js +11 -4
- package/dist/domain/messaging/message.js.map +1 -1
- package/dist/domain/messaging/overdue.d.ts +2 -0
- package/dist/domain/messaging/overdue.js +3 -0
- package/dist/domain/messaging/overdue.js.map +1 -1
- package/dist/domain/messaging/ping-ship.d.ts +3 -3
- package/dist/domain/messaging/ping-ship.js +6 -2
- package/dist/domain/messaging/ping-ship.js.map +1 -1
- package/dist/domain/messaging/ports.d.ts +11 -3
- package/dist/domain/messaging/push-receive-deliveries.d.ts +4 -1
- package/dist/domain/messaging/push-receive-deliveries.js +5 -3
- package/dist/domain/messaging/push-receive-deliveries.js.map +1 -1
- package/dist/domain/messaging/receive-deliveries.d.ts +23 -0
- package/dist/domain/messaging/receive-deliveries.js +6 -3
- package/dist/domain/messaging/receive-deliveries.js.map +1 -1
- package/dist/domain/messaging/receive-reply.d.ts +32 -0
- package/dist/domain/messaging/receive-reply.js +25 -0
- package/dist/domain/messaging/receive-reply.js.map +1 -0
- package/dist/domain/messaging/resend-delivery.d.ts +5 -2
- package/dist/domain/messaging/resend-delivery.js +8 -4
- package/dist/domain/messaging/resend-delivery.js.map +1 -1
- package/dist/domain/messaging/send-message.d.ts +9 -2
- package/dist/domain/messaging/send-message.js +12 -2
- package/dist/domain/messaging/send-message.js.map +1 -1
- package/dist/domain/messaging/send-request.d.ts +3 -1
- package/dist/domain/messaging/send-request.js +4 -2
- package/dist/domain/messaging/send-request.js.map +1 -1
- package/dist/domain/registry/assign-label.d.ts +2 -1
- package/dist/domain/registry/assign-label.js +3 -2
- package/dist/domain/registry/assign-label.js.map +1 -1
- package/dist/domain/registry/check-reach.d.ts +69 -6
- package/dist/domain/registry/check-reach.js +109 -12
- package/dist/domain/registry/check-reach.js.map +1 -1
- package/dist/domain/registry/commission-ship.d.ts +21 -8
- package/dist/domain/registry/commission-ship.js +55 -10
- package/dist/domain/registry/commission-ship.js.map +1 -1
- package/dist/domain/registry/connect-plugin.d.ts +30 -0
- package/dist/domain/registry/connect-plugin.js +35 -0
- package/dist/domain/registry/connect-plugin.js.map +1 -0
- package/dist/domain/registry/crew-request.d.ts +1 -1
- package/dist/domain/registry/declare-scopes.d.ts +38 -0
- package/dist/domain/registry/declare-scopes.js +34 -0
- package/dist/domain/registry/declare-scopes.js.map +1 -0
- package/dist/domain/registry/declared-network-rules.d.ts +2 -1
- package/dist/domain/registry/declared-network-rules.js +11 -5
- package/dist/domain/registry/declared-network-rules.js.map +1 -1
- package/dist/domain/registry/discover.d.ts +29 -0
- package/dist/domain/registry/discover.js +54 -0
- package/dist/domain/registry/discover.js.map +1 -0
- package/dist/domain/registry/explain-reach.d.ts +13 -12
- package/dist/domain/registry/explain-reach.js +35 -12
- package/dist/domain/registry/explain-reach.js.map +1 -1
- package/dist/domain/registry/get-ship.d.ts +11 -3
- package/dist/domain/registry/get-ship.js +8 -2
- package/dist/domain/registry/get-ship.js.map +1 -1
- package/dist/domain/registry/get-starting-prompt.d.ts +18 -2
- package/dist/domain/registry/get-starting-prompt.js +7 -7
- package/dist/domain/registry/get-starting-prompt.js.map +1 -1
- package/dist/domain/registry/grant-scopes.d.ts +34 -0
- package/dist/domain/registry/grant-scopes.js +35 -0
- package/dist/domain/registry/grant-scopes.js.map +1 -0
- package/dist/domain/registry/label.d.ts +12 -7
- package/dist/domain/registry/label.js +21 -4
- package/dist/domain/registry/label.js.map +1 -1
- package/dist/domain/registry/leases.d.ts +6 -3
- package/dist/domain/registry/leases.js +7 -5
- package/dist/domain/registry/leases.js.map +1 -1
- package/dist/domain/registry/list-fleet.d.ts +19 -6
- package/dist/domain/registry/list-fleet.js +18 -3
- package/dist/domain/registry/list-fleet.js.map +1 -1
- package/dist/domain/registry/list-scopes.d.ts +24 -0
- package/dist/domain/registry/list-scopes.js +22 -0
- package/dist/domain/registry/list-scopes.js.map +1 -0
- package/dist/domain/registry/managed-or-assigned.d.ts +25 -0
- package/dist/domain/registry/managed-or-assigned.js +23 -0
- package/dist/domain/registry/managed-or-assigned.js.map +1 -0
- package/dist/domain/registry/named-namespaces.d.ts +19 -0
- package/dist/domain/registry/named-namespaces.js +19 -0
- package/dist/domain/registry/named-namespaces.js.map +1 -0
- package/dist/domain/registry/network-settings.d.ts +95 -24
- package/dist/domain/registry/network-settings.js +146 -46
- package/dist/domain/registry/network-settings.js.map +1 -1
- package/dist/domain/registry/plugin-connection.d.ts +48 -0
- package/dist/domain/registry/plugin-connection.js +35 -0
- package/dist/domain/registry/plugin-connection.js.map +1 -0
- package/dist/domain/registry/ports.d.ts +75 -1
- package/dist/domain/registry/public.d.ts +3 -2
- package/dist/domain/registry/public.js +3 -2
- package/dist/domain/registry/public.js.map +1 -1
- package/dist/domain/registry/reach-refusal.d.ts +12 -4
- package/dist/domain/registry/read-assigned-crew-requests.d.ts +12 -3
- package/dist/domain/registry/read-assigned-crew-requests.js +8 -8
- package/dist/domain/registry/read-assigned-crew-requests.js.map +1 -1
- package/dist/domain/registry/read-built-in-rules.d.ts +20 -0
- package/dist/domain/registry/read-built-in-rules.js +24 -0
- package/dist/domain/registry/read-built-in-rules.js.map +1 -0
- package/dist/domain/registry/read-clear-requests.d.ts +5 -3
- package/dist/domain/registry/read-clear-requests.js +7 -5
- package/dist/domain/registry/read-clear-requests.js.map +1 -1
- package/dist/domain/registry/read-network-plugin.d.ts +23 -0
- package/dist/domain/registry/read-network-plugin.js +15 -0
- package/dist/domain/registry/read-network-plugin.js.map +1 -0
- package/dist/domain/registry/read-on-behalf.d.ts +20 -0
- package/dist/domain/registry/read-on-behalf.js +31 -0
- package/dist/domain/registry/read-on-behalf.js.map +1 -0
- package/dist/domain/registry/read-reach.d.ts +64 -0
- package/dist/domain/registry/read-reach.js +83 -0
- package/dist/domain/registry/read-reach.js.map +1 -0
- package/dist/domain/registry/recrew-ship.d.ts +3 -2
- package/dist/domain/registry/recrew-ship.js +8 -1
- package/dist/domain/registry/recrew-ship.js.map +1 -1
- package/dist/domain/registry/release-ship.d.ts +10 -5
- package/dist/domain/registry/release-ship.js +11 -8
- package/dist/domain/registry/release-ship.js.map +1 -1
- package/dist/domain/registry/remove-crew-request.d.ts +4 -3
- package/dist/domain/registry/remove-crew-request.js +6 -1
- package/dist/domain/registry/remove-crew-request.js.map +1 -1
- package/dist/domain/registry/rename-ship.d.ts +7 -5
- package/dist/domain/registry/rename-ship.js +9 -3
- package/dist/domain/registry/rename-ship.js.map +1 -1
- package/dist/domain/registry/request-crew.d.ts +5 -4
- package/dist/domain/registry/request-crew.js +6 -1
- package/dist/domain/registry/request-crew.js.map +1 -1
- package/dist/domain/registry/request-worktree-clear.d.ts +3 -2
- package/dist/domain/registry/request-worktree-clear.js +6 -1
- package/dist/domain/registry/request-worktree-clear.js.map +1 -1
- package/dist/domain/registry/retire-ship.d.ts +17 -7
- package/dist/domain/registry/retire-ship.js +48 -5
- package/dist/domain/registry/retire-ship.js.map +1 -1
- package/dist/domain/registry/scope-grant.d.ts +53 -0
- package/dist/domain/registry/scope-grant.js +74 -0
- package/dist/domain/registry/scope-grant.js.map +1 -0
- package/dist/domain/registry/scope-namespace.d.ts +68 -0
- package/dist/domain/registry/scope-namespace.js +82 -0
- package/dist/domain/registry/scope-namespace.js.map +1 -0
- package/dist/domain/registry/set-built-in-rule.d.ts +28 -0
- package/dist/domain/registry/set-built-in-rule.js +33 -0
- package/dist/domain/registry/set-built-in-rule.js.map +1 -0
- package/dist/domain/registry/set-network-rules.d.ts +3 -3
- package/dist/domain/registry/set-network-rules.js +2 -2
- package/dist/domain/registry/set-owner.d.ts +30 -0
- package/dist/domain/registry/set-owner.js +37 -0
- package/dist/domain/registry/set-owner.js.map +1 -0
- package/dist/domain/registry/set-statement.d.ts +27 -0
- package/dist/domain/registry/set-statement.js +28 -0
- package/dist/domain/registry/set-statement.js.map +1 -0
- package/dist/domain/registry/ship.d.ts +74 -10
- package/dist/domain/registry/ship.js +128 -10
- package/dist/domain/registry/ship.js.map +1 -1
- package/dist/domain/registry/statement.d.ts +32 -0
- package/dist/domain/registry/statement.js +39 -0
- package/dist/domain/registry/statement.js.map +1 -0
- package/dist/domain/registry/unassign-label.js +1 -1
- package/dist/domain/registry/unassign-label.js.map +1 -1
- package/dist/domain/registry/whoami.d.ts +5 -1
- package/dist/domain/registry/whoami.js +7 -4
- package/dist/domain/registry/whoami.js.map +1 -1
- package/dist/domain/shared/caller.d.ts +5 -2
- package/dist/domain/shared/caller.js.map +1 -1
- package/dist/domain/shared/delivery-way.d.ts +9 -5
- package/dist/domain/shared/delivery-way.js +17 -5
- package/dist/domain/shared/delivery-way.js.map +1 -1
- package/dist/domain/shared/errors.d.ts +1 -1
- package/dist/domain/shared/errors.js.map +1 -1
- package/dist/domain/shared/events-read.d.ts +16 -0
- package/dist/domain/shared/events-read.js +15 -0
- package/dist/domain/shared/events-read.js.map +1 -0
- package/dist/domain/shared/follow-fleet.d.ts +8 -2
- package/dist/domain/shared/follow-fleet.js +14 -4
- package/dist/domain/shared/follow-fleet.js.map +1 -1
- package/dist/domain/shared/health.d.ts +11 -2
- package/dist/domain/shared/health.js +11 -3
- package/dist/domain/shared/health.js.map +1 -1
- package/dist/domain/shared/history.d.ts +11 -42
- package/dist/domain/shared/history.js +9 -0
- package/dist/domain/shared/history.js.map +1 -1
- package/dist/domain/shared/read-fleet-events.d.ts +8 -2
- package/dist/domain/shared/read-fleet-events.js +10 -4
- package/dist/domain/shared/read-fleet-events.js.map +1 -1
- package/dist/domain/shared/read-health.d.ts +5 -1
- package/dist/domain/shared/read-health.js +13 -2
- package/dist/domain/shared/read-health.js.map +1 -1
- package/dist/domain/shared/read-inbox.d.ts +6 -3
- package/dist/domain/shared/read-inbox.js +14 -4
- package/dist/domain/shared/read-inbox.js.map +1 -1
- package/dist/domain/shared/read-message.d.ts +6 -2
- package/dist/domain/shared/read-message.js +6 -2
- package/dist/domain/shared/read-message.js.map +1 -1
- package/dist/domain/shared/read-needs-attention.d.ts +4 -1
- package/dist/domain/shared/read-needs-attention.js +8 -3
- package/dist/domain/shared/read-needs-attention.js.map +1 -1
- package/dist/domain/shared/read-sent-message.d.ts +31 -0
- package/dist/domain/shared/read-sent-message.js +28 -0
- package/dist/domain/shared/read-sent-message.js.map +1 -0
- package/dist/domain/shared/read-ship-messages.d.ts +6 -2
- package/dist/domain/shared/read-ship-messages.js +7 -2
- package/dist/domain/shared/read-ship-messages.js.map +1 -1
- package/dist/domain/shared/read-ship-timeline.d.ts +5 -2
- package/dist/domain/shared/read-ship-timeline.js +11 -6
- package/dist/domain/shared/read-ship-timeline.js.map +1 -1
- package/dist/domain/shared/read-ship-way.d.ts +11 -4
- package/dist/domain/shared/read-ship-way.js +9 -2
- package/dist/domain/shared/read-ship-way.js.map +1 -1
- package/dist/domain/shared/stuck.d.ts +10 -1
- package/dist/domain/shared/stuck.js +5 -3
- package/dist/domain/shared/stuck.js.map +1 -1
- package/dist/testing/container-images.d.ts +14 -0
- package/dist/testing/container-images.js +18 -0
- package/dist/testing/container-images.js.map +1 -0
- package/dist/testing/database.d.ts +14 -0
- package/dist/testing/database.js +48 -0
- package/dist/testing/database.js.map +1 -0
- package/dist/testing/fleet.d.ts +13 -0
- package/dist/testing/fleet.js +17 -0
- package/dist/testing/fleet.js.map +1 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/keys.d.ts +1 -0
- package/dist/testing/keys.js +7 -0
- package/dist/testing/keys.js.map +1 -0
- package/dist/testing/migrate-lock.d.ts +12 -0
- package/dist/testing/migrate-lock.js +51 -0
- package/dist/testing/migrate-lock.js.map +1 -0
- package/dist/testing/migrated-template.d.ts +12 -0
- package/dist/testing/migrated-template.js +29 -0
- package/dist/testing/migrated-template.js.map +1 -0
- package/dist/testing/postgres-container.d.ts +16 -0
- package/dist/testing/postgres-container.js +30 -0
- package/dist/testing/postgres-container.js.map +1 -0
- package/dist/testing/postgres-global-setup.d.ts +15 -0
- package/dist/testing/postgres-global-setup.js +20 -0
- package/dist/testing/postgres-global-setup.js.map +1 -0
- package/dist/testing/prisma-cli.d.ts +5 -0
- package/dist/testing/prisma-cli.js +15 -0
- package/dist/testing/prisma-cli.js.map +1 -0
- package/dist/testing/result.d.ts +5 -0
- package/dist/testing/result.js +15 -0
- package/dist/testing/result.js.map +1 -0
- package/dist/wiring.d.ts +26 -4
- package/dist/wiring.js +51 -18
- package/dist/wiring.js.map +1 -1
- package/package.json +28 -2
- package/src/adapters/prisma/migrations/20261018100000_force_scope/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261018110000_forced_delivery/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261018120000_person_and_app_ships/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261018130000_owners/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261018140000_owners_on_reach_refusals/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261018150000_network_verbs/migration.sql +9 -0
- package/src/adapters/prisma/migrations/20261018160000_built_in_rules/migration.sql +13 -0
- package/src/adapters/prisma/migrations/20261018170000_network_rules_a_list/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20261018180000_verb_on_reach_refusals/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261018200000_lease_statements/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261018210000_declare_and_grant_scopes/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261018220000_plugin_scopes/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261018230000_scope_namespaces/migration.sql +20 -0
- package/src/adapters/prisma/migrations/20261018240000_trierarch_plugin_crew_run/migration.sql +44 -0
- package/src/adapters/prisma/migrations/20261018250000_scope_catalogue/migration.sql +67 -0
- package/src/adapters/prisma/migrations/20261019090000_reach_refusal_asked_by/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261019100000_on_behalf_scope/migration.sql +61 -0
- package/src/adapters/prisma/migrations/20261019110000_events_fleet_id_occurred_at/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261019130000_plugin_connections/migration.sql +54 -0
- package/src/adapters/prisma/migrations/20261019150000_network_plugin_registered_at/migration.sql +23 -0
- package/src/adapters/prisma/migrations/20261019160000_lease_waker/migration.sql +4 -0
- package/src/adapters/prisma/schema.prisma +81 -7
- package/dist/domain/shared/read-no-ship-can-take.d.ts +0 -13
- package/dist/domain/shared/read-no-ship-can-take.js +0 -12
- package/dist/domain/shared/read-no-ship-can-take.js.map +0 -1
- package/dist/domain/shared/read-overdue.d.ts +0 -13
- package/dist/domain/shared/read-overdue.js +0 -12
- package/dist/domain/shared/read-overdue.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The images Testcontainers pulls for the tests, from mirrors outside Docker
|
|
3
|
+
* Hub: CI runners share IPs, so anonymous Docker Hub pulls hit its rate limit
|
|
4
|
+
* at random (#437). Both mirrors serve the same image as Docker Hub and need
|
|
5
|
+
* no sign-in. ECR Public throttles anonymous pulls per IP too (#464), so CI
|
|
6
|
+
* keeps the images in the Actions cache; it lists them by running this file
|
|
7
|
+
* (see .github/actions/test-images).
|
|
8
|
+
*/
|
|
9
|
+
/** Postgres 16, the oldest version the architecture supports, from Docker's official images on Amazon ECR Public. */
|
|
10
|
+
export const POSTGRES_IMAGE = 'public.ecr.aws/docker/library/postgres:16-alpine';
|
|
11
|
+
/** Ryuk, the reaper Testcontainers starts to remove containers a run leaves behind, from Testcontainers' own GitHub registry. */
|
|
12
|
+
export const REAPER_IMAGE = 'ghcr.io/testcontainers/ryuk:0.14.0';
|
|
13
|
+
/** Every image the tests start, one per line when this file runs, for CI to cache. */
|
|
14
|
+
export const TEST_IMAGES = [POSTGRES_IMAGE, REAPER_IMAGE];
|
|
15
|
+
if (import.meta.main) {
|
|
16
|
+
console.log(TEST_IMAGES.join('\n'));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=container-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-images.js","sourceRoot":"","sources":["../../src/testing/container-images.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qHAAqH;AACrH,MAAM,CAAC,MAAM,cAAc,GAAG,kDAAkD,CAAC;AAEjF,iIAAiI;AACjI,MAAM,CAAC,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAEjE,sFAAsF;AACtF,MAAM,CAAC,MAAM,WAAW,GAAsB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAE7E,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Creates an empty database in the shared Postgres container and returns its URL. */
|
|
2
|
+
export declare function createEmptyDatabase(): Promise<string>;
|
|
3
|
+
/**
|
|
4
|
+
* Creates a database with the committed migrations applied, as `prisma
|
|
5
|
+
* migrate deploy` leaves it: a copy of the template the global setup migrated.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createMigratedDatabase(): Promise<string>;
|
|
8
|
+
/** Creates a copy of the named template database in the shared Postgres container and returns its URL. */
|
|
9
|
+
export declare function createCopyOf(template: string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Runs a SQL file against the given database in one round trip, as
|
|
12
|
+
* `prisma db execute --file` does, without starting a Prisma CLI per file.
|
|
13
|
+
*/
|
|
14
|
+
export declare function executeSqlFile(databaseUrl: string, file: string): Promise<void>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { inject } from 'vitest';
|
|
4
|
+
import { createPrismaClient } from '../adapters/prisma/client.js';
|
|
5
|
+
import { databaseUrlOf, MIGRATED_TEMPLATE } from './migrated-template.js';
|
|
6
|
+
/** Creates an empty database in the shared Postgres container and returns its URL. */
|
|
7
|
+
export function createEmptyDatabase() {
|
|
8
|
+
return createDatabase('');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Creates a database with the committed migrations applied, as `prisma
|
|
12
|
+
* migrate deploy` leaves it: a copy of the template the global setup migrated.
|
|
13
|
+
*/
|
|
14
|
+
export function createMigratedDatabase() {
|
|
15
|
+
return createCopyOf(MIGRATED_TEMPLATE);
|
|
16
|
+
}
|
|
17
|
+
/** Creates a copy of the named template database in the shared Postgres container and returns its URL. */
|
|
18
|
+
export function createCopyOf(template) {
|
|
19
|
+
return createDatabase(` TEMPLATE ${template}`);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Runs a SQL file against the given database in one round trip, as
|
|
23
|
+
* `prisma db execute --file` does, without starting a Prisma CLI per file.
|
|
24
|
+
*/
|
|
25
|
+
export async function executeSqlFile(databaseUrl, file) {
|
|
26
|
+
const client = createPrismaClient(databaseUrl);
|
|
27
|
+
try {
|
|
28
|
+
// The file is a committed migration, never outside input.
|
|
29
|
+
await client.$executeRawUnsafe(await readFile(file, 'utf8'));
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
await client.$disconnect();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function createDatabase(template) {
|
|
36
|
+
const adminUrl = inject('postgresUrl');
|
|
37
|
+
const name = `aeolus_test_${randomBytes(6).toString('hex')}`;
|
|
38
|
+
const admin = createPrismaClient(adminUrl);
|
|
39
|
+
try {
|
|
40
|
+
// The name is generated above and the template is a constant, never outside input.
|
|
41
|
+
await admin.$executeRawUnsafe(`CREATE DATABASE ${name}${template}`);
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
await admin.$disconnect();
|
|
45
|
+
}
|
|
46
|
+
return databaseUrlOf(adminUrl, name);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/testing/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE1E,sFAAsF;AACtF,MAAM,UAAU,mBAAmB;IACjC,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,YAAY,CAAC,iBAAiB,CAAC,CAAC;AACzC,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,cAAc,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB,EAAE,IAAY;IACpE,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,0DAA0D;QAC1D,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,eAAe,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,mFAAmF;QACnF,MAAM,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,IAAI,GAAG,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FleetInitialised } from '../domain/registry/initialise-fleet.js';
|
|
2
|
+
import type { Caller } from '../domain/shared/caller.js';
|
|
3
|
+
/** The fleet's public URL in tests: where ships reach it. */
|
|
4
|
+
export declare const FLEET_URL = "https://fleet.example.com";
|
|
5
|
+
/** The operator's login in tests: what fleet init asks for, and sign-in takes. */
|
|
6
|
+
export declare const OPERATOR: {
|
|
7
|
+
email: string;
|
|
8
|
+
password: string;
|
|
9
|
+
};
|
|
10
|
+
/** argo as the caller, holding every scope, as its secret or console session makes it. */
|
|
11
|
+
export declare function operatorCaller(fleet: FleetInitialised): Caller;
|
|
12
|
+
/** The ship secret a use case issued; a commission that comes again issues none. */
|
|
13
|
+
export declare function secretOf(secret: string | null): string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SCOPES } from '@aeolus-fleet/common';
|
|
2
|
+
/** The fleet's public URL in tests: where ships reach it. */
|
|
3
|
+
export const FLEET_URL = 'https://fleet.example.com';
|
|
4
|
+
/** The operator's login in tests: what fleet init asks for, and sign-in takes. */
|
|
5
|
+
export const OPERATOR = { email: 'operator@example.com', password: 'correct horse battery staple' };
|
|
6
|
+
/** argo as the caller, holding every scope, as its secret or console session makes it. */
|
|
7
|
+
export function operatorCaller(fleet) {
|
|
8
|
+
return { shipId: fleet.operatorShipId, fleetId: fleet.fleetId, kind: 'operator', scopes: [...SCOPES] };
|
|
9
|
+
}
|
|
10
|
+
/** The ship secret a use case issued; a commission that comes again issues none. */
|
|
11
|
+
export function secretOf(secret) {
|
|
12
|
+
if (secret === null) {
|
|
13
|
+
throw new Error('No ship secret was issued');
|
|
14
|
+
}
|
|
15
|
+
return secret;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=fleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/testing/fleet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,2BAA2B,CAAC;AAErD,kFAAkF;AAClF,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAC;AAEpG,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;AACzG,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,MAAqB;IAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { argon2idPasswordHasher } from '../adapters/crypto/passwords.js';
|
|
2
|
+
export { createPrismaClient, type PrismaClient } from '../adapters/prisma/client.js';
|
|
3
|
+
export { SHIP_PROTOCOL } from '../adapters/trpc/ship-protocol.js';
|
|
4
|
+
export { createApp } from '../app.js';
|
|
5
|
+
export type { Caller } from '../domain/shared/caller.js';
|
|
6
|
+
export { createUseCases, type UseCases } from '../wiring.js';
|
|
7
|
+
export { createCopyOf, createEmptyDatabase, createMigratedDatabase, executeSqlFile } from './database.js';
|
|
8
|
+
export { FLEET_URL, OPERATOR, operatorCaller, secretOf } from './fleet.js';
|
|
9
|
+
export { newKey } from './keys.js';
|
|
10
|
+
export { migrateWhileAnotherHoldsTheLock } from './migrate-lock.js';
|
|
11
|
+
export { databaseUrlOf } from './migrated-template.js';
|
|
12
|
+
export { refusalOf, unwrap } from './result.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { argon2idPasswordHasher } from '../adapters/crypto/passwords.js';
|
|
2
|
+
export { createPrismaClient } from '../adapters/prisma/client.js';
|
|
3
|
+
export { SHIP_PROTOCOL } from '../adapters/trpc/ship-protocol.js';
|
|
4
|
+
export { createApp } from '../app.js';
|
|
5
|
+
export { createUseCases } from '../wiring.js';
|
|
6
|
+
export { createCopyOf, createEmptyDatabase, createMigratedDatabase, executeSqlFile } from './database.js';
|
|
7
|
+
export { FLEET_URL, OPERATOR, operatorCaller, secretOf } from './fleet.js';
|
|
8
|
+
export { newKey } from './keys.js';
|
|
9
|
+
export { migrateWhileAnotherHoldsTheLock } from './migrate-lock.js';
|
|
10
|
+
export { databaseUrlOf } from './migrated-template.js';
|
|
11
|
+
export { refusalOf, unwrap } from './result.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function newKey(): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/testing/keys.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,IAAI,IAAI,GAAG,CAAC,CAAC;AAEb,MAAM,UAAU,MAAM;IACpB,IAAI,IAAI,CAAC,CAAC;IACV,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface WaitedMigrate<T> {
|
|
2
|
+
outcome: T;
|
|
3
|
+
releasedAt: number;
|
|
4
|
+
finishedAt: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Holds Prisma Migrate's lock on the database as a long migrate in progress
|
|
8
|
+
* does: starts `migrate`, holds the lock until it has waited for it longer
|
|
9
|
+
* than Prisma's own wait, then lets go. Says when it let go and when the
|
|
10
|
+
* migrate finished.
|
|
11
|
+
*/
|
|
12
|
+
export declare function migrateWhileAnotherHoldsTheLock<T>(databaseUrl: string, migrate: () => Promise<T>): Promise<WaitedMigrate<T>>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { createPrismaClient } from '../adapters/prisma/client.js';
|
|
2
|
+
/** The advisory lock Prisma Migrate holds on a database while it migrates. */
|
|
3
|
+
const PRISMA_MIGRATE_LOCK = 72_707_369;
|
|
4
|
+
/** Longer than Prisma Migrate itself waits for its lock (10 seconds). */
|
|
5
|
+
const LONG_MIGRATION_MS = 12_000;
|
|
6
|
+
/** How often to look whether the migrate waits for the lock. */
|
|
7
|
+
const POLL_MS = 100;
|
|
8
|
+
/**
|
|
9
|
+
* Holds Prisma Migrate's lock on the database as a long migrate in progress
|
|
10
|
+
* does: starts `migrate`, holds the lock until it has waited for it longer
|
|
11
|
+
* than Prisma's own wait, then lets go. Says when it let go and when the
|
|
12
|
+
* migrate finished.
|
|
13
|
+
*/
|
|
14
|
+
export async function migrateWhileAnotherHoldsTheLock(databaseUrl, migrate) {
|
|
15
|
+
const database = createPrismaClient(databaseUrl);
|
|
16
|
+
let migrating;
|
|
17
|
+
try {
|
|
18
|
+
await database.$transaction(async (inProgress) => {
|
|
19
|
+
await inProgress.$executeRaw `SELECT pg_advisory_xact_lock(${PRISMA_MIGRATE_LOCK})`;
|
|
20
|
+
migrating = migrate().then((outcome) => ({ outcome, finishedAt: Date.now() }));
|
|
21
|
+
// Awaited below, once the lock is let go; a failure surfaces there.
|
|
22
|
+
migrating.catch(() => undefined);
|
|
23
|
+
await waitForLockWaiter(inProgress);
|
|
24
|
+
await new Promise((resolve) => setTimeout(resolve, LONG_MIGRATION_MS));
|
|
25
|
+
}, { timeout: 60_000 });
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
await database.$disconnect();
|
|
29
|
+
}
|
|
30
|
+
const releasedAt = Date.now();
|
|
31
|
+
if (migrating === undefined) {
|
|
32
|
+
throw new Error('the migrate never started');
|
|
33
|
+
}
|
|
34
|
+
return { ...(await migrating), releasedAt };
|
|
35
|
+
}
|
|
36
|
+
/** Resolves once another session waits for Prisma Migrate's lock, which this one holds. */
|
|
37
|
+
async function waitForLockWaiter(holder) {
|
|
38
|
+
for (;;) {
|
|
39
|
+
const [row] = await holder.$queryRaw `
|
|
40
|
+
SELECT EXISTS (
|
|
41
|
+
SELECT 1 FROM pg_locks
|
|
42
|
+
WHERE locktype = 'advisory' AND objid = ${PRISMA_MIGRATE_LOCK} AND NOT granted
|
|
43
|
+
AND database = (SELECT oid FROM pg_database WHERE datname = current_database())
|
|
44
|
+
) AS "isWaiting"`;
|
|
45
|
+
if (row?.isWaiting === true) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
await new Promise((resolve) => setTimeout(resolve, POLL_MS));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=migrate-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-lock.js","sourceRoot":"","sources":["../../src/testing/migrate-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAW,MAAM,8BAA8B,CAAC;AAE3E,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAEvC,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,gEAAgE;AAChE,MAAM,OAAO,GAAG,GAAG,CAAC;AAQpB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAI,WAAmB,EAAE,OAAyB;IACrG,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,SAAkE,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,YAAY,CACzB,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,MAAM,UAAU,CAAC,WAAW,CAAA,gCAAgC,mBAAmB,GAAG,CAAC;YACnF,SAAS,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/E,oEAAoE;YACpE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzE,CAAC,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;AAC9C,CAAC;AAED,2FAA2F;AAC3F,KAAK,UAAU,iBAAiB,CAAC,MAAU;IACzC,SAAS,CAAC;QACR,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAA0B;;;kDAGhB,mBAAmB;;uBAE9C,CAAC;QACpB,IAAI,GAAG,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The database the global setup migrates once per Postgres container; every
|
|
3
|
+
* migrated database a test asks for is a copy of it. Migrating each test
|
|
4
|
+
* file's database itself started a Prisma CLI over every migration in every
|
|
5
|
+
* worker at once, and under a full run that load took the tests' own time
|
|
6
|
+
* (#499).
|
|
7
|
+
*/
|
|
8
|
+
export declare const MIGRATED_TEMPLATE = "aeolus_test_migrated_template";
|
|
9
|
+
/** The URL of the named database on the server the admin URL points at. */
|
|
10
|
+
export declare function databaseUrlOf(adminUrl: string, name: string): string;
|
|
11
|
+
/** Creates the template with `prisma migrate deploy`, as an installation migrates. */
|
|
12
|
+
export declare function createMigratedTemplate(adminUrl: string): Promise<void>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createPrismaClient } from '../adapters/prisma/client.js';
|
|
2
|
+
import { prisma } from './prisma-cli.js';
|
|
3
|
+
/**
|
|
4
|
+
* The database the global setup migrates once per Postgres container; every
|
|
5
|
+
* migrated database a test asks for is a copy of it. Migrating each test
|
|
6
|
+
* file's database itself started a Prisma CLI over every migration in every
|
|
7
|
+
* worker at once, and under a full run that load took the tests' own time
|
|
8
|
+
* (#499).
|
|
9
|
+
*/
|
|
10
|
+
export const MIGRATED_TEMPLATE = 'aeolus_test_migrated_template';
|
|
11
|
+
/** The URL of the named database on the server the admin URL points at. */
|
|
12
|
+
export function databaseUrlOf(adminUrl, name) {
|
|
13
|
+
const url = new URL(adminUrl);
|
|
14
|
+
url.pathname = `/${name}`;
|
|
15
|
+
return url.toString();
|
|
16
|
+
}
|
|
17
|
+
/** Creates the template with `prisma migrate deploy`, as an installation migrates. */
|
|
18
|
+
export async function createMigratedTemplate(adminUrl) {
|
|
19
|
+
const admin = createPrismaClient(adminUrl);
|
|
20
|
+
try {
|
|
21
|
+
// The name is a constant of this file, never outside input.
|
|
22
|
+
await admin.$executeRawUnsafe(`CREATE DATABASE ${MIGRATED_TEMPLATE}`);
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
await admin.$disconnect();
|
|
26
|
+
}
|
|
27
|
+
await prisma(databaseUrlOf(adminUrl, MIGRATED_TEMPLATE), 'migrate', 'deploy');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=migrated-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrated-template.js","sourceRoot":"","sources":["../../src/testing/migrated-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAEjE,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAY;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,GAAG,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IAC3D,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,iBAAiB,EAAE,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PostgreSqlContainer } from '@testcontainers/postgresql';
|
|
2
|
+
/**
|
|
3
|
+
* Postgres for the tests, waited for by its log and its port instead of a
|
|
4
|
+
* health check. The module's own check runs every 250 ms, and on rootless
|
|
5
|
+
* Podman each run is a systemd unit of its own: a full run floods the user
|
|
6
|
+
* manager and leaves units behind (#554). It flushes nothing to disk: a commit
|
|
7
|
+
* that waits for the disk waits behind every other test's writes, and under a
|
|
8
|
+
* loaded full run Prisma Migrate's commits alone outlasted a test's time
|
|
9
|
+
* (#499). Only a crash of the host loses a commit then, and no test survives
|
|
10
|
+
* that anyway.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TestPostgres extends PostgreSqlContainer {
|
|
13
|
+
constructor(image: string);
|
|
14
|
+
/** Drops the check the module sets on start; the image defines none of its own. */
|
|
15
|
+
protected beforeContainerCreated(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { PostgreSqlContainer } from '@testcontainers/postgresql';
|
|
2
|
+
import { Wait } from 'testcontainers';
|
|
3
|
+
/**
|
|
4
|
+
* Postgres says it is ready twice: once for the server the image's entrypoint
|
|
5
|
+
* starts to initialise the database, once for the server that stays.
|
|
6
|
+
*/
|
|
7
|
+
const READY_LOG = /database system is ready to accept connections/;
|
|
8
|
+
/**
|
|
9
|
+
* Postgres for the tests, waited for by its log and its port instead of a
|
|
10
|
+
* health check. The module's own check runs every 250 ms, and on rootless
|
|
11
|
+
* Podman each run is a systemd unit of its own: a full run floods the user
|
|
12
|
+
* manager and leaves units behind (#554). It flushes nothing to disk: a commit
|
|
13
|
+
* that waits for the disk waits behind every other test's writes, and under a
|
|
14
|
+
* loaded full run Prisma Migrate's commits alone outlasted a test's time
|
|
15
|
+
* (#499). Only a crash of the host loses a commit then, and no test survives
|
|
16
|
+
* that anyway.
|
|
17
|
+
*/
|
|
18
|
+
export class TestPostgres extends PostgreSqlContainer {
|
|
19
|
+
constructor(image) {
|
|
20
|
+
super(image);
|
|
21
|
+
this.withCommand(['postgres', '-c', 'fsync=off']);
|
|
22
|
+
this.withWaitStrategy(Wait.forAll([Wait.forLogMessage(READY_LOG, 2), Wait.forListeningPorts()]));
|
|
23
|
+
}
|
|
24
|
+
/** Drops the check the module sets on start; the image defines none of its own. */
|
|
25
|
+
async beforeContainerCreated() {
|
|
26
|
+
delete this.createOpts.Healthcheck;
|
|
27
|
+
await super.beforeContainerCreated?.();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=postgres-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-container.js","sourceRoot":"","sources":["../../src/testing/postgres-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC;;;GAGG;AACH,MAAM,SAAS,GAAG,gDAAgD,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IACnD,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,mFAAmF;IAChE,KAAK,CAAC,sBAAsB;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QACnC,MAAM,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TestProject } from 'vitest/node';
|
|
2
|
+
declare module 'vitest' {
|
|
3
|
+
interface ProvidedContext {
|
|
4
|
+
/** Admin URL of the Postgres container shared by the integration tests. */
|
|
5
|
+
postgresUrl: string;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Starts one Postgres for the integration project. Each test file creates its
|
|
10
|
+
* own database in it (see database.ts), so files stay isolated; a
|
|
11
|
+
* migrated one is a copy of the template migrated here, before any test runs.
|
|
12
|
+
* Testcontainers reads the reaper image from the environment when it starts
|
|
13
|
+
* the first container; a reaper image set from outside wins.
|
|
14
|
+
*/
|
|
15
|
+
export declare function setup(project: TestProject): Promise<() => Promise<void>>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { POSTGRES_IMAGE, REAPER_IMAGE } from './container-images.js';
|
|
2
|
+
import { TestPostgres } from './postgres-container.js';
|
|
3
|
+
import { createMigratedTemplate } from './migrated-template.js';
|
|
4
|
+
/**
|
|
5
|
+
* Starts one Postgres for the integration project. Each test file creates its
|
|
6
|
+
* own database in it (see database.ts), so files stay isolated; a
|
|
7
|
+
* migrated one is a copy of the template migrated here, before any test runs.
|
|
8
|
+
* Testcontainers reads the reaper image from the environment when it starts
|
|
9
|
+
* the first container; a reaper image set from outside wins.
|
|
10
|
+
*/
|
|
11
|
+
export async function setup(project) {
|
|
12
|
+
process.env.RYUK_CONTAINER_IMAGE ??= REAPER_IMAGE;
|
|
13
|
+
const container = await new TestPostgres(POSTGRES_IMAGE).start();
|
|
14
|
+
await createMigratedTemplate(container.getConnectionUri());
|
|
15
|
+
project.provide('postgresUrl', container.getConnectionUri());
|
|
16
|
+
return async () => {
|
|
17
|
+
await container.stop();
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=postgres-global-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-global-setup.js","sourceRoot":"","sources":["../../src/testing/postgres-global-setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAShE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAoB;IAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,YAAY,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,MAAM,sBAAsB,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE7D,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
const run = promisify(execFile);
|
|
6
|
+
const serverRoot = fileURLToPath(new URL('../..', import.meta.url));
|
|
7
|
+
const prismaCli = createRequire(import.meta.url).resolve('prisma/build/index.js');
|
|
8
|
+
/** Runs the Prisma CLI from the server package against the given database. */
|
|
9
|
+
export function prisma(databaseUrl, ...args) {
|
|
10
|
+
return run(process.execPath, [prismaCli, ...args], {
|
|
11
|
+
cwd: serverRoot,
|
|
12
|
+
env: { ...process.env, DATABASE_URL: databaseUrl },
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=prisma-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-cli.js","sourceRoot":"","sources":["../../src/testing/prisma-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAElF,8EAA8E;AAC9E,MAAM,UAAU,MAAM,CAAC,WAAmB,EAAE,GAAG,IAAc;IAC3D,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;QACjD,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE;KACnD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Result } from '../domain/shared/result.js';
|
|
2
|
+
/** The value of an ok result. Fails the test with the domain's refusal otherwise. */
|
|
3
|
+
export declare function unwrap<T, E>(result: Result<T, E>): T;
|
|
4
|
+
/** The refusal of an error result. Fails the test with the value otherwise. */
|
|
5
|
+
export declare function refusalOf<T, E>(result: Result<T, E>): E;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** The value of an ok result. Fails the test with the domain's refusal otherwise. */
|
|
2
|
+
export function unwrap(result) {
|
|
3
|
+
if (!result.isOk) {
|
|
4
|
+
throw new Error(`Expected an ok result, but the domain refused: ${JSON.stringify(result.error)}`);
|
|
5
|
+
}
|
|
6
|
+
return result.value;
|
|
7
|
+
}
|
|
8
|
+
/** The refusal of an error result. Fails the test with the value otherwise. */
|
|
9
|
+
export function refusalOf(result) {
|
|
10
|
+
if (result.isOk) {
|
|
11
|
+
throw new Error(`Expected a refusal, but the domain answered: ${JSON.stringify(result.value)}`);
|
|
12
|
+
}
|
|
13
|
+
return result.error;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/testing/result.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,MAAM,UAAU,MAAM,CAAO,MAAoB;IAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAO,MAAoB;IAClD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC"}
|
package/dist/wiring.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ import { type MarkRead } from './domain/messaging/mark-read.js';
|
|
|
29
29
|
import type { ReceiverWakeups } from './domain/messaging/ports.js';
|
|
30
30
|
import { type PushReceiveDeliveries } from './domain/messaging/push-receive-deliveries.js';
|
|
31
31
|
import { type ReceiveDeliveries } from './domain/messaging/receive-deliveries.js';
|
|
32
|
+
import { type ReceiveReply } from './domain/messaging/receive-reply.js';
|
|
32
33
|
import { type ReplyToMessage } from './domain/messaging/reply-to-message.js';
|
|
33
34
|
import { type ResendDelivery } from './domain/messaging/resend-delivery.js';
|
|
34
35
|
import { type PingShip } from './domain/messaging/ping-ship.js';
|
|
@@ -38,14 +39,19 @@ import { type CommissionShip } from './domain/registry/commission-ship.js';
|
|
|
38
39
|
import { type Deregister } from './domain/registry/deregister.js';
|
|
39
40
|
import { type GetStartingPrompt } from './domain/registry/get-starting-prompt.js';
|
|
40
41
|
import { type GetShip } from './domain/registry/get-ship.js';
|
|
42
|
+
import { type ReadOnBehalf } from './domain/registry/read-on-behalf.js';
|
|
41
43
|
import { type InitialiseFleet } from './domain/registry/initialise-fleet.js';
|
|
42
44
|
import { type ListFleet } from './domain/registry/list-fleet.js';
|
|
43
45
|
import { type ListFleets } from './domain/registry/list-fleets.js';
|
|
44
46
|
import { type RecrewShip } from './domain/registry/recrew-ship.js';
|
|
45
47
|
import { type ReleaseShip } from './domain/registry/release-ship.js';
|
|
46
48
|
import { type RenameShip } from './domain/registry/rename-ship.js';
|
|
49
|
+
import { type SetOwner } from './domain/registry/set-owner.js';
|
|
50
|
+
import { type ConnectPlugin } from './domain/registry/connect-plugin.js';
|
|
47
51
|
import { type RetireShip } from './domain/registry/retire-ship.js';
|
|
48
52
|
import { type Report } from './domain/registry/report.js';
|
|
53
|
+
import { type SetStatement } from './domain/registry/set-statement.js';
|
|
54
|
+
import { type Discover } from './domain/registry/discover.js';
|
|
49
55
|
import { type ReportTurn } from './domain/registry/report-turn.js';
|
|
50
56
|
import { type RequestCrew } from './domain/registry/request-crew.js';
|
|
51
57
|
import { type RemoveCrewRequest } from './domain/registry/remove-crew-request.js';
|
|
@@ -58,6 +64,8 @@ import { type ConfirmWorktreeCleared } from './domain/registry/confirm-worktree-
|
|
|
58
64
|
import { type ReadClearRequests } from './domain/registry/read-clear-requests.js';
|
|
59
65
|
import { type RequestWorktreeClear } from './domain/registry/request-worktree-clear.js';
|
|
60
66
|
import { type ExplainCrewRequest } from './domain/registry/explain-crew-request.js';
|
|
67
|
+
import { type DeclareScopes } from './domain/registry/declare-scopes.js';
|
|
68
|
+
import { type GrantScopes } from './domain/registry/grant-scopes.js';
|
|
61
69
|
import { type DefineLabel } from './domain/registry/define-label.js';
|
|
62
70
|
import { type ExplainReach } from './domain/registry/explain-reach.js';
|
|
63
71
|
import { type ReadReachRefusals } from './domain/registry/read-reach-refusals.js';
|
|
@@ -65,11 +73,15 @@ import { type DeclareNetworkRules } from './domain/registry/declare-network-rule
|
|
|
65
73
|
import { type ReadDeclaredNetworkRules } from './domain/registry/read-declared-network-rules.js';
|
|
66
74
|
import { type RegisterNetworkPlugin } from './domain/registry/register-network-plugin.js';
|
|
67
75
|
import { type SetNetworkRules } from './domain/registry/set-network-rules.js';
|
|
76
|
+
import { type ReadBuiltInRules } from './domain/registry/read-built-in-rules.js';
|
|
77
|
+
import { type ReadNetworkPlugin } from './domain/registry/read-network-plugin.js';
|
|
78
|
+
import { type SetBuiltInRule } from './domain/registry/set-built-in-rule.js';
|
|
68
79
|
import { type UnregisterNetworkPlugin } from './domain/registry/unregister-network-plugin.js';
|
|
69
80
|
import { type ChangeLabelValues } from './domain/registry/change-label-values.js';
|
|
70
81
|
import { type AssignLabel } from './domain/registry/assign-label.js';
|
|
71
82
|
import { type UnassignLabel } from './domain/registry/unassign-label.js';
|
|
72
83
|
import { type ListLabels } from './domain/registry/list-labels.js';
|
|
84
|
+
import { type ListScopes } from './domain/registry/list-scopes.js';
|
|
73
85
|
import { type DeleteLabel } from './domain/registry/delete-label.js';
|
|
74
86
|
import { type FindLabelValue } from './domain/registry/find-label-value.js';
|
|
75
87
|
import { type ReadReportLog } from './domain/registry/report-log.js';
|
|
@@ -90,11 +102,10 @@ import { type GetInstallationFleet } from './domain/registry/get-installation-fl
|
|
|
90
102
|
import { type ListInstallationFleets } from './domain/registry/list-installation-fleets.js';
|
|
91
103
|
import { type ReadInbox } from './domain/shared/read-inbox.js';
|
|
92
104
|
import { type ReadMessage } from './domain/shared/read-message.js';
|
|
105
|
+
import { type ReadSentMessage } from './domain/shared/read-sent-message.js';
|
|
93
106
|
import { type ReadShipWay } from './domain/shared/read-ship-way.js';
|
|
94
107
|
import { type ReadNeedsAttention } from './domain/shared/read-needs-attention.js';
|
|
95
|
-
import { type ReadNoShipCanTake } from './domain/shared/read-no-ship-can-take.js';
|
|
96
108
|
import { type ReadHealth } from './domain/shared/read-health.js';
|
|
97
|
-
import { type ReadOverdue } from './domain/shared/read-overdue.js';
|
|
98
109
|
import { type ReadShipMessages } from './domain/shared/read-ship-messages.js';
|
|
99
110
|
import { type ReadShipTimeline } from './domain/shared/read-ship-timeline.js';
|
|
100
111
|
export interface UseCases {
|
|
@@ -106,12 +117,17 @@ export interface UseCases {
|
|
|
106
117
|
releaseShip: ReleaseShip;
|
|
107
118
|
retireShip: RetireShip;
|
|
108
119
|
renameShip: RenameShip;
|
|
120
|
+
setOwner: SetOwner;
|
|
121
|
+
connectPlugin: ConnectPlugin;
|
|
109
122
|
recrewShip: RecrewShip;
|
|
110
123
|
listFleet: ListFleet;
|
|
111
124
|
getShip: GetShip;
|
|
125
|
+
readOnBehalf: ReadOnBehalf;
|
|
112
126
|
claimShip: ClaimShip;
|
|
113
127
|
whoami: Whoami;
|
|
114
128
|
report: Report;
|
|
129
|
+
setStatement: SetStatement;
|
|
130
|
+
discover: Discover;
|
|
115
131
|
reportTurn: ReportTurn;
|
|
116
132
|
requestCrew: RequestCrew;
|
|
117
133
|
removeCrewRequest: RemoveCrewRequest;
|
|
@@ -125,9 +141,15 @@ export interface UseCases {
|
|
|
125
141
|
confirmWorktreeCleared: ConfirmWorktreeCleared;
|
|
126
142
|
explainCrewRequest: ExplainCrewRequest;
|
|
127
143
|
defineLabel: DefineLabel;
|
|
144
|
+
declareScopes: DeclareScopes;
|
|
145
|
+
grantScopes: GrantScopes;
|
|
146
|
+
listScopes: ListScopes;
|
|
128
147
|
setNetworkRules: SetNetworkRules;
|
|
129
148
|
registerNetworkPlugin: RegisterNetworkPlugin;
|
|
130
149
|
unregisterNetworkPlugin: UnregisterNetworkPlugin;
|
|
150
|
+
setBuiltInRule: SetBuiltInRule;
|
|
151
|
+
readBuiltInRules: ReadBuiltInRules;
|
|
152
|
+
readNetworkPlugin: ReadNetworkPlugin;
|
|
131
153
|
readReachRefusals: ReadReachRefusals;
|
|
132
154
|
declareNetworkRules: DeclareNetworkRules;
|
|
133
155
|
readDeclaredNetworkRules: ReadDeclaredNetworkRules;
|
|
@@ -142,6 +164,7 @@ export interface UseCases {
|
|
|
142
164
|
deregister: Deregister;
|
|
143
165
|
sendMessage: SendMessage;
|
|
144
166
|
receiveDeliveries: ReceiveDeliveries;
|
|
167
|
+
receiveReply: ReceiveReply;
|
|
145
168
|
pushReceiveDeliveries: PushReceiveDeliveries;
|
|
146
169
|
handOverDelivery: HandOverDelivery;
|
|
147
170
|
reportHandled: ReportHandled;
|
|
@@ -162,10 +185,9 @@ export interface UseCases {
|
|
|
162
185
|
readShipTimeline: ReadShipTimeline;
|
|
163
186
|
readShipMessages: ReadShipMessages;
|
|
164
187
|
readMessage: ReadMessage;
|
|
188
|
+
sentMessage: ReadSentMessage;
|
|
165
189
|
readShipWay: ReadShipWay;
|
|
166
190
|
readNeedsAttention: ReadNeedsAttention;
|
|
167
|
-
readOverdue: ReadOverdue;
|
|
168
|
-
readNoShipCanTake: ReadNoShipCanTake;
|
|
169
191
|
readHealth: ReadHealth;
|
|
170
192
|
readInbox: ReadInbox;
|
|
171
193
|
signIn: SignIn;
|