@enbox/gitd 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +177 -0
- package/README.md +134 -0
- package/dist/esm/ci.js +76 -0
- package/dist/esm/ci.js.map +1 -0
- package/dist/esm/cli/agent.js +86 -0
- package/dist/esm/cli/agent.js.map +1 -0
- package/dist/esm/cli/commands/ci.js +278 -0
- package/dist/esm/cli/commands/ci.js.map +1 -0
- package/dist/esm/cli/commands/clone.js +77 -0
- package/dist/esm/cli/commands/clone.js.map +1 -0
- package/dist/esm/cli/commands/daemon.js +132 -0
- package/dist/esm/cli/commands/daemon.js.map +1 -0
- package/dist/esm/cli/commands/github-api.js +36 -0
- package/dist/esm/cli/commands/github-api.js.map +1 -0
- package/dist/esm/cli/commands/init.js +69 -0
- package/dist/esm/cli/commands/init.js.map +1 -0
- package/dist/esm/cli/commands/issue.js +293 -0
- package/dist/esm/cli/commands/issue.js.map +1 -0
- package/dist/esm/cli/commands/log.js +90 -0
- package/dist/esm/cli/commands/log.js.map +1 -0
- package/dist/esm/cli/commands/migrate.js +444 -0
- package/dist/esm/cli/commands/migrate.js.map +1 -0
- package/dist/esm/cli/commands/notification.js +141 -0
- package/dist/esm/cli/commands/notification.js.map +1 -0
- package/dist/esm/cli/commands/org.js +353 -0
- package/dist/esm/cli/commands/org.js.map +1 -0
- package/dist/esm/cli/commands/patch.js +375 -0
- package/dist/esm/cli/commands/patch.js.map +1 -0
- package/dist/esm/cli/commands/registry.js +501 -0
- package/dist/esm/cli/commands/registry.js.map +1 -0
- package/dist/esm/cli/commands/release.js +197 -0
- package/dist/esm/cli/commands/release.js.map +1 -0
- package/dist/esm/cli/commands/repo.js +148 -0
- package/dist/esm/cli/commands/repo.js.map +1 -0
- package/dist/esm/cli/commands/serve.js +148 -0
- package/dist/esm/cli/commands/serve.js.map +1 -0
- package/dist/esm/cli/commands/setup.js +92 -0
- package/dist/esm/cli/commands/setup.js.map +1 -0
- package/dist/esm/cli/commands/shim.js +75 -0
- package/dist/esm/cli/commands/shim.js.map +1 -0
- package/dist/esm/cli/commands/social.js +206 -0
- package/dist/esm/cli/commands/social.js.map +1 -0
- package/dist/esm/cli/commands/web.js +36 -0
- package/dist/esm/cli/commands/web.js.map +1 -0
- package/dist/esm/cli/commands/wiki.js +185 -0
- package/dist/esm/cli/commands/wiki.js.map +1 -0
- package/dist/esm/cli/flags.js +29 -0
- package/dist/esm/cli/flags.js.map +1 -0
- package/dist/esm/cli/main.js +331 -0
- package/dist/esm/cli/main.js.map +1 -0
- package/dist/esm/cli/repo-context.js +53 -0
- package/dist/esm/cli/repo-context.js.map +1 -0
- package/dist/esm/daemon/adapter.js +18 -0
- package/dist/esm/daemon/adapter.js.map +1 -0
- package/dist/esm/daemon/adapters/github.js +112 -0
- package/dist/esm/daemon/adapters/github.js.map +1 -0
- package/dist/esm/daemon/adapters/go.js +51 -0
- package/dist/esm/daemon/adapters/go.js.map +1 -0
- package/dist/esm/daemon/adapters/index.js +32 -0
- package/dist/esm/daemon/adapters/index.js.map +1 -0
- package/dist/esm/daemon/adapters/npm.js +51 -0
- package/dist/esm/daemon/adapters/npm.js.map +1 -0
- package/dist/esm/daemon/adapters/oci.js +62 -0
- package/dist/esm/daemon/adapters/oci.js.map +1 -0
- package/dist/esm/daemon/index.js +12 -0
- package/dist/esm/daemon/index.js.map +1 -0
- package/dist/esm/daemon/server.js +167 -0
- package/dist/esm/daemon/server.js.map +1 -0
- package/dist/esm/git-remote/credential-helper.js +106 -0
- package/dist/esm/git-remote/credential-helper.js.map +1 -0
- package/dist/esm/git-remote/credential-main.js +109 -0
- package/dist/esm/git-remote/credential-main.js.map +1 -0
- package/dist/esm/git-remote/index.js +10 -0
- package/dist/esm/git-remote/index.js.map +1 -0
- package/dist/esm/git-remote/main.js +78 -0
- package/dist/esm/git-remote/main.js.map +1 -0
- package/dist/esm/git-remote/parse-url.js +60 -0
- package/dist/esm/git-remote/parse-url.js.map +1 -0
- package/dist/esm/git-remote/resolve.js +175 -0
- package/dist/esm/git-remote/resolve.js.map +1 -0
- package/dist/esm/git-remote/service.js +82 -0
- package/dist/esm/git-remote/service.js.map +1 -0
- package/dist/esm/git-server/auth.js +211 -0
- package/dist/esm/git-server/auth.js.map +1 -0
- package/dist/esm/git-server/bundle-restore.js +180 -0
- package/dist/esm/git-server/bundle-restore.js.map +1 -0
- package/dist/esm/git-server/bundle-sync.js +233 -0
- package/dist/esm/git-server/bundle-sync.js.map +1 -0
- package/dist/esm/git-server/did-service.js +73 -0
- package/dist/esm/git-server/did-service.js.map +1 -0
- package/dist/esm/git-server/git-backend.js +186 -0
- package/dist/esm/git-server/git-backend.js.map +1 -0
- package/dist/esm/git-server/http-handler.js +295 -0
- package/dist/esm/git-server/http-handler.js.map +1 -0
- package/dist/esm/git-server/index.js +16 -0
- package/dist/esm/git-server/index.js.map +1 -0
- package/dist/esm/git-server/push-authorizer.js +62 -0
- package/dist/esm/git-server/push-authorizer.js.map +1 -0
- package/dist/esm/git-server/ref-sync.js +132 -0
- package/dist/esm/git-server/ref-sync.js.map +1 -0
- package/dist/esm/git-server/server.js +185 -0
- package/dist/esm/git-server/server.js.map +1 -0
- package/dist/esm/git-server/verify.js +109 -0
- package/dist/esm/git-server/verify.js.map +1 -0
- package/dist/esm/github-shim/helpers.js +273 -0
- package/dist/esm/github-shim/helpers.js.map +1 -0
- package/dist/esm/github-shim/index.js +13 -0
- package/dist/esm/github-shim/index.js.map +1 -0
- package/dist/esm/github-shim/issues.js +318 -0
- package/dist/esm/github-shim/issues.js.map +1 -0
- package/dist/esm/github-shim/pulls.js +423 -0
- package/dist/esm/github-shim/pulls.js.map +1 -0
- package/dist/esm/github-shim/releases.js +154 -0
- package/dist/esm/github-shim/releases.js.map +1 -0
- package/dist/esm/github-shim/repos.js +86 -0
- package/dist/esm/github-shim/repos.js.map +1 -0
- package/dist/esm/github-shim/server.js +351 -0
- package/dist/esm/github-shim/server.js.map +1 -0
- package/dist/esm/github-shim/users.js +61 -0
- package/dist/esm/github-shim/users.js.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/indexer/api.js +132 -0
- package/dist/esm/indexer/api.js.map +1 -0
- package/dist/esm/indexer/crawler.js +256 -0
- package/dist/esm/indexer/crawler.js.map +1 -0
- package/dist/esm/indexer/index.js +9 -0
- package/dist/esm/indexer/index.js.map +1 -0
- package/dist/esm/indexer/main.js +76 -0
- package/dist/esm/indexer/main.js.map +1 -0
- package/dist/esm/indexer/store.js +334 -0
- package/dist/esm/indexer/store.js.map +1 -0
- package/dist/esm/issues.js +133 -0
- package/dist/esm/issues.js.map +1 -0
- package/dist/esm/notifications.js +47 -0
- package/dist/esm/notifications.js.map +1 -0
- package/dist/esm/org.js +90 -0
- package/dist/esm/org.js.map +1 -0
- package/dist/esm/patches.js +136 -0
- package/dist/esm/patches.js.map +1 -0
- package/dist/esm/refs.js +54 -0
- package/dist/esm/refs.js.map +1 -0
- package/dist/esm/registry.js +81 -0
- package/dist/esm/registry.js.map +1 -0
- package/dist/esm/releases.js +78 -0
- package/dist/esm/releases.js.map +1 -0
- package/dist/esm/repo.js +150 -0
- package/dist/esm/repo.js.map +1 -0
- package/dist/esm/resolver/index.js +10 -0
- package/dist/esm/resolver/index.js.map +1 -0
- package/dist/esm/resolver/resolve.js +189 -0
- package/dist/esm/resolver/resolve.js.map +1 -0
- package/dist/esm/resolver/trust-chain.js +155 -0
- package/dist/esm/resolver/trust-chain.js.map +1 -0
- package/dist/esm/resolver/verify.js +186 -0
- package/dist/esm/resolver/verify.js.map +1 -0
- package/dist/esm/shims/go/index.js +9 -0
- package/dist/esm/shims/go/index.js.map +1 -0
- package/dist/esm/shims/go/proxy.js +275 -0
- package/dist/esm/shims/go/proxy.js.map +1 -0
- package/dist/esm/shims/go/server.js +70 -0
- package/dist/esm/shims/go/server.js.map +1 -0
- package/dist/esm/shims/index.js +15 -0
- package/dist/esm/shims/index.js.map +1 -0
- package/dist/esm/shims/npm/index.js +9 -0
- package/dist/esm/shims/npm/index.js.map +1 -0
- package/dist/esm/shims/npm/registry.js +234 -0
- package/dist/esm/shims/npm/registry.js.map +1 -0
- package/dist/esm/shims/npm/server.js +72 -0
- package/dist/esm/shims/npm/server.js.map +1 -0
- package/dist/esm/shims/oci/index.js +9 -0
- package/dist/esm/shims/oci/index.js.map +1 -0
- package/dist/esm/shims/oci/registry.js +276 -0
- package/dist/esm/shims/oci/registry.js.map +1 -0
- package/dist/esm/shims/oci/server.js +82 -0
- package/dist/esm/shims/oci/server.js.map +1 -0
- package/dist/esm/social.js +70 -0
- package/dist/esm/social.js.map +1 -0
- package/dist/esm/web/html.js +123 -0
- package/dist/esm/web/html.js.map +1 -0
- package/dist/esm/web/index.js +7 -0
- package/dist/esm/web/index.js.map +1 -0
- package/dist/esm/web/routes.js +420 -0
- package/dist/esm/web/routes.js.map +1 -0
- package/dist/esm/web/server.js +225 -0
- package/dist/esm/web/server.js.map +1 -0
- package/dist/esm/wiki.js +63 -0
- package/dist/esm/wiki.js.map +1 -0
- package/dist/types/ci.d.ts +203 -0
- package/dist/types/ci.d.ts.map +1 -0
- package/dist/types/cli/agent.d.ts +59 -0
- package/dist/types/cli/agent.d.ts.map +1 -0
- package/dist/types/cli/commands/ci.d.ts +16 -0
- package/dist/types/cli/commands/ci.d.ts.map +1 -0
- package/dist/types/cli/commands/clone.d.ts +13 -0
- package/dist/types/cli/commands/clone.d.ts.map +1 -0
- package/dist/types/cli/commands/daemon.d.ts +29 -0
- package/dist/types/cli/commands/daemon.d.ts.map +1 -0
- package/dist/types/cli/commands/github-api.d.ts +14 -0
- package/dist/types/cli/commands/github-api.d.ts.map +1 -0
- package/dist/types/cli/commands/init.d.ts +11 -0
- package/dist/types/cli/commands/init.d.ts.map +1 -0
- package/dist/types/cli/commands/issue.d.ts +16 -0
- package/dist/types/cli/commands/issue.d.ts.map +1 -0
- package/dist/types/cli/commands/log.d.ts +13 -0
- package/dist/types/cli/commands/log.d.ts.map +1 -0
- package/dist/types/cli/commands/migrate.d.ts +19 -0
- package/dist/types/cli/commands/migrate.d.ts.map +1 -0
- package/dist/types/cli/commands/notification.d.ts +16 -0
- package/dist/types/cli/commands/notification.d.ts.map +1 -0
- package/dist/types/cli/commands/org.d.ts +19 -0
- package/dist/types/cli/commands/org.d.ts.map +1 -0
- package/dist/types/cli/commands/patch.d.ts +17 -0
- package/dist/types/cli/commands/patch.d.ts.map +1 -0
- package/dist/types/cli/commands/registry.d.ts +25 -0
- package/dist/types/cli/commands/registry.d.ts.map +1 -0
- package/dist/types/cli/commands/release.d.ts +13 -0
- package/dist/types/cli/commands/release.d.ts.map +1 -0
- package/dist/types/cli/commands/repo.d.ts +15 -0
- package/dist/types/cli/commands/repo.d.ts.map +1 -0
- package/dist/types/cli/commands/serve.d.ts +22 -0
- package/dist/types/cli/commands/serve.d.ts.map +1 -0
- package/dist/types/cli/commands/setup.d.ts +16 -0
- package/dist/types/cli/commands/setup.d.ts.map +1 -0
- package/dist/types/cli/commands/shim.d.ts +16 -0
- package/dist/types/cli/commands/shim.d.ts.map +1 -0
- package/dist/types/cli/commands/social.d.ts +19 -0
- package/dist/types/cli/commands/social.d.ts.map +1 -0
- package/dist/types/cli/commands/web.d.ts +14 -0
- package/dist/types/cli/commands/web.d.ts.map +1 -0
- package/dist/types/cli/commands/wiki.d.ts +14 -0
- package/dist/types/cli/commands/wiki.d.ts.map +1 -0
- package/dist/types/cli/flags.d.ts +16 -0
- package/dist/types/cli/flags.d.ts.map +1 -0
- package/dist/types/cli/main.d.ts +69 -0
- package/dist/types/cli/main.d.ts.map +1 -0
- package/dist/types/cli/repo-context.d.ts +30 -0
- package/dist/types/cli/repo-context.d.ts.map +1 -0
- package/dist/types/daemon/adapter.d.ts +74 -0
- package/dist/types/daemon/adapter.d.ts.map +1 -0
- package/dist/types/daemon/adapters/github.d.ts +10 -0
- package/dist/types/daemon/adapters/github.d.ts.map +1 -0
- package/dist/types/daemon/adapters/go.d.ts +10 -0
- package/dist/types/daemon/adapters/go.d.ts.map +1 -0
- package/dist/types/daemon/adapters/index.d.ts +22 -0
- package/dist/types/daemon/adapters/index.d.ts.map +1 -0
- package/dist/types/daemon/adapters/npm.d.ts +10 -0
- package/dist/types/daemon/adapters/npm.d.ts.map +1 -0
- package/dist/types/daemon/adapters/oci.d.ts +10 -0
- package/dist/types/daemon/adapters/oci.d.ts.map +1 -0
- package/dist/types/daemon/index.d.ts +14 -0
- package/dist/types/daemon/index.d.ts.map +1 -0
- package/dist/types/daemon/server.d.ts +55 -0
- package/dist/types/daemon/server.d.ts.map +1 -0
- package/dist/types/git-remote/credential-helper.d.ts +49 -0
- package/dist/types/git-remote/credential-helper.d.ts.map +1 -0
- package/dist/types/git-remote/credential-main.d.ts +24 -0
- package/dist/types/git-remote/credential-main.d.ts.map +1 -0
- package/dist/types/git-remote/index.d.ts +10 -0
- package/dist/types/git-remote/index.d.ts.map +1 -0
- package/dist/types/git-remote/main.d.ts +23 -0
- package/dist/types/git-remote/main.d.ts.map +1 -0
- package/dist/types/git-remote/parse-url.d.ts +32 -0
- package/dist/types/git-remote/parse-url.d.ts.map +1 -0
- package/dist/types/git-remote/resolve.d.ts +30 -0
- package/dist/types/git-remote/resolve.d.ts.map +1 -0
- package/dist/types/git-remote/service.d.ts +75 -0
- package/dist/types/git-remote/service.d.ts.map +1 -0
- package/dist/types/git-server/auth.d.ts +129 -0
- package/dist/types/git-server/auth.d.ts.map +1 -0
- package/dist/types/git-server/bundle-restore.d.ts +48 -0
- package/dist/types/git-server/bundle-restore.d.ts.map +1 -0
- package/dist/types/git-server/bundle-sync.d.ts +90 -0
- package/dist/types/git-server/bundle-sync.d.ts.map +1 -0
- package/dist/types/git-server/did-service.d.ts +26 -0
- package/dist/types/git-server/did-service.d.ts.map +1 -0
- package/dist/types/git-server/git-backend.d.ts +84 -0
- package/dist/types/git-server/git-backend.d.ts.map +1 -0
- package/dist/types/git-server/http-handler.d.ts +73 -0
- package/dist/types/git-server/http-handler.d.ts.map +1 -0
- package/dist/types/git-server/index.d.ts +16 -0
- package/dist/types/git-server/index.d.ts.map +1 -0
- package/dist/types/git-server/push-authorizer.d.ts +38 -0
- package/dist/types/git-server/push-authorizer.d.ts.map +1 -0
- package/dist/types/git-server/ref-sync.d.ts +52 -0
- package/dist/types/git-server/ref-sync.d.ts.map +1 -0
- package/dist/types/git-server/server.d.ts +70 -0
- package/dist/types/git-server/server.d.ts.map +1 -0
- package/dist/types/git-server/verify.d.ts +12 -0
- package/dist/types/git-server/verify.d.ts.map +1 -0
- package/dist/types/github-shim/helpers.d.ts +108 -0
- package/dist/types/github-shim/helpers.d.ts.map +1 -0
- package/dist/types/github-shim/index.d.ts +15 -0
- package/dist/types/github-shim/index.d.ts.map +1 -0
- package/dist/types/github-shim/issues.d.ts +24 -0
- package/dist/types/github-shim/issues.d.ts.map +1 -0
- package/dist/types/github-shim/pulls.d.ts +31 -0
- package/dist/types/github-shim/pulls.d.ts.map +1 -0
- package/dist/types/github-shim/releases.d.ts +18 -0
- package/dist/types/github-shim/releases.d.ts.map +1 -0
- package/dist/types/github-shim/repos.d.ts +21 -0
- package/dist/types/github-shim/repos.d.ts.map +1 -0
- package/dist/types/github-shim/server.d.ts +53 -0
- package/dist/types/github-shim/server.d.ts.map +1 -0
- package/dist/types/github-shim/users.d.ts +17 -0
- package/dist/types/github-shim/users.d.ts.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/indexer/api.d.ts +32 -0
- package/dist/types/indexer/api.d.ts.map +1 -0
- package/dist/types/indexer/crawler.d.ts +72 -0
- package/dist/types/indexer/crawler.d.ts.map +1 -0
- package/dist/types/indexer/index.d.ts +12 -0
- package/dist/types/indexer/index.d.ts.map +1 -0
- package/dist/types/indexer/main.d.ts +21 -0
- package/dist/types/indexer/main.d.ts.map +1 -0
- package/dist/types/indexer/store.d.ts +168 -0
- package/dist/types/indexer/store.d.ts.map +1 -0
- package/dist/types/issues.d.ts +395 -0
- package/dist/types/issues.d.ts.map +1 -0
- package/dist/types/notifications.d.ts +93 -0
- package/dist/types/notifications.d.ts.map +1 -0
- package/dist/types/org.d.ts +232 -0
- package/dist/types/org.d.ts.map +1 -0
- package/dist/types/patches.d.ts +410 -0
- package/dist/types/patches.d.ts.map +1 -0
- package/dist/types/refs.d.ts +114 -0
- package/dist/types/refs.d.ts.map +1 -0
- package/dist/types/registry.d.ts +212 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/releases.d.ts +204 -0
- package/dist/types/releases.d.ts.map +1 -0
- package/dist/types/repo.d.ts +450 -0
- package/dist/types/repo.d.ts.map +1 -0
- package/dist/types/resolver/index.d.ts +13 -0
- package/dist/types/resolver/index.d.ts.map +1 -0
- package/dist/types/resolver/resolve.d.ts +80 -0
- package/dist/types/resolver/resolve.d.ts.map +1 -0
- package/dist/types/resolver/trust-chain.d.ts +54 -0
- package/dist/types/resolver/trust-chain.d.ts.map +1 -0
- package/dist/types/resolver/verify.d.ts +62 -0
- package/dist/types/resolver/verify.d.ts.map +1 -0
- package/dist/types/shims/go/index.d.ts +11 -0
- package/dist/types/shims/go/index.d.ts.map +1 -0
- package/dist/types/shims/go/proxy.d.ts +51 -0
- package/dist/types/shims/go/proxy.d.ts.map +1 -0
- package/dist/types/shims/go/server.d.ts +23 -0
- package/dist/types/shims/go/server.d.ts.map +1 -0
- package/dist/types/shims/index.d.ts +18 -0
- package/dist/types/shims/index.d.ts.map +1 -0
- package/dist/types/shims/npm/index.d.ts +11 -0
- package/dist/types/shims/npm/index.d.ts.map +1 -0
- package/dist/types/shims/npm/registry.d.ts +46 -0
- package/dist/types/shims/npm/registry.d.ts.map +1 -0
- package/dist/types/shims/npm/server.d.ts +23 -0
- package/dist/types/shims/npm/server.d.ts.map +1 -0
- package/dist/types/shims/oci/index.d.ts +11 -0
- package/dist/types/shims/oci/index.d.ts.map +1 -0
- package/dist/types/shims/oci/registry.d.ts +56 -0
- package/dist/types/shims/oci/registry.d.ts.map +1 -0
- package/dist/types/shims/oci/server.d.ts +23 -0
- package/dist/types/shims/oci/server.d.ts.map +1 -0
- package/dist/types/social.d.ts +162 -0
- package/dist/types/social.d.ts.map +1 -0
- package/dist/types/web/html.d.ts +23 -0
- package/dist/types/web/html.d.ts.map +1 -0
- package/dist/types/web/index.d.ts +8 -0
- package/dist/types/web/index.d.ts.map +1 -0
- package/dist/types/web/routes.d.ts +21 -0
- package/dist/types/web/routes.d.ts.map +1 -0
- package/dist/types/web/server.d.ts +38 -0
- package/dist/types/web/server.d.ts.map +1 -0
- package/dist/types/wiki.d.ts +143 -0
- package/dist/types/wiki.d.ts.map +1 -0
- package/package.json +108 -0
- package/schemas/ci/check-run.json +23 -0
- package/schemas/ci/check-suite.json +23 -0
- package/schemas/issues/assignment.json +17 -0
- package/schemas/issues/comment.json +14 -0
- package/schemas/issues/issue.json +20 -0
- package/schemas/issues/label.json +17 -0
- package/schemas/issues/reaction.json +14 -0
- package/schemas/issues/status-change.json +14 -0
- package/schemas/notifications/notification.json +20 -0
- package/schemas/org/org-member.json +17 -0
- package/schemas/org/org.json +26 -0
- package/schemas/org/team-member.json +17 -0
- package/schemas/org/team.json +17 -0
- package/schemas/patches/merge-result.json +14 -0
- package/schemas/patches/patch-status-change.json +14 -0
- package/schemas/patches/patch.json +20 -0
- package/schemas/patches/review-comment.json +17 -0
- package/schemas/patches/review.json +14 -0
- package/schemas/patches/revision.json +30 -0
- package/schemas/refs/git-ref.json +32 -0
- package/schemas/registry/attestation.json +23 -0
- package/schemas/registry/package-version.json +23 -0
- package/schemas/registry/package.json +32 -0
- package/schemas/releases/release.json +17 -0
- package/schemas/repo/collaborator.json +17 -0
- package/schemas/repo/repo.json +35 -0
- package/schemas/repo/settings.json +39 -0
- package/schemas/repo/topic.json +14 -0
- package/schemas/repo/webhook.json +26 -0
- package/schemas/social/activity.json +23 -0
- package/schemas/social/follow.json +17 -0
- package/schemas/social/star.json +20 -0
- package/schemas/wiki/wiki-history.json +20 -0
- package/schemas/wiki/wiki-page.json +17 -0
- package/src/ci.ts +118 -0
- package/src/cli/agent.ts +117 -0
- package/src/cli/commands/ci.ts +300 -0
- package/src/cli/commands/clone.ts +78 -0
- package/src/cli/commands/daemon.ts +129 -0
- package/src/cli/commands/github-api.ts +30 -0
- package/src/cli/commands/init.ts +69 -0
- package/src/cli/commands/issue.ts +321 -0
- package/src/cli/commands/log.ts +106 -0
- package/src/cli/commands/migrate.ts +525 -0
- package/src/cli/commands/notification.ts +148 -0
- package/src/cli/commands/org.ts +381 -0
- package/src/cli/commands/patch.ts +413 -0
- package/src/cli/commands/registry.ts +542 -0
- package/src/cli/commands/release.ts +189 -0
- package/src/cli/commands/repo.ts +160 -0
- package/src/cli/commands/serve.ts +153 -0
- package/src/cli/commands/setup.ts +97 -0
- package/src/cli/commands/shim.ts +79 -0
- package/src/cli/commands/social.ts +221 -0
- package/src/cli/commands/web.ts +30 -0
- package/src/cli/commands/wiki.ts +199 -0
- package/src/cli/flags.ts +28 -0
- package/src/cli/main.ts +350 -0
- package/src/cli/repo-context.ts +55 -0
- package/src/daemon/adapter.ts +95 -0
- package/src/daemon/adapters/github.ts +86 -0
- package/src/daemon/adapters/go.ts +47 -0
- package/src/daemon/adapters/index.ts +36 -0
- package/src/daemon/adapters/npm.ts +47 -0
- package/src/daemon/adapters/oci.ts +59 -0
- package/src/daemon/index.ts +16 -0
- package/src/daemon/server.ts +204 -0
- package/src/git-remote/credential-helper.ts +114 -0
- package/src/git-remote/credential-main.ts +118 -0
- package/src/git-remote/index.ts +10 -0
- package/src/git-remote/main.ts +74 -0
- package/src/git-remote/parse-url.ts +81 -0
- package/src/git-remote/resolve.ts +207 -0
- package/src/git-remote/service.ts +126 -0
- package/src/git-server/auth.ts +308 -0
- package/src/git-server/bundle-restore.ts +217 -0
- package/src/git-server/bundle-sync.ts +300 -0
- package/src/git-server/did-service.ts +77 -0
- package/src/git-server/git-backend.ts +222 -0
- package/src/git-server/http-handler.ts +386 -0
- package/src/git-server/index.ts +16 -0
- package/src/git-server/push-authorizer.ts +77 -0
- package/src/git-server/ref-sync.ts +166 -0
- package/src/git-server/server.ts +236 -0
- package/src/git-server/verify.ts +116 -0
- package/src/github-shim/helpers.ts +311 -0
- package/src/github-shim/index.ts +35 -0
- package/src/github-shim/issues.ts +389 -0
- package/src/github-shim/pulls.ts +500 -0
- package/src/github-shim/releases.ts +185 -0
- package/src/github-shim/repos.ts +95 -0
- package/src/github-shim/server.ts +334 -0
- package/src/github-shim/users.ts +63 -0
- package/src/index.ts +26 -0
- package/src/indexer/api.ts +162 -0
- package/src/indexer/crawler.ts +290 -0
- package/src/indexer/index.ts +22 -0
- package/src/indexer/main.ts +83 -0
- package/src/indexer/store.ts +408 -0
- package/src/issues.ts +200 -0
- package/src/notifications.ts +80 -0
- package/src/org.ts +147 -0
- package/src/patches.ts +203 -0
- package/src/refs.ts +94 -0
- package/src/registry.ts +132 -0
- package/src/releases.ts +124 -0
- package/src/repo.ts +234 -0
- package/src/resolver/index.ts +42 -0
- package/src/resolver/resolve.ts +244 -0
- package/src/resolver/trust-chain.ts +217 -0
- package/src/resolver/verify.ts +237 -0
- package/src/shims/go/index.ts +14 -0
- package/src/shims/go/proxy.ts +336 -0
- package/src/shims/go/server.ts +82 -0
- package/src/shims/index.ts +20 -0
- package/src/shims/npm/index.ts +14 -0
- package/src/shims/npm/registry.ts +288 -0
- package/src/shims/npm/server.ts +84 -0
- package/src/shims/oci/index.ts +14 -0
- package/src/shims/oci/registry.ts +334 -0
- package/src/shims/oci/server.ts +94 -0
- package/src/social.ts +116 -0
- package/src/web/html.ts +120 -0
- package/src/web/index.ts +8 -0
- package/src/web/routes.ts +449 -0
- package/src/web/server.ts +256 -0
- package/src/wiki.ts +102 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency trust chain — recursive verification of a package's
|
|
3
|
+
* dependency tree.
|
|
4
|
+
*
|
|
5
|
+
* Given a root package specifier like `did:dht:abc/utils@1.0.0`, the
|
|
6
|
+
* trust chain validator:
|
|
7
|
+
*
|
|
8
|
+
* 1. Resolves the package from the publisher's DWN
|
|
9
|
+
* 2. Verifies the package version (author, tarball, attestations)
|
|
10
|
+
* 3. Reads the version's `dependencies` field
|
|
11
|
+
* 4. Recursively resolves and verifies each dependency
|
|
12
|
+
* 5. Returns a tree of verification results
|
|
13
|
+
*
|
|
14
|
+
* The entire chain is verifiable without any central authority — each
|
|
15
|
+
* DID resolution, signature verification, and attestation check uses
|
|
16
|
+
* decentralized infrastructure.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { AgentContext } from '../cli/agent.js';
|
|
22
|
+
import type { VerificationResult } from './verify.js';
|
|
23
|
+
|
|
24
|
+
import { verifyPackageVersion } from './verify.js';
|
|
25
|
+
|
|
26
|
+
import { parseSpecifier, resolvePackage, resolveVersion } from './resolve.js';
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Types
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/** A single node in the dependency trust chain tree. */
|
|
33
|
+
export type TrustChainNode = {
|
|
34
|
+
specifier : string;
|
|
35
|
+
did : string;
|
|
36
|
+
name : string;
|
|
37
|
+
version : string;
|
|
38
|
+
verification : VerificationResult;
|
|
39
|
+
dependencies : TrustChainNode[];
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/** Summary of the trust chain validation. */
|
|
43
|
+
export type TrustChainResult = {
|
|
44
|
+
root : TrustChainNode;
|
|
45
|
+
totalChecked : number;
|
|
46
|
+
allPassed : boolean;
|
|
47
|
+
failures : string[];
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
// Trust chain builder
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Build and verify a full dependency trust chain.
|
|
56
|
+
*
|
|
57
|
+
* @param ctx - Agent context
|
|
58
|
+
* @param targetDid - Root package publisher DID
|
|
59
|
+
* @param name - Root package name
|
|
60
|
+
* @param semver - Root package version
|
|
61
|
+
* @param ecosystem - Package ecosystem (default: 'npm')
|
|
62
|
+
* @param trustedAttestors - DIDs of trusted build services
|
|
63
|
+
* @param maxDepth - Maximum recursion depth (default: 10)
|
|
64
|
+
*/
|
|
65
|
+
export async function buildTrustChain(
|
|
66
|
+
ctx: AgentContext,
|
|
67
|
+
targetDid: string,
|
|
68
|
+
name: string,
|
|
69
|
+
semver: string,
|
|
70
|
+
ecosystem: string = 'npm',
|
|
71
|
+
trustedAttestors: string[] = [],
|
|
72
|
+
maxDepth: number = 10,
|
|
73
|
+
): Promise<TrustChainResult> {
|
|
74
|
+
const visited = new Set<string>();
|
|
75
|
+
const failures: string[] = [];
|
|
76
|
+
let totalChecked = 0;
|
|
77
|
+
|
|
78
|
+
const root = await buildNode(
|
|
79
|
+
ctx, targetDid, name, semver, ecosystem, trustedAttestors,
|
|
80
|
+
maxDepth, 0, visited, failures,
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
totalChecked = visited.size;
|
|
84
|
+
const allPassed = failures.length === 0;
|
|
85
|
+
|
|
86
|
+
return { root, totalChecked, allPassed, failures };
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Recursively build a trust chain node.
|
|
91
|
+
*/
|
|
92
|
+
async function buildNode(
|
|
93
|
+
ctx: AgentContext,
|
|
94
|
+
targetDid: string,
|
|
95
|
+
name: string,
|
|
96
|
+
semver: string,
|
|
97
|
+
ecosystem: string,
|
|
98
|
+
trustedAttestors: string[],
|
|
99
|
+
maxDepth: number,
|
|
100
|
+
depth: number,
|
|
101
|
+
visited: Set<string>,
|
|
102
|
+
failures: string[],
|
|
103
|
+
): Promise<TrustChainNode> {
|
|
104
|
+
const specifier = `${targetDid}/${name}@${semver}`;
|
|
105
|
+
const node: TrustChainNode = {
|
|
106
|
+
specifier,
|
|
107
|
+
did : targetDid,
|
|
108
|
+
name,
|
|
109
|
+
version : semver,
|
|
110
|
+
verification : {
|
|
111
|
+
passed : false,
|
|
112
|
+
publisherDid : targetDid,
|
|
113
|
+
packageName : name,
|
|
114
|
+
version : semver,
|
|
115
|
+
checks : [],
|
|
116
|
+
attestations : [],
|
|
117
|
+
},
|
|
118
|
+
dependencies: [],
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// Cycle detection.
|
|
122
|
+
if (visited.has(specifier)) {
|
|
123
|
+
node.verification.passed = true;
|
|
124
|
+
node.verification.checks = [{ check: 'cycle-skip', passed: true, detail: 'Already verified (cycle)' }];
|
|
125
|
+
return node;
|
|
126
|
+
}
|
|
127
|
+
visited.add(specifier);
|
|
128
|
+
|
|
129
|
+
// Depth guard.
|
|
130
|
+
if (depth > maxDepth) {
|
|
131
|
+
node.verification.checks = [{ check: 'max-depth', passed: true, detail: `Max depth ${maxDepth} reached` }];
|
|
132
|
+
node.verification.passed = true;
|
|
133
|
+
return node;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Verify this package version.
|
|
137
|
+
node.verification = await verifyPackageVersion(
|
|
138
|
+
ctx, targetDid, name, semver, ecosystem, trustedAttestors,
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
if (!node.verification.passed) {
|
|
142
|
+
failures.push(`${specifier}: ${node.verification.checks.filter((c) => !c.passed).map((c) => c.detail).join('; ')}`);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Resolve dependencies.
|
|
146
|
+
const pkg = await resolvePackage(ctx, targetDid, name, ecosystem);
|
|
147
|
+
if (!pkg) { return node; }
|
|
148
|
+
|
|
149
|
+
const version = await resolveVersion(ctx, targetDid, pkg.contextId, semver);
|
|
150
|
+
if (!version || !version.dependencies) { return node; }
|
|
151
|
+
|
|
152
|
+
const deps = version.dependencies;
|
|
153
|
+
for (const [depSpec, depVersion] of Object.entries(deps)) {
|
|
154
|
+
const parsed = parseSpecifier(`${depSpec}@${depVersion}`);
|
|
155
|
+
if (!parsed) {
|
|
156
|
+
// Dependency specifier is not a DID-scoped package — skip.
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const childNode = await buildNode(
|
|
161
|
+
ctx, parsed.did, parsed.name, parsed.version, ecosystem,
|
|
162
|
+
trustedAttestors, maxDepth, depth + 1, visited, failures,
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
node.dependencies.push(childNode);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return node;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
// Formatting
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Format a trust chain tree as an indented string for CLI output.
|
|
177
|
+
*/
|
|
178
|
+
export function formatTrustChain(result: TrustChainResult): string {
|
|
179
|
+
const lines: string[] = [];
|
|
180
|
+
|
|
181
|
+
lines.push(`Trust chain for ${result.root.specifier}`);
|
|
182
|
+
lines.push(` Total packages checked: ${result.totalChecked}`);
|
|
183
|
+
lines.push(` All passed: ${result.allPassed ? 'yes' : 'NO'}`);
|
|
184
|
+
|
|
185
|
+
if (result.failures.length > 0) {
|
|
186
|
+
lines.push(' Failures:');
|
|
187
|
+
for (const f of result.failures) {
|
|
188
|
+
lines.push(` - ${f}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
lines.push('');
|
|
193
|
+
formatNode(result.root, lines, 0);
|
|
194
|
+
|
|
195
|
+
return lines.join('\n');
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function formatNode(node: TrustChainNode, lines: string[], depth: number): void {
|
|
199
|
+
const indent = ' '.repeat(depth);
|
|
200
|
+
const status = node.verification.passed ? 'PASS' : 'FAIL';
|
|
201
|
+
lines.push(`${indent}${status} ${node.specifier}`);
|
|
202
|
+
|
|
203
|
+
for (const check of node.verification.checks) {
|
|
204
|
+
const mark = check.passed ? '+' : 'x';
|
|
205
|
+
lines.push(`${indent} [${mark}] ${check.check}: ${check.detail}`);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if (node.verification.attestations.length > 0) {
|
|
209
|
+
for (const att of node.verification.attestations) {
|
|
210
|
+
lines.push(`${indent} [a] ${att.claim} by ${att.attestorDid}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
for (const child of node.dependencies) {
|
|
215
|
+
formatNode(child, lines, depth + 1);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package verification — cryptographic verification of DWN package records.
|
|
3
|
+
*
|
|
4
|
+
* Verification checks:
|
|
5
|
+
* 1. **Author verification**: the record's `author` DID matches the publisher
|
|
6
|
+
* 2. **Attestation verification**: third-party attestation records are present
|
|
7
|
+
* and signed by trusted attestors
|
|
8
|
+
* 3. **Integrity check**: tarball exists and is non-empty
|
|
9
|
+
*
|
|
10
|
+
* Since every DWN record is cryptographically signed via JWS in the
|
|
11
|
+
* `authorization` field, verification relies on the DWN SDK having
|
|
12
|
+
* already validated signatures during record ingestion. Our verification
|
|
13
|
+
* layer adds semantic checks on top of that foundation.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { AgentContext } from '../cli/agent.js';
|
|
19
|
+
|
|
20
|
+
import { DateSort } from '@enbox/dwn-sdk-js';
|
|
21
|
+
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Types
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
/** Individual verification check result. */
|
|
27
|
+
export type VerificationCheck = {
|
|
28
|
+
check : string;
|
|
29
|
+
passed : boolean;
|
|
30
|
+
detail : string;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** Attestation record as returned by the DWN. */
|
|
34
|
+
export type AttestationRecord = {
|
|
35
|
+
attestorDid : string;
|
|
36
|
+
claim : string;
|
|
37
|
+
sourceCommit : string | undefined;
|
|
38
|
+
sourceRepo : string | undefined;
|
|
39
|
+
dateCreated : string;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/** Full verification result for a package version. */
|
|
43
|
+
export type VerificationResult = {
|
|
44
|
+
passed : boolean;
|
|
45
|
+
publisherDid : string;
|
|
46
|
+
packageName : string;
|
|
47
|
+
version : string;
|
|
48
|
+
checks : VerificationCheck[];
|
|
49
|
+
attestations : AttestationRecord[];
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// Attestation queries
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Fetch attestation records for a specific package version.
|
|
58
|
+
*/
|
|
59
|
+
export async function fetchAttestations(
|
|
60
|
+
ctx: AgentContext,
|
|
61
|
+
targetDid: string,
|
|
62
|
+
versionContextId: string,
|
|
63
|
+
): Promise<AttestationRecord[]> {
|
|
64
|
+
const from = targetDid === ctx.did ? undefined : targetDid;
|
|
65
|
+
|
|
66
|
+
const { records } = await ctx.registry.records.query('package/version/attestation' as any, {
|
|
67
|
+
from,
|
|
68
|
+
filter : { contextId: versionContextId },
|
|
69
|
+
dateSort : DateSort.CreatedAscending,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const attestations: AttestationRecord[] = [];
|
|
73
|
+
for (const rec of records) {
|
|
74
|
+
const data = await rec.data.json() as Record<string, unknown>;
|
|
75
|
+
attestations.push({
|
|
76
|
+
attestorDid : String(data.attestorDid ?? ''),
|
|
77
|
+
claim : String(data.claim ?? ''),
|
|
78
|
+
sourceCommit : data.sourceCommit as string | undefined,
|
|
79
|
+
sourceRepo : data.sourceRepo as string | undefined,
|
|
80
|
+
dateCreated : rec.dateCreated,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return attestations;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
// Verification
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Verify a package version's integrity and provenance.
|
|
93
|
+
*
|
|
94
|
+
* Performs the following checks:
|
|
95
|
+
* 1. Package record exists and is owned by the expected DID
|
|
96
|
+
* 2. Version record exists and is authored by the publisher
|
|
97
|
+
* 3. Tarball exists and is non-empty
|
|
98
|
+
* 4. Attestations are present (informational — not required to pass)
|
|
99
|
+
*
|
|
100
|
+
* @param ctx - Agent context
|
|
101
|
+
* @param targetDid - Expected publisher DID
|
|
102
|
+
* @param name - Package name
|
|
103
|
+
* @param semver - Version string
|
|
104
|
+
* @param ecosystem - Ecosystem (default: 'npm')
|
|
105
|
+
* @param trustedAttestors - DIDs of trusted attestors (optional)
|
|
106
|
+
*/
|
|
107
|
+
export async function verifyPackageVersion(
|
|
108
|
+
ctx: AgentContext,
|
|
109
|
+
targetDid: string,
|
|
110
|
+
name: string,
|
|
111
|
+
semver: string,
|
|
112
|
+
ecosystem: string = 'npm',
|
|
113
|
+
trustedAttestors: string[] = [],
|
|
114
|
+
): Promise<VerificationResult> {
|
|
115
|
+
const checks: VerificationCheck[] = [];
|
|
116
|
+
const from = targetDid === ctx.did ? undefined : targetDid;
|
|
117
|
+
|
|
118
|
+
// -------------------------------------------------------------------------
|
|
119
|
+
// 1. Package record exists
|
|
120
|
+
// -------------------------------------------------------------------------
|
|
121
|
+
const { records: pkgRecords } = await ctx.registry.records.query('package', {
|
|
122
|
+
from,
|
|
123
|
+
filter: { tags: { name, ecosystem } },
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
if (pkgRecords.length === 0) {
|
|
127
|
+
checks.push({ check: 'package-exists', passed: false, detail: `Package '${name}' not found on ${targetDid}` });
|
|
128
|
+
return { passed: false, publisherDid: targetDid, packageName: name, version: semver, checks, attestations: [] };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const pkgRec = pkgRecords[0];
|
|
132
|
+
checks.push({ check: 'package-exists', passed: true, detail: `Package '${name}' found` });
|
|
133
|
+
|
|
134
|
+
// -------------------------------------------------------------------------
|
|
135
|
+
// 2. Publisher matches — the record author is the expected DID
|
|
136
|
+
// -------------------------------------------------------------------------
|
|
137
|
+
const authorMatchesPkg = pkgRec.author === targetDid || pkgRec.creator === targetDid;
|
|
138
|
+
checks.push({
|
|
139
|
+
check : 'publisher-match',
|
|
140
|
+
passed : authorMatchesPkg,
|
|
141
|
+
detail : authorMatchesPkg
|
|
142
|
+
? `Package authored by ${targetDid}`
|
|
143
|
+
: `Package author ${pkgRec.author} does not match expected ${targetDid}`,
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// -------------------------------------------------------------------------
|
|
147
|
+
// 3. Version record exists and is authored by the publisher
|
|
148
|
+
// -------------------------------------------------------------------------
|
|
149
|
+
const { records: verRecords } = await ctx.registry.records.query('package/version' as any, {
|
|
150
|
+
from,
|
|
151
|
+
filter: {
|
|
152
|
+
contextId : pkgRec.contextId,
|
|
153
|
+
tags : { semver },
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
if (verRecords.length === 0) {
|
|
158
|
+
checks.push({ check: 'version-exists', passed: false, detail: `Version ${semver} not found` });
|
|
159
|
+
return { passed: false, publisherDid: targetDid, packageName: name, version: semver, checks, attestations: [] };
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const verRec = verRecords[0];
|
|
163
|
+
checks.push({ check: 'version-exists', passed: true, detail: `Version ${semver} found` });
|
|
164
|
+
|
|
165
|
+
const authorMatchesVer = verRec.author === targetDid || verRec.creator === targetDid;
|
|
166
|
+
checks.push({
|
|
167
|
+
check : 'version-author',
|
|
168
|
+
passed : authorMatchesVer,
|
|
169
|
+
detail : authorMatchesVer
|
|
170
|
+
? `Version authored by ${targetDid}`
|
|
171
|
+
: `Version author ${verRec.author} does not match expected ${targetDid}`,
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// -------------------------------------------------------------------------
|
|
175
|
+
// 4. Tarball exists and is non-empty
|
|
176
|
+
// -------------------------------------------------------------------------
|
|
177
|
+
const { records: tarRecords } = await ctx.registry.records.query('package/version/tarball' as any, {
|
|
178
|
+
from,
|
|
179
|
+
filter: { contextId: verRec.contextId },
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
if (tarRecords.length === 0) {
|
|
183
|
+
checks.push({ check: 'tarball-exists', passed: false, detail: 'No tarball found' });
|
|
184
|
+
} else {
|
|
185
|
+
const tarRec = tarRecords[0];
|
|
186
|
+
const size = tarRec.dataSize ?? 0;
|
|
187
|
+
const hasData = size > 0;
|
|
188
|
+
checks.push({
|
|
189
|
+
check : 'tarball-exists',
|
|
190
|
+
passed : hasData,
|
|
191
|
+
detail : hasData ? `Tarball present (${size} bytes)` : 'Tarball is empty',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// -------------------------------------------------------------------------
|
|
196
|
+
// 5. Attestations
|
|
197
|
+
// -------------------------------------------------------------------------
|
|
198
|
+
const attestations = await fetchAttestations(ctx, targetDid, verRec.contextId ?? '');
|
|
199
|
+
|
|
200
|
+
if (attestations.length > 0) {
|
|
201
|
+
checks.push({
|
|
202
|
+
check : 'has-attestations',
|
|
203
|
+
passed : true,
|
|
204
|
+
detail : `${attestations.length} attestation(s) found`,
|
|
205
|
+
});
|
|
206
|
+
} else {
|
|
207
|
+
checks.push({
|
|
208
|
+
check : 'has-attestations',
|
|
209
|
+
passed : true, // Informational — not required
|
|
210
|
+
detail : 'No attestations (none required)',
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// -------------------------------------------------------------------------
|
|
215
|
+
// 6. Trusted attestor check (only if trustedAttestors provided)
|
|
216
|
+
// -------------------------------------------------------------------------
|
|
217
|
+
if (trustedAttestors.length > 0) {
|
|
218
|
+
const trustedFound = attestations.filter(
|
|
219
|
+
(a) => trustedAttestors.includes(a.attestorDid),
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
checks.push({
|
|
223
|
+
check : 'trusted-attestor',
|
|
224
|
+
passed : trustedFound.length > 0,
|
|
225
|
+
detail : trustedFound.length > 0
|
|
226
|
+
? `${trustedFound.length} trusted attestation(s): ${trustedFound.map((a) => a.claim).join(', ')}`
|
|
227
|
+
: `No attestations from trusted attestors: ${trustedAttestors.join(', ')}`,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// -------------------------------------------------------------------------
|
|
232
|
+
// Overall result
|
|
233
|
+
// -------------------------------------------------------------------------
|
|
234
|
+
const passed = checks.every((c) => c.passed);
|
|
235
|
+
|
|
236
|
+
return { passed, publisherDid: targetDid, packageName: name, version: semver, checks, attestations };
|
|
237
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go module proxy shim module — DID-scoped module resolution via the
|
|
3
|
+
* GOPROXY HTTP protocol.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export { handleGoProxyRequest, parseGoModulePath } from './proxy.js';
|
|
9
|
+
|
|
10
|
+
export type { GoProxyResponse } from './proxy.js';
|
|
11
|
+
|
|
12
|
+
export { startGoShim } from './server.js';
|
|
13
|
+
|
|
14
|
+
export type { GoShimOptions } from './server.js';
|