@jupiterone/integration-sdk-cli 12.7.1 → 12.8.1
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/dist/src/commands/generate-integration-graph-schema.d.ts +2 -1
- package/dist/src/commands/generate-integration-graph-schema.js +1 -0
- package/dist/src/commands/generate-integration-graph-schema.js.map +1 -1
- package/dist/src/commands/generate.js +1 -1
- package/dist/src/commands/generate.js.map +1 -1
- package/dist/src/generator/actions.d.ts +4 -1
- package/dist/src/generator/actions.js +15 -1
- package/dist/src/generator/actions.js.map +1 -1
- package/dist/src/generator/newIntegration.js +17 -3
- package/dist/src/generator/newIntegration.js.map +1 -1
- package/dist/src/generator/template/.github/workflows/build.yml.hbs +18 -0
- package/dist/src/generator/template/.github/workflows/questions.yml.hbs +12 -1
- package/dist/src/generator/template/Dockerfile.hbs +16 -0
- package/dist/src/generator/template/README.md.hbs +19 -5
- package/dist/src/generator/template/package.json.hbs +8 -2
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +9 -8
- package/src/commands/generate-integration-graph-schema.test.ts +56 -0
- package/src/commands/generate-integration-graph-schema.ts +3 -0
- package/src/commands/generate.ts +1 -1
- package/src/generator/actions.ts +16 -1
- package/src/generator/newIntegration.ts +28 -4
- package/src/generator/template/.github/workflows/build.yml.hbs +18 -0
- package/src/generator/template/.github/workflows/questions.yml.hbs +12 -1
- package/src/generator/template/Dockerfile.hbs +16 -0
- package/src/generator/template/README.md.hbs +19 -5
- package/src/generator/template/package.json.hbs +8 -2
- package/src/neo4j/README.md +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupiterone/integration-sdk-cli",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.8.1",
|
|
4
4
|
"description": "The SDK for developing JupiterOne integrations",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -17,16 +17,17 @@
|
|
|
17
17
|
"access": "public"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
+
"test": "jest",
|
|
20
21
|
"prebuild:dist": "rm -rf dist && mkdir dist",
|
|
21
|
-
"build:dist": "tsc -p tsconfig.dist.json --declaration &&
|
|
22
|
-
"prepack": "
|
|
22
|
+
"build:dist": "tsc -p tsconfig.dist.json --declaration && npm run copy-files",
|
|
23
|
+
"prepack": "npm run build:dist",
|
|
23
24
|
"copy-files": "cp -r src/generator/template dist/src/generator/template && cp -r src/generator/stepTemplate dist/src/generator/stepTemplate",
|
|
24
25
|
"plop": "plop --plopfile dist/src/generator/newIntegration.js"
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
|
-
"@jupiterone/data-model": "^0.
|
|
28
|
-
"@jupiterone/integration-sdk-core": "^12.
|
|
29
|
-
"@jupiterone/integration-sdk-runtime": "^12.
|
|
28
|
+
"@jupiterone/data-model": "^0.61.3",
|
|
29
|
+
"@jupiterone/integration-sdk-core": "^12.8.1",
|
|
30
|
+
"@jupiterone/integration-sdk-runtime": "^12.8.1",
|
|
30
31
|
"chalk": "^4",
|
|
31
32
|
"commander": "^9.4.0",
|
|
32
33
|
"fs-extra": "^10.1.0",
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
"url-exists": "^1.0.3"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@jupiterone/integration-sdk-private-test-utils": "^12.
|
|
47
|
+
"@jupiterone/integration-sdk-private-test-utils": "^12.8.1",
|
|
47
48
|
"@pollyjs/adapter-node-http": "^6.0.5",
|
|
48
49
|
"@pollyjs/core": "^6.0.5",
|
|
49
50
|
"@pollyjs/persister-fs": "^6.0.5",
|
|
@@ -56,5 +57,5 @@
|
|
|
56
57
|
"neo-forgery": "^2.0.0",
|
|
57
58
|
"vis": "^4.21.0-EOL"
|
|
58
59
|
},
|
|
59
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "01bd7c6824a549f9931ac045468d5642fb2cc677"
|
|
60
61
|
}
|
|
@@ -128,6 +128,62 @@ describe('#generateIntegrationGraphSchema', () => {
|
|
|
128
128
|
});
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
+
test('should dedup entity metadata with schema', () => {
|
|
132
|
+
const steps: IntegrationStep<IntegrationInstanceConfig>[] = [
|
|
133
|
+
getMockIntegrationStep({
|
|
134
|
+
entities: [
|
|
135
|
+
{
|
|
136
|
+
_class: 'User',
|
|
137
|
+
_type: 'my_user',
|
|
138
|
+
resourceName: 'The user',
|
|
139
|
+
schema: {
|
|
140
|
+
$id: 'id',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
_class: 'User',
|
|
145
|
+
_type: 'my_user',
|
|
146
|
+
resourceName: 'The user',
|
|
147
|
+
schema: {
|
|
148
|
+
$id: 'id',
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
relationships: [],
|
|
153
|
+
mappedRelationships: [],
|
|
154
|
+
}),
|
|
155
|
+
getMockIntegrationStep({
|
|
156
|
+
entities: [
|
|
157
|
+
{
|
|
158
|
+
_class: 'User',
|
|
159
|
+
_type: 'my_user',
|
|
160
|
+
resourceName: 'The user',
|
|
161
|
+
schema: {
|
|
162
|
+
$id: 'id',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
relationships: [],
|
|
167
|
+
mappedRelationships: [],
|
|
168
|
+
}),
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
expect(generateIntegrationGraphSchema(steps)).toEqual({
|
|
172
|
+
entities: [
|
|
173
|
+
{
|
|
174
|
+
_class: 'User',
|
|
175
|
+
_type: 'my_user',
|
|
176
|
+
resourceName: 'The user',
|
|
177
|
+
schema: {
|
|
178
|
+
$id: 'id',
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
relationships: [],
|
|
183
|
+
mappedRelationships: [],
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
|
|
131
187
|
test('should dedup relationship metadata', () => {
|
|
132
188
|
const steps: IntegrationStep<IntegrationInstanceConfig>[] = [
|
|
133
189
|
getMockIntegrationStep({
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
GraphObjectSchema,
|
|
2
3
|
IntegrationInstanceConfig,
|
|
3
4
|
IntegrationStepExecutionContext,
|
|
4
5
|
Step,
|
|
@@ -63,6 +64,7 @@ type IntegrationGraphSchemaEntityMetadata = {
|
|
|
63
64
|
resourceName: string;
|
|
64
65
|
_class: string | string[];
|
|
65
66
|
_type: string;
|
|
67
|
+
schema?: GraphObjectSchema;
|
|
66
68
|
};
|
|
67
69
|
|
|
68
70
|
type IntegrationGraphSchemaRelationshipMetadata = {
|
|
@@ -210,6 +212,7 @@ function toIntegrationGraphSchemaEntityMetadata(
|
|
|
210
212
|
resourceName: stepEntityMetadata.resourceName,
|
|
211
213
|
_class: stepEntityMetadata._class,
|
|
212
214
|
_type: stepEntityMetadata._type,
|
|
215
|
+
schema: stepEntityMetadata.schema,
|
|
213
216
|
};
|
|
214
217
|
}
|
|
215
218
|
|
package/src/commands/generate.ts
CHANGED
|
@@ -5,7 +5,7 @@ const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
|
5
5
|
export function generate() {
|
|
6
6
|
return createCommand('generate')
|
|
7
7
|
.description('generate integrations in whole and in part')
|
|
8
|
-
.action(async (
|
|
8
|
+
.action(async () => {
|
|
9
9
|
const Plop = await dynamicImport('plop');
|
|
10
10
|
const configPath = path.resolve(
|
|
11
11
|
path.join(__dirname, '../generator/newIntegration.js'),
|
package/src/generator/actions.ts
CHANGED
|
@@ -22,6 +22,7 @@ async function spawnCommand(config, command, args): Promise<string> {
|
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
// Yarn commands
|
|
25
26
|
async function yarnInstall(_answers, config, _plop) {
|
|
26
27
|
return spawnCommand(config, 'yarn', ['install']);
|
|
27
28
|
}
|
|
@@ -34,4 +35,18 @@ async function yarnLint(_answers, config, _plop) {
|
|
|
34
35
|
return spawnCommand(config, 'yarn', ['lint']);
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
// NPM commands
|
|
39
|
+
|
|
40
|
+
async function npmInstall(_answers, config, _plop) {
|
|
41
|
+
return spawnCommand(config, 'npm', ['install']);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function npmFormat(_answers, config, _plop): Promise<string> {
|
|
45
|
+
return spawnCommand(config, 'npm', [`run format`]);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function npmLint(_answers, config, _plop) {
|
|
49
|
+
return spawnCommand(config, 'npm', ['run lint']);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export { yarnInstall, yarnFormat, yarnLint, npmInstall, npmFormat, npmLint };
|
|
@@ -4,7 +4,14 @@ import { configFieldsFlow } from './configFieldsFlow';
|
|
|
4
4
|
import { stepsFlow } from './stepsFlow';
|
|
5
5
|
import { generateRelationshipName } from './helpers';
|
|
6
6
|
import { generateRelationshipType } from '@jupiterone/integration-sdk-core';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
npmFormat,
|
|
9
|
+
npmInstall,
|
|
10
|
+
npmLint,
|
|
11
|
+
yarnFormat,
|
|
12
|
+
yarnInstall,
|
|
13
|
+
yarnLint,
|
|
14
|
+
} from './actions';
|
|
8
15
|
import { kebabCase } from 'lodash';
|
|
9
16
|
import checkboxPlus from 'inquirer-checkbox-plus-prompt';
|
|
10
17
|
import path from 'path';
|
|
@@ -19,9 +26,15 @@ function newIntegration(plop: NodePlopAPI) {
|
|
|
19
26
|
});
|
|
20
27
|
|
|
21
28
|
plop.setHelper('generateRelationshipName', generateRelationshipName);
|
|
29
|
+
// NPM
|
|
30
|
+
plop.setActionType('npmFormat', npmFormat);
|
|
31
|
+
plop.setActionType('npmInstall', npmInstall);
|
|
32
|
+
plop.setActionType('npmLint', npmLint);
|
|
33
|
+
// Yarn
|
|
22
34
|
plop.setActionType('yarnFormat', yarnFormat);
|
|
23
35
|
plop.setActionType('yarnInstall', yarnInstall);
|
|
24
36
|
plop.setActionType('yarnLint', yarnLint);
|
|
37
|
+
|
|
25
38
|
plop.setPrompt('checkbox-plus', checkboxPlus);
|
|
26
39
|
|
|
27
40
|
plop.setGenerator('new:integration', {
|
|
@@ -66,6 +79,14 @@ function newIntegration(plop: NodePlopAPI) {
|
|
|
66
79
|
},
|
|
67
80
|
});
|
|
68
81
|
|
|
82
|
+
const { packageManager } = await inquirer.prompt({
|
|
83
|
+
type: 'list',
|
|
84
|
+
name: 'packageManager',
|
|
85
|
+
message: 'Which package manager do you want to use?',
|
|
86
|
+
choices: ['npm', 'yarn'],
|
|
87
|
+
default: 'npm',
|
|
88
|
+
});
|
|
89
|
+
|
|
69
90
|
const configFields = await configFieldsFlow(inquirer);
|
|
70
91
|
const entities = await entitiesFlow(inquirer, vendorName);
|
|
71
92
|
let relationships: Relationship[] = [];
|
|
@@ -83,6 +104,7 @@ function newIntegration(plop: NodePlopAPI) {
|
|
|
83
104
|
entities,
|
|
84
105
|
relationships,
|
|
85
106
|
steps,
|
|
107
|
+
packageManager,
|
|
86
108
|
};
|
|
87
109
|
},
|
|
88
110
|
actions: function (data) {
|
|
@@ -90,6 +112,8 @@ function newIntegration(plop: NodePlopAPI) {
|
|
|
90
112
|
return [];
|
|
91
113
|
}
|
|
92
114
|
|
|
115
|
+
const { packageManager } = data;
|
|
116
|
+
|
|
93
117
|
// @jupiterone/graph-foo -> graph-foo
|
|
94
118
|
// graph-foo -> graph-foo
|
|
95
119
|
const directoryName = path.join(
|
|
@@ -122,19 +146,19 @@ function newIntegration(plop: NodePlopAPI) {
|
|
|
122
146
|
}
|
|
123
147
|
|
|
124
148
|
actions.push({
|
|
125
|
-
type: 'yarnInstall',
|
|
149
|
+
type: packageManager === 'yarn' ? 'yarnInstall' : 'npmInstall',
|
|
126
150
|
path: directoryName,
|
|
127
151
|
verbose: true,
|
|
128
152
|
});
|
|
129
153
|
|
|
130
154
|
actions.push({
|
|
131
|
-
type: 'yarnFormat',
|
|
155
|
+
type: packageManager === 'yarn' ? 'yarnFormat' : 'npmFormat',
|
|
132
156
|
path: directoryName,
|
|
133
157
|
verbose: true,
|
|
134
158
|
});
|
|
135
159
|
|
|
136
160
|
actions.push({
|
|
137
|
-
type: 'yarnLint',
|
|
161
|
+
type: packageManager === 'yarn' ? 'yarnLint' : 'npmLint',
|
|
138
162
|
path: directoryName,
|
|
139
163
|
verbose: true,
|
|
140
164
|
});
|
|
@@ -12,6 +12,7 @@ jobs:
|
|
|
12
12
|
- name: Check out code repository source code
|
|
13
13
|
uses: actions/checkout@v3
|
|
14
14
|
|
|
15
|
+
{{#if_eq packageManager 'yarn'}}
|
|
15
16
|
- id: setup-node
|
|
16
17
|
name: Setup Node
|
|
17
18
|
uses: actions/setup-node@v3
|
|
@@ -27,3 +28,20 @@ jobs:
|
|
|
27
28
|
|
|
28
29
|
- name: Run build
|
|
29
30
|
run: yarn build
|
|
31
|
+
{{else}}
|
|
32
|
+
- id: setup-node
|
|
33
|
+
name: Setup Node
|
|
34
|
+
uses: actions/setup-node@v3
|
|
35
|
+
with:
|
|
36
|
+
node-version: 18.x
|
|
37
|
+
cache: npm
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: npm run --frozen-lockfile
|
|
41
|
+
|
|
42
|
+
- name: Run tests
|
|
43
|
+
run: npm run test:ci
|
|
44
|
+
|
|
45
|
+
- name: Run build
|
|
46
|
+
run: npm run build
|
|
47
|
+
{{/if_eq}}
|
|
@@ -24,9 +24,13 @@ jobs:
|
|
|
24
24
|
with:
|
|
25
25
|
node-version: 18.x
|
|
26
26
|
|
|
27
|
+
{{#if_eq packageManager 'yarn'}}
|
|
27
28
|
- name: Install dependencies for `main` branch
|
|
28
29
|
run: yarn install --cwd source --frozen-lockfile
|
|
29
|
-
|
|
30
|
+
{{else}}
|
|
31
|
+
- name: Install dependencies for `main` branch
|
|
32
|
+
run: npm install --cwd source --frozen-lockfile
|
|
33
|
+
{{/if_eq}}
|
|
30
34
|
- name: Validate questions on target branch
|
|
31
35
|
env:
|
|
32
36
|
MANAGED_QUESTIONS_JUPITERONE_ACCOUNT_ID:
|
|
@@ -34,7 +38,14 @@ jobs:
|
|
|
34
38
|
MANAGED_QUESTIONS_JUPITERONE_API_KEY:
|
|
35
39
|
$\{{ secrets.MANAGED_QUESTIONS_JUPITERONE_API_KEY }}
|
|
36
40
|
run:
|
|
41
|
+
{{#if_eq packageManager 'yarn'}}
|
|
37
42
|
yarn --cwd source j1-integration validate-question-file -a
|
|
38
43
|
--frozen-lockfile $MANAGED_QUESTIONS_JUPITERONE_ACCOUNT_ID -k
|
|
39
44
|
$MANAGED_QUESTIONS_JUPITERONE_API_KEY -p
|
|
40
45
|
../target/jupiterone/questions/questions.yaml
|
|
46
|
+
{{else}}
|
|
47
|
+
npm run --cwd source j1-integration validate-question-file -a
|
|
48
|
+
--frozen-lockfile $MANAGED_QUESTIONS_JUPITERONE_ACCOUNT_ID -k
|
|
49
|
+
$MANAGED_QUESTIONS_JUPITERONE_API_KEY -p
|
|
50
|
+
../target/jupiterone/questions/questions.yaml
|
|
51
|
+
{{/if_eq}}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
{{#if_eq packageManager 'yarn'}}
|
|
1
2
|
FROM node:18-alpine
|
|
2
3
|
|
|
3
4
|
ENV JUPITERONE_INTEGRATION_DIR=/opt/jupiterone/integration
|
|
@@ -9,3 +10,18 @@ WORKDIR ${JUPITERONE_INTEGRATION_DIR}
|
|
|
9
10
|
RUN yarn install
|
|
10
11
|
|
|
11
12
|
ENTRYPOINT /usr/local/bin/yarn --silent j1-integration run -i ${INTEGRATION_INSTANCE_ID} --disable-schema-validation --api-base-url ${JUPITERONE_API_BASE_URL:-https://api.us.jupiterone.io} --account ${JUPITERONE_ACCOUNT} --api-key ${JUPITERONE_API_KEY}
|
|
13
|
+
|
|
14
|
+
{{else}}
|
|
15
|
+
|
|
16
|
+
FROM node:18-alpine
|
|
17
|
+
|
|
18
|
+
ENV JUPITERONE_INTEGRATION_DIR=/opt/jupiterone/integration
|
|
19
|
+
|
|
20
|
+
COPY package.json package-lock.json tsconfig.json LICENSE ${JUPITERONE_INTEGRATION_DIR}/
|
|
21
|
+
COPY src/ ${JUPITERONE_INTEGRATION_DIR}/src
|
|
22
|
+
|
|
23
|
+
WORKDIR ${JUPITERONE_INTEGRATION_DIR}
|
|
24
|
+
RUN npm install
|
|
25
|
+
|
|
26
|
+
ENTRYPOINT /usr/local/bin/npm --silent run j1-integration -- -i ${INTEGRATION_INSTANCE_ID} --disable-schema-validation --api-base-url ${JUPITERONE_API_BASE_URL:-https://api.us.jupiterone.io} --account ${JUPITERONE_ACCOUNT} --api-key ${JUPITERONE_API_KEY}
|
|
27
|
+
{{/if_eq}}
|
|
@@ -34,9 +34,15 @@ with JupiterOne in the [integration documentation](docs/jupiterone.md).
|
|
|
34
34
|
|
|
35
35
|
#### Running directly
|
|
36
36
|
|
|
37
|
+
{{#if_eq packageManager 'yarn'}}
|
|
37
38
|
1. `yarn start` to collect data
|
|
38
39
|
2. `yarn graph` to show a visualization of the collected data
|
|
39
40
|
3. `yarn j1-integration -h` for additional commands
|
|
41
|
+
{{else}}
|
|
42
|
+
1. `npm run start` to collect data
|
|
43
|
+
2. `npm run graph` to show a visualization of the collected data
|
|
44
|
+
3. `npm run j1-integration -h` for additional commands
|
|
45
|
+
{{/if_eq}}
|
|
40
46
|
|
|
41
47
|
#### Running with Docker
|
|
42
48
|
|
|
@@ -65,11 +71,19 @@ developing this integration.
|
|
|
65
71
|
|
|
66
72
|
## Testing the integration
|
|
67
73
|
|
|
74
|
+
{{#if_eq packageManager 'yarn'}}
|
|
68
75
|
Ideally, all major calls to the API and converter functions would be tested. You
|
|
69
|
-
can run the tests with `
|
|
70
|
-
the CI/CD environment with `
|
|
71
|
-
`
|
|
72
|
-
with your credentials using `
|
|
76
|
+
can run the tests with `npm run test`, and you can run the tests as they execute in
|
|
77
|
+
the CI/CD environment with `npm run test:ci` (adds linting and type-checking to
|
|
78
|
+
`npm run test`). If you have a valid runtime configuration, you can run the tests
|
|
79
|
+
with your credentials using `npm run test:env`.
|
|
80
|
+
{{else}}
|
|
81
|
+
Ideally, all major calls to the API and converter functions would be tested. You
|
|
82
|
+
can run the tests with `npm run test`, and you can run the tests as they execute in
|
|
83
|
+
the CI/CD environment with `npm run test:ci` (adds linting and type-checking to
|
|
84
|
+
`npm run test`). If you have a valid runtime configuration, you can run the tests
|
|
85
|
+
with your credentials using `npm run test:env`.
|
|
86
|
+
{{/if_eq}}
|
|
73
87
|
|
|
74
88
|
For more details on setting up tests, and specifically on using recordings to
|
|
75
89
|
simulate API responses, see `test/README.md`.
|
|
@@ -111,4 +125,4 @@ different naming conventions).
|
|
|
111
125
|
|
|
112
126
|
We are not currently using the functionality for auto to update the CHANGELOG.
|
|
113
127
|
As such, please remember to update CHANGELOG.md with the appropriate version,
|
|
114
|
-
date, and changes.
|
|
128
|
+
date, and changes.
|
|
@@ -28,11 +28,17 @@
|
|
|
28
28
|
"format:check": "prettier --check \"**/*.{ts,js,json,css,md,yml}\"",
|
|
29
29
|
"type-check": "tsc",
|
|
30
30
|
"test": "jest",
|
|
31
|
+
{{#if_eq packageManager 'yarn'}}
|
|
31
32
|
"test:env": "LOAD_ENV=1 yarn test",
|
|
32
33
|
"test:ci": "yarn format:check && yarn lint && yarn type-check && yarn test",
|
|
34
|
+
"prepush": "yarn format:check && yarn lint && yarn type-check && jest --changedSince main",
|
|
35
|
+
{{else}}
|
|
36
|
+
"test:env": "LOAD_ENV=1 npm run test",
|
|
37
|
+
"test:ci": "npm run format:check && npm run lint && npm run type-check && npm run test",
|
|
38
|
+
"prepush": "npm run format:check && npm run lint && npm run type-check && jest --changedSince main",
|
|
39
|
+
{{/if_eq}}
|
|
33
40
|
"build": "tsc -p tsconfig.dist.json --declaration && cp README.md dist/README.md && cp -r jupiterone/ dist/jupiterone/",
|
|
34
41
|
"build:docker": "tsc --declaration false --emitDeclarationOnly false -p tsconfig.dist.json",
|
|
35
|
-
"prepush": "yarn format:check && yarn lint && yarn type-check && jest --changedSince main",
|
|
36
42
|
"postversion": "cp package.json ./dist/package.json"
|
|
37
43
|
},
|
|
38
44
|
"dependencies": {
|
|
@@ -46,4 +52,4 @@
|
|
|
46
52
|
"@jupiterone/integration-sdk-dev-tools": "^12.0.0",
|
|
47
53
|
"@jupiterone/integration-sdk-testing": "^12.0.0"
|
|
48
54
|
}
|
|
49
|
-
}
|
|
55
|
+
}
|
package/src/neo4j/README.md
CHANGED
|
@@ -30,7 +30,8 @@ of pushing to an external Neo4j database.
|
|
|
30
30
|
|
|
31
31
|
## Usage
|
|
32
32
|
|
|
33
|
-
Data is still collected in the same way as before with a call to
|
|
33
|
+
Data is still collected in the same way as before with a call to
|
|
34
|
+
`npm run start`.
|
|
34
35
|
|
|
35
36
|
Once data has been collected, you can run `j1-integration neo4j push`. This will
|
|
36
37
|
push data to the Neo4j server listed in the NEO4J_URI .env parameter. If running
|