UNPKG

@graphistry/node-api

Version:

Graphistry API client for use with node.js

109 lines (94 loc) 41.3 kB
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>@graphistry/node-api - v5.0.2</title><meta name="description" content="Documentation for @graphistry/node-api - v5.0.2"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base="."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">@graphistry/node-api - v5.0.2</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label><input type="checkbox" id="tsd-filter-externals" checked/><label class="tsd-widget" for="tsd-filter-externals">Externals</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><h1>@graphistry/node-api - v5.0.2 </h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><div class="tsd-panel tsd-typography"> <a href="#graphistrynode-api-graphistry39s-nodejs-client-api" id="graphistrynode-api-graphistry39s-nodejs-client-api" style="color: inherit; text-decoration: none;"> <h1><code>@graphistry/node-api</code>: Graphistry&#39;s Node.js client API</h1> </a> <a href="#automatically-upload-and-visualize-datasets-using-node-powered-by-graphistry39s-gpu-graph-visualization-infrastructure" id="automatically-upload-and-visualize-datasets-using-node-powered-by-graphistry39s-gpu-graph-visualization-infrastructure" style="color: inherit; text-decoration: none;"> <h2>Automatically upload and visualize datasets using node, powered by Graphistry&#39;s GPU graph visualization infrastructure</h2> </a> <a href="#install" id="install" style="color: inherit; text-decoration: none;"> <h3>Install</h3> </a> <p><code>npm install @graphistry/node-api</code></p> <a href="#standard-native-esm-imports" id="standard-native-esm-imports" style="color: inherit; text-decoration: none;"> <h3>Standard native <code>esm</code> imports</h3> </a> <pre><code class="language-javascript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">EdgeFile</span><span class="hl-1">, </span><span class="hl-2">NodeFile</span><span class="hl-1">, </span><span class="hl-2">Dataset</span><span class="hl-1">, </span><span class="hl-2">Client</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@graphistry/node-api&#39;</span><span class="hl-1">;</span> </code></pre> <p>Still transitioning to <code>esm</code>?</p> <ul> <li>You may need <code>&quot;type&quot;: &quot;module&quot;</code> in your <code>package.json</code></li> <li>Transpiling should preserve esm import syntax. Ex: <code>&quot;babel&quot;: { &quot;presets&quot;: [ [&quot;@babel/preset-env&quot;, {&quot;modules&quot;: false}] ] }</code></li> </ul> <p>The <a href="https://github.com/graphistry/graphistry-js/tree/master/projects/node-api">node-api-test sample project</a> shares an example of a native node project. Please contact the team for additional format support.</p> <a href="#usage" id="usage" style="color: inherit; text-decoration: none;"> <h3>Usage</h3> </a> <a href="#the-many-options" id="the-many-options" style="color: inherit; text-decoration: none;"> <h4>The many options</h4> </a> <p>The API is split between the client wrapper and the JSON configuration payloads:</p> <ul> <li><strong><a href="https://graphistry.github.io/graphistry-js/node-tsdocs/"><code>@graphistry/node-api</code> API docs</a></strong>: Overall Node.js client llibrary</li> <li><strong><a href="https://hub.graphistry.com/docs/api/">Graphistry REST API docs</a></strong>: JSON payload options around configuring file formats and visualization settings</li> </ul> <a href="#ex-javascript-with-asyncawait" id="ex-javascript-with-asyncawait" style="color: inherit; text-decoration: none;"> <h4>Ex: JavaScript with async/await</h4> </a> <pre><code class="language-javascript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">EdgeFile</span><span class="hl-1">, </span><span class="hl-2">NodeFile</span><span class="hl-1">, </span><span class="hl-2">Dataset</span><span class="hl-1">, </span><span class="hl-2">Client</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@graphistry/node-api&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">//defaults: &#39;https&#39;, &#39;hub.graphistry.com&#39;, &#39;https://hub.graphistry.com&#39;</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">client</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Client</span><span class="hl-1">(</span><span class="hl-3">&#39;my_username&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;my_password&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-4">//columnar data is fastest; column per attribute; reuse across datasets</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesFile</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">EdgeFile</span><span class="hl-1">({</span><span class="hl-3">&#39;s&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;a1&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">], </span><span class="hl-3">&#39;d&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;c3&#39;</span><span class="hl-1">]});</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">nodesFile</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">NodeFile</span><span class="hl-1">({</span><span class="hl-3">&#39;n&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;a1&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;c3&#39;</span><span class="hl-1">], </span><span class="hl-3">&#39;a1&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;x&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;y&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;z&#39;</span><span class="hl-1">]});</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">dataset</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Dataset</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-2">node_encodings:</span><span class="hl-1"> { </span><span class="hl-2">bindings:</span><span class="hl-1"> { </span><span class="hl-2">node:</span><span class="hl-1"> </span><span class="hl-3">&#39;n&#39;</span><span class="hl-1"> } },</span><br/><span class="hl-1"> </span><span class="hl-2">edge_encodings:</span><span class="hl-1"> { </span><span class="hl-2">bindings:</span><span class="hl-1"> { </span><span class="hl-2">source:</span><span class="hl-1"> </span><span class="hl-3">&#39;s&#39;</span><span class="hl-1">, </span><span class="hl-2">destination:</span><span class="hl-1"> </span><span class="hl-3">&#39;d&#39;</span><span class="hl-1"> } },</span><br/><span class="hl-1"> </span><span class="hl-2">metadata:</span><span class="hl-1"> {},</span><br/><span class="hl-1"> </span><span class="hl-2">name:</span><span class="hl-1"> </span><span class="hl-3">&#39;testdata&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}, </span><span class="hl-2">edgesFile</span><span class="hl-1">, </span><span class="hl-2">nodesFile</span><span class="hl-1">);</span><br/><br/><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">dataset</span><span class="hl-1">.</span><span class="hl-7">upload</span><span class="hl-1">(</span><span class="hl-2">client</span><span class="hl-1">);</span><br/><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-7">info</span><span class="hl-1">(</span><span class="hl-3">`View at </span><span class="hl-5">${</span><span class="hl-2">dataset</span><span class="hl-8">.</span><span class="hl-2">datasetID</span><span class="hl-5">}</span><span class="hl-3"> at </span><span class="hl-5">${</span><span class="hl-2">dataset</span><span class="hl-8">.</span><span class="hl-2">datasetURL</span><span class="hl-5">}</span><span class="hl-3">`</span><span class="hl-1">);</span> </code></pre> <a href="#ex-typescript-with-asyncawait" id="ex-typescript-with-asyncawait" style="color: inherit; text-decoration: none;"> <h3>Ex: TypeScript with async/await</h3> </a> <p>Exactly the same!</p> <a href="#ex-using-promises" id="ex-using-promises" style="color: inherit; text-decoration: none;"> <h3>Ex: Using promises</h3> </a> <pre><code class="language-javascript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">EdgeFile</span><span class="hl-1">, </span><span class="hl-2">NodeFile</span><span class="hl-1">, </span><span class="hl-2">Dataset</span><span class="hl-1">, </span><span class="hl-2">Client</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@graphistry/node-api&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">//defaults: &#39;https&#39;, &#39;hub.graphistry.com&#39;, &#39;https://hub.graphistry.com&#39;</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">client</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Client</span><span class="hl-1">(</span><span class="hl-2">user</span><span class="hl-1">, </span><span class="hl-2">password</span><span class="hl-1">);</span><br/><br/><span class="hl-4">//columnar data is fastest; column per attribute; reuse across datasets</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesFile</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">EdgeFile</span><span class="hl-1">({</span><span class="hl-3">&#39;s&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;a1&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">], </span><span class="hl-3">&#39;d&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;c3&#39;</span><span class="hl-1">]});</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">nodesFile</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">NodeFile</span><span class="hl-1">({</span><span class="hl-3">&#39;n&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;a1&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;c3&#39;</span><span class="hl-1">], </span><span class="hl-3">&#39;a1&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;x&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;y&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;z&#39;</span><span class="hl-1">]});</span><br/><br/><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Dataset</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-2">node_encodings:</span><span class="hl-1"> { </span><span class="hl-2">bindings:</span><span class="hl-1"> { </span><span class="hl-2">node:</span><span class="hl-1"> </span><span class="hl-3">&#39;n&#39;</span><span class="hl-1"> } },</span><br/><span class="hl-1"> </span><span class="hl-2">edge_encodings:</span><span class="hl-1"> { </span><span class="hl-2">bindings:</span><span class="hl-1"> { </span><span class="hl-2">source:</span><span class="hl-1"> </span><span class="hl-3">&#39;s&#39;</span><span class="hl-1">, </span><span class="hl-2">destination:</span><span class="hl-1"> </span><span class="hl-3">&#39;d&#39;</span><span class="hl-1"> } },</span><br/><span class="hl-1"> </span><span class="hl-2">metadata:</span><span class="hl-1"> {},</span><br/><span class="hl-1"> </span><span class="hl-2">name:</span><span class="hl-1"> </span><span class="hl-3">&#39;testdata&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> }, </span><span class="hl-2">edgesFile</span><span class="hl-1">, </span><span class="hl-2">nodesFile</span><span class="hl-1">))</span><br/><span class="hl-1">.</span><span class="hl-7">upload</span><span class="hl-1">(</span><span class="hl-2">client</span><span class="hl-1">)</span><br/><span class="hl-1">.</span><span class="hl-7">then</span><span class="hl-1">(</span><span class="hl-2">dataset</span><span class="hl-1"> </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-7">info</span><span class="hl-1">(</span><span class="hl-3">`View at </span><span class="hl-5">${</span><span class="hl-2">dataset</span><span class="hl-8">.</span><span class="hl-2">datasetID</span><span class="hl-5">}</span><span class="hl-3"> at </span><span class="hl-5">${</span><span class="hl-2">dataset</span><span class="hl-8">.</span><span class="hl-2">datasetURL</span><span class="hl-5">}</span><span class="hl-3">`</span><span class="hl-1">);</span><br/><span class="hl-1">})</span><br/><span class="hl-1">.</span><span class="hl-7">catch</span><span class="hl-1">(</span><span class="hl-2">err</span><span class="hl-1"> </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-7">error</span><span class="hl-1">(</span><span class="hl-3">&#39;Oops&#39;</span><span class="hl-1">, </span><span class="hl-2">err</span><span class="hl-1">);</span><br/><span class="hl-1">})</span> </code></pre> <a href="#ex-apache-arrow-uploads" id="ex-apache-arrow-uploads" style="color: inherit; text-decoration: none;"> <h3>Ex: Apache Arrow uploads</h3> </a> <p>We recommend uploading <a href="https://arrow.apache.org/docs/dev/index.html">Apache Arrow</a> format data in most scenarios due to the speed and reliability guarantees:</p> <pre><code class="language-javascript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">tableFromArrays</span><span class="hl-1">, </span><span class="hl-2">tableToIPC</span><span class="hl-1">, </span><span class="hl-2">Table</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;apache-arrow&#39;</span><span class="hl-1">;</span><br/><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">EdgeFile</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@graphistry/node-api&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">//columnar data is fastest; column per attribute; reuse across datasets</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesJSON</span><span class="hl-1"> = {</span><span class="hl-3">&#39;s&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;a1&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">], </span><span class="hl-3">&#39;d&#39;</span><span class="hl-2">:</span><span class="hl-1"> [</span><span class="hl-3">&#39;b2&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;c3&#39;</span><span class="hl-1">]};</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesTable</span><span class="hl-1">: </span><span class="hl-9">Table</span><span class="hl-1"> = </span><span class="hl-7">tableFromArrays</span><span class="hl-1">(</span><span class="hl-2">edgesJSON</span><span class="hl-1">);</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesUint8</span><span class="hl-1">: </span><span class="hl-9">Uint8Array</span><span class="hl-1"> = </span><span class="hl-7">tableToIPC</span><span class="hl-1">(</span><span class="hl-2">edgesArr</span><span class="hl-1">, </span><span class="hl-3">&#39;file&#39;</span><span class="hl-1">);</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesFile</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">EdgeFile</span><span class="hl-1">(</span><span class="hl-2">edgesUint8</span><span class="hl-1">, </span><span class="hl-3">&#39;arrow&#39;</span><span class="hl-1">);</span> </code></pre> <a href="#ex-using-an-organization" id="ex-using-an-organization" style="color: inherit; text-decoration: none;"> <h3>Ex: Using an organization</h3> </a> <p>You can log into an organization instead of a personal account</p> <pre><code class="language-javascript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">Client</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@graphistry/node-api&#39;</span><span class="hl-1">;</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">c</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Client</span><span class="hl-1">(</span><span class="hl-3">&#39;my_user&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;my_pass&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;my_org&#39;</span><span class="hl-1">);</span> </code></pre> <a href="#ex-custom-token" id="ex-custom-token" style="color: inherit; text-decoration: none;"> <h3>Ex: Custom token</h3> </a> <p>If you already have a JWT token, you can pass it in</p> <pre><code class="language-javascript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">Client</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@graphistry/node-api&#39;</span><span class="hl-1">;</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">c</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Client</span><span class="hl-1">();</span><br/><span class="hl-2">c</span><span class="hl-1">.</span><span class="hl-7">setToken</span><span class="hl-1">(</span><span class="hl-3">&#39;Bearer 123abc&#39;</span><span class="hl-1">);</span> </code></pre> <a href="#ex-custom-server" id="ex-custom-server" style="color: inherit; text-decoration: none;"> <h3>Ex: Custom server</h3> </a> <p>You can switch which server to use for uploads and for downloads, which is useful for self-hosted servers and advanced enterprise network configurations</p> <pre><code class="language-javascript"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">Client</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@graphistry/node-api&#39;</span><span class="hl-1">;</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">c</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Client</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-3">&#39;my_user&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;my_pass&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;optional_my_org&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">&#39;https&#39;</span><span class="hl-1">, </span><span class="hl-4">//upload protcol</span><br/><span class="hl-1"> </span><span class="hl-3">&#39;hub.graphistry.com&#39;</span><span class="hl-1">, </span><span class="hl-4">//upload server</span><br/><span class="hl-1"> </span><span class="hl-3">&#39;https://hub.graphistry.com&#39;</span><span class="hl-1"> </span><span class="hl-4">//url to use in browsers</span><br/><span class="hl-1">)</span> </code></pre> <a href="#using-api-options" id="using-api-options" style="color: inherit; text-decoration: none;"> <h3>Using API Options</h3> </a> <ul> <li><p>Set parsing options for different <code>File</code> formats and shapes</p> </li> <li><p>Configure <code>Dataset</code> nodes &amp; edges to use data-driven colors, sizes, icons, and badges using <em>simple</em> and <em>complex</em> encodings, including both <em>continuous</em> and <em>categorical</em> mappings</p> </li> <li><p>Theme with custom branding around background &amp; foreground colors, images, logos, titles, and more</p> </li> </ul> <pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">client</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Client</span><span class="hl-1">(</span><span class="hl-2">user</span><span class="hl-1">, </span><span class="hl-2">password</span><span class="hl-1">, </span><span class="hl-2">org</span><span class="hl-1">, </span><span class="hl-2">protocol</span><span class="hl-1">, </span><span class="hl-2">host</span><span class="hl-1">);</span><br/><br/><span class="hl-4">// Row-oriented data slower to upload but often convenient</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesRows</span><span class="hl-1"> = [</span><br/><span class="hl-1"> { </span><span class="hl-3">&#39;s&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;a&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;d&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;b&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;v&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;e1&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-3">&#39;s&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;b&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;d&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;c&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;v&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;e2&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-3">&#39;s&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;c&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;d&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;a&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;v&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;e3&#39;</span><span class="hl-1"> }</span><br/><span class="hl-1">];</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">nodesRows</span><span class="hl-1"> = [</span><br/><span class="hl-1"> { </span><span class="hl-3">&#39;n&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;a&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;vv&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-10">10</span><span class="hl-1">, </span><span class="hl-3">&#39;t&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;person&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-3">&#39;n&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;b&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;vv&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-10">20</span><span class="hl-1">, </span><span class="hl-3">&#39;t&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;person&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> { </span><span class="hl-3">&#39;n&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;c&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;vv&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-10">30</span><span class="hl-1"> , </span><span class="hl-3">&#39;t&#39;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&#39;car&#39;</span><span class="hl-1"> }</span><br/><span class="hl-1">];</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">edgesFile</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">EdgeFile</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-2">edgesRows</span><span class="hl-1">, </span><span class="hl-3">&#39;json&#39;</span><span class="hl-1">, </span><span class="hl-3">&#39;my_edges&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">// Also: file_compression, sql_transforms, ...</span><br/><span class="hl-1"> </span><span class="hl-4">// https://hub.graphistry.com/docs/api/2/rest/files/</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">// JSON parsing options:</span><br/><span class="hl-1"> </span><span class="hl-4">// - https://hub.graphistry.com/docs/api/2/rest/upload/data/#uploadjson2</span><br/><span class="hl-1"> </span><span class="hl-4">// - https://pandas.pydata.org/docs/reference/api/pandas.read_json.html</span><br/><span class="hl-1"> </span><span class="hl-2">parser_options:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">orient:</span><span class="hl-1"> </span><span class="hl-3">&#39;records&#39;</span><span class="hl-1"> </span><span class="hl-4">// Row-oriented: Array of objects</span><br/><span class="hl-1"> } </span><span class="hl-4">// Default: to columnar json - Object of arrays</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">);</span><br/><br/><span class="hl-4">// Node files are optional, mainly for properties</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">nodesFile</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">NodeFile</span><span class="hl-1">(</span><span class="hl-2">nodesRows</span><span class="hl-1">);</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">dataset</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-7">Dataset</span><span class="hl-1">(</span><br/><span class="hl-1"> {</span><br/><br/><span class="hl-1"> </span><span class="hl-4">// Also: color, size, title, icon, badge, axis</span><br/><span class="hl-1"> </span><span class="hl-4">// - https://hub.graphistry.com/docs/api/2/rest/upload/colors</span><br/><span class="hl-1"> </span><span class="hl-4">// - https://hub.graphistry.com/docs/api/2/rest/upload/complex/</span><br/><span class="hl-1"> </span><span class="hl-2">node_encodings:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">bindings:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">node:</span><span class="hl-1"> </span><span class="hl-3">&#39;n&#39;</span><span class="hl-1">, </span><span class="hl-4">// id (required)</span><br/><span class="hl-1"> </span><span class="hl-2">node_title:</span><span class="hl-1"> </span><span class="hl-3">&#39;vv&#39;</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">complex:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">default:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">pointColorEncoding:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">graphType:</span><span class="hl-1"> </span><span class="hl-3">&quot;point&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">encodingType:</span><span class="hl-1"> </span><span class="hl-3">&quot;color&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">attribute:</span><span class="hl-1"> </span><span class="hl-3">&quot;vv&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">variation:</span><span class="hl-1"> </span><span class="hl-3">&quot;continuous&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">colors:</span><span class="hl-1"> [</span><span class="hl-3">&quot;blue&quot;</span><span class="hl-1">, </span><span class="hl-3">&quot;yellow&quot;</span><span class="hl-1">, </span><span class="hl-3">&quot;red&quot;</span><span class="hl-1">]</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">pointIconEncoding:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">graphType:</span><span class="hl-1"> </span><span class="hl-3">&quot;point&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">encodingType:</span><span class="hl-1"> </span><span class="hl-3">&quot;icon&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">attribute:</span><span class="hl-1"> </span><span class="hl-3">&quot;t&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">variation:</span><span class="hl-1"> </span><span class="hl-3">&quot;categorical&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">mapping:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">categorical:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">fixed:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">&quot;person&quot;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&quot;user&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">&quot;car&quot;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&quot;car&quot;</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">other:</span><span class="hl-1"> </span><span class="hl-3">&quot;question&quot;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> },</span><br/><br/><span class="hl-1"> </span><span class="hl-4">//Also: color, weight, icon, badge, title</span><br/><span class="hl-1"> </span><span class="hl-4">// - https://hub.graphistry.com/docs/api/2/rest/upload/colors</span><br/><span class="hl-1"> </span><span class="hl-4">// - https://hub.graphistry.com/docs/api/2/rest/upload/complex/</span><br/><span class="hl-1"> </span><span class="hl-2">edge_encodings:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">bindings:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">source:</span><span class="hl-1"> </span><span class="hl-3">&#39;s&#39;</span><span class="hl-1">, </span><span class="hl-2">destination:</span><span class="hl-1"> </span><span class="hl-3">&#39;d&#39;</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">complex:</span><span class="hl-1"> { }</span><br/><span class="hl-1"> },</span><br/><br/><span class="hl-1"> </span><span class="hl-4">// Brand &amp; theme: Background, foreground, logo, page metadata</span><br/><span class="hl-1"> </span><span class="hl-4">// https://hub.graphistry.com/docs/api/2/rest/upload/metadata/</span><br/><span class="hl-1"> </span><span class="hl-2">metadata:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">bg:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">color:</span><span class="hl-1"> </span><span class="hl-3">&#39;silver&#39;</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">logo:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">&quot;url&quot;</span><span class="hl-2">:</span><span class="hl-1"> </span><span class="hl-3">&quot;http://a.com/logo.png&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">name:</span><span class="hl-1"> </span><span class="hl-3">&#39;testdata&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-2">edgesFile</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">nodesFile</span><span class="hl-1">,</span><br/><br/><span class="hl-1"> </span><span class="hl-4">// Visual and layout settings</span><br/><span class="hl-1"> </span><span class="hl-4">// https://hub.graphistry.com/docs/api/1/rest/url/#urloptions</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">strongGravity:</span><span class="hl-1"> </span><span class="hl-5">true</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">edgeCurvature:</span><span class="hl-1"> </span><span class="hl-10">0.5</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">);</span><br/><br/><span class="hl-0">await</span><span class="hl-1"> </span><span class="hl-2">dataset</span><span class="hl-1">.</span><span class="hl-7">upload</span><span class="hl-1">(</span><span class="hl-2">client</span><span class="hl-1">);</span><br/><br/><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-7">info</span><span class="hl-1">(</span><span class="hl-3">`View dataset </span><span class="hl-5">${</span><span class="hl-2">dataset</span><span class="hl-8">.</span><span class="hl-2">datasetID</span><span class="hl-5">}</span><span class="hl-3"> at </span><span class="hl-5">${</span><span class="hl-2">dataset</span><span class="hl-8">.</span><span class="hl-2">datasetURL</span><span class="hl-5">}</span><span class="hl-3">`</span><span class="hl-1">);</span><br/><span class="hl-2">console</span><span class="hl-1">.</span><span class="hl-7">info</span><span class="hl-1">(</span><span class="hl-3">`Dataset using node file </span><span class="hl-5">${</span><span class="hl-2">nodesFile</span><span class="hl-8">.</span><span class="hl-2">fileID</span><span class="hl-5">}</span><span class="hl-3">, edge file </span><span class="hl-5">${</span><span class="hl-2">edgesFile</span><span class="hl-8">.</span><span class="hl-2">fileID</span><span class="hl-5">}</span><span class="hl-3">`</span><span class="hl-1">);</span> </code></pre> <a href="#underlying-rest-api" id="underlying-rest-api" style="color: inherit; text-decoration: none;"> <h3>Underlying REST API</h3> </a> <p>For further information about authentication, files, and datasets, see the <a href="https://hub.graphistry.com/docs/api/">Graphistry REST API docs</a>.</p> <a href="#typescript" id="typescript" style="color: inherit; text-decoration: none;"> <h3>TypeScript</h3> </a> <p>Types are already automatically bundled with this module</p> <p>For source maps, you may want to add <code>NODE_OPTIONS=--enable-source-maps</code> to your environment or run node as <code>node --enable-source-maps</code>.</p> </div></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class="current"><a href="modules.html">Exports</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="tsd-kind-class"><a href="classes/Client.html" class="tsd-kind-icon">Client</a></li><li class="tsd-kind-class"><a href="classes/ClientPKey.html" class="tsd-kind-icon">ClientPKey</a></li><li class="tsd-kind-class"><a href="classes/Dataset.html" class="tsd-kind-icon">Dataset</a></li><li class="tsd-kind-class"><a href="classes/EdgeFile.html" class="tsd-kind-icon">Edge<wbr/>File</a></li><li class="tsd-kind-class"><a href="classes/File.html" class="tsd-kind-icon">File</a></li><li class="tsd-kind-enum"><a href="enums/FileType.html" class="tsd-kind-icon">File<wbr/>Type</a></li><li class="tsd-kind-type-alias"><a href="modules.html#Mode" class="tsd-kind-icon">Mode</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ModeAction" class="tsd-kind-icon">Mode<wbr/>Action</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ModeActionRaw" class="tsd-kind-icon">Mode<wbr/>Action<wbr/>Raw</a></li><li class="tsd-kind-class"><a href="classes/NodeFile.html" class="tsd-kind-icon">Node<wbr/>File</a></li><li class="tsd-kind-class"><a href="classes/Privacy.html" class="tsd-kind-icon">Privacy</a></li></ul></nav></div></div></div><footer class=""><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private property</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="assets/main.js"></script></body></html>