@sphereon/ssi-sdk.data-store-types 0.36.1-next.50 → 0.37.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/contact/AbstractContactStore.ts","../src/digitalCredential/AbstractDigitalCredentialStore.ts","../src/issuanceBranding/AbstractIssuanceBrandingStore.ts","../src/eventLogger/AbstractEventLoggerStore.ts","../src/machineState/IAbstractMachineStateStore.ts","../src/presentationDefinition/AbstractPDStore.ts","../src/types/contact/contact.ts","../src/types/digitalCredential/enums.ts","../src/utils/MappingUtils.ts"],"sourcesContent":["// import {PartyCorrelationType} from \"@sphereon/ssi-sdk.core\";\n\nexport { AbstractContactStore } from './contact/AbstractContactStore'\nexport { AbstractDigitalCredentialStore } from './digitalCredential/AbstractDigitalCredentialStore'\nexport { AbstractIssuanceBrandingStore } from './issuanceBranding/AbstractIssuanceBrandingStore'\nexport { AbstractEventLoggerStore } from './eventLogger/AbstractEventLoggerStore'\nexport { IAbstractMachineStateStore } from './machineState/IAbstractMachineStateStore'\nexport { AbstractPDStore } from './presentationDefinition/AbstractPDStore'\n\nexport * from './types'\nexport * from './utils/MappingUtils'\n","import {\n AddElectronicAddressArgs,\n AddIdentityArgs,\n AddPartyArgs,\n AddPartyTypeArgs,\n AddPhysicalAddressArgs,\n AddRelationshipArgs,\n ElectronicAddress,\n GetElectronicAddressArgs,\n GetElectronicAddressesArgs,\n GetIdentitiesArgs,\n GetIdentityArgs,\n GetPartiesArgs,\n GetPartyArgs,\n GetPartyTypeArgs,\n GetPartyTypesArgs,\n GetPhysicalAddressArgs,\n GetPhysicalAddressesArgs,\n GetRelationshipArgs,\n GetRelationshipsArgs,\n Identity,\n Party,\n PartyRelationship,\n PartyType,\n PhysicalAddress,\n RemoveElectronicAddressArgs,\n RemoveIdentityArgs,\n RemovePartyArgs,\n RemovePartyTypeArgs,\n RemovePhysicalAddressArgs,\n RemoveRelationshipArgs,\n UpdateElectronicAddressArgs,\n UpdateIdentityArgs,\n UpdatePartyArgs,\n UpdatePartyTypeArgs,\n UpdatePhysicalAddressArgs,\n UpdateRelationshipArgs,\n} from '../types'\n\nexport abstract class AbstractContactStore {\n abstract getParty(args: GetPartyArgs): Promise<Party>\n abstract getParties(args?: GetPartiesArgs): Promise<Array<Party>>\n abstract addParty(args: AddPartyArgs): Promise<Party>\n abstract updateParty(args: UpdatePartyArgs): Promise<Party>\n abstract removeParty(args: RemovePartyArgs): Promise<void>\n abstract getIdentity(args: GetIdentityArgs): Promise<Identity>\n abstract getIdentities(args?: GetIdentitiesArgs): Promise<Array<Identity>>\n abstract addIdentity(args: AddIdentityArgs): Promise<Identity>\n abstract updateIdentity(args: UpdateIdentityArgs): Promise<Identity>\n abstract removeIdentity(args: RemoveIdentityArgs): Promise<void>\n abstract getRelationship(args: GetRelationshipArgs): Promise<PartyRelationship>\n abstract getRelationships(args?: GetRelationshipsArgs): Promise<Array<PartyRelationship>>\n abstract addRelationship(args: AddRelationshipArgs): Promise<PartyRelationship>\n abstract updateRelationship(args: UpdateRelationshipArgs): Promise<PartyRelationship>\n abstract removeRelationship(args: RemoveRelationshipArgs): Promise<void>\n abstract getPartyType(args: GetPartyTypeArgs): Promise<PartyType>\n abstract getPartyTypes(args?: GetPartyTypesArgs): Promise<Array<PartyType>>\n abstract addPartyType(args: AddPartyTypeArgs): Promise<PartyType>\n abstract updatePartyType(args: UpdatePartyTypeArgs): Promise<PartyType>\n abstract removePartyType(args: RemovePartyTypeArgs): Promise<void>\n abstract getElectronicAddress(args: GetElectronicAddressArgs): Promise<ElectronicAddress>\n abstract getElectronicAddresses(args?: GetElectronicAddressesArgs): Promise<Array<ElectronicAddress>>\n abstract addElectronicAddress(args: AddElectronicAddressArgs): Promise<ElectronicAddress>\n abstract updateElectronicAddress(args: UpdateElectronicAddressArgs): Promise<ElectronicAddress>\n abstract removeElectronicAddress(args: RemoveElectronicAddressArgs): Promise<void>\n abstract getPhysicalAddress(args: GetPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract getPhysicalAddresses(args?: GetPhysicalAddressesArgs): Promise<Array<PhysicalAddress>>\n abstract addPhysicalAddress(args: AddPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract updatePhysicalAddress(args: UpdatePhysicalAddressArgs): Promise<PhysicalAddress>\n abstract removePhysicalAddress(args: RemovePhysicalAddressArgs): Promise<void>\n}\n","import {\n AddCredentialArgs,\n DigitalCredential,\n GetCredentialArgs,\n GetCredentialsArgs,\n GetCredentialsResponse,\n RemoveCredentialArgs,\n UpdateCredentialArgs,\n UpdateCredentialStateArgs,\n} from '../types'\n\nexport abstract class AbstractDigitalCredentialStore {\n abstract getCredential(args: GetCredentialArgs): Promise<DigitalCredential>\n\n abstract getCredentials(args?: GetCredentialsArgs): Promise<GetCredentialsResponse>\n\n abstract addCredential(args: AddCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredential(args: UpdateCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredentialState(args: UpdateCredentialStateArgs): Promise<DigitalCredential>\n\n abstract removeCredential(args: RemoveCredentialArgs): Promise<boolean>\n}\n","import type {\n IAddCredentialBrandingArgs,\n IAddCredentialLocaleBrandingArgs,\n IAddIssuerBrandingArgs,\n IAddIssuerLocaleBrandingArgs,\n ICredentialBranding,\n ICredentialLocaleBranding,\n IGetCredentialBrandingArgs,\n IGetCredentialLocaleBrandingArgs,\n IGetIssuerBrandingArgs,\n IGetIssuerLocaleBrandingArgs,\n IIssuerBranding,\n IIssuerLocaleBranding,\n IRemoveCredentialBrandingArgs,\n IRemoveCredentialLocaleBrandingArgs,\n IRemoveIssuerBrandingArgs,\n IRemoveIssuerLocaleBrandingArgs,\n IUpdateCredentialBrandingArgs,\n IUpdateCredentialLocaleBrandingArgs,\n IUpdateIssuerBrandingArgs,\n IUpdateIssuerLocaleBrandingArgs,\n} from '../types'\n\nexport abstract class AbstractIssuanceBrandingStore {\n public abstract addCredentialBranding(args: IAddCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialBranding(args?: IGetCredentialBrandingArgs): Promise<Array<ICredentialBranding>>\n public abstract updateCredentialBranding(args: IUpdateCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract removeCredentialBranding(args: IRemoveCredentialBrandingArgs): Promise<void>\n public abstract addCredentialLocaleBranding(args: IAddCredentialLocaleBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialLocaleBranding(args?: IGetCredentialLocaleBrandingArgs): Promise<Array<ICredentialLocaleBranding>>\n public abstract updateCredentialLocaleBranding(args: IUpdateCredentialLocaleBrandingArgs): Promise<ICredentialLocaleBranding>\n public abstract removeCredentialLocaleBranding(args: IRemoveCredentialLocaleBrandingArgs): Promise<void>\n public abstract addIssuerBranding(args: IAddIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerBranding(args?: IGetIssuerBrandingArgs): Promise<Array<IIssuerBranding>>\n public abstract updateIssuerBranding(args: IUpdateIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract removeIssuerBranding(args: IRemoveIssuerBrandingArgs): Promise<void>\n public abstract addIssuerLocaleBranding(args: IAddIssuerLocaleBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerLocaleBranding(args?: IGetIssuerLocaleBrandingArgs): Promise<Array<IIssuerLocaleBranding>>\n public abstract updateIssuerLocaleBranding(args: IUpdateIssuerLocaleBrandingArgs): Promise<IIssuerLocaleBranding>\n public abstract removeIssuerLocaleBranding(args: IRemoveIssuerLocaleBrandingArgs): Promise<void>\n}\n","import type { ActivityLoggingEvent, AuditLoggingEvent } from '@sphereon/ssi-sdk.core'\nimport type { GetActivityEventsArgs, GetAuditEventsArgs, StoreActivityEventArgs, StoreAuditEventArgs } from '../types'\n\nexport abstract class AbstractEventLoggerStore {\n abstract getAuditEvents(args: GetAuditEventsArgs): Promise<Array<AuditLoggingEvent>>\n abstract getActivityEvents(args: GetActivityEventsArgs): Promise<Array<ActivityLoggingEvent>>\n abstract storeAuditEvent(args: StoreAuditEventArgs): Promise<AuditLoggingEvent>\n abstract storeActivityEvent(args: StoreActivityEventArgs): Promise<ActivityLoggingEvent>\n}\n","import type {\n StoreMachineStateDeleteExpiredArgs,\n StoreMachineStateDeleteArgs,\n StoreMachineStatesFindActiveArgs,\n StoreFindMachineStatesArgs,\n StoreMachineStatePersistArgs,\n StoreMachineStateInfo,\n StoreMachineStateGetArgs,\n} from '../types'\n\n/**\n * Represents an abstract class for storing machine states.\n * This class provides methods for persisting, retrieving, and deleting machine states.\n *\n * @interface\n */\nexport abstract class IAbstractMachineStateStore {\n /**\n * Persists the machine state.\n *\n * @param {StoreMachineStatePersistArgs} state - The object containing the machine state to persist.\n * @return {Promise<StoreMachineStateInfo>} - A Promise that resolves to the information about the persisted machine state.\n */\n abstract persistMachineState(state: StoreMachineStatePersistArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds active machine states based on the given arguments.\n *\n * @param {StoreMachineStatesFindActiveArgs} args - The arguments for finding active machine states.\n * @return {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves with an array of active machine states.\n */\n abstract findActiveMachineStates(args: StoreMachineStatesFindActiveArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Retrieves the state of a particular machine.\n *\n * @param {StoreMachineStateGetArgs} args - The arguments for retrieving the machine state.\n * @returns {Promise<StoreMachineStateInfo>} - A promise that resolves to the machine state information.\n */\n abstract getMachineState(args: StoreMachineStateGetArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds the machine states based on the given arguments.\n *\n * @param {StoreFindMachineStatesArgs} [args] - The arguments to filter the machine states.\n * @returns {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves to an array of machine state information.\n */\n abstract findMachineStates(args?: StoreFindMachineStatesArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Deletes a machine state.\n *\n * @param {StoreMachineStateDeleteArgs} args - The arguments for deleting the machine state.\n * @return {Promise<boolean>} - A promise that resolves to a boolean indicating if the machine state was successfully deleted or not.\n */\n abstract deleteMachineState(args: StoreMachineStateDeleteArgs): Promise<boolean>\n\n /**\n * Deletes expired machine states from the database.\n *\n * @param {StoreMachineStateDeleteExpiredArgs} args - The arguments for deleting expired machine states.\n * @return {Promise<number>} - A promise that resolves to the number of deleted machine states.\n */\n abstract deleteExpiredMachineStates(args: StoreMachineStateDeleteExpiredArgs): Promise<number>\n}\n","import type {\n GetDefinitionArgs,\n GetDefinitionsArgs,\n DeleteDefinitionArgs,\n DcqlQueryItem,\n AddDefinitionArgs,\n UpdateDefinitionArgs,\n DeleteDefinitionsArgs,\n} from '../types'\n\nexport abstract class AbstractPDStore {\n abstract hasDefinition(args: GetDefinitionArgs): Promise<boolean>\n abstract hasDefinitions(args: GetDefinitionsArgs): Promise<boolean>\n abstract getDefinition(args: GetDefinitionArgs): Promise<DcqlQueryItem>\n abstract getDefinitions(args: GetDefinitionsArgs): Promise<Array<DcqlQueryItem>>\n abstract addDefinition(args: AddDefinitionArgs): Promise<DcqlQueryItem>\n abstract updateDefinition(args: UpdateDefinitionArgs): Promise<DcqlQueryItem>\n abstract deleteDefinition(args: DeleteDefinitionArgs): Promise<void>\n abstract deleteDefinitions(args: DeleteDefinitionsArgs): Promise<number>\n}\n","import { ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution'\nimport { IIdentifier } from '@veramo/core'\nimport { IIssuerLocaleBranding } from '../issuanceBranding/issuanceBranding'\nimport { CredentialRole } from '@sphereon/ssi-types'\n\nexport type MetadataTypes = string | number | Date | boolean | undefined\n\nexport interface IMetadataEntity {\n // TODO move to types\n label: string\n stringValue?: string\n numberValue?: number\n dateValue?: Date\n boolValue?: boolean\n}\n\nexport type Party = {\n id: string\n uri?: string\n roles: Array<CredentialRole>\n ownerId?: string\n tenantId?: string\n identities: Array<Identity>\n electronicAddresses: Array<ElectronicAddress>\n physicalAddresses: Array<PhysicalAddress>\n contact: Contact\n partyType: PartyType\n /**\n * TODO: Integrate branding logic here in the future. What we should do is make the issuance branding plugin part of the contact-manager and retrieve any branding there is.\n *\n * Currently, we are only defining the branding type within the SDK without implementing the associated logic. This is because:\n * 1. We are combining two types from the SSI-SDK to create a new type that will be used across multiple places in the wallets (web & mobile).\n * 2. While it makes sense to have this combined type in the SDK, the logic to support database connections for these types is complex. The types belong to different modules, and we don't use them together currently.\n * 3. Implementing the full logic now would require significant changes and cross-module interactions, which we don't have the time to address at present.\n *\n * For now, we are defining the type here and will use it in the mobile wallet has the logic for it. This is a temporary solution until we have the resources to integrate the branding logic fully.\n */\n branding?: IIssuerLocaleBranding\n relationships: Array<PartyRelationship>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedParty = Omit<\n Party,\n | 'id'\n | 'identities'\n | 'electronicAddresses'\n | 'physicalAddresses'\n | 'contact'\n | 'roles'\n | 'partyType'\n | 'relationships'\n | 'createdAt'\n | 'lastUpdatedAt'\n> & {\n identities?: Array<NonPersistedIdentity>\n electronicAddresses?: Array<NonPersistedElectronicAddress>\n physicalAddresses?: Array<NonPersistedPhysicalAddress>\n contact: NonPersistedContact\n partyType: NonPersistedPartyType\n relationships?: Array<NonPersistedPartyRelationship>\n}\nexport type PartialParty = Partial<\n Omit<Party, 'identities' | 'electronicAddresses' | 'physicalAddresses' | 'contact' | 'partyType' | 'relationships'>\n> & {\n identities?: PartialIdentity\n electronicAddresses?: PartialElectronicAddress\n physicalAddresses?: PartialPhysicalAddress\n contact?: PartialContact\n partyType?: PartialPartyType\n relationships?: PartialPartyRelationship\n}\n\nexport type Identity = {\n id: string\n alias: string\n ownerId?: string\n tenantId?: string\n origin: IdentityOrigin\n roles: Array<CredentialRole>\n identifier: CorrelationIdentifier\n connection?: Connection\n metadata?: Array<MetadataItem<MetadataTypes>>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedIdentity = Omit<Identity, 'id' | 'identifier' | 'connection' | 'metadata' | 'origin' | 'createdAt' | 'lastUpdatedAt'> & {\n origin: IdentityOrigin\n identifier: NonPersistedCorrelationIdentifier\n connection?: NonPersistedConnection\n metadata?: Array<NonPersistedMetadataItem<MetadataTypes>>\n}\nexport type PartialIdentity = Partial<Omit<Identity, 'identifier' | 'connection' | 'metadata' | 'origin' | 'roles'>> & {\n identifier?: PartialCorrelationIdentifier\n connection?: PartialConnection\n metadata?: PartialMetadataItem<MetadataTypes> // Usage: FindIdentityArgs = Array<PartialIdentity>\n origin?: IdentityOrigin\n roles?: CredentialRole\n partyId?: string\n}\n\nexport type MetadataItem<T extends MetadataTypes> = {\n id: string\n label: string\n value: T\n}\n\nexport type NonPersistedMetadataItem<T extends MetadataTypes> = Omit<MetadataItem<T>, 'id'>\nexport type PartialMetadataItem<T extends MetadataTypes> = Partial<MetadataItem<T>>\n\nexport type CorrelationIdentifier = {\n id: string\n ownerId?: string\n tenantId?: string\n type: CorrelationIdentifierType\n correlationId: string\n}\nexport type NonPersistedCorrelationIdentifier = Omit<CorrelationIdentifier, 'id'>\nexport type PartialCorrelationIdentifier = Partial<CorrelationIdentifier>\n\nexport type Connection = {\n id: string\n ownerId?: string\n tenantId?: string\n type: ConnectionType\n config: ConnectionConfig\n}\nexport type NonPersistedConnection = Omit<Connection, 'id' | 'config'> & {\n config: NonPersistedConnectionConfig\n}\nexport type PartialConnection = Partial<Omit<Connection, 'config'>> & {\n config: PartialConnectionConfig\n}\n\nexport type OpenIdConfig = {\n id: string\n clientId: string\n clientSecret: string\n ownerId?: string\n tenantId?: string\n scopes: Array<string>\n issuer: string\n redirectUrl: string\n dangerouslyAllowInsecureHttpRequests: boolean\n clientAuthMethod: 'basic' | 'post' | undefined\n}\nexport type NonPersistedOpenIdConfig = Omit<OpenIdConfig, 'id'>\nexport type PartialOpenIdConfig = Partial<OpenIdConfig>\n\nexport type DidAuthConfig = {\n id: string\n idOpts: ManagedIdentifierOptsOrResult\n stateId: string\n ownerId?: string\n tenantId?: string\n redirectUrl: string\n sessionId: string\n}\nexport type NonPersistedDidAuthConfig = Omit<DidAuthConfig, 'id'>\nexport type PartialDidAuthConfig = Partial<Omit<DidAuthConfig, 'identifier'>> & {\n identifier: Partial<IIdentifier> // TODO, we need to create partials for sub types in IIdentifier\n}\n\nexport type ConnectionConfig = OpenIdConfig | DidAuthConfig\nexport type NonPersistedConnectionConfig = NonPersistedDidAuthConfig | NonPersistedOpenIdConfig\nexport type PartialConnectionConfig = PartialOpenIdConfig | PartialDidAuthConfig\n\nexport type NaturalPerson = {\n id: string\n firstName: string\n lastName: string\n middleName?: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\n\nexport type NonPersistedNaturalPerson = Omit<NaturalPerson, 'id' | 'createdAt' | 'lastUpdatedAt'>\n\nexport type PartialNaturalPerson = Partial<Omit<NaturalPerson, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Organization = {\n id: string\n legalName: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedOrganization = Omit<Organization, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialOrganization = Partial<Omit<Organization, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Contact = NaturalPerson | Organization\nexport type NonPersistedContact = NonPersistedNaturalPerson | NonPersistedOrganization\nexport type PartialContact = PartialNaturalPerson | PartialOrganization\n\nexport type PartyType = {\n id: string\n type: PartyTypeType\n origin: PartyOrigin\n name: string\n tenantId: string\n description?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyType = Omit<PartyType, 'id' | 'createdAt' | 'lastUpdatedAt'> & {\n id?: string\n}\nexport type PartialPartyType = Partial<PartyType>\n\nexport type PartyRelationship = {\n id: string\n leftId: string\n rightId: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyRelationship = Omit<PartyRelationship, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPartyRelationship = Partial<PartyRelationship>\n\nexport type ElectronicAddress = {\n id: string\n type: ElectronicAddressType\n electronicAddress: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedElectronicAddress = Omit<ElectronicAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialElectronicAddress = Partial<ElectronicAddress> & {\n partyId?: string\n}\n\nexport type PhysicalAddress = {\n id: string\n type: PhysicalAddressType\n streetName: string\n streetNumber: string\n postalCode: string\n cityName: string\n provinceName: string\n countryCode: string\n buildingName?: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPhysicalAddress = Omit<PhysicalAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPhysicalAddress = Partial<PhysicalAddress> & {\n partyId?: string\n}\n\nexport type ElectronicAddressType = 'email' | 'phone'\n\nexport type PhysicalAddressType = 'home' | 'visit' | 'postal'\n\nexport enum ConnectionType {\n OPENID_CONNECT = 'OIDC',\n SIOPv2 = 'SIOPv2',\n SIOPv2_OpenID4VP = 'SIOPv2+OpenID4VP',\n}\n\nexport enum CorrelationIdentifierType {\n DID = 'did',\n URL = 'url',\n}\n\nexport enum PartyTypeType {\n NATURAL_PERSON = 'naturalPerson',\n ORGANIZATION = 'organization',\n}\n\nexport enum PartyOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum IdentityOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n","export enum DocumentType {\n VC = 'VC',\n VP = 'VP',\n P = 'P',\n C = 'C',\n}\n\nexport enum RegulationType {\n PID = 'PID',\n QEAA = 'QEAA',\n EAA = 'EAA',\n NON_REGULATED = 'NON_REGULATED',\n}\n\nexport enum CredentialDocumentFormat {\n JSON_LD = 'JSON_LD',\n JWT = 'JWT',\n SD_JWT = 'SD_JWT',\n MSO_MDOC = 'MSO_MDOC',\n}\n\nexport namespace CredentialDocumentFormat {\n export function fromSpecValue(credentialFormat: string) {\n const format = credentialFormat.toLowerCase()\n if (format.includes('sd')) {\n return CredentialDocumentFormat.SD_JWT\n } else if (format.includes('ldp')) {\n return CredentialDocumentFormat.JSON_LD\n } else if (format.includes('mso') || credentialFormat.includes('mdoc')) {\n return CredentialDocumentFormat.MSO_MDOC\n } else if (format.includes('jwt_')) {\n return CredentialDocumentFormat.JWT\n } else {\n throw Error(`Could not map format ${format} to known format`)\n }\n }\n\n export function toSpecValue(documentFormat: CredentialDocumentFormat, documentType: DocumentType) {\n switch (documentFormat) {\n case CredentialDocumentFormat.SD_JWT:\n return 'dc+sd-jwt'\n case CredentialDocumentFormat.MSO_MDOC:\n return 'mso_mdoc'\n case CredentialDocumentFormat.JSON_LD:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'ldp_vc' : 'ldp_vp'\n case CredentialDocumentFormat.JWT:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'jwt_vc_json' : 'jwt_vp_json'\n }\n }\n}\n\nexport enum CredentialCorrelationType {\n DID = 'DID',\n X509_SAN = 'X509_SAN',\n KID = 'KID',\n URL = 'URL',\n}\n\nexport enum CredentialStateType {\n REVOKED = 'REVOKED',\n VERIFIED = 'VERIFIED',\n EXPIRED = 'EXPIRED',\n}\n","import { CredentialMapper, ObjectUtils } from '@sphereon/ssi-types'\n\nfunction isHex(input: string) {\n return input.match(/^([0-9A-Fa-f])+$/g) !== null\n}\nexport function ensureRawDocument(input: string | object): string {\n if (typeof input === 'string') {\n if (isHex(input) || ObjectUtils.isBase64(input)) {\n // mso_mdoc\n return input\n } else if (CredentialMapper.isJwtEncoded(input) || CredentialMapper.isSdJwtEncoded(input)) {\n return input\n }\n throw Error('Unknown input to be mapped as rawDocument')\n }\n\n try {\n return JSON.stringify(input)\n } catch (e) {\n throw new Error(`Can't stringify to a raw credential: ${input}`)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;ACuCO,IAAeA,uBAAf,MAAeA;EAAtB,OAAsBA;;;AA+BtB;;;AC3DO,IAAeC,iCAAf,MAAeA;EAAtB,OAAsBA;;;AAYtB;;;ACAO,IAAeC,gCAAf,MAAeA;EAAtB,OAAsBA;;;AAiBtB;;;ACrCO,IAAeC,2BAAf,MAAeA;EAAtB,OAAsBA;;;AAKtB;;;ACQO,IAAeC,6BAAf,MAAeA;EANtB,OAMsBA;;;AAgDtB;;;ACtDO,IAAeC,kBAAf,MAAeA;EAAtB,OAAsBA;;;AAStB;;;AC2PO,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;SAAAA;;AAML,IAAKC,4BAAAA,0BAAAA,4BAAAA;;;SAAAA;;AAKL,IAAKC,gBAAAA,0BAAAA,gBAAAA;;;SAAAA;;AAKL,IAAKC,cAAAA,0BAAAA,cAAAA;;;SAAAA;;AAKL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;SAAAA;;;;ACnSL,IAAKC,eAAAA,0BAAAA,eAAAA;;;;;SAAAA;;AAOL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;;SAAAA;;AAOL,IAAKC,2BAAAA,0BAAAA,2BAAAA;;;;;SAAAA;;UAOKA,2BAAAA;AACR,WAASC,cAAcC,kBAAwB;AACpD,UAAMC,SAASD,iBAAiBE,YAAW;AAC3C,QAAID,OAAOE,SAAS,IAAA,GAAO;AACzB,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,GAAQ;AACjC,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,KAAUH,iBAAiBG,SAAS,MAAA,GAAS;AACtE,aAAA;IACF,WAAWF,OAAOE,SAAS,MAAA,GAAS;AAClC,aAAA;IACF,OAAO;AACL,YAAMC,MAAM,wBAAwBH,MAAAA,kBAAwB;IAC9D;EACF;AAbgBF;4BAAAA,gBAAAA;AAeT,WAASM,YAAYC,gBAA0CC,cAA0B;AAC9F,YAAQD,gBAAAA;MACN,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAOC,iBAAAA,OAAmCA,iBAAAA,OAAmC,WAAW;MAC1F,KAAA;AACE,eAAOA,iBAAAA,OAAmCA,iBAAAA,OAAmC,gBAAgB;IACjG;EACF;AAXgBF;4BAAAA,cAAAA;AAYlB,GA5BiBP,6BAAAA,2BAAAA,CAAAA,EAAAA;AA8BV,IAAKU,4BAAAA,0BAAAA,4BAAAA;;;;;SAAAA;;AAOL,IAAKC,sBAAAA,0BAAAA,sBAAAA;;;;SAAAA;;;;AC1DZ,uBAA8C;AAE9C,SAASC,MAAMC,OAAa;AAC1B,SAAOA,MAAMC,MAAM,mBAAA,MAAyB;AAC9C;AAFSF;AAGF,SAASG,kBAAkBF,OAAsB;AACtD,MAAI,OAAOA,UAAU,UAAU;AAC7B,QAAID,MAAMC,KAAAA,KAAUG,6BAAYC,SAASJ,KAAAA,GAAQ;AAE/C,aAAOA;IACT,WAAWK,kCAAiBC,aAAaN,KAAAA,KAAUK,kCAAiBE,eAAeP,KAAAA,GAAQ;AACzF,aAAOA;IACT;AACA,UAAMQ,MAAM,2CAAA;EACd;AAEA,MAAI;AACF,WAAOC,KAAKC,UAAUV,KAAAA;EACxB,SAASW,GAAG;AACV,UAAM,IAAIH,MAAM,wCAAwCR,KAAAA,EAAO;EACjE;AACF;AAhBgBE;","names":["AbstractContactStore","AbstractDigitalCredentialStore","AbstractIssuanceBrandingStore","AbstractEventLoggerStore","IAbstractMachineStateStore","AbstractPDStore","ConnectionType","CorrelationIdentifierType","PartyTypeType","PartyOrigin","IdentityOrigin","DocumentType","RegulationType","CredentialDocumentFormat","fromSpecValue","credentialFormat","format","toLowerCase","includes","Error","toSpecValue","documentFormat","documentType","CredentialCorrelationType","CredentialStateType","isHex","input","match","ensureRawDocument","ObjectUtils","isBase64","CredentialMapper","isJwtEncoded","isSdJwtEncoded","Error","JSON","stringify","e"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/contact/AbstractContactStore.ts","../src/digitalCredential/AbstractDigitalCredentialStore.ts","../src/issuanceBranding/AbstractIssuanceBrandingStore.ts","../src/eventLogger/AbstractEventLoggerStore.ts","../src/machineState/IAbstractMachineStateStore.ts","../src/presentationDefinition/AbstractPDStore.ts","../src/types/contact/contact.ts","../src/types/digitalCredential/enums.ts","../src/utils/MappingUtils.ts"],"sourcesContent":["// import {PartyCorrelationType} from \"@sphereon/ssi-sdk.core\";\n\nexport { AbstractContactStore } from './contact/AbstractContactStore'\nexport { AbstractDigitalCredentialStore } from './digitalCredential/AbstractDigitalCredentialStore'\nexport { AbstractIssuanceBrandingStore } from './issuanceBranding/AbstractIssuanceBrandingStore'\nexport { AbstractEventLoggerStore } from './eventLogger/AbstractEventLoggerStore'\nexport { IAbstractMachineStateStore } from './machineState/IAbstractMachineStateStore'\nexport { AbstractPDStore } from './presentationDefinition/AbstractPDStore'\n\nexport * from './types'\nexport * from './utils/MappingUtils'\n","import {\n AddElectronicAddressArgs,\n AddIdentityArgs,\n AddPartyArgs,\n AddPartyTypeArgs,\n AddPhysicalAddressArgs,\n AddRelationshipArgs,\n ElectronicAddress,\n GetElectronicAddressArgs,\n GetElectronicAddressesArgs,\n GetIdentitiesArgs,\n GetIdentityArgs,\n GetPartiesArgs,\n GetPartyArgs,\n GetPartyTypeArgs,\n GetPartyTypesArgs,\n GetPhysicalAddressArgs,\n GetPhysicalAddressesArgs,\n GetRelationshipArgs,\n GetRelationshipsArgs,\n Identity,\n Party,\n PartyRelationship,\n PartyType,\n PhysicalAddress,\n RemoveElectronicAddressArgs,\n RemoveIdentityArgs,\n RemovePartyArgs,\n RemovePartyTypeArgs,\n RemovePhysicalAddressArgs,\n RemoveRelationshipArgs,\n UpdateElectronicAddressArgs,\n UpdateIdentityArgs,\n UpdatePartyArgs,\n UpdatePartyTypeArgs,\n UpdatePhysicalAddressArgs,\n UpdateRelationshipArgs,\n} from '../types'\n\nexport abstract class AbstractContactStore {\n abstract getParty(args: GetPartyArgs): Promise<Party>\n abstract getParties(args?: GetPartiesArgs): Promise<Array<Party>>\n abstract addParty(args: AddPartyArgs): Promise<Party>\n abstract updateParty(args: UpdatePartyArgs): Promise<Party>\n abstract removeParty(args: RemovePartyArgs): Promise<void>\n abstract getIdentity(args: GetIdentityArgs): Promise<Identity>\n abstract getIdentities(args?: GetIdentitiesArgs): Promise<Array<Identity>>\n abstract addIdentity(args: AddIdentityArgs): Promise<Identity>\n abstract updateIdentity(args: UpdateIdentityArgs): Promise<Identity>\n abstract removeIdentity(args: RemoveIdentityArgs): Promise<void>\n abstract getRelationship(args: GetRelationshipArgs): Promise<PartyRelationship>\n abstract getRelationships(args?: GetRelationshipsArgs): Promise<Array<PartyRelationship>>\n abstract addRelationship(args: AddRelationshipArgs): Promise<PartyRelationship>\n abstract updateRelationship(args: UpdateRelationshipArgs): Promise<PartyRelationship>\n abstract removeRelationship(args: RemoveRelationshipArgs): Promise<void>\n abstract getPartyType(args: GetPartyTypeArgs): Promise<PartyType>\n abstract getPartyTypes(args?: GetPartyTypesArgs): Promise<Array<PartyType>>\n abstract addPartyType(args: AddPartyTypeArgs): Promise<PartyType>\n abstract updatePartyType(args: UpdatePartyTypeArgs): Promise<PartyType>\n abstract removePartyType(args: RemovePartyTypeArgs): Promise<void>\n abstract getElectronicAddress(args: GetElectronicAddressArgs): Promise<ElectronicAddress>\n abstract getElectronicAddresses(args?: GetElectronicAddressesArgs): Promise<Array<ElectronicAddress>>\n abstract addElectronicAddress(args: AddElectronicAddressArgs): Promise<ElectronicAddress>\n abstract updateElectronicAddress(args: UpdateElectronicAddressArgs): Promise<ElectronicAddress>\n abstract removeElectronicAddress(args: RemoveElectronicAddressArgs): Promise<void>\n abstract getPhysicalAddress(args: GetPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract getPhysicalAddresses(args?: GetPhysicalAddressesArgs): Promise<Array<PhysicalAddress>>\n abstract addPhysicalAddress(args: AddPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract updatePhysicalAddress(args: UpdatePhysicalAddressArgs): Promise<PhysicalAddress>\n abstract removePhysicalAddress(args: RemovePhysicalAddressArgs): Promise<void>\n}\n","import {\n AddCredentialArgs,\n DigitalCredential,\n GetCredentialArgs,\n GetCredentialsArgs,\n GetCredentialsResponse,\n RemoveCredentialArgs,\n UpdateCredentialArgs,\n UpdateCredentialStateArgs,\n} from '../types'\n\nexport abstract class AbstractDigitalCredentialStore {\n abstract getCredential(args: GetCredentialArgs): Promise<DigitalCredential>\n\n abstract getCredentials(args?: GetCredentialsArgs): Promise<GetCredentialsResponse>\n\n abstract addCredential(args: AddCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredential(args: UpdateCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredentialState(args: UpdateCredentialStateArgs): Promise<DigitalCredential>\n\n abstract removeCredential(args: RemoveCredentialArgs): Promise<boolean>\n}\n","import type {\n IAddCredentialBrandingArgs,\n IAddCredentialLocaleBrandingArgs,\n IAddIssuerBrandingArgs,\n IAddIssuerLocaleBrandingArgs,\n ICredentialBranding,\n ICredentialLocaleBranding,\n IGetCredentialBrandingArgs,\n IGetCredentialLocaleBrandingArgs,\n IGetIssuerBrandingArgs,\n IGetIssuerLocaleBrandingArgs,\n IIssuerBranding,\n IIssuerLocaleBranding,\n IRemoveCredentialBrandingArgs,\n IRemoveCredentialLocaleBrandingArgs,\n IRemoveIssuerBrandingArgs,\n IRemoveIssuerLocaleBrandingArgs,\n IUpdateCredentialBrandingArgs,\n IUpdateCredentialLocaleBrandingArgs,\n IUpdateIssuerBrandingArgs,\n IUpdateIssuerLocaleBrandingArgs,\n} from '../types'\n\nexport abstract class AbstractIssuanceBrandingStore {\n public abstract addCredentialBranding(args: IAddCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialBranding(args?: IGetCredentialBrandingArgs): Promise<Array<ICredentialBranding>>\n public abstract updateCredentialBranding(args: IUpdateCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract removeCredentialBranding(args: IRemoveCredentialBrandingArgs): Promise<void>\n public abstract addCredentialLocaleBranding(args: IAddCredentialLocaleBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialLocaleBranding(args?: IGetCredentialLocaleBrandingArgs): Promise<Array<ICredentialLocaleBranding>>\n public abstract updateCredentialLocaleBranding(args: IUpdateCredentialLocaleBrandingArgs): Promise<ICredentialLocaleBranding>\n public abstract removeCredentialLocaleBranding(args: IRemoveCredentialLocaleBrandingArgs): Promise<void>\n public abstract addIssuerBranding(args: IAddIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerBranding(args?: IGetIssuerBrandingArgs): Promise<Array<IIssuerBranding>>\n public abstract updateIssuerBranding(args: IUpdateIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract removeIssuerBranding(args: IRemoveIssuerBrandingArgs): Promise<void>\n public abstract addIssuerLocaleBranding(args: IAddIssuerLocaleBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerLocaleBranding(args?: IGetIssuerLocaleBrandingArgs): Promise<Array<IIssuerLocaleBranding>>\n public abstract updateIssuerLocaleBranding(args: IUpdateIssuerLocaleBrandingArgs): Promise<IIssuerLocaleBranding>\n public abstract removeIssuerLocaleBranding(args: IRemoveIssuerLocaleBrandingArgs): Promise<void>\n}\n","import type { ActivityLoggingEvent, AuditLoggingEvent } from '@sphereon/ssi-sdk.core'\nimport type { GetActivityEventsArgs, GetAuditEventsArgs, StoreActivityEventArgs, StoreAuditEventArgs } from '../types'\n\nexport abstract class AbstractEventLoggerStore {\n abstract getAuditEvents(args: GetAuditEventsArgs): Promise<Array<AuditLoggingEvent>>\n abstract getActivityEvents(args: GetActivityEventsArgs): Promise<Array<ActivityLoggingEvent>>\n abstract storeAuditEvent(args: StoreAuditEventArgs): Promise<AuditLoggingEvent>\n abstract storeActivityEvent(args: StoreActivityEventArgs): Promise<ActivityLoggingEvent>\n}\n","import type {\n StoreMachineStateDeleteExpiredArgs,\n StoreMachineStateDeleteArgs,\n StoreMachineStatesFindActiveArgs,\n StoreFindMachineStatesArgs,\n StoreMachineStatePersistArgs,\n StoreMachineStateInfo,\n StoreMachineStateGetArgs,\n} from '../types'\n\n/**\n * Represents an abstract class for storing machine states.\n * This class provides methods for persisting, retrieving, and deleting machine states.\n *\n * @interface\n */\nexport abstract class IAbstractMachineStateStore {\n /**\n * Persists the machine state.\n *\n * @param {StoreMachineStatePersistArgs} state - The object containing the machine state to persist.\n * @return {Promise<StoreMachineStateInfo>} - A Promise that resolves to the information about the persisted machine state.\n */\n abstract persistMachineState(state: StoreMachineStatePersistArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds active machine states based on the given arguments.\n *\n * @param {StoreMachineStatesFindActiveArgs} args - The arguments for finding active machine states.\n * @return {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves with an array of active machine states.\n */\n abstract findActiveMachineStates(args: StoreMachineStatesFindActiveArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Retrieves the state of a particular machine.\n *\n * @param {StoreMachineStateGetArgs} args - The arguments for retrieving the machine state.\n * @returns {Promise<StoreMachineStateInfo>} - A promise that resolves to the machine state information.\n */\n abstract getMachineState(args: StoreMachineStateGetArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds the machine states based on the given arguments.\n *\n * @param {StoreFindMachineStatesArgs} [args] - The arguments to filter the machine states.\n * @returns {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves to an array of machine state information.\n */\n abstract findMachineStates(args?: StoreFindMachineStatesArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Deletes a machine state.\n *\n * @param {StoreMachineStateDeleteArgs} args - The arguments for deleting the machine state.\n * @return {Promise<boolean>} - A promise that resolves to a boolean indicating if the machine state was successfully deleted or not.\n */\n abstract deleteMachineState(args: StoreMachineStateDeleteArgs): Promise<boolean>\n\n /**\n * Deletes expired machine states from the database.\n *\n * @param {StoreMachineStateDeleteExpiredArgs} args - The arguments for deleting expired machine states.\n * @return {Promise<number>} - A promise that resolves to the number of deleted machine states.\n */\n abstract deleteExpiredMachineStates(args: StoreMachineStateDeleteExpiredArgs): Promise<number>\n}\n","import type {\n GetDefinitionArgs,\n GetDefinitionsArgs,\n DeleteDefinitionArgs,\n DcqlQueryItem,\n AddDefinitionArgs,\n UpdateDefinitionArgs,\n DeleteDefinitionsArgs,\n} from '../types'\n\nexport abstract class AbstractPDStore {\n abstract hasDefinition(args: GetDefinitionArgs): Promise<boolean>\n abstract hasDefinitions(args: GetDefinitionsArgs): Promise<boolean>\n abstract getDefinition(args: GetDefinitionArgs): Promise<DcqlQueryItem>\n abstract getDefinitions(args: GetDefinitionsArgs): Promise<Array<DcqlQueryItem>>\n abstract addDefinition(args: AddDefinitionArgs): Promise<DcqlQueryItem>\n abstract updateDefinition(args: UpdateDefinitionArgs): Promise<DcqlQueryItem>\n abstract deleteDefinition(args: DeleteDefinitionArgs): Promise<void>\n abstract deleteDefinitions(args: DeleteDefinitionsArgs): Promise<number>\n}\n","import { ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution'\nimport { IIdentifier } from '@veramo/core'\nimport { IIssuerLocaleBranding } from '../issuanceBranding/issuanceBranding'\nimport { CredentialRole } from '@sphereon/ssi-types'\n\nexport type MetadataTypes = string | number | Date | boolean | undefined\n\nexport interface IMetadataEntity {\n // TODO move to types\n label: string\n stringValue?: string\n numberValue?: number\n dateValue?: Date\n boolValue?: boolean\n}\n\nexport type Party = {\n id: string\n uri?: string\n roles: Array<CredentialRole>\n ownerId?: string\n tenantId?: string\n identities: Array<Identity>\n electronicAddresses: Array<ElectronicAddress>\n physicalAddresses: Array<PhysicalAddress>\n contact: Contact\n partyType: PartyType\n /**\n * TODO: Integrate branding logic here in the future. What we should do is make the issuance branding plugin part of the contact-manager and retrieve any branding there is.\n *\n * Currently, we are only defining the branding type within the SDK without implementing the associated logic. This is because:\n * 1. We are combining two types from the SSI-SDK to create a new type that will be used across multiple places in the wallets (web & mobile).\n * 2. While it makes sense to have this combined type in the SDK, the logic to support database connections for these types is complex. The types belong to different modules, and we don't use them together currently.\n * 3. Implementing the full logic now would require significant changes and cross-module interactions, which we don't have the time to address at present.\n *\n * For now, we are defining the type here and will use it in the mobile wallet has the logic for it. This is a temporary solution until we have the resources to integrate the branding logic fully.\n */\n branding?: IIssuerLocaleBranding\n relationships: Array<PartyRelationship>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedParty = Omit<\n Party,\n | 'id'\n | 'identities'\n | 'electronicAddresses'\n | 'physicalAddresses'\n | 'contact'\n | 'roles'\n | 'partyType'\n | 'relationships'\n | 'createdAt'\n | 'lastUpdatedAt'\n> & {\n identities?: Array<NonPersistedIdentity>\n electronicAddresses?: Array<NonPersistedElectronicAddress>\n physicalAddresses?: Array<NonPersistedPhysicalAddress>\n contact: NonPersistedContact\n partyType: NonPersistedPartyType\n relationships?: Array<NonPersistedPartyRelationship>\n}\nexport type PartialParty = Partial<\n Omit<Party, 'identities' | 'electronicAddresses' | 'physicalAddresses' | 'contact' | 'partyType' | 'relationships'>\n> & {\n identities?: PartialIdentity\n electronicAddresses?: PartialElectronicAddress\n physicalAddresses?: PartialPhysicalAddress\n contact?: PartialContact\n partyType?: PartialPartyType\n relationships?: PartialPartyRelationship\n}\n\nexport type Identity = {\n id: string\n alias: string\n ownerId?: string\n tenantId?: string\n origin: IdentityOrigin\n roles: Array<CredentialRole>\n identifier: CorrelationIdentifier\n connection?: Connection\n metadata?: Array<MetadataItem<MetadataTypes>>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedIdentity = Omit<Identity, 'id' | 'identifier' | 'connection' | 'metadata' | 'origin' | 'createdAt' | 'lastUpdatedAt'> & {\n origin: IdentityOrigin\n identifier: NonPersistedCorrelationIdentifier\n connection?: NonPersistedConnection\n metadata?: Array<NonPersistedMetadataItem<MetadataTypes>>\n}\nexport type PartialIdentity = Partial<Omit<Identity, 'identifier' | 'connection' | 'metadata' | 'origin' | 'roles'>> & {\n identifier?: PartialCorrelationIdentifier\n connection?: PartialConnection\n metadata?: PartialMetadataItem<MetadataTypes> // Usage: FindIdentityArgs = Array<PartialIdentity>\n origin?: IdentityOrigin\n roles?: CredentialRole\n partyId?: string\n}\n\nexport type MetadataItem<T extends MetadataTypes> = {\n id: string\n label: string\n value: T\n}\n\nexport type NonPersistedMetadataItem<T extends MetadataTypes> = Omit<MetadataItem<T>, 'id'>\nexport type PartialMetadataItem<T extends MetadataTypes> = Partial<MetadataItem<T>>\n\nexport type CorrelationIdentifier = {\n id: string\n ownerId?: string\n tenantId?: string\n type: CorrelationIdentifierType\n correlationId: string\n}\nexport type NonPersistedCorrelationIdentifier = Omit<CorrelationIdentifier, 'id'>\nexport type PartialCorrelationIdentifier = Partial<CorrelationIdentifier>\n\nexport type Connection = {\n id: string\n ownerId?: string\n tenantId?: string\n type: ConnectionType\n config: ConnectionConfig\n}\nexport type NonPersistedConnection = Omit<Connection, 'id' | 'config'> & {\n config: NonPersistedConnectionConfig\n}\nexport type PartialConnection = Partial<Omit<Connection, 'config'>> & {\n config: PartialConnectionConfig\n}\n\nexport type OpenIdConfig = {\n id: string\n clientId: string\n clientSecret?: string\n ownerId?: string\n tenantId?: string\n scopes: Array<string>\n issuer: string\n redirectUrl: string\n dangerouslyAllowInsecureHttpRequests: boolean\n clientAuthMethod: 'basic' | 'post' | undefined\n}\nexport type NonPersistedOpenIdConfig = Omit<OpenIdConfig, 'id'>\nexport type PartialOpenIdConfig = Partial<OpenIdConfig>\n\nexport type DidAuthConfig = {\n id: string\n idOpts: ManagedIdentifierOptsOrResult\n stateId: string\n ownerId?: string\n tenantId?: string\n redirectUrl: string\n sessionId: string\n}\nexport type NonPersistedDidAuthConfig = Omit<DidAuthConfig, 'id'>\nexport type PartialDidAuthConfig = Partial<Omit<DidAuthConfig, 'identifier'>> & {\n identifier: Partial<IIdentifier> // TODO, we need to create partials for sub types in IIdentifier\n}\n\nexport type ConnectionConfig = OpenIdConfig | DidAuthConfig\nexport type NonPersistedConnectionConfig = NonPersistedDidAuthConfig | NonPersistedOpenIdConfig\nexport type PartialConnectionConfig = PartialOpenIdConfig | PartialDidAuthConfig\n\nexport type NaturalPerson = {\n id: string\n firstName: string\n lastName: string\n middleName?: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\n\nexport type NonPersistedNaturalPerson = Omit<NaturalPerson, 'id' | 'createdAt' | 'lastUpdatedAt'>\n\nexport type PartialNaturalPerson = Partial<Omit<NaturalPerson, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Organization = {\n id: string\n legalName: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedOrganization = Omit<Organization, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialOrganization = Partial<Omit<Organization, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Contact = NaturalPerson | Organization\nexport type NonPersistedContact = NonPersistedNaturalPerson | NonPersistedOrganization\nexport type PartialContact = PartialNaturalPerson | PartialOrganization\n\nexport type PartyType = {\n id: string\n type: PartyTypeType\n origin: PartyOrigin\n name: string\n tenantId: string\n description?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyType = Omit<PartyType, 'id' | 'createdAt' | 'lastUpdatedAt'> & {\n id?: string\n}\nexport type PartialPartyType = Partial<PartyType>\n\nexport type PartyRelationship = {\n id: string\n leftId: string\n rightId: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyRelationship = Omit<PartyRelationship, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPartyRelationship = Partial<PartyRelationship>\n\nexport type ElectronicAddress = {\n id: string\n type: ElectronicAddressType\n electronicAddress: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedElectronicAddress = Omit<ElectronicAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialElectronicAddress = Partial<ElectronicAddress> & {\n partyId?: string\n}\n\nexport type PhysicalAddress = {\n id: string\n type: PhysicalAddressType\n streetName: string\n streetNumber: string\n postalCode: string\n cityName: string\n provinceName: string\n countryCode: string\n buildingName?: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPhysicalAddress = Omit<PhysicalAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPhysicalAddress = Partial<PhysicalAddress> & {\n partyId?: string\n}\n\nexport type ElectronicAddressType = 'email' | 'phone'\n\nexport type PhysicalAddressType = 'home' | 'visit' | 'postal'\n\nexport enum ConnectionType {\n OPENID_CONNECT = 'OIDC',\n SIOPv2 = 'SIOPv2',\n SIOPv2_OpenID4VP = 'SIOPv2+OpenID4VP',\n}\n\nexport enum CorrelationIdentifierType {\n DID = 'did',\n URL = 'url',\n}\n\nexport enum PartyTypeType {\n NATURAL_PERSON = 'naturalPerson',\n ORGANIZATION = 'organization',\n}\n\nexport enum PartyOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum IdentityOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n","export enum DocumentType {\n VC = 'VC',\n VP = 'VP',\n P = 'P',\n C = 'C',\n}\n\nexport enum RegulationType {\n PID = 'PID',\n QEAA = 'QEAA',\n EAA = 'EAA',\n NON_REGULATED = 'NON_REGULATED',\n}\n\nexport enum CredentialDocumentFormat {\n JSON_LD = 'JSON_LD',\n JWT = 'JWT',\n SD_JWT = 'SD_JWT',\n MSO_MDOC = 'MSO_MDOC',\n}\n\nexport namespace CredentialDocumentFormat {\n export function fromSpecValue(credentialFormat: string) {\n const format = credentialFormat.toLowerCase()\n if (format.includes('sd')) {\n return CredentialDocumentFormat.SD_JWT\n } else if (format.includes('ldp')) {\n return CredentialDocumentFormat.JSON_LD\n } else if (format.includes('mso') || credentialFormat.includes('mdoc')) {\n return CredentialDocumentFormat.MSO_MDOC\n } else if (format.includes('jwt_')) {\n return CredentialDocumentFormat.JWT\n } else {\n throw Error(`Could not map format ${format} to known format`)\n }\n }\n\n export function toSpecValue(documentFormat: CredentialDocumentFormat, documentType: DocumentType) {\n switch (documentFormat) {\n case CredentialDocumentFormat.SD_JWT:\n return 'dc+sd-jwt'\n case CredentialDocumentFormat.MSO_MDOC:\n return 'mso_mdoc'\n case CredentialDocumentFormat.JSON_LD:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'ldp_vc' : 'ldp_vp'\n case CredentialDocumentFormat.JWT:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'jwt_vc_json' : 'jwt_vp_json'\n }\n }\n}\n\nexport enum CredentialCorrelationType {\n DID = 'DID',\n X509_SAN = 'X509_SAN',\n KID = 'KID',\n URL = 'URL',\n}\n\nexport enum CredentialStateType {\n REVOKED = 'REVOKED',\n VERIFIED = 'VERIFIED',\n EXPIRED = 'EXPIRED',\n}\n","import { CredentialMapper, ObjectUtils } from '@sphereon/ssi-types'\n\nfunction isHex(input: string) {\n return input.match(/^([0-9A-Fa-f])+$/g) !== null\n}\n\nexport function ensureRawDocument(input: string | object): string {\n if (typeof input === 'string') {\n if (isHex(input) || ObjectUtils.isBase64(input)) {\n // mso_mdoc\n return input\n } else if (CredentialMapper.isJwtEncoded(input) || CredentialMapper.isSdJwtEncoded(input)) {\n return input\n }\n throw Error('Unknown input to be mapped as rawDocument')\n }\n\n try {\n return JSON.stringify(input)\n } catch (e) {\n throw new Error(`Can't stringify to a raw credential: ${input}`)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;ACuCO,IAAeA,uBAAf,MAAeA;EAAtB,OAAsBA;;;AA+BtB;;;AC3DO,IAAeC,iCAAf,MAAeA;EAAtB,OAAsBA;;;AAYtB;;;ACAO,IAAeC,gCAAf,MAAeA;EAAtB,OAAsBA;;;AAiBtB;;;ACrCO,IAAeC,2BAAf,MAAeA;EAAtB,OAAsBA;;;AAKtB;;;ACQO,IAAeC,6BAAf,MAAeA;EANtB,OAMsBA;;;AAgDtB;;;ACtDO,IAAeC,kBAAf,MAAeA;EAAtB,OAAsBA;;;AAStB;;;AC2PO,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;SAAAA;;AAML,IAAKC,4BAAAA,0BAAAA,4BAAAA;;;SAAAA;;AAKL,IAAKC,gBAAAA,0BAAAA,gBAAAA;;;SAAAA;;AAKL,IAAKC,cAAAA,0BAAAA,cAAAA;;;SAAAA;;AAKL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;SAAAA;;;;ACnSL,IAAKC,eAAAA,0BAAAA,eAAAA;;;;;SAAAA;;AAOL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;;SAAAA;;AAOL,IAAKC,2BAAAA,0BAAAA,2BAAAA;;;;;SAAAA;;UAOKA,2BAAAA;AACR,WAASC,cAAcC,kBAAwB;AACpD,UAAMC,SAASD,iBAAiBE,YAAW;AAC3C,QAAID,OAAOE,SAAS,IAAA,GAAO;AACzB,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,GAAQ;AACjC,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,KAAUH,iBAAiBG,SAAS,MAAA,GAAS;AACtE,aAAA;IACF,WAAWF,OAAOE,SAAS,MAAA,GAAS;AAClC,aAAA;IACF,OAAO;AACL,YAAMC,MAAM,wBAAwBH,MAAAA,kBAAwB;IAC9D;EACF;AAbgBF;4BAAAA,gBAAAA;AAeT,WAASM,YAAYC,gBAA0CC,cAA0B;AAC9F,YAAQD,gBAAAA;MACN,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAOC,iBAAAA,OAAmCA,iBAAAA,OAAmC,WAAW;MAC1F,KAAA;AACE,eAAOA,iBAAAA,OAAmCA,iBAAAA,OAAmC,gBAAgB;IACjG;EACF;AAXgBF;4BAAAA,cAAAA;AAYlB,GA5BiBP,6BAAAA,2BAAAA,CAAAA,EAAAA;AA8BV,IAAKU,4BAAAA,0BAAAA,4BAAAA;;;;;SAAAA;;AAOL,IAAKC,sBAAAA,0BAAAA,sBAAAA;;;;SAAAA;;;;AC1DZ,uBAA8C;AAE9C,SAASC,MAAMC,OAAa;AAC1B,SAAOA,MAAMC,MAAM,mBAAA,MAAyB;AAC9C;AAFSF;AAIF,SAASG,kBAAkBF,OAAsB;AACtD,MAAI,OAAOA,UAAU,UAAU;AAC7B,QAAID,MAAMC,KAAAA,KAAUG,6BAAYC,SAASJ,KAAAA,GAAQ;AAE/C,aAAOA;IACT,WAAWK,kCAAiBC,aAAaN,KAAAA,KAAUK,kCAAiBE,eAAeP,KAAAA,GAAQ;AACzF,aAAOA;IACT;AACA,UAAMQ,MAAM,2CAAA;EACd;AAEA,MAAI;AACF,WAAOC,KAAKC,UAAUV,KAAAA;EACxB,SAASW,GAAG;AACV,UAAM,IAAIH,MAAM,wCAAwCR,KAAAA,EAAO;EACjE;AACF;AAhBgBE;","names":["AbstractContactStore","AbstractDigitalCredentialStore","AbstractIssuanceBrandingStore","AbstractEventLoggerStore","IAbstractMachineStateStore","AbstractPDStore","ConnectionType","CorrelationIdentifierType","PartyTypeType","PartyOrigin","IdentityOrigin","DocumentType","RegulationType","CredentialDocumentFormat","fromSpecValue","credentialFormat","format","toLowerCase","includes","Error","toSpecValue","documentFormat","documentType","CredentialCorrelationType","CredentialStateType","isHex","input","match","ensureRawDocument","ObjectUtils","isBase64","CredentialMapper","isJwtEncoded","isSdJwtEncoded","Error","JSON","stringify","e"]}
package/dist/index.d.cts CHANGED
@@ -12,6 +12,7 @@ interface ILocaleBranding {
12
12
  description?: string;
13
13
  background?: IBackgroundAttributes;
14
14
  text?: ITextAttributes;
15
+ state?: string;
15
16
  createdAt: Date;
16
17
  lastUpdatedAt: Date;
17
18
  }
