npm package diff

Package: @forge/events

Versions: 1.0.1 - 1.0.1-experimental-93876a6

File: package/src/appEvents.ts

Index: package/src/appEvents.ts
===================================================================
--- package/src/appEvents.ts
+++ package/src/appEvents.ts
@@ -0,0 +1,34 @@
+import { post } from './queries';
+import { AppEventResult, AppEventRequest, AppEventErrorType } from './types';
+import { __requestAtlassianAsApp } from '@forge/api';
+
+const errorTypes: Record<number, AppEventErrorType> = {
+  400: 'VALIDATION_ERROR',
+  401: 'AUTHENTICATION_ERROR',
+  403: 'AUTHENTICATION_ERROR',
+  429: 'RATE_LIMIT',
+  500: 'SERVICE_UNAVAILABLE',
+  503: 'SERVICE_UNAVAILABLE'
+};
+
+const endpoint = '/app/event?installationContext=${contextAri}&environmentId=${environmentId}&appId=${appId}';
+
+export const appEvents = {
+  async publishEvent(eventType: string): Promise<AppEventResult> {
+    const body: AppEventRequest = {
+      type: eventType
+    };
+
+    const response = await post(endpoint, body, __requestAtlassianAsApp);
+
+    if (!response.ok) {
+      const responseBody = await response.json();
+      return {
+        errorType: errorTypes[response.status] ?? 'OTHER',
+        errorMessage: responseBody?.errorMessage || ''
+      };
+    }
+
+    return {};
+  }
+};