Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions packages/cheqd/src/dids/didCheqdUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,14 +114,24 @@ export interface IDidDocOptions {
}

export function getClosestResourceVersion(resources: Metadata[], date: Date) {
const result = [...resources].sort((a, b) => {
if (!a.created || !b.created) throw new CredoError("Missing required property 'created' on resource")
const distancea = Math.abs(date.getTime() - a.created.getTime())
const distanceb = Math.abs(date.getTime() - b.created.getTime())
return distancea - distanceb
})
let minDiff = Number.POSITIVE_INFINITY
let closest: Metadata | undefined = undefined

// TODO: if the cheqd/sdk returns sorted resources, change this to binary search
for (const resource of resources) {
if (!resource.created) throw new CredoError("Missing required property 'created' on resource")

if (resource.created.getTime() < date.getTime()) {
const diff = date.getTime() - resource.created.getTime()

if (diff < minDiff) {
closest = resource
minDiff = diff
}
}
}

return result[0]
return closest
}

export function filterResourcesByNameAndType(resources: Metadata[], name: string, type: string) {
Expand Down
6 changes: 2 additions & 4 deletions packages/cheqd/tests/cheqd-did-resolver.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,11 @@ describe('Cheqd DID resolver', () => {
id: resourceResult3.resourceState.resourceId,
})

// Date in past should match first created resource
// Date in past should return undefined
resource = getClosestResourceVersion(
didResult.didDocumentMetadata.linkedResourceMetadata,
new Date('2022-11-16T10:56:34Z')
)
expect(resource).toMatchObject({
id: resourceResult1.resourceState.resourceId,
})
expect(resource).toBeUndefined()
})
})
Loading