Skip to content

Commit d654752

Browse files
refactor(proofs): reworked directory structure
Signed-off-by: NB-Karim <[email protected]>
1 parent 1634262 commit d654752

File tree

73 files changed

+498
-268
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+498
-268
lines changed

packages/core/src/agent/AgentConfig.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { DID_COMM_TRANSPORT_QUEUE } from '../constants'
99
import { AriesFrameworkError } from '../error'
1010
import { ConsoleLogger, LogLevel } from '../logger'
1111
import { AutoAcceptCredential } from '../modules/credentials/CredentialAutoAcceptType'
12-
import { AutoAcceptProof } from '../modules/proofs/ProofAutoAcceptType'
12+
import { AutoAcceptProof } from '../modules/proofs/models/ProofAutoAcceptType'
1313
import { MediatorPickupStrategy } from '../modules/routing/MediatorPickupStrategy'
1414
import { DidCommMimeType } from '../types'
1515

packages/core/src/agent/__tests__/Agent.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { IndyLedgerService } from '../../modules/ledger'
1414
import { LedgerModule } from '../../modules/ledger/LedgerModule'
1515
import { ProofRepository } from '../../modules/proofs'
1616
import { ProofsModule } from '../../modules/proofs/ProofsModule'
17-
import { V1LegacyProofService } from '../../modules/proofs/v1/V1LegacyProofService'
17+
import { V1LegacyProofService } from '../../modules/proofs/protocol/v1/V1LegacyProofService'
1818
import {
1919
MediatorModule,
2020
RecipientModule,

packages/core/src/modules/proofs/ProofEvents.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { BaseEvent } from '../../agent/Events'
2-
import type { ProofState } from './ProofState'
2+
import type { ProofState } from './models/ProofState'
33
import type { ProofRecord } from './repository'
44

55
export enum ProofEventTypes {

packages/core/src/modules/proofs/ProofResponseCoordinator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { scoped, Lifecycle } from 'tsyringe'
44

55
import { AgentConfig } from '../../agent/AgentConfig'
66

7-
import { AutoAcceptProof } from './ProofAutoAcceptType'
7+
import { AutoAcceptProof } from './models/ProofAutoAcceptType'
88

99
/**
1010
* This class handles all the automation with all the messages in the present proof protocol
Lines changed: 86 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,110 @@
11
import type { AgentMessage } from '../../agent/AgentMessage'
22
import type { HandlerInboundMessage } from '../../agent/Handler'
3-
import type { PresentationRecordType } from './PresentationExchangeRecord'
4-
import type { PresentationPreview } from './PresentationPreview'
5-
import type { ProofProtocolVersion } from './ProofProtocolVersion'
6-
import type { ProofRecord } from './repository'
7-
import type { ProofRequest, RetrievedCredentials } from './v1/models'
8-
import type { ProofFormatService } from './v2/formats/ProofFormatService'
9-
import type { V2ProposePresentationHandler } from './v2/handlers/V2ProposePresentationHandler'
3+
import type { InboundMessageContext } from '../../agent/models/InboundMessageContext'
104
import type {
115
CreateRequestOptions,
12-
ProofRequestAsResponse,
13-
ProofRequestsOptions,
14-
ProposeProofOptions,
156
RequestProofOptions,
16-
} from './v2/interface'
7+
CreateProposalOptions,
8+
CreateProposalAsResponseOptions,
9+
CreateRequestAsResponseOptions,
10+
} from './interface'
11+
import type { ProofProtocolVersion } from './models/ProofProtocolVersion'
12+
import type { ProofRequest, RetrievedCredentials } from './protocol/v1/models'
13+
import type { PresentationPreview } from './protocol/v1/models/PresentationPreview'
14+
import type { ProofRecord } from './repository'
15+
import type { PresentationRecordType } from './repository/PresentationExchangeRecord'
16+
import type { ProofFormatService } from './v2/formats/ProofFormatService'
17+
import type { V2ProposePresentationHandler } from './v2/handlers/V2ProposePresentationHandler'
1718

1819
import { ConsoleLogger, LogLevel } from '../../logger'
1920

2021
const logger = new ConsoleLogger(LogLevel.debug)
2122

23+
/**
24+
* - creates records & messages
25+
* - stores records
26+
* - returns records & messages
27+
*/
2228
export abstract class ProofService {
2329
abstract getVersion(): ProofProtocolVersion
24-
abstract createProposal(proposal: ProposeProofOptions): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
2530

26-
abstract requestProof(
27-
requestProofOptions: RequestProofOptions
31+
/**
32+
* 1. Assert (connection ready, record state)
33+
* 1. Create proposal message
34+
* 2. loop through all formats from ProposeProofOptions and call format service
35+
* 3. Create and store proof record
36+
* 4. Store proposal message
37+
* 5. Return proposal message + proof record
38+
*/
39+
abstract createProposal(options: CreateProposalOptions): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
40+
41+
/**
42+
* Create a proposal message in response to a received proof request message
43+
*
44+
* 1. assert record state
45+
* 1. Create proposal message
46+
* 2. loop through all formats from ProposeProofOptions and call format service
47+
* 3. Update proof record
48+
* 4. Create or update proposal message
49+
* 5. Return proposal message + proof record
50+
*/
51+
abstract createProposalAsResponse(
52+
options: CreateProposalAsResponseOptions
2853
): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
2954

30-
abstract createRequest(
31-
createRequestOptions: CreateRequestOptions
55+
/**
56+
* Process a received proposal message (does not accept yet)
57+
*
58+
* 1. Find proof record by thread and connection id
59+
*
60+
* Two flows possible:
61+
* - Proof record already exist
62+
* 2. Assert state
63+
* 3. Save or update proposal message in storage (didcomm message record)
64+
* 4. Loop through all format services to process proposal message
65+
* 5. Update & return record
66+
*
67+
* - Proof record does not exist yet
68+
* 2. Create record
69+
* 3. Save proposal message
70+
* 4. Loop through all format services to process proposal message
71+
* 5. Save & return record
72+
*/
73+
abstract processProposal(messageContext: InboundMessageContext<AgentMessage>): Promise<ProofRecord>
74+
75+
abstract createRequest(options: CreateRequestOptions): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
76+
77+
abstract createRequestAsResponse(
78+
options: CreateRequestAsResponseOptions
3279
): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
3380

34-
public getFormatService(presentationRecordType: PresentationRecordType): ProofFormatService {
35-
logger.debug(presentationRecordType.toString())
36-
throw Error('Not Implemented')
37-
}
81+
abstract processRequest(messageContext: InboundMessageContext<AgentMessage>): Promise<ProofRecord>
3882

39-
abstract processProposal(messageContext: HandlerInboundMessage<V2ProposePresentationHandler>): Promise<ProofRecord>
83+
abstract createPresentation(
84+
options: CreatePresentationOptions
85+
): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
4086

41-
abstract getById(proofRecordId: string): Promise<ProofRecord>
87+
abstract processPresentation(messageContext: InboundMessageContext<AgentMessage>): Promise<ProofRecord>
4288

43-
abstract getRequestedCredentialsForProofRequest(
44-
proofRequest: ProofRequest,
45-
presentationProposal?: PresentationPreview
46-
): Promise<RetrievedCredentials>
89+
abstract createAck(options: CreateAckOptions): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
4790

48-
abstract createProofRequestFromProposal(
49-
presentationProposal: PresentationPreview,
50-
proofRequestOptions: ProofRequestsOptions
51-
): Promise<ProofRequest>
91+
abstract processAck(messageContext: InboundMessageContext<AgentMessage>): Promise<ProofRecord>
5292

53-
abstract createRequestAsResponse(
54-
proofRequestAsResponse: ProofRequestAsResponse
93+
abstract createProblemReport(
94+
options: CreateProblemReportOptions
5595
): Promise<{ proofRecord: ProofRecord; message: AgentMessage }>
96+
abstract processProblemReport(messageContext: InboundMessageContext<AgentMessage>): Promise<ProofRecord>
97+
98+
abstract getRequestedCredentialsForProofRequest(options: {
99+
proofRecord: ProofRecord
100+
}): Promise<{ indy?: RetrievedCredentials; w3c?: never }>
101+
102+
public getFormatService(presentationRecordType: PresentationRecordType): ProofFormatService {
103+
logger.debug(presentationRecordType.toString())
104+
throw Error('Not Implemented')
105+
}
106+
107+
public getById(proofRecordId: string): Promise<ProofRecord> {
108+
return this.proofRepository.getById(proofRecordId)
109+
}
56110
}

packages/core/src/modules/proofs/ProofsAPI.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
import type { PresentationExchangeRecord, PresentationRecordBinding } from './PresentationExchangeRecord'
1+
import type { PresentationExchangeRecord, PresentationRecordBinding } from './repository/PresentationExchangeRecord'
22
import type { ProofService } from './ProofService'
3-
import type { ProofRecord } from './repository'
4-
import type { RetrievedCredentials } from './v1/models'
53
import type {
64
AcceptProposalOptions,
75
CreateRequestOptions,
86
ProofRequestAsResponse,
97
ProofRequestsOptions,
108
ProposeProofOptions,
119
RequestProofOptions,
12-
} from './v2/interface'
10+
} from './interface'
11+
import type { ProofRecord } from './repository'
12+
import type { RetrievedCredentials } from './protocol/v1/models'
1313

1414
import { inject, Lifecycle, scoped } from 'tsyringe'
1515

@@ -25,16 +25,16 @@ import { ConnectionService } from '../connections/services/ConnectionService'
2525
import { IndyHolderService } from '../indy'
2626
import { MediationRecipientService } from '../routing'
2727

28-
import { PresentationRecordType } from './PresentationExchangeRecord'
29-
import { ProofProtocolVersion } from './ProofProtocolVersion'
28+
import { PresentationRecordType } from './repository/PresentationExchangeRecord'
29+
import { ProofProtocolVersion } from './models/ProofProtocolVersion'
3030
import { ProofResponseCoordinator } from './ProofResponseCoordinator'
31-
import { ProofState } from './ProofState'
31+
import { ProofRole } from './models/ProofRole'
32+
import { ProofState } from './models/ProofState'
3233
import { ProofsModule } from './ProofsModule'
3334
import { ProofRepository } from './repository'
34-
import { V1LegacyProofService } from './v1/V1LegacyProofService'
35-
import { V1ProofService } from './v1/V1ProofService'
36-
import { ProofRequest } from './v1/models'
37-
import { ProofRole } from './v2/ProofRole'
35+
import { V1LegacyProofService } from './protocol/v1/V1LegacyProofService'
36+
import { V1ProofService } from './protocol/v1/V1ProofService'
37+
import { ProofRequest } from './protocol/v1/models'
3838
import { V2ProofService } from './v2/V2ProofService'
3939

4040
export interface ProofsAPI {

packages/core/src/modules/proofs/ProofsModule.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import type { PresentationPreview } from './PresentationPreview'
2-
import type { AutoAcceptProof } from './ProofAutoAcceptType'
1+
import type { PresentationPreview } from './protocol/v1/models/PresentationPreview'
2+
import type { AutoAcceptProof } from './models/ProofAutoAcceptType'
33
import type { ProofRecord } from './repository/ProofRecord'
4-
import type { RequestPresentationMessage } from './v1/messages'
5-
import type { ProofRequestOptions, RequestedCredentials, RetrievedCredentials } from './v1/models'
4+
import type { RequestPresentationMessage } from './protocol/v1/messages'
5+
import type { ProofRequestOptions, RequestedCredentials, RetrievedCredentials } from './protocol/v1/models'
66

77
import { Lifecycle, scoped } from 'tsyringe'
88

@@ -17,16 +17,16 @@ import { MediationRecipientService } from '../routing/services/MediationRecipien
1717

1818
import { ProofResponseCoordinator } from './ProofResponseCoordinator'
1919
import { PresentationProblemReportReason } from './errors'
20-
import { V1LegacyProofService } from './v1/V1LegacyProofService'
20+
import { V1LegacyProofService } from './protocol/v1/V1LegacyProofService'
2121
import {
2222
ProposePresentationHandler,
2323
RequestPresentationHandler,
2424
PresentationAckHandler,
2525
PresentationHandler,
2626
PresentationProblemReportHandler,
27-
} from './v1/handlers'
28-
import { PresentationProblemReportMessage } from './v1/messages'
29-
import { ProofRequest } from './v1/models'
27+
} from './protocol/v1/handlers'
28+
import { PresentationProblemReportMessage } from './protocol/v1/messages'
29+
import { ProofRequest } from './protocol/v1/models'
3030

3131
@scoped(Lifecycle.ContainerScoped)
3232
export class ProofsModule {

packages/core/src/modules/proofs/__tests__/ProofRequest.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { JsonTransformer } from '../../../utils/JsonTransformer'
22
import { MessageValidator } from '../../../utils/MessageValidator'
3-
import { ProofRequest } from '../v1/models'
3+
import { ProofRequest } from '../protocol/v1/models'
44

55
describe('ProofRequest', () => {
66
it('should successfully validate if the proof request json contains a valid structure', async () => {

packages/core/src/modules/proofs/__tests__/ProofService.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@ import { ConnectionService, ConnectionState } from '../../connections'
1111
import { IndyHolderService } from '../../indy/services/IndyHolderService'
1212
import { IndyLedgerService } from '../../ledger/services'
1313
import { ProofEventTypes } from '../ProofEvents'
14-
import { ProofState } from '../ProofState'
14+
import { ProofState } from '../models/ProofState'
1515
import { PresentationProblemReportReason } from '../errors/PresentationProblemReportReason'
1616
import { ProofRecord } from '../repository/ProofRecord'
1717
import { ProofRepository } from '../repository/ProofRepository'
18-
import { V1LegacyProofService } from '../v1/V1LegacyProofService'
18+
import { V1LegacyProofService } from '../protocol/v1/V1LegacyProofService'
1919

2020
import { IndyVerifierService } from './../../indy/services/IndyVerifierService'
21-
import { PresentationProblemReportMessage } from './../v1/messages/PresentationProblemReportMessage'
21+
import { PresentationProblemReportMessage } from '../protocol/v1/messages/PresentationProblemReportMessage'
2222
import {
2323
INDY_PROOF_REQUEST_ATTACHMENT_ID,
2424
RequestPresentationMessage,
25-
} from './../v1/messages/RequestPresentationMessage'
25+
} from '../protocol/v1/messages/RequestPresentationMessage'
2626
import { credDef } from './fixtures'
2727

2828
// Mock classes

packages/core/src/modules/proofs/__tests__/ProofState.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ProofState } from '../ProofState'
1+
import { ProofState } from '../models/ProofState'
22

33
describe('ProofState', () => {
44
test('state matches Present Proof 1.0 (RFC 0037) state value', () => {

0 commit comments

Comments
 (0)