···106106 this.package = props.context.package;
107107 }
108108109109- addNode(node: Node | null): number {
110110- for (const hook of this.eventHooks['node:set:before']) {
111111- hook({ node, plugin: this });
112112- }
113113- const index = this.gen.nodes.add(node);
114114- for (const hook of this.eventHooks['node:set:after']) {
115115- hook({ node, plugin: this });
116116- }
117117- return index;
118118- }
119119- updateNode(index: number, node: Node | null): void {
120120- for (const hook of this.eventHooks['node:set:before']) {
121121- hook({ node, plugin: this });
122122- }
123123- const result = this.gen.nodes.update(index, node);
124124- for (const hook of this.eventHooks['node:set:after']) {
125125- hook({ node, plugin: this });
126126- }
127127- return result;
128128- }
129129-130109 /**
131110 * Iterates over various input elements as specified by the event types, in
132111 * a specific order: servers, schemas, parameters, request bodies, then
···318297319298 isSymbolRegistered(identifier: SymbolIdentifier): boolean {
320299 return this.gen.symbols.isRegistered(identifier);
300300+ }
301301+302302+ /**
303303+ * Sets or adds a node to the project graph.
304304+ *
305305+ * @param node The node to be added or updated in the project graph.
306306+ * @param index The index at which to update the node. If undefined, the node will be added.
307307+ * @returns The index of the added node or void if updated.
308308+ */
309309+ node<T extends number | undefined = undefined>(
310310+ node: Node | null,
311311+ index?: T,
312312+ ): T extends number ? void : number {
313313+ for (const hook of this.eventHooks['node:set:before']) {
314314+ hook({ node, plugin: this });
315315+ }
316316+ const result =
317317+ index !== undefined
318318+ ? this.gen.nodes.update(index, node)
319319+ : this.gen.nodes.add(node);
320320+ for (const hook of this.eventHooks['node:set:after']) {
321321+ hook({ node, plugin: this });
322322+ }
323323+ return result as T extends number ? void : number;
321324 }
322325323326 querySymbol(filter: SymbolMeta): Symbol | undefined {