diff --git a/MODULE.bazel b/MODULE.bazel
index 36417ca9d..40907021a 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -117,6 +117,7 @@ enola_maven.install(
"org.jsoup:jsoup:1.18.1",
"org.apache.tika:tika-core:3.0.0-BETA2",
"org.apache.tika:tika-parsers-standard-package:3.0.0-BETA2",
+ "com.github.ipld:java-cid:1.3.8",
],
# NB: Never de-activate duplicate_version_warning = "error"!
# While it can be tempting to resolve a build-time problem which
@@ -139,6 +140,8 @@ enola_maven.install(
repositories = [
# Override legacy default https://repo1.maven.org/maven2/
"https://repo.maven.apache.org/maven2/",
+ # Used by Multiformats, IPFS & IPLD
+ "https://jitpack.io",
],
)
use_repo(enola_maven, "enola_maven")
diff --git a/docs/use/fetch/index.md b/docs/use/fetch/index.md
index 08a7af021..46150f0d6 100644
--- a/docs/use/fetch/index.md
+++ b/docs/use/fetch/index.md
@@ -84,8 +84,8 @@ and then use `--ipfs-gateway="http://localhost:8080/ipfs/"` instead.
For initial testing you can specify one of the [public IPFS Gateways](https://ipfs.github.io/public-gateway-checker/)
(or "rent" one from a provider such as [Pinata](https://pinata.cloud/dedicated-ipfs-gateways) or [Infura](https://www.infura.io/product/ipfs) or [Cloudflare](https://www.cloudflare.com/application-services/products/web3/)).
-However, we do **NOT*** recommend using these for anything else than for illustration and initial testing,
-because this has the following disadvantages:
+However, we do **NOT** recommend using these for anything "real",
+because of the following disadvantages:
* Local Nodes make great local caches to improve Enola's performance
* Public gateways are likely to rate limit your HTTP requests and return 403 errors
diff --git a/java/dev/enola/common/io/BUILD b/java/dev/enola/common/io/BUILD
index ca4a8ea8c..5d2840e20 100644
--- a/java/dev/enola/common/io/BUILD
+++ b/java/dev/enola/common/io/BUILD
@@ -30,12 +30,15 @@ java_library(
"//java/dev/enola/common/context",
"//java/dev/enola/common/convert",
"//java/dev/enola/data",
+ # TODO Separate BUILD for IPFSResource
+ "@enola_maven//:com_github_ipld_java_cid",
"@enola_maven//:com_github_java_json_tools_uri_template",
"@enola_maven//:com_google_auto_service_auto_service_annotations",
"@enola_maven//:com_google_errorprone_error_prone_annotations",
"@enola_maven//:com_google_guava_guava",
+ # TODO Separate BUILD for OkHttpResource
"@enola_maven//:com_squareup_okhttp3_logging_interceptor",
- "@enola_maven//:com_squareup_okhttp3_okhttp", # TODO Separate library?
+ "@enola_maven//:com_squareup_okhttp3_okhttp",
"@enola_maven//:org_jspecify_jspecify",
"@enola_maven//:org_slf4j_slf4j_api",
],
@@ -51,6 +54,7 @@ junit_tests(
"//java/dev/enola/common/context/testlib",
"//java/dev/enola/common/protobuf",
"//test",
+ "@enola_maven//:com_github_ipld_java_cid",
"@enola_maven//:com_github_java_json_tools_uri_template",
"@enola_maven//:com_google_auto_service_auto_service_annotations",
"@enola_maven//:org_jspecify_jspecify",
diff --git a/java/dev/enola/common/io/resource/IPFSResource.java b/java/dev/enola/common/io/resource/IPFSResource.java
index 9d70e92b3..19a0377c0 100644
--- a/java/dev/enola/common/io/resource/IPFSResource.java
+++ b/java/dev/enola/common/io/resource/IPFSResource.java
@@ -21,22 +21,17 @@
import com.google.common.io.ByteSource;
import com.google.common.net.MediaType;
+import io.ipfs.cid.Cid;
+
import java.net.URI;
/**
* IPFS Resource. TODO:
*
*
- * - Support IPLD <=> Thing API bridge...
- *
- Existing? https://github.com/ipld/java-cid and
- * https://github.com/ipfs-shipyard/java-ipfs-http-client#dependencies
- * com.github.ipfs:java-ipfs-api, com.github.multiformats:java-multiaddr; cid.jar,
- * multibase.jar, multihash.jar ?
- *
- Get Thing and add https://cid.ipfs.tech -like technical debugging info?
- *
- Support CAR files?
+ *
- Support IPLD <=> Thing API bridge; see https://github.com/enola-dev/enola/issues/777.
*
- Support writing - via a WritableResource, or (probably) a separate API?
*
- Support ipns://
- *
- Detect IPFS in other links, using https://github.com/ipfs-shipyard/is-ipfs's algorithm
*
*/
public class IPFSResource extends BaseResource implements ReadableResource {
@@ -67,6 +62,8 @@ private static void check(URI uri, String gateway) {
if (!isIPFS(uri)) throw new IllegalArgumentException(uri.toString());
if (Strings.isNullOrEmpty(gateway))
throw new IllegalStateException("IPFS HTTP Gateway is required");
+ // Validate CID using parser from https://github.com/ipld/java-cid
+ Cid.decode(uri.getAuthority());
}
private final ReadableResource httpResource;
diff --git a/java/dev/enola/common/io/resource/IPFSResourceTest.java b/java/dev/enola/common/io/resource/IPFSResourceTest.java
index 978ca0ae5..a4feb3dba 100644
--- a/java/dev/enola/common/io/resource/IPFSResourceTest.java
+++ b/java/dev/enola/common/io/resource/IPFSResourceTest.java
@@ -28,6 +28,8 @@
import dev.enola.common.context.testlib.SingletonRule;
import dev.enola.common.io.mediatype.MediaTypeProviders;
+import io.ipfs.cid.Cid.CidEncodingException;
+
import org.junit.Rule;
import org.junit.Test;
@@ -50,7 +52,7 @@ public void hello() throws IOException {
}
@Test
- public void vanGough() throws IOException {
+ public void vanGogh() throws IOException {
var url =
"ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/wiki/Vincent_van_Gogh.html";
var r =
@@ -71,8 +73,15 @@ private ReadableResource resourceFromIPFS(String url) throws IOException {
return new IPFSResource(URI.create(url), httpResourceProvider, IPFS_GATEWAY);
}
- // TODO Test "ipfs:QmXV7pL1CB7A8Tzk7jP2XE9kRyk8HZd145KDptdxzmNLfu"
- // (without // ) and "ipfs:/QmXV7pL1CB7A8Tzk7jP2XE9kRyk8HZd145KDptdxzmNLfu" with a single
- // slash;
- // does it also need to support "ipfs:/ipfs/Qm...." ?
+ @Test(expected = IllegalArgumentException.class)
+ public void notIFPS() {
+ var url = "http://www.google.com";
+ new IPFSResource(URI.create(url), httpResourceProvider, IPFS_GATEWAY);
+ }
+
+ @Test(expected = CidEncodingException.class)
+ public void badCID() {
+ var url = "ipfs://bad";
+ new IPFSResource(URI.create(url), httpResourceProvider, IPFS_GATEWAY);
+ }
}
diff --git a/learn/jbang/hello.java b/learn/jbang/hello.java
index 49a0e4773..7297bb610 100644
--- a/learn/jbang/hello.java
+++ b/learn/jbang/hello.java
@@ -19,6 +19,7 @@
//JAVA 21+
//PREVIEW
//DEPS dev.enola:enola:0.0.1-SNAPSHOT
+//REPOS mavencentral,jitpack
import static java.lang.System.out;
diff --git a/maven_install.json b/maven_install.json
index 12ef253a5..9a2945b3c 100644
--- a/maven_install.json
+++ b/maven_install.json
@@ -1,7 +1,7 @@
{
"__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
- "__INPUT_ARTIFACTS_HASH": 2008296772,
- "__RESOLVED_ARTIFACTS_HASH": 642002534,
+ "__INPUT_ARTIFACTS_HASH": 254086413,
+ "__RESOLVED_ARTIFACTS_HASH": -1820843477,
"conflict_resolution": {
"com.fasterxml.jackson.core:jackson-databind:2.13.5": "com.fasterxml.jackson.core:jackson-databind:2.17.2"
},
@@ -69,6 +69,13 @@
},
"version": "2.5.0"
},
+ "com.github.ipld:java-cid": {
+ "shasums": {
+ "jar": "8904dd42a363f383679ffea9cfe1d907370596541ca87e832c191080c8fbbfa8",
+ "sources": "b69eb1b08766b06e37efef7f0ded0df84e00df8f4143b133b85532318d2e6091"
+ },
+ "version": "1.3.8"
+ },
"com.github.jai-imageio:jai-imageio-core": {
"shasums": {
"jar": "8ad3c68e9efffb10ac87ff8bc589adf64b04a729c5194c079efd0643607fd72a",
@@ -111,6 +118,20 @@
},
"version": "7.5.5"
},
+ "com.github.multiformats:java-multibase": {
+ "shasums": {
+ "jar": "0d7bc5ac1d173c29a1b16a50fe770986d12fca2f72a769822229ff04d07e5020",
+ "sources": "57a8371f2f248446f43eedaf522aca52d03e1fdd8b2b97a803743047b71fcb73"
+ },
+ "version": "v1.1.1"
+ },
+ "com.github.multiformats:java-multihash": {
+ "shasums": {
+ "jar": "0ebd9fd4b17a698507da6bb1105d6170dedeb21b0e81dea5579d2ab06957e5b1",
+ "sources": "d73fb293d9daecab3f191dbfd929523e98aebc43271ed0486a838704943f994c"
+ },
+ "version": "v1.3.4"
+ },
"com.github.spotbugs:spotbugs-annotations": {
"shasums": {
"jar": "4548b74a815ed44f5480ca4f06204a8b00809dc7e5f6a825a9edf18f40377b65",
@@ -1386,6 +1407,9 @@
"com.fasterxml.jackson.core:jackson-core",
"com.fasterxml.jackson.core:jackson-databind"
],
+ "com.github.ipld:java-cid": [
+ "com.github.multiformats:java-multihash"
+ ],
"com.github.java-json-tools:btf": [
"com.google.code.findbugs:jsr305"
],
@@ -1401,6 +1425,9 @@
"com.github.junrar:junrar": [
"org.slf4j:slf4j-api"
],
+ "com.github.multiformats:java-multihash": [
+ "com.github.multiformats:java-multibase"
+ ],
"com.github.spotbugs:spotbugs-annotations": [
"com.google.code.findbugs:jsr305"
],
@@ -2157,6 +2184,9 @@
"org.mozilla.universalchardet.prober.sequence",
"org.mozilla.universalchardet.prober.statemachine"
],
+ "com.github.ipld:java-cid": [
+ "io.ipfs.cid"
+ ],
"com.github.jai-imageio:jai-imageio-core": [
"com.github.jaiimageio.impl.common",
"com.github.jaiimageio.impl.plugins.bmp",
@@ -2233,6 +2263,13 @@
"com.github.junrar.unsigned",
"com.github.junrar.volume"
],
+ "com.github.multiformats:java-multibase": [
+ "io.ipfs.multibase",
+ "io.ipfs.multibase.binary"
+ ],
+ "com.github.multiformats:java-multihash": [
+ "io.ipfs.multihash"
+ ],
"com.github.spotbugs:spotbugs-annotations": [
"edu.umd.cs.findbugs.annotations"
],
@@ -4270,6 +4307,401 @@
"com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:sources",
"com.github.albfernandez:juniversalchardet",
"com.github.albfernandez:juniversalchardet:jar:sources",
+ "com.github.ipld:java-cid",
+ "com.github.ipld:java-cid:jar:sources",
+ "com.github.jai-imageio:jai-imageio-core",
+ "com.github.jai-imageio:jai-imageio-core:jar:sources",
+ "com.github.java-json-tools:btf",
+ "com.github.java-json-tools:btf:jar:sources",
+ "com.github.java-json-tools:msg-simple",
+ "com.github.java-json-tools:msg-simple:jar:sources",
+ "com.github.java-json-tools:uri-template",
+ "com.github.java-json-tools:uri-template:jar:sources",
+ "com.github.jsonld-java:jsonld-java",
+ "com.github.jsonld-java:jsonld-java:jar:sources",
+ "com.github.junrar:junrar",
+ "com.github.junrar:junrar:jar:sources",
+ "com.github.multiformats:java-multibase",
+ "com.github.multiformats:java-multibase:jar:sources",
+ "com.github.multiformats:java-multihash",
+ "com.github.multiformats:java-multihash:jar:sources",
+ "com.github.spotbugs:spotbugs-annotations",
+ "com.github.spotbugs:spotbugs-annotations:jar:sources",
+ "com.github.virtuald:curvesapi",
+ "com.github.virtuald:curvesapi:jar:sources",
+ "com.google.android:annotations",
+ "com.google.android:annotations:jar:sources",
+ "com.google.api.grpc:grpc-google-cloud-pubsub-v1",
+ "com.google.api.grpc:grpc-google-cloud-pubsub-v1:jar:sources",
+ "com.google.api.grpc:proto-google-cloud-pubsub-v1",
+ "com.google.api.grpc:proto-google-cloud-pubsub-v1:jar:sources",
+ "com.google.api.grpc:proto-google-common-protos",
+ "com.google.api.grpc:proto-google-common-protos:jar:sources",
+ "com.google.api.grpc:proto-google-iam-v1",
+ "com.google.api.grpc:proto-google-iam-v1:jar:sources",
+ "com.google.api:api-common",
+ "com.google.api:api-common:jar:sources",
+ "com.google.auto.service:auto-service",
+ "com.google.auto.service:auto-service-annotations",
+ "com.google.auto.service:auto-service-annotations:jar:sources",
+ "com.google.auto.service:auto-service:jar:sources",
+ "com.google.auto.value:auto-value",
+ "com.google.auto.value:auto-value-annotations",
+ "com.google.auto.value:auto-value-annotations:jar:sources",
+ "com.google.auto.value:auto-value:jar:sources",
+ "com.google.auto:auto-common",
+ "com.google.auto:auto-common:jar:sources",
+ "com.google.code.findbugs:jsr305",
+ "com.google.code.findbugs:jsr305:jar:sources",
+ "com.google.code.gson:gson",
+ "com.google.code.gson:gson:jar:sources",
+ "com.google.errorprone:error_prone_annotations",
+ "com.google.errorprone:error_prone_annotations:jar:sources",
+ "com.google.errorprone:error_prone_type_annotations",
+ "com.google.errorprone:error_prone_type_annotations:jar:sources",
+ "com.google.guava:failureaccess",
+ "com.google.guava:failureaccess:jar:sources",
+ "com.google.guava:guava",
+ "com.google.guava:guava:jar:sources",
+ "com.google.guava:listenablefuture",
+ "com.google.j2objc:j2objc-annotations",
+ "com.google.j2objc:j2objc-annotations:jar:sources",
+ "com.google.jimfs:jimfs",
+ "com.google.jimfs:jimfs:jar:sources",
+ "com.google.protobuf:protobuf-java",
+ "com.google.protobuf:protobuf-java-util",
+ "com.google.protobuf:protobuf-java-util:jar:sources",
+ "com.google.protobuf:protobuf-java:jar:sources",
+ "com.google.truth.extensions:truth-java8-extension",
+ "com.google.truth.extensions:truth-java8-extension:jar:sources",
+ "com.google.truth.extensions:truth-liteproto-extension",
+ "com.google.truth.extensions:truth-liteproto-extension:jar:sources",
+ "com.google.truth.extensions:truth-proto-extension",
+ "com.google.truth.extensions:truth-proto-extension:jar:sources",
+ "com.google.truth:truth",
+ "com.google.truth:truth:jar:sources",
+ "com.googlecode.plist:dd-plist",
+ "com.googlecode.plist:dd-plist:jar:sources",
+ "com.healthmarketscience.jackcess:jackcess",
+ "com.healthmarketscience.jackcess:jackcess-encrypt",
+ "com.healthmarketscience.jackcess:jackcess-encrypt:jar:sources",
+ "com.healthmarketscience.jackcess:jackcess:jar:sources",
+ "com.pff:java-libpst",
+ "com.pff:java-libpst:jar:sources",
+ "com.rometools:rome",
+ "com.rometools:rome:jar:sources",
+ "com.squareup.okhttp3:logging-interceptor",
+ "com.squareup.okhttp3:logging-interceptor:jar:sources",
+ "com.squareup.okhttp3:okhttp",
+ "com.squareup.okhttp3:okhttp:jar:sources",
+ "com.squareup.okio:okio",
+ "com.squareup.okio:okio-jvm",
+ "com.squareup.okio:okio-jvm:jar:sources",
+ "com.squareup.okio:okio:jar:sources",
+ "com.sun.istack:istack-commons-runtime",
+ "com.sun.istack:istack-commons-runtime:jar:sources",
+ "com.zaxxer:SparseBitSet",
+ "com.zaxxer:SparseBitSet:jar:sources",
+ "commons-codec:commons-codec",
+ "commons-codec:commons-codec:jar:sources",
+ "commons-io:commons-io",
+ "commons-io:commons-io:jar:sources",
+ "dev.dirs:directories",
+ "dev.dirs:directories:jar:sources",
+ "info.picocli:picocli",
+ "info.picocli:picocli:jar:sources",
+ "io.github.amithkoujalgi:ollama4j",
+ "io.github.amithkoujalgi:ollama4j:jar:sources",
+ "io.github.classgraph:classgraph",
+ "io.github.classgraph:classgraph:jar:sources",
+ "io.github.java-diff-utils:java-diff-utils",
+ "io.github.java-diff-utils:java-diff-utils:jar:sources",
+ "io.grpc:grpc-api",
+ "io.grpc:grpc-api:jar:sources",
+ "io.grpc:grpc-context",
+ "io.grpc:grpc-context:jar:sources",
+ "io.grpc:grpc-core",
+ "io.grpc:grpc-core:jar:sources",
+ "io.grpc:grpc-inprocess",
+ "io.grpc:grpc-inprocess:jar:sources",
+ "io.grpc:grpc-netty",
+ "io.grpc:grpc-netty:jar:sources",
+ "io.grpc:grpc-protobuf",
+ "io.grpc:grpc-protobuf-lite",
+ "io.grpc:grpc-protobuf-lite:jar:sources",
+ "io.grpc:grpc-protobuf:jar:sources",
+ "io.grpc:grpc-stub",
+ "io.grpc:grpc-stub:jar:sources",
+ "io.grpc:grpc-util",
+ "io.grpc:grpc-util:jar:sources",
+ "io.gsonfire:gson-fire",
+ "io.gsonfire:gson-fire:jar:sources",
+ "io.kubernetes:client-java",
+ "io.kubernetes:client-java-api",
+ "io.kubernetes:client-java-api:jar:sources",
+ "io.kubernetes:client-java-proto",
+ "io.kubernetes:client-java-proto:jar:sources",
+ "io.kubernetes:client-java:jar:sources",
+ "io.netty:netty-buffer",
+ "io.netty:netty-buffer:jar:sources",
+ "io.netty:netty-codec",
+ "io.netty:netty-codec-http",
+ "io.netty:netty-codec-http2",
+ "io.netty:netty-codec-http2:jar:sources",
+ "io.netty:netty-codec-http:jar:sources",
+ "io.netty:netty-codec-socks",
+ "io.netty:netty-codec-socks:jar:sources",
+ "io.netty:netty-codec:jar:sources",
+ "io.netty:netty-common",
+ "io.netty:netty-common:jar:sources",
+ "io.netty:netty-handler",
+ "io.netty:netty-handler-proxy",
+ "io.netty:netty-handler-proxy:jar:sources",
+ "io.netty:netty-handler:jar:sources",
+ "io.netty:netty-resolver",
+ "io.netty:netty-resolver:jar:sources",
+ "io.netty:netty-transport",
+ "io.netty:netty-transport-native-unix-common",
+ "io.netty:netty-transport-native-unix-common:jar:sources",
+ "io.netty:netty-transport:jar:sources",
+ "io.perfmark:perfmark-api",
+ "io.perfmark:perfmark-api:jar:sources",
+ "io.swagger:swagger-annotations",
+ "io.swagger:swagger-annotations:jar:sources",
+ "jakarta.activation:jakarta.activation-api",
+ "jakarta.activation:jakarta.activation-api:jar:sources",
+ "jakarta.json:jakarta.json-api",
+ "jakarta.json:jakarta.json-api:jar:sources",
+ "jakarta.xml.bind:jakarta.xml.bind-api",
+ "jakarta.xml.bind:jakarta.xml.bind-api:jar:sources",
+ "javax.annotation:javax.annotation-api",
+ "javax.annotation:javax.annotation-api:jar:sources",
+ "junit:junit",
+ "junit:junit:jar:sources",
+ "no.hasmac:hasmac-json-ld",
+ "no.hasmac:hasmac-json-ld:jar:sources",
+ "org.apache.commons:commons-collections4",
+ "org.apache.commons:commons-collections4:jar:sources",
+ "org.apache.commons:commons-compress",
+ "org.apache.commons:commons-compress:jar:sources",
+ "org.apache.commons:commons-csv",
+ "org.apache.commons:commons-csv:jar:sources",
+ "org.apache.commons:commons-exec",
+ "org.apache.commons:commons-exec:jar:sources",
+ "org.apache.commons:commons-lang3",
+ "org.apache.commons:commons-lang3:jar:sources",
+ "org.apache.commons:commons-math3",
+ "org.apache.commons:commons-math3:jar:sources",
+ "org.apache.httpcomponents:httpclient",
+ "org.apache.httpcomponents:httpclient-cache",
+ "org.apache.httpcomponents:httpclient-cache:jar:sources",
+ "org.apache.httpcomponents:httpclient:jar:sources",
+ "org.apache.httpcomponents:httpcore",
+ "org.apache.httpcomponents:httpcore:jar:sources",
+ "org.apache.james:apache-mime4j-core",
+ "org.apache.james:apache-mime4j-core:jar:sources",
+ "org.apache.james:apache-mime4j-dom",
+ "org.apache.james:apache-mime4j-dom:jar:sources",
+ "org.apache.logging.log4j:log4j-api",
+ "org.apache.logging.log4j:log4j-api:jar:sources",
+ "org.apache.logging.log4j:log4j-to-jul",
+ "org.apache.logging.log4j:log4j-to-jul:jar:sources",
+ "org.apache.pdfbox:fontbox",
+ "org.apache.pdfbox:fontbox:jar:sources",
+ "org.apache.pdfbox:jbig2-imageio",
+ "org.apache.pdfbox:jbig2-imageio:jar:sources",
+ "org.apache.pdfbox:jempbox",
+ "org.apache.pdfbox:jempbox:jar:sources",
+ "org.apache.pdfbox:pdfbox",
+ "org.apache.pdfbox:pdfbox-io",
+ "org.apache.pdfbox:pdfbox-io:jar:sources",
+ "org.apache.pdfbox:pdfbox-tools",
+ "org.apache.pdfbox:pdfbox-tools:jar:sources",
+ "org.apache.pdfbox:pdfbox:jar:sources",
+ "org.apache.pdfbox:xmpbox",
+ "org.apache.pdfbox:xmpbox:jar:sources",
+ "org.apache.poi:poi",
+ "org.apache.poi:poi-ooxml",
+ "org.apache.poi:poi-ooxml-lite",
+ "org.apache.poi:poi-ooxml-lite:jar:sources",
+ "org.apache.poi:poi-ooxml:jar:sources",
+ "org.apache.poi:poi-scratchpad",
+ "org.apache.poi:poi-scratchpad:jar:sources",
+ "org.apache.poi:poi:jar:sources",
+ "org.apache.tika:tika-core",
+ "org.apache.tika:tika-core:jar:sources",
+ "org.apache.tika:tika-parser-apple-module",
+ "org.apache.tika:tika-parser-apple-module:jar:sources",
+ "org.apache.tika:tika-parser-audiovideo-module",
+ "org.apache.tika:tika-parser-audiovideo-module:jar:sources",
+ "org.apache.tika:tika-parser-cad-module",
+ "org.apache.tika:tika-parser-cad-module:jar:sources",
+ "org.apache.tika:tika-parser-code-module",
+ "org.apache.tika:tika-parser-code-module:jar:sources",
+ "org.apache.tika:tika-parser-crypto-module",
+ "org.apache.tika:tika-parser-crypto-module:jar:sources",
+ "org.apache.tika:tika-parser-digest-commons",
+ "org.apache.tika:tika-parser-digest-commons:jar:sources",
+ "org.apache.tika:tika-parser-font-module",
+ "org.apache.tika:tika-parser-font-module:jar:sources",
+ "org.apache.tika:tika-parser-html-module",
+ "org.apache.tika:tika-parser-html-module:jar:sources",
+ "org.apache.tika:tika-parser-image-module",
+ "org.apache.tika:tika-parser-image-module:jar:sources",
+ "org.apache.tika:tika-parser-mail-commons",
+ "org.apache.tika:tika-parser-mail-commons:jar:sources",
+ "org.apache.tika:tika-parser-mail-module",
+ "org.apache.tika:tika-parser-mail-module:jar:sources",
+ "org.apache.tika:tika-parser-microsoft-module",
+ "org.apache.tika:tika-parser-microsoft-module:jar:sources",
+ "org.apache.tika:tika-parser-miscoffice-module",
+ "org.apache.tika:tika-parser-miscoffice-module:jar:sources",
+ "org.apache.tika:tika-parser-news-module",
+ "org.apache.tika:tika-parser-news-module:jar:sources",
+ "org.apache.tika:tika-parser-ocr-module",
+ "org.apache.tika:tika-parser-ocr-module:jar:sources",
+ "org.apache.tika:tika-parser-pdf-module",
+ "org.apache.tika:tika-parser-pdf-module:jar:sources",
+ "org.apache.tika:tika-parser-pkg-module",
+ "org.apache.tika:tika-parser-pkg-module:jar:sources",
+ "org.apache.tika:tika-parser-text-module",
+ "org.apache.tika:tika-parser-text-module:jar:sources",
+ "org.apache.tika:tika-parser-webarchive-module",
+ "org.apache.tika:tika-parser-webarchive-module:jar:sources",
+ "org.apache.tika:tika-parser-xml-module",
+ "org.apache.tika:tika-parser-xml-module:jar:sources",
+ "org.apache.tika:tika-parser-xmp-commons",
+ "org.apache.tika:tika-parser-xmp-commons:jar:sources",
+ "org.apache.tika:tika-parser-zip-commons",
+ "org.apache.tika:tika-parser-zip-commons:jar:sources",
+ "org.apache.tika:tika-parsers-standard-package",
+ "org.apache.tika:tika-parsers-standard-package:jar:sources",
+ "org.apache.tomcat:annotations-api",
+ "org.apache.xmlbeans:xmlbeans",
+ "org.apache.xmlbeans:xmlbeans:jar:sources",
+ "org.bitbucket.b_c:jose4j",
+ "org.bitbucket.b_c:jose4j:jar:sources",
+ "org.bouncycastle:bcjmail-jdk18on",
+ "org.bouncycastle:bcjmail-jdk18on:jar:sources",
+ "org.bouncycastle:bcpkix-jdk18on",
+ "org.bouncycastle:bcpkix-jdk18on:jar:sources",
+ "org.bouncycastle:bcprov-jdk18on",
+ "org.bouncycastle:bcprov-jdk18on:jar:sources",
+ "org.bouncycastle:bcutil-jdk18on",
+ "org.bouncycastle:bcutil-jdk18on:jar:sources",
+ "org.brotli:dec",
+ "org.brotli:dec:jar:sources",
+ "org.ccil.cowan.tagsoup:tagsoup",
+ "org.ccil.cowan.tagsoup:tagsoup:jar:sources",
+ "org.checkerframework:checker-qual",
+ "org.checkerframework:checker-qual:jar:sources",
+ "org.codehaus.mojo:animal-sniffer-annotations",
+ "org.codehaus.mojo:animal-sniffer-annotations:jar:sources",
+ "org.codelibs:jhighlight",
+ "org.codelibs:jhighlight:jar:sources",
+ "org.eclipse.angus:angus-activation",
+ "org.eclipse.angus:angus-activation:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-common-annotation",
+ "org.eclipse.rdf4j:rdf4j-common-annotation:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-common-exception",
+ "org.eclipse.rdf4j:rdf4j-common-exception:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-common-io",
+ "org.eclipse.rdf4j:rdf4j-common-io:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-common-iterator",
+ "org.eclipse.rdf4j:rdf4j-common-iterator:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-common-order",
+ "org.eclipse.rdf4j:rdf4j-common-order:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-common-text",
+ "org.eclipse.rdf4j:rdf4j-common-text:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-common-xml",
+ "org.eclipse.rdf4j:rdf4j-common-xml:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-model",
+ "org.eclipse.rdf4j:rdf4j-model-api",
+ "org.eclipse.rdf4j:rdf4j-model-api:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-model-vocabulary",
+ "org.eclipse.rdf4j:rdf4j-model-vocabulary:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-model:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-rio-api",
+ "org.eclipse.rdf4j:rdf4j-rio-api:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-rio-datatypes",
+ "org.eclipse.rdf4j:rdf4j-rio-datatypes:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-rio-jsonld",
+ "org.eclipse.rdf4j:rdf4j-rio-jsonld:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-rio-languages",
+ "org.eclipse.rdf4j:rdf4j-rio-languages:jar:sources",
+ "org.eclipse.rdf4j:rdf4j-rio-turtle",
+ "org.eclipse.rdf4j:rdf4j-rio-turtle:jar:sources",
+ "org.gagravarr:vorbis-java-core",
+ "org.gagravarr:vorbis-java-core:jar:sources",
+ "org.gagravarr:vorbis-java-tika",
+ "org.gagravarr:vorbis-java-tika:jar:sources",
+ "org.glassfish.jaxb:jaxb-core",
+ "org.glassfish.jaxb:jaxb-core:jar:sources",
+ "org.glassfish.jaxb:jaxb-runtime",
+ "org.glassfish.jaxb:jaxb-runtime:jar:sources",
+ "org.glassfish.jaxb:txw2",
+ "org.glassfish.jaxb:txw2:jar:sources",
+ "org.glassfish:jakarta.json",
+ "org.glassfish:jakarta.json:jar:sources",
+ "org.hamcrest:hamcrest-core",
+ "org.hamcrest:hamcrest-core:jar:sources",
+ "org.jdom:jdom2",
+ "org.jdom:jdom2:jar:sources",
+ "org.jetbrains.kotlin:kotlin-stdlib",
+ "org.jetbrains.kotlin:kotlin-stdlib-common",
+ "org.jetbrains.kotlin:kotlin-stdlib-common:jar:sources",
+ "org.jetbrains.kotlin:kotlin-stdlib-jdk7",
+ "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources",
+ "org.jetbrains.kotlin:kotlin-stdlib-jdk8",
+ "org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:sources",
+ "org.jetbrains.kotlin:kotlin-stdlib:jar:sources",
+ "org.jetbrains:annotations",
+ "org.jetbrains:annotations:jar:sources",
+ "org.jsoup:jsoup",
+ "org.jsoup:jsoup:jar:sources",
+ "org.jspecify:jspecify",
+ "org.jspecify:jspecify:jar:sources",
+ "org.netpreserve:jwarc",
+ "org.netpreserve:jwarc:jar:sources",
+ "org.ow2.asm:asm",
+ "org.ow2.asm:asm:jar:sources",
+ "org.slf4j:jcl-over-slf4j",
+ "org.slf4j:jcl-over-slf4j:jar:sources",
+ "org.slf4j:slf4j-api",
+ "org.slf4j:slf4j-api:jar:sources",
+ "org.slf4j:slf4j-jdk14",
+ "org.slf4j:slf4j-jdk14:jar:sources",
+ "org.slf4j:slf4j-simple",
+ "org.slf4j:slf4j-simple:jar:sources",
+ "org.snakeyaml:snakeyaml-engine",
+ "org.snakeyaml:snakeyaml-engine:jar:sources",
+ "org.tallison:jmatio",
+ "org.tallison:jmatio:jar:sources",
+ "org.tukaani:xz",
+ "org.tukaani:xz:jar:sources",
+ "org.yaml:snakeyaml",
+ "org.yaml:snakeyaml:jar:sources"
+ ],
+ "https://jitpack.io/": [
+ "ch.vorburger.exec:exec",
+ "ch.vorburger.exec:exec:jar:sources",
+ "com.adobe.xmp:xmpcore",
+ "com.drewnoakes:metadata-extractor",
+ "com.drewnoakes:metadata-extractor:jar:sources",
+ "com.epam:parso",
+ "com.epam:parso:jar:sources",
+ "com.fasterxml.jackson.core:jackson-annotations",
+ "com.fasterxml.jackson.core:jackson-annotations:jar:sources",
+ "com.fasterxml.jackson.core:jackson-core",
+ "com.fasterxml.jackson.core:jackson-core:jar:sources",
+ "com.fasterxml.jackson.core:jackson-databind",
+ "com.fasterxml.jackson.core:jackson-databind:jar:sources",
+ "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
+ "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:sources",
+ "com.github.albfernandez:juniversalchardet",
+ "com.github.albfernandez:juniversalchardet:jar:sources",
+ "com.github.ipld:java-cid",
+ "com.github.ipld:java-cid:jar:sources",
"com.github.jai-imageio:jai-imageio-core",
"com.github.jai-imageio:jai-imageio-core:jar:sources",
"com.github.java-json-tools:btf",
@@ -4282,6 +4714,10 @@
"com.github.jsonld-java:jsonld-java:jar:sources",
"com.github.junrar:junrar",
"com.github.junrar:junrar:jar:sources",
+ "com.github.multiformats:java-multibase",
+ "com.github.multiformats:java-multibase:jar:sources",
+ "com.github.multiformats:java-multihash",
+ "com.github.multiformats:java-multihash:jar:sources",
"com.github.spotbugs:spotbugs-annotations",
"com.github.spotbugs:spotbugs-annotations:jar:sources",
"com.github.virtuald:curvesapi",