@jupiterone/integration-sdk-cli 9.9.2 → 9.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/babel.config.js +1 -0
- package/dist/src/commands/collect.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/jest.config.js +1 -1
- package/package.json +5 -5
- package/src/__tests__/__snapshots__/cli.test.ts.snap +13 -13
- package/src/__tests__/cli/__snapshots__/visualize-types.test.ts.snap +22 -22
- package/src/__tests__/cli-run-failure.test.ts +0 -55
- package/src/commands/collect.ts +1 -0
- package/src/visualization/__tests__/__snapshots__/generateVisHTML.test.ts.snap +27 -27
package/jest.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupiterone/integration-sdk-cli",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.10.0",
|
|
4
4
|
"description": "The SDK for developing JupiterOne integrations",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@jupiterone/data-model": "^0.54.0",
|
|
28
|
-
"@jupiterone/integration-sdk-core": "^9.
|
|
29
|
-
"@jupiterone/integration-sdk-runtime": "^9.
|
|
28
|
+
"@jupiterone/integration-sdk-core": "^9.10.0",
|
|
29
|
+
"@jupiterone/integration-sdk-runtime": "^9.10.0",
|
|
30
30
|
"chalk": "^4",
|
|
31
31
|
"commander": "^9.4.0",
|
|
32
32
|
"fs-extra": "^10.1.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"vis": "^4.21.0-EOL"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@jupiterone/integration-sdk-private-test-utils": "^9.
|
|
47
|
+
"@jupiterone/integration-sdk-private-test-utils": "^9.10.0",
|
|
48
48
|
"@pollyjs/adapter-node-http": "^6.0.5",
|
|
49
49
|
"@pollyjs/core": "^6.0.5",
|
|
50
50
|
"@pollyjs/persister-fs": "^6.0.5",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"memfs": "^3.2.0",
|
|
57
57
|
"neo-forgery": "^2.0.0"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "d0abee1f9467a65e079251b93edae4d076f8414b"
|
|
60
60
|
}
|
|
@@ -14,7 +14,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
14
14
|
<!--
|
|
15
15
|
********************************************************************************
|
|
16
16
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
17
|
-
|
|
17
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
18
18
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
19
19
|
|
|
20
20
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -56,7 +56,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
56
56
|
<!--
|
|
57
57
|
********************************************************************************
|
|
58
58
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
59
|
-
|
|
59
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
60
60
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
61
61
|
|
|
62
62
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -97,7 +97,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
97
97
|
<!--
|
|
98
98
|
********************************************************************************
|
|
99
99
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
100
|
-
|
|
100
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
101
101
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
102
102
|
|
|
103
103
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -136,7 +136,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
136
136
|
<!--
|
|
137
137
|
********************************************************************************
|
|
138
138
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
139
|
-
|
|
139
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
140
140
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
141
141
|
|
|
142
142
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -174,7 +174,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
174
174
|
<!--
|
|
175
175
|
********************************************************************************
|
|
176
176
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
177
|
-
|
|
177
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
178
178
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
179
179
|
|
|
180
180
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -223,7 +223,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
223
223
|
<!--
|
|
224
224
|
********************************************************************************
|
|
225
225
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
226
|
-
|
|
226
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
227
227
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
228
228
|
|
|
229
229
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -262,7 +262,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
262
262
|
<!--
|
|
263
263
|
********************************************************************************
|
|
264
264
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
265
|
-
|
|
265
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
266
266
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
267
267
|
|
|
268
268
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -310,7 +310,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
310
310
|
<!--
|
|
311
311
|
********************************************************************************
|
|
312
312
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
313
|
-
|
|
313
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
314
314
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
315
315
|
|
|
316
316
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -357,7 +357,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
357
357
|
<!--
|
|
358
358
|
********************************************************************************
|
|
359
359
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
360
|
-
|
|
360
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
361
361
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
362
362
|
|
|
363
363
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -396,7 +396,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
396
396
|
<!--
|
|
397
397
|
********************************************************************************
|
|
398
398
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
399
|
-
|
|
399
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
400
400
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
401
401
|
|
|
402
402
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -437,7 +437,7 @@ JupiterOne. This may require provisioning some resources on the provider's side
|
|
|
437
437
|
<!--
|
|
438
438
|
********************************************************************************
|
|
439
439
|
NOTE: ALL OF THE FOLLOWING DOCUMENTATION IS GENERATED USING THE
|
|
440
|
-
|
|
440
|
+
"j1-integration document" COMMAND. DO NOT EDIT BY HAND! PLEASE SEE THE DEVELOPER
|
|
441
441
|
DOCUMENTATION FOR USAGE INFORMATION:
|
|
442
442
|
|
|
443
443
|
https://github.com/JupiterOne/sdk/blob/main/docs/integrations/development.md
|
|
@@ -462,6 +462,6 @@ END OF GENERATED DOCUMENTATION AFTER BELOW MARKER
|
|
|
462
462
|
<!-- {J1_DOCUMENTATION_MARKER_END} -->"
|
|
463
463
|
`;
|
|
464
464
|
|
|
465
|
-
exports[`generate-integration-graph-schema should generate integration graph schema with TypeScript integration 1`] = `"{
|
|
465
|
+
exports[`generate-integration-graph-schema should generate integration graph schema with TypeScript integration 1`] = `"{"entities":[{"resourceName":"The User","_class":"User","_type":"my_user"},{"resourceName":"The Group","_class":["Group","Other"],"_type":"my_group"}],"relationships":[{"_class":"HAS","sourceType":"my_group","targetType":"my_user"}],"mappedRelationships":[{"sourceType":"my_user","_class":"IS","targetType":"employee","direction":"FORWARD"}]}"`;
|
|
466
466
|
|
|
467
|
-
exports[`generate-integration-graph-schema should generate integration graph schema with integration JavaScript dist 1`] = `"{
|
|
467
|
+
exports[`generate-integration-graph-schema should generate integration graph schema with integration JavaScript dist 1`] = `"{"entities":[{"resourceName":"The User","_class":"User","_type":"my_user"},{"resourceName":"The Group","_class":["Group","Other"],"_type":"my_group"}],"relationships":[{"_class":"HAS","sourceType":"my_group","targetType":"my_user"}],"mappedRelationships":[{"sourceType":"my_user","_class":"IS","targetType":"employee","direction":"FORWARD"}]}"`;
|
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`visualize integration metadata creates graph based on integration data with entities and relationships 1`] = `
|
|
4
4
|
"<!DOCTYPE html>
|
|
5
|
-
<html lang
|
|
5
|
+
<html lang="en">
|
|
6
6
|
<head>
|
|
7
|
-
<meta charset
|
|
8
|
-
<meta name
|
|
7
|
+
<meta charset="UTF-8">
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
9
9
|
<title>Integration SDK Graph</title>
|
|
10
10
|
</head>
|
|
11
|
-
<body style
|
|
12
|
-
<div id
|
|
13
|
-
<script type
|
|
14
|
-
<script type
|
|
15
|
-
var nodes = new vis.DataSet([{
|
|
16
|
-
var edges = new vis.DataSet([{
|
|
11
|
+
<body style="height:100vh;width:100%">
|
|
12
|
+
<div id="integration-graph" style="height:100vh;width:100%"></div>
|
|
13
|
+
<script type="text/javascript" src="https://unpkg.com/vis-network@7.6.1/standalone/umd/vis-network.min.js"></script>
|
|
14
|
+
<script type="text/javascript">
|
|
15
|
+
var nodes = new vis.DataSet([{"id":"my_account","label":"Account\\nmy_account\\nAccount"},{"id":"my_account_1","label":"Account 1\\nmy_account_1\\nAccount"},{"id":"my_account_2","label":"Account 2\\nmy_account_2\\nAccount"},{"id":"the_root","label":"The Root\\nthe_root\\nRoot"}]);
|
|
16
|
+
var edges = new vis.DataSet([{"from":"the_root","to":"my_account","label":"HAS"},{"from":"the_root","to":"my_account_1","label":"HAS"},{"from":"the_root","to":"my_account_2","label":"HAS"}]);
|
|
17
17
|
// create a network
|
|
18
|
-
var container = document.getElementById(
|
|
18
|
+
var container = document.getElementById("integration-graph");
|
|
19
19
|
var data = {
|
|
20
20
|
nodes: nodes,
|
|
21
21
|
edges: edges
|
|
22
22
|
};
|
|
23
|
-
var options = {
|
|
23
|
+
var options = {"edges":{"color":"#6647ff","arrows":{"to":{"enabled":true}}},"nodes":{"color":{"border":"#6647ff","background":"#3ce3b5"}},"physics":{"barnesHut":{"springLength":300,"centralGravity":0.03}}};
|
|
24
24
|
var network = new vis.Network(container, data, options);
|
|
25
25
|
</script>
|
|
26
26
|
</body>
|
|
@@ -29,25 +29,25 @@ exports[`visualize integration metadata creates graph based on integration data
|
|
|
29
29
|
|
|
30
30
|
exports[`visualize integration metadata creates graph filtered by --type flag 1`] = `
|
|
31
31
|
"<!DOCTYPE html>
|
|
32
|
-
<html lang
|
|
32
|
+
<html lang="en">
|
|
33
33
|
<head>
|
|
34
|
-
<meta charset
|
|
35
|
-
<meta name
|
|
34
|
+
<meta charset="UTF-8">
|
|
35
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
36
36
|
<title>Integration SDK Graph</title>
|
|
37
37
|
</head>
|
|
38
|
-
<body style
|
|
39
|
-
<div id
|
|
40
|
-
<script type
|
|
41
|
-
<script type
|
|
42
|
-
var nodes = new vis.DataSet([{
|
|
43
|
-
var edges = new vis.DataSet([{
|
|
38
|
+
<body style="height:100vh;width:100%">
|
|
39
|
+
<div id="integration-graph" style="height:100vh;width:100%"></div>
|
|
40
|
+
<script type="text/javascript" src="https://unpkg.com/vis-network@7.6.1/standalone/umd/vis-network.min.js"></script>
|
|
41
|
+
<script type="text/javascript">
|
|
42
|
+
var nodes = new vis.DataSet([{"id":"my_account","label":"Account\\nmy_account\\nAccount"},{"id":"the_root","label":"The Root\\nthe_root\\nRoot"}]);
|
|
43
|
+
var edges = new vis.DataSet([{"from":"the_root","to":"my_account","label":"HAS"}]);
|
|
44
44
|
// create a network
|
|
45
|
-
var container = document.getElementById(
|
|
45
|
+
var container = document.getElementById("integration-graph");
|
|
46
46
|
var data = {
|
|
47
47
|
nodes: nodes,
|
|
48
48
|
edges: edges
|
|
49
49
|
};
|
|
50
|
-
var options = {
|
|
50
|
+
var options = {"edges":{"color":"#6647ff","arrows":{"to":{"enabled":true}}},"nodes":{"color":{"border":"#6647ff","background":"#3ce3b5"}},"physics":{"barnesHut":{"springLength":300,"centralGravity":0.03}}};
|
|
51
51
|
var network = new vis.Network(container, data, options);
|
|
52
52
|
</script>
|
|
53
53
|
</body>
|
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
const mockCreateIntegrationLogger = jest.fn();
|
|
2
|
-
|
|
3
|
-
jest.doMock('@jupiterone/integration-sdk-runtime', () => ({
|
|
4
|
-
...(jest.requireActual('@jupiterone/integration-sdk-runtime') as any),
|
|
5
|
-
createIntegrationLogger: mockCreateIntegrationLogger,
|
|
6
|
-
}));
|
|
7
|
-
|
|
8
|
-
import { mocked } from 'jest-mock';
|
|
9
1
|
import { Polly } from '@pollyjs/core';
|
|
10
2
|
import NodeHttpAdapter from '@pollyjs/adapter-node-http';
|
|
11
3
|
import FSPersister from '@pollyjs/persister-fs';
|
|
12
|
-
|
|
13
4
|
import { loadProjectStructure } from '@jupiterone/integration-sdk-private-test-utils';
|
|
14
5
|
import { SynchronizationJobStatus } from '@jupiterone/integration-sdk-core';
|
|
15
|
-
|
|
16
6
|
import { generateSynchronizationJob } from './util/synchronization';
|
|
17
|
-
|
|
18
7
|
import { createCli } from '../index';
|
|
19
|
-
|
|
20
8
|
import { setupSynchronizerApi } from './util/synchronization';
|
|
21
|
-
|
|
22
9
|
import * as log from '../log';
|
|
23
10
|
import { createTestPolly } from './util/recording';
|
|
24
11
|
|
|
@@ -27,10 +14,6 @@ jest.mock('../log');
|
|
|
27
14
|
Polly.register(NodeHttpAdapter);
|
|
28
15
|
Polly.register(FSPersister);
|
|
29
16
|
|
|
30
|
-
const { createIntegrationLogger } = jest.requireActual(
|
|
31
|
-
'@jupiterone/integration-sdk-runtime',
|
|
32
|
-
);
|
|
33
|
-
|
|
34
17
|
let polly: Polly;
|
|
35
18
|
|
|
36
19
|
beforeEach(() => {
|
|
@@ -40,10 +23,6 @@ beforeEach(() => {
|
|
|
40
23
|
|
|
41
24
|
polly = createTestPolly('run-cli-failure');
|
|
42
25
|
|
|
43
|
-
mocked(mockCreateIntegrationLogger).mockReturnValue(
|
|
44
|
-
createIntegrationLogger({ name: 'test' }),
|
|
45
|
-
);
|
|
46
|
-
|
|
47
26
|
jest.spyOn(process, 'exit').mockImplementation((code: number | undefined) => {
|
|
48
27
|
throw new Error(`Process exited with code ${code}`);
|
|
49
28
|
});
|
|
@@ -72,37 +51,3 @@ test('aborts synchronization job if an error occurs', async () => {
|
|
|
72
51
|
status: SynchronizationJobStatus.ABORTED,
|
|
73
52
|
});
|
|
74
53
|
});
|
|
75
|
-
|
|
76
|
-
test('does not log errors that have been previously logged', async () => {
|
|
77
|
-
const job = generateSynchronizationJob();
|
|
78
|
-
|
|
79
|
-
setupSynchronizerApi({ polly, job, baseUrl: 'https://api.us.jupiterone.io' });
|
|
80
|
-
|
|
81
|
-
const logger = createIntegrationLogger({ name: 'test' });
|
|
82
|
-
|
|
83
|
-
const isHandledErrorSpy = jest.spyOn(logger, 'isHandledError');
|
|
84
|
-
const validationFailureSpy = jest.spyOn(logger, 'validationFailure');
|
|
85
|
-
const warnSpy = jest.spyOn(logger, 'warn');
|
|
86
|
-
|
|
87
|
-
jest.spyOn(logger, 'child').mockReturnValue(logger);
|
|
88
|
-
|
|
89
|
-
mocked(mockCreateIntegrationLogger).mockReturnValue(logger);
|
|
90
|
-
|
|
91
|
-
await createCli().parseAsync([
|
|
92
|
-
'node',
|
|
93
|
-
'j1-integration',
|
|
94
|
-
'run',
|
|
95
|
-
'--integrationInstanceId',
|
|
96
|
-
'test',
|
|
97
|
-
]);
|
|
98
|
-
|
|
99
|
-
expect(validationFailureSpy).toHaveBeenCalledTimes(1);
|
|
100
|
-
|
|
101
|
-
const loggedError = validationFailureSpy.mock.calls[0][0];
|
|
102
|
-
|
|
103
|
-
expect(isHandledErrorSpy).toHaveBeenCalledTimes(1);
|
|
104
|
-
expect(isHandledErrorSpy).toHaveBeenCalledWith(loggedError);
|
|
105
|
-
expect(isHandledErrorSpy).toHaveReturnedWith(true);
|
|
106
|
-
|
|
107
|
-
expect(warnSpy).toHaveBeenCalledTimes(1);
|
|
108
|
-
});
|
package/src/commands/collect.ts
CHANGED
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`renders custom config when passed in 1`] = `
|
|
4
4
|
"<!DOCTYPE html>
|
|
5
|
-
<html lang
|
|
5
|
+
<html lang="en">
|
|
6
6
|
<head>
|
|
7
|
-
<meta charset
|
|
8
|
-
<meta name
|
|
7
|
+
<meta charset="UTF-8">
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
9
9
|
<title>Integration SDK Graph</title>
|
|
10
10
|
</head>
|
|
11
|
-
<body style
|
|
12
|
-
<div id
|
|
13
|
-
<script type
|
|
14
|
-
<script type
|
|
15
|
-
var nodes = new vis.DataSet([{
|
|
16
|
-
var edges = new vis.DataSet([{
|
|
11
|
+
<body style="height:100vh;width:100%">
|
|
12
|
+
<div id="integration-graph" style="height:100vh;width:100%"></div>
|
|
13
|
+
<script type="text/javascript" src="https://unpkg.com/vis-network@7.6.1/standalone/umd/vis-network.min.js"></script>
|
|
14
|
+
<script type="text/javascript">
|
|
15
|
+
var nodes = new vis.DataSet([{"id":"1","label":"Node 1"},{"id":"2","label":"Node 2"},{"id":"3","label":"Node 3"}]);
|
|
16
|
+
var edges = new vis.DataSet([{"from":"1","to":"2"},{"from":"2","to":"3"},{"from":"3","to":"1"}]);
|
|
17
17
|
// create a network
|
|
18
|
-
var container = document.getElementById(
|
|
18
|
+
var container = document.getElementById("integration-graph");
|
|
19
19
|
var data = {
|
|
20
20
|
nodes: nodes,
|
|
21
21
|
edges: edges
|
|
22
22
|
};
|
|
23
|
-
var options = {
|
|
23
|
+
var options = {"edges":{"color":"#ffffff","arrows":{"to":{"enabled":true}}},"physics":{"barnesHut":{"springLength":300,"centralGravity":0.03}}};
|
|
24
24
|
var network = new vis.Network(container, data, options);
|
|
25
25
|
</script>
|
|
26
26
|
</body>
|
|
@@ -29,25 +29,25 @@ exports[`renders custom config when passed in 1`] = `
|
|
|
29
29
|
|
|
30
30
|
exports[`renders html with default config 1`] = `
|
|
31
31
|
"<!DOCTYPE html>
|
|
32
|
-
<html lang
|
|
32
|
+
<html lang="en">
|
|
33
33
|
<head>
|
|
34
|
-
<meta charset
|
|
35
|
-
<meta name
|
|
34
|
+
<meta charset="UTF-8">
|
|
35
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
36
36
|
<title>Integration SDK Graph</title>
|
|
37
37
|
</head>
|
|
38
|
-
<body style
|
|
39
|
-
<div id
|
|
40
|
-
<script type
|
|
41
|
-
<script type
|
|
42
|
-
var nodes = new vis.DataSet([{
|
|
43
|
-
var edges = new vis.DataSet([{
|
|
38
|
+
<body style="height:100vh;width:100%">
|
|
39
|
+
<div id="integration-graph" style="height:100vh;width:100%"></div>
|
|
40
|
+
<script type="text/javascript" src="https://unpkg.com/vis-network@7.6.1/standalone/umd/vis-network.min.js"></script>
|
|
41
|
+
<script type="text/javascript">
|
|
42
|
+
var nodes = new vis.DataSet([{"id":"1","label":"Node 1"},{"id":"2","label":"Node 2"},{"id":"3","label":"Node 3"}]);
|
|
43
|
+
var edges = new vis.DataSet([{"from":"1","to":"2"},{"from":"2","to":"3"},{"from":"3","to":"1"}]);
|
|
44
44
|
// create a network
|
|
45
|
-
var container = document.getElementById(
|
|
45
|
+
var container = document.getElementById("integration-graph");
|
|
46
46
|
var data = {
|
|
47
47
|
nodes: nodes,
|
|
48
48
|
edges: edges
|
|
49
49
|
};
|
|
50
|
-
var options = {
|
|
50
|
+
var options = {"edges":{"arrows":{"to":{"enabled":true}}},"physics":{"barnesHut":{"springLength":300,"centralGravity":0.03}}};
|
|
51
51
|
var network = new vis.Network(container, data, options);
|
|
52
52
|
</script>
|
|
53
53
|
</body>
|
|
@@ -56,14 +56,14 @@ exports[`renders html with default config 1`] = `
|
|
|
56
56
|
|
|
57
57
|
exports[`renders nothing to display message when there is nothing to display 1`] = `
|
|
58
58
|
"<!DOCTYPE html>
|
|
59
|
-
<html lang
|
|
59
|
+
<html lang="en">
|
|
60
60
|
<head>
|
|
61
|
-
<meta charset
|
|
62
|
-
<meta name
|
|
61
|
+
<meta charset="UTF-8">
|
|
62
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
63
63
|
<title>Integration SDK Graph</title>
|
|
64
64
|
</head>
|
|
65
|
-
<body style
|
|
66
|
-
<h1 style
|
|
65
|
+
<body style="height:100vh;width:100%">
|
|
66
|
+
<h1 style="text-align: center;">path/to/data: There was no data found to visualize.</h1>
|
|
67
67
|
</body>
|
|
68
68
|
</html>"
|
|
69
69
|
`;
|