| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // For ease of development, we load the graph from this hardcoded location by |
| // default. This should be changed when a snapshot picker is implemented. |
| const LATEST_GRAPH = 'https://storage.googleapis.com/clank-dependency-graphs/latest/all.json'; |
| |
| // We serve our testing data on localhost:8888 as a |
| // fallback that will be triggered if CORS blocks the request. In production, |
| // the request should go through as the domain is allowed. In localhost, CORS |
| // will always block the request. |
| const LOCALHOST_GRAPH = 'http://localhost:8888/json_graph.txt'; |
| |
| import * as d3 from 'd3'; |
| |
| /** |
| * Retrieve the graph to show. |
| * |
| * @return {Promise} Promise resolved with the graph data. |
| */ |
| async function loadGraph() { |
| try { |
| // First, try LATEST_GRAPH from Cloud, which should work from production but |
| // fail in local development. |
| const data = await d3.json(LATEST_GRAPH); |
| console.log(`Loaded graph from ${LATEST_GRAPH}`); |
| return data; |
| } catch (e) { |
| // Then try LOCALHOST_GRAPH from localhost, which should work in local |
| // development. |
| const data = await d3.json(LOCALHOST_GRAPH); |
| console.log(`Loaded graph from ${LOCALHOST_GRAPH}`); |
| return data; |
| } |
| } |
| |
| export { |
| loadGraph, |
| }; |