Rocky_Mountain_Vending/.pnpm-store/v10/files/1e/8e78126fb31c49b8b91c3e9114d6d8eb7a6c70bd5ab779dcbe2e43f606461cce8ed163a89eb2f57fed5a4e65da53e89dd9d9879e1d1392e7a0f7289cf698f4
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

98 lines
4.1 KiB
Text

import type * as Lantern from '../types/types.js';
import type { CPUNode } from './CPUNode.js';
import type { NetworkNode } from './NetworkNode.js';
/**
* A union of all types derived from BaseNode, allowing type check discrimination
* based on `node.type`. If a new node type is created, it should be added here.
*/
export type Node<T = Lantern.AnyNetworkObject> = CPUNode<T> | NetworkNode<T>;
/**
* @file This class encapsulates logic for handling resources and tasks used to model the
* execution dependency graph of the page. A node has a unique identifier and can depend on other
* nodes/be depended on. The construction of the graph maintains some important invariants that are
* inherent to the model:
*
* 1. The graph is a DAG, there are no cycles.
* 2. There is always a root node upon which all other nodes eventually depend.
*
* This allows particular optimizations in this class so that we do no need to check for cycles as
* these methods are called and we can always start traversal at the root node.
*/
declare class BaseNode<T = Lantern.AnyNetworkObject> {
static types: {
readonly NETWORK: "network";
readonly CPU: "cpu";
};
_id: string;
_isMainDocument: boolean;
dependents: Node[];
dependencies: Node[];
constructor(id: string);
get id(): string;
get type(): 'network' | 'cpu';
/**
* In microseconds
*/
get startTime(): number;
/**
* In microseconds
*/
get endTime(): number;
setIsMainDocument(value: boolean): void;
isMainDocument(): boolean;
getDependents(): Node[];
getNumberOfDependents(): number;
getDependencies(): Node[];
getNumberOfDependencies(): number;
getRootNode(): Node<T>;
addDependent(node: Node): void;
addDependency(node: Node): void;
removeDependent(node: Node): void;
removeDependency(node: Node): void;
removeAllDependencies(): void;
/**
* Computes whether the given node is anywhere in the dependency graph of this node.
* While this method can prevent cycles, it walks the graph and should be used sparingly.
* Nodes are always considered dependent on themselves for the purposes of cycle detection.
*/
isDependentOn(node: BaseNode<T>): boolean;
/**
* Clones the node's information without adding any dependencies/dependents.
*/
cloneWithoutRelationships(): Node<T>;
/**
* Clones the entire graph connected to this node filtered by the optional predicate. If a node is
* included by the predicate, all nodes along the paths between the node and the root will be included. If the
* node this was called on is not included in the resulting filtered graph, the method will throw.
*
* This does not clone NetworkNode's `record` or `rawRecord` fields. It may be reasonable to clone the former,
* to assist in graph construction, but the latter should never be cloned as one constraint of Lantern is that
* the underlying data records are accessible for plain object reference equality checks.
*/
cloneWithRelationships(predicate?: (arg0: Node) => boolean): Node;
/**
* Traverses all connected nodes in BFS order, calling `callback` exactly once
* on each. `traversalPath` is the shortest (though not necessarily unique)
* path from `node` to the root of the iteration.
*
* The `getNextNodes` function takes a visited node and returns which nodes to
* visit next. It defaults to returning the node's dependents.
*/
traverse(callback: (node: Node<T>, traversalPath: Array<Node<T>>) => void, getNextNodes?: (arg0: Node<T>) => Array<Node<T>>): void;
/**
* @see BaseNode.traverse
*/
traverseGenerator(getNextNodes?: (arg0: Node) => Node[]): Generator<{
node: Node;
traversalPath: Node[];
}, void, unknown>;
/**
* If the given node has a cycle, returns a path representing that cycle.
* Else returns null.
*
* Does a DFS on in its dependent graph.
*/
static findCycle(node: Node, direction?: 'dependents' | 'dependencies' | 'both'): BaseNode[] | null;
canDependOn(node: Node): boolean;
}
export { BaseNode };