Skip to content

chore: Phase 2c - third Repository port: Request (all five variants) - #10336

Draft
gatzjames wants to merge 1 commit into
arch-phase-2c-environment-repositoryfrom
arch-phase-2c-request-repository
Draft

chore: Phase 2c - third Repository port: Request (all five variants)#10336
gatzjames wants to merge 1 commit into
arch-phase-2c-environment-repositoryfrom
arch-phase-2c-request-repository

Conversation

@gatzjames

Copy link
Copy Markdown
Contributor

No description provided.

RequestRepository, covering HTTP Request/GrpcRequest/WebSocketRequest/
SocketIORequest/McpRequest as one aggregate root, per the one-per-
aggregate-root decision:

- domain/src/request/ - one entity file per variant, plus
  request-shared.entity.ts (RequestHeader/RequestParameter/RequestBody/
  RequestAuthentication and its 13 AuthType* variants, shared by HTTP/
  WebSocket/Socket.IO/MCP) and any-request.entity.ts (the AnyRequest
  discriminated union, per-variant type guards, and getRequestTypeFromId -
  dispatching on each variant's distinct id prefix, since there's no
  existing 5-way union anywhere in insomnia-data to reuse).
- domain/src/request/request-repository.port.ts - findById/findByParentId/
  save/delete over AnyRequest.
- infrastructure/src/persistence/nedb/nedb-request-repository.ts - turned
  out simpler than expected: database.update()/remove() already dispatch
  on the doc's own `type` field internally, so save()/delete() need no
  per-variant switch. Only findById() (needs a type to query with,
  derived from the id prefix) and findByParentId() (queries all five
  types and merges) know about the variants explicitly.
- domain/src/testing/request-repository.contract.ts - parameterized over
  all five variants via it.each.

Found and worked around a real, pre-existing insomnia-data gap while
writing the contract tests (not something introduced by this PR, and not
fixed here per strict scoping - see commit discussion): McpRequest's
init() declares no `name` or `isPrivate` default, and neither is in its
optionalKeys, so initModel()'s field-pruning strips both on every write
(create, update, and the raw update() save() uses). Marked both optional
on the domain McpRequest entity to reflect that reality, and used
`description` (which every variant's init() does declare) rather than
`name` for the cross-variant "save() persists changes" contract test.

Nothing in apps/desktop or apps/cli switches over yet, same as the
Workspace/Environment PRs.

Verified: lint, type-check, check-boundaries, and the full test suite all
pass clean across every workspace (infrastructure now has 3 test files /
27 contract tests).
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

✅ Circular References Report

Generated at: 2026-08-05T15:10:25.535Z
Status: ✅ NO CHANGE

Summary

Metric Base (arch-phase-2c-environment-repository) PR Change
Total Circular References 13 13 0 (0.00%)
Click to view all circular references in PR (13)
../apps/desktop/src/common/render.ts -> ../apps/desktop/src/network/network.ts
../apps/desktop/src/network/network.ts -> ../apps/desktop/src/network/concurrency.renderer.ts -> insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts
../packages/insomnia-scripting-environment/src/objects/collection.ts -> ../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts
../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts
../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts -> ../packages/insomnia-scripting-environment/src/objects/insomnia.ts
../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts -> ../packages/insomnia-scripting-environment/src/objects/insomnia.ts -> ../packages/insomnia-scripting-environment/src/objects/send-request.ts
desktop/src/main/prompt-bridge.ts -> desktop/src/main/window-utils.ts -> desktop/src/main/plugin-window.ts
desktop/src/main/window-utils.ts -> desktop/src/main/plugin-window.ts
desktop/src/network/network.ts -> desktop/src/common/render.ts
desktop/src/ui/components/settings/import-export.tsx -> desktop/src/ui/components/modals/export-requests-modal.tsx
desktop/src/ui/components/tabs/tab-list.tsx -> desktop/src/ui/components/tabs/tab.tsx
desktop/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> desktop/src/ui/components/templating/external-vault/external-vault-form.tsx
desktop/src/ui/components/viewers/response-viewer.tsx -> desktop/src/ui/components/viewers/response-multipart-viewer.tsx
Click to view all circular references in base branch (13)
../apps/desktop/src/common/render.ts -> ../apps/desktop/src/network/network.ts
../apps/desktop/src/network/network.ts -> ../apps/desktop/src/network/concurrency.renderer.ts -> insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts
../packages/insomnia-scripting-environment/src/objects/collection.ts -> ../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts
../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts
../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts -> ../packages/insomnia-scripting-environment/src/objects/insomnia.ts
../packages/insomnia-scripting-environment/src/objects/response.ts -> desktop/src/network/network.ts -> ../packages/insomnia-scripting-environment/src/objects/index.ts -> ../packages/insomnia-scripting-environment/src/objects/insomnia.ts -> ../packages/insomnia-scripting-environment/src/objects/send-request.ts
desktop/src/main/prompt-bridge.ts -> desktop/src/main/window-utils.ts -> desktop/src/main/plugin-window.ts
desktop/src/main/window-utils.ts -> desktop/src/main/plugin-window.ts
desktop/src/network/network.ts -> desktop/src/common/render.ts
desktop/src/ui/components/settings/import-export.tsx -> desktop/src/ui/components/modals/export-requests-modal.tsx
desktop/src/ui/components/tabs/tab-list.tsx -> desktop/src/ui/components/tabs/tab.tsx
desktop/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> desktop/src/ui/components/templating/external-vault/external-vault-form.tsx
desktop/src/ui/components/viewers/response-viewer.tsx -> desktop/src/ui/components/viewers/response-multipart-viewer.tsx

Analysis

No Change: This PR does not introduce or remove any circular references.


This report was generated automatically by comparing against the arch-phase-2c-environment-repository branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant