fork of hey-api/openapi-ts because I need some additional things
at feat/skip-token 28 lines 674 B view raw
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}