@fabric-harness/azure 0.7.0 → 0.9.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.
@@ -0,0 +1,62 @@
1
+ import type { TelemetryExporter } from '@fabric-harness/sdk';
2
+ /**
3
+ * Optional Azure Monitor / Application Insights telemetry exporter.
4
+ *
5
+ * Adapts Fabric's `TelemetrySpan` shape into App Insights `TelemetryClient`
6
+ * `trackDependency` calls. The Azure Monitor SDK is provided by the caller
7
+ * — we don't take a hard dependency.
8
+ *
9
+ * Install peer dep:
10
+ * ```sh
11
+ * npm install applicationinsights
12
+ * ```
13
+ *
14
+ * Usage:
15
+ * ```ts
16
+ * import * as appInsights from 'applicationinsights';
17
+ * import { applicationInsightsExporter } from '@fabric-harness/azure/app-insights';
18
+ *
19
+ * appInsights.setup(process.env.APPLICATIONINSIGHTS_CONNECTION_STRING).start();
20
+ * const exporter = applicationInsightsExporter({
21
+ * client: appInsights.defaultClient,
22
+ * defaultName: 'fabric-harness-agent',
23
+ * });
24
+ *
25
+ * const session = await fabric.session(undefined, {
26
+ * onEvent: async (event) => {
27
+ * const { eventToTelemetrySpan } = await import('@fabric-harness/sdk');
28
+ * const span = eventToTelemetrySpan(event);
29
+ * if (span) await exporter.export(span);
30
+ * },
31
+ * });
32
+ * ```
33
+ */
34
+ export interface ApplicationInsightsClientLike {
35
+ trackDependency?(input: {
36
+ name: string;
37
+ target?: string;
38
+ duration: number;
39
+ success?: boolean;
40
+ resultCode?: string;
41
+ dependencyTypeName?: string;
42
+ properties?: Record<string, string | number | boolean>;
43
+ time?: Date;
44
+ }): void;
45
+ /** Optional `flush({ callback })` hook from `applicationinsights`. */
46
+ flush?(input?: {
47
+ callback?: () => void;
48
+ }): void;
49
+ }
50
+ export interface ApplicationInsightsExporterOptions {
51
+ client: ApplicationInsightsClientLike;
52
+ /** Default span name when `TelemetrySpan.name` is empty. */
53
+ defaultName?: string;
54
+ /** Always-on attributes attached as App Insights `properties` on every span. */
55
+ attributes?: Record<string, string | number | boolean>;
56
+ /** Default `dependencyTypeName`. Defaults to `'fabric-harness'`. */
57
+ dependencyTypeName?: string;
58
+ /** When true, calls `client.flush()` after each export. */
59
+ flushOnExport?: boolean;
60
+ }
61
+ export declare function applicationInsightsExporter(options: ApplicationInsightsExporterOptions): TelemetryExporter;
62
+ //# sourceMappingURL=app-insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-insights.d.ts","sourceRoot":"","sources":["../src/app-insights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,qBAAqB,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,6BAA6B;IAC5C,eAAe,CAAC,CAAC,KAAK,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,GAAG,IAAI,CAAC;IACT,sEAAsE;IACtE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,6BAA6B,CAAC;IACtC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACvD,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,kCAAkC,GAAG,iBAAiB,CAkC1G"}
@@ -0,0 +1,37 @@
1
+ export function applicationInsightsExporter(options) {
2
+ const { client, defaultName, attributes, dependencyTypeName, flushOnExport } = options;
3
+ return {
4
+ async export(span) {
5
+ if (typeof client.trackDependency !== 'function')
6
+ return;
7
+ const properties = {
8
+ ...attributes,
9
+ ...span.attributes,
10
+ };
11
+ const target = typeof span.attributes['fabric.session_id'] === 'string'
12
+ ? span.attributes['fabric.session_id']
13
+ : undefined;
14
+ client.trackDependency({
15
+ name: span.name || defaultName || 'fabric.span',
16
+ ...(target ? { target } : {}),
17
+ duration: span.durationMs,
18
+ success: true,
19
+ dependencyTypeName: dependencyTypeName ?? 'fabric-harness',
20
+ properties,
21
+ time: new Date(span.startedAt),
22
+ });
23
+ if (flushOnExport) {
24
+ const flush = client.flush;
25
+ if (flush) {
26
+ await new Promise((resolve) => {
27
+ // applicationinsights.flush takes an optional callback
28
+ flush.call(client, { callback: () => resolve() });
29
+ // Some shims don't honor the callback; resolve anyway after a tick.
30
+ setImmediate(resolve);
31
+ });
32
+ }
33
+ }
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=app-insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-insights.js","sourceRoot":"","sources":["../src/app-insights.ts"],"names":[],"mappings":"AA6DA,MAAM,UAAU,2BAA2B,CAAC,OAA2C;IACrF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACvF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,IAAmB;YAC9B,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU;gBAAE,OAAO;YACzD,MAAM,UAAU,GAA8C;gBAC5D,GAAG,UAAU;gBACb,GAAG,IAAI,CAAC,UAAU;aACnB,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,QAAQ;gBACrE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAW;gBAChD,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,CAAC,eAAe,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW,IAAI,aAAa;gBAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,QAAQ,EAAE,IAAI,CAAC,UAAU;gBACzB,OAAO,EAAE,IAAI;gBACb,kBAAkB,EAAE,kBAAkB,IAAI,gBAAgB;gBAC1D,UAAU;gBACV,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;aAC/B,CAAC,CAAC;YACH,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAClC,uDAAuD;wBACvD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBAClD,oEAAoE;wBACpE,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fabric-harness/azure",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Azure Container Apps / Container Instances / AKS adapter for Fabric Harness.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Fabric",
@@ -40,6 +40,10 @@
40
40
  "./aks-sandbox": {
41
41
  "types": "./dist/aks-sandbox.d.ts",
42
42
  "import": "./dist/aks-sandbox.js"
43
+ },
44
+ "./app-insights": {
45
+ "types": "./dist/app-insights.d.ts",
46
+ "import": "./dist/app-insights.js"
43
47
  }
44
48
  },
45
49
  "files": [
@@ -48,8 +52,8 @@
48
52
  "LICENSE"
49
53
  ],
50
54
  "dependencies": {
51
- "@fabric-harness/connectors": "0.7.0",
52
- "@fabric-harness/sdk": "0.7.0"
55
+ "@fabric-harness/connectors": "0.9.0",
56
+ "@fabric-harness/sdk": "0.9.0"
53
57
  },
54
58
  "peerDependencies": {
55
59
  "@kubernetes/client-node": "^0.21.0"