Socket
Socket
Sign inDemoInstall

@jupiterone/integration-sdk-runtime

Package Overview
Dependencies
Maintainers
1
Versions
268
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jupiterone/integration-sdk-runtime - npm Package Compare versions

Comparing version 4.0.1 to 4.1.0

dist/src/storage/types.d.ts

12

dist/src/execution/dependencyGraph.d.ts
import { DepGraph } from 'dependency-graph';
import { Step, IntegrationStepResult, StepStartStates, ExecutionContext, StepExecutionContext, KeyNormalizationFunction } from '@jupiterone/integration-sdk-core';
import { ExecutionContext, IntegrationStepResult, Step, StepExecutionContext, StepStartStates } from '@jupiterone/integration-sdk-core';
import { GraphObjectStore } from '../storage';
import { DuplicateKeyTracker } from './jobState';
/**

@@ -22,2 +24,8 @@ * This function accepts a list of steps and constructs a dependency graph

*/
export declare function executeStepDependencyGraph<TExecutionContext extends ExecutionContext, TStepExecutionContext extends StepExecutionContext>(executionContext: TExecutionContext, inputGraph: DepGraph<Step<TStepExecutionContext>>, stepStartStates: StepStartStates, normalizeGraphObjectKey?: KeyNormalizationFunction): Promise<IntegrationStepResult[]>;
export declare function executeStepDependencyGraph<TExecutionContext extends ExecutionContext, TStepExecutionContext extends StepExecutionContext>({ executionContext, inputGraph, stepStartStates, duplicateKeyTracker, graphObjectStore, }: {
executionContext: TExecutionContext;
inputGraph: DepGraph<Step<TStepExecutionContext>>;
stepStartStates: StepStartStates;
duplicateKeyTracker: DuplicateKeyTracker;
graphObjectStore: GraphObjectStore;
}): Promise<IntegrationStepResult[]>;

28

dist/src/execution/dependencyGraph.js

@@ -9,6 +9,5 @@ "use strict";

