• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

graphty-org / graphty-element / 18789674490

24 Oct 2025 07:11PM UTC coverage: 82.377% (+0.01%) from 82.365%
18789674490

push

github

apowers313
Merge branch 'master' of https://github.com/graphty-org/graphty-element

1259 of 1541 branches covered (81.7%)

Branch coverage included in aggregate %.

6823 of 8270 relevant lines covered (82.5%)

580.52 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

68.89
/src/layout/ArfLayoutEngine.ts
1
import {arfLayout, Edge as LayoutEdge, Node as LayoutNode} from "@graphty/layout";
2✔
2
import {z} from "zod/v4";
2✔
3

4
import {SimpleLayoutConfig, SimpleLayoutEngine} from "./LayoutEngine";
2✔
5

6
export const ArfLayoutConfig = z.strictObject({
2✔
7
    ... SimpleLayoutConfig.shape,
2✔
8
    pos: z.record(
2✔
9
        z.number(),
2✔
10
        z.array(z.number()),
2✔
11
    ).or(z.null()).default(null),
2✔
12
    scaling: z.number().positive().default(1),
2✔
13
    a: z.number().positive().default(1.1),
2✔
14
    maxIter: z.number().positive().default(1000),
2✔
15
    seed: z.number().positive().or(z.null()).default(null),
2✔
16
});
2✔
17
export type ArfLayoutConfigType = z.infer<typeof ArfLayoutConfig>;
18
export type ArfLayoutOpts = Partial<ArfLayoutConfigType>;
19

20
export class ArfLayout extends SimpleLayoutEngine {
2✔
21
    static type = "arf";
2✔
22
    static maxDimensions = 2;
2✔
23
    scalingFactor = 100;
2✔
24
    config: ArfLayoutConfigType;
25

26
    constructor(opts: ArfLayoutOpts) {
2✔
27
        super(opts);
1✔
28
        this.config = ArfLayoutConfig.parse(opts);
1✔
29
    }
1✔
30

31
    static getOptionsForDimension(dimension: 2 | 3): object | null {
2✔
32
        // Arf only supports 2D
33
        if (dimension > this.maxDimensions) {
1✔
34
            return null;
1✔
35
        }
1!
36

37
        // Arf doesn't use 'dim' parameter
38
        return {};
×
39
    }
1✔
40

41
    doLayout(): void {
2✔
42
        this.stale = false;
×
43
        const nodes = (): LayoutNode[] => this._nodes.map((n) => n.id as LayoutNode);
×
44
        const edges = (): LayoutEdge[] => this._edges.map((e) => [e.srcId, e.dstId] as LayoutEdge);
×
45

46
        this.positions = arfLayout(
×
47
            {nodes, edges},
×
48
            this.config.pos,
×
49
            this.config.scaling,
×
50
            this.config.a,
×
51
            this.config.maxIter,
×
52
            this.config.seed,
×
53
        );
×
54
    }
×
55
}
2✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc