@heroku/sdk 0.12.1 → 0.12.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.
- package/README.md +1 -0
- package/dist/core/dispatcher.js +13 -2
- package/dist/resources/dashboard-backend/favorite/add-by-app-name.d.ts +7 -0
- package/dist/resources/dashboard-backend/favorite/add-by-app-name.js +33 -0
- package/dist/resources/dashboard-backend/favorite/errors.d.ts +16 -0
- package/dist/resources/dashboard-backend/favorite/errors.js +32 -0
- package/dist/resources/dashboard-backend/favorite/index.d.ts +8 -0
- package/dist/resources/dashboard-backend/favorite/index.js +10 -0
- package/dist/resources/dashboard-backend/favorite/remove-by-app-name.d.ts +4 -0
- package/dist/resources/dashboard-backend/favorite/remove-by-app-name.js +15 -0
- package/dist/resources/extensions/dashboard-backend.d.ts +1 -0
- package/dist/resources/extensions/dashboard-backend.js +1 -0
- package/dist/resources/extensions/platform.d.ts +2 -0
- package/dist/resources/extensions/platform.js +2 -0
- package/dist/resources/platform/app-collaborator/index.d.ts +5 -0
- package/dist/resources/platform/app-collaborator/index.js +6 -0
- package/dist/resources/platform/app-collaborator/remove-self.d.ts +10 -0
- package/dist/resources/platform/app-collaborator/remove-self.js +21 -0
- package/dist/resources/platform/team-app/index.d.ts +5 -0
- package/dist/resources/platform/team-app/index.js +6 -0
- package/dist/resources/platform/team-app/join-self.d.ts +7 -0
- package/dist/resources/platform/team-app/join-self.js +9 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -133,6 +133,7 @@ const favorites = await dashboardBackend.favorite.list({ type: 'app' })
|
|
|
133
133
|
| `createRepositoriesClient`, `RepositoriesClient` | `@heroku/sdk/repositories` |
|
|
134
134
|
| `createRepositoriesApiClient`, `RepositoriesApiClient` | `@heroku/sdk/repositories-api` |
|
|
135
135
|
| `appExtensions`, `dynoExtensions`, … | `@heroku/sdk/extensions/platform` |
|
|
136
|
+
| `favoriteExtensions`, `addByAppName`, `removeByAppName`, favorite errors and types | `@heroku/sdk/extensions/dashboard-backend` |
|
|
136
137
|
| `databaseExtensions`, … | `@heroku/sdk/extensions/data` |
|
|
137
138
|
|
|
138
139
|
## Development
|
package/dist/core/dispatcher.js
CHANGED
|
@@ -7,11 +7,22 @@ function hasCallerRangeHeader(requestOptions) {
|
|
|
7
7
|
return false;
|
|
8
8
|
return Object.keys(requestOptions.headers).some(k => k.toLowerCase() === 'range');
|
|
9
9
|
}
|
|
10
|
+
function redactEmailPathSegments(path) {
|
|
11
|
+
return path.split('/').map(segment => {
|
|
12
|
+
try {
|
|
13
|
+
return decodeURIComponent(segment).includes('@') ? '[REDACTED]' : segment;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return segment;
|
|
17
|
+
}
|
|
18
|
+
}).join('/');
|
|
19
|
+
}
|
|
10
20
|
export async function dispatch(client, route, args, invocation, requestOptions) {
|
|
11
21
|
const placeholderCount = countPlaceholders(route.path);
|
|
12
22
|
const pathParams = args.slice(0, placeholderCount);
|
|
13
23
|
const remaining = args.slice(placeholderCount);
|
|
14
24
|
const path = interpolatePath(route.path, pathParams);
|
|
25
|
+
const debugPath = redactEmailPathSegments(path);
|
|
15
26
|
let body;
|
|
16
27
|
if (route.hasRequestBody && remaining.length > 0) {
|
|
17
28
|
body = remaining[0];
|
|
@@ -30,7 +41,7 @@ export async function dispatch(client, route, args, invocation, requestOptions)
|
|
|
30
41
|
effectiveOptions = { ...requestOptions, searchParams };
|
|
31
42
|
}
|
|
32
43
|
}
|
|
33
|
-
debug('%s %s %s -> %s hasBody=%s', invocation ?? 'dispatch', route.method, route.path,
|
|
44
|
+
debug('%s %s %s -> %s hasBody=%s', invocation ?? 'dispatch', route.method, route.path, debugPath, body !== undefined);
|
|
34
45
|
const response = await callMethod(client, route.method, path, body, effectiveOptions);
|
|
35
46
|
const contentLength = response.headers.get('content-length');
|
|
36
47
|
if (response.status === 204 || contentLength === '0') {
|
|
@@ -87,7 +98,7 @@ function callMethod(client, method, path, body, requestOptions) {
|
|
|
87
98
|
return requestOptions ? client.put(path, body, requestOptions) : client.put(path, body);
|
|
88
99
|
}
|
|
89
100
|
default: {
|
|
90
|
-
debug('unsupported HTTP method=%s path=%s', method, path);
|
|
101
|
+
debug('unsupported HTTP method=%s path=%s', method, redactEmailPathSegments(path));
|
|
91
102
|
throw new Error(`Unsupported HTTP method: ${method}`);
|
|
92
103
|
}
|
|
93
104
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FavoriteCreateResult } from '@heroku/types/dashboard-backend';
|
|
2
|
+
import type { ResourceCtx } from '../../../core/extend-resource.js';
|
|
3
|
+
export type FavoriteOptions = {
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
};
|
|
6
|
+
/** Add an app to the current user's favorites by its exact app name. */
|
|
7
|
+
export declare function addByAppName(ctx: Pick<ResourceCtx, 'dashboardBackend'>, appName: string, options?: FavoriteOptions): Promise<FavoriteCreateResult | void>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { withSignal } from '../../../core/with-signal.js';
|
|
2
|
+
import { isAbortError } from '../../../utils/is-abort-error.js';
|
|
3
|
+
import { AlreadyFavoriteError, AppNotFoundError, FavoriteCreateError } from './errors.js';
|
|
4
|
+
/** Add an app to the current user's favorites by its exact app name. */
|
|
5
|
+
export async function addByAppName(ctx, appName, options = {}) {
|
|
6
|
+
const { signal } = options;
|
|
7
|
+
signal?.throwIfAborted();
|
|
8
|
+
const dashboardBackend = withSignal(ctx.dashboardBackend, signal);
|
|
9
|
+
const favorites = await dashboardBackend.favorite.list({ type: 'app' });
|
|
10
|
+
signal?.throwIfAborted();
|
|
11
|
+
if (favorites.some(favorite => favorite.resource_name === appName)) {
|
|
12
|
+
throw new AlreadyFavoriteError(appName);
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
return await dashboardBackend.favorite.create({ resource_id: appName, type: 'app' });
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
// Preserve request cancellation, including custom abort reasons, but don't
|
|
19
|
+
// let an unrelated abort race mask the create request's actual failure.
|
|
20
|
+
if (isAbortError(error) || (signal?.aborted && error === signal.reason))
|
|
21
|
+
throw error;
|
|
22
|
+
if (isNotFound(error)) {
|
|
23
|
+
throw new AppNotFoundError(appName, error);
|
|
24
|
+
}
|
|
25
|
+
throw new FavoriteCreateError(appName, error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function isNotFound(error) {
|
|
29
|
+
return (typeof error === 'object'
|
|
30
|
+
&& error !== null
|
|
31
|
+
&& 'statusCode' in error
|
|
32
|
+
&& error.statusCode === 404);
|
|
33
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class AlreadyFavoriteError extends Error {
|
|
2
|
+
readonly appName: string;
|
|
3
|
+
constructor(appName: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class NotFavoriteError extends Error {
|
|
6
|
+
readonly appName: string;
|
|
7
|
+
constructor(appName: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class AppNotFoundError extends Error {
|
|
10
|
+
readonly appName: string;
|
|
11
|
+
constructor(appName: string, cause: unknown);
|
|
12
|
+
}
|
|
13
|
+
export declare class FavoriteCreateError extends Error {
|
|
14
|
+
readonly appName: string;
|
|
15
|
+
constructor(appName: string, cause: unknown);
|
|
16
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export class AlreadyFavoriteError extends Error {
|
|
2
|
+
appName;
|
|
3
|
+
constructor(appName) {
|
|
4
|
+
super(`App ${appName} is already a favorite.`);
|
|
5
|
+
this.appName = appName;
|
|
6
|
+
this.name = 'AlreadyFavoriteError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class NotFavoriteError extends Error {
|
|
10
|
+
appName;
|
|
11
|
+
constructor(appName) {
|
|
12
|
+
super(`App ${appName} is not a favorite.`);
|
|
13
|
+
this.appName = appName;
|
|
14
|
+
this.name = 'NotFavoriteError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class AppNotFoundError extends Error {
|
|
18
|
+
appName;
|
|
19
|
+
constructor(appName, cause) {
|
|
20
|
+
super(`Couldn't find app ${appName}.`, { cause });
|
|
21
|
+
this.appName = appName;
|
|
22
|
+
this.name = 'AppNotFoundError';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class FavoriteCreateError extends Error {
|
|
26
|
+
appName;
|
|
27
|
+
constructor(appName, cause) {
|
|
28
|
+
super(`Failed to add app ${appName} as a favorite.`, { cause });
|
|
29
|
+
this.appName = appName;
|
|
30
|
+
this.name = 'FavoriteCreateError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FavoriteOptions } from './add-by-app-name.js';
|
|
2
|
+
export { addByAppName, type FavoriteOptions } from './add-by-app-name.js';
|
|
3
|
+
export { AlreadyFavoriteError, AppNotFoundError, FavoriteCreateError, NotFavoriteError, } from './errors.js';
|
|
4
|
+
export { removeByAppName } from './remove-by-app-name.js';
|
|
5
|
+
export declare const favoriteExtensions: import("../../../core/extend-resource.js").ResourceExtension<"dashboardBackend", "favorite", {
|
|
6
|
+
addByAppName: (appName: string, options?: FavoriteOptions) => Promise<void | import("@heroku/types/dashboard-backend").FavoriteCreateResult>;
|
|
7
|
+
removeByAppName: (appName: string, options?: FavoriteOptions) => Promise<void>;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { extendResource } from '../../../core/extend-resource.js';
|
|
2
|
+
import { addByAppName } from './add-by-app-name.js';
|
|
3
|
+
import { removeByAppName } from './remove-by-app-name.js';
|
|
4
|
+
export { addByAppName } from './add-by-app-name.js';
|
|
5
|
+
export { AlreadyFavoriteError, AppNotFoundError, FavoriteCreateError, NotFavoriteError, } from './errors.js';
|
|
6
|
+
export { removeByAppName } from './remove-by-app-name.js';
|
|
7
|
+
export const favoriteExtensions = extendResource('dashboardBackend', 'favorite', ctx => ({
|
|
8
|
+
addByAppName: (appName, options) => addByAppName(ctx, appName, options),
|
|
9
|
+
removeByAppName: (appName, options) => removeByAppName(ctx, appName, options),
|
|
10
|
+
}));
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ResourceCtx } from '../../../core/extend-resource.js';
|
|
2
|
+
import type { FavoriteOptions } from './add-by-app-name.js';
|
|
3
|
+
/** Remove an app from the current user's favorites by its exact app name. */
|
|
4
|
+
export declare function removeByAppName(ctx: Pick<ResourceCtx, 'dashboardBackend'>, appName: string, options?: FavoriteOptions): Promise<void>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { withSignal } from '../../../core/with-signal.js';
|
|
2
|
+
import { NotFavoriteError } from './errors.js';
|
|
3
|
+
/** Remove an app from the current user's favorites by its exact app name. */
|
|
4
|
+
export async function removeByAppName(ctx, appName, options = {}) {
|
|
5
|
+
const { signal } = options;
|
|
6
|
+
signal?.throwIfAborted();
|
|
7
|
+
const dashboardBackend = withSignal(ctx.dashboardBackend, signal);
|
|
8
|
+
const favorites = await dashboardBackend.favorite.list({ type: 'app' });
|
|
9
|
+
signal?.throwIfAborted();
|
|
10
|
+
const favorite = favorites.find(candidate => candidate.resource_name === appName);
|
|
11
|
+
if (!favorite) {
|
|
12
|
+
throw new NotFavoriteError(appName);
|
|
13
|
+
}
|
|
14
|
+
await dashboardBackend.favorite.delete(favorite.id);
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { addByAppName, AlreadyFavoriteError, AppNotFoundError, FavoriteCreateError, favoriteExtensions, type FavoriteOptions, NotFavoriteError, removeByAppName, } from '../dashboard-backend/favorite/index.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { addByAppName, AlreadyFavoriteError, AppNotFoundError, FavoriteCreateError, favoriteExtensions, NotFavoriteError, removeByAppName, } from '../dashboard-backend/favorite/index.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { accountExtensions, type AccountWithDelinquency, type GetAccountWithDelinquencyOptions } from '../platform/account.js';
|
|
2
2
|
export { addOnAttachmentExtensions } from '../platform/add-on-attachment/index.js';
|
|
3
3
|
export { addOnExtensions } from '../platform/add-on/index.js';
|
|
4
|
+
export { appCollaboratorExtensions, type BeforeRemove, type RemoveSelfOptions, } from '../platform/app-collaborator/index.js';
|
|
4
5
|
export { appExtensions, type AppInfo, type DiffAppsOptions, type DiffRow, type PipelineCouplingDetail, } from '../platform/app/index.js';
|
|
5
6
|
export { containerExtensions, type DockerReleasesBatchUpdateOpts, NotAContainerAppError, type ReleaseDockerImagesResult, type RemoveProcessTypesOpts, } from '../platform/container/index.js';
|
|
6
7
|
export { type DelinquencyResource, type DelinquencySchedule, formatDelinquencyWarning, } from '../platform/delinquency.js';
|
|
@@ -14,6 +15,7 @@ export { type ResolveRepoNameOptions, reviewAppConfigExtensions } from '../platf
|
|
|
14
15
|
export { privateToShield, shieldToPrivate } from '../platform/shield.js';
|
|
15
16
|
export { createAndAssociate, type CreateAndAssociateOptions, sniEndpointExtensions } from '../platform/sni-endpoint/index.js';
|
|
16
17
|
export { spaceExtensions, SpaceNotAllocatedError, SpaceNotReadyError, type SpaceOptions, type SpaceWithNat, waitForAllocated, type WaitForAllocatedOptions, } from '../platform/space/index.js';
|
|
18
|
+
export { type JoinSelfOptions, teamAppExtensions } from '../platform/team-app/index.js';
|
|
17
19
|
export { type GetTeamWithDelinquencyOptions, teamExtensions, type TeamWithDelinquency } from '../platform/team.js';
|
|
18
20
|
export { telemetryDrainExtensions, type TelemetryDrainOptions, type TelemetryDrainTarget } from '../platform/telemetry-drain/index.js';
|
|
19
21
|
export { testRunExtensions, TestRunNotReadyError, type TestRunStatus, waitForState, type WaitForStateOptions, } from '../platform/test-run/index.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { accountExtensions } from '../platform/account.js';
|
|
2
2
|
export { addOnAttachmentExtensions } from '../platform/add-on-attachment/index.js';
|
|
3
3
|
export { addOnExtensions } from '../platform/add-on/index.js';
|
|
4
|
+
export { appCollaboratorExtensions, } from '../platform/app-collaborator/index.js';
|
|
4
5
|
export { appExtensions, } from '../platform/app/index.js';
|
|
5
6
|
export { containerExtensions, NotAContainerAppError, } from '../platform/container/index.js';
|
|
6
7
|
export { formatDelinquencyWarning, } from '../platform/delinquency.js';
|
|
@@ -14,6 +15,7 @@ export { reviewAppConfigExtensions } from '../platform/review-app-config/index.j
|
|
|
14
15
|
export { privateToShield, shieldToPrivate } from '../platform/shield.js';
|
|
15
16
|
export { createAndAssociate, sniEndpointExtensions } from '../platform/sni-endpoint/index.js';
|
|
16
17
|
export { spaceExtensions, SpaceNotAllocatedError, SpaceNotReadyError, waitForAllocated, } from '../platform/space/index.js';
|
|
18
|
+
export { teamAppExtensions } from '../platform/team-app/index.js';
|
|
17
19
|
export { teamExtensions } from '../platform/team.js';
|
|
18
20
|
export { telemetryDrainExtensions } from '../platform/telemetry-drain/index.js';
|
|
19
21
|
export { testRunExtensions, TestRunNotReadyError, waitForState, } from '../platform/test-run/index.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RemoveSelfOptions } from './remove-self.js';
|
|
2
|
+
export { type BeforeRemove, removeSelf, type RemoveSelfOptions } from './remove-self.js';
|
|
3
|
+
export declare const appCollaboratorExtensions: import("../../../core/extend-resource.js").ResourceExtension<"platform", "appCollaborator", {
|
|
4
|
+
removeSelf: (appIdentity: string, options?: RemoveSelfOptions) => Promise<import("@heroku/types/3.sdk").Collaborator>;
|
|
5
|
+
}>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { extendResource } from '../../../core/extend-resource.js';
|
|
2
|
+
import { removeSelf } from './remove-self.js';
|
|
3
|
+
export { removeSelf } from './remove-self.js';
|
|
4
|
+
export const appCollaboratorExtensions = extendResource('platform', 'appCollaborator', ctx => ({
|
|
5
|
+
removeSelf: (appIdentity, options) => removeSelf(ctx, appIdentity, options),
|
|
6
|
+
}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Collaborator } from '@heroku/types/3.sdk';
|
|
2
|
+
import type { ResourceCtx } from '../../../core/extend-resource.js';
|
|
3
|
+
import type { AccountWithDelinquency } from '../account.js';
|
|
4
|
+
export type BeforeRemove = (details: AccountWithDelinquency) => Promise<void> | void;
|
|
5
|
+
export type RemoveSelfOptions = {
|
|
6
|
+
beforeRemove?: BeforeRemove;
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
};
|
|
9
|
+
/** Remove the authenticated account from an app's collaborator list. */
|
|
10
|
+
export declare function removeSelf(ctx: Pick<ResourceCtx, 'platform'>, appIdentity: string, options?: RemoveSelfOptions): Promise<Collaborator>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { withSignal } from '../../../core/with-signal.js';
|
|
2
|
+
import { getAccountWithDelinquency } from '../account.js';
|
|
3
|
+
/** Remove the authenticated account from an app's collaborator list. */
|
|
4
|
+
export async function removeSelf(ctx, appIdentity, options = {}) {
|
|
5
|
+
options.signal?.throwIfAborted();
|
|
6
|
+
let account;
|
|
7
|
+
if (options.beforeRemove) {
|
|
8
|
+
const details = await getAccountWithDelinquency(ctx, options.signal ? { signal: options.signal } : {});
|
|
9
|
+
options.signal?.throwIfAborted();
|
|
10
|
+
await options.beforeRemove(details);
|
|
11
|
+
options.signal?.throwIfAborted();
|
|
12
|
+
account = details.account;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
const platform = withSignal(ctx.platform, options.signal);
|
|
16
|
+
account = await platform.account.info();
|
|
17
|
+
options.signal?.throwIfAborted();
|
|
18
|
+
}
|
|
19
|
+
// Keep the email raw: the generated route encodes path parameters once.
|
|
20
|
+
return withSignal(ctx.platform, options.signal).collaborator.delete(appIdentity, account.email);
|
|
21
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { JoinSelfOptions } from './join-self.js';
|
|
2
|
+
export { joinSelf, type JoinSelfOptions } from './join-self.js';
|
|
3
|
+
export declare const teamAppExtensions: import("../../../core/extend-resource.js").ResourceExtension<"platform", "teamApp", {
|
|
4
|
+
joinSelf: (appIdentity: string, options?: JoinSelfOptions) => Promise<import("@heroku/types/3.sdk").TeamAppCollaborator>;
|
|
5
|
+
}>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { extendResource } from '../../../core/extend-resource.js';
|
|
2
|
+
import { joinSelf } from './join-self.js';
|
|
3
|
+
export { joinSelf } from './join-self.js';
|
|
4
|
+
export const teamAppExtensions = extendResource('platform', 'teamApp', ctx => ({
|
|
5
|
+
joinSelf: (appIdentity, options) => joinSelf(ctx, appIdentity, options),
|
|
6
|
+
}));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TeamAppCollaborator } from '@heroku/types/3.sdk';
|
|
2
|
+
import type { ResourceCtx } from '../../../core/extend-resource.js';
|
|
3
|
+
export type JoinSelfOptions = {
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
};
|
|
6
|
+
/** Add the authenticated account as a collaborator on a team app. */
|
|
7
|
+
export declare function joinSelf(ctx: Pick<ResourceCtx, 'platform'>, appIdentity: string, options?: JoinSelfOptions): Promise<TeamAppCollaborator>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { withSignal } from '../../../core/with-signal.js';
|
|
2
|
+
/** Add the authenticated account as a collaborator on a team app. */
|
|
3
|
+
export async function joinSelf(ctx, appIdentity, options = {}) {
|
|
4
|
+
options.signal?.throwIfAborted();
|
|
5
|
+
const platform = withSignal(ctx.platform, options.signal);
|
|
6
|
+
const account = await platform.account.info();
|
|
7
|
+
options.signal?.throwIfAborted();
|
|
8
|
+
return platform.teamAppCollaborator.create(appIdentity, { user: account.email });
|
|
9
|
+
}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.12.
|
|
1
|
+
export declare const SDK_VERSION = "0.12.2";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated from package.json by scripts/write-version.mjs (build prebuild). Do not edit.
|
|
2
|
-
export const SDK_VERSION = '0.12.
|
|
2
|
+
export const SDK_VERSION = '0.12.2';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heroku/sdk",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.2",
|
|
4
4
|
"description": "Heroku SDK",
|
|
5
5
|
"author": "Heroku",
|
|
6
6
|
"type": "module",
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"types": "./dist/resources/extensions/platform.d.ts",
|
|
43
43
|
"default": "./dist/resources/extensions/platform.js"
|
|
44
44
|
},
|
|
45
|
+
"./extensions/dashboard-backend": {
|
|
46
|
+
"types": "./dist/resources/extensions/dashboard-backend.d.ts",
|
|
47
|
+
"default": "./dist/resources/extensions/dashboard-backend.js"
|
|
48
|
+
},
|
|
45
49
|
"./extensions/data": {
|
|
46
50
|
"types": "./dist/resources/extensions/data.d.ts",
|
|
47
51
|
"default": "./dist/resources/extensions/data.js"
|