From 8f9a2cbfe4049855debd60003b77a4f29b2570e6 Mon Sep 17 00:00:00 2001 From: m0ar Date: Mon, 30 Oct 2023 12:45:34 +0100 Subject: [PATCH] Refine metadata representation, expand test suite, fix raw DAG node annotations --- composites/01-researchObject.graphql | 2 +- composites/06-attestation.graphql | 4 +- composites/07-researchComponent.graphql | 9 +- composites/11-annotation.graphql | 32 +- composites/additional-relations.graphql | 4 +- package-lock.json | 1104 ++++++++++++----------- scripts/composites.mjs | 5 +- test/root.spec.ts | 654 ++++++++++---- types/index.ts | 44 +- utils/populate.tsx | 9 +- utils/queries.ts | 323 ++++--- 11 files changed, 1363 insertions(+), 827 deletions(-) diff --git a/composites/01-researchObject.graphql b/composites/01-researchObject.graphql index b88ae6c..614261d 100644 --- a/composites/01-researchObject.graphql +++ b/composites/01-researchObject.graphql @@ -6,5 +6,5 @@ type ResearchObject version: CommitID! @documentVersion title: String! @string(maxLength: 250) manifest: CID! - metadata: String @string(maxLength: 1024) + metadata: CID } diff --git a/composites/06-attestation.graphql b/composites/06-attestation.graphql index d193f8f..97259da 100644 --- a/composites/06-attestation.graphql +++ b/composites/06-attestation.graphql @@ -11,8 +11,8 @@ type Attestation { source: DID! @documentAccount version: CommitID! @documentVersion - # 1. Any type of document, shown with relation on reciever end but cannot - # use @documentRelation without specifying the target type + # 1. Any type of document, shown with relation on reciever end but cannot use + # @documentRelation without specifying the target type before interfaces land # 2. This cannot be a DID, so attestations to people target the Profile targetID: StreamID! targetVersion: CommitID! diff --git a/composites/07-researchComponent.graphql b/composites/07-researchComponent.graphql index f23fc54..c51e85a 100644 --- a/composites/07-researchComponent.graphql +++ b/composites/07-researchComponent.graphql @@ -7,17 +7,22 @@ type ResearchComponent accountRelation: LIST, description: "A contextualized DAG pointer for a research object" ) - @createIndex(fields: [{ path: "dagNode" }]) @createIndex(fields: [{ path: "mimeType" }]) @createIndex(fields: [{ path: "researchObjectVersion" }]) + # Don't join index with path as it prevents efficient reverse CID lookups + @createIndex(fields: [{ path: "dagNode" }]) { owner: DID! @documentAccount version: CommitID! @documentVersion name: String! @string(maxLength: 512) mimeType: String! @string(maxLength: 128) + metadata: CID + + # CID not necessarily unique unless listed with path dagNode: CID! + pathToNode: String! @string(maxLength: 512) - # The associated research object in which this component lives + # The associated research object researchObjectID: StreamID! @documentReference(model: "ResearchObject") researchObject: ResearchObject! @relationDocument(property: "researchObjectID") researchObjectVersion: CommitID! diff --git a/composites/11-annotation.graphql b/composites/11-annotation.graphql index 491142c..d03e6c9 100644 --- a/composites/11-annotation.graphql +++ b/composites/11-annotation.graphql @@ -2,26 +2,46 @@ type Claim @loadModel(id: "$CLAIM_ID") { id: ID! } +type ResearchObject @loadModel(id: "$RESEARCH_OBJECT_ID") { + id: ID! +} + type Annotation @createModel(accountRelation: LIST, description: "Textual commentary") @createIndex(fields: [{ path: "targetVersion" }]) @createIndex(fields: [{ path: "claimVersion" }]) + @createIndex(fields: [{ path: "dagNode" }, { path: "pathToNode" }]) { owner: DID! @documentAccount version: CommitID! @documentVersion + + # Textual commentary on target comment: String! @string(maxLength: 1024) - targetID: StreamID! # Research object, researchComponent, or annotation as reply - targetVersion: CommitID! + # Research object context + researchObjectID: StreamID! @documentReference(model: "ResearchObject") + researchObject: ResearchObject! @relationDocument(property: "researchObjectID") + researchObjectVersion: CommitID! - # If target is a component, identify the location of the annotation - # payload. For example a JSON path, line number, or coordinates in a pdf. - path: String @string(maxLength: 512) + # Research component or annotation as reply + # TODO: interface + targetID: StreamID + targetVersion: CommitID + + # Alternatively, directly annotate a raw DAG node without a component. + # Path is necessary because CID is not necessarily unique. + dagNode: CID + pathToNode: String @string(maxLength: 512) + + # Localization of the annotation payload, depending on file type. + # For example a JSON path, line number, or coordinates. + locationOnFile: String @string(maxLength: 512) # Optionally tag a claim to contextualise the annotation claimID: StreamID @documentReference(model: "Claim") claim: Claim @relationDocument(property: "claimID") claimVersion: CommitID - metadataPayload: String @string(maxLength: 1024) + # Optionally suggest changes to metadata with a diff + metadataPayload: CID } diff --git a/composites/additional-relations.graphql b/composites/additional-relations.graphql index a51988b..5429ffc 100644 --- a/composites/additional-relations.graphql +++ b/composites/additional-relations.graphql @@ -50,8 +50,8 @@ type ResearchObject @loadModel(id: "$RESEARCH_OBJECT_ID") { researchFields: [ResearchFieldRelation] @relationFrom(model: "ResearchFieldRelation", property: "researchObjectID") - annotations: [Annotation] @relationFrom(model: "Annotation", property: "targetID") - annotationCount: Int! @relationCountFrom(model: "Annotation", property: "targetID") + annotations: [Annotation] @relationFrom(model: "Annotation", property: "researchObjectID") + annotationCount: Int! @relationCountFrom(model: "Annotation", property: "researchObjectID") } # Support for incoming relations on CeramicAccounts is coming, but we'd need a separate diff --git a/package-lock.json b/package-lock.json index ad793d5..35bb97e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -70,13 +70,13 @@ } }, "node_modules/@ceramicnetwork/3id-did-resolver": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/3id-did-resolver/-/3id-did-resolver-2.29.0.tgz", - "integrity": "sha512-SLTQWgaLeFebURvomer2rC9IAbk1MFn6QZ7WEkWj7hJkg0ql5sy5fZ4LWXjCXYIepQ+4fUvoQoaY0fol201Ndg==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/3id-did-resolver/-/3id-did-resolver-2.31.0.tgz", + "integrity": "sha512-DZ64ncmd2Ln2FfxdUWQ/GtaI2CvYT4nadNuwe6M5/qBnYea3KCN2Rj1sMdhDUgtPUY3pFGF3Lz+FYnQaNW5CPQ==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/stream-tile": "^2.32.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/stream-tile": "^2.34.0", "@ceramicnetwork/streamid": "^2.17.0", "cross-fetch": "^3.1.4", "least-recent": "^1.0.3", @@ -85,32 +85,32 @@ } }, "node_modules/@ceramicnetwork/anchor-listener": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/anchor-listener/-/anchor-listener-1.21.0.tgz", - "integrity": "sha512-epZYQ+8Qjc6DMuVUIMlan4aNXpMqvni2KnQdsmI/FoZ2mianvCfgv2LUw2kbmBi2PNfxjUq+liogWggh8WYnNg==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/anchor-listener/-/anchor-listener-1.23.0.tgz", + "integrity": "sha512-SVJLkz5RMDfqEAM7JH1z7hDIyyFJlmntSEF/7J05GfWwzhJMjYHwQpPKMEyusSwEQEsu6HIxOxxSio1cG08TNw==", "dev": true, "dependencies": { - "@ceramicnetwork/anchor-utils": "^1.19.0", + "@ceramicnetwork/anchor-utils": "^1.21.0", "@ethersproject/providers": "^5.5.1", "rxjs": "^7.5.2" } }, "node_modules/@ceramicnetwork/anchor-utils": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/anchor-utils/-/anchor-utils-1.19.0.tgz", - "integrity": "sha512-1U9hG37IGgLyai7oWBfoK9DBXudWgiuzRsLnGA/Sa28Ic7wN5Y5ycWd+EN9w2tUTVJr5KORM/aQpg1KH7knWjA==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/anchor-utils/-/anchor-utils-1.21.0.tgz", + "integrity": "sha512-Jxcp/nSZe4dchf2WS0mREl7Akoitd2P8Ze71Y49Q/N/ZOc81JkC5Vw10jf2R0X8NyWEQauuSqPOBgL6NJwzb9Q==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/common": "^2.38.0", "@ethersproject/abi": "^5.7.0", "multiformats": "^11.0.1", "uint8arrays": "^4.0.3" } }, "node_modules/@ceramicnetwork/blockchain-utils-linking": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/blockchain-utils-linking/-/blockchain-utils-linking-2.21.0.tgz", - "integrity": "sha512-rW99eRynpWKcok8WDv0azNZ2ojaEF3md93WxFDn9I1CbFOj+jCuZTBbEuBB4PlFcqPc+QS6qAaBASIp79sPcQA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/blockchain-utils-linking/-/blockchain-utils-linking-2.23.0.tgz", + "integrity": "sha512-3GA2uZsR9u84Ebs6qszfiY1G1TMsB69A5ApfTzrSSWozvwKMRGj1UqKf55kVVHNLYAqjgtyyY0MWkJUeANs6fA==", "dev": true, "dependencies": { "@ceramicnetwork/streamid": "^2.17.0", @@ -123,13 +123,13 @@ } }, "node_modules/@ceramicnetwork/blockchain-utils-validation": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/blockchain-utils-validation/-/blockchain-utils-validation-2.28.0.tgz", - "integrity": "sha512-OLy6Y68mRDtna/8kXiDphthILjG1Ld4oCmPikIu6Zy+yfmU897r6FnNfD8NZ/K5clDWKDzgLtDr5Y6KAjiWv+Q==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/blockchain-utils-validation/-/blockchain-utils-validation-2.30.0.tgz", + "integrity": "sha512-7ioJfFWB/Bxx/0bdDtEymfl/Qc5ewAsuGfSUeFpxnK4nOaOXO8TcRnyNX1K9BWOmXAMeRkNFcnnoZ/mMXr4tAQ==", "dev": true, "dependencies": { - "@ceramicnetwork/blockchain-utils-linking": "^2.21.0", - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/blockchain-utils-linking": "^2.23.0", + "@ceramicnetwork/common": "^2.38.0", "@ethersproject/contracts": "^5.5.0", "@ethersproject/providers": "^5.5.1", "@ethersproject/wallet": "^5.5.0", @@ -146,21 +146,21 @@ } }, "node_modules/@ceramicnetwork/cli": { - "version": "2.41.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/cli/-/cli-2.41.0.tgz", - "integrity": "sha512-CCpI8lRmq87vmJuLSMzg47fgpyLdf/nU9YeTRHLwfZeDrGHshSW1YzInPsgq1XuDtmA/TlE5Z/u52Cpk5VUmiA==", + "version": "2.43.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/cli/-/cli-2.43.0.tgz", + "integrity": "sha512-W560EofZhqtA42vrV2OIyJIwX6gQDutQCwt4PFfIXqZTuc88Bxij8aOj+0BAIkflEsFFWeXYENzGh77gthyfUQ==", "dev": true, "dependencies": { "@awaitjs/express": "^0.9.0", - "@ceramicnetwork/3id-did-resolver": "^2.29.0", - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/core": "^2.43.0", - "@ceramicnetwork/http-client": "^2.33.0", - "@ceramicnetwork/indexing": "^1.2.0", - "@ceramicnetwork/ipfs-daemon": "^2.29.0", + "@ceramicnetwork/3id-did-resolver": "^2.31.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/core": "^2.45.0", + "@ceramicnetwork/http-client": "^2.35.0", + "@ceramicnetwork/indexing": "^1.4.0", + "@ceramicnetwork/ipfs-daemon": "^2.31.0", "@ceramicnetwork/logger": "^2.5.0", "@ceramicnetwork/observability": "^1.4.1", - "@ceramicnetwork/stream-tile": "^2.32.0", + "@ceramicnetwork/stream-tile": "^2.34.0", "@ceramicnetwork/streamid": "^2.17.0", "@stablelib/random": "^1.0.1", "aws-sdk": "^2.1049.0", @@ -193,9 +193,9 @@ } }, "node_modules/@ceramicnetwork/codecs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/codecs/-/codecs-1.11.0.tgz", - "integrity": "sha512-UEK8qveRk5f+ubAamdJ+fInmIGVKKMTXD8D4SUYa8zHXkKk4zGnYw+XwThAdh7+aClCWGN83SECR9TnaMZhIGw==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/codecs/-/codecs-1.13.0.tgz", + "integrity": "sha512-mgyphEDfJzy9JOCcEaBBbIaR+7uwrvW22tf2hGv6XH7Kv3zJOH9A2v6zH9XWuaYHH5oZy8mhcWraO4NNjxZKkg==", "dependencies": { "@ceramicnetwork/streamid": "^2.17.0", "cartonne": "^2.1.1", @@ -206,11 +206,11 @@ } }, "node_modules/@ceramicnetwork/common": { - "version": "2.36.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/common/-/common-2.36.0.tgz", - "integrity": "sha512-cZu3953wsTd/xKUDosC1l2tXpWKLkYA+PkkueRCXIrLRvNQrMCde8yx6xnnNcFihU3hpzux/iqkHHEihATeN1Q==", + "version": "2.38.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/common/-/common-2.38.0.tgz", + "integrity": "sha512-39o6v2yZct0Hsk9XKRZemZojC6T/vtc6AHxD6rIJzudIvBEwWVHfYbFAsLmgcf1Zv/1I5/DuWjUYku6DLRrHXQ==", "dependencies": { - "@ceramicnetwork/codecs": "^1.11.0", + "@ceramicnetwork/codecs": "^1.13.0", "@ceramicnetwork/streamid": "^2.17.0", "@didtools/cacao": "^2.1.0", "@didtools/pkh-ethereum": "^0.1.0", @@ -245,29 +245,29 @@ } }, "node_modules/@ceramicnetwork/core": { - "version": "2.43.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/core/-/core-2.43.0.tgz", - "integrity": "sha512-DKUNKf65R8clcmwjr1aEDZPzzvf0i1pmoRSRephMmGgfAuEUubC/ejWHppKpKJfv58JsQsF6E/7qAkaiWc/fMw==", - "dev": true, - "dependencies": { - "@ceramicnetwork/anchor-listener": "^1.21.0", - "@ceramicnetwork/anchor-utils": "^1.19.0", - "@ceramicnetwork/codecs": "^1.11.0", - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/indexing": "^1.2.0", - "@ceramicnetwork/ipfs-topology": "^2.30.0", - "@ceramicnetwork/job-queue": "^1.3.0", + "version": "2.45.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/core/-/core-2.45.0.tgz", + "integrity": "sha512-gRPWQKO1tvijjGDeTukMMaJ+EBQTp02NSpg3GXkltD79QW30Af5TuxL632Ttr3YQaDFcUxZZuMghhQSGyVOfaQ==", + "dev": true, + "dependencies": { + "@ceramicnetwork/anchor-listener": "^1.23.0", + "@ceramicnetwork/anchor-utils": "^1.21.0", + "@ceramicnetwork/codecs": "^1.13.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/indexing": "^1.4.0", + "@ceramicnetwork/ipfs-topology": "^2.32.0", + "@ceramicnetwork/job-queue": "^1.5.0", "@ceramicnetwork/observability": "^1.4.1", - "@ceramicnetwork/pinning-aggregation": "^2.28.0", - "@ceramicnetwork/pinning-ipfs-backend": "^2.28.0", - "@ceramicnetwork/stream-caip10-link": "^2.31.0", - "@ceramicnetwork/stream-caip10-link-handler": "^2.29.0", - "@ceramicnetwork/stream-model": "^1.18.0", - "@ceramicnetwork/stream-model-handler": "^1.18.0", - "@ceramicnetwork/stream-model-instance": "^1.18.0", - "@ceramicnetwork/stream-model-instance-handler": "^1.18.0", - "@ceramicnetwork/stream-tile": "^2.32.0", - "@ceramicnetwork/stream-tile-handler": "^2.31.0", + "@ceramicnetwork/pinning-aggregation": "^2.30.0", + "@ceramicnetwork/pinning-ipfs-backend": "^2.30.0", + "@ceramicnetwork/stream-caip10-link": "^2.33.0", + "@ceramicnetwork/stream-caip10-link-handler": "^2.31.0", + "@ceramicnetwork/stream-model": "^1.20.0", + "@ceramicnetwork/stream-model-handler": "^1.20.0", + "@ceramicnetwork/stream-model-instance": "^1.20.0", + "@ceramicnetwork/stream-model-instance-handler": "^1.20.0", + "@ceramicnetwork/stream-tile": "^2.34.0", + "@ceramicnetwork/stream-tile-handler": "^2.33.0", "@ceramicnetwork/streamid": "^2.17.0", "@ceramicnetwork/wasm-bloom-filter": "^0.1.0", "@datastructures-js/priority-queue": "^6.1.0", @@ -307,15 +307,15 @@ "dev": true }, "node_modules/@ceramicnetwork/http-client": { - "version": "2.33.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/http-client/-/http-client-2.33.0.tgz", - "integrity": "sha512-rZ2NlA1NoSSyA44ZK5W7KhvdNX6i3hFPu1z4NyRA5Zvl4jwEogGboaWZF2hWDDXxfkrRZX7+J/JvzxBKp360QQ==", - "dependencies": { - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/stream-caip10-link": "^2.31.0", - "@ceramicnetwork/stream-model": "^1.18.0", - "@ceramicnetwork/stream-model-instance": "^1.18.0", - "@ceramicnetwork/stream-tile": "^2.32.0", + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/http-client/-/http-client-2.35.0.tgz", + "integrity": "sha512-RAM3NwIyjGKZ0sqzpjo3uDMTlmlwPqocPqv2LBTYh6vQuKJ/zZqH8gAc1v4TCQyfddVjuuDBgQXoriYSCNbZHQ==", + "dependencies": { + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/stream-caip10-link": "^2.33.0", + "@ceramicnetwork/stream-model": "^1.20.0", + "@ceramicnetwork/stream-model-instance": "^1.20.0", + "@ceramicnetwork/stream-tile": "^2.34.0", "@ceramicnetwork/streamid": "^2.17.0", "@scarf/scarf": "^1.1.1", "query-string": "^7.1.0", @@ -323,16 +323,16 @@ } }, "node_modules/@ceramicnetwork/indexing": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/indexing/-/indexing-1.2.0.tgz", - "integrity": "sha512-++UIl4bMqM+5LK0hEk6kOVUil2YlkCF+wEbnxUT0gZrW2Wd0SnWjT2mQFAhjlgd+h78hGmwBVQMCk7QbsfMHvw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/indexing/-/indexing-1.4.0.tgz", + "integrity": "sha512-EvZRIZceBsdshX1D9Th3+AWNVo7rtj12BT0Y3jFhBqtqaiUjoxoo0NZw1a8ic+sRSA+4Sw2dFeciEYLXwWM9jg==", "dev": true, "dependencies": { - "@ceramicnetwork/anchor-listener": "^1.21.0", - "@ceramicnetwork/anchor-utils": "^1.19.0", - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/job-queue": "^1.3.0", - "@ceramicnetwork/stream-model": "^1.18.0", + "@ceramicnetwork/anchor-listener": "^1.23.0", + "@ceramicnetwork/anchor-utils": "^1.21.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/job-queue": "^1.5.0", + "@ceramicnetwork/stream-model": "^1.20.0", "@ceramicnetwork/streamid": "^2.17.0", "@ethersproject/providers": "^5.5.1", "knex": "^2.5.1", @@ -351,9 +351,9 @@ "dev": true }, "node_modules/@ceramicnetwork/indexing/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -377,13 +377,13 @@ } }, "node_modules/@ceramicnetwork/ipfs-daemon": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/ipfs-daemon/-/ipfs-daemon-2.29.0.tgz", - "integrity": "sha512-BpQBGNeS5orWBwv+w5Yn853b6b+PUENmuP4GfxEp2yARtSd8q5eusQ9jyGNetoYIXqNxrV0yrDCGnv4jl1Kt8Q==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/ipfs-daemon/-/ipfs-daemon-2.31.0.tgz", + "integrity": "sha512-PU7/l44qlNpphuRLXCwoBdNbf5tZVZIWIaUcwfDnlX1cWS35k16DrdB6SqSLtrbk9nIqXXPTrK00d6sC7FrHEw==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/ipfs-topology": "^2.30.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/ipfs-topology": "^2.32.0", "express": "^4.17.2", "get-port": "^6.0.0", "go-ipfs": "^0.18.1", @@ -398,22 +398,22 @@ } }, "node_modules/@ceramicnetwork/ipfs-topology": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/ipfs-topology/-/ipfs-topology-2.30.0.tgz", - "integrity": "sha512-gPc5gImS5SmHTEJHtz8rsAlhw0QKLKjrAw6uZ6sRuTFBsJimX6x4D1yLmwd/Qw/6J19b7U8nsyGX7gQMotWrJw==", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/ipfs-topology/-/ipfs-topology-2.32.0.tgz", + "integrity": "sha512-XNXyFEuU4QLEdiVRFuW5eL37CXMSb0HG045oczsEI5enbbLk2ccHd2pZEv+3LKsuaJAPwI9IIUCOEUCt+4KnWQ==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/common": "^2.38.0", "cross-fetch": "^3.1.4" } }, "node_modules/@ceramicnetwork/job-queue": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/job-queue/-/job-queue-1.3.0.tgz", - "integrity": "sha512-XMWRd8awOP1CVxTWisQ+zA3GJ4xJ87XOWHux8J7KUZSV1Rqfz4UqdNxI0RLIQuSelJEsXTLHCvYV6uKaJhyq8A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/job-queue/-/job-queue-1.5.0.tgz", + "integrity": "sha512-JymWaYKdWpXTgdhwSDZ5qMAH8spIPthv3iG28TnkO4KTjAfTVMhHKYjsFgc7aNwbb0AoXnTXjVvSQFftH5UzTA==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/common": "^2.38.0", "pg": "^8.11.3", "pg-boss": "^8.2.0", "rxjs": "^7.8.1" @@ -454,9 +454,9 @@ } }, "node_modules/@ceramicnetwork/pinning-aggregation": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/pinning-aggregation/-/pinning-aggregation-2.28.0.tgz", - "integrity": "sha512-X7jM8HbShCUWPjuVKx+zpI8+NhhdIpNkXZlY0xij/5/6tvKRfV6cFDYDF4mHE62PLWSH1CInKpG+NZNLSryQXA==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/pinning-aggregation/-/pinning-aggregation-2.30.0.tgz", + "integrity": "sha512-iOJ8H/lZLrzZn75hZXoFM3+7iKjbpvZAxkekK7JXzaXaO7zzKtOdKHiCEBMdsdTHiRU6I6ALMlMlOx/zt+WYBA==", "dev": true, "dependencies": { "@stablelib/sha256": "^1.0.1", @@ -464,9 +464,9 @@ } }, "node_modules/@ceramicnetwork/pinning-ipfs-backend": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/pinning-ipfs-backend/-/pinning-ipfs-backend-2.28.0.tgz", - "integrity": "sha512-SDr66Ny1zPKihc8iap9e+GDPxmxU3/GHLrQ1+TnUSZqyghHrK6jt8U3BnGfaz+vXxyyuHd6yXGjVHKbMr6QVTQ==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/pinning-ipfs-backend/-/pinning-ipfs-backend-2.30.0.tgz", + "integrity": "sha512-Us99PjmcWleiBbpdOYbCzVxFhAbuNVC557hr5CHAFuJLKh5qCWqPtVGZfpS70zW2Y1/fO0mXN7qgpPnveufvjQ==", "dev": true, "dependencies": { "@stablelib/sha256": "^1.0.1", @@ -475,11 +475,11 @@ } }, "node_modules/@ceramicnetwork/stream-caip10-link": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-caip10-link/-/stream-caip10-link-2.31.0.tgz", - "integrity": "sha512-yuj+tRd7REniekUxiNqFiyOsk+wf1Y8O08mM3hyDnVeOTax8C3ReO8ODYpRRIPESlRTb5SZn2sZp9THCAmJ2Ow==", + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-caip10-link/-/stream-caip10-link-2.33.0.tgz", + "integrity": "sha512-uvK3Kj0a7hDUNhZPDQX1O6dTO16mGDZ12fLZ2ycSMr/FPrID/htPSRgkt8Z901PLfbTSjdVuJNJhZxZjToDkng==", "dependencies": { - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/common": "^2.38.0", "@ceramicnetwork/streamid": "^2.17.0", "caip": "~1.1.0", "did-resolver": "^4.0.1", @@ -487,35 +487,35 @@ } }, "node_modules/@ceramicnetwork/stream-caip10-link-handler": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-caip10-link-handler/-/stream-caip10-link-handler-2.29.0.tgz", - "integrity": "sha512-WTtYwOrL4dphArjzsAu8gEeFxFz2M0wSamivqbE7YeCR+aX4UJauIdvUmKcS++AyfHkOYX/bf53TLtl3Trw9hw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-caip10-link-handler/-/stream-caip10-link-handler-2.31.0.tgz", + "integrity": "sha512-8iFQlKvMiyKzFh2W0A/a0MDhVWpVuug0Qyo12Svi5Y6NBeY0KOkmQnj5o8UkyAVjL3V3SeUq5JldCtNK6zQGLw==", "dev": true, "dependencies": { - "@ceramicnetwork/blockchain-utils-validation": "^2.28.0", - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/stream-caip10-link": "^2.31.0", - "@ceramicnetwork/stream-handler-common": "^1.26.0" + "@ceramicnetwork/blockchain-utils-validation": "^2.30.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/stream-caip10-link": "^2.33.0", + "@ceramicnetwork/stream-handler-common": "^1.28.0" } }, "node_modules/@ceramicnetwork/stream-handler-common": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-handler-common/-/stream-handler-common-1.26.0.tgz", - "integrity": "sha512-CzrXEcPn44gJSRBlg/yfMe4mQbl+ECO9KaNLTwzmSD6OXl02F6lVvdy7IXxo7S4pydgr6XEitZ5rwml+I7L/FA==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-handler-common/-/stream-handler-common-1.28.0.tgz", + "integrity": "sha512-FSgb5xGebBRpFZQyMQi95w7JdAL+9ncu/qubBanUUqYt74GGjoz3FELv8hpkXtSvpw14ZWAnLj3W/iB2BEyr3g==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/common": "^2.38.0", "@ceramicnetwork/streamid": "^2.17.0", "lodash.clonedeep": "^4.5.0" } }, "node_modules/@ceramicnetwork/stream-model": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model/-/stream-model-1.18.0.tgz", - "integrity": "sha512-FmQ/gMeSLm0ow6c0sQwVtPoVCvMDKUXvjLAItoh4qbIVTo6TlEpSOalq7d3QdjttzZ3xxi3fiOBlmmQmpkku6g==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model/-/stream-model-1.20.0.tgz", + "integrity": "sha512-jlv3B1itw2yTsFcyqVaFigih6ZsrfPeL3N0DYWMEU72Rh/hV91S4LYIynB0ReHKjhfKQxA7SM/2jsdRWnUBGNA==", "dependencies": { - "@ceramicnetwork/codecs": "^1.11.0", - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/codecs": "^1.13.0", + "@ceramicnetwork/common": "^2.38.0", "@ceramicnetwork/streamid": "^2.17.0", "@ipld/dag-cbor": "^7.0.0", "@stablelib/random": "^1.0.1", @@ -529,28 +529,30 @@ } }, "node_modules/@ceramicnetwork/stream-model-handler": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model-handler/-/stream-model-handler-1.18.0.tgz", - "integrity": "sha512-qIaySgRoV63H8O1A8HX8JLi9/K5y7deCLcRO7pkpZwe16cmjbB02jGlq8eRlrpi/kmRns+xecEMxgOMdGaL6FA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model-handler/-/stream-model-handler-1.20.0.tgz", + "integrity": "sha512-YnpuTP3u79GJWK5PqlslltBMUpQCC4/EzQrAKbGkyo36NQ8h67KPIcOOT5rQv8p35ItOCG+7gYJ/u6FvvK/rtw==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/stream-handler-common": "^1.26.0", - "@ceramicnetwork/stream-model": "^1.18.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/stream-handler-common": "^1.28.0", + "@ceramicnetwork/stream-model": "^1.20.0", "@ceramicnetwork/streamid": "^2.17.0", "ajv": "^8.8.2", "ajv-formats": "^2.1.1", "fast-json-patch": "^3.1.0", + "json-ptr": "^3.1.1", "lodash.clonedeep": "^4.5.0", + "lodash.ismatch": "^4.4.0", "uint8arrays": "^4.0.3" } }, "node_modules/@ceramicnetwork/stream-model-instance": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model-instance/-/stream-model-instance-1.18.0.tgz", - "integrity": "sha512-DikAfS1oZQbnco3wROdr+Wmln1qwh3MWOJt00dSaDhfUNw3dmcUdriZnjsUDs6B0pC+6d213ZfP+DZqJWHwRqw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model-instance/-/stream-model-instance-1.20.0.tgz", + "integrity": "sha512-GWZ0lPAzMwIP5XT09qJEc36A6MhH0o/+QPmvzMhID83Ss13qFcCXWs5v8bSsSHd3gsOBErojj4Vm5RogAR2pkQ==", "dependencies": { - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/common": "^2.38.0", "@ceramicnetwork/streamid": "^2.17.0", "@ipld/dag-cbor": "^7.0.0", "@stablelib/random": "^1.0.1", @@ -560,14 +562,14 @@ } }, "node_modules/@ceramicnetwork/stream-model-instance-handler": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model-instance-handler/-/stream-model-instance-handler-1.18.0.tgz", - "integrity": "sha512-UuagfXvzT6pFSjZmQYEQEaWCteG3L27Rq/c4vSxl3tCdtxEupR3rsNTGs4RH6aPupxzJ3tdvtgaP86eZMzlMmA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-model-instance-handler/-/stream-model-instance-handler-1.20.0.tgz", + "integrity": "sha512-9ekf68KtUbU1XSbBlLfKsi7Zf3d0UpOWMB5YUFNqqMSARvYdJ+JA3AU0qlXqbDWKx6WMeVZvp8UGr0OPfU5PiQ==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/stream-handler-common": "^1.26.0", - "@ceramicnetwork/stream-model-instance": "^1.18.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/stream-handler-common": "^1.28.0", + "@ceramicnetwork/stream-model-instance": "^1.20.0", "@ceramicnetwork/streamid": "^2.17.0", "ajv": "^8.8.2", "ajv-formats": "^2.1.1", @@ -578,11 +580,11 @@ } }, "node_modules/@ceramicnetwork/stream-tile": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-tile/-/stream-tile-2.32.0.tgz", - "integrity": "sha512-3CpqkDOY00PGNWWGIBvT/+iv6TUyb8EUv4Nrn0r8lHj6UoM+lCZb78LLLpjw6FQnm5kL6/TkzfJJT6jKqB7LjQ==", + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-tile/-/stream-tile-2.34.0.tgz", + "integrity": "sha512-Kcq8vQS1U3KXT6k7ECgB4YMLCoZfaRryHsOCpj8tlz4uKkJlvL+bfgsE7WxnhaW5B+ovjzVNagdQOMZ2Q/RPmQ==", "dependencies": { - "@ceramicnetwork/common": "^2.36.0", + "@ceramicnetwork/common": "^2.38.0", "@ceramicnetwork/streamid": "^2.17.0", "@ipld/dag-cbor": "^7.0.0", "@stablelib/random": "^1.0.1", @@ -593,14 +595,14 @@ } }, "node_modules/@ceramicnetwork/stream-tile-handler": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-tile-handler/-/stream-tile-handler-2.31.0.tgz", - "integrity": "sha512-EDfxo0P85z+fH9y2Vzjm+/fiv6LFObo2slMxoRiaUPEqSiztkLY+ntkvervW16XfJNkI/wDgmKqOn+YPvatkeQ==", + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/@ceramicnetwork/stream-tile-handler/-/stream-tile-handler-2.33.0.tgz", + "integrity": "sha512-Ua3KGex5OZilg7DmJ1A6qNZm3FGczqYNUC6qogJiVi8tL5kHPAV26RcHt3rbWs2NcFyRgJhps2+4Zn+LLCNG6A==", "dev": true, "dependencies": { - "@ceramicnetwork/common": "^2.36.0", - "@ceramicnetwork/stream-handler-common": "^1.26.0", - "@ceramicnetwork/stream-tile": "^2.32.0", + "@ceramicnetwork/common": "^2.38.0", + "@ceramicnetwork/stream-handler-common": "^1.28.0", + "@ceramicnetwork/stream-tile": "^2.34.0", "@ceramicnetwork/streamid": "^2.17.0", "ajv": "^8.8.2", "ajv-formats": "^2.1.1", @@ -769,9 +771,9 @@ } }, "node_modules/@composedb/devtools/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -795,9 +797,9 @@ } }, "node_modules/@composedb/graphql-scalars/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" @@ -933,18 +935,18 @@ } }, "node_modules/@didtools/cacao/node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, "node_modules/@didtools/cacao/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", + "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", "bin": { "cborg": "lib/bin.js" } @@ -1443,9 +1445,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -2814,12 +2816,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -2841,9 +2843,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@ipld/dag-cbor": { @@ -2875,18 +2877,18 @@ } }, "node_modules/@ipld/dag-json/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", + "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", "dev": true, "bin": { "cborg": "lib/bin.js" } }, "node_modules/@ipld/dag-json/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -2907,9 +2909,9 @@ } }, "node_modules/@ipld/dag-pb/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -2975,9 +2977,9 @@ } }, "node_modules/@libp2p/interface": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.3.tgz", - "integrity": "sha512-C1O7Xqd2TGVWrIOEDx6kGJSk4YOysWGmYG5Oh3chnsCY0wjUSsLDpl9+wKrdiM/lJbAlHlV65ZOvSkIQ9cWPBQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.4.tgz", + "integrity": "sha512-Pk8mzit/w7PbTh28n77RDLTU1CQBBzLygiNC07MvcEjaIwqXdNPN3Vuzr/5qiF6aDsbM9fA1W5dWoCif9xBdxg==", "dev": true, "dependencies": { "@multiformats/multiaddr": "^12.1.5", @@ -3008,9 +3010,9 @@ } }, "node_modules/@libp2p/interface-connection/node_modules/@multiformats/multiaddr": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.7.tgz", - "integrity": "sha512-MZRj+uUrtF2WqgByrsPolrdyPDSFstw7Fe0ewabWgWl27fcOmfDOSrEt2aUVkSzapXbyCG7JQh0QvimmTF4aMA==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.8.tgz", + "integrity": "sha512-9WCmSiQV3X8T3YR7cb7TieEumnJhRd9aGjeYFIN0VVvjAj7WciryDOE9Ot3W9RDwpjNeEwHDubM+tHBkPrdpzg==", "dev": true, "dependencies": { "@chainsafe/is-ip": "^2.0.1", @@ -3020,16 +3022,12 @@ "multiformats": "^12.0.1", "uint8-varint": "^2.0.1", "uint8arrays": "^4.0.2" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.6.0" } }, "node_modules/@libp2p/interface-connection/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -3088,9 +3086,9 @@ } }, "node_modules/@libp2p/interface-peer-info/node_modules/@multiformats/multiaddr": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.7.tgz", - "integrity": "sha512-MZRj+uUrtF2WqgByrsPolrdyPDSFstw7Fe0ewabWgWl27fcOmfDOSrEt2aUVkSzapXbyCG7JQh0QvimmTF4aMA==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.8.tgz", + "integrity": "sha512-9WCmSiQV3X8T3YR7cb7TieEumnJhRd9aGjeYFIN0VVvjAj7WciryDOE9Ot3W9RDwpjNeEwHDubM+tHBkPrdpzg==", "dev": true, "dependencies": { "@chainsafe/is-ip": "^2.0.1", @@ -3100,16 +3098,12 @@ "multiformats": "^12.0.1", "uint8-varint": "^2.0.1", "uint8arrays": "^4.0.2" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.6.0" } }, "node_modules/@libp2p/interface-peer-info/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -3134,9 +3128,9 @@ } }, "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.7.tgz", - "integrity": "sha512-MZRj+uUrtF2WqgByrsPolrdyPDSFstw7Fe0ewabWgWl27fcOmfDOSrEt2aUVkSzapXbyCG7JQh0QvimmTF4aMA==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.8.tgz", + "integrity": "sha512-9WCmSiQV3X8T3YR7cb7TieEumnJhRd9aGjeYFIN0VVvjAj7WciryDOE9Ot3W9RDwpjNeEwHDubM+tHBkPrdpzg==", "dev": true, "dependencies": { "@chainsafe/is-ip": "^2.0.1", @@ -3146,10 +3140,6 @@ "multiformats": "^12.0.1", "uint8-varint": "^2.0.1", "uint8arrays": "^4.0.2" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.6.0" } }, "node_modules/@libp2p/interface/node_modules/it-stream-types": { @@ -3163,9 +3153,9 @@ } }, "node_modules/@libp2p/interface/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -3200,9 +3190,9 @@ } }, "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.7.tgz", - "integrity": "sha512-MZRj+uUrtF2WqgByrsPolrdyPDSFstw7Fe0ewabWgWl27fcOmfDOSrEt2aUVkSzapXbyCG7JQh0QvimmTF4aMA==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.8.tgz", + "integrity": "sha512-9WCmSiQV3X8T3YR7cb7TieEumnJhRd9aGjeYFIN0VVvjAj7WciryDOE9Ot3W9RDwpjNeEwHDubM+tHBkPrdpzg==", "dev": true, "dependencies": { "@chainsafe/is-ip": "^2.0.1", @@ -3212,16 +3202,12 @@ "multiformats": "^12.0.1", "uint8-varint": "^2.0.1", "uint8arrays": "^4.0.2" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.6.0" } }, "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -3296,9 +3282,9 @@ } }, "node_modules/@multiformats/multiaddr-to-uri/node_modules/@multiformats/multiaddr": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.7.tgz", - "integrity": "sha512-MZRj+uUrtF2WqgByrsPolrdyPDSFstw7Fe0ewabWgWl27fcOmfDOSrEt2aUVkSzapXbyCG7JQh0QvimmTF4aMA==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.8.tgz", + "integrity": "sha512-9WCmSiQV3X8T3YR7cb7TieEumnJhRd9aGjeYFIN0VVvjAj7WciryDOE9Ot3W9RDwpjNeEwHDubM+tHBkPrdpzg==", "dev": true, "dependencies": { "@chainsafe/is-ip": "^2.0.1", @@ -3308,16 +3294,12 @@ "multiformats": "^12.0.1", "uint8-varint": "^2.0.1", "uint8arrays": "^4.0.2" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.6.0" } }, "node_modules/@multiformats/multiaddr-to-uri/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -3325,9 +3307,9 @@ } }, "node_modules/@next/env": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz", - "integrity": "sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==" + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz", + "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==" }, "node_modules/@next/eslint-plugin-next": { "version": "13.4.19", @@ -3339,9 +3321,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz", - "integrity": "sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz", + "integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==", "cpu": [ "arm64" ], @@ -3354,9 +3336,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz", - "integrity": "sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz", + "integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==", "cpu": [ "x64" ], @@ -3369,9 +3351,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz", - "integrity": "sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz", + "integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==", "cpu": [ "arm64" ], @@ -3384,9 +3366,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz", - "integrity": "sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz", + "integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==", "cpu": [ "arm64" ], @@ -3399,9 +3381,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz", - "integrity": "sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz", + "integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==", "cpu": [ "x64" ], @@ -3414,9 +3396,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz", - "integrity": "sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz", + "integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==", "cpu": [ "x64" ], @@ -3429,9 +3411,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz", - "integrity": "sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz", + "integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==", "cpu": [ "arm64" ], @@ -3444,9 +3426,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz", - "integrity": "sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz", + "integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==", "cpu": [ "ia32" ], @@ -3459,9 +3441,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz", - "integrity": "sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz", + "integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==", "cpu": [ "x64" ], @@ -3474,9 +3456,9 @@ } }, "node_modules/@noble/ciphers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.3.0.tgz", - "integrity": "sha512-ldbrnOjmNRwFdXcTM6uXDcxpMIFrbzAWNnpBPp4oTJTFF0XByGD6vf45WrehZGXRQTRVV+Zm8YP+EgEf+e4cWA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.4.0.tgz", + "integrity": "sha512-xaUaUUDWbHIFSxaQ/pIe+33VG2mfJp6N/KxKLmZr5biWdNznCAmfu24QRhX10BbVAuqOahAoyp0S4M9md6GPDw==", "funding": { "url": "https://paulmillr.com/funding/" } @@ -4413,17 +4395,20 @@ } }, "node_modules/@stacks/common/node_modules/@types/bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-wT1B4iIO82ecXkdN6waCK8Ou7E71WU+mP1osDA5Q8c6Ur+ozU2vIKUIhSpUr6uE5L2YHocKS1Z2jG2fBC1YVeg==", "dependencies": { "@types/node": "*" } }, "node_modules/@stacks/common/node_modules/@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==" + "version": "18.18.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", + "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@stacks/encryption": { "version": "6.9.0", @@ -4453,9 +4438,12 @@ ] }, "node_modules/@stacks/encryption/node_modules/@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==" + "version": "18.18.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", + "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@stacks/network": { "version": "6.8.1", @@ -4618,9 +4606,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", - "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz", + "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==", "dev": true, "peer": true, "dependencies": { @@ -4629,9 +4617,9 @@ } }, "node_modules/@types/bs58check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", - "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.1.tgz", + "integrity": "sha512-BEgCmR2xfxR4Fb/ar85utiONf5xR3ADvxKHDfHHVlPb/OlVvRwgb/Afb9RRVz5nqxuHcxAW89rM3uGoMSTXnjQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -4650,33 +4638,33 @@ } }, "node_modules/@types/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-/k+vesl92vMvMygmQrFe9Aimxi6oQXFUX9mA5HanTrKUSAMoLauSi6PNFOdRw0oeqilaW600GNx2vSaT2f8aIQ==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.4.tgz", + "integrity": "sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==", "dev": true, "dependencies": { "@types/chai": "*" } }, "node_modules/@types/cli-progress": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.3.tgz", - "integrity": "sha512-/+C9xAdVtc+g5yHHkGBThgAA8rYpi5B+2ve3wLtybYj0JHEBs57ivR4x/zGfSsplRnV+psE91Nfin1soNKqz5Q==", + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.4.tgz", + "integrity": "sha512-yufTxeeNCZuEIxx2uebK8lpSAsJM4lvzakm/VxzYhDtqhXCzwH9jpn7nPCxzrROuEbLATqhFq4MIPoG0tlrsvw==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", - "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", + "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==", "dev": true, "peer": true, "dependencies": { @@ -4684,9 +4672,9 @@ } }, "node_modules/@types/express": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz", - "integrity": "sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", + "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", "dev": true, "peer": true, "dependencies": { @@ -4697,9 +4685,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.37", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", - "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", + "version": "4.17.39", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz", + "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==", "dev": true, "peer": true, "dependencies": { @@ -4710,15 +4698,15 @@ } }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", - "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==", "dev": true }, "node_modules/@types/http-errors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", - "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz", + "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==", "dev": true, "peer": true }, @@ -4738,9 +4726,9 @@ } }, "node_modules/@types/mime": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz", - "integrity": "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==", "dev": true, "peer": true }, @@ -4751,31 +4739,31 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz", - "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==", + "version": "20.8.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz", + "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==", "dev": true, "dependencies": { - "undici-types": "~5.25.1" + "undici-types": "~5.26.4" } }, "node_modules/@types/prop-types": { - "version": "15.7.8", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", - "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==", + "version": "15.7.9", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", + "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==", "dev": true }, "node_modules/@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "version": "6.9.9", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", + "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==", "dev": true, "peer": true }, "node_modules/@types/range-parser": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz", - "integrity": "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz", + "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==", "dev": true, "peer": true }, @@ -4791,24 +4779,24 @@ } }, "node_modules/@types/responselike": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", - "integrity": "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/scheduler": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", - "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", + "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==", "dev": true }, "node_modules/@types/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", - "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz", + "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==", "dev": true, "peer": true, "dependencies": { @@ -4817,9 +4805,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", - "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz", + "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==", "dev": true, "peer": true, "dependencies": { @@ -4829,15 +4817,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", - "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4" }, "engines": { @@ -4857,13 +4845,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", - "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4874,9 +4862,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", - "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4887,13 +4875,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", - "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4914,12 +4902,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", - "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/types": "6.9.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -5035,12 +5023,12 @@ } }, "node_modules/@whatwg-node/fetch": { - "version": "0.9.13", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.13.tgz", - "integrity": "sha512-PPtMwhjtS96XROnSpowCQM85gCUG2m7AXZFw0PZlGbhzx2GK7f2iOXilfgIJ0uSlCuuGbOIzfouISkA7C4FJOw==", + "version": "0.9.14", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.14.tgz", + "integrity": "sha512-wurZC82zzZwXRDSW0OS9l141DynaJQh7Yt0FD1xZ8niX7/Et/7RoiLiltbVU1fSF1RR9z6ndEaTUQBAmddTm1w==", "dev": true, "dependencies": { - "@whatwg-node/node-fetch": "^0.4.17", + "@whatwg-node/node-fetch": "^0.5.0", "urlpattern-polyfill": "^9.0.0" }, "engines": { @@ -5048,9 +5036,9 @@ } }, "node_modules/@whatwg-node/node-fetch": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.4.19.tgz", - "integrity": "sha512-AW7/m2AuweAoSXmESrYQr/KBafueScNbn2iNO0u6xFr2JZdPmYsSm5yvAXYk6yDLv+eDmSSKrf7JnFZ0CsJIdA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.0.tgz", + "integrity": "sha512-q76lDAafvHNGWedNAVHrz/EyYTS8qwRLcwne8SJQdRN5P3HydxU6XROFvJfTML6KZXQX2FDdGY4/SnaNyd7M0Q==", "dev": true, "dependencies": { "@whatwg-node/events": "^0.1.0", @@ -5064,9 +5052,9 @@ } }, "node_modules/@whatwg-node/server": { - "version": "0.9.14", - "resolved": "https://registry.npmjs.org/@whatwg-node/server/-/server-0.9.14.tgz", - "integrity": "sha512-I8TT0NoCP+xThLBuGlU6dgq5wpExkphNMo2geZwQW0vAmEPtc3MNMZMIYqg5GyNmpv5Nf7fnxb8tVOIHbDvuDA==", + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/@whatwg-node/server/-/server-0.9.16.tgz", + "integrity": "sha512-gktQkRyONEw2EGpx7UZaC6zNlUm21CGlqAHQXU3QC6W0zlLM5ZQNDCeD66q/nsPHDV08X2NTHlABsuAEk5rh/w==", "dev": true, "dependencies": { "@whatwg-node/fetch": "^0.9.10", @@ -5216,9 +5204,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5237,9 +5225,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", "dev": true, "engines": { "node": ">=0.4.0" @@ -5660,9 +5648,9 @@ "dev": true }, "node_modules/aws-sdk": { - "version": "2.1472.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1472.0.tgz", - "integrity": "sha512-U7kAHRbvTy753IXKV8Oom/AqlqnsbXG+Kw5gRbKi6VcsZ3hR/EpNMzdRXTWO5U415bnLWGo8WAqIz67PIaaKsw==", + "version": "2.1483.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1483.0.tgz", + "integrity": "sha512-u1DVpvBd2UeYLXwXgY8tO/SjbdFEE6nRkQWiLaDJaBoHycHpe+DjPtGl1KaLiOIMaDZ+cnIzf3/aRSss/mCeBQ==", "dev": true, "dependencies": { "buffer": "4.9.2", @@ -6313,13 +6301,14 @@ "integrity": "sha512-yOO3Fu4ygyKYAdznuoaqschMKIZzcdgyMpBNtrIfrUhnOeaOWG+dh0c13wcOS6B/46IGGbncoyzJlio79jU7rw==" }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6403,9 +6392,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001547", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", - "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", + "version": "1.0.30001558", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001558.tgz", + "integrity": "sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ==", "funding": [ { "type": "opencollective", @@ -6481,18 +6470,18 @@ } }, "node_modules/cartonne/node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, "node_modules/cartonne/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", + "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", "bin": { "cborg": "lib/bin.js" } @@ -7065,18 +7054,18 @@ } }, "node_modules/dag-jose/node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, "node_modules/dag-jose/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", + "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", "bin": { "cborg": "lib/bin.js" } @@ -7220,9 +7209,9 @@ } }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -7306,11 +7295,11 @@ } }, "node_modules/did-jwt": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-7.4.2.tgz", - "integrity": "sha512-bdMVrUKD8wBiYihrxm5Bso33vYuw5DHxxN6y+IFSpHQpYQF16nuW6T8+FCrVkS5gDYE6jFZmnkqjJwycT4K7AA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-7.4.4.tgz", + "integrity": "sha512-OW9CwDvHx0E2qjrRfy8wm5sJekXxJqGrAZXgdfhYpHEHX31Kn7Cz9gShrpGlIqYFsEsEAsA5xhFIidKAawyNCg==", "dependencies": { - "@noble/ciphers": "^0.3.0", + "@noble/ciphers": "^0.4.0", "@noble/curves": "^1.0.0", "@noble/hashes": "^1.3.0", "@scure/base": "^1.1.3", @@ -7321,9 +7310,9 @@ } }, "node_modules/did-jwt/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" @@ -7404,19 +7393,15 @@ } }, "node_modules/dns-over-http-resolver": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-2.1.2.tgz", - "integrity": "sha512-Bjbf6aZjr3HMnwGslZnoW3MJVqgbTsh39EZWpikx2yLl9xEjw4eZhlOHCFhkOu89zoWaS4rqe2Go53TXW4Byiw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-2.1.3.tgz", + "integrity": "sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==", "dev": true, "dependencies": { "debug": "^4.3.1", "native-fetch": "^4.0.2", "receptacle": "^1.3.2", "undici": "^5.12.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" } }, "node_modules/doctrine": { @@ -7442,9 +7427,9 @@ } }, "node_modules/dset": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", - "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", + "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", "engines": { "node": ">=4" } @@ -7843,26 +7828,26 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -7872,7 +7857,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -7886,7 +7871,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -7918,26 +7903,26 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -8173,26 +8158,26 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -9054,10 +9039,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -9116,15 +9104,15 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9503,12 +9491,12 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9607,6 +9595,18 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/header-case": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", @@ -9836,13 +9836,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -9907,10 +9907,13 @@ } }, "node_modules/ipfs-core-types/node_modules/@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==", - "dev": true + "version": "18.18.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", + "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/ipfs-core-types/node_modules/interface-datastore": { "version": "7.0.4", @@ -10027,9 +10030,9 @@ } }, "node_modules/ipfs-http-client/node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -10037,9 +10040,9 @@ } }, "node_modules/ipfs-http-client/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", + "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", "dev": true, "bin": { "cborg": "lib/bin.js" @@ -10287,12 +10290,12 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11141,9 +11144,9 @@ } }, "node_modules/kubo-rpc-client/node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "dev": true, "engines": { "node": ">=16.0.0", @@ -11151,9 +11154,9 @@ } }, "node_modules/kubo-rpc-client/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", + "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", "dev": true, "bin": { "cborg": "lib/bin.js" @@ -11976,6 +11979,12 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, "node_modules/lodash.keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", @@ -12176,12 +12185,12 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lower-case": { @@ -12227,9 +12236,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.4.tgz", - "integrity": "sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -12835,11 +12844,11 @@ } }, "node_modules/next": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/next/-/next-13.5.4.tgz", - "integrity": "sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz", + "integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==", "dependencies": { - "@next/env": "13.5.4", + "@next/env": "13.5.6", "@swc/helpers": "0.5.2", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", @@ -12854,15 +12863,15 @@ "node": ">=16.14.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.5.4", - "@next/swc-darwin-x64": "13.5.4", - "@next/swc-linux-arm64-gnu": "13.5.4", - "@next/swc-linux-arm64-musl": "13.5.4", - "@next/swc-linux-x64-gnu": "13.5.4", - "@next/swc-linux-x64-musl": "13.5.4", - "@next/swc-win32-arm64-msvc": "13.5.4", - "@next/swc-win32-ia32-msvc": "13.5.4", - "@next/swc-win32-x64-msvc": "13.5.4" + "@next/swc-darwin-arm64": "13.5.6", + "@next/swc-darwin-x64": "13.5.6", + "@next/swc-linux-arm64-gnu": "13.5.6", + "@next/swc-linux-arm64-musl": "13.5.6", + "@next/swc-linux-x64-gnu": "13.5.6", + "@next/swc-linux-x64-musl": "13.5.6", + "@next/swc-win32-arm64-msvc": "13.5.6", + "@next/swc-win32-ia32-msvc": "13.5.6", + "@next/swc-win32-x64-msvc": "13.5.6" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -13169,9 +13178,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13428,9 +13437,9 @@ } }, "node_modules/ora/node_modules/emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", "dev": true }, "node_modules/ora/node_modules/log-symbols": { @@ -14308,16 +14317,13 @@ "dev": true }, "node_modules/protons-runtime": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.0.2.tgz", - "integrity": "sha512-eKppVrIS5dDh+Y61Yj4bDEOs2sQLQbQGIhr7EBiybPQhIMGBynzVXlYILPWl3Td1GDadobc8qevh5D+JwfG9bw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.1.0.tgz", + "integrity": "sha512-9zUaikdZj2u9Z/lFKH+qmtewvQdB1fIKTyN5Iytpdlt0rsHrfw8a14CqXKMWY4ow25HyGuu4D8+7wUbjmI/sdA==", "dev": true, "dependencies": { - "protobufjs": "^7.0.0", - "uint8arraylist": "^2.4.3" - }, - "peerDependencies": { - "uint8arraylist": "^2.3.2" + "uint8arraylist": "^2.4.3", + "uint8arrays": "^4.0.6" } }, "node_modules/proxy-addr": { @@ -15034,9 +15040,9 @@ "devOptional": true }, "node_modules/sass": { - "version": "1.69.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.3.tgz", - "integrity": "sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ==", + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -15232,6 +15238,21 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -16266,9 +16287,9 @@ } }, "node_modules/type-fest": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.4.0.tgz", - "integrity": "sha512-HT3RRs7sTfY22KuPQJkD/XjbTbxgP2Je5HPt6H6JEGvcjHd5Lqru75EbrP3tb4FYjNJ+DjLp+MNQTFQU0mhXNw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.6.0.tgz", + "integrity": "sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==", "dev": true, "engines": { "node": ">=16" @@ -16417,9 +16438,9 @@ "dev": true }, "node_modules/uint8-varint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.1.tgz", - "integrity": "sha512-euvmpuulJstK5+xNuI4S1KfnxJnbI5QP52RXIR3GZ3/ZMkOsEK2AgCtFpNvEQLXMxMx2o0qcyevK1fJwOZJagQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.2.tgz", + "integrity": "sha512-LZXmBT0jiHR7J4oKM1GUhtdLFW1yPauzI8NjJlotXn92TprO9u8VMvEVR4QMk8xhUVUd+2fqfU2/kGbVHYSSWw==", "dev": true, "dependencies": { "uint8arraylist": "^2.0.0", @@ -16448,9 +16469,9 @@ } }, "node_modules/uint8arrays/node_modules/multiformats": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", - "integrity": "sha512-6mRIsrZXyw5xNPO31IGBMmxgDXBSgCGDsBAtazkZ02ip4hMwZNrQvfxXZtytRoBSWuzSq5f9VmMnXj76fIz5FQ==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" @@ -16472,9 +16493,9 @@ } }, "node_modules/undici": { - "version": "5.26.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz", - "integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.0.tgz", + "integrity": "sha512-l3ydWhlhOJzMVOYkymLykcRRXqbUaQriERtR70B9LzNkZ4bX52Fc8wbTDneMiwo8T+AemZXvXaTx+9o5ROxrXg==", "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" @@ -16484,10 +16505,9 @@ } }, "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", - "dev": true + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unique-filename": { "version": "1.1.1", @@ -16684,9 +16704,9 @@ } }, "node_modules/vite": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", - "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -16969,13 +16989,13 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" diff --git a/scripts/composites.mjs b/scripts/composites.mjs index 3b1a10b..51769c8 100644 --- a/scripts/composites.mjs +++ b/scripts/composites.mjs @@ -102,7 +102,8 @@ export const writeComposite = async (spinner) => { const annotationSchema = readFileSync( "./composites/11-annotation.graphql", { encoding: "utf-8"} - ).replace("$CLAIM_ID", claimComposite.modelIDs[0]); + ).replace("$CLAIM_ID", claimComposite.modelIDs[0]) + .replace("$RESEARCH_OBJECT_ID", researchObjComposite.modelIDs[0]); const annotationComposite = await Composite.create({ ceramic, @@ -122,7 +123,7 @@ export const writeComposite = async (spinner) => { .replace("$REFERENCE_RELATION_ID", referenceRelationComposite.modelIDs[1]) .replace("$RESEARCH_FIELD_ID", researchFieldComposite.modelIDs[0]) .replace("$RESEARCH_FIELD_RELATION_ID", researchFieldRelationComposite.modelIDs[2]) - .replace("$ANNOTATION_ID", annotationComposite.modelIDs[1]); + .replace("$ANNOTATION_ID", annotationComposite.modelIDs[2]); const additionalRelationsComposite = await Composite.create({ ceramic, diff --git a/test/root.spec.ts b/test/root.spec.ts index 563b8c8..c6a1205 100644 --- a/test/root.spec.ts +++ b/test/root.spec.ts @@ -6,24 +6,34 @@ import { mutationCreateAnnotation, mutationCreateAttestation, mutationCreateClaim, + mutationCreateContributorRelation, mutationCreateProfile, + mutationCreateReferenceRelation, mutationCreateResearchComponent, + mutationCreateResearchField, + mutationCreateResearchFieldRelation, mutationCreateResearchObject, mutationUpdateAttestation, + mutationUpdateContributorRelation, + mutationUpdateReferenceRelation, mutationUpdateResearchComponent, mutationUpdateResearchObject, queryAnnotation, queryAttestation, queryClaim, + queryContributorRelation, queryProfile, + queryReferenceRelation, queryResearchComponent, + queryResearchFieldRelation, + queryResearchFields, queryResearchObject } from '../utils/queries' import { randomDID } from './util' import { CeramicClient } from '@ceramicnetwork/http-client' import { writeComposite } from 'scripts/composites.mjs' import { setTimeout } from "timers/promises"; -import { Annotation, Attestation, Claim, Profile, ResearchObject } from '@/types' +import { Annotation, Attestation, Claim, ContributorRelation, Profile, ReferenceRelation, ResearchObject } from '@/types' import { CommitID } from '@ceramicnetwork/streamid' const CERAMIC_API = 'http:/localhost:7007' @@ -44,17 +54,17 @@ describe('ComposeDB nodes', () => { await writeComposite({ info: () => { }, succeed: () => { } }); }); - describe('User', async () => { + describe('User can create', async () => { const composeClient = freshClient(); const user = await randomDID(); composeClient.setDID(user); // Create mutations error on failure and are otherwise successful - test('can create research object', async () => { + test('research object', async () => { const data: ResearchObject = { title: 'Test', manifest: A_CID, - metadata: '{ "key": "value" }' + metadata: A_CID } const researchObject = await mutationCreateResearchObject( composeClient, data @@ -65,7 +75,7 @@ describe('ComposeDB nodes', () => { expect(result).toEqual(data); }); - test('can create profile', async () => { + test('profile', async () => { const data: Profile = { displayName: 'First Lastname', orcid: 'orcidHandle' @@ -78,7 +88,7 @@ describe('ComposeDB nodes', () => { expect(result).toEqual(data); }); - test('can create claim', async () => { + test('claim', async () => { const data: Claim = { title: 'My Claim', description: 'The point of the claim', @@ -90,7 +100,7 @@ describe('ComposeDB nodes', () => { expect(result).toEqual(data); }); - test('can attest to own research object', async () => { + test('attestation to own research object', async () => { const myResearchObject = await mutationCreateResearchObject( composeClient, { @@ -119,6 +129,52 @@ describe('ComposeDB nodes', () => { }); }); + describe('User can update', async () => { + const composeClient = freshClient(); + const user = await randomDID(); + composeClient.setDID(user); + + test('research object', async () => { + const data: ResearchObject = { + title: 'Test', + manifest: A_CID + }; + const researchObject = await mutationCreateResearchObject(composeClient, data); + + await waitAndSync(researchObject.streamID); + await mutationUpdateResearchObject( + composeClient, + { + id: researchObject.streamID, + metadata: A_CID // Add some new metadata + } + ); + const result = await queryResearchObject(composeClient, researchObject.streamID); + expect(result).toEqual({ ...data, metadata: A_CID }); + }); + + test('profile', async () => { + const profile = await mutationCreateProfile( + composeClient, + { + displayName: "My Name", + orcid: "@handle" + } + ); + + const newProfile: Profile = { + displayName: "New Name", + orcid: "@handle" + }; + await waitAndSync(profile.streamID); + // Apparently create acts as an upsert on SINGLE accountRelation models + await mutationCreateProfile(composeClient, newProfile); + + const result = await queryProfile(composeClient, profile.streamID); + expect(result).toEqual(newProfile); + }); + }); + describe('Attestations', async () => { const composeClient = freshClient() composeClient.setDID(await randomDID()) @@ -248,64 +304,145 @@ describe('ComposeDB nodes', () => { name: 'Name', mimeType: 'text/csv', dagNode: A_CID, + pathToNode: "", researchObjectID: researchObject.streamID, researchObjectVersion: researchObject.commitID } ); - test('can be made on research object', async () => { - const data: Annotation = { - comment: 'This is a cool object!', - targetID: researchObject.streamID, - targetVersion: researchObject.commitID, - claimID: claim.streamID, - claimVersion: claim.commitID - }; + describe('can be created on', async () => { + test('research object', async () => { + const data: Annotation = { + comment: 'This is a cool object!', - const annotation = await mutationCreateAnnotation(composeClient, data); + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, - const response = await queryAnnotation(composeClient, annotation.streamID); - expect(response).toEqual({ ...data, metadataPayload: null, path: null }); - }); + claimID: claim.streamID, + claimVersion: claim.commitID + }; - test('can be made on research component', async () => { - const data: Annotation = { - comment: 'This is a cool object!', - targetID: researchComponent.streamID, - targetVersion: researchComponent.commitID, - claimID: claim.streamID, - claimVersion: claim.commitID - }; + const annotation = await mutationCreateAnnotation(composeClient, data); - const annotation = await mutationCreateAnnotation(composeClient, data); + const response = await queryAnnotation(composeClient, annotation.streamID); + expect(response).toMatchObject(data); + }); - const response = await queryAnnotation(composeClient, annotation.streamID); - expect(response).toEqual({ ...data, metadataPayload: null, path: null }); + test('research component', async () => { + const data: Annotation = { + comment: 'What a component!', + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + + targetID: researchComponent.streamID, + targetVersion: researchComponent.commitID, + + claimID: claim.streamID, + claimVersion: claim.commitID + }; + + const annotation = await mutationCreateAnnotation(composeClient, data); + + const response = await queryAnnotation(composeClient, annotation.streamID); + expect(response).toMatchObject(data); + }); + + test('raw dagNode', async () => { + const data: Annotation = { + comment: 'What a file!', + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + + dagNode: A_CID, + pathToNode: "files/data.csv", + + claimID: claim.streamID, + claimVersion: claim.commitID, + }; + + const annotation = await mutationCreateAnnotation(composeClient, data); + + const response = await queryAnnotation(composeClient, annotation.streamID); + expect(response).toMatchObject(data); + }); }); - test('can attach metadata', async () => { - const data: Annotation = { - comment: 'This is a cool object!', - targetID: researchComponent.streamID, - targetVersion: researchComponent.commitID, - claimID: claim.streamID, - claimVersion: claim.commitID, - metadataPayload: "JSONPatch" - }; + describe('can suggest metadata on', async () => { + test('research object', async () => { + const data: Annotation = { + comment: 'Adding some metadata to research object', - const annotation = await mutationCreateAnnotation(composeClient, data); + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, - const response = await queryAnnotation(composeClient, annotation.streamID); - expect(response?.metadataPayload).toEqual("JSONPatch"); + claimID: claim.streamID, + claimVersion: claim.commitID, + + metadataPayload: A_CID + }; + + const annotation = await mutationCreateAnnotation(composeClient, data); + + const response = await queryAnnotation(composeClient, annotation.streamID); + expect(response?.metadataPayload).toEqual(A_CID); + }); + + test('component', async () => { + const data: Annotation = { + comment: 'Adding some metadata to component', + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + + targetID: researchComponent.streamID, + targetVersion: researchComponent.commitID, + + claimID: claim.streamID, + claimVersion: claim.commitID, + + metadataPayload: A_CID + }; + + const annotation = await mutationCreateAnnotation(composeClient, data); + + const response = await queryAnnotation(composeClient, annotation.streamID); + expect(response?.metadataPayload).toEqual(A_CID); + }); + + test('raw dagNode', async () => { + const data: Annotation = { + comment: 'Adding some metadata to DAG', + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + + dagNode: A_CID, + pathToNode: "files/data.csv", + + claimID: claim.streamID, + claimVersion: claim.commitID, + + metadataPayload: A_CID + }; + + const annotation = await mutationCreateAnnotation(composeClient, data); + + const response = await queryAnnotation(composeClient, annotation.streamID); + expect(response?.metadataPayload).toEqual(A_CID); + }); }); - test.skip('can omit claim', async () => { + test.skip('can be made without claim', async () => { // API error on @relationDocument when claimID omitted even if optional, - // under review by ceramic devs + // under review by ceramic devs. + // When fixed, remove unnecessary claims and make this a separate case const data: Annotation = { comment: 'This is a cool object!', - targetID: researchComponent.streamID, - targetVersion: researchComponent.commitID + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, }; const annotation = await mutationCreateAnnotation(composeClient, data); @@ -314,83 +451,96 @@ describe('ComposeDB nodes', () => { expect(response).toEqual(data); }); - test('can be accessed from research object', async () => { - const data: Annotation = { - comment: 'This is a cool object!', - targetID: researchObject.streamID, - targetVersion: researchObject.commitID, - claimID: claim.streamID, - claimVersion: claim.commitID - }; - - const annotation = await mutationCreateAnnotation(composeClient, data); - - const response = await queryResearchObject( - composeClient, - researchObject.streamID, - ` - annotations(first: 10) { - edges { - node { - targetID - targetVersion - id + describe('can be found from', async () => { + test('research object', async () => { + const data: Annotation = { + comment: 'This is a cool object!', + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + + claimID: claim.streamID, + claimVersion: claim.commitID + }; + + const annotation = await mutationCreateAnnotation(composeClient, data); + const response = await queryResearchObject( + composeClient, + researchObject.streamID, + ` + annotations(first: 10) { + edges { + node { + researchObjectID + researchObjectVersion + id + } } } + ` + ); + const expected = { + node: { + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + id: annotation.streamID } - ` - ); - const expected = { - node: { - targetID: researchObject.streamID, - targetVersion: researchObject.commitID, - id: annotation.streamID - } - }; - expect((response as any).annotations.edges).toContainEqual(expected); - }); - - test('can be accessed from research component', async () => { - const data: Annotation = { - comment: 'This is a cool component!', - targetID: researchComponent.streamID, - targetVersion: researchComponent.commitID, - claimID: claim.streamID, - claimVersion: claim.commitID - }; + }; + expect((response as any).annotations.edges).toContainEqual(expected); + }); - const annotation = await mutationCreateAnnotation(composeClient, data); + test('research component', async () => { + const data: Annotation = { + comment: 'This is a cool component!', - const response = await queryResearchComponent( - composeClient, - researchComponent.streamID, - ` - annotations(first: 10) { - edges { - node { - targetID - targetVersion - id + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + + targetID: researchComponent.streamID, + targetVersion: researchComponent.commitID, + + claimID: claim.streamID, + claimVersion: claim.commitID + }; + + const annotation = await mutationCreateAnnotation(composeClient, data); + + const response = await queryResearchComponent( + composeClient, + researchComponent.streamID, + ` + annotations(first: 10) { + edges { + node { + targetID + targetVersion + id + } } } + ` + ); + const expected = { + node: { + targetID: researchComponent.streamID, + targetVersion: researchComponent.commitID, + id: annotation.streamID } - ` - ); - const expected = { - node: { - targetID: researchComponent.streamID, - targetVersion: researchComponent.commitID, - id: annotation.streamID - } - }; - expect((response as any).annotations.edges).toContainEqual(expected); + }; + expect((response as any).annotations.edges).toContainEqual(expected); + }); }); test('can reply to another annotation', async () => { const questionData: Annotation = { comment: 'What do you tink about this?', + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + targetID: researchComponent.streamID, targetVersion: researchComponent.commitID, + claimID: claim.streamID, claimVersion: claim.commitID }; @@ -399,14 +549,19 @@ describe('ComposeDB nodes', () => { const replyData: Annotation = { comment: 'Looks good!', + + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + targetID: question.streamID, targetVersion: question.commitID, + claimID: claim.streamID, claimVersion: claim.commitID }; const reply = await mutationCreateAnnotation(composeClient, replyData); - + const replyFromQuestion = await queryAnnotation( composeClient, question.streamID, @@ -422,59 +577,243 @@ describe('ComposeDB nodes', () => { ); // Verify that we can get the replies from the question - const expectedReply = { node: { id: reply.streamID }}; + const expectedReply = { node: { id: reply.streamID } }; expect((replyFromQuestion as any).replies.edges).toContainEqual(expectedReply); }); }); - describe('User', async () => { + describe('Contributor relations', async () => { const composeClient = freshClient(); - const user = await randomDID(); - composeClient.setDID(user); + const user1 = await randomDID(); + composeClient.setDID(user1); - test('can update research object', async () => { - const data: ResearchObject = { - title: 'Test', - manifest: A_CID, - metadata: '{ "key": "value" }' - }; - const researchObject = await mutationCreateResearchObject(composeClient, data); + const user1Profile = await mutationCreateProfile(composeClient, { + displayName: 'Name', + orcid: '000-111' + }); - await waitAndSync(researchObject.streamID); - const newMetadata = '{ "key": "value", "newKey": "value" }'; - await mutationUpdateResearchObject( + const user2 = await randomDID(); + composeClient.setDID(user2); + + const researchObject = await mutationCreateResearchObject( + composeClient, + { + title: 'Title', + manifest: A_CID + } + ); + + const contributionData: ContributorRelation = { + role: 'Author', + contributorID: user1Profile.streamID, + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID, + revoked: false + }; + + test('created', async () => { + const contribution = await mutationCreateContributorRelation(composeClient, contributionData); + const response = await queryContributorRelation(composeClient, contribution.streamID); + expect(response).toEqual(contributionData); + }); + + test('updated with revokation', async () => { + const contribution = await mutationCreateContributorRelation(composeClient, contributionData); + await mutationUpdateContributorRelation( composeClient, - { - id: researchObject.streamID, - metadata: newMetadata - } + { id: contribution.streamID, revoked: true }, + ) + + const response = await queryContributorRelation(composeClient, contribution.streamID); + expect(response).toEqual({ ...contributionData, revoked: true }); + }); + + test('found from research objects', async () => { + const contribution = await mutationCreateContributorRelation(composeClient, contributionData); + const response = await queryResearchObject( + composeClient, + researchObject.streamID, + ` + contributors(first: 10) { + edges { + node { + id + } + } + } + ` ); + const expectedContribution = { node: { id: contribution.streamID } }; + expect((response as any).contributors.edges).toContainEqual(expectedContribution); + }); - const result = await queryResearchObject(composeClient, researchObject.streamID); - expect(result).toEqual({ ...data, metadata: newMetadata }); + test('found from profiles', async () => { + const contribution = await mutationCreateContributorRelation(composeClient, contributionData); + const response = await queryProfile( + composeClient, + user1Profile.streamID, + ` + contributions(first: 10) { + edges { + node { + id + } + } + } + ` + ); + const expectedContribution = { node: { id: contribution.streamID } }; + expect((response as any).contributions.edges).toContainEqual(expectedContribution); }); + }); - test('can update profile', async () => { - const profile = await mutationCreateProfile( + describe('Reference relations can be', async () => { + const composeClient = freshClient(); + const user1 = await randomDID(); + composeClient.setDID(user1); + + const researchObjectSource = await mutationCreateResearchObject( + composeClient, + { + title: 'Title', + manifest: A_CID + } + ); + + const researchObjectTarget = await mutationCreateResearchObject( + composeClient, + { + title: 'Title', + manifest: A_CID + } + ); + + const referenceData: ReferenceRelation = { + fromID: researchObjectSource.streamID, + fromVersion: researchObjectSource.commitID, + toID: researchObjectTarget.streamID, + toVersion: researchObjectTarget.commitID, + revoked: false + }; + + test('created', async () => { + const reference = await mutationCreateReferenceRelation(composeClient, referenceData); + const response = await queryReferenceRelation(composeClient, reference.streamID); + expect(response).toEqual(referenceData); + }); + + test('updated with revokation', async () => { + const reference = await mutationCreateReferenceRelation(composeClient, referenceData); + await mutationUpdateReferenceRelation(composeClient, { id: reference.streamID, revoked: true }); + const response = await queryReferenceRelation(composeClient, reference.streamID); + expect(response).toEqual({ ...referenceData, revoked: true }); + }); + + test('found from source research objects', async () => { + const reference = await mutationCreateReferenceRelation(composeClient, referenceData); + const response = await queryResearchObject( composeClient, - { - displayName: "My Name", - orcid: "@handle" - } + researchObjectSource.streamID, + ` + outgoingReferences(first: 10) { + edges { + node { + id + } + } + } + ` ); + const expectedReference = { node: { id: reference.streamID } }; + expect((response as any).outgoingReferences.edges).toContainEqual(expectedReference); + }); - const newProfile: Profile = { - displayName: "New Name", - orcid: "@handle" - }; - await waitAndSync(profile.streamID); - // Apparently create acts as an upsert on SINGLE accountRelation models - await mutationCreateProfile(composeClient, newProfile); + test('found from target research objects', async () => { + const reference = await mutationCreateReferenceRelation(composeClient, referenceData); + const response = await queryResearchObject( + composeClient, + researchObjectTarget.streamID, + ` + incomingReferences(first: 10) { + edges { + node { + id + } + } + } + ` + ); + const expectedReference = { node: { id: reference.streamID } }; + expect((response as any).incomingReferences.edges).toContainEqual(expectedReference); + }); + }); - const result = await queryProfile(composeClient, profile.streamID); - expect(result).toEqual(newProfile); + describe('Research field', async () => { + const composeClient = freshClient(); + const user1 = await randomDID(); + composeClient.setDID(user1); + + const researchObject = await mutationCreateResearchObject( + composeClient, + { + title: 'Title', + manifest: A_CID + } + ); + + test('can be created', async () => { + const field = await mutationCreateResearchField(composeClient, { title: "DeSci" }); + const response = await queryResearchFields(composeClient, field.streamID, 'id title'); + expect(response).toMatchObject({ title: 'DeSci', id: field.streamID }) }); + describe('relations', async () => { + test('can be created', async () => { + const field = await mutationCreateResearchField(composeClient, { title: "DeSci" }); + const relationData = { + fieldID: field.streamID, + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID + }; + const relation = await mutationCreateResearchFieldRelation( + composeClient, + relationData + ); + const response = await queryResearchFieldRelation(composeClient, relation.streamID); + expect(response).toMatchObject(relationData); + }); + + test('can be found from research object', async () => { + const field = await mutationCreateResearchField(composeClient, { title: "DeSci" }); + const relation = await mutationCreateResearchFieldRelation( + composeClient, + { + fieldID: field.streamID, + researchObjectID: researchObject.streamID, + researchObjectVersion: researchObject.commitID + } + ); + const response = await queryResearchObject( + composeClient, + researchObject.streamID, + ` + researchFields(first: 10) { + edges { + node { + id + } + } + } + ` + ); + const expectedRelation = { node: { id: relation.streamID }}; + expect((response as any).researchFields.edges).toContainEqual(expectedRelation); + }); + }); + }); + + describe.todo('Queries can find', async () => { + // Additional queries required to work }); describe('System', async () => { @@ -493,8 +832,9 @@ describe('ComposeDB nodes', () => { manifest: A_CID } ); - const timeBetween = Date.now(); - await waitAndSync(streamID); + const timeBetween = Math.floor(Date.now() / 1000); + // Encourage an anchor in between commits + await waitAndSync(streamID, 200); await mutationUpdateResearchObject( composeClient, { @@ -524,6 +864,7 @@ describe('ComposeDB nodes', () => { name: 'Filename', mimeType: 'text/plain', dagNode: A_CID, + pathToNode: "files/data.csv", researchObjectID: researchObjectV0.streamID, researchObjectVersion: researchObjectV0.commitID } @@ -567,8 +908,8 @@ describe('ComposeDB nodes', () => { await waitAndSync(streamID); const V1 = await mutationUpdateResearchObject( - composeClient, - { + composeClient, + { id: streamID, title: 'Title 1' } @@ -576,8 +917,8 @@ describe('ComposeDB nodes', () => { await waitAndSync(streamID); const V2 = await mutationUpdateResearchObject( - composeClient, - { + composeClient, + { id: streamID, title: 'Title 2' } @@ -609,8 +950,15 @@ const freshClient = () => /** Sync between fast updates to same streams to make tests less flaky, * also allowing for an anchor commit to pop in between */ -const waitAndSync = async (streamID: string) => { - await setTimeout(100); +const waitAndSync = async (streamID: string, timeout?: number) => { + await setTimeout(timeout || 100); const stream = await ceramic.loadStream(streamID); await stream.sync(); -}; \ No newline at end of file +}; + +const debugStream = async (streamID: string, message: string) => { + const stream = await ceramic.loadStream(streamID); + console.log(`*********** [START] ${message} ***********`); + console.log(`LOG:`, JSON.stringify(stream.state.log, undefined, 2)); + console.log(`*********** [END] ${message} ***********`) +} \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index 2903c06..6b5e795 100644 --- a/types/index.ts +++ b/types/index.ts @@ -12,26 +12,36 @@ export type DID = { export type ResearchObject = { id?: string version?: string + owner?: DID + title: string manifest: string + components?: ResearchComponent[] - metadata?: string - owner?: DID + + metadata?: string // CID }; export type ResearchComponent = { owner?: DID version?: string + name: string mimeType: string + dagNode: string + pathToNode: string + researchObjectID: string researchObjectVersion: string + + metadata?: string // CID }; export type Claim = { id?: string version?: string + title: string description: string badge?: string @@ -41,11 +51,14 @@ export type Attestation = { id?: string version?: string source?: DID + targetID: string targetVersion: string + claimID: string claimVersion: string claim?: Claim + revoked: boolean }; @@ -53,30 +66,48 @@ export type Annotation = { id?: string version?: string comment: string - path?: string - targetID: string - targetVersion: string + + researchObjectID: string + researchObject?: ResearchObject + researchObjectVersion: string + + targetID?: string + targetVersion?: string + + dagNode?: string // CID + pathToNode?: string + + locationOnFile?: string + claimID?: string claim?: Claim claimVersion?: string + metadataPayload?: string }; export type ContributorRelation = { id?: string role: string - // info + contributorID: string + researchObjectID: string researchObjectVersion: string + + revoked: Boolean }; export type ReferenceRelation = { id?: string + toID: string toVersion: string + fromID: string fromVersion: string + + revoked: Boolean }; export type ResearchField = { @@ -86,6 +117,7 @@ export type ResearchField = { export type ResearchFieldRelation = { id?: string fieldID: string + researchObjectID: string researchObjectVersion: string }; diff --git a/utils/populate.tsx b/utils/populate.tsx index 79817c0..b903ed5 100644 --- a/utils/populate.tsx +++ b/utils/populate.tsx @@ -187,7 +187,8 @@ const loadResearchObject = async ( { ...c, researchObjectID: researchObject.streamID, - researchObjectVersion: researchObject.commitID + researchObjectVersion: researchObject.commitID, + pathToNode: "." } ) ) @@ -210,7 +211,8 @@ const loadContributorRelation = async ( role, contributorID: contributor.streamID, researchObjectID: researchObject.streamID, - researchObjectVersion: researchObject.commitID + researchObjectVersion: researchObject.commitID, + revoked: false } ); }; @@ -229,7 +231,8 @@ const loadReferenceRelation = async ( toID: to.streamID, toVersion: to.commitID, fromID: from.streamID, - fromVersion: from.commitID + fromVersion: from.commitID, + revoked: false } ); }; diff --git a/utils/queries.ts b/utils/queries.ts index d6e7a8a..6725e09 100644 --- a/utils/queries.ts +++ b/utils/queries.ts @@ -146,33 +146,49 @@ export const queryResearchObjectAttestations = async ( return response.data!.node.attestations.edges.map(e => e.node) } +const RO_TYPE_MAP = { + title: "String!", + manifest: "InterPlanetaryCID!", + metadata: "InterPlanetaryCID" +}; + export const mutationCreateResearchObject = async ( composeClient: ComposeClient, inputs: ResearchObject ): Promise => genericCreate( composeClient, inputs, - { - title: "String!", - manifest: "InterPlanetaryCID!", - metadata: "String" - }, + RO_TYPE_MAP, 'createResearchObject' ); +export const mutationUpdateResearchObject = async ( + composeClient: ComposeClient, + inputs: Partial & { id: string } +): Promise => genericUpdate( + composeClient, + inputs, + makeAllOptional(RO_TYPE_MAP), + 'updateResearchObject' +); + +const COMPONENT_TYPE_MAP = { + name: "String!", + mimeType: "String!", + metadata: "InterPlanetaryCID", + dagNode: "InterPlanetaryCID!", + pathToNode: "String!", + researchObjectID: "CeramicStreamID!", + researchObjectVersion: "CeramicCommitID!" +}; + export const mutationCreateResearchComponent = async ( composeClient: ComposeClient, inputs: ResearchComponent ): Promise => genericCreate( composeClient, inputs, - { - name: "String!", - mimeType: "String!", - dagNode: "InterPlanetaryCID!", - researchObjectID: "CeramicStreamID!", - researchObjectVersion: "CeramicCommitID!" - }, + COMPONENT_TYPE_MAP, 'createResearchComponent' ); @@ -182,30 +198,10 @@ export const mutationUpdateResearchComponent = async ( ): Promise => genericUpdate( composeClient, inputs, - { - name: "String!", - mimeType: "String!", - dagNode: "InterPlanetaryCID!", - researchObjectID: "CeramicStreamID!", - researchObjectVersion: "CeramicCommitID!" - }, + makeAllOptional(COMPONENT_TYPE_MAP), 'updateResearchComponent' ); -export const mutationUpdateResearchObject = async ( - composeClient: ComposeClient, - inputs: Partial & { id: string } -): Promise => genericUpdate( - composeClient, - inputs, - { - manifest: "InterPlanetaryCID", - title: "String", - metadata: "String" - }, - 'updateResearchObject' -); - export const mutationCreateProfile = async ( composeClient: ComposeClient, inputs: Profile @@ -234,19 +230,21 @@ export const mutationCreateClaim = async ( 'createClaim' ); +const ATTESTATION_TYPE_MAP = { + targetID: "CeramicStreamID!", + targetVersion: "CeramicCommitID!", + claimID: "CeramicStreamID!", + claimVersion: "CeramicCommitID!", + revoked: "Boolean" +}; + export const mutationCreateAttestation = async ( composeClient: ComposeClient, inputs: Attestation ): Promise => genericCreate( composeClient, inputs, - { - targetID: "CeramicStreamID!", - targetVersion: "CeramicCommitID!", - claimID: "CeramicStreamID!", - claimVersion: "CeramicCommitID!", - revoked: "Boolean" - }, + ATTESTATION_TYPE_MAP, 'createAttestation' ); @@ -256,64 +254,99 @@ export const mutationUpdateAttestation = async ( ): Promise => genericUpdate( composeClient, inputs, - { - targetID: "CeramicStreamID!", - claimID: "CeramicStreamID!", - revoked: "Boolean" - }, + makeAllOptional(ATTESTATION_TYPE_MAP), 'updateAttestation' ); +const ANNOTATION_TYPE_MAP = { + comment: "String!", + researchObjectID: "CeramicStreamID!", + researchObjectVersion: "CeramicCommitID!", + targetID: "CeramicStreamID!", + targetVersion: "CeramicCommitID!", + dagNode: "InterPlanetaryCID", + pathToNode: "String", + locationOnFile: "String", + claimID: "CeramicStreamID", + claimVersion: "CeramicCommitID", + metadataPayload: "InterPlanetaryCID" +}; + export const mutationCreateAnnotation = async ( composeClient: ComposeClient, inputs: Annotation -): Promise => { - return genericCreate( +): Promise => genericCreate( composeClient, inputs, - { - comment: "String!", - path: "String", - metadataPayload: "String", - targetID: "CeramicStreamID!", - targetVersion: "CeramicCommitID!", - claimID: "CeramicStreamID", - claimVersion: "CeramicCommitID" - }, + ANNOTATION_TYPE_MAP, + 'createAnnotation' +); + +export const mutationUpdateAnnotation = async ( + composeClient: ComposeClient, + inputs: Partial & { id: string } +): Promise => genericCreate( + composeClient, + inputs, + makeAllOptional(ANNOTATION_TYPE_MAP), 'createAnnotation' ); -} +const CONTRIBUTOR_TYPE_MAP = { + role: "String!", + contributorID: "CeramicStreamID!", + researchObjectID: "CeramicStreamID!", + researchObjectVersion: "CeramicCommitID!", + revoked: "Boolean!" +}; export const mutationCreateContributorRelation = async ( composeClient: ComposeClient, inputs: ContributorRelation ): Promise => genericCreate( composeClient, inputs, - { - role: "String!", - contributorID: "CeramicStreamID!", - researchObjectID: "CeramicStreamID!", - researchObjectVersion: "CeramicCommitID!" - }, + CONTRIBUTOR_TYPE_MAP, 'createContributorRelation' ); +export const mutationUpdateContributorRelation = async ( + composeClient: ComposeClient, + inputs: Partial & { id: string } +): Promise => genericUpdate( + composeClient, + inputs, + makeAllOptional(CONTRIBUTOR_TYPE_MAP), + 'updateContributorRelation' +); + +const REFERENCE_TYPE_MAP = { + toID: "CeramicStreamID!", + toVersion: "CeramicCommitID!", + fromID: "CeramicStreamID!", + fromVersion: "CeramicCommitID!", + revoked: "Boolean!" +}; + export const mutationCreateReferenceRelation = async ( composeClient: ComposeClient, inputs: ReferenceRelation ): Promise => genericCreate( composeClient, inputs, - { - toID: "CeramicStreamID!", - toVersion: "CeramicCommitID!", - fromID: "CeramicStreamID!", - fromVersion: "CeramicCommitID!" - }, + REFERENCE_TYPE_MAP, 'createReferenceRelation' ); +export const mutationUpdateReferenceRelation = async ( + composeClient: ComposeClient, + inputs: Partial & { id: string } +): Promise => genericUpdate( + composeClient, + inputs, + makeAllOptional(REFERENCE_TYPE_MAP), + 'updateReferenceRelation' +); + export const mutationCreateResearchFieldRelation = async ( composeClient: ComposeClient, inputs: ResearchFieldRelation @@ -348,12 +381,12 @@ export const queryResearchObject = async ( composeClient, id, 'ResearchObject', - selection ?? - ` - title - manifest - metadata - ` + selection ?? + ` + title + manifest + metadata + ` ); export const queryProfile = async ( @@ -365,26 +398,26 @@ export const queryProfile = async ( id, 'Profile', selection ?? - ` - displayName - orcid - ` + ` + displayName + orcid + ` ); export const queryClaim = async ( composeClient: ComposeClient, id: string, selection?: string -): Promise => genericEntityQuery( +): Promise => genericEntityQuery( composeClient, id, 'Claim', selection ?? - ` - title - description - badge - ` + ` + title + description + badge + ` ); export const queryAttestation = async ( @@ -396,13 +429,13 @@ export const queryAttestation = async ( id, 'Attestation', selection ?? - ` - targetID - targetVersion - claimID - claimVersion - revoked - ` + ` + targetID + targetVersion + claimID + claimVersion + revoked + ` ); export const queryResearchComponent = async ( @@ -414,13 +447,15 @@ export const queryResearchComponent = async ( id, 'ResearchComponent', selection ?? - ` - name - mimeType - dagNode - researchObjectID - researchObjectVersion - ` + ` + name + mimeType + metadata + dagNode + pathToNode + researchObjectID + researchObjectVersion + ` ); export const queryAnnotation = async ( @@ -432,15 +467,82 @@ export const queryAnnotation = async ( id, 'Annotation', selection ?? - ` - comment - path - targetID - targetVersion - claimID - claimVersion - metadataPayload - ` + ` + comment + researchObjectID + researchObjectVersion + targetID + targetVersion + dagNode + pathToNode + locationOnFile + claimID + claimVersion + metadataPayload + ` +); + +export const queryContributorRelation = async ( + composeClient: ComposeClient, + id: string, + selection?: string +): Promise => genericEntityQuery( + composeClient, + id, + 'ContributorRelation', + selection ?? + ` + role + contributorID + researchObjectID + researchObjectVersion + revoked + ` +); + +export const queryReferenceRelation = async ( + composeClient: ComposeClient, + id: string, + selection?: string +): Promise => genericEntityQuery( + composeClient, + id, + 'ReferenceRelation', + selection ?? + ` + fromID + fromVersion + toID + toVersion + revoked + ` +); + +export const queryResearchFields = async ( + composeClient: ComposeClient, + id: string, + selection?: string +): Promise => genericEntityQuery( + composeClient, + id, + 'ResearchField', + selection ?? 'title' +); + +export const queryResearchFieldRelation = async ( + composeClient: ComposeClient, + id: string, + selection?: string +): Promise => genericEntityQuery( + composeClient, + id, + 'ResearchFieldRelation', + selection ?? + ` + fieldID + researchObjectID + researchObjectVersion + ` ); export async function genericEntityQuery( @@ -580,3 +682,8 @@ const getQueryFields = ( ], [[], []] ).map(stringArr => stringArr.join(', ')); + +const makeAllOptional = (typeMap: Record) => + Object.fromEntries( + Object.entries(typeMap).map(([k, v]) => ([k, v.replace('!', '')])) + ); \ No newline at end of file