fork of hey-api/openapi-ts because I need some additional things
1import { fromRef, ref } from '../refs/refs';
2import type { Ref } from '../refs/types';
3import type { INode } from './node';
4import type { INodeRegistry } from './types';
5
6export class NodeRegistry implements INodeRegistry {
7 private list: Array<Ref<INode | null>> = [];
8
9 add(node: INode | null): number {
10 const index = this.list.push(ref(node));
11 return index - 1;
12 }
13
14 *all(): Iterable<INode> {
15 for (const r of this.list) {
16 const node = fromRef(r);
17 if (node) yield node;
18 }
19 }
20
21 remove(index: number): void {
22 this.list[index] = ref(null);
23 }
24
25 update(index: number, node: INode | null): void {
26 this.list[index] = ref(node);
27 }
28}