private _hasDependencyPath()

in src/core/moduleManager.ts [684:726]


		private _hasDependencyPath(fromId: ModuleId, toId: ModuleId): boolean {
			let from = this._modules2[fromId];
			if (!from) {
				return false;
			}

			let inQueue: boolean[] = [];
			for (let i = 0, len = this._moduleIdProvider.getMaxModuleId(); i < len; i++) {
				inQueue[i] = false;
			}
			let queue: Module[] = [];

			// Insert 'from' in queue
			queue.push(from);
			inQueue[fromId] = true;

			while (queue.length > 0) {
				// Pop first inserted element of queue
				let element = queue.shift()!;
				let dependencies = element.dependencies;
				if (dependencies) {
					// Walk the element's dependencies
					for (let i = 0, len = dependencies.length; i < len; i++) {
						let dependency = dependencies[i];

						if (dependency.id === toId) {
							// There is a path to 'to'
							return true;
						}

						let dependencyModule = this._modules2[dependency.id];
						if (dependencyModule && !inQueue[dependency.id]) {
							// Insert 'dependency' in queue
							inQueue[dependency.id] = true;
							queue.push(dependencyModule);
						}
					}
				}
			}

			// There is no path to 'to'
			return false;
		}