{"_id":"@a11yst/source-index","_rev":"3-7206ed1e188ac569f969581aecc8483d","name":"@a11yst/source-index","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@a11yst/source-index","version":"1.0.0","license":"MPL-2.0","_id":"@a11yst/source-index@1.0.0","maintainers":[{"name":"angelabenavente","email":"ang.ben.dev@gmail.com"}],"homepage":"https://github.com/angelabenavente/a11yst#readme","bugs":{"url":"https://github.com/angelabenavente/a11yst/issues"},"dist":{"shasum":"c02ba7e40002bd9abd03ce791a579b82659af651","tarball":"https://registry.npmjs.org/@a11yst/source-index/-/source-index-1.0.0.tgz","fileCount":47,"integrity":"sha512-bvjCZtAv9sRInVF2tFXpNeVE6OFtebKGrcXrhM8cMvYZt4zSKylxmDVpo8T0MCI/qGvFNhXDkth3KooPYfIuww==","signatures":[{"sig":"MEQCIHu/NdkMYB0bU1UfHshhQBKSmP5S+FvpV5wQPG0/vPJHAiAdgU0vHuVmpOZD6oITQKx7PUA+vtzofh/8Deh6wMGjJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97213},"main":"./dist/index.js","type":"module","_from":"file:a11yst-source-index-1.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"angelabenavente","email":"ang.ben.dev@gmail.com"},"_resolved":"/private/var/folders/tf/l5jz90dj0yncc_ds04tbfs5c0000gn/T/fafc6044eeded89f9c0c062fe32a11f7/a11yst-source-index-1.0.0.tgz","_integrity":"sha512-bvjCZtAv9sRInVF2tFXpNeVE6OFtebKGrcXrhM8cMvYZt4zSKylxmDVpo8T0MCI/qGvFNhXDkth3KooPYfIuww==","repository":{"url":"git+https://github.com/angelabenavente/a11yst.git","type":"git"},"_npmVersion":"10.9.0","description":"Safe deterministic repository source file indexing for a11yst","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ignore":"^7.0.5","@a11yst/types":"1.0.0","@a11yst/source-mapping":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/source-index_1.0.0_1787506245545_0.9841187093603345","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@a11yst/source-index","version":"1.0.1","license":"MPL-2.0","_id":"@a11yst/source-index@1.0.1","maintainers":[{"name":"angelabenavente","email":"ang.ben.dev@gmail.com"}],"homepage":"https://github.com/angelabenavente/a11yst#readme","bugs":{"url":"https://github.com/angelabenavente/a11yst/issues"},"dist":{"shasum":"79edf7ddf094831790aecf84225735653d52cd64","tarball":"https://registry.npmjs.org/@a11yst/source-index/-/source-index-1.0.1.tgz","fileCount":47,"integrity":"sha512-Swxd5/EioyCSc1Zs8m5uY/+rOPo+yN0AQIHDhJK2jRf/2J9/PPso+mdqZn9wm5wvkIDUzEifVC0b7pgxPfvINA==","signatures":[{"sig":"MEQCID4nJDIe4QTpx/X1jWOcX2d1Pgv4OooT+EXGaiikLnt5AiBG58PuZMvIgJw19hg/IyM0nFx7UZumYvNNi8i0HDWQeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97213},"main":"./dist/index.js","type":"module","_from":"file:a11yst-source-index-1.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"angelabenavente","email":"ang.ben.dev@gmail.com"},"_resolved":"/private/var/folders/tf/l5jz90dj0yncc_ds04tbfs5c0000gn/T/33b6e106b9afe01225ac3c92b1263257/a11yst-source-index-1.0.1.tgz","_integrity":"sha512-Swxd5/EioyCSc1Zs8m5uY/+rOPo+yN0AQIHDhJK2jRf/2J9/PPso+mdqZn9wm5wvkIDUzEifVC0b7pgxPfvINA==","repository":{"url":"git+https://github.com/angelabenavente/a11yst.git","type":"git"},"_npmVersion":"10.9.8","description":"Safe deterministic repository source file indexing for a11yst","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ignore":"^7.0.5","@a11yst/types":"1.0.1","@a11yst/source-mapping":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/source-index_1.0.1_1787508675825_0.550244320697409","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@a11yst/source-index","version":"1.0.2","description":"Safe deterministic repository source file indexing for a11yst","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"ignore":"^7.0.5","@a11yst/source-mapping":"1.0.2","@a11yst/types":"1.0.2"},"devDependencies":{"@types/node":"^22.10.2","typescript":"^5.7.2"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/angelabenavente/a11yst.git"},"homepage":"https://www.a11yst.dev","bugs":{"url":"https://github.com/angelabenavente/a11yst/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","clean":"rm -rf dist *.tsbuildinfo"},"_id":"@a11yst/source-index@1.0.2","_integrity":"sha512-Ln+MC1j0EOV/SKU5Qd2ELcUmrfayCzXq1OhZwYcQSJIYzRvib8d5G4lV4WzstS14LQQ884Hx0YYEgDFa/gk4Lw==","_resolved":"/private/var/folders/tf/l5jz90dj0yncc_ds04tbfs5c0000gn/T/122973bd8c42d632e305b9c1a602325c/a11yst-source-index-1.0.2.tgz","_from":"file:a11yst-source-index-1.0.2.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-Ln+MC1j0EOV/SKU5Qd2ELcUmrfayCzXq1OhZwYcQSJIYzRvib8d5G4lV4WzstS14LQQ884Hx0YYEgDFa/gk4Lw==","shasum":"7821e5d9cd064eeeba9fb54c2a44f641ce6e6e5a","tarball":"https://registry.npmjs.org/@a11yst/source-index/-/source-index-1.0.2.tgz","fileCount":47,"unpackedSize":97553,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDiAu3dHe7+kxitfiVIyj5v6yBOtQKIO6BrNevzBnxmhwIhAMKLzCHXMnKJPfIx0Ewzh5J58jidUYn7PKvka6vEGo2b"}]},"_npmUser":{"name":"angelabenavente","email":"ang.ben.dev@gmail.com"},"directories":{},"maintainers":[{"name":"angelabenavente","email":"ang.ben.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/source-index_1.0.2_1787683114785_0.6205284844912606"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T17:30:45.421Z","modified":"2026-08-25T18:38:35.184Z","1.0.0":"2026-08-23T17:30:45.677Z","1.0.1":"2026-08-23T18:11:15.966Z","1.0.2":"2026-08-25T18:38:34.984Z"},"bugs":{"url":"https://github.com/angelabenavente/a11yst/issues"},"license":"MPL-2.0","homepage":"https://www.a11yst.dev","repository":{"type":"git","url":"git+https://github.com/angelabenavente/a11yst.git"},"description":"Safe deterministic repository source file indexing for a11yst","maintainers":[{"name":"angelabenavente","email":"ang.ben.dev@gmail.com"}],"readme":"# @a11yst/source-index [![NPM version](https://img.shields.io/npm/v/@a11yst/source-index.svg?style=flat)](https://www.npmjs.com/package/@a11yst/source-index) [![License: MPL-2.0](https://img.shields.io/badge/License-MPL--2.0-blue.svg)](LICENSE) [![NPM total downloads](https://img.shields.io/npm/dt/@a11yst/source-index.svg?style=flat)](https://www.npmjs.com/package/@a11yst/source-index)\n\nSafe, deterministic repository source file discovery for a11yst.\n\nPhase **10b** builds a filesystem index only. It does **not** read source file\ncontents, parse code, or produce source mappings.\n\n## Separation from `@a11yst/source-mapping`\n\n| Package | Responsibility |\n| --- | --- |\n| `@a11yst/source-mapping` | Pure domain model: locations, confidence, candidates, results |\n| `@a11yst/source-index` | Filesystem boundary: traversal, ignores, limits, classification |\n\n## Repository root\n\n`indexRepositorySources()` always receives an explicit absolute `repositoryRoot`.\nIt never uses `process.cwd()`, `process.env`, or implicit roots.\n\nThe canonical root may be resolved internally with `realpath`, but absolute paths\nnever appear in serialized results or diagnostics.\n\n## Scopes\n\nScopes are repository-relative roots inside the monorepo:\n\n```typescript\nawait indexRepositorySources({\n  repositoryRoot: \"/abs/path/to/repo\",\n  scopes: [\n    { id: \"storefront\", rootUri: \"apps/storefront\", projectName: \"storefront\", framework: \"next\" },\n  ],\n});\n```\n\nWhen no scopes are provided, a default `{ id: \"repository\", rootUri: \".\" }` scope\nis used. Overlapping scopes deduplicate files and merge `scopeIds`, `projectNames`,\nand `frameworks`.\n\n## Indexed file kinds\n\nSupported kinds (by extension/name):\n\n- `html`, `htm`\n- `*.component.html` → `angular-template`\n- JavaScript (`.js`, `.mjs`, `.cjs`)\n- TypeScript (`.ts`, `.mts`, `.cts`)\n- JSX / TSX\n- Vue (`.vue`)\n- Preview: Svelte (`.svelte`), Astro (`.astro`)\n\nGenerated declarations, bundles, minified files, and source maps are excluded.\n\n## Ignored directories\n\nBuilt-in excluded directory names include `node_modules`, `dist`, `.next`,\n`.nuxt`, `coverage`, and `.a11yst/results` (prefix). Security excludes cannot\nbe overridden by user patterns.\n\n## `.gitignore`\n\nOnly the repository root `.gitignore` is read. Missing `.gitignore` is allowed.\nUnreadable `.gitignore` yields `partial` status with `gitignore-read-failed`.\n\n**Limitation (10b):** nested `.gitignore` files are not interpreted.\n\n## Explicit ignore patterns\n\n`options.ignorePatterns` accepts repository-relative patterns interpreted with\nthe same matcher used for `.gitignore`. Absolute patterns are rejected.\n\n## Symlinks\n\nSymlinks are never followed. Each skipped symlink increments `symlinksSkipped`\nand may emit a single `symlink-skipped` diagnostic containing only the symlink\nURI — never the target path.\n\n## Limits\n\nDefaults:\n\n```typescript\n{\n  maxFiles: 50_000,\n  maxDepth: 64,\n  maxFileSizeBytes: 2 * 1024 * 1024,\n}\n```\n\nReaching file or depth limits yields `partial` status. Oversized files are skipped\nwithout failing the entire index.\n\n## Status\n\n| Status | Meaning |\n| --- | --- |\n| `complete` | All valid scopes traversed without recoverable limits/errors |\n| `partial` | Permission errors, unreadable `.gitignore`, limits reached, etc. |\n| `invalid` | Invalid root, unsafe scope, invalid options — indexing did not proceed |\n\n## Determinism\n\nDirectory entries, scopes, files, scope metadata arrays, and diagnostics are\nsorted deterministically. `readdir` order does not affect output.\n\n## Privacy\n\nResults never include absolute repository paths, source code, secrets, timestamps,\nor symlink targets.\n\n## Next steps\n\nPhase **10c** will begin HTML/Vanilla source mapping using this index. Phase 10b\ndoes not integrate with audit, CLI, or reports.\n","readmeFilename":"README.md"}