@dagger.io/dagger 0.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/LICENSE +191 -0
- package/README.md +88 -0
- package/dist/src/api/client.gen.d.ts +6123 -0
- package/dist/src/api/client.gen.d.ts.map +1 -0
- package/dist/src/api/client.gen.js +8494 -0
- package/dist/src/common/context.d.ts +12 -0
- package/dist/src/common/context.d.ts.map +1 -0
- package/dist/src/common/context.js +22 -0
- package/dist/src/common/errors/DaggerSDKError.d.ts +32 -0
- package/dist/src/common/errors/DaggerSDKError.d.ts.map +1 -0
- package/dist/src/common/errors/DaggerSDKError.js +26 -0
- package/dist/src/common/errors/DockerImageRefValidationError.d.ts +22 -0
- package/dist/src/common/errors/DockerImageRefValidationError.d.ts.map +1 -0
- package/dist/src/common/errors/DockerImageRefValidationError.js +21 -0
- package/dist/src/common/errors/EngineSessionConnectParamsParseError.d.ts +21 -0
- package/dist/src/common/errors/EngineSessionConnectParamsParseError.d.ts.map +1 -0
- package/dist/src/common/errors/EngineSessionConnectParamsParseError.js +20 -0
- package/dist/src/common/errors/EngineSessionConnectionTimeoutError.d.ts +21 -0
- package/dist/src/common/errors/EngineSessionConnectionTimeoutError.d.ts.map +1 -0
- package/dist/src/common/errors/EngineSessionConnectionTimeoutError.js +20 -0
- package/dist/src/common/errors/EngineSessionErrorOptions.d.ts +16 -0
- package/dist/src/common/errors/EngineSessionErrorOptions.d.ts.map +1 -0
- package/dist/src/common/errors/EngineSessionErrorOptions.js +16 -0
- package/dist/src/common/errors/ExecError.d.ts +42 -0
- package/dist/src/common/errors/ExecError.d.ts.map +1 -0
- package/dist/src/common/errors/ExecError.js +40 -0
- package/dist/src/common/errors/FunctionNotFound.d.ts +7 -0
- package/dist/src/common/errors/FunctionNotFound.d.ts.map +1 -0
- package/dist/src/common/errors/FunctionNotFound.js +9 -0
- package/dist/src/common/errors/GraphQLRequestError.d.ts +31 -0
- package/dist/src/common/errors/GraphQLRequestError.d.ts.map +1 -0
- package/dist/src/common/errors/GraphQLRequestError.js +30 -0
- package/dist/src/common/errors/InitEngineSessionBinaryError.d.ts +13 -0
- package/dist/src/common/errors/InitEngineSessionBinaryError.d.ts.map +1 -0
- package/dist/src/common/errors/InitEngineSessionBinaryError.js +15 -0
- package/dist/src/common/errors/IntrospectionError.d.ts +7 -0
- package/dist/src/common/errors/IntrospectionError.d.ts.map +1 -0
- package/dist/src/common/errors/IntrospectionError.js +9 -0
- package/dist/src/common/errors/NotAwaitedRequestError.d.ts +13 -0
- package/dist/src/common/errors/NotAwaitedRequestError.d.ts.map +1 -0
- package/dist/src/common/errors/NotAwaitedRequestError.js +15 -0
- package/dist/src/common/errors/TooManyNestedObjectsError.d.ts +21 -0
- package/dist/src/common/errors/TooManyNestedObjectsError.d.ts.map +1 -0
- package/dist/src/common/errors/TooManyNestedObjectsError.js +20 -0
- package/dist/src/common/errors/UnknownDaggerError.d.ts +13 -0
- package/dist/src/common/errors/UnknownDaggerError.d.ts.map +1 -0
- package/dist/src/common/errors/UnknownDaggerError.js +15 -0
- package/dist/src/common/errors/errors-codes.d.ts +55 -0
- package/dist/src/common/errors/errors-codes.d.ts.map +1 -0
- package/dist/src/common/errors/errors-codes.js +47 -0
- package/dist/src/common/errors/index.d.ts +15 -0
- package/dist/src/common/errors/index.d.ts.map +1 -0
- package/dist/src/common/errors/index.js +14 -0
- package/dist/src/common/graphql/client.d.ts +3 -0
- package/dist/src/common/graphql/client.d.ts.map +1 -0
- package/dist/src/common/graphql/client.js +58 -0
- package/dist/src/common/graphql/compute_query.d.ts +37 -0
- package/dist/src/common/graphql/compute_query.d.ts.map +1 -0
- package/dist/src/common/graphql/compute_query.js +171 -0
- package/dist/src/common/graphql/connect.d.ts +8 -0
- package/dist/src/common/graphql/connect.d.ts.map +1 -0
- package/dist/src/common/graphql/connect.js +22 -0
- package/dist/src/common/graphql/connection.d.ts +14 -0
- package/dist/src/common/graphql/connection.d.ts.map +1 -0
- package/dist/src/common/graphql/connection.js +23 -0
- package/dist/src/common/utils.d.ts +70 -0
- package/dist/src/common/utils.d.ts.map +1 -0
- package/dist/src/common/utils.js +6 -0
- package/dist/src/connect.d.ts +28 -0
- package/dist/src/connect.d.ts.map +1 -0
- package/dist/src/connect.js +64 -0
- package/dist/src/connectOpts.d.ts +24 -0
- package/dist/src/connectOpts.d.ts.map +1 -0
- package/dist/src/connectOpts.js +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +13 -0
- package/dist/src/module/decorators.d.ts +52 -0
- package/dist/src/module/decorators.d.ts.map +1 -0
- package/dist/src/module/decorators.js +55 -0
- package/dist/src/module/entrypoint/context.d.ts +8 -0
- package/dist/src/module/entrypoint/context.d.ts.map +1 -0
- package/dist/src/module/entrypoint/context.js +1 -0
- package/dist/src/module/entrypoint/entrypoint.d.ts +2 -0
- package/dist/src/module/entrypoint/entrypoint.d.ts.map +1 -0
- package/dist/src/module/entrypoint/entrypoint.js +92 -0
- package/dist/src/module/entrypoint/introspection_entrypoint.d.ts +2 -0
- package/dist/src/module/entrypoint/introspection_entrypoint.d.ts.map +1 -0
- package/dist/src/module/entrypoint/introspection_entrypoint.js +52 -0
- package/dist/src/module/entrypoint/invoke.d.ts +14 -0
- package/dist/src/module/entrypoint/invoke.d.ts.map +1 -0
- package/dist/src/module/entrypoint/invoke.js +66 -0
- package/dist/src/module/entrypoint/load.d.ts +53 -0
- package/dist/src/module/entrypoint/load.d.ts.map +1 -0
- package/dist/src/module/entrypoint/load.js +237 -0
- package/dist/src/module/entrypoint/register.d.ts +33 -0
- package/dist/src/module/entrypoint/register.d.ts.map +1 -0
- package/dist/src/module/entrypoint/register.js +227 -0
- package/dist/src/module/executor.d.ts +28 -0
- package/dist/src/module/executor.d.ts.map +1 -0
- package/dist/src/module/executor.js +171 -0
- package/dist/src/module/introspector/case_convertor.d.ts +2 -0
- package/dist/src/module/introspector/case_convertor.d.ts.map +1 -0
- package/dist/src/module/introspector/case_convertor.js +15 -0
- package/dist/src/module/introspector/dagger_module/argument.d.ts +50 -0
- package/dist/src/module/introspector/dagger_module/argument.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/argument.js +118 -0
- package/dist/src/module/introspector/dagger_module/constructor.d.ts +18 -0
- package/dist/src/module/introspector/dagger_module/constructor.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/constructor.js +38 -0
- package/dist/src/module/introspector/dagger_module/decorator.d.ts +8 -0
- package/dist/src/module/introspector/dagger_module/decorator.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/decorator.js +7 -0
- package/dist/src/module/introspector/dagger_module/enum.d.ts +41 -0
- package/dist/src/module/introspector/dagger_module/enum.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/enum.js +63 -0
- package/dist/src/module/introspector/dagger_module/enumBase.d.ts +19 -0
- package/dist/src/module/introspector/dagger_module/enumBase.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/enumBase.js +1 -0
- package/dist/src/module/introspector/dagger_module/enumClass.d.ts +41 -0
- package/dist/src/module/introspector/dagger_module/enumClass.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/enumClass.js +69 -0
- package/dist/src/module/introspector/dagger_module/function.d.ts +39 -0
- package/dist/src/module/introspector/dagger_module/function.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/function.js +102 -0
- package/dist/src/module/introspector/dagger_module/index.d.ts +15 -0
- package/dist/src/module/introspector/dagger_module/index.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/index.js +14 -0
- package/dist/src/module/introspector/dagger_module/interface.d.ts +25 -0
- package/dist/src/module/introspector/dagger_module/interface.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/interface.js +56 -0
- package/dist/src/module/introspector/dagger_module/interfaceFunction.d.ts +35 -0
- package/dist/src/module/introspector/dagger_module/interfaceFunction.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/interfaceFunction.js +92 -0
- package/dist/src/module/introspector/dagger_module/locatable.d.ts +12 -0
- package/dist/src/module/introspector/dagger_module/locatable.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/locatable.js +14 -0
- package/dist/src/module/introspector/dagger_module/module.d.ts +118 -0
- package/dist/src/module/introspector/dagger_module/module.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/module.js +316 -0
- package/dist/src/module/introspector/dagger_module/object.d.ts +46 -0
- package/dist/src/module/introspector/dagger_module/object.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/object.js +113 -0
- package/dist/src/module/introspector/dagger_module/objectBase.d.ts +32 -0
- package/dist/src/module/introspector/dagger_module/objectBase.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/objectBase.js +1 -0
- package/dist/src/module/introspector/dagger_module/property.d.ts +36 -0
- package/dist/src/module/introspector/dagger_module/property.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/property.js +82 -0
- package/dist/src/module/introspector/dagger_module/reference.d.ts +13 -0
- package/dist/src/module/introspector/dagger_module/reference.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/reference.js +33 -0
- package/dist/src/module/introspector/dagger_module/typeObject.d.ts +49 -0
- package/dist/src/module/introspector/dagger_module/typeObject.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/typeObject.js +87 -0
- package/dist/src/module/introspector/dagger_module/typeObjectProperty.d.ts +34 -0
- package/dist/src/module/introspector/dagger_module/typeObjectProperty.d.ts.map +1 -0
- package/dist/src/module/introspector/dagger_module/typeObjectProperty.js +60 -0
- package/dist/src/module/introspector/index.d.ts +3 -0
- package/dist/src/module/introspector/index.d.ts.map +1 -0
- package/dist/src/module/introspector/index.js +19 -0
- package/dist/src/module/introspector/typedef.d.ts +52 -0
- package/dist/src/module/introspector/typedef.d.ts.map +1 -0
- package/dist/src/module/introspector/typedef.js +1 -0
- package/dist/src/module/introspector/typescript_module/ast.d.ts +64 -0
- package/dist/src/module/introspector/typescript_module/ast.d.ts.map +1 -0
- package/dist/src/module/introspector/typescript_module/ast.js +476 -0
- package/dist/src/module/introspector/typescript_module/declarations.d.ts +15 -0
- package/dist/src/module/introspector/typescript_module/declarations.d.ts.map +1 -0
- package/dist/src/module/introspector/typescript_module/declarations.js +10 -0
- package/dist/src/module/introspector/typescript_module/index.d.ts +4 -0
- package/dist/src/module/introspector/typescript_module/index.d.ts.map +1 -0
- package/dist/src/module/introspector/typescript_module/index.js +3 -0
- package/dist/src/module/introspector/typescript_module/location.d.ts +6 -0
- package/dist/src/module/introspector/typescript_module/location.d.ts.map +1 -0
- package/dist/src/module/introspector/typescript_module/location.js +1 -0
- package/dist/src/module/introspector/typescript_module/typedef_utils.d.ts +5 -0
- package/dist/src/module/introspector/typescript_module/typedef_utils.d.ts.map +1 -0
- package/dist/src/module/introspector/typescript_module/typedef_utils.js +26 -0
- package/dist/src/module/introspector/utils/files.d.ts +5 -0
- package/dist/src/module/introspector/utils/files.d.ts.map +1 -0
- package/dist/src/module/introspector/utils/files.js +28 -0
- package/dist/src/module/registry.d.ts +109 -0
- package/dist/src/module/registry.d.ts.map +1 -0
- package/dist/src/module/registry.js +123 -0
- package/dist/src/provisioning/bin.d.ts +77 -0
- package/dist/src/provisioning/bin.d.ts.map +1 -0
- package/dist/src/provisioning/bin.js +353 -0
- package/dist/src/provisioning/default.d.ts +2 -0
- package/dist/src/provisioning/default.d.ts.map +1 -0
- package/dist/src/provisioning/default.js +2 -0
- package/dist/src/provisioning/engineconn.d.ts +30 -0
- package/dist/src/provisioning/engineconn.d.ts.map +1 -0
- package/dist/src/provisioning/engineconn.js +1 -0
- package/dist/src/provisioning/index.d.ts +4 -0
- package/dist/src/provisioning/index.d.ts.map +1 -0
- package/dist/src/provisioning/index.js +14 -0
- package/dist/src/telemetry/index.d.ts +3 -0
- package/dist/src/telemetry/index.d.ts.map +1 -0
- package/dist/src/telemetry/index.js +2 -0
- package/dist/src/telemetry/init.d.ts +21 -0
- package/dist/src/telemetry/init.d.ts.map +1 -0
- package/dist/src/telemetry/init.js +86 -0
- package/dist/src/telemetry/live_processor.d.ts +12 -0
- package/dist/src/telemetry/live_processor.d.ts.map +1 -0
- package/dist/src/telemetry/live_processor.js +13 -0
- package/dist/src/telemetry/telemetry.d.ts +16 -0
- package/dist/src/telemetry/telemetry.d.ts.map +1 -0
- package/dist/src/telemetry/telemetry.js +38 -0
- package/dist/src/telemetry/tracer.d.ts +32 -0
- package/dist/src/telemetry/tracer.d.ts.map +1 -0
- package/dist/src/telemetry/tracer.js +54 -0
- package/package.json +74 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GraphQLClient } from "graphql-request";
|
|
2
|
+
import { Writable } from "node:stream";
|
|
3
|
+
export interface ConnectOpts {
|
|
4
|
+
Workdir?: string;
|
|
5
|
+
Project?: string;
|
|
6
|
+
LogOutput?: Writable;
|
|
7
|
+
Timeout?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ConnectParams {
|
|
10
|
+
port: number;
|
|
11
|
+
session_token: string;
|
|
12
|
+
}
|
|
13
|
+
export interface EngineConn {
|
|
14
|
+
/**
|
|
15
|
+
* Library connection provisioning, it returns a ready to use GraphQL client
|
|
16
|
+
* connected to the Dagger engine.
|
|
17
|
+
*
|
|
18
|
+
* This test multiple options to connect to the Dagger Engine.
|
|
19
|
+
* 1. Check for already running engine through `DAGGER_SESSION_PORT` & `DAGGER_SESSION_TOKEN`
|
|
20
|
+
* environment variable.
|
|
21
|
+
* 2. Auto provision the engine from the Dagger CLI (install it if it doesn't exist) and
|
|
22
|
+
* connect the client.
|
|
23
|
+
*/
|
|
24
|
+
Connect: (opts: ConnectOpts) => Promise<GraphQLClient>;
|
|
25
|
+
/**
|
|
26
|
+
* Close stops the current connection.
|
|
27
|
+
*/
|
|
28
|
+
Close: () => void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=engineconn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engineconn.d.ts","sourceRoot":"","sources":["../../../src/provisioning/engineconn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB;;;;;;;;;OASG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAEtD;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/provisioning/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,WAAW,EAAE,WAAW,EACxB,EAAE,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAYZ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Bin } from "./bin.js";
|
|
2
|
+
import { CLI_VERSION } from "./default.js";
|
|
3
|
+
export async function withEngineSession(connectOpts, cb) {
|
|
4
|
+
const cliBin = process.env["_EXPERIMENTAL_DAGGER_CLI_BIN"];
|
|
5
|
+
const engineConn = new Bin(cliBin, CLI_VERSION);
|
|
6
|
+
const gqlClient = await engineConn.Connect(connectOpts);
|
|
7
|
+
try {
|
|
8
|
+
const res = await cb(gqlClient);
|
|
9
|
+
return res;
|
|
10
|
+
}
|
|
11
|
+
finally {
|
|
12
|
+
await engineConn.Close();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapper around the OpenTelemetry SDK to configure it for Dagger.
|
|
3
|
+
*/
|
|
4
|
+
export declare class DaggerOtelConfigurator {
|
|
5
|
+
private is_configured;
|
|
6
|
+
private sdk?;
|
|
7
|
+
/**
|
|
8
|
+
* Initialize the Open Telemetry SDK if enabled or not already configured.
|
|
9
|
+
*/
|
|
10
|
+
initialize(): void;
|
|
11
|
+
configure(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Shutdown the Open Telemetry SDK to flush traces and metrics and close the connection.
|
|
14
|
+
*/
|
|
15
|
+
close(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Setup environment for auto-configuring the SDK.
|
|
18
|
+
*/
|
|
19
|
+
setupEnv(): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/telemetry/init.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,GAAG,CAAC,CAAS;IAErB;;OAEG;IACH,UAAU;IAQV,SAAS;IAkCT;;OAEG;IACG,KAAK;IAMX;;OAEG;IACH,QAAQ;CAeT"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { getBooleanFromEnv } from "@opentelemetry/core";
|
|
2
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
3
|
+
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
4
|
+
import { BatchSpanProcessor, } from "@opentelemetry/sdk-trace-base";
|
|
5
|
+
import { LiveProcessor } from "./live_processor.js";
|
|
6
|
+
const SERVICE_NAME = "dagger-typescript-sdk";
|
|
7
|
+
/*
|
|
8
|
+
* Look for variables prefixed with OTel to see if OpenTelemetry is configured.
|
|
9
|
+
*/
|
|
10
|
+
function otelConfigured() {
|
|
11
|
+
return Object.keys(process.env).some((key) => key.startsWith("OTEL_"));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Batch span processor scheduler delays.
|
|
15
|
+
* We set to 100ms so it's almost live.
|
|
16
|
+
*/
|
|
17
|
+
const NEARLY_IMMEDIATE = 100;
|
|
18
|
+
/**
|
|
19
|
+
* A wrapper around the OpenTelemetry SDK to configure it for Dagger.
|
|
20
|
+
*/
|
|
21
|
+
export class DaggerOtelConfigurator {
|
|
22
|
+
is_configured = false;
|
|
23
|
+
sdk;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the Open Telemetry SDK if enabled or not already configured.
|
|
26
|
+
*/
|
|
27
|
+
initialize() {
|
|
28
|
+
if (this.is_configured) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.configure();
|
|
32
|
+
this.is_configured = true;
|
|
33
|
+
}
|
|
34
|
+
configure() {
|
|
35
|
+
if (!otelConfigured()) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (getBooleanFromEnv("OTEL_SDK_DISABLED") ?? true) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
this.setupEnv();
|
|
42
|
+
const exporter = new OTLPTraceExporter();
|
|
43
|
+
let processor;
|
|
44
|
+
if (process.env.OTEL_EXPORTER_OTLP_TRACES_LIVE !== undefined) {
|
|
45
|
+
processor = new LiveProcessor(exporter, {
|
|
46
|
+
scheduledDelayMillis: NEARLY_IMMEDIATE,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
processor = new BatchSpanProcessor(exporter, {
|
|
51
|
+
scheduledDelayMillis: NEARLY_IMMEDIATE,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
// Create the node SDK with the context manager, the resource and the exporter.
|
|
55
|
+
this.sdk = new NodeSDK({
|
|
56
|
+
serviceName: SERVICE_NAME,
|
|
57
|
+
spanProcessors: [processor],
|
|
58
|
+
});
|
|
59
|
+
// Register the SDK to the OpenTelemetry API
|
|
60
|
+
this.sdk.start();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Shutdown the Open Telemetry SDK to flush traces and metrics and close the connection.
|
|
64
|
+
*/
|
|
65
|
+
async close() {
|
|
66
|
+
if (this.sdk) {
|
|
67
|
+
await this.sdk.shutdown();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Setup environment for auto-configuring the SDK.
|
|
72
|
+
*/
|
|
73
|
+
setupEnv() {
|
|
74
|
+
// TODO: The insecure flag should be set by the shim instead of the SDK.
|
|
75
|
+
Object.entries(process.env).forEach(([key, value]) => {
|
|
76
|
+
if (key.startsWith("OTEL_") &&
|
|
77
|
+
key.endsWith("_ENDPOINT") &&
|
|
78
|
+
value?.startsWith("http://")) {
|
|
79
|
+
const insecure = key.replace(/_ENDPOINT$/, "_INSECURE");
|
|
80
|
+
if (process.env[insecure] === undefined) {
|
|
81
|
+
process.env[insecure] = "true";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Context } from "@opentelemetry/api";
|
|
2
|
+
import { BatchSpanProcessor, type Span } from "@opentelemetry/sdk-trace-base";
|
|
3
|
+
/**
|
|
4
|
+
* Live span processor implementation.
|
|
5
|
+
*
|
|
6
|
+
* It's a BatchSpanProcessor whose on_start calls on_end on the underlying
|
|
7
|
+
* SpanProcessor in order to send live telemetry.
|
|
8
|
+
*/
|
|
9
|
+
export declare class LiveProcessor extends BatchSpanProcessor {
|
|
10
|
+
onStart(_span: Span, _parentContext: Context): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=live_processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live_processor.d.ts","sourceRoot":"","sources":["../../../src/telemetry/live_processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAAE,MAAM,+BAA+B,CAAA;AAE7E;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,kBAAkB;IAE1C,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;CAG7D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
2
|
+
/**
|
|
3
|
+
* Live span processor implementation.
|
|
4
|
+
*
|
|
5
|
+
* It's a BatchSpanProcessor whose on_start calls on_end on the underlying
|
|
6
|
+
* SpanProcessor in order to send live telemetry.
|
|
7
|
+
*/
|
|
8
|
+
export class LiveProcessor extends BatchSpanProcessor {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
+
onStart(_span, _parentContext) {
|
|
11
|
+
this.onEnd(_span);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as opentelemetry from "@opentelemetry/api";
|
|
2
|
+
import { Tracer } from "./tracer.js";
|
|
3
|
+
export declare function initialize(): void;
|
|
4
|
+
export declare function close(): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Return a tracer to use with Dagger.
|
|
7
|
+
*
|
|
8
|
+
* The tracer is automatically initialized if not already done.
|
|
9
|
+
* As a conveniance function, you can use `withTracingSpan` that automatically close
|
|
10
|
+
* the span at the end of the function.
|
|
11
|
+
*
|
|
12
|
+
* You can add a custom name to the tracer based on your application.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getTracer(name?: string): Tracer;
|
|
15
|
+
export declare function getContext(): opentelemetry.Context;
|
|
16
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMpC,wBAAgB,UAAU,SAEzB;AAED,wBAAsB,KAAK,kBAE1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAqB,GAAG,MAAM,CAG3D;AAED,wBAAgB,UAAU,0BAgBzB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as opentelemetry from "@opentelemetry/api";
|
|
2
|
+
import { DaggerOtelConfigurator } from "./init.js";
|
|
3
|
+
import { Tracer } from "./tracer.js";
|
|
4
|
+
const DAGGER_TRACER_NAME = "dagger.io/sdk.typescript";
|
|
5
|
+
const configurator = new DaggerOtelConfigurator();
|
|
6
|
+
export function initialize() {
|
|
7
|
+
configurator.initialize();
|
|
8
|
+
}
|
|
9
|
+
export async function close() {
|
|
10
|
+
await configurator.close();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Return a tracer to use with Dagger.
|
|
14
|
+
*
|
|
15
|
+
* The tracer is automatically initialized if not already done.
|
|
16
|
+
* As a conveniance function, you can use `withTracingSpan` that automatically close
|
|
17
|
+
* the span at the end of the function.
|
|
18
|
+
*
|
|
19
|
+
* You can add a custom name to the tracer based on your application.
|
|
20
|
+
*/
|
|
21
|
+
export function getTracer(name = DAGGER_TRACER_NAME) {
|
|
22
|
+
initialize();
|
|
23
|
+
return new Tracer(name);
|
|
24
|
+
}
|
|
25
|
+
export function getContext() {
|
|
26
|
+
const ctx = opentelemetry.context.active();
|
|
27
|
+
const spanCtx = opentelemetry.trace.getSpanContext(ctx);
|
|
28
|
+
if (spanCtx && opentelemetry.trace.isSpanContextValid(spanCtx)) {
|
|
29
|
+
return ctx;
|
|
30
|
+
}
|
|
31
|
+
const parentID = process.env.TRACEPARENT;
|
|
32
|
+
if (parentID) {
|
|
33
|
+
return opentelemetry.propagation.extract(ctx, {
|
|
34
|
+
traceparent: parentID,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return ctx;
|
|
38
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as opentelemetry from "@opentelemetry/api";
|
|
2
|
+
/**
|
|
3
|
+
* Tracer encapsulates the OpenTelemetry Tracer.
|
|
4
|
+
*/
|
|
5
|
+
export declare class Tracer {
|
|
6
|
+
private tracer;
|
|
7
|
+
constructor(name: string);
|
|
8
|
+
startSpan(name: string, attributes?: opentelemetry.Attributes): opentelemetry.Span;
|
|
9
|
+
/**
|
|
10
|
+
* Execute the functions with a custom span with the given name using startActiveSpan.
|
|
11
|
+
* The function executed will use the parent context of the function (it can be another span
|
|
12
|
+
* or the main function).
|
|
13
|
+
*
|
|
14
|
+
* @param name The name of the span
|
|
15
|
+
* @param fn The functions to execute
|
|
16
|
+
*
|
|
17
|
+
* startActiveSpan returns the result of the executed functions.
|
|
18
|
+
*
|
|
19
|
+
* The span is automatically ended when the function is done.
|
|
20
|
+
* The span is automatically marked as an error if the function throws an error.
|
|
21
|
+
*
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```
|
|
25
|
+
* return getTracer().startActiveSpan(name, async () => {
|
|
26
|
+
* return this.containerEcho("test").stdout()
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
startActiveSpan<T>(name: string, fn: (span: opentelemetry.Span) => Promise<T>, attributes?: opentelemetry.Attributes): Promise<T>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../../src/telemetry/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAsB;gBAExB,IAAI,EAAE,MAAM;IAIjB,SAAS,CACd,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,GACpC,aAAa,CAAC,IAAI;IAIrB;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,eAAe,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAC5C,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU;CAoBxC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as opentelemetry from "@opentelemetry/api";
|
|
2
|
+
/**
|
|
3
|
+
* Tracer encapsulates the OpenTelemetry Tracer.
|
|
4
|
+
*/
|
|
5
|
+
export class Tracer {
|
|
6
|
+
tracer;
|
|
7
|
+
constructor(name) {
|
|
8
|
+
this.tracer = opentelemetry.trace.getTracer(name);
|
|
9
|
+
}
|
|
10
|
+
startSpan(name, attributes) {
|
|
11
|
+
return this.tracer.startSpan(name, { attributes });
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Execute the functions with a custom span with the given name using startActiveSpan.
|
|
15
|
+
* The function executed will use the parent context of the function (it can be another span
|
|
16
|
+
* or the main function).
|
|
17
|
+
*
|
|
18
|
+
* @param name The name of the span
|
|
19
|
+
* @param fn The functions to execute
|
|
20
|
+
*
|
|
21
|
+
* startActiveSpan returns the result of the executed functions.
|
|
22
|
+
*
|
|
23
|
+
* The span is automatically ended when the function is done.
|
|
24
|
+
* The span is automatically marked as an error if the function throws an error.
|
|
25
|
+
*
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```
|
|
29
|
+
* return getTracer().startActiveSpan(name, async () => {
|
|
30
|
+
* return this.containerEcho("test").stdout()
|
|
31
|
+
* })
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
async startActiveSpan(name, fn, attributes) {
|
|
35
|
+
return this.tracer.startActiveSpan(name, { attributes }, async (span) => {
|
|
36
|
+
try {
|
|
37
|
+
return await fn(span);
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
if (e instanceof Error) {
|
|
41
|
+
span.recordException(e);
|
|
42
|
+
span.setStatus({
|
|
43
|
+
code: opentelemetry.SpanStatusCode.ERROR,
|
|
44
|
+
message: e.message,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
throw e;
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
span.end();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dagger.io/dagger",
|
|
3
|
+
"version": "0.0.1-0",
|
|
4
|
+
"author": "hello@dagger.io",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"types": "./dist/src/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist/"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": "./dist/src/index.js",
|
|
13
|
+
"./telemetry": "./dist/src/telemetry/index.js"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=20"
|
|
17
|
+
},
|
|
18
|
+
"main": "dist/src/index.js",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@grpc/grpc-js": "^1.14.3",
|
|
21
|
+
"@lifeomic/axios-fetch": "^3.1.0",
|
|
22
|
+
"@opentelemetry/api": "^1.9.0",
|
|
23
|
+
"@opentelemetry/core": "^2.2.0",
|
|
24
|
+
"@opentelemetry/exporter-jaeger": "^2.2.0",
|
|
25
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
|
|
26
|
+
"@opentelemetry/sdk-metrics": "^2.2.0",
|
|
27
|
+
"@opentelemetry/sdk-node": "^0.208.0",
|
|
28
|
+
"@opentelemetry/semantic-conventions": "^1.38.0",
|
|
29
|
+
"adm-zip": "^0.5.16",
|
|
30
|
+
"env-paths": "^3.0.0",
|
|
31
|
+
"execa": "^9.6.1",
|
|
32
|
+
"graphql": "^16.12.0",
|
|
33
|
+
"graphql-request": "^7.4.0",
|
|
34
|
+
"graphql-tag": "^2.12.6",
|
|
35
|
+
"node-color-log": "^13.0.3",
|
|
36
|
+
"node-fetch": "^3.3.2",
|
|
37
|
+
"reflect-metadata": "^0.2.2",
|
|
38
|
+
"tar": "^7.5.2",
|
|
39
|
+
"typescript": "^5.9.3"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc",
|
|
43
|
+
"watch": "tsc -w",
|
|
44
|
+
"test": "yarn run test:node",
|
|
45
|
+
"test:bun": "bun run --bun mocha",
|
|
46
|
+
"test:node": "mocha",
|
|
47
|
+
"test:generate-scan": "tsx ./introspector/test/testdata/generate_expected_scan.ts",
|
|
48
|
+
"lint": "yarn eslint --max-warnings=0 .",
|
|
49
|
+
"fmt": "yarn eslint --max-warnings=0 --fix .",
|
|
50
|
+
"docs:lint": "cd ../../docs/current_docs && eslint -c ../../sdk/typescript/eslint-docs.config.js --max-warnings=0 ./**/*.ts",
|
|
51
|
+
"docs:fmt": "cd ../../docs/current_docs && eslint --fix -c ../../sdk/typescript/eslint-docs.config.js --max-warnings=0 ./**/*.ts"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@eslint/js": "^10.0.0",
|
|
55
|
+
"@otel-test-runner/mocha-test": "0.3.1",
|
|
56
|
+
"@trivago/prettier-plugin-sort-imports": "^6.0.1",
|
|
57
|
+
"@types/adm-zip": "^0.5.7",
|
|
58
|
+
"@types/mocha": "^10.0.10",
|
|
59
|
+
"@types/node": "~25.0.3",
|
|
60
|
+
"@types/tar": "^6.1.13",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^8.51.0",
|
|
62
|
+
"@typescript-eslint/parser": "^8.51.0",
|
|
63
|
+
"eslint": "^9.39.2",
|
|
64
|
+
"eslint-config-prettier": "^10.1.8",
|
|
65
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
66
|
+
"mocha": "^11.7.5",
|
|
67
|
+
"prettier": "^3.7.4",
|
|
68
|
+
"rollup": "^4.54.0",
|
|
69
|
+
"rollup-plugin-dts": "^6.3.0",
|
|
70
|
+
"ts-node": "^10.9.2",
|
|
71
|
+
"tsx": "^4.21.0",
|
|
72
|
+
"typescript-eslint": "^8.51.0"
|
|
73
|
+
}
|
|
74
|
+
}
|