@@ -61,15 +62,17 @@ interface ICredentialClaim {
61
62
  id: string;
62
63
  key: string;
63
64
  name: string;
65
+ order?: number;
64
66
  }
65
67
  interface IBasicCredentialClaim extends Omit<ICredentialClaim, 'id'> {
66
68
  }
67
69
  interface IPartialCredentialClaim extends Partial<ICredentialClaim> {
68
70
  }
69
71
  interface ICredentialLocaleBranding extends ILocaleBranding {
72
+ state: string;
70
73
  claims?: Array<ICredentialClaim>;
71
74
  }
72
- interface IBasicCredentialLocaleBranding extends Omit<ICredentialLocaleBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'logo' | 'background' | 'text' | 'claims'> {
75
+ interface IBasicCredentialLocaleBranding extends Omit<ICredentialLocaleBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'logo' | 'background' | 'text' | 'claims' | 'state'> {
73
76
  logo?: IBasicImageAttributes;
74
77
  background?: IBasicBackgroundAttributes;
75
78
  text?: IBasicTextAttributes;
@@ -86,10 +89,11 @@ interface ICredentialBranding {
86
89
  issuerCorrelationId: string;
87
90
  vcHash: string;
88
91
  localeBranding: Array<ICredentialLocaleBranding>;
92
+ state: string;
89
93
  createdAt: Date;
90
94
  lastUpdatedAt: Date;
91
95
  }
92
- interface IBasicCredentialBranding extends Omit<ICredentialBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'localeBranding'> {
96
+ interface IBasicCredentialBranding extends Omit<ICredentialBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'localeBranding' | 'state'> {
93
97
  localeBranding: Array<IBasicCredentialLocaleBranding>;
94
98
  }
95
99
  interface IPartialCredentialBranding extends Partial<Omit<ICredentialBranding, 'localeBranding'>> {
@@ -147,9 +151,14 @@ interface IAddCredentialBrandingArgs {
147
151
  }
148
152
  interface IGetCredentialBrandingArgs {
149
153
  filter?: FindCredentialBrandingArgs;
154
+ /**
155
+ * Map of credential branding id to previously received state. When provided, only branding records whose state differs
156
+ * or are not present in this map will be returned.
157
+ */
158
+ knownStates?: Record<string, string>;
150
159
  }
151
160
  interface IUpdateCredentialBrandingArgs {
152
- credentialBranding: Omit<ICredentialBranding, 'localeBranding' | 'createdAt' | 'lastUpdatedAt'>;
161
+ credentialBranding: Omit<ICredentialBranding, 'localeBranding' | 'createdAt' | 'lastUpdatedAt' | 'state'>;
153
162
  }
154
163
  interface IRemoveCredentialBrandingArgs {
155
164
  filter: FindCredentialBrandingArgs;
@@ -159,7 +168,7 @@ interface IAddCredentialLocaleBrandingArgs {
159
168
  localeBranding: Array<IBasicCredentialLocaleBranding>;
160
169
  }
161
170
  interface IUpdateCredentialLocaleBrandingArgs {
162
- localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt'>;
171
+ localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt' | 'state'>;
163
172
  }
164
173
  interface IRemoveCredentialLocaleBrandingArgs {
165
174
  filter: FindCredentialLocaleBrandingArgs;
@@ -185,7 +194,7 @@ interface IAddIssuerLocaleBrandingArgs {
185
194
  localeBranding: Array<IBasicIssuerLocaleBranding>;
186
195
  }
187
196
  interface IUpdateIssuerLocaleBrandingArgs {
188
- localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt'>;
197
+ localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt' | 'state'>;
189
198
  }
190
199
  interface IRemoveIssuerLocaleBrandingArgs {
191
200
  filter: FindIssuerLocaleBrandingArgs;
@@ -303,7 +312,7 @@ type PartialConnection = Partial<Omit<Connection, 'config'>> & {
303
312
  type OpenIdConfig = {
304
313
  id: string;
305
314
  clientId: string;
306
- clientSecret: string;
315
+ clientSecret?: string;
307
316
  ownerId?: string;
308
317
  tenantId?: string;
309
318
  scopes: Array<string>;
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ interface ILocaleBranding {
12
12
  description?: string;
13
13
  background?: IBackgroundAttributes;
14
14
  text?: ITextAttributes;
15
+ state?: string;
15
16
  createdAt: Date;
16
17
  lastUpdatedAt: Date;
17
18
  }
@@ -61,15 +62,17 @@ interface ICredentialClaim {
61
62
  id: string;
62
63
  key: string;
63
64
  name: string;
65
+ order?: number;
64
66
  }
65
67
  interface IBasicCredentialClaim extends Omit<ICredentialClaim, 'id'> {
66
68
  }
67
69
  interface IPartialCredentialClaim extends Partial<ICredentialClaim> {
68
70
  }
69
71
  interface ICredentialLocaleBranding extends ILocaleBranding {
72
+ state: string;
70
73
  claims?: Array<ICredentialClaim>;
71
74
  }
72
- interface IBasicCredentialLocaleBranding extends Omit<ICredentialLocaleBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'logo' | 'background' | 'text' | 'claims'> {
75
+ interface IBasicCredentialLocaleBranding extends Omit<ICredentialLocaleBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'logo' | 'background' | 'text' | 'claims' | 'state'> {
73
76
  logo?: IBasicImageAttributes;
74
77
  background?: IBasicBackgroundAttributes;
75
78
  text?: IBasicTextAttributes;
@@ -86,10 +89,11 @@ interface ICredentialBranding {
86
89
  issuerCorrelationId: string;
87
90
  vcHash: string;
88
91
  localeBranding: Array<ICredentialLocaleBranding>;
92
+ state: string;
89
93
  createdAt: Date;
90
94
  lastUpdatedAt: Date;
91
95
  }
92
- interface IBasicCredentialBranding extends Omit<ICredentialBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'localeBranding'> {
96
+ interface IBasicCredentialBranding extends Omit<ICredentialBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'localeBranding' | 'state'> {
93
97
  localeBranding: Array<IBasicCredentialLocaleBranding>;
94
98
  }
95
99
  interface IPartialCredentialBranding extends Partial<Omit<ICredentialBranding, 'localeBranding'>> {
@@ -147,9 +151,14 @@ interface IAddCredentialBrandingArgs {
147
151
  }
148
152
  interface IGetCredentialBrandingArgs {
149
153
  filter?: FindCredentialBrandingArgs;
154
+ /**
155
+ * Map of credential branding id to previously received state. When provided, only branding records whose state differs
156
+ * or are not present in this map will be returned.
157
+ */
158
+ knownStates?: Record<string, string>;
150
159
  }
151
160
  interface IUpdateCredentialBrandingArgs {
152
- credentialBranding: Omit<ICredentialBranding, 'localeBranding' | 'createdAt' | 'lastUpdatedAt'>;
161
+ credentialBranding: Omit<ICredentialBranding, 'localeBranding' | 'createdAt' | 'lastUpdatedAt' | 'state'>;
153
162
  }
154
163
  interface IRemoveCredentialBrandingArgs {
155
164
  filter: FindCredentialBrandingArgs;
@@ -159,7 +168,7 @@ interface IAddCredentialLocaleBrandingArgs {
159
168
  localeBranding: Array<IBasicCredentialLocaleBranding>;
160
169
  }
161
170
  interface IUpdateCredentialLocaleBrandingArgs {
162
- localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt'>;
171
+ localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt' | 'state'>;
163
172
  }
164
173
  interface IRemoveCredentialLocaleBrandingArgs {
165
174
  filter: FindCredentialLocaleBrandingArgs;
@@ -185,7 +194,7 @@ interface IAddIssuerLocaleBrandingArgs {
185
194
  localeBranding: Array<IBasicIssuerLocaleBranding>;
186
195
  }
187
196
  interface IUpdateIssuerLocaleBrandingArgs {
188
- localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt'>;
197
+ localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt' | 'state'>;
189
198
  }
190
199
  interface IRemoveIssuerLocaleBrandingArgs {
191
200
  filter: FindIssuerLocaleBrandingArgs;
@@ -303,7 +312,7 @@ type PartialConnection = Partial<Omit<Connection, 'config'>> & {
303
312
  type OpenIdConfig = {
304
313
  id: string;
305
314
  clientId: string;
306
- clientSecret: string;
315
+ clientSecret?: string;
307
316
  ownerId?: string;
308
317
  tenantId?: string;
309
318
  scopes: Array<string>;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contact/AbstractContactStore.ts","../src/digitalCredential/AbstractDigitalCredentialStore.ts","../src/issuanceBranding/AbstractIssuanceBrandingStore.ts","../src/eventLogger/AbstractEventLoggerStore.ts","../src/machineState/IAbstractMachineStateStore.ts","../src/presentationDefinition/AbstractPDStore.ts","../src/types/contact/contact.ts","../src/types/digitalCredential/enums.ts","../src/utils/MappingUtils.ts"],"sourcesContent":["import {\n AddElectronicAddressArgs,\n AddIdentityArgs,\n AddPartyArgs,\n AddPartyTypeArgs,\n AddPhysicalAddressArgs,\n AddRelationshipArgs,\n ElectronicAddress,\n GetElectronicAddressArgs,\n GetElectronicAddressesArgs,\n GetIdentitiesArgs,\n GetIdentityArgs,\n GetPartiesArgs,\n GetPartyArgs,\n GetPartyTypeArgs,\n GetPartyTypesArgs,\n GetPhysicalAddressArgs,\n GetPhysicalAddressesArgs,\n GetRelationshipArgs,\n GetRelationshipsArgs,\n Identity,\n Party,\n PartyRelationship,\n PartyType,\n PhysicalAddress,\n RemoveElectronicAddressArgs,\n RemoveIdentityArgs,\n RemovePartyArgs,\n RemovePartyTypeArgs,\n RemovePhysicalAddressArgs,\n RemoveRelationshipArgs,\n UpdateElectronicAddressArgs,\n UpdateIdentityArgs,\n UpdatePartyArgs,\n UpdatePartyTypeArgs,\n UpdatePhysicalAddressArgs,\n UpdateRelationshipArgs,\n} from '../types'\n\nexport abstract class AbstractContactStore {\n abstract getParty(args: GetPartyArgs): Promise<Party>\n abstract getParties(args?: GetPartiesArgs): Promise<Array<Party>>\n abstract addParty(args: AddPartyArgs): Promise<Party>\n abstract updateParty(args: UpdatePartyArgs): Promise<Party>\n abstract removeParty(args: RemovePartyArgs): Promise<void>\n abstract getIdentity(args: GetIdentityArgs): Promise<Identity>\n abstract getIdentities(args?: GetIdentitiesArgs): Promise<Array<Identity>>\n abstract addIdentity(args: AddIdentityArgs): Promise<Identity>\n abstract updateIdentity(args: UpdateIdentityArgs): Promise<Identity>\n abstract removeIdentity(args: RemoveIdentityArgs): Promise<void>\n abstract getRelationship(args: GetRelationshipArgs): Promise<PartyRelationship>\n abstract getRelationships(args?: GetRelationshipsArgs): Promise<Array<PartyRelationship>>\n abstract addRelationship(args: AddRelationshipArgs): Promise<PartyRelationship>\n abstract updateRelationship(args: UpdateRelationshipArgs): Promise<PartyRelationship>\n abstract removeRelationship(args: RemoveRelationshipArgs): Promise<void>\n abstract getPartyType(args: GetPartyTypeArgs): Promise<PartyType>\n abstract getPartyTypes(args?: GetPartyTypesArgs): Promise<Array<PartyType>>\n abstract addPartyType(args: AddPartyTypeArgs): Promise<PartyType>\n abstract updatePartyType(args: UpdatePartyTypeArgs): Promise<PartyType>\n abstract removePartyType(args: RemovePartyTypeArgs): Promise<void>\n abstract getElectronicAddress(args: GetElectronicAddressArgs): Promise<ElectronicAddress>\n abstract getElectronicAddresses(args?: GetElectronicAddressesArgs): Promise<Array<ElectronicAddress>>\n abstract addElectronicAddress(args: AddElectronicAddressArgs): Promise<ElectronicAddress>\n abstract updateElectronicAddress(args: UpdateElectronicAddressArgs): Promise<ElectronicAddress>\n abstract removeElectronicAddress(args: RemoveElectronicAddressArgs): Promise<void>\n abstract getPhysicalAddress(args: GetPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract getPhysicalAddresses(args?: GetPhysicalAddressesArgs): Promise<Array<PhysicalAddress>>\n abstract addPhysicalAddress(args: AddPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract updatePhysicalAddress(args: UpdatePhysicalAddressArgs): Promise<PhysicalAddress>\n abstract removePhysicalAddress(args: RemovePhysicalAddressArgs): Promise<void>\n}\n","import {\n AddCredentialArgs,\n DigitalCredential,\n GetCredentialArgs,\n GetCredentialsArgs,\n GetCredentialsResponse,\n RemoveCredentialArgs,\n UpdateCredentialArgs,\n UpdateCredentialStateArgs,\n} from '../types'\n\nexport abstract class AbstractDigitalCredentialStore {\n abstract getCredential(args: GetCredentialArgs): Promise<DigitalCredential>\n\n abstract getCredentials(args?: GetCredentialsArgs): Promise<GetCredentialsResponse>\n\n abstract addCredential(args: AddCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredential(args: UpdateCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredentialState(args: UpdateCredentialStateArgs): Promise<DigitalCredential>\n\n abstract removeCredential(args: RemoveCredentialArgs): Promise<boolean>\n}\n","import type {\n IAddCredentialBrandingArgs,\n IAddCredentialLocaleBrandingArgs,\n IAddIssuerBrandingArgs,\n IAddIssuerLocaleBrandingArgs,\n ICredentialBranding,\n ICredentialLocaleBranding,\n IGetCredentialBrandingArgs,\n IGetCredentialLocaleBrandingArgs,\n IGetIssuerBrandingArgs,\n IGetIssuerLocaleBrandingArgs,\n IIssuerBranding,\n IIssuerLocaleBranding,\n IRemoveCredentialBrandingArgs,\n IRemoveCredentialLocaleBrandingArgs,\n IRemoveIssuerBrandingArgs,\n IRemoveIssuerLocaleBrandingArgs,\n IUpdateCredentialBrandingArgs,\n IUpdateCredentialLocaleBrandingArgs,\n IUpdateIssuerBrandingArgs,\n IUpdateIssuerLocaleBrandingArgs,\n} from '../types'\n\nexport abstract class AbstractIssuanceBrandingStore {\n public abstract addCredentialBranding(args: IAddCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialBranding(args?: IGetCredentialBrandingArgs): Promise<Array<ICredentialBranding>>\n public abstract updateCredentialBranding(args: IUpdateCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract removeCredentialBranding(args: IRemoveCredentialBrandingArgs): Promise<void>\n public abstract addCredentialLocaleBranding(args: IAddCredentialLocaleBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialLocaleBranding(args?: IGetCredentialLocaleBrandingArgs): Promise<Array<ICredentialLocaleBranding>>\n public abstract updateCredentialLocaleBranding(args: IUpdateCredentialLocaleBrandingArgs): Promise<ICredentialLocaleBranding>\n public abstract removeCredentialLocaleBranding(args: IRemoveCredentialLocaleBrandingArgs): Promise<void>\n public abstract addIssuerBranding(args: IAddIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerBranding(args?: IGetIssuerBrandingArgs): Promise<Array<IIssuerBranding>>\n public abstract updateIssuerBranding(args: IUpdateIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract removeIssuerBranding(args: IRemoveIssuerBrandingArgs): Promise<void>\n public abstract addIssuerLocaleBranding(args: IAddIssuerLocaleBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerLocaleBranding(args?: IGetIssuerLocaleBrandingArgs): Promise<Array<IIssuerLocaleBranding>>\n public abstract updateIssuerLocaleBranding(args: IUpdateIssuerLocaleBrandingArgs): Promise<IIssuerLocaleBranding>\n public abstract removeIssuerLocaleBranding(args: IRemoveIssuerLocaleBrandingArgs): Promise<void>\n}\n","import type { ActivityLoggingEvent, AuditLoggingEvent } from '@sphereon/ssi-sdk.core'\nimport type { GetActivityEventsArgs, GetAuditEventsArgs, StoreActivityEventArgs, StoreAuditEventArgs } from '../types'\n\nexport abstract class AbstractEventLoggerStore {\n abstract getAuditEvents(args: GetAuditEventsArgs): Promise<Array<AuditLoggingEvent>>\n abstract getActivityEvents(args: GetActivityEventsArgs): Promise<Array<ActivityLoggingEvent>>\n abstract storeAuditEvent(args: StoreAuditEventArgs): Promise<AuditLoggingEvent>\n abstract storeActivityEvent(args: StoreActivityEventArgs): Promise<ActivityLoggingEvent>\n}\n","import type {\n StoreMachineStateDeleteExpiredArgs,\n StoreMachineStateDeleteArgs,\n StoreMachineStatesFindActiveArgs,\n StoreFindMachineStatesArgs,\n StoreMachineStatePersistArgs,\n StoreMachineStateInfo,\n StoreMachineStateGetArgs,\n} from '../types'\n\n/**\n * Represents an abstract class for storing machine states.\n * This class provides methods for persisting, retrieving, and deleting machine states.\n *\n * @interface\n */\nexport abstract class IAbstractMachineStateStore {\n /**\n * Persists the machine state.\n *\n * @param {StoreMachineStatePersistArgs} state - The object containing the machine state to persist.\n * @return {Promise<StoreMachineStateInfo>} - A Promise that resolves to the information about the persisted machine state.\n */\n abstract persistMachineState(state: StoreMachineStatePersistArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds active machine states based on the given arguments.\n *\n * @param {StoreMachineStatesFindActiveArgs} args - The arguments for finding active machine states.\n * @return {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves with an array of active machine states.\n */\n abstract findActiveMachineStates(args: StoreMachineStatesFindActiveArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Retrieves the state of a particular machine.\n *\n * @param {StoreMachineStateGetArgs} args - The arguments for retrieving the machine state.\n * @returns {Promise<StoreMachineStateInfo>} - A promise that resolves to the machine state information.\n */\n abstract getMachineState(args: StoreMachineStateGetArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds the machine states based on the given arguments.\n *\n * @param {StoreFindMachineStatesArgs} [args] - The arguments to filter the machine states.\n * @returns {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves to an array of machine state information.\n */\n abstract findMachineStates(args?: StoreFindMachineStatesArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Deletes a machine state.\n *\n * @param {StoreMachineStateDeleteArgs} args - The arguments for deleting the machine state.\n * @return {Promise<boolean>} - A promise that resolves to a boolean indicating if the machine state was successfully deleted or not.\n */\n abstract deleteMachineState(args: StoreMachineStateDeleteArgs): Promise<boolean>\n\n /**\n * Deletes expired machine states from the database.\n *\n * @param {StoreMachineStateDeleteExpiredArgs} args - The arguments for deleting expired machine states.\n * @return {Promise<number>} - A promise that resolves to the number of deleted machine states.\n */\n abstract deleteExpiredMachineStates(args: StoreMachineStateDeleteExpiredArgs): Promise<number>\n}\n","import type {\n GetDefinitionArgs,\n GetDefinitionsArgs,\n DeleteDefinitionArgs,\n DcqlQueryItem,\n AddDefinitionArgs,\n UpdateDefinitionArgs,\n DeleteDefinitionsArgs,\n} from '../types'\n\nexport abstract class AbstractPDStore {\n abstract hasDefinition(args: GetDefinitionArgs): Promise<boolean>\n abstract hasDefinitions(args: GetDefinitionsArgs): Promise<boolean>\n abstract getDefinition(args: GetDefinitionArgs): Promise<DcqlQueryItem>\n abstract getDefinitions(args: GetDefinitionsArgs): Promise<Array<DcqlQueryItem>>\n abstract addDefinition(args: AddDefinitionArgs): Promise<DcqlQueryItem>\n abstract updateDefinition(args: UpdateDefinitionArgs): Promise<DcqlQueryItem>\n abstract deleteDefinition(args: DeleteDefinitionArgs): Promise<void>\n abstract deleteDefinitions(args: DeleteDefinitionsArgs): Promise<number>\n}\n","import { ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution'\nimport { IIdentifier } from '@veramo/core'\nimport { IIssuerLocaleBranding } from '../issuanceBranding/issuanceBranding'\nimport { CredentialRole } from '@sphereon/ssi-types'\n\nexport type MetadataTypes = string | number | Date | boolean | undefined\n\nexport interface IMetadataEntity {\n // TODO move to types\n label: string\n stringValue?: string\n numberValue?: number\n dateValue?: Date\n boolValue?: boolean\n}\n\nexport type Party = {\n id: string\n uri?: string\n roles: Array<CredentialRole>\n ownerId?: string\n tenantId?: string\n identities: Array<Identity>\n electronicAddresses: Array<ElectronicAddress>\n physicalAddresses: Array<PhysicalAddress>\n contact: Contact\n partyType: PartyType\n /**\n * TODO: Integrate branding logic here in the future. What we should do is make the issuance branding plugin part of the contact-manager and retrieve any branding there is.\n *\n * Currently, we are only defining the branding type within the SDK without implementing the associated logic. This is because:\n * 1. We are combining two types from the SSI-SDK to create a new type that will be used across multiple places in the wallets (web & mobile).\n * 2. While it makes sense to have this combined type in the SDK, the logic to support database connections for these types is complex. The types belong to different modules, and we don't use them together currently.\n * 3. Implementing the full logic now would require significant changes and cross-module interactions, which we don't have the time to address at present.\n *\n * For now, we are defining the type here and will use it in the mobile wallet has the logic for it. This is a temporary solution until we have the resources to integrate the branding logic fully.\n */\n branding?: IIssuerLocaleBranding\n relationships: Array<PartyRelationship>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedParty = Omit<\n Party,\n | 'id'\n | 'identities'\n | 'electronicAddresses'\n | 'physicalAddresses'\n | 'contact'\n | 'roles'\n | 'partyType'\n | 'relationships'\n | 'createdAt'\n | 'lastUpdatedAt'\n> & {\n identities?: Array<NonPersistedIdentity>\n electronicAddresses?: Array<NonPersistedElectronicAddress>\n physicalAddresses?: Array<NonPersistedPhysicalAddress>\n contact: NonPersistedContact\n partyType: NonPersistedPartyType\n relationships?: Array<NonPersistedPartyRelationship>\n}\nexport type PartialParty = Partial<\n Omit<Party, 'identities' | 'electronicAddresses' | 'physicalAddresses' | 'contact' | 'partyType' | 'relationships'>\n> & {\n identities?: PartialIdentity\n electronicAddresses?: PartialElectronicAddress\n physicalAddresses?: PartialPhysicalAddress\n contact?: PartialContact\n partyType?: PartialPartyType\n relationships?: PartialPartyRelationship\n}\n\nexport type Identity = {\n id: string\n alias: string\n ownerId?: string\n tenantId?: string\n origin: IdentityOrigin\n roles: Array<CredentialRole>\n identifier: CorrelationIdentifier\n connection?: Connection\n metadata?: Array<MetadataItem<MetadataTypes>>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedIdentity = Omit<Identity, 'id' | 'identifier' | 'connection' | 'metadata' | 'origin' | 'createdAt' | 'lastUpdatedAt'> & {\n origin: IdentityOrigin\n identifier: NonPersistedCorrelationIdentifier\n connection?: NonPersistedConnection\n metadata?: Array<NonPersistedMetadataItem<MetadataTypes>>\n}\nexport type PartialIdentity = Partial<Omit<Identity, 'identifier' | 'connection' | 'metadata' | 'origin' | 'roles'>> & {\n identifier?: PartialCorrelationIdentifier\n connection?: PartialConnection\n metadata?: PartialMetadataItem<MetadataTypes> // Usage: FindIdentityArgs = Array<PartialIdentity>\n origin?: IdentityOrigin\n roles?: CredentialRole\n partyId?: string\n}\n\nexport type MetadataItem<T extends MetadataTypes> = {\n id: string\n label: string\n value: T\n}\n\nexport type NonPersistedMetadataItem<T extends MetadataTypes> = Omit<MetadataItem<T>, 'id'>\nexport type PartialMetadataItem<T extends MetadataTypes> = Partial<MetadataItem<T>>\n\nexport type CorrelationIdentifier = {\n id: string\n ownerId?: string\n tenantId?: string\n type: CorrelationIdentifierType\n correlationId: string\n}\nexport type NonPersistedCorrelationIdentifier = Omit<CorrelationIdentifier, 'id'>\nexport type PartialCorrelationIdentifier = Partial<CorrelationIdentifier>\n\nexport type Connection = {\n id: string\n ownerId?: string\n tenantId?: string\n type: ConnectionType\n config: ConnectionConfig\n}\nexport type NonPersistedConnection = Omit<Connection, 'id' | 'config'> & {\n config: NonPersistedConnectionConfig\n}\nexport type PartialConnection = Partial<Omit<Connection, 'config'>> & {\n config: PartialConnectionConfig\n}\n\nexport type OpenIdConfig = {\n id: string\n clientId: string\n clientSecret: string\n ownerId?: string\n tenantId?: string\n scopes: Array<string>\n issuer: string\n redirectUrl: string\n dangerouslyAllowInsecureHttpRequests: boolean\n clientAuthMethod: 'basic' | 'post' | undefined\n}\nexport type NonPersistedOpenIdConfig = Omit<OpenIdConfig, 'id'>\nexport type PartialOpenIdConfig = Partial<OpenIdConfig>\n\nexport type DidAuthConfig = {\n id: string\n idOpts: ManagedIdentifierOptsOrResult\n stateId: string\n ownerId?: string\n tenantId?: string\n redirectUrl: string\n sessionId: string\n}\nexport type NonPersistedDidAuthConfig = Omit<DidAuthConfig, 'id'>\nexport type PartialDidAuthConfig = Partial<Omit<DidAuthConfig, 'identifier'>> & {\n identifier: Partial<IIdentifier> // TODO, we need to create partials for sub types in IIdentifier\n}\n\nexport type ConnectionConfig = OpenIdConfig | DidAuthConfig\nexport type NonPersistedConnectionConfig = NonPersistedDidAuthConfig | NonPersistedOpenIdConfig\nexport type PartialConnectionConfig = PartialOpenIdConfig | PartialDidAuthConfig\n\nexport type NaturalPerson = {\n id: string\n firstName: string\n lastName: string\n middleName?: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\n\nexport type NonPersistedNaturalPerson = Omit<NaturalPerson, 'id' | 'createdAt' | 'lastUpdatedAt'>\n\nexport type PartialNaturalPerson = Partial<Omit<NaturalPerson, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Organization = {\n id: string\n legalName: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedOrganization = Omit<Organization, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialOrganization = Partial<Omit<Organization, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Contact = NaturalPerson | Organization\nexport type NonPersistedContact = NonPersistedNaturalPerson | NonPersistedOrganization\nexport type PartialContact = PartialNaturalPerson | PartialOrganization\n\nexport type PartyType = {\n id: string\n type: PartyTypeType\n origin: PartyOrigin\n name: string\n tenantId: string\n description?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyType = Omit<PartyType, 'id' | 'createdAt' | 'lastUpdatedAt'> & {\n id?: string\n}\nexport type PartialPartyType = Partial<PartyType>\n\nexport type PartyRelationship = {\n id: string\n leftId: string\n rightId: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyRelationship = Omit<PartyRelationship, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPartyRelationship = Partial<PartyRelationship>\n\nexport type ElectronicAddress = {\n id: string\n type: ElectronicAddressType\n electronicAddress: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedElectronicAddress = Omit<ElectronicAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialElectronicAddress = Partial<ElectronicAddress> & {\n partyId?: string\n}\n\nexport type PhysicalAddress = {\n id: string\n type: PhysicalAddressType\n streetName: string\n streetNumber: string\n postalCode: string\n cityName: string\n provinceName: string\n countryCode: string\n buildingName?: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPhysicalAddress = Omit<PhysicalAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPhysicalAddress = Partial<PhysicalAddress> & {\n partyId?: string\n}\n\nexport type ElectronicAddressType = 'email' | 'phone'\n\nexport type PhysicalAddressType = 'home' | 'visit' | 'postal'\n\nexport enum ConnectionType {\n OPENID_CONNECT = 'OIDC',\n SIOPv2 = 'SIOPv2',\n SIOPv2_OpenID4VP = 'SIOPv2+OpenID4VP',\n}\n\nexport enum CorrelationIdentifierType {\n DID = 'did',\n URL = 'url',\n}\n\nexport enum PartyTypeType {\n NATURAL_PERSON = 'naturalPerson',\n ORGANIZATION = 'organization',\n}\n\nexport enum PartyOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum IdentityOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n","export enum DocumentType {\n VC = 'VC',\n VP = 'VP',\n P = 'P',\n C = 'C',\n}\n\nexport enum RegulationType {\n PID = 'PID',\n QEAA = 'QEAA',\n EAA = 'EAA',\n NON_REGULATED = 'NON_REGULATED',\n}\n\nexport enum CredentialDocumentFormat {\n JSON_LD = 'JSON_LD',\n JWT = 'JWT',\n SD_JWT = 'SD_JWT',\n MSO_MDOC = 'MSO_MDOC',\n}\n\nexport namespace CredentialDocumentFormat {\n export function fromSpecValue(credentialFormat: string) {\n const format = credentialFormat.toLowerCase()\n if (format.includes('sd')) {\n return CredentialDocumentFormat.SD_JWT\n } else if (format.includes('ldp')) {\n return CredentialDocumentFormat.JSON_LD\n } else if (format.includes('mso') || credentialFormat.includes('mdoc')) {\n return CredentialDocumentFormat.MSO_MDOC\n } else if (format.includes('jwt_')) {\n return CredentialDocumentFormat.JWT\n } else {\n throw Error(`Could not map format ${format} to known format`)\n }\n }\n\n export function toSpecValue(documentFormat: CredentialDocumentFormat, documentType: DocumentType) {\n switch (documentFormat) {\n case CredentialDocumentFormat.SD_JWT:\n return 'dc+sd-jwt'\n case CredentialDocumentFormat.MSO_MDOC:\n return 'mso_mdoc'\n case CredentialDocumentFormat.JSON_LD:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'ldp_vc' : 'ldp_vp'\n case CredentialDocumentFormat.JWT:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'jwt_vc_json' : 'jwt_vp_json'\n }\n }\n}\n\nexport enum CredentialCorrelationType {\n DID = 'DID',\n X509_SAN = 'X509_SAN',\n KID = 'KID',\n URL = 'URL',\n}\n\nexport enum CredentialStateType {\n REVOKED = 'REVOKED',\n VERIFIED = 'VERIFIED',\n EXPIRED = 'EXPIRED',\n}\n","import { CredentialMapper, ObjectUtils } from '@sphereon/ssi-types'\n\nfunction isHex(input: string) {\n return input.match(/^([0-9A-Fa-f])+$/g) !== null\n}\nexport function ensureRawDocument(input: string | object): string {\n if (typeof input === 'string') {\n if (isHex(input) || ObjectUtils.isBase64(input)) {\n // mso_mdoc\n return input\n } else if (CredentialMapper.isJwtEncoded(input) || CredentialMapper.isSdJwtEncoded(input)) {\n return input\n }\n throw Error('Unknown input to be mapped as rawDocument')\n }\n\n try {\n return JSON.stringify(input)\n } catch (e) {\n throw new Error(`Can't stringify to a raw credential: ${input}`)\n }\n}\n"],"mappings":";;;;AAuCO,IAAeA,uBAAf,MAAeA;EAAtB,OAAsBA;;;AA+BtB;;;AC3DO,IAAeC,iCAAf,MAAeA;EAAtB,OAAsBA;;;AAYtB;;;ACAO,IAAeC,gCAAf,MAAeA;EAAtB,OAAsBA;;;AAiBtB;;;ACrCO,IAAeC,2BAAf,MAAeA;EAAtB,OAAsBA;;;AAKtB;;;ACQO,IAAeC,6BAAf,MAAeA;EANtB,OAMsBA;;;AAgDtB;;;ACtDO,IAAeC,kBAAf,MAAeA;EAAtB,OAAsBA;;;AAStB;;;AC2PO,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;SAAAA;;AAML,IAAKC,4BAAAA,0BAAAA,4BAAAA;;;SAAAA;;AAKL,IAAKC,gBAAAA,0BAAAA,gBAAAA;;;SAAAA;;AAKL,IAAKC,cAAAA,0BAAAA,cAAAA;;;SAAAA;;AAKL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;SAAAA;;;;ACnSL,IAAKC,eAAAA,0BAAAA,eAAAA;;;;;SAAAA;;AAOL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;;SAAAA;;AAOL,IAAKC,2BAAAA,0BAAAA,2BAAAA;;;;;SAAAA;;UAOKA,2BAAAA;AACR,WAASC,cAAcC,kBAAwB;AACpD,UAAMC,SAASD,iBAAiBE,YAAW;AAC3C,QAAID,OAAOE,SAAS,IAAA,GAAO;AACzB,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,GAAQ;AACjC,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,KAAUH,iBAAiBG,SAAS,MAAA,GAAS;AACtE,aAAA;IACF,WAAWF,OAAOE,SAAS,MAAA,GAAS;AAClC,aAAA;IACF,OAAO;AACL,YAAMC,MAAM,wBAAwBH,MAAAA,kBAAwB;IAC9D;EACF;AAbgBF;4BAAAA,gBAAAA;AAeT,WAASM,YAAYC,gBAA0CC,cAA0B;AAC9F,YAAQD,gBAAAA;MACN,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAOC,iBAAAA,OAAmCA,iBAAAA,OAAmC,WAAW;MAC1F,KAAA;AACE,eAAOA,iBAAAA,OAAmCA,iBAAAA,OAAmC,gBAAgB;IACjG;EACF;AAXgBF;4BAAAA,cAAAA;AAYlB,GA5BiBP,6BAAAA,2BAAAA,CAAAA,EAAAA;AA8BV,IAAKU,4BAAAA,0BAAAA,4BAAAA;;;;;SAAAA;;AAOL,IAAKC,sBAAAA,0BAAAA,sBAAAA;;;;SAAAA;;;;AC1DZ,SAASC,kBAAkBC,mBAAmB;AAE9C,SAASC,MAAMC,OAAa;AAC1B,SAAOA,MAAMC,MAAM,mBAAA,MAAyB;AAC9C;AAFSF;AAGF,SAASG,kBAAkBF,OAAsB;AACtD,MAAI,OAAOA,UAAU,UAAU;AAC7B,QAAID,MAAMC,KAAAA,KAAUG,YAAYC,SAASJ,KAAAA,GAAQ;AAE/C,aAAOA;IACT,WAAWK,iBAAiBC,aAAaN,KAAAA,KAAUK,iBAAiBE,eAAeP,KAAAA,GAAQ;AACzF,aAAOA;IACT;AACA,UAAMQ,MAAM,2CAAA;EACd;AAEA,MAAI;AACF,WAAOC,KAAKC,UAAUV,KAAAA;EACxB,SAASW,GAAG;AACV,UAAM,IAAIH,MAAM,wCAAwCR,KAAAA,EAAO;EACjE;AACF;AAhBgBE;","names":["AbstractContactStore","AbstractDigitalCredentialStore","AbstractIssuanceBrandingStore","AbstractEventLoggerStore","IAbstractMachineStateStore","AbstractPDStore","ConnectionType","CorrelationIdentifierType","PartyTypeType","PartyOrigin","IdentityOrigin","DocumentType","RegulationType","CredentialDocumentFormat","fromSpecValue","credentialFormat","format","toLowerCase","includes","Error","toSpecValue","documentFormat","documentType","CredentialCorrelationType","CredentialStateType","CredentialMapper","ObjectUtils","isHex","input","match","ensureRawDocument","ObjectUtils","isBase64","CredentialMapper","isJwtEncoded","isSdJwtEncoded","Error","JSON","stringify","e"]}
1
+ {"version":3,"sources":["../src/contact/AbstractContactStore.ts","../src/digitalCredential/AbstractDigitalCredentialStore.ts","../src/issuanceBranding/AbstractIssuanceBrandingStore.ts","../src/eventLogger/AbstractEventLoggerStore.ts","../src/machineState/IAbstractMachineStateStore.ts","../src/presentationDefinition/AbstractPDStore.ts","../src/types/contact/contact.ts","../src/types/digitalCredential/enums.ts","../src/utils/MappingUtils.ts"],"sourcesContent":["import {\n AddElectronicAddressArgs,\n AddIdentityArgs,\n AddPartyArgs,\n AddPartyTypeArgs,\n AddPhysicalAddressArgs,\n AddRelationshipArgs,\n ElectronicAddress,\n GetElectronicAddressArgs,\n GetElectronicAddressesArgs,\n GetIdentitiesArgs,\n GetIdentityArgs,\n GetPartiesArgs,\n GetPartyArgs,\n GetPartyTypeArgs,\n GetPartyTypesArgs,\n GetPhysicalAddressArgs,\n GetPhysicalAddressesArgs,\n GetRelationshipArgs,\n GetRelationshipsArgs,\n Identity,\n Party,\n PartyRelationship,\n PartyType,\n PhysicalAddress,\n RemoveElectronicAddressArgs,\n RemoveIdentityArgs,\n RemovePartyArgs,\n RemovePartyTypeArgs,\n RemovePhysicalAddressArgs,\n RemoveRelationshipArgs,\n UpdateElectronicAddressArgs,\n UpdateIdentityArgs,\n UpdatePartyArgs,\n UpdatePartyTypeArgs,\n UpdatePhysicalAddressArgs,\n UpdateRelationshipArgs,\n} from '../types'\n\nexport abstract class AbstractContactStore {\n abstract getParty(args: GetPartyArgs): Promise<Party>\n abstract getParties(args?: GetPartiesArgs): Promise<Array<Party>>\n abstract addParty(args: AddPartyArgs): Promise<Party>\n abstract updateParty(args: UpdatePartyArgs): Promise<Party>\n abstract removeParty(args: RemovePartyArgs): Promise<void>\n abstract getIdentity(args: GetIdentityArgs): Promise<Identity>\n abstract getIdentities(args?: GetIdentitiesArgs): Promise<Array<Identity>>\n abstract addIdentity(args: AddIdentityArgs): Promise<Identity>\n abstract updateIdentity(args: UpdateIdentityArgs): Promise<Identity>\n abstract removeIdentity(args: RemoveIdentityArgs): Promise<void>\n abstract getRelationship(args: GetRelationshipArgs): Promise<PartyRelationship>\n abstract getRelationships(args?: GetRelationshipsArgs): Promise<Array<PartyRelationship>>\n abstract addRelationship(args: AddRelationshipArgs): Promise<PartyRelationship>\n abstract updateRelationship(args: UpdateRelationshipArgs): Promise<PartyRelationship>\n abstract removeRelationship(args: RemoveRelationshipArgs): Promise<void>\n abstract getPartyType(args: GetPartyTypeArgs): Promise<PartyType>\n abstract getPartyTypes(args?: GetPartyTypesArgs): Promise<Array<PartyType>>\n abstract addPartyType(args: AddPartyTypeArgs): Promise<PartyType>\n abstract updatePartyType(args: UpdatePartyTypeArgs): Promise<PartyType>\n abstract removePartyType(args: RemovePartyTypeArgs): Promise<void>\n abstract getElectronicAddress(args: GetElectronicAddressArgs): Promise<ElectronicAddress>\n abstract getElectronicAddresses(args?: GetElectronicAddressesArgs): Promise<Array<ElectronicAddress>>\n abstract addElectronicAddress(args: AddElectronicAddressArgs): Promise<ElectronicAddress>\n abstract updateElectronicAddress(args: UpdateElectronicAddressArgs): Promise<ElectronicAddress>\n abstract removeElectronicAddress(args: RemoveElectronicAddressArgs): Promise<void>\n abstract getPhysicalAddress(args: GetPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract getPhysicalAddresses(args?: GetPhysicalAddressesArgs): Promise<Array<PhysicalAddress>>\n abstract addPhysicalAddress(args: AddPhysicalAddressArgs): Promise<PhysicalAddress>\n abstract updatePhysicalAddress(args: UpdatePhysicalAddressArgs): Promise<PhysicalAddress>\n abstract removePhysicalAddress(args: RemovePhysicalAddressArgs): Promise<void>\n}\n","import {\n AddCredentialArgs,\n DigitalCredential,\n GetCredentialArgs,\n GetCredentialsArgs,\n GetCredentialsResponse,\n RemoveCredentialArgs,\n UpdateCredentialArgs,\n UpdateCredentialStateArgs,\n} from '../types'\n\nexport abstract class AbstractDigitalCredentialStore {\n abstract getCredential(args: GetCredentialArgs): Promise<DigitalCredential>\n\n abstract getCredentials(args?: GetCredentialsArgs): Promise<GetCredentialsResponse>\n\n abstract addCredential(args: AddCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredential(args: UpdateCredentialArgs): Promise<DigitalCredential>\n\n abstract updateCredentialState(args: UpdateCredentialStateArgs): Promise<DigitalCredential>\n\n abstract removeCredential(args: RemoveCredentialArgs): Promise<boolean>\n}\n","import type {\n IAddCredentialBrandingArgs,\n IAddCredentialLocaleBrandingArgs,\n IAddIssuerBrandingArgs,\n IAddIssuerLocaleBrandingArgs,\n ICredentialBranding,\n ICredentialLocaleBranding,\n IGetCredentialBrandingArgs,\n IGetCredentialLocaleBrandingArgs,\n IGetIssuerBrandingArgs,\n IGetIssuerLocaleBrandingArgs,\n IIssuerBranding,\n IIssuerLocaleBranding,\n IRemoveCredentialBrandingArgs,\n IRemoveCredentialLocaleBrandingArgs,\n IRemoveIssuerBrandingArgs,\n IRemoveIssuerLocaleBrandingArgs,\n IUpdateCredentialBrandingArgs,\n IUpdateCredentialLocaleBrandingArgs,\n IUpdateIssuerBrandingArgs,\n IUpdateIssuerLocaleBrandingArgs,\n} from '../types'\n\nexport abstract class AbstractIssuanceBrandingStore {\n public abstract addCredentialBranding(args: IAddCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialBranding(args?: IGetCredentialBrandingArgs): Promise<Array<ICredentialBranding>>\n public abstract updateCredentialBranding(args: IUpdateCredentialBrandingArgs): Promise<ICredentialBranding>\n public abstract removeCredentialBranding(args: IRemoveCredentialBrandingArgs): Promise<void>\n public abstract addCredentialLocaleBranding(args: IAddCredentialLocaleBrandingArgs): Promise<ICredentialBranding>\n public abstract getCredentialLocaleBranding(args?: IGetCredentialLocaleBrandingArgs): Promise<Array<ICredentialLocaleBranding>>\n public abstract updateCredentialLocaleBranding(args: IUpdateCredentialLocaleBrandingArgs): Promise<ICredentialLocaleBranding>\n public abstract removeCredentialLocaleBranding(args: IRemoveCredentialLocaleBrandingArgs): Promise<void>\n public abstract addIssuerBranding(args: IAddIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerBranding(args?: IGetIssuerBrandingArgs): Promise<Array<IIssuerBranding>>\n public abstract updateIssuerBranding(args: IUpdateIssuerBrandingArgs): Promise<IIssuerBranding>\n public abstract removeIssuerBranding(args: IRemoveIssuerBrandingArgs): Promise<void>\n public abstract addIssuerLocaleBranding(args: IAddIssuerLocaleBrandingArgs): Promise<IIssuerBranding>\n public abstract getIssuerLocaleBranding(args?: IGetIssuerLocaleBrandingArgs): Promise<Array<IIssuerLocaleBranding>>\n public abstract updateIssuerLocaleBranding(args: IUpdateIssuerLocaleBrandingArgs): Promise<IIssuerLocaleBranding>\n public abstract removeIssuerLocaleBranding(args: IRemoveIssuerLocaleBrandingArgs): Promise<void>\n}\n","import type { ActivityLoggingEvent, AuditLoggingEvent } from '@sphereon/ssi-sdk.core'\nimport type { GetActivityEventsArgs, GetAuditEventsArgs, StoreActivityEventArgs, StoreAuditEventArgs } from '../types'\n\nexport abstract class AbstractEventLoggerStore {\n abstract getAuditEvents(args: GetAuditEventsArgs): Promise<Array<AuditLoggingEvent>>\n abstract getActivityEvents(args: GetActivityEventsArgs): Promise<Array<ActivityLoggingEvent>>\n abstract storeAuditEvent(args: StoreAuditEventArgs): Promise<AuditLoggingEvent>\n abstract storeActivityEvent(args: StoreActivityEventArgs): Promise<ActivityLoggingEvent>\n}\n","import type {\n StoreMachineStateDeleteExpiredArgs,\n StoreMachineStateDeleteArgs,\n StoreMachineStatesFindActiveArgs,\n StoreFindMachineStatesArgs,\n StoreMachineStatePersistArgs,\n StoreMachineStateInfo,\n StoreMachineStateGetArgs,\n} from '../types'\n\n/**\n * Represents an abstract class for storing machine states.\n * This class provides methods for persisting, retrieving, and deleting machine states.\n *\n * @interface\n */\nexport abstract class IAbstractMachineStateStore {\n /**\n * Persists the machine state.\n *\n * @param {StoreMachineStatePersistArgs} state - The object containing the machine state to persist.\n * @return {Promise<StoreMachineStateInfo>} - A Promise that resolves to the information about the persisted machine state.\n */\n abstract persistMachineState(state: StoreMachineStatePersistArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds active machine states based on the given arguments.\n *\n * @param {StoreMachineStatesFindActiveArgs} args - The arguments for finding active machine states.\n * @return {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves with an array of active machine states.\n */\n abstract findActiveMachineStates(args: StoreMachineStatesFindActiveArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Retrieves the state of a particular machine.\n *\n * @param {StoreMachineStateGetArgs} args - The arguments for retrieving the machine state.\n * @returns {Promise<StoreMachineStateInfo>} - A promise that resolves to the machine state information.\n */\n abstract getMachineState(args: StoreMachineStateGetArgs): Promise<StoreMachineStateInfo>\n\n /**\n * Finds the machine states based on the given arguments.\n *\n * @param {StoreFindMachineStatesArgs} [args] - The arguments to filter the machine states.\n * @returns {Promise<Array<StoreMachineStateInfo>>} - A promise that resolves to an array of machine state information.\n */\n abstract findMachineStates(args?: StoreFindMachineStatesArgs): Promise<Array<StoreMachineStateInfo>>\n\n /**\n * Deletes a machine state.\n *\n * @param {StoreMachineStateDeleteArgs} args - The arguments for deleting the machine state.\n * @return {Promise<boolean>} - A promise that resolves to a boolean indicating if the machine state was successfully deleted or not.\n */\n abstract deleteMachineState(args: StoreMachineStateDeleteArgs): Promise<boolean>\n\n /**\n * Deletes expired machine states from the database.\n *\n * @param {StoreMachineStateDeleteExpiredArgs} args - The arguments for deleting expired machine states.\n * @return {Promise<number>} - A promise that resolves to the number of deleted machine states.\n */\n abstract deleteExpiredMachineStates(args: StoreMachineStateDeleteExpiredArgs): Promise<number>\n}\n","import type {\n GetDefinitionArgs,\n GetDefinitionsArgs,\n DeleteDefinitionArgs,\n DcqlQueryItem,\n AddDefinitionArgs,\n UpdateDefinitionArgs,\n DeleteDefinitionsArgs,\n} from '../types'\n\nexport abstract class AbstractPDStore {\n abstract hasDefinition(args: GetDefinitionArgs): Promise<boolean>\n abstract hasDefinitions(args: GetDefinitionsArgs): Promise<boolean>\n abstract getDefinition(args: GetDefinitionArgs): Promise<DcqlQueryItem>\n abstract getDefinitions(args: GetDefinitionsArgs): Promise<Array<DcqlQueryItem>>\n abstract addDefinition(args: AddDefinitionArgs): Promise<DcqlQueryItem>\n abstract updateDefinition(args: UpdateDefinitionArgs): Promise<DcqlQueryItem>\n abstract deleteDefinition(args: DeleteDefinitionArgs): Promise<void>\n abstract deleteDefinitions(args: DeleteDefinitionsArgs): Promise<number>\n}\n","import { ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution'\nimport { IIdentifier } from '@veramo/core'\nimport { IIssuerLocaleBranding } from '../issuanceBranding/issuanceBranding'\nimport { CredentialRole } from '@sphereon/ssi-types'\n\nexport type MetadataTypes = string | number | Date | boolean | undefined\n\nexport interface IMetadataEntity {\n // TODO move to types\n label: string\n stringValue?: string\n numberValue?: number\n dateValue?: Date\n boolValue?: boolean\n}\n\nexport type Party = {\n id: string\n uri?: string\n roles: Array<CredentialRole>\n ownerId?: string\n tenantId?: string\n identities: Array<Identity>\n electronicAddresses: Array<ElectronicAddress>\n physicalAddresses: Array<PhysicalAddress>\n contact: Contact\n partyType: PartyType\n /**\n * TODO: Integrate branding logic here in the future. What we should do is make the issuance branding plugin part of the contact-manager and retrieve any branding there is.\n *\n * Currently, we are only defining the branding type within the SDK without implementing the associated logic. This is because:\n * 1. We are combining two types from the SSI-SDK to create a new type that will be used across multiple places in the wallets (web & mobile).\n * 2. While it makes sense to have this combined type in the SDK, the logic to support database connections for these types is complex. The types belong to different modules, and we don't use them together currently.\n * 3. Implementing the full logic now would require significant changes and cross-module interactions, which we don't have the time to address at present.\n *\n * For now, we are defining the type here and will use it in the mobile wallet has the logic for it. This is a temporary solution until we have the resources to integrate the branding logic fully.\n */\n branding?: IIssuerLocaleBranding\n relationships: Array<PartyRelationship>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedParty = Omit<\n Party,\n | 'id'\n | 'identities'\n | 'electronicAddresses'\n | 'physicalAddresses'\n | 'contact'\n | 'roles'\n | 'partyType'\n | 'relationships'\n | 'createdAt'\n | 'lastUpdatedAt'\n> & {\n identities?: Array<NonPersistedIdentity>\n electronicAddresses?: Array<NonPersistedElectronicAddress>\n physicalAddresses?: Array<NonPersistedPhysicalAddress>\n contact: NonPersistedContact\n partyType: NonPersistedPartyType\n relationships?: Array<NonPersistedPartyRelationship>\n}\nexport type PartialParty = Partial<\n Omit<Party, 'identities' | 'electronicAddresses' | 'physicalAddresses' | 'contact' | 'partyType' | 'relationships'>\n> & {\n identities?: PartialIdentity\n electronicAddresses?: PartialElectronicAddress\n physicalAddresses?: PartialPhysicalAddress\n contact?: PartialContact\n partyType?: PartialPartyType\n relationships?: PartialPartyRelationship\n}\n\nexport type Identity = {\n id: string\n alias: string\n ownerId?: string\n tenantId?: string\n origin: IdentityOrigin\n roles: Array<CredentialRole>\n identifier: CorrelationIdentifier\n connection?: Connection\n metadata?: Array<MetadataItem<MetadataTypes>>\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedIdentity = Omit<Identity, 'id' | 'identifier' | 'connection' | 'metadata' | 'origin' | 'createdAt' | 'lastUpdatedAt'> & {\n origin: IdentityOrigin\n identifier: NonPersistedCorrelationIdentifier\n connection?: NonPersistedConnection\n metadata?: Array<NonPersistedMetadataItem<MetadataTypes>>\n}\nexport type PartialIdentity = Partial<Omit<Identity, 'identifier' | 'connection' | 'metadata' | 'origin' | 'roles'>> & {\n identifier?: PartialCorrelationIdentifier\n connection?: PartialConnection\n metadata?: PartialMetadataItem<MetadataTypes> // Usage: FindIdentityArgs = Array<PartialIdentity>\n origin?: IdentityOrigin\n roles?: CredentialRole\n partyId?: string\n}\n\nexport type MetadataItem<T extends MetadataTypes> = {\n id: string\n label: string\n value: T\n}\n\nexport type NonPersistedMetadataItem<T extends MetadataTypes> = Omit<MetadataItem<T>, 'id'>\nexport type PartialMetadataItem<T extends MetadataTypes> = Partial<MetadataItem<T>>\n\nexport type CorrelationIdentifier = {\n id: string\n ownerId?: string\n tenantId?: string\n type: CorrelationIdentifierType\n correlationId: string\n}\nexport type NonPersistedCorrelationIdentifier = Omit<CorrelationIdentifier, 'id'>\nexport type PartialCorrelationIdentifier = Partial<CorrelationIdentifier>\n\nexport type Connection = {\n id: string\n ownerId?: string\n tenantId?: string\n type: ConnectionType\n config: ConnectionConfig\n}\nexport type NonPersistedConnection = Omit<Connection, 'id' | 'config'> & {\n config: NonPersistedConnectionConfig\n}\nexport type PartialConnection = Partial<Omit<Connection, 'config'>> & {\n config: PartialConnectionConfig\n}\n\nexport type OpenIdConfig = {\n id: string\n clientId: string\n clientSecret?: string\n ownerId?: string\n tenantId?: string\n scopes: Array<string>\n issuer: string\n redirectUrl: string\n dangerouslyAllowInsecureHttpRequests: boolean\n clientAuthMethod: 'basic' | 'post' | undefined\n}\nexport type NonPersistedOpenIdConfig = Omit<OpenIdConfig, 'id'>\nexport type PartialOpenIdConfig = Partial<OpenIdConfig>\n\nexport type DidAuthConfig = {\n id: string\n idOpts: ManagedIdentifierOptsOrResult\n stateId: string\n ownerId?: string\n tenantId?: string\n redirectUrl: string\n sessionId: string\n}\nexport type NonPersistedDidAuthConfig = Omit<DidAuthConfig, 'id'>\nexport type PartialDidAuthConfig = Partial<Omit<DidAuthConfig, 'identifier'>> & {\n identifier: Partial<IIdentifier> // TODO, we need to create partials for sub types in IIdentifier\n}\n\nexport type ConnectionConfig = OpenIdConfig | DidAuthConfig\nexport type NonPersistedConnectionConfig = NonPersistedDidAuthConfig | NonPersistedOpenIdConfig\nexport type PartialConnectionConfig = PartialOpenIdConfig | PartialDidAuthConfig\n\nexport type NaturalPerson = {\n id: string\n firstName: string\n lastName: string\n middleName?: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\n\nexport type NonPersistedNaturalPerson = Omit<NaturalPerson, 'id' | 'createdAt' | 'lastUpdatedAt'>\n\nexport type PartialNaturalPerson = Partial<Omit<NaturalPerson, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Organization = {\n id: string\n legalName: string\n displayName: string\n metadata?: Array<MetadataItem<MetadataTypes>>\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedOrganization = Omit<Organization, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialOrganization = Partial<Omit<Organization, 'metadata'>> & {\n metadata?: PartialMetadataItem<MetadataTypes>\n}\n\nexport type Contact = NaturalPerson | Organization\nexport type NonPersistedContact = NonPersistedNaturalPerson | NonPersistedOrganization\nexport type PartialContact = PartialNaturalPerson | PartialOrganization\n\nexport type PartyType = {\n id: string\n type: PartyTypeType\n origin: PartyOrigin\n name: string\n tenantId: string\n description?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyType = Omit<PartyType, 'id' | 'createdAt' | 'lastUpdatedAt'> & {\n id?: string\n}\nexport type PartialPartyType = Partial<PartyType>\n\nexport type PartyRelationship = {\n id: string\n leftId: string\n rightId: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPartyRelationship = Omit<PartyRelationship, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPartyRelationship = Partial<PartyRelationship>\n\nexport type ElectronicAddress = {\n id: string\n type: ElectronicAddressType\n electronicAddress: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedElectronicAddress = Omit<ElectronicAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialElectronicAddress = Partial<ElectronicAddress> & {\n partyId?: string\n}\n\nexport type PhysicalAddress = {\n id: string\n type: PhysicalAddressType\n streetName: string\n streetNumber: string\n postalCode: string\n cityName: string\n provinceName: string\n countryCode: string\n buildingName?: string\n ownerId?: string\n tenantId?: string\n createdAt: Date\n lastUpdatedAt: Date\n}\nexport type NonPersistedPhysicalAddress = Omit<PhysicalAddress, 'id' | 'createdAt' | 'lastUpdatedAt'>\nexport type PartialPhysicalAddress = Partial<PhysicalAddress> & {\n partyId?: string\n}\n\nexport type ElectronicAddressType = 'email' | 'phone'\n\nexport type PhysicalAddressType = 'home' | 'visit' | 'postal'\n\nexport enum ConnectionType {\n OPENID_CONNECT = 'OIDC',\n SIOPv2 = 'SIOPv2',\n SIOPv2_OpenID4VP = 'SIOPv2+OpenID4VP',\n}\n\nexport enum CorrelationIdentifierType {\n DID = 'did',\n URL = 'url',\n}\n\nexport enum PartyTypeType {\n NATURAL_PERSON = 'naturalPerson',\n ORGANIZATION = 'organization',\n}\n\nexport enum PartyOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum IdentityOrigin {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n","export enum DocumentType {\n VC = 'VC',\n VP = 'VP',\n P = 'P',\n C = 'C',\n}\n\nexport enum RegulationType {\n PID = 'PID',\n QEAA = 'QEAA',\n EAA = 'EAA',\n NON_REGULATED = 'NON_REGULATED',\n}\n\nexport enum CredentialDocumentFormat {\n JSON_LD = 'JSON_LD',\n JWT = 'JWT',\n SD_JWT = 'SD_JWT',\n MSO_MDOC = 'MSO_MDOC',\n}\n\nexport namespace CredentialDocumentFormat {\n export function fromSpecValue(credentialFormat: string) {\n const format = credentialFormat.toLowerCase()\n if (format.includes('sd')) {\n return CredentialDocumentFormat.SD_JWT\n } else if (format.includes('ldp')) {\n return CredentialDocumentFormat.JSON_LD\n } else if (format.includes('mso') || credentialFormat.includes('mdoc')) {\n return CredentialDocumentFormat.MSO_MDOC\n } else if (format.includes('jwt_')) {\n return CredentialDocumentFormat.JWT\n } else {\n throw Error(`Could not map format ${format} to known format`)\n }\n }\n\n export function toSpecValue(documentFormat: CredentialDocumentFormat, documentType: DocumentType) {\n switch (documentFormat) {\n case CredentialDocumentFormat.SD_JWT:\n return 'dc+sd-jwt'\n case CredentialDocumentFormat.MSO_MDOC:\n return 'mso_mdoc'\n case CredentialDocumentFormat.JSON_LD:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'ldp_vc' : 'ldp_vp'\n case CredentialDocumentFormat.JWT:\n return documentType === DocumentType.C || documentType === DocumentType.VC ? 'jwt_vc_json' : 'jwt_vp_json'\n }\n }\n}\n\nexport enum CredentialCorrelationType {\n DID = 'DID',\n X509_SAN = 'X509_SAN',\n KID = 'KID',\n URL = 'URL',\n}\n\nexport enum CredentialStateType {\n REVOKED = 'REVOKED',\n VERIFIED = 'VERIFIED',\n EXPIRED = 'EXPIRED',\n}\n","import { CredentialMapper, ObjectUtils } from '@sphereon/ssi-types'\n\nfunction isHex(input: string) {\n return input.match(/^([0-9A-Fa-f])+$/g) !== null\n}\n\nexport function ensureRawDocument(input: string | object): string {\n if (typeof input === 'string') {\n if (isHex(input) || ObjectUtils.isBase64(input)) {\n // mso_mdoc\n return input\n } else if (CredentialMapper.isJwtEncoded(input) || CredentialMapper.isSdJwtEncoded(input)) {\n return input\n }\n throw Error('Unknown input to be mapped as rawDocument')\n }\n\n try {\n return JSON.stringify(input)\n } catch (e) {\n throw new Error(`Can't stringify to a raw credential: ${input}`)\n }\n}\n"],"mappings":";;;;AAuCO,IAAeA,uBAAf,MAAeA;EAAtB,OAAsBA;;;AA+BtB;;;AC3DO,IAAeC,iCAAf,MAAeA;EAAtB,OAAsBA;;;AAYtB;;;ACAO,IAAeC,gCAAf,MAAeA;EAAtB,OAAsBA;;;AAiBtB;;;ACrCO,IAAeC,2BAAf,MAAeA;EAAtB,OAAsBA;;;AAKtB;;;ACQO,IAAeC,6BAAf,MAAeA;EANtB,OAMsBA;;;AAgDtB;;;ACtDO,IAAeC,kBAAf,MAAeA;EAAtB,OAAsBA;;;AAStB;;;AC2PO,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;SAAAA;;AAML,IAAKC,4BAAAA,0BAAAA,4BAAAA;;;SAAAA;;AAKL,IAAKC,gBAAAA,0BAAAA,gBAAAA;;;SAAAA;;AAKL,IAAKC,cAAAA,0BAAAA,cAAAA;;;SAAAA;;AAKL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;SAAAA;;;;ACnSL,IAAKC,eAAAA,0BAAAA,eAAAA;;;;;SAAAA;;AAOL,IAAKC,iBAAAA,0BAAAA,iBAAAA;;;;;SAAAA;;AAOL,IAAKC,2BAAAA,0BAAAA,2BAAAA;;;;;SAAAA;;UAOKA,2BAAAA;AACR,WAASC,cAAcC,kBAAwB;AACpD,UAAMC,SAASD,iBAAiBE,YAAW;AAC3C,QAAID,OAAOE,SAAS,IAAA,GAAO;AACzB,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,GAAQ;AACjC,aAAA;IACF,WAAWF,OAAOE,SAAS,KAAA,KAAUH,iBAAiBG,SAAS,MAAA,GAAS;AACtE,aAAA;IACF,WAAWF,OAAOE,SAAS,MAAA,GAAS;AAClC,aAAA;IACF,OAAO;AACL,YAAMC,MAAM,wBAAwBH,MAAAA,kBAAwB;IAC9D;EACF;AAbgBF;4BAAAA,gBAAAA;AAeT,WAASM,YAAYC,gBAA0CC,cAA0B;AAC9F,YAAQD,gBAAAA;MACN,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAO;MACT,KAAA;AACE,eAAOC,iBAAAA,OAAmCA,iBAAAA,OAAmC,WAAW;MAC1F,KAAA;AACE,eAAOA,iBAAAA,OAAmCA,iBAAAA,OAAmC,gBAAgB;IACjG;EACF;AAXgBF;4BAAAA,cAAAA;AAYlB,GA5BiBP,6BAAAA,2BAAAA,CAAAA,EAAAA;AA8BV,IAAKU,4BAAAA,0BAAAA,4BAAAA;;;;;SAAAA;;AAOL,IAAKC,sBAAAA,0BAAAA,sBAAAA;;;;SAAAA;;;;AC1DZ,SAASC,kBAAkBC,mBAAmB;AAE9C,SAASC,MAAMC,OAAa;AAC1B,SAAOA,MAAMC,MAAM,mBAAA,MAAyB;AAC9C;AAFSF;AAIF,SAASG,kBAAkBF,OAAsB;AACtD,MAAI,OAAOA,UAAU,UAAU;AAC7B,QAAID,MAAMC,KAAAA,KAAUG,YAAYC,SAASJ,KAAAA,GAAQ;AAE/C,aAAOA;IACT,WAAWK,iBAAiBC,aAAaN,KAAAA,KAAUK,iBAAiBE,eAAeP,KAAAA,GAAQ;AACzF,aAAOA;IACT;AACA,UAAMQ,MAAM,2CAAA;EACd;AAEA,MAAI;AACF,WAAOC,KAAKC,UAAUV,KAAAA;EACxB,SAASW,GAAG;AACV,UAAM,IAAIH,MAAM,wCAAwCR,KAAAA,EAAO;EACjE;AACF;AAhBgBE;","names":["AbstractContactStore","AbstractDigitalCredentialStore","AbstractIssuanceBrandingStore","AbstractEventLoggerStore","IAbstractMachineStateStore","AbstractPDStore","ConnectionType","CorrelationIdentifierType","PartyTypeType","PartyOrigin","IdentityOrigin","DocumentType","RegulationType","CredentialDocumentFormat","fromSpecValue","credentialFormat","format","toLowerCase","includes","Error","toSpecValue","documentFormat","documentType","CredentialCorrelationType","CredentialStateType","CredentialMapper","ObjectUtils","isHex","input","match","ensureRawDocument","ObjectUtils","isBase64","CredentialMapper","isJwtEncoded","isSdJwtEncoded","Error","JSON","stringify","e"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.data-store-types",
3
- "version": "0.36.1-next.50+49074a02",
3
+ "version": "0.37.0",
4
4
  "source": "src/index.ts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -21,12 +21,12 @@
21
21
  "build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json"
22
22
  },
23
23
  "dependencies": {
24
- "@sphereon/ssi-sdk.core": "0.36.1-next.50+49074a02",
25
- "@sphereon/ssi-types": "0.36.1-next.50+49074a02",
24
+ "@sphereon/ssi-sdk.core": "0.37.0",
25
+ "@sphereon/ssi-types": "0.37.0",
26
26
  "dcql": "1.0.1"
27
27
  },
28
28
  "devDependencies": {
29
- "@sphereon/ssi-sdk-ext.identifier-resolution": "0.36.1-next.50+49074a02"
29
+ "@sphereon/ssi-sdk-ext.identifier-resolution": "0.37.0"
30
30
  },
31
31
  "files": [
32
32
  "dist",
@@ -47,5 +47,5 @@
47
47
  "PostgreSQL",
48
48
  "Contact Store"
49
49
  ],
50
- "gitHead": "49074a0266b42bdd8012e0872d471f655a0b5736"
50
+ "gitHead": "2fc0740c1eca0e790cb06f292339ee729f94fec9"
51
51
  }
@@ -135,7 +135,7 @@ export type PartialConnection = Partial<Omit<Connection, 'config'>> & {
135
135
  export type OpenIdConfig = {
136
136
  id: string
137
137
  clientId: string
138
- clientSecret: string
138
+ clientSecret?: string
139
139
  ownerId?: string
140
140
  tenantId?: string
141
141
  scopes: Array<string>
@@ -23,10 +23,15 @@ export interface IAddCredentialBrandingArgs {
23
23
 
24
24
  export interface IGetCredentialBrandingArgs {
25
25
  filter?: FindCredentialBrandingArgs
26
+ /**
27
+ * Map of credential branding id to previously received state. When provided, only branding records whose state differs
28
+ * or are not present in this map will be returned.
29
+ */
30
+ knownStates?: Record<string, string>
26
31
  }
27
32
 
28
33
  export interface IUpdateCredentialBrandingArgs {
29
- credentialBranding: Omit<ICredentialBranding, 'localeBranding' | 'createdAt' | 'lastUpdatedAt'>
34
+ credentialBranding: Omit<ICredentialBranding, 'localeBranding' | 'createdAt' | 'lastUpdatedAt' | 'state'>
30
35
  }
31
36
 
32
37
  export interface IRemoveCredentialBrandingArgs {
@@ -39,7 +44,7 @@ export interface IAddCredentialLocaleBrandingArgs {
39
44
  }
40
45
 
41
46
  export interface IUpdateCredentialLocaleBrandingArgs {
42
- localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt'>
47
+ localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt' | 'state'>
43
48
  }
44
49
 
45
50
  export interface IRemoveCredentialLocaleBrandingArgs {
@@ -73,7 +78,7 @@ export interface IAddIssuerLocaleBrandingArgs {
73
78
  }
74
79
 
75
80
  export interface IUpdateIssuerLocaleBrandingArgs {
76
- localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt'>
81
+ localeBranding: Omit<ILocaleBranding, 'createdAt' | 'lastUpdatedAt' | 'state'>
77
82
  }
78
83
 
79
84
  export interface IRemoveIssuerLocaleBrandingArgs {
@@ -6,6 +6,7 @@ export interface ILocaleBranding {
6
6
  description?: string
7
7
  background?: IBackgroundAttributes
8
8
  text?: ITextAttributes
9
+ state?: string
9
10
  createdAt: Date
10
11
  lastUpdatedAt: Date
11
12
  }
@@ -56,15 +57,17 @@ export interface ICredentialClaim {
56
57
  id: string
57
58
  key: string
58
59
  name: string
60
+ order?: number
59
61
  }
60
62
  export interface IBasicCredentialClaim extends Omit<ICredentialClaim, 'id'> {}
61
63
  export interface IPartialCredentialClaim extends Partial<ICredentialClaim> {}
62
64
 
63
65
  export interface ICredentialLocaleBranding extends ILocaleBranding {
66
+ state: string
64
67
  claims?: Array<ICredentialClaim>
65
68
  }
66
69
  export interface IBasicCredentialLocaleBranding
67
- extends Omit<ICredentialLocaleBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'logo' | 'background' | 'text' | 'claims'> {
70
+ extends Omit<ICredentialLocaleBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'logo' | 'background' | 'text' | 'claims' | 'state'> {
68
71
  logo?: IBasicImageAttributes
69
72
  background?: IBasicBackgroundAttributes
70
73
  text?: IBasicTextAttributes
@@ -82,10 +85,11 @@ export interface ICredentialBranding {
82
85
  issuerCorrelationId: string
83
86
  vcHash: string
84
87
  localeBranding: Array<ICredentialLocaleBranding>
88
+ state: string
85
89
  createdAt: Date
86
90
  lastUpdatedAt: Date
87
91
  }
88
- export interface IBasicCredentialBranding extends Omit<ICredentialBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'localeBranding'> {
92
+ export interface IBasicCredentialBranding extends Omit<ICredentialBranding, 'id' | 'createdAt' | 'lastUpdatedAt' | 'localeBranding' | 'state'> {
89
93
  localeBranding: Array<IBasicCredentialLocaleBranding>
90
94
  }
91
95
  export interface IPartialCredentialBranding extends Partial<Omit<ICredentialBranding, 'localeBranding'>> {
@@ -3,6 +3,7 @@ import { CredentialMapper, ObjectUtils } from '@sphereon/ssi-types'
3
3
  function isHex(input: string) {
4
4
  return input.match(/^([0-9A-Fa-f])+$/g) !== null
5
5
  }
6
+
6
7
  export function ensureRawDocument(input: string | object): string {
7
8
  if (typeof input === 'string') {
8
9
  if (isHex(input) || ObjectUtils.isBase64(input)) {