@griffin-app/griffin-executor 0.1.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/README.md +152 -0
- package/dist/adapters/axios.d.ts +5 -0
- package/dist/adapters/axios.d.ts.map +1 -0
- package/dist/adapters/axios.js +36 -0
- package/dist/adapters/axios.js.map +1 -0
- package/dist/adapters/index.d.ts +3 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/stub.d.ts +22 -0
- package/dist/adapters/stub.d.ts.map +1 -0
- package/dist/adapters/stub.js +36 -0
- package/dist/adapters/stub.js.map +1 -0
- package/dist/events/adapters/in-memory.d.ts +52 -0
- package/dist/events/adapters/in-memory.d.ts.map +1 -0
- package/dist/events/adapters/in-memory.js +70 -0
- package/dist/events/adapters/in-memory.js.map +1 -0
- package/dist/events/adapters/in-memory.test.d.ts +2 -0
- package/dist/events/adapters/in-memory.test.d.ts.map +1 -0
- package/dist/events/adapters/in-memory.test.js +109 -0
- package/dist/events/adapters/in-memory.test.js.map +1 -0
- package/dist/events/adapters/index.d.ts +9 -0
- package/dist/events/adapters/index.d.ts.map +1 -0
- package/dist/events/adapters/index.js +9 -0
- package/dist/events/adapters/index.js.map +1 -0
- package/dist/events/adapters/kinesis.d.ts +91 -0
- package/dist/events/adapters/kinesis.d.ts.map +1 -0
- package/dist/events/adapters/kinesis.js +136 -0
- package/dist/events/adapters/kinesis.js.map +1 -0
- package/dist/events/adapters/kinesis.test.d.ts +2 -0
- package/dist/events/adapters/kinesis.test.d.ts.map +1 -0
- package/dist/events/adapters/kinesis.test.js +249 -0
- package/dist/events/adapters/kinesis.test.js.map +1 -0
- package/dist/events/emitter.d.ts +68 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +83 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/emitter.test.d.ts +2 -0
- package/dist/events/emitter.test.d.ts.map +1 -0
- package/dist/events/emitter.test.js +262 -0
- package/dist/events/emitter.test.js.map +1 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +4 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +112 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +9 -0
- package/dist/events/types.js.map +1 -0
- package/dist/executor.d.ts +4 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +799 -0
- package/dist/executor.js.map +1 -0
- package/dist/executor.test.d.ts +2 -0
- package/dist/executor.test.d.ts.map +1 -0
- package/dist/executor.test.js +1584 -0
- package/dist/executor.test.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/secrets/factory.d.ts +121 -0
- package/dist/secrets/factory.d.ts.map +1 -0
- package/dist/secrets/factory.js +137 -0
- package/dist/secrets/factory.js.map +1 -0
- package/dist/secrets/index.d.ts +14 -0
- package/dist/secrets/index.d.ts.map +1 -0
- package/dist/secrets/index.js +18 -0
- package/dist/secrets/index.js.map +1 -0
- package/dist/secrets/providers/aws.d.ts +63 -0
- package/dist/secrets/providers/aws.d.ts.map +1 -0
- package/dist/secrets/providers/aws.js +110 -0
- package/dist/secrets/providers/aws.js.map +1 -0
- package/dist/secrets/providers/env.d.ts +36 -0
- package/dist/secrets/providers/env.d.ts.map +1 -0
- package/dist/secrets/providers/env.js +37 -0
- package/dist/secrets/providers/env.js.map +1 -0
- package/dist/secrets/providers/index.d.ts +7 -0
- package/dist/secrets/providers/index.d.ts.map +1 -0
- package/dist/secrets/providers/index.js +7 -0
- package/dist/secrets/providers/index.js.map +1 -0
- package/dist/secrets/providers/vault.d.ts +75 -0
- package/dist/secrets/providers/vault.d.ts.map +1 -0
- package/dist/secrets/providers/vault.js +143 -0
- package/dist/secrets/providers/vault.js.map +1 -0
- package/dist/secrets/registry.d.ts +39 -0
- package/dist/secrets/registry.d.ts.map +1 -0
- package/dist/secrets/registry.js +134 -0
- package/dist/secrets/registry.js.map +1 -0
- package/dist/secrets/resolver.d.ts +45 -0
- package/dist/secrets/resolver.d.ts.map +1 -0
- package/dist/secrets/resolver.js +188 -0
- package/dist/secrets/resolver.js.map +1 -0
- package/dist/secrets/secrets.test.d.ts +2 -0
- package/dist/secrets/secrets.test.d.ts.map +1 -0
- package/dist/secrets/secrets.test.js +317 -0
- package/dist/secrets/secrets.test.js.map +1 -0
- package/dist/secrets/types.d.ts +70 -0
- package/dist/secrets/types.d.ts.map +1 -0
- package/dist/secrets/types.js +42 -0
- package/dist/secrets/types.js.map +1 -0
- package/dist/shared.d.ts +8 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +30 -0
- package/dist/shared.js.map +1 -0
- package/dist/test-monitor-types.d.ts +43 -0
- package/dist/test-monitor-types.d.ts.map +1 -0
- package/dist/test-monitor-types.js +2 -0
- package/dist/test-monitor-types.js.map +1 -0
- package/dist/test-plan-types.d.ts +43 -0
- package/dist/test-plan-types.d.ts.map +1 -0
- package/dist/test-plan-types.js +2 -0
- package/dist/test-plan-types.js.map +1 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/dates.d.ts +11 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/dates.js +13 -0
- package/dist/utils/dates.js.map +1 -0
- package/package.json +39 -0
- package/src/adapters/axios.ts +39 -0
- package/src/adapters/index.ts +2 -0
- package/src/adapters/stub.ts +47 -0
- package/src/events/adapters/README.md +144 -0
- package/src/events/adapters/in-memory.test.ts +146 -0
- package/src/events/adapters/in-memory.ts +93 -0
- package/src/events/adapters/index.ts +9 -0
- package/src/events/adapters/kinesis.test.ts +323 -0
- package/src/events/adapters/kinesis.ts +211 -0
- package/src/events/emitter.test.ts +327 -0
- package/src/events/emitter.ts +133 -0
- package/src/events/index.ts +3 -0
- package/src/events/types.ts +136 -0
- package/src/executor.test.ts +1732 -0
- package/src/executor.ts +1075 -0
- package/src/index.ts +81 -0
- package/src/secrets/factory.ts +248 -0
- package/src/secrets/index.ts +48 -0
- package/src/secrets/providers/aws.ts +178 -0
- package/src/secrets/providers/env.ts +66 -0
- package/src/secrets/providers/index.ts +15 -0
- package/src/secrets/providers/vault.ts +257 -0
- package/src/secrets/resolver.ts +269 -0
- package/src/secrets/secrets.test.ts +402 -0
- package/src/secrets/types.ts +106 -0
- package/src/shared.ts +46 -0
- package/src/test-monitor-types.ts +49 -0
- package/src/types.ts +114 -0
- package/src/utils/dates.ts +13 -0
- package/tsconfig.json +20 -0
- package/vitest.config.ts +14 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { ExecutionEventEmitter } from "./events/index.js";
|
|
2
|
+
import type { SecretProvider } from "./secrets/index.js";
|
|
3
|
+
|
|
4
|
+
export const START = "__START__" as const;
|
|
5
|
+
export const END = "__END__" as const;
|
|
6
|
+
|
|
7
|
+
export type JSONValue =
|
|
8
|
+
| string
|
|
9
|
+
| number
|
|
10
|
+
| boolean
|
|
11
|
+
| null
|
|
12
|
+
| { [key: string]: JSONValue }
|
|
13
|
+
| JSONValue[];
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Complete response data from an endpoint execution
|
|
17
|
+
*/
|
|
18
|
+
export interface NodeResponseData {
|
|
19
|
+
body: JSONValue;
|
|
20
|
+
headers: Record<string, string>;
|
|
21
|
+
status: number;
|
|
22
|
+
duration_ms: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface HttpRequest {
|
|
26
|
+
method: string;
|
|
27
|
+
url: string;
|
|
28
|
+
headers?: Record<string, string>;
|
|
29
|
+
body?: unknown;
|
|
30
|
+
timeout?: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface HttpResponse {
|
|
34
|
+
status: number;
|
|
35
|
+
statusText: string;
|
|
36
|
+
data: unknown;
|
|
37
|
+
headers?: Record<string, string>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface HttpClientAdapter {
|
|
41
|
+
request(req: HttpRequest): Promise<HttpResponse>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Status update payload for run tracking.
|
|
46
|
+
*/
|
|
47
|
+
export interface RunStatusUpdate {
|
|
48
|
+
status: "running" | "completed" | "failed";
|
|
49
|
+
completedAt?: string;
|
|
50
|
+
duration_ms?: number;
|
|
51
|
+
success?: boolean;
|
|
52
|
+
errors?: string[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Callbacks for tracking execution status (typically for updating a run record).
|
|
57
|
+
*/
|
|
58
|
+
export interface StatusCallbacks {
|
|
59
|
+
/**
|
|
60
|
+
* Called when monitor execution starts (after secret resolution, before graph execution).
|
|
61
|
+
*/
|
|
62
|
+
onStart?: () => Promise<void>;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Called when monitor execution completes (success or failure).
|
|
66
|
+
*/
|
|
67
|
+
onComplete?: (update: RunStatusUpdate) => Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface ExecutionOptions {
|
|
71
|
+
mode: "local" | "remote";
|
|
72
|
+
timeout?: number;
|
|
73
|
+
httpClient: HttpClientAdapter;
|
|
74
|
+
|
|
75
|
+
/** Optional event emitter for execution observability */
|
|
76
|
+
eventEmitter?: ExecutionEventEmitter;
|
|
77
|
+
|
|
78
|
+
/** Unique execution ID for correlating events (generated if not provided) */
|
|
79
|
+
executionId?: string;
|
|
80
|
+
|
|
81
|
+
secretProvider: SecretProvider | null;
|
|
82
|
+
|
|
83
|
+
/** Optional callbacks for tracking execution status (e.g., updating run records) */
|
|
84
|
+
statusCallbacks?: StatusCallbacks;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface NodeResult {
|
|
88
|
+
nodeId: string;
|
|
89
|
+
success: boolean;
|
|
90
|
+
response?: JSONValue;
|
|
91
|
+
error?: string;
|
|
92
|
+
duration_ms: number;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface ExecutionResult {
|
|
96
|
+
success: boolean;
|
|
97
|
+
results: NodeResult[];
|
|
98
|
+
errors: string[];
|
|
99
|
+
totalDuration_ms: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface HttpRequestResult {
|
|
103
|
+
success: boolean;
|
|
104
|
+
response?: JSONValue;
|
|
105
|
+
headers?: Record<string, string>;
|
|
106
|
+
status?: number;
|
|
107
|
+
error?: string;
|
|
108
|
+
duration_ms: number;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface WaitResult {
|
|
112
|
+
success: boolean;
|
|
113
|
+
duration_ms: number;
|
|
114
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date utility functions for consistent UTC handling.
|
|
3
|
+
*
|
|
4
|
+
* All dates should be stored and transmitted as UTC (ISO 8601 strings with Z suffix).
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Get the current time as a UTC ISO 8601 string.
|
|
9
|
+
* @returns ISO 8601 string with Z suffix (e.g., "2024-01-23T12:34:56.789Z")
|
|
10
|
+
*/
|
|
11
|
+
export function utcNow(): string {
|
|
12
|
+
return new Date().toISOString();
|
|
13
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "ES2022",
|
|
5
|
+
"lib": ["ES2022"],
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"rootDir": "./src",
|
|
8
|
+
"declaration": true,
|
|
9
|
+
"declarationMap": true,
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"strict": true,
|
|
12
|
+
"esModuleInterop": true,
|
|
13
|
+
"skipLibCheck": true,
|
|
14
|
+
"forceConsistentCasingInFileNames": true,
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"moduleResolution": "bundler"
|
|
17
|
+
},
|
|
18
|
+
"include": ["src/**/*"],
|
|
19
|
+
"exclude": ["node_modules", "dist"]
|
|
20
|
+
}
|
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineConfig } from "vitest/config";
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
globals: true,
|
|
6
|
+
environment: "node",
|
|
7
|
+
include: ["src/**/*.{test,spec}.ts"],
|
|
8
|
+
coverage: {
|
|
9
|
+
provider: "v8",
|
|
10
|
+
reporter: ["text", "json", "html"],
|
|
11
|
+
exclude: ["node_modules/", "dist/", "**/*.d.ts", "**/*.config.*"],
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
});
|