@hashgraphonline/standards-sdk 0.1.188 → 0.1.190
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/dist/browser/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/browser/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/browser/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/browser/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/browser/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/browser/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/browser/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/browser/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/browser/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/browser/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/browser/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/http.d.ts +67 -0
- package/dist/browser/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/index.d.ts +21 -0
- package/dist/browser/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/browser/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/browser/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/browser/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/browser/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/browser/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/browser/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/browser/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/types.d.ts +113 -0
- package/dist/browser/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/browser/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/browser/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/browser/hcs-25/index.d.ts +1 -0
- package/dist/browser/hcs-25/index.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/browser/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/browser/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/operational.d.ts +15 -12
- package/dist/browser/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/browser/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/browser/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client.d.ts +1 -1
- package/dist/browser/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js +37 -10
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser-root/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/browser-root/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/browser-root/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/browser-root/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/browser-root/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/browser-root/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/browser-root/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/browser-root/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/browser-root/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/browser-root/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/http.d.ts +67 -0
- package/dist/browser-root/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/index.d.ts +21 -0
- package/dist/browser-root/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/browser-root/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/browser-root/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/browser-root/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/browser-root/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/browser-root/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/browser-root/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/browser-root/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/types.d.ts +113 -0
- package/dist/browser-root/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/browser-root/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/browser-root/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/index.d.ts +1 -0
- package/dist/browser-root/hcs-25/index.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/browser-root/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/browser-root/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/operational.d.ts +15 -12
- package/dist/browser-root/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/browser-root/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/client.d.ts +1 -1
- package/dist/browser-root/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser-root/standards-sdk.root-browser.js +78 -11
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
- package/dist/cjs/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/cjs/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/cjs/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/cjs/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/cjs/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/cjs/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/cjs/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/cjs/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/cjs/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/cjs/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/cjs/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/http.d.ts +67 -0
- package/dist/cjs/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/index.d.ts +21 -0
- package/dist/cjs/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/cjs/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/cjs/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/cjs/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/cjs/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/cjs/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/cjs/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/cjs/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/types.d.ts +113 -0
- package/dist/cjs/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/cjs/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/cjs/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/cjs/hcs-25/index.d.ts +1 -0
- package/dist/cjs/hcs-25/index.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/cjs/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/cjs/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/operational.d.ts +15 -12
- package/dist/cjs/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/cjs/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client.d.ts +1 -1
- package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/es/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/es/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/es/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/es/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/es/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/es/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/es/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/es/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/es/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/es/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/http.d.ts +67 -0
- package/dist/es/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/index.d.ts +21 -0
- package/dist/es/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/es/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/es/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/es/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/es/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/es/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/es/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/es/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/types.d.ts +113 -0
- package/dist/es/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/es/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/es/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/es/hcs-25/index.d.ts +1 -0
- package/dist/es/hcs-25/index.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/es/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/es/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/operational.d.ts +15 -12
- package/dist/es/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/es/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/es/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client.d.ts +1 -1
- package/dist/es/services/registry-broker/client.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +141 -58
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +2 -2
- package/dist/es/standards-sdk.es103.js +2 -2
- package/dist/es/standards-sdk.es104.js +1 -1
- package/dist/es/standards-sdk.es106.js +1 -1
- package/dist/es/standards-sdk.es108.js +2 -2
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es111.js +2 -2
- package/dist/es/standards-sdk.es115.js +3 -3
- package/dist/es/standards-sdk.es116.js +4 -4
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +4 -4
- package/dist/es/standards-sdk.es121.js +11 -11
- package/dist/es/standards-sdk.es122.js +176 -240
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +41 -468
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +28 -103
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +185 -145
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +13 -33
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +44 -10
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +150 -172
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +166 -26
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es130.js +375 -18
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +371 -139
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +211 -180
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +210 -770
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +376 -10
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +118 -564
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +233 -608
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +1328 -12
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +133 -2
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +258 -74
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +1 -1
- package/dist/es/standards-sdk.es140.js +104 -38
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +252 -2
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +446 -203
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +104 -1139
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +144 -290
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +31 -419
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +10 -353
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +144 -1084
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +25 -204
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +17 -1562
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es150.js +128 -1134
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +199 -14
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +774 -367
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +10 -256
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +567 -4
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +619 -74
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +12 -86
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +2 -60
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +87 -2547
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +36 -155
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +6 -6
- package/dist/es/standards-sdk.es160.js +2 -7
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +223 -74
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +1122 -47
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +299 -187
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +419 -23
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +352 -55
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +1113 -86
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +200 -41
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +1551 -188
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +1161 -51
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +15 -47
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +445 -50
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +255 -45
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +4 -122
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +77 -50
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +85 -42
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +60 -72
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +2544 -65
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +159 -44
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +7 -36
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +13 -13
- package/dist/es/standards-sdk.es180.js +86 -30
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +65 -34
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +196 -48
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +23 -135
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +54 -38
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +102 -12470
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +53 -52
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es187.js +223 -103
- package/dist/es/standards-sdk.es187.js.map +1 -1
- package/dist/es/standards-sdk.es188.js +66 -75
- package/dist/es/standards-sdk.es188.js.map +1 -1
- package/dist/es/standards-sdk.es189.js +46 -197
- package/dist/es/standards-sdk.es189.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +10 -10
- package/dist/es/standards-sdk.es190.js +60 -15
- package/dist/es/standards-sdk.es190.js.map +1 -1
- package/dist/es/standards-sdk.es191.js +47 -670
- package/dist/es/standards-sdk.es191.js.map +1 -1
- package/dist/es/standards-sdk.es192.js +112 -162
- package/dist/es/standards-sdk.es192.js.map +1 -1
- package/dist/es/standards-sdk.es193.js +53 -318
- package/dist/es/standards-sdk.es193.js.map +1 -1
- package/dist/es/standards-sdk.es194.js +54 -341
- package/dist/es/standards-sdk.es194.js.map +1 -1
- package/dist/es/standards-sdk.es195.js +72 -453
- package/dist/es/standards-sdk.es195.js.map +1 -1
- package/dist/es/standards-sdk.es196.js +75 -331
- package/dist/es/standards-sdk.es196.js.map +1 -1
- package/dist/es/standards-sdk.es197.js +44 -76
- package/dist/es/standards-sdk.es197.js.map +1 -1
- package/dist/es/standards-sdk.es198.js +30 -67
- package/dist/es/standards-sdk.es198.js.map +1 -1
- package/dist/es/standards-sdk.es199.js +30 -139
- package/dist/es/standards-sdk.es199.js.map +1 -1
- package/dist/es/standards-sdk.es2.js +2 -2
- package/dist/es/standards-sdk.es20.js +1 -1
- package/dist/es/standards-sdk.es200.js +34 -517
- package/dist/es/standards-sdk.es200.js.map +1 -1
- package/dist/es/standards-sdk.es201.js +48 -259
- package/dist/es/standards-sdk.es201.js.map +1 -1
- package/dist/es/standards-sdk.es202.js +127 -185
- package/dist/es/standards-sdk.es202.js.map +1 -1
- package/dist/es/standards-sdk.es203.js +36 -113
- package/dist/es/standards-sdk.es203.js.map +1 -1
- package/dist/es/standards-sdk.es204.js +12464 -134
- package/dist/es/standards-sdk.es204.js.map +1 -1
- package/dist/es/standards-sdk.es205.js +14 -181
- package/dist/es/standards-sdk.es205.js.map +1 -1
- package/dist/es/standards-sdk.es206.js +55 -683
- package/dist/es/standards-sdk.es206.js.map +1 -1
- package/dist/es/standards-sdk.es207.js +93 -167
- package/dist/es/standards-sdk.es207.js.map +1 -1
- package/dist/es/standards-sdk.es208.js +71 -225
- package/dist/es/standards-sdk.es208.js.map +1 -1
- package/dist/es/standards-sdk.es209.js +176 -215
- package/dist/es/standards-sdk.es209.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +1 -1
- package/dist/es/standards-sdk.es210.js +675 -0
- package/dist/es/standards-sdk.es210.js.map +1 -0
- package/dist/es/standards-sdk.es211.js +76 -0
- package/dist/es/standards-sdk.es211.js.map +1 -0
- package/dist/es/standards-sdk.es212.js +175 -0
- package/dist/es/standards-sdk.es212.js.map +1 -0
- package/dist/es/standards-sdk.es213.js +325 -0
- package/dist/es/standards-sdk.es213.js.map +1 -0
- package/dist/es/standards-sdk.es214.js +349 -0
- package/dist/es/standards-sdk.es214.js.map +1 -0
- package/dist/es/standards-sdk.es215.js +456 -0
- package/dist/es/standards-sdk.es215.js.map +1 -0
- package/dist/es/standards-sdk.es216.js +334 -0
- package/dist/es/standards-sdk.es216.js.map +1 -0
- package/dist/es/standards-sdk.es217.js +79 -0
- package/dist/es/standards-sdk.es217.js.map +1 -0
- package/dist/es/standards-sdk.es218.js +142 -0
- package/dist/es/standards-sdk.es218.js.map +1 -0
- package/dist/es/standards-sdk.es219.js +520 -0
- package/dist/es/standards-sdk.es219.js.map +1 -0
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es220.js +262 -0
- package/dist/es/standards-sdk.es220.js.map +1 -0
- package/dist/es/standards-sdk.es221.js +199 -0
- package/dist/es/standards-sdk.es221.js.map +1 -0
- package/dist/es/standards-sdk.es222.js +122 -0
- package/dist/es/standards-sdk.es222.js.map +1 -0
- package/dist/es/standards-sdk.es223.js +155 -0
- package/dist/es/standards-sdk.es223.js.map +1 -0
- package/dist/es/standards-sdk.es224.js +187 -0
- package/dist/es/standards-sdk.es224.js.map +1 -0
- package/dist/es/standards-sdk.es225.js +687 -0
- package/dist/es/standards-sdk.es225.js.map +1 -0
- package/dist/es/standards-sdk.es226.js +188 -0
- package/dist/es/standards-sdk.es226.js.map +1 -0
- package/dist/es/standards-sdk.es227.js +238 -0
- package/dist/es/standards-sdk.es227.js.map +1 -0
- package/dist/es/standards-sdk.es228.js +242 -0
- package/dist/es/standards-sdk.es228.js.map +1 -0
- package/dist/es/standards-sdk.es23.js +1 -1
- package/dist/es/standards-sdk.es24.js +1 -1
- package/dist/es/standards-sdk.es25.js +1 -1
- package/dist/es/standards-sdk.es26.js +1 -1
- package/dist/es/standards-sdk.es27.js +13 -13
- package/dist/es/standards-sdk.es30.js +2 -2
- package/dist/es/standards-sdk.es31.js +4 -4
- package/dist/es/standards-sdk.es32.js +1 -1
- package/dist/es/standards-sdk.es35.js +7 -7
- package/dist/es/standards-sdk.es36.js +4 -4
- package/dist/es/standards-sdk.es37.js +2 -2
- package/dist/es/standards-sdk.es38.js +2 -2
- package/dist/es/standards-sdk.es39.js +1 -1
- package/dist/es/standards-sdk.es4.js +2 -2
- package/dist/es/standards-sdk.es40.js +1 -1
- package/dist/es/standards-sdk.es41.js +2 -2
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es5.js +2 -2
- package/dist/es/standards-sdk.es51.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +2 -2
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es6.js +2 -2
- package/dist/es/standards-sdk.es60.js +1 -1
- package/dist/es/standards-sdk.es62.js +1 -1
- package/dist/es/standards-sdk.es63.js +2 -2
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +1 -1
- package/dist/es/standards-sdk.es67.js +8 -8
- package/dist/es/standards-sdk.es69.js +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es71.js +2 -2
- package/dist/es/standards-sdk.es72.js +3 -3
- package/dist/es/standards-sdk.es75.js +5 -5
- package/dist/es/standards-sdk.es76.js +3 -3
- package/dist/es/standards-sdk.es77.js +2 -2
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es81.js +2 -2
- package/dist/es/standards-sdk.es83.js +2 -2
- package/dist/es/standards-sdk.es84.js +5 -5
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es89.js +2 -2
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es90.js +4 -4
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es96.js +2 -2
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +3 -3
- package/package.json +1 -1
|
@@ -1,163 +1,395 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { readString, readSubjectAdditional, isJsonObject } from "./standards-sdk.es198.js";
|
|
2
|
+
import "./standards-sdk.es182.js";
|
|
3
|
+
import "./standards-sdk.es195.js";
|
|
4
|
+
import "./standards-sdk.es196.js";
|
|
5
|
+
import "./standards-sdk.es197.js";
|
|
6
|
+
import { resolveSubjectEndpoint } from "./standards-sdk.es127.js";
|
|
7
|
+
import { requestJson, requestText, Hcs25CollectorHttpError, isTimeoutError } from "./standards-sdk.es122.js";
|
|
8
|
+
const GITHUB_API_BASE = "https://api.github.com";
|
|
9
|
+
const NPM_API_BASE = "https://api.npmjs.org";
|
|
10
|
+
const NPM_REGISTRY_BASE = "https://registry.npmjs.org";
|
|
11
|
+
const PYPISTATS_API_BASE = "https://pypistats.org/api";
|
|
12
|
+
const PYPI_API_BASE = "https://pypi.org/pypi";
|
|
13
|
+
const RAW_GITHUB_BASE = "https://raw.githubusercontent.com";
|
|
14
|
+
const GITHUB_REPO_PATTERN = /github\.com[:/]+([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)/;
|
|
15
|
+
function parseGithubRepo(value) {
|
|
16
|
+
if (!value) {
|
|
17
|
+
return null;
|
|
16
18
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
const direct = value.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);
|
|
20
|
+
if (direct) {
|
|
21
|
+
return `${direct[1]}/${direct[2]}`;
|
|
22
|
+
}
|
|
23
|
+
const match = value.match(GITHUB_REPO_PATTERN);
|
|
24
|
+
if (!match) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return `${match[1]}/${match[2].replace(/\.git$/, "")}`;
|
|
28
|
+
}
|
|
29
|
+
function resolveGithubRepo(subject) {
|
|
30
|
+
const additional = readSubjectAdditional(subject);
|
|
31
|
+
const metadata = subject.metadata ?? {};
|
|
32
|
+
const mcp = isJsonObject(metadata.mcp) ? metadata.mcp : void 0;
|
|
33
|
+
for (const value of [
|
|
34
|
+
readString(additional, "githubRepo"),
|
|
35
|
+
readString(additional, "repository"),
|
|
36
|
+
readString(metadata, "repository"),
|
|
37
|
+
readString(mcp, "repository"),
|
|
38
|
+
readString(metadata, "repoUrl"),
|
|
39
|
+
readString(additional, "repoUrl"),
|
|
40
|
+
readString(metadata, "homepage"),
|
|
41
|
+
readString(additional, "homepage"),
|
|
42
|
+
resolveSubjectEndpoint(subject)
|
|
43
|
+
]) {
|
|
44
|
+
const repo = parseGithubRepo(value);
|
|
45
|
+
if (repo) {
|
|
46
|
+
return repo;
|
|
36
47
|
}
|
|
37
|
-
return ProgressReporter.instance;
|
|
38
48
|
}
|
|
39
|
-
|
|
40
|
-
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
function resolvePackage(subject) {
|
|
52
|
+
const additional = readSubjectAdditional(subject);
|
|
53
|
+
const registry = readString(additional, "packageRegistry");
|
|
54
|
+
const name = readString(additional, "packageName");
|
|
55
|
+
if (name && (registry === "npm" || registry === "pypi")) {
|
|
56
|
+
return { registry, name };
|
|
41
57
|
}
|
|
42
|
-
|
|
43
|
-
|
|
58
|
+
if (name) {
|
|
59
|
+
return { registry: "npm", name };
|
|
44
60
|
}
|
|
45
|
-
|
|
46
|
-
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function statusFromError(error) {
|
|
64
|
+
if (error instanceof Hcs25CollectorHttpError && error.status === 404) {
|
|
65
|
+
return "missing";
|
|
47
66
|
}
|
|
48
|
-
|
|
49
|
-
|
|
67
|
+
return isTimeoutError(error) ? "timeout" : "error";
|
|
68
|
+
}
|
|
69
|
+
const parseLikelyPackageName = (value) => {
|
|
70
|
+
if (!value) {
|
|
71
|
+
return null;
|
|
50
72
|
}
|
|
51
|
-
|
|
52
|
-
|
|
73
|
+
const trimmed = value.trim();
|
|
74
|
+
return /^[a-zA-Z0-9._~@/-]{1,214}$/.test(trimmed) ? trimmed : null;
|
|
75
|
+
};
|
|
76
|
+
const parseNpmPackageName = (body) => {
|
|
77
|
+
try {
|
|
78
|
+
const parsed = JSON.parse(body);
|
|
79
|
+
return typeof parsed.name === "string" ? parsed.name : null;
|
|
80
|
+
} catch {
|
|
81
|
+
return null;
|
|
53
82
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
83
|
+
};
|
|
84
|
+
const parsePyProjectName = (body) => {
|
|
85
|
+
const match = body.match(/^\s*name\s*=\s*["']([^"']+)["']/m);
|
|
86
|
+
return match?.[1] ?? null;
|
|
87
|
+
};
|
|
88
|
+
const parseSetupCfgName = (body) => {
|
|
89
|
+
const match = body.match(/^\s*name\s*=\s*(\S+)\s*$/m);
|
|
90
|
+
return match?.[1] ?? null;
|
|
91
|
+
};
|
|
92
|
+
async function inferPackageIdentity(repo, context) {
|
|
93
|
+
const base = `${RAW_GITHUB_BASE}/${repo.split("/").map(encodeURIComponent).join("/")}`;
|
|
94
|
+
let npmName = null;
|
|
95
|
+
let pypiName = null;
|
|
96
|
+
for (const branch of ["main", "master"]) {
|
|
97
|
+
if (!npmName) {
|
|
98
|
+
try {
|
|
99
|
+
const body = await requestText(`${base}/${branch}/package.json`, {
|
|
100
|
+
fetch: context.fetch,
|
|
101
|
+
timeoutMs: context.timeoutMs,
|
|
102
|
+
signal: context.signal
|
|
103
|
+
});
|
|
104
|
+
npmName = parseLikelyPackageName(parseNpmPackageName(body));
|
|
105
|
+
} catch {
|
|
72
106
|
}
|
|
73
|
-
this.report({
|
|
74
|
-
stage: data.stage,
|
|
75
|
-
message: formattedMessage,
|
|
76
|
-
progressPercent: scaledPercent,
|
|
77
|
-
details: data.details
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
return subReporter;
|
|
81
|
-
}
|
|
82
|
-
report(data) {
|
|
83
|
-
const rawPercent = data.progressPercent;
|
|
84
|
-
const percent = Math.max(0, Math.min(100, rawPercent));
|
|
85
|
-
const scaledPercent = this.scalePercent(percent, 0, 100);
|
|
86
|
-
const now = Date.now();
|
|
87
|
-
if (scaledPercent === this.lastReportedPercent && now - this.lastReportedTime < this.throttleMs && data.stage !== "completed" && data.stage !== "failed") {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
this.lastReportedPercent = scaledPercent;
|
|
91
|
-
this.lastReportedTime = now;
|
|
92
|
-
const progressData = {
|
|
93
|
-
...data,
|
|
94
|
-
progressPercent: scaledPercent
|
|
95
|
-
};
|
|
96
|
-
if (this.logProgress) {
|
|
97
|
-
this.logger.debug(
|
|
98
|
-
`[${this.module}] [${data.stage.toUpperCase()}] ${data.message} (${scaledPercent.toFixed(1)}%)`,
|
|
99
|
-
data.details
|
|
100
|
-
);
|
|
101
107
|
}
|
|
102
|
-
if (
|
|
108
|
+
if (!pypiName) {
|
|
103
109
|
try {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
const body = await requestText(`${base}/${branch}/pyproject.toml`, {
|
|
111
|
+
fetch: context.fetch,
|
|
112
|
+
timeoutMs: context.timeoutMs,
|
|
113
|
+
signal: context.signal
|
|
114
|
+
});
|
|
115
|
+
pypiName = parseLikelyPackageName(parsePyProjectName(body));
|
|
116
|
+
} catch {
|
|
117
|
+
try {
|
|
118
|
+
const body = await requestText(`${base}/${branch}/setup.cfg`, {
|
|
119
|
+
fetch: context.fetch,
|
|
120
|
+
timeoutMs: context.timeoutMs,
|
|
121
|
+
signal: context.signal
|
|
122
|
+
});
|
|
123
|
+
pypiName = parseLikelyPackageName(parseSetupCfgName(body));
|
|
124
|
+
} catch {
|
|
125
|
+
}
|
|
107
126
|
}
|
|
108
127
|
}
|
|
128
|
+
if (npmName || pypiName) {
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
109
131
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const sourceRange = sourceMax - sourceMin;
|
|
113
|
-
const scaleFactor = range / sourceRange;
|
|
114
|
-
return this.minPercent + (percent - sourceMin) * scaleFactor;
|
|
115
|
-
}
|
|
116
|
-
preparing(message, percent, details) {
|
|
117
|
-
this.report({
|
|
118
|
-
stage: "preparing",
|
|
119
|
-
message,
|
|
120
|
-
progressPercent: percent,
|
|
121
|
-
details
|
|
122
|
-
});
|
|
132
|
+
if (npmName && !pypiName) {
|
|
133
|
+
return { registry: "npm", name: npmName };
|
|
123
134
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
stage: "submitting",
|
|
127
|
-
message,
|
|
128
|
-
progressPercent: percent,
|
|
129
|
-
details
|
|
130
|
-
});
|
|
135
|
+
if (pypiName && !npmName) {
|
|
136
|
+
return { registry: "pypi", name: pypiName };
|
|
131
137
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
async function inferRepositoryFromPackage(pkg, context) {
|
|
141
|
+
const candidates = [];
|
|
142
|
+
try {
|
|
143
|
+
if (pkg.registry === "pypi") {
|
|
144
|
+
const payload = await requestJson(`${PYPI_API_BASE}/${encodeURIComponent(pkg.name)}/json`, {
|
|
145
|
+
fetch: context.fetch,
|
|
146
|
+
timeoutMs: context.timeoutMs,
|
|
147
|
+
signal: context.signal
|
|
148
|
+
});
|
|
149
|
+
const home = payload.info?.home_page;
|
|
150
|
+
if (typeof home === "string") {
|
|
151
|
+
candidates.push(home);
|
|
152
|
+
}
|
|
153
|
+
const urls = payload.info?.project_urls;
|
|
154
|
+
if (urls && typeof urls === "object" && !Array.isArray(urls)) {
|
|
155
|
+
for (const value of Object.values(urls)) {
|
|
156
|
+
if (typeof value === "string") {
|
|
157
|
+
candidates.push(value);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
} else {
|
|
162
|
+
const payload = await requestJson(`${NPM_REGISTRY_BASE}/${encodeURIComponent(pkg.name)}`, {
|
|
163
|
+
fetch: context.fetch,
|
|
164
|
+
timeoutMs: context.timeoutMs,
|
|
165
|
+
signal: context.signal
|
|
166
|
+
});
|
|
167
|
+
const repo = payload.repository && typeof payload.repository === "object" && !Array.isArray(payload.repository) ? payload.repository.url : payload.repository;
|
|
168
|
+
if (typeof repo === "string") {
|
|
169
|
+
candidates.push(repo);
|
|
170
|
+
}
|
|
171
|
+
if (typeof payload.homepage === "string") {
|
|
172
|
+
candidates.push(payload.homepage);
|
|
173
|
+
}
|
|
174
|
+
const bugs = payload.bugs && typeof payload.bugs === "object" && !Array.isArray(payload.bugs) ? payload.bugs.url : payload.bugs;
|
|
175
|
+
if (typeof bugs === "string") {
|
|
176
|
+
candidates.push(bugs);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
} catch {
|
|
180
|
+
return null;
|
|
139
181
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
details
|
|
146
|
-
});
|
|
182
|
+
for (const candidate of candidates) {
|
|
183
|
+
const repo = parseGithubRepo(candidate);
|
|
184
|
+
if (repo) {
|
|
185
|
+
return repo;
|
|
186
|
+
}
|
|
147
187
|
}
|
|
148
|
-
|
|
149
|
-
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
async function fetchGithubStarsViaHtml(repo, context) {
|
|
191
|
+
const url = `https://github.com/${repo.split("/").map(encodeURIComponent).join("/")}`;
|
|
192
|
+
const body = await requestText(url, {
|
|
193
|
+
fetch: context.fetch,
|
|
194
|
+
timeoutMs: context.timeoutMs,
|
|
195
|
+
signal: context.signal,
|
|
196
|
+
headers: { accept: "text/html" }
|
|
197
|
+
});
|
|
198
|
+
const match = body.match(
|
|
199
|
+
/id="repo-stars-counter-star"[^>]*aria-label="(?<count>[0-9,]+)\s+users?\s+starred/i
|
|
200
|
+
) ?? body.match(/id="repo-stars-counter-star"[^>]*title="(?<count>[0-9,]+)"/i);
|
|
201
|
+
const raw = match?.groups?.count;
|
|
202
|
+
if (!raw) {
|
|
203
|
+
return null;
|
|
150
204
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
205
|
+
const parsed = Number(raw.replace(/,/g, ""));
|
|
206
|
+
return Number.isFinite(parsed) ? Math.max(0, Math.floor(parsed)) : null;
|
|
207
|
+
}
|
|
208
|
+
function createOssPopularitySignalAdapter(options = {}) {
|
|
209
|
+
const collect = async (subject, context) => {
|
|
210
|
+
const now = context.now.toISOString();
|
|
211
|
+
let repo = resolveGithubRepo(subject);
|
|
212
|
+
let pkg = resolvePackage(subject);
|
|
213
|
+
if (!repo && pkg && options.inferRepository !== false) {
|
|
214
|
+
repo = await inferRepositoryFromPackage(pkg, context).catch(
|
|
215
|
+
() => null
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
if (!pkg && repo && options.inferPackageIdentity !== false) {
|
|
219
|
+
pkg = await inferPackageIdentity(repo, context).catch(() => null);
|
|
220
|
+
}
|
|
221
|
+
const results = [];
|
|
222
|
+
const additional = {};
|
|
223
|
+
if (repo) {
|
|
224
|
+
additional.githubRepo = repo;
|
|
225
|
+
additional.packageRepositoryUpdatedAt = now;
|
|
226
|
+
try {
|
|
227
|
+
const headers = {
|
|
228
|
+
accept: "application/vnd.github+json"
|
|
229
|
+
};
|
|
230
|
+
if (options.githubToken) {
|
|
231
|
+
headers.authorization = `Bearer ${options.githubToken}`;
|
|
232
|
+
}
|
|
233
|
+
let stars = null;
|
|
234
|
+
try {
|
|
235
|
+
const data = await requestJson(
|
|
236
|
+
`${options.githubApiBase ?? GITHUB_API_BASE}/repos/${repo}`,
|
|
237
|
+
{
|
|
238
|
+
fetch: context.fetch,
|
|
239
|
+
headers,
|
|
240
|
+
timeoutMs: context.timeoutMs,
|
|
241
|
+
signal: context.signal
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
stars = typeof data.stargazers_count === "number" ? Math.max(0, Math.floor(data.stargazers_count)) : null;
|
|
245
|
+
} catch (error) {
|
|
246
|
+
if (options.githubHtmlFallback === false) {
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (stars === null && options.githubHtmlFallback !== false) {
|
|
251
|
+
stars = await fetchGithubStarsViaHtml(repo, context).catch(
|
|
252
|
+
() => null
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
additional.githubStars = stars;
|
|
256
|
+
additional.githubStarsUpdatedAt = now;
|
|
257
|
+
results.push({
|
|
258
|
+
signalId: "oss.github_stars",
|
|
259
|
+
status: stars === null ? "missing" : "ok",
|
|
260
|
+
value: stars,
|
|
261
|
+
provenance: {
|
|
262
|
+
source: "github",
|
|
263
|
+
sourceUrl: `${options.githubApiBase ?? GITHUB_API_BASE}/repos/${repo}`,
|
|
264
|
+
subjectId: repo,
|
|
265
|
+
fetchedAt: now
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
} catch (error) {
|
|
269
|
+
results.push({
|
|
270
|
+
signalId: "oss.github_stars",
|
|
271
|
+
status: statusFromError(error),
|
|
272
|
+
provenance: {
|
|
273
|
+
source: "github",
|
|
274
|
+
subjectId: repo,
|
|
275
|
+
fetchedAt: now
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (pkg) {
|
|
281
|
+
additional.packageRegistry = pkg.registry;
|
|
282
|
+
additional.packageName = pkg.name;
|
|
283
|
+
additional.packageIdentityUpdatedAt = now;
|
|
284
|
+
const signalId = pkg.registry === "npm" ? "oss.npm_downloads" : "oss.pypi_downloads";
|
|
285
|
+
try {
|
|
286
|
+
if (pkg.registry === "npm") {
|
|
287
|
+
const data = await requestJson(
|
|
288
|
+
`${options.npmApiBase ?? NPM_API_BASE}/downloads/point/last-month/${encodeURIComponent(pkg.name)}`,
|
|
289
|
+
{
|
|
290
|
+
fetch: context.fetch,
|
|
291
|
+
timeoutMs: context.timeoutMs,
|
|
292
|
+
signal: context.signal
|
|
293
|
+
}
|
|
294
|
+
);
|
|
295
|
+
const downloads = typeof data.downloads === "number" ? Math.max(0, Math.floor(data.downloads)) : null;
|
|
296
|
+
additional.npmDownloads30d = downloads;
|
|
297
|
+
additional.npmDownloadsUpdatedAt = now;
|
|
298
|
+
if (downloads !== null) {
|
|
299
|
+
additional.packageDownloadCount = downloads;
|
|
300
|
+
}
|
|
301
|
+
results.push({
|
|
302
|
+
signalId,
|
|
303
|
+
status: downloads === null ? "missing" : "ok",
|
|
304
|
+
value: downloads,
|
|
305
|
+
provenance: {
|
|
306
|
+
source: "npm",
|
|
307
|
+
subjectId: pkg.name,
|
|
308
|
+
fetchedAt: now
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
} else {
|
|
312
|
+
const data = await requestJson(
|
|
313
|
+
`${options.pypiApiBase ?? PYPISTATS_API_BASE}/packages/${encodeURIComponent(pkg.name)}/recent`,
|
|
314
|
+
{
|
|
315
|
+
fetch: context.fetch,
|
|
316
|
+
timeoutMs: context.timeoutMs,
|
|
317
|
+
signal: context.signal
|
|
318
|
+
}
|
|
319
|
+
);
|
|
320
|
+
const downloads = typeof data.data?.last_month === "number" ? Math.max(0, Math.floor(data.data.last_month)) : null;
|
|
321
|
+
additional.pypiDownloads30d = downloads;
|
|
322
|
+
additional.pypiDownloadsUpdatedAt = now;
|
|
323
|
+
if (downloads !== null) {
|
|
324
|
+
additional.packageDownloadCount = downloads;
|
|
325
|
+
}
|
|
326
|
+
results.push({
|
|
327
|
+
signalId,
|
|
328
|
+
status: downloads === null ? "missing" : "ok",
|
|
329
|
+
value: downloads,
|
|
330
|
+
provenance: {
|
|
331
|
+
source: "pypi",
|
|
332
|
+
subjectId: pkg.name,
|
|
333
|
+
fetchedAt: now
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
} catch (error) {
|
|
338
|
+
results.push({
|
|
339
|
+
signalId,
|
|
340
|
+
status: statusFromError(error),
|
|
341
|
+
provenance: {
|
|
342
|
+
source: pkg.registry,
|
|
343
|
+
subjectId: pkg.name,
|
|
344
|
+
fetchedAt: now
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (results.length === 0) {
|
|
350
|
+
return [
|
|
351
|
+
{
|
|
352
|
+
signalId: "oss.github_stars",
|
|
353
|
+
status: "missing"
|
|
354
|
+
}
|
|
355
|
+
];
|
|
356
|
+
}
|
|
357
|
+
const rootValues = {};
|
|
358
|
+
if (repo && !readString(subject.metadata ?? {}, "repository")) {
|
|
359
|
+
rootValues.repository = `https://github.com/${repo}`;
|
|
360
|
+
}
|
|
361
|
+
results.push({
|
|
362
|
+
signalId: "oss.popularity",
|
|
363
|
+
status: "ok",
|
|
364
|
+
fields: [
|
|
365
|
+
{ scope: "additional", values: additional },
|
|
366
|
+
...Object.keys(rootValues).length > 0 ? [{ scope: "root", values: rootValues }] : []
|
|
367
|
+
],
|
|
368
|
+
provenance: {
|
|
369
|
+
source: "oss-popularity",
|
|
370
|
+
subjectId: subject.id,
|
|
371
|
+
fetchedAt: now
|
|
372
|
+
}
|
|
157
373
|
});
|
|
158
|
-
|
|
374
|
+
return results;
|
|
375
|
+
};
|
|
376
|
+
return {
|
|
377
|
+
id: "oss-popularity",
|
|
378
|
+
produces: [
|
|
379
|
+
"oss.github_stars",
|
|
380
|
+
"oss.npm_downloads",
|
|
381
|
+
"oss.pypi_downloads",
|
|
382
|
+
"oss.popularity"
|
|
383
|
+
],
|
|
384
|
+
timeoutMs: options.timeoutMs,
|
|
385
|
+
includeRegistries: options.includeRegistries,
|
|
386
|
+
excludeRegistries: options.excludeRegistries,
|
|
387
|
+
appliesTo: options.appliesTo,
|
|
388
|
+
collect
|
|
389
|
+
};
|
|
159
390
|
}
|
|
160
391
|
export {
|
|
161
|
-
|
|
392
|
+
createOssPopularitySignalAdapter,
|
|
393
|
+
parseGithubRepo
|
|
162
394
|
};
|
|
163
395
|
//# sourceMappingURL=standards-sdk.es131.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es131.js","sources":["../../src/utils/progress-reporter.ts"],"sourcesContent":["import { Logger, ILogger } from './logger';\n\nexport type ProgressStage =\n | 'preparing'\n | 'submitting'\n | 'confirming'\n | 'verifying'\n | 'completed'\n | 'failed';\n\nexport interface ProgressData {\n stage: ProgressStage;\n message: string;\n progressPercent: number;\n details?: Record<string, any>;\n}\n\nexport type ProgressCallback = (data: ProgressData) => void;\n\nexport interface ProgressReporterOptions {\n module?: string;\n callback?: ProgressCallback;\n logger?: ILogger;\n logProgress?: boolean;\n minPercent?: number;\n maxPercent?: number;\n}\n\n/**\n * ProgressReporter is a singleton class that reports progress of a task.\n * Can be used in a generalized fashion.\n */\nexport class ProgressReporter {\n private static instance: ProgressReporter;\n private module: string;\n private callback?: ProgressCallback;\n private logger: ILogger;\n private logProgress: boolean;\n private minPercent: number;\n private maxPercent: number;\n private lastReportedPercent: number;\n private lastReportedTime: number;\n private throttleMs: number;\n\n constructor(options: ProgressReporterOptions = {}) {\n this.module = options.module || 'Progress';\n this.callback = options.callback;\n this.logger =\n options.logger ||\n new Logger({\n level: 'info',\n module: 'ProgressReporter',\n });\n this.logProgress = options.logProgress ?? true;\n this.minPercent = options.minPercent ?? 0;\n this.maxPercent = options.maxPercent ?? 100;\n this.lastReportedPercent = -1;\n this.lastReportedTime = 0;\n this.throttleMs = 100;\n }\n\n static getInstance(options: ProgressReporterOptions = {}): ProgressReporter {\n if (!ProgressReporter.instance) {\n ProgressReporter.instance = new ProgressReporter(options);\n } else {\n if (options.callback) {\n ProgressReporter.instance.setCallback(options.callback);\n }\n if (options.module) {\n ProgressReporter.instance.setModule(options.module);\n }\n if (options.logger) {\n ProgressReporter.instance.setLogger(options.logger);\n }\n if (options.minPercent !== undefined) {\n ProgressReporter.instance.setMinPercent(options.minPercent);\n }\n if (options.maxPercent !== undefined) {\n ProgressReporter.instance.setMaxPercent(options.maxPercent);\n }\n }\n return ProgressReporter.instance;\n }\n\n setCallback(callback: ProgressCallback): void {\n this.callback = callback;\n }\n\n setModule(module: string): void {\n this.module = module;\n }\n\n setLogger(logger: ILogger): void {\n this.logger = logger;\n }\n\n setMinPercent(minPercent: number): void {\n this.minPercent = minPercent;\n }\n\n setMaxPercent(maxPercent: number): void {\n this.maxPercent = maxPercent;\n }\n\n createSubProgress(options: {\n minPercent: number;\n maxPercent: number;\n logPrefix?: string;\n }): ProgressReporter {\n const subReporter = new ProgressReporter({\n module: this.module,\n logger: this.logger,\n logProgress: this.logProgress,\n minPercent: options.minPercent,\n maxPercent: options.maxPercent,\n });\n\n const logPrefix = options.logPrefix || '';\n\n subReporter.setCallback(data => {\n const scaledPercent = this.scalePercent(\n data.progressPercent,\n options.minPercent,\n options.maxPercent,\n );\n\n let formattedMessage = data.message;\n if (logPrefix && !formattedMessage.startsWith(logPrefix)) {\n formattedMessage = `${logPrefix}: ${formattedMessage}`;\n }\n\n this.report({\n stage: data.stage,\n message: formattedMessage,\n progressPercent: scaledPercent,\n details: data.details,\n });\n });\n\n return subReporter;\n }\n\n report(data: ProgressData): void {\n const rawPercent = data.progressPercent;\n const percent = Math.max(0, Math.min(100, rawPercent));\n\n const scaledPercent = this.scalePercent(percent, 0, 100);\n\n const now = Date.now();\n if (\n scaledPercent === this.lastReportedPercent &&\n now - this.lastReportedTime < this.throttleMs &&\n data.stage !== 'completed' &&\n data.stage !== 'failed'\n ) {\n return;\n }\n\n this.lastReportedPercent = scaledPercent;\n this.lastReportedTime = now;\n\n const progressData = {\n ...data,\n progressPercent: scaledPercent,\n };\n\n if (this.logProgress) {\n this.logger.debug(\n `[${this.module}] [${data.stage.toUpperCase()}] ${\n data.message\n } (${scaledPercent.toFixed(1)}%)`,\n data.details,\n );\n }\n\n if (this.callback) {\n try {\n this.callback(progressData);\n } catch (err) {\n this.logger.warn(`Error in progress callback: ${err}`);\n }\n }\n }\n\n private scalePercent(\n percent: number,\n sourceMin: number,\n sourceMax: number,\n ): number {\n const range = this.maxPercent - this.minPercent;\n const sourceRange = sourceMax - sourceMin;\n const scaleFactor = range / sourceRange;\n\n return this.minPercent + (percent - sourceMin) * scaleFactor;\n }\n\n preparing(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'preparing',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n submitting(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'submitting',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n confirming(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'confirming',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n verifying(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'verifying',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n completed(message: string, details?: Record<string, any>): void {\n this.report({ stage: 'completed', message, progressPercent: 100, details });\n }\n\n failed(message: string, details?: Record<string, any>): void {\n this.report({\n stage: 'failed',\n message,\n progressPercent: this.lastReportedPercent,\n details,\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es131.js","sources":["../../src/hcs-25/collectors/oss-popularity.ts"],"sourcesContent":["import type { Hcs25JsonValue, Hcs25Subject } from '../types';\nimport { isJsonObject, readString, readSubjectAdditional } from '../signals';\nimport { resolveSubjectEndpoint } from './endpoints';\nimport {\n Hcs25CollectorHttpError,\n isTimeoutError,\n requestJson,\n requestText,\n} from './http';\nimport type {\n Hcs25CollectContext,\n Hcs25SignalAdapter,\n Hcs25SignalAdapterResult,\n Hcs25SignalStatus,\n} from './types';\n\nconst GITHUB_API_BASE = 'https://api.github.com';\nconst NPM_API_BASE = 'https://api.npmjs.org';\nconst NPM_REGISTRY_BASE = 'https://registry.npmjs.org';\nconst PYPISTATS_API_BASE = 'https://pypistats.org/api';\nconst PYPI_API_BASE = 'https://pypi.org/pypi';\nconst RAW_GITHUB_BASE = 'https://raw.githubusercontent.com';\n\nconst GITHUB_REPO_PATTERN =\n /github\\.com[:/]+([A-Za-z0-9_.-]+)\\/([A-Za-z0-9_.-]+)/;\n\n/**\n * Options for the OSS popularity signal adapter.\n */\nexport interface Hcs25OssPopularitySignalAdapterOptions {\n /** GitHub API base URL. Default `https://api.github.com`. */\n githubApiBase?: string;\n /** Optional GitHub token for higher rate limits. */\n githubToken?: string;\n /** npm downloads API base. Default `https://api.npmjs.org`. */\n npmApiBase?: string;\n /** pypistats API base. Default `https://pypistats.org/api`. */\n pypiApiBase?: string;\n /**\n * When no GitHub repo is declared, infer one from the package's\n * registry metadata (npm `repository.url`, PyPI `project_urls` /\n * `home_page`). Default true.\n */\n inferRepository?: boolean;\n /**\n * When no package identity is declared, infer one from the repo's\n * `package.json` / `pyproject.toml` / `setup.cfg` on `main`/`master`.\n * Default true.\n */\n inferPackageIdentity?: boolean;\n /**\n * When the GitHub API lookup fails or returns no star count, scrape the\n * repo page's star counter as a fallback. Default true.\n */\n githubHtmlFallback?: boolean;\n /** Per-adapter timeout in milliseconds. */\n timeoutMs?: number;\n includeRegistries?: readonly string[];\n excludeRegistries?: readonly string[];\n appliesTo?: (subject: Hcs25Subject) => boolean;\n}\n\n/**\n * Extracts an `owner/repo` pair from a free-form value (URL, git SSH form,\n * or an already-normalized `owner/repo` slug).\n */\nexport function parseGithubRepo(value: string | null): string | null {\n if (!value) {\n return null;\n }\n const direct = value.match(/^([A-Za-z0-9_.-]+)\\/([A-Za-z0-9_.-]+)$/);\n if (direct) {\n return `${direct[1]}/${direct[2]}`;\n }\n const match = value.match(GITHUB_REPO_PATTERN);\n if (!match) {\n return null;\n }\n return `${match[1]}/${match[2].replace(/\\.git$/, '')}`;\n}\n\nfunction resolveGithubRepo(subject: Hcs25Subject): string | null {\n const additional = readSubjectAdditional(subject);\n const metadata = subject.metadata ?? {};\n const mcp = isJsonObject(metadata.mcp) ? metadata.mcp : undefined;\n\n for (const value of [\n readString(additional, 'githubRepo'),\n readString(additional, 'repository'),\n readString(metadata, 'repository'),\n readString(mcp, 'repository'),\n readString(metadata, 'repoUrl'),\n readString(additional, 'repoUrl'),\n readString(metadata, 'homepage'),\n readString(additional, 'homepage'),\n resolveSubjectEndpoint(subject),\n ]) {\n const repo = parseGithubRepo(value);\n if (repo) {\n return repo;\n }\n }\n return null;\n}\n\nfunction resolvePackage(\n subject: Hcs25Subject,\n): { registry: 'npm' | 'pypi'; name: string } | null {\n const additional = readSubjectAdditional(subject);\n const registry = readString(additional, 'packageRegistry');\n const name = readString(additional, 'packageName');\n if (name && (registry === 'npm' || registry === 'pypi')) {\n return { registry, name };\n }\n if (name) {\n return { registry: 'npm', name };\n }\n return null;\n}\n\ninterface GithubRepoResponse {\n stargazers_count?: number;\n}\n\ninterface NpmDownloadsResponse {\n downloads?: number;\n}\n\ninterface PyPiRecentResponse {\n data?: { last_month?: number };\n}\n\nfunction statusFromError(error: unknown): Hcs25SignalStatus {\n if (error instanceof Hcs25CollectorHttpError && error.status === 404) {\n return 'missing';\n }\n return isTimeoutError(error) ? 'timeout' : 'error';\n}\n\nconst parseLikelyPackageName = (value: string | null): string | null => {\n if (!value) {\n return null;\n }\n const trimmed = value.trim();\n return /^[a-zA-Z0-9._~@/-]{1,214}$/.test(trimmed) ? trimmed : null;\n};\n\nconst parseNpmPackageName = (body: string): string | null => {\n try {\n const parsed = JSON.parse(body) as { name?: unknown };\n return typeof parsed.name === 'string' ? parsed.name : null;\n } catch {\n return null;\n }\n};\n\nconst parsePyProjectName = (body: string): string | null => {\n const match = body.match(/^\\s*name\\s*=\\s*[\"']([^\"']+)[\"']/m);\n return match?.[1] ?? null;\n};\n\nconst parseSetupCfgName = (body: string): string | null => {\n const match = body.match(/^\\s*name\\s*=\\s*(\\S+)\\s*$/m);\n return match?.[1] ?? null;\n};\n\n/**\n * Infers the package identity (`npm`/`pypi` + name) from the repository's\n * package manifests on `main`/`master`, per production behavior.\n */\nasync function inferPackageIdentity(\n repo: string,\n context: Hcs25CollectContext,\n): Promise<{ registry: 'npm' | 'pypi'; name: string } | null> {\n const base = `${RAW_GITHUB_BASE}/${repo\n .split('/')\n .map(encodeURIComponent)\n .join('/')}`;\n let npmName: string | null = null;\n let pypiName: string | null = null;\n\n for (const branch of ['main', 'master']) {\n if (!npmName) {\n try {\n const body = await requestText(`${base}/${branch}/package.json`, {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n });\n npmName = parseLikelyPackageName(parseNpmPackageName(body));\n } catch {\n // manifest not present on this branch\n }\n }\n if (!pypiName) {\n try {\n const body = await requestText(`${base}/${branch}/pyproject.toml`, {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n });\n pypiName = parseLikelyPackageName(parsePyProjectName(body));\n } catch {\n try {\n const body = await requestText(`${base}/${branch}/setup.cfg`, {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n });\n pypiName = parseLikelyPackageName(parseSetupCfgName(body));\n } catch {\n // no python manifest either\n }\n }\n }\n if (npmName || pypiName) {\n break;\n }\n }\n\n if (npmName && !pypiName) {\n return { registry: 'npm', name: npmName };\n }\n if (pypiName && !npmName) {\n return { registry: 'pypi', name: pypiName };\n }\n return null;\n}\n\n/**\n * Infers the GitHub repository for a package from its registry metadata\n * (PyPI `project_urls`/`home_page`; npm `repository.url`/`homepage`/\n * `bugs.url`).\n */\nasync function inferRepositoryFromPackage(\n pkg: { registry: 'npm' | 'pypi'; name: string },\n context: Hcs25CollectContext,\n): Promise<string | null> {\n const candidates: string[] = [];\n try {\n if (pkg.registry === 'pypi') {\n const payload = await requestJson<{\n info?: {\n home_page?: unknown;\n project_urls?: Record<string, unknown>;\n };\n }>(`${PYPI_API_BASE}/${encodeURIComponent(pkg.name)}/json`, {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n });\n const home = payload.info?.home_page;\n if (typeof home === 'string') {\n candidates.push(home);\n }\n const urls = payload.info?.project_urls;\n if (urls && typeof urls === 'object' && !Array.isArray(urls)) {\n for (const value of Object.values(urls)) {\n if (typeof value === 'string') {\n candidates.push(value);\n }\n }\n }\n } else {\n const payload = await requestJson<{\n repository?: { url?: unknown } | unknown;\n homepage?: unknown;\n bugs?: { url?: unknown } | unknown;\n }>(`${NPM_REGISTRY_BASE}/${encodeURIComponent(pkg.name)}`, {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n });\n const repo =\n payload.repository &&\n typeof payload.repository === 'object' &&\n !Array.isArray(payload.repository)\n ? (payload.repository as Record<string, unknown>).url\n : payload.repository;\n if (typeof repo === 'string') {\n candidates.push(repo);\n }\n if (typeof payload.homepage === 'string') {\n candidates.push(payload.homepage);\n }\n const bugs =\n payload.bugs &&\n typeof payload.bugs === 'object' &&\n !Array.isArray(payload.bugs)\n ? (payload.bugs as Record<string, unknown>).url\n : payload.bugs;\n if (typeof bugs === 'string') {\n candidates.push(bugs);\n }\n }\n } catch {\n return null;\n }\n for (const candidate of candidates) {\n const repo = parseGithubRepo(candidate);\n if (repo) {\n return repo;\n }\n }\n return null;\n}\n\n/**\n * Reads GitHub star count from the repo HTML page's counter badge\n * (production fallback when the API is rate-limited).\n */\nasync function fetchGithubStarsViaHtml(\n repo: string,\n context: Hcs25CollectContext,\n): Promise<number | null> {\n const url = `https://github.com/${repo\n .split('/')\n .map(encodeURIComponent)\n .join('/')}`;\n const body = await requestText(url, {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n headers: { accept: 'text/html' },\n });\n const match =\n body.match(\n /id=\"repo-stars-counter-star\"[^>]*aria-label=\"(?<count>[0-9,]+)\\s+users?\\s+starred/i,\n ) ??\n body.match(/id=\"repo-stars-counter-star\"[^>]*title=\"(?<count>[0-9,]+)\"/i);\n const raw = match?.groups?.count;\n if (!raw) {\n return null;\n }\n const parsed = Number(raw.replace(/,/g, ''));\n return Number.isFinite(parsed) ? Math.max(0, Math.floor(parsed)) : null;\n}\n\n/**\n * Creates the `oss-popularity` signal adapter: collects GitHub repository\n * stars and npm/PyPI 30-day download counts — with package/repo identity\n * inference across `package.json`, `pyproject.toml`, `setup.cfg`, PyPI\n * metadata, and npm registry metadata — writing the catalog fields under\n * `metadata.additional`.\n */\nexport function createOssPopularitySignalAdapter(\n options: Hcs25OssPopularitySignalAdapterOptions = {},\n): Hcs25SignalAdapter {\n const collect = async (\n subject: Hcs25Subject,\n context: Hcs25CollectContext,\n ): Promise<Hcs25SignalAdapterResult[]> => {\n const now = context.now.toISOString();\n let repo = resolveGithubRepo(subject);\n let pkg = resolvePackage(subject);\n\n // Cross-inference: repo ⇄ package (production behavior).\n if (!repo && pkg && options.inferRepository !== false) {\n repo = await inferRepositoryFromPackage(pkg, context).catch(\n (): null => null,\n );\n }\n if (!pkg && repo && options.inferPackageIdentity !== false) {\n pkg = await inferPackageIdentity(repo, context).catch((): null => null);\n }\n\n const results: Hcs25SignalAdapterResult[] = [];\n const additional: Record<string, Hcs25JsonValue> = {};\n\n if (repo) {\n additional.githubRepo = repo;\n additional.packageRepositoryUpdatedAt = now;\n try {\n const headers: Record<string, string> = {\n accept: 'application/vnd.github+json',\n };\n if (options.githubToken) {\n headers.authorization = `Bearer ${options.githubToken}`;\n }\n let stars: number | null = null;\n try {\n const data = await requestJson<GithubRepoResponse>(\n `${options.githubApiBase ?? GITHUB_API_BASE}/repos/${repo}`,\n {\n fetch: context.fetch,\n headers,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n },\n );\n stars =\n typeof data.stargazers_count === 'number'\n ? Math.max(0, Math.floor(data.stargazers_count))\n : null;\n } catch (error) {\n if (options.githubHtmlFallback === false) {\n throw error;\n }\n }\n if (stars === null && options.githubHtmlFallback !== false) {\n stars = await fetchGithubStarsViaHtml(repo, context).catch(\n (): null => null,\n );\n }\n additional.githubStars = stars;\n additional.githubStarsUpdatedAt = now;\n results.push({\n signalId: 'oss.github_stars',\n status: stars === null ? 'missing' : 'ok',\n value: stars,\n provenance: {\n source: 'github',\n sourceUrl: `${options.githubApiBase ?? GITHUB_API_BASE}/repos/${repo}`,\n subjectId: repo,\n fetchedAt: now,\n },\n });\n } catch (error) {\n results.push({\n signalId: 'oss.github_stars',\n status: statusFromError(error),\n provenance: {\n source: 'github',\n subjectId: repo,\n fetchedAt: now,\n },\n });\n }\n }\n\n if (pkg) {\n additional.packageRegistry = pkg.registry;\n additional.packageName = pkg.name;\n additional.packageIdentityUpdatedAt = now;\n const signalId =\n pkg.registry === 'npm' ? 'oss.npm_downloads' : 'oss.pypi_downloads';\n try {\n if (pkg.registry === 'npm') {\n const data = await requestJson<NpmDownloadsResponse>(\n `${options.npmApiBase ?? NPM_API_BASE}/downloads/point/last-month/${encodeURIComponent(pkg.name)}`,\n {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n },\n );\n const downloads =\n typeof data.downloads === 'number'\n ? Math.max(0, Math.floor(data.downloads))\n : null;\n additional.npmDownloads30d = downloads;\n additional.npmDownloadsUpdatedAt = now;\n if (downloads !== null) {\n additional.packageDownloadCount = downloads;\n }\n results.push({\n signalId,\n status: downloads === null ? 'missing' : 'ok',\n value: downloads,\n provenance: {\n source: 'npm',\n subjectId: pkg.name,\n fetchedAt: now,\n },\n });\n } else {\n const data = await requestJson<PyPiRecentResponse>(\n `${options.pypiApiBase ?? PYPISTATS_API_BASE}/packages/${encodeURIComponent(pkg.name)}/recent`,\n {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n },\n );\n const downloads =\n typeof data.data?.last_month === 'number'\n ? Math.max(0, Math.floor(data.data.last_month))\n : null;\n additional.pypiDownloads30d = downloads;\n additional.pypiDownloadsUpdatedAt = now;\n if (downloads !== null) {\n additional.packageDownloadCount = downloads;\n }\n results.push({\n signalId,\n status: downloads === null ? 'missing' : 'ok',\n value: downloads,\n provenance: {\n source: 'pypi',\n subjectId: pkg.name,\n fetchedAt: now,\n },\n });\n }\n } catch (error) {\n results.push({\n signalId,\n status: statusFromError(error),\n provenance: {\n source: pkg.registry,\n subjectId: pkg.name,\n fetchedAt: now,\n },\n });\n }\n }\n\n if (results.length === 0) {\n return [\n {\n signalId: 'oss.github_stars',\n status: 'missing',\n },\n ];\n }\n\n const rootValues: Record<string, Hcs25JsonValue> = {};\n // Persist an inferred repository at the metadata root so downstream\n // collectors and the stored record share the canonical value.\n if (repo && !readString(subject.metadata ?? {}, 'repository')) {\n rootValues.repository = `https://github.com/${repo}`;\n }\n\n results.push({\n signalId: 'oss.popularity',\n status: 'ok',\n fields: [\n { scope: 'additional', values: additional },\n ...(Object.keys(rootValues).length > 0\n ? [{ scope: 'root' as const, values: rootValues }]\n : []),\n ],\n provenance: {\n source: 'oss-popularity',\n subjectId: subject.id,\n fetchedAt: now,\n },\n });\n return results;\n };\n\n return {\n id: 'oss-popularity',\n produces: [\n 'oss.github_stars',\n 'oss.npm_downloads',\n 'oss.pypi_downloads',\n 'oss.popularity',\n ],\n timeoutMs: options.timeoutMs,\n includeRegistries: options.includeRegistries,\n excludeRegistries: options.excludeRegistries,\n appliesTo: options.appliesTo,\n collect,\n };\n}\n"],"names":[],"mappings":"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"}
|