const p_queue_1 = __importDefault(require("p-queue"));
const storage_1 = require("../storage");
const jobState_1 = require("./jobState");
const integration_sdk_core_1 = require("@jupiterone/integration-sdk-core");
const metrics_1 = require("../metrics");
const jobState_1 = require("./jobState");
/**

@@ -51,3 +50,3 @@ * This function accepts a list of steps and constructs a dependency graph

*/
function executeStepDependencyGraph(executionContext, inputGraph, stepStartStates, normalizeGraphObjectKey) {
function executeStepDependencyGraph({ executionContext, inputGraph, stepStartStates, duplicateKeyTracker, graphObjectStore, }) {
// create a clone of the dependencyGraph because mutating

@@ -62,4 +61,2 @@ // the input graph is icky

const promiseQueue = new p_queue_1.default();
const duplicateKeyTracker = new jobState_1.DuplicateKeyTracker(normalizeGraphObjectKey);
const graphObjectStore = new storage_1.FileSystemGraphObjectStore();
const stepResultsMap = buildStepResultsMap(inputGraph, stepStartStates);

@@ -70,3 +67,2 @@ const dataStore = new jobState_1.MemoryDataStore();

}
integration_sdk_core_1.StepResultStatus;
/**

@@ -129,3 +125,3 @@ * Updates the result of a step result with the provided satus

const encounteredTypes = typeTracker.getEncounteredTypes();
const declaredTypesSet = new Set(getDeclaredTypesInStep(step));
const declaredTypesSet = new Set(getDeclaredTypesInStep(step).declaredTypes);
const undeclaredTypes = encounteredTypes.filter((type) => !declaredTypesSet.has(type));

@@ -258,2 +254,3 @@ if (undeclaredTypes.length) {

.filter((id) => stepStartStates[id].disabled).length > 0;
const { declaredTypes, partialTypes } = getDeclaredTypesInStep(step);
return {

@@ -263,3 +260,4 @@ id: step.id,

dependsOn: step.dependsOn,
declaredTypes: getDeclaredTypesInStep(step),
declaredTypes,
partialTypes,
encounteredTypes: [],

@@ -275,8 +273,12 @@ status: stepStartStates[step.id].disabled || hasDisabledDependencies

function getDeclaredTypesInStep(step) {
const declaredTypes = [
...step.entities.map((e) => e._type),
...step.relationships.map((e) => e._type),
];
return declaredTypes;
const declaredTypes = [];
const partialTypes = [];
[...step.entities, ...step.relationships].map((e) => {
declaredTypes.push(e._type);
if (e.partial) {
partialTypes.push(e._type);
}
});
return { declaredTypes, partialTypes };
}
//# sourceMappingURL=dependencyGraph.js.map

@@ -1,2 +0,3 @@

import { IntegrationInstance, IntegrationInvocationConfig, IntegrationStepResult, PartialDatasets, InvocationConfig, IntegrationLogger, ExecutionContext, StepExecutionContext } from '@jupiterone/integration-sdk-core';
import { ExecutionContext, ExecutionHistory, IntegrationInstance, IntegrationInvocationConfig, IntegrationLogger, IntegrationStepResult, InvocationConfig, PartialDatasets, StepExecutionContext } from '@jupiterone/integration-sdk-core';
import { GraphObjectStore } from '../storage';
export interface ExecuteIntegrationResult {

@@ -10,3 +11,8 @@ integrationStepResults: IntegrationStepResult[];

enableSchemaValidation?: boolean;
executionHistory?: ExecutionHistory;
graphObjectStore?: GraphObjectStore;
}
interface ExecuteWithContextOptions {
graphObjectStore?: GraphObjectStore;
}
/**

@@ -16,9 +22,7 @@ * Starts execution of an integration instance generated from local environment

*/
export declare function executeIntegrationLocally(config: IntegrationInvocationConfig, options?: {
enableSchemaValidation?: boolean;
}): Promise<ExecuteIntegrationResult>;
export declare function executeIntegrationLocally(config: IntegrationInvocationConfig, options?: ExecuteIntegrationOptions): Promise<ExecuteIntegrationResult>;
/**
* Starts execution of an integration instance.
*/
export declare function executeIntegrationInstance(logger: IntegrationLogger | IntegrationLogger, instance: IntegrationInstance, config: IntegrationInvocationConfig, options?: ExecuteIntegrationOptions): Promise<ExecuteIntegrationResult>;
export declare function executeIntegrationInstance(logger: IntegrationLogger, instance: IntegrationInstance, config: IntegrationInvocationConfig, options?: ExecuteIntegrationOptions): Promise<ExecuteIntegrationResult>;
/**

@@ -28,3 +32,3 @@ * Executes an integration and performs actions defined by the config

*/
export declare function executeWithContext<TExecutionContext extends ExecutionContext, TStepExecutionContext extends StepExecutionContext>(context: TExecutionContext, config: InvocationConfig<TExecutionContext, TStepExecutionContext>): Promise<ExecuteIntegrationResult>;
export declare function executeWithContext<TExecutionContext extends ExecutionContext, TStepExecutionContext extends StepExecutionContext>(context: TExecutionContext, config: InvocationConfig<TExecutionContext, TStepExecutionContext>, options?: ExecuteWithContextOptions): Promise<ExecuteIntegrationResult>;
export {};

@@ -5,7 +5,9 @@ "use strict";

const fileSystem_1 = require("../fileSystem");
const logger_1 = require("../logger");
const metrics_1 = require("../metrics");
const storage_1 = require("../storage");
const instance_1 = require("./instance");
const logger_1 = require("../logger");
const jobState_1 = require("./jobState");
const step_1 = require("./step");
const validation_1 = require("./validation");
const metrics_1 = require("../metrics");
/**

@@ -31,3 +33,3 @@ * Starts execution of an integration instance generated from local environment

async function executeIntegrationInstance(logger, instance, config, options = {}) {
if (options.enableSchemaValidation) {
if (options.enableSchemaValidation === true) {
process.env.ENABLE_GRAPH_OBJECT_SCHEMA_VALIDATION = 'true';

@@ -41,3 +43,6 @@ }

logger,
}, config),
history: options.executionHistory,
}, config, {
graphObjectStore: options.graphObjectStore,
}),
});

@@ -50,3 +55,3 @@ }

*/
async function executeWithContext(context, config) {
async function executeWithContext(context, config, options = {}) {
var _a, _b, _c;

@@ -64,3 +69,10 @@ await fileSystem_1.removeStorageDirectory();

validation_1.validateStepStartStates(config.integrationSteps, stepStartStates);
const integrationStepResults = await step_1.executeSteps(context, config.integrationSteps, stepStartStates, config.normalizeGraphObjectKey);
const { graphObjectStore = new storage_1.FileSystemGraphObjectStore() } = options;
const integrationStepResults = await step_1.executeSteps({
executionContext: context,
integrationSteps: config.integrationSteps,
stepStartStates,
duplicateKeyTracker: new jobState_1.DuplicateKeyTracker(config.normalizeGraphObjectKey),
graphObjectStore,
});
const partialDatasets = step_1.determinePartialDatasetsFromStepExecutionResults(integrationStepResults);

@@ -67,0 +79,0 @@ const summary = {

import { JobState, KeyNormalizationFunction } from '@jupiterone/integration-sdk-core';
import { FileSystemGraphObjectStore } from '../storage';
import { GraphObjectStore } from '../storage';
export interface DuplicateKeyTrackerGraphObjectMetadata {

@@ -35,5 +35,5 @@ _type: string;

typeTracker: TypeTracker;
graphObjectStore: FileSystemGraphObjectStore;
graphObjectStore: GraphObjectStore;
dataStore: MemoryDataStore;
}
export declare function createStepJobState({ stepId, duplicateKeyTracker, typeTracker, graphObjectStore, dataStore, }: CreateStepJobStateParams): JobState;

@@ -1,3 +0,11 @@

import { InvocationConfig, ExecutionContext, StepExecutionContext, IntegrationStepResult, StepStartStates, PartialDatasets, Step, KeyNormalizationFunction } from '@jupiterone/integration-sdk-core';
export declare function executeSteps<TExecutionContext extends ExecutionContext, TStepExecutionContext extends StepExecutionContext>(context: TExecutionContext, integrationSteps: Step<TStepExecutionContext>[], stepStartStates: StepStartStates, normalizeGraphObjectKey?: KeyNormalizationFunction): Promise<IntegrationStepResult[]>;
import { ExecutionContext, IntegrationStepResult, InvocationConfig, PartialDatasets, Step, StepExecutionContext, StepStartStates } from '@jupiterone/integration-sdk-core';
import { GraphObjectStore } from '../storage';
import { DuplicateKeyTracker } from './jobState';
export declare function executeSteps<TExecutionContext extends ExecutionContext, TStepExecutionContext extends StepExecutionContext>({ executionContext, integrationSteps, stepStartStates, duplicateKeyTracker, graphObjectStore, }: {
executionContext: TExecutionContext;
integrationSteps: Step<TStepExecutionContext>[];
stepStartStates: StepStartStates;
duplicateKeyTracker: DuplicateKeyTracker;
graphObjectStore: GraphObjectStore;
}): Promise<IntegrationStepResult[]>;
export declare function getDefaultStepStartStates<TStepExecutionContext extends StepExecutionContext>(steps: Step<TStepExecutionContext>[]): StepStartStates;

@@ -4,0 +12,0 @@ export declare function determinePartialDatasetsFromStepExecutionResults(stepResults: IntegrationStepResult[]): PartialDatasets;

@@ -8,7 +8,12 @@ "use strict";

const uniq_1 = __importDefault(require("lodash/uniq"));
const integration_sdk_core_1 = require("@jupiterone/integration-sdk-core");
const dependencyGraph_1 = require("./dependencyGraph");
const integration_sdk_core_1 = require("@jupiterone/integration-sdk-core");
async function executeSteps(context, integrationSteps, stepStartStates, normalizeGraphObjectKey) {
const stepGraph = dependencyGraph_1.buildStepDependencyGraph(integrationSteps);
return dependencyGraph_1.executeStepDependencyGraph(context, stepGraph, stepStartStates, normalizeGraphObjectKey);
async function executeSteps({ executionContext, integrationSteps, stepStartStates, duplicateKeyTracker, graphObjectStore, }) {
return dependencyGraph_1.executeStepDependencyGraph({
executionContext,
inputGraph: dependencyGraph_1.buildStepDependencyGraph(integrationSteps),
stepStartStates,
duplicateKeyTracker,
graphObjectStore,
});
}

@@ -27,8 +32,16 @@ exports.executeSteps = executeSteps;

return stepResults.reduce((partialDatasets, stepResult) => {
const stepPartialDatasets = {
types: [],
};
if (stepResult.status !== integration_sdk_core_1.StepResultStatus.DISABLED) {
stepPartialDatasets.types.push(...stepResult.partialTypes);
}
if (stepResult.status === integration_sdk_core_1.StepResultStatus.FAILURE ||
stepResult.status ===
integration_sdk_core_1.StepResultStatus.PARTIAL_SUCCESS_DUE_TO_DEPENDENCY_FAILURE) {
partialDatasets.types = uniq_1.default(partialDatasets.types.concat(stepResult.declaredTypes));
stepPartialDatasets.types.push(...stepResult.declaredTypes);
}
return partialDatasets;
return {
types: uniq_1.default(partialDatasets.types.concat(stepPartialDatasets.types)),
};
}, { types: [] });

@@ -35,0 +48,0 @@ }

@@ -7,1 +7,2 @@ export * from './api';

export * from './metrics';
export * from './storage';

@@ -19,2 +19,3 @@ "use strict";

__exportStar(require("./metrics"), exports);
__exportStar(require("./storage"), exports);
//# sourceMappingURL=index.js.map

@@ -9,3 +9,4 @@ /**

export declare class BucketMap<T = any> extends Map<string, T[]> {
totalItemCount: number;
private internalTotalItemCount;
get totalItemCount(): number;
add(key: string, values: T[]): void;

@@ -12,0 +13,0 @@ set(key: string, values: T[]): this;

@@ -14,4 +14,7 @@ "use strict";

super(...arguments);
this.totalItemCount = 0;
this.internalTotalItemCount = 0;
}
get totalItemCount() {
return this.internalTotalItemCount;
}
add(key, values) {

@@ -25,3 +28,3 @@ const existingValues = this.get(key);

super.set(key, values);
this.totalItemCount += values.length - existingItemCount;
this.internalTotalItemCount += values.length - existingItemCount;
return this;

@@ -33,3 +36,3 @@ }

const deleteResult = super.delete(key);
this.totalItemCount -= existingItemCount;
this.internalTotalItemCount -= existingItemCount;
return deleteResult;

@@ -36,0 +39,0 @@ }

import { Sema } from 'async-sema';
import { Entity, Relationship, GraphObjectFilter, GraphObjectIteratee, GraphObjectLookupKey } from '@jupiterone/integration-sdk-core';
import { Entity, GraphObjectFilter, GraphObjectIteratee, GraphObjectLookupKey, Relationship, GraphObjectStore } from '@jupiterone/integration-sdk-core';
import { BucketMap } from './BucketMap';
export declare const GRAPH_OBJECT_BUFFER_THRESHOLD = 500;
export declare class FileSystemGraphObjectStore {
export declare class FileSystemGraphObjectStore implements GraphObjectStore {
semaphore: Sema;

@@ -7,0 +7,0 @@ entityStorageMap: BucketMap<Entity>;

@@ -7,7 +7,7 @@ "use strict";

exports.FileSystemGraphObjectStore = exports.GRAPH_OBJECT_BUFFER_THRESHOLD = void 0;
const async_sema_1 = require("async-sema");
const p_map_1 = __importDefault(require("p-map"));
const async_sema_1 = require("async-sema");
const integration_sdk_core_1 = require("@jupiterone/integration-sdk-core");
const BucketMap_1 = require("./BucketMap");
const flushDataToDisk_1 = require("./flushDataToDisk");
const BucketMap_1 = require("./BucketMap");
const indices_1 = require("./indices");

@@ -14,0 +14,0 @@ exports.GRAPH_OBJECT_BUFFER_THRESHOLD = 500; // arbitrarily selected, subject to tuning

export * from './FileSystemGraphObjectStore';
export * from './BucketMap';

@@ -14,2 +14,3 @@ "use strict";

__exportStar(require("./FileSystemGraphObjectStore"), exports);
__exportStar(require("./BucketMap"), exports);
//# sourceMappingURL=index.js.map

@@ -0,1 +1,2 @@

export { GraphObjectStore } from '@jupiterone/integration-sdk-core';
export * from './FileSystemGraphObjectStore';
{
"name": "@jupiterone/integration-sdk-runtime",
"version": "4.0.1",
"version": "4.1.0",
"description": "The SDK for developing JupiterOne integrations",

@@ -26,3 +26,3 @@ "main": "dist/src/index.js",

"dependencies": {
"@jupiterone/integration-sdk-core": "^4.0.1",
"@jupiterone/integration-sdk-core": "^4.1.0",
"@lifeomic/alpha": "^1.1.3",

@@ -45,3 +45,3 @@ "async-sema": "^3.1.0",

"devDependencies": {
"@jupiterone/integration-sdk-private-test-utils": "^4.0.1",
"@jupiterone/integration-sdk-private-test-utils": "^4.1.0",
"@types/uuid": "^7.0.2",

@@ -52,3 +52,3 @@ "get-port": "^5.1.1",

},
"gitHead": "93c9e694cf1fe11dd89aa2e82164571459892aca"
"gitHead": "144834ddf08b540e071423c01c478864c19f500f"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc