@heroku/sdk 0.6.1 → 0.6.2

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.
@@ -1,14 +1,16 @@
1
1
  import type { DashboardBackendClient } from '../services/dashboard-backend.js';
2
2
  import type { DataClient } from '../services/data.js';
3
3
  import type { MetricsClient } from '../services/metrics.js';
4
+ import type { NotificationsClient } from '../services/notifications.js';
4
5
  import type { PlatformClient } from '../services/platform.js';
5
6
  import type { RepositoriesApiClient } from '../services/repositories-api.js';
6
7
  import type { RepositoriesClient } from '../services/repositories.js';
7
- export type ServiceName = 'dashboardBackend' | 'data' | 'metrics' | 'platform' | 'repositories' | 'repositoriesApi';
8
+ export type ServiceName = 'dashboardBackend' | 'data' | 'metrics' | 'notifications' | 'platform' | 'repositories' | 'repositoriesApi';
8
9
  type BaseResourceCtx = {
9
10
  dashboardBackend: DashboardBackendClient;
10
11
  data: DataClient;
11
12
  metrics: MetricsClient;
13
+ notifications: NotificationsClient;
12
14
  platform: PlatformClient;
13
15
  repositories: RepositoriesClient;
14
16
  };
@@ -2,6 +2,7 @@ import type { HerokuApiClientOptions } from '@heroku/heroku-fetch';
2
2
  import type { DashboardBackendClient } from '../services/dashboard-backend.js';
3
3
  import type { DataClient } from '../services/data.js';
4
4
  import type { MetricsClient } from '../services/metrics.js';
5
+ import type { NotificationsClient } from '../services/notifications.js';
5
6
  import type { PlatformClient } from '../services/platform.js';
6
7
  import type { RepositoriesApiClient } from '../services/repositories-api.js';
7
8
  import type { RepositoriesClient } from '../services/repositories.js';
@@ -21,6 +22,7 @@ export declare class HerokuSDK<const Exts extends readonly ResourceExtension[] =
21
22
  get dashboardBackend(): ApplyExtensions<DashboardBackendClient, ExtensionsFor<Exts, 'dashboardBackend'>>;
22
23
  get data(): ApplyExtensions<DataClient, ExtensionsFor<Exts, 'data'>>;
23
24
  get metrics(): ApplyExtensions<MetricsClient, ExtensionsFor<Exts, 'metrics'>>;
25
+ get notifications(): ApplyExtensions<NotificationsClient, ExtensionsFor<Exts, 'notifications'>>;
24
26
  get platform(): ApplyExtensions<PlatformClient, ExtensionsFor<Exts, 'platform'>>;
25
27
  get repositories(): ApplyExtensions<RepositoriesClient, ExtensionsFor<Exts, 'repositories'>>;
26
28
  get repositoriesApi(): ApplyExtensions<RepositoriesApiClient, ExtensionsFor<Exts, 'repositoriesApi'>>;
@@ -1,6 +1,7 @@
1
1
  import { createDashboardBackendClient } from '../services/dashboard-backend.js';
2
2
  import { createDataClient } from '../services/data.js';
3
3
  import { createMetricsClient } from '../services/metrics.js';
4
+ import { createNotificationsClient } from '../services/notifications.js';
4
5
  import { createPlatformClient } from '../services/platform.js';
5
6
  import { createRepositoriesApiClient } from '../services/repositories-api.js';
6
7
  import { createRepositoriesClient } from '../services/repositories.js';
@@ -22,10 +23,12 @@ export class HerokuSDK {
22
23
  #data;
23
24
  #extensionsByService;
24
25
  #metrics;
26
+ #notifications;
25
27
  #platform;
26
28
  #rawDashboardBackend;
27
29
  #rawData;
28
30
  #rawMetrics;
31
+ #rawNotifications;
29
32
  #rawPlatform;
30
33
  #rawRepositories;
31
34
  #rawRepositoriesApi;
@@ -48,6 +51,10 @@ export class HerokuSDK {
48
51
  this.#metrics ??= mergeExtensions(this.#getRawMetrics(), this.#extensionsByService.get('metrics') ?? [], this.#getCtx());
49
52
  return this.#metrics;
50
53
  }
54
+ get notifications() {
55
+ this.#notifications ??= mergeExtensions(this.#getRawNotifications(), this.#extensionsByService.get('notifications') ?? [], this.#getCtx());
56
+ return this.#notifications;
57
+ }
51
58
  get platform() {
52
59
  this.#platform ??= mergeExtensions(this.#getRawPlatform(), this.#extensionsByService.get('platform') ?? [], this.#getCtx());
53
60
  return this.#platform;
@@ -83,6 +90,10 @@ export class HerokuSDK {
83
90
  enumerable: true,
84
91
  get: () => this.#getRawMetrics(),
85
92
  },
93
+ notifications: {
94
+ enumerable: true,
95
+ get: () => this.#getRawNotifications(),
96
+ },
86
97
  platform: {
87
98
  enumerable: true,
88
99
  get: () => this.#getRawPlatform(),
@@ -110,6 +121,10 @@ export class HerokuSDK {
110
121
  this.#rawMetrics ??= createMetricsClient(this.#getClientOptions('metrics'));
111
122
  return this.#rawMetrics;
112
123
  }
124
+ #getRawNotifications() {
125
+ this.#rawNotifications ??= createNotificationsClient(this.#clientOptions);
126
+ return this.#rawNotifications;
127
+ }
113
128
  #getRawPlatform() {
114
129
  this.#rawPlatform ??= createPlatformClient(this.#getClientOptions('platform'));
115
130
  return this.#rawPlatform;
@@ -19,6 +19,7 @@ export function buildCtx(stubs = {}) {
19
19
  dashboardBackend: {},
20
20
  data: {},
21
21
  metrics: {},
22
+ notifications: {},
22
23
  platform: platform,
23
24
  repositories: {},
24
25
  };
@@ -0,0 +1,5 @@
1
+ import type { HerokuApiClientOptions } from '@heroku/heroku-fetch';
2
+ import type { HerokuClient } from '@heroku/types/notifications';
3
+ import type { RoutesClientExtras } from '../core/create-client.js';
4
+ export type NotificationsClient = HerokuClient & RoutesClientExtras<HerokuClient>;
5
+ export declare function createNotificationsClient(options?: HerokuApiClientOptions): NotificationsClient;
@@ -0,0 +1,11 @@
1
+ import * as routes from '@heroku/types/notifications/routes';
2
+ import { createClient } from '../core/create-client.js';
3
+ const DEFAULT_NOTIFICATIONS_BASE_URL = 'https://telex.heroku.com';
4
+ export function createNotificationsClient(options = {}) {
5
+ const baseUrl = process.env.HEROKU_NOTIFICATIONS_HOST ?? DEFAULT_NOTIFICATIONS_BASE_URL;
6
+ return createClient(routes, {
7
+ baseUrl,
8
+ service: 'custom',
9
+ ...options,
10
+ });
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heroku/sdk",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "Heroku SDK",
5
5
  "author": "Heroku",
6
6
  "type": "module",
@@ -34,6 +34,10 @@
34
34
  "types": "./dist/services/repositories-api.d.ts",
35
35
  "default": "./dist/services/repositories-api.js"
36
36
  },
37
+ "./notifications": {
38
+ "types": "./dist/services/notifications.d.ts",
39
+ "default": "./dist/services/notifications.js"
40
+ },
37
41
  "./extensions/platform": {
38
42
  "types": "./dist/resources/extensions/platform.d.ts",
39
43
  "default": "./dist/resources/extensions/platform.js"
@@ -141,7 +145,7 @@
141
145
  },
142
146
  "dependencies": {
143
147
  "@heroku/heroku-fetch": "^0.1.4",
144
- "@heroku/types": "^4.7.0",
148
+ "@heroku/types": "^4.8.0",
145
149
  "debug": "^4.4.0"
146
150
  }
147
151
  }