feat(scanner): Implement Deno analyzer and associated tests
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Added Deno analyzer with comprehensive metadata and evidence structure. - Created a detailed implementation plan for Sprint 130 focusing on Deno analyzer. - Introduced AdvisoryAiGuardrailOptions for managing guardrail configurations. - Developed GuardrailPhraseLoader for loading blocked phrases from JSON files. - Implemented tests for AdvisoryGuardrailOptions binding and phrase loading. - Enhanced telemetry for Advisory AI with metrics tracking. - Added VexObservationProjectionService for querying VEX observations. - Created extensive tests for VexObservationProjectionService functionality. - Introduced Ruby language analyzer with tests for simple and complex workspaces. - Added Ruby application fixtures for testing purposes.
This commit is contained in:
@@ -1,6 +1,17 @@
|
||||
// Deterministic Deno workspace exercising vendor, npm, FFI, worker, and fetch flows.
|
||||
{
|
||||
"importMap": "./import_map.json",
|
||||
"imports": {
|
||||
"app/": "./src/",
|
||||
"ffi/": "./src/ffi/",
|
||||
"workers/": "./src/workers/",
|
||||
"npmDynamic": "npm:dayjs@1",
|
||||
"nodeFs": "node:fs",
|
||||
"nodeCrypto": "node:crypto",
|
||||
"nodeWorker": "node:worker_threads",
|
||||
"denoFfi": "deno:ffi",
|
||||
"data": "./data/data.json"
|
||||
},
|
||||
"lock": {
|
||||
"enabled": true,
|
||||
"path": "./deno.lock"
|
||||
|
||||
@@ -1 +1,198 @@
|
||||
"pending"
|
||||
[
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "container::bundle:<workspace>/bundles/sample.deno",
|
||||
"name": "<workspace>/bundles/sample.deno",
|
||||
"type": "deno-container",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.container.bundle.entrypoint": "mod.ts",
|
||||
"deno.container.bundle.modules": "2",
|
||||
"deno.container.bundle.resources": "1",
|
||||
"deno.container.identifier": "<workspace>/bundles/sample.deno",
|
||||
"deno.container.kind": "bundle",
|
||||
"deno.container.meta.entrypoint": "mod.ts",
|
||||
"deno.container.meta.moduleCount": "2",
|
||||
"deno.container.meta.resourceCount": "1"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "file",
|
||||
"source": "deno.bundle",
|
||||
"locator": "<workspace>/bundles/sample.deno",
|
||||
"value": "mod.ts"
|
||||
},
|
||||
{
|
||||
"kind": "metadata",
|
||||
"source": "deno.container",
|
||||
"locator": "Bundle",
|
||||
"value": "<workspace>/bundles/sample.deno"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "container::bundle:<workspace>/bundles/sample.eszip",
|
||||
"name": "<workspace>/bundles/sample.eszip",
|
||||
"type": "deno-container",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.container.bundle.entrypoint": "mod.ts",
|
||||
"deno.container.bundle.modules": "2",
|
||||
"deno.container.bundle.resources": "1",
|
||||
"deno.container.identifier": "<workspace>/bundles/sample.eszip",
|
||||
"deno.container.kind": "bundle",
|
||||
"deno.container.meta.entrypoint": "mod.ts",
|
||||
"deno.container.meta.moduleCount": "2",
|
||||
"deno.container.meta.resourceCount": "1"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "file",
|
||||
"source": "deno.bundle",
|
||||
"locator": "<workspace>/bundles/sample.eszip",
|
||||
"value": "mod.ts"
|
||||
},
|
||||
{
|
||||
"kind": "metadata",
|
||||
"source": "deno.container",
|
||||
"locator": "Bundle",
|
||||
"value": "<workspace>/bundles/sample.eszip"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "container::cache:.deno-<hash>",
|
||||
"name": ".deno-<hash>",
|
||||
"type": "deno-container",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.container.identifier": ".deno-<hash>",
|
||||
"deno.container.kind": "cache",
|
||||
"deno.container.meta.alias": ".deno-<hash>",
|
||||
"deno.container.meta.kind": "Workspace",
|
||||
"deno.container.meta.path": "<workspace>/.deno"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "metadata",
|
||||
"source": "deno.container",
|
||||
"locator": "Cache",
|
||||
"value": ".deno-<hash>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "container::cache:.deno-<hash>",
|
||||
"name": ".deno-<hash>",
|
||||
"type": "deno-container",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.container.identifier": ".deno-<hash>",
|
||||
"deno.container.kind": "cache",
|
||||
"deno.container.layerDigest": "deadbeef",
|
||||
"deno.container.meta.alias": ".deno-<hash>",
|
||||
"deno.container.meta.kind": "Layer",
|
||||
"deno.container.meta.path": "<workspace>/layers/sha256-deadbeef/fs/.deno"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "metadata",
|
||||
"source": "deno.container",
|
||||
"locator": "Cache",
|
||||
"value": ".deno-<hash>",
|
||||
"sha256": "deadbeef"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "container::cache:env-deno-<hash>",
|
||||
"name": "env-deno-<hash>",
|
||||
"type": "deno-container",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.container.identifier": "env-deno-<hash>",
|
||||
"deno.container.kind": "cache",
|
||||
"deno.container.meta.alias": "env-deno-<hash>",
|
||||
"deno.container.meta.kind": "Env",
|
||||
"deno.container.meta.path": "<workspace>/env-deno"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "metadata",
|
||||
"source": "deno.container",
|
||||
"locator": "Cache",
|
||||
"value": "env-deno-<hash>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "container::vendor:vendor-<hash>",
|
||||
"name": "vendor-<hash>",
|
||||
"type": "deno-container",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.container.identifier": "vendor-<hash>",
|
||||
"deno.container.kind": "vendor",
|
||||
"deno.container.layerDigest": "deadbeef",
|
||||
"deno.container.meta.alias": "vendor-<hash>",
|
||||
"deno.container.meta.path": "<workspace>/layers/sha256-deadbeef/fs/vendor"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "metadata",
|
||||
"source": "deno.container",
|
||||
"locator": "Vendor",
|
||||
"value": "vendor-<hash>",
|
||||
"sha256": "deadbeef"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "container::vendor:vendor-<hash>",
|
||||
"name": "vendor-<hash>",
|
||||
"type": "deno-container",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.container.identifier": "vendor-<hash>",
|
||||
"deno.container.kind": "vendor",
|
||||
"deno.container.meta.alias": "vendor-<hash>",
|
||||
"deno.container.meta.path": "<workspace>/vendor"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "metadata",
|
||||
"source": "deno.container",
|
||||
"locator": "Vendor",
|
||||
"value": "vendor-<hash>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"analyzerId": "deno",
|
||||
"componentKey": "observation::deno",
|
||||
"name": "Deno Observation Summary",
|
||||
"type": "deno-observation",
|
||||
"usedByEntrypoint": false,
|
||||
"metadata": {
|
||||
"deno.observation.bundles": "2",
|
||||
"deno.observation.capabilities": "1",
|
||||
"deno.observation.entrypoints": "1",
|
||||
"deno.observation.hash": "<hash>"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"kind": "derived",
|
||||
"source": "deno.observation",
|
||||
"locator": "document",
|
||||
"value": "{\"entrypoints\":[\"mod.ts\"],\"modules\":[\"./src/\",\"./src/ffi/\",\"./src/workers/\",\"https://api.example.com/data.json\",\"https://cdn.example.com/dynamic/mod.ts\",\"https://deno.land/std@0.207.0/http/server.ts\",\"https://example.com/env.ts\",\"https://example.com/layer.ts\",\"https://import_map.json\",\"https://layer.example/\"],\"capabilities\":[{\"capability\":\"Network\",\"reason\":\"network.remote_module_import\",\"sources\":[\"https://api.example.com/data.json\",\"https://cdn.example.com/dynamic/mod.ts\",\"https://deno.land/std/http/server.ts\",\"https://deno.land/std@0.207.0/http/server.ts\",\"https://example.com/env.ts\",\"https://example.com/layer.ts\",\"https://import_map.json\"]}],\"dynamicImports\":[],\"literalFetches\":[],\"bundles\":[{\"path\":\"<workspace>/bundles/sample.deno\",\"type\":\"deno-compile\",\"entrypoint\":\"mod.ts\",\"modules\":2,\"resources\":1},{\"path\":\"<workspace>/bundles/sample.eszip\",\"type\":\"eszip\",\"entrypoint\":\"mod.ts\",\"modules\":2,\"resources\":1}]}",
|
||||
"sha256": "<hash>"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -7,6 +7,7 @@
|
||||
"nodeFs": "node:fs",
|
||||
"nodeCrypto": "node:crypto",
|
||||
"nodeWorker": "node:worker_threads",
|
||||
"denoFfi": "deno:ffi"
|
||||
"denoFfi": "deno:ffi",
|
||||
"data": "./data/data.json"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user