diff --git a/CHANGELOG.md b/CHANGELOG.md index fe4a5550..063393a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Fixes +- What a Svelte component's instance ` + +
{items.length}
+`, + 'src/lib/examples/item-demo.svelte': ` + +{label} +`, + 'src/components/TabItem.vue': ` + + +`, + 'src/extensions/code-block.ts': `import { isActive } from "@/tiptap/core"; + +export function active(state: unknown) { + return isActive(state); +} +`, + 'src/components/CrudTable.vue': ` + + +`, + 'src/pages/GroupDataPage.vue': ` + + +`, + }; + for (const [rel, content] of Object.entries(files)) { + fs.mkdirSync(path.dirname(path.join(root, rel)), { recursive: true }); + fs.writeFileSync(path.join(root, rel), content); + } + cg = await CodeGraph.init(root, { index: true }); +}); + +afterAll(() => { + cg?.close(); + if (root) fs.rmSync(root, { recursive: true, force: true }); +}); + +const targetsFrom = (file: string) => { + const ids = cg.getNodesInFile(file).map((n) => n.id); + return cg.getOutgoingEdgesFrom(ids).filter((e) => e.kind !== 'contains').map((e) => cg.getNode(e.target)!).map((t) => `${t.filePath}:${t.name}`); +}; + +describe('single-file component declarations', () => { + it('are private to the component', () => { + expect(targetsFrom('src/lib/examples/item-demo.svelte')).not.toContain('src/lib/examples/attachment-group.svelte:Item'); + expect(targetsFrom('src/extensions/code-block.ts')).not.toContain('src/components/TabItem.vue:isActive'); + }); + + it('except a type a Vue