@hs-x/hubspot-cli 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/README.md +3 -0
- package/dist/dev-sessions.d.ts +50 -0
- package/dist/dev-sessions.d.ts.map +1 -0
- package/dist/dev-sessions.js +109 -0
- package/dist/dev-sessions.js.map +1 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +304 -0
- package/dist/index.js.map +1 -0
- package/package.json +35 -0
package/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# @hs-x/hubspot-cli
|
|
2
|
+
|
|
3
|
+
Dev-time counterpart to `@hs-x/hubspot`. Wraps `@hubspot/local-dev-lib`, `@hubspot/project-parsing-lib`, and `@hubspot/ui-extensions-dev-server` to give the HS-X CLI and control-plane executors a developer-account client (project upload/deploy/status, release flags, schema management, card-view migrations) and the HubSpot `dev-sessions` driver. This package pulls in Node built-ins and is **not** Worker-safe; runtime code should keep using `@hs-x/hubspot`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps HubSpot's `projects-localdev/2025-09/dev-sessions` API.
|
|
3
|
+
*
|
|
4
|
+
* Spike verified: third-party callers can drive this with a developer PAK.
|
|
5
|
+
* See docs/phase-1.5/spike-ui-extension-dev-session.md for the handshake.
|
|
6
|
+
*/
|
|
7
|
+
export interface DevSessionPort {
|
|
8
|
+
readonly serverId: string;
|
|
9
|
+
readonly port: number;
|
|
10
|
+
}
|
|
11
|
+
export interface DevSessionRegisterResponse {
|
|
12
|
+
readonly sessionId: number;
|
|
13
|
+
}
|
|
14
|
+
export interface DevSessionsClient {
|
|
15
|
+
register(input: {
|
|
16
|
+
readonly ports: readonly DevSessionPort[];
|
|
17
|
+
}): Promise<DevSessionRegisterResponse>;
|
|
18
|
+
heartbeat(input: {
|
|
19
|
+
readonly sessionId: number;
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
delete(input: {
|
|
22
|
+
readonly sessionId: number;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export interface DevSessionsClientOptions {
|
|
26
|
+
readonly accountId: number;
|
|
27
|
+
/**
|
|
28
|
+
* Override the underlying HTTP client. In production we use
|
|
29
|
+
* `@hubspot/local-dev-lib/http` which reads ~/.hscli/config.yml. In tests
|
|
30
|
+
* inject a fake.
|
|
31
|
+
*/
|
|
32
|
+
readonly httpClient?: DevSessionsHttp;
|
|
33
|
+
}
|
|
34
|
+
export interface DevSessionsHttp {
|
|
35
|
+
post<T>(input: {
|
|
36
|
+
readonly url: string;
|
|
37
|
+
readonly data: unknown;
|
|
38
|
+
}): Promise<{
|
|
39
|
+
data: T;
|
|
40
|
+
}>;
|
|
41
|
+
delete(input: {
|
|
42
|
+
readonly url: string;
|
|
43
|
+
}): Promise<unknown>;
|
|
44
|
+
}
|
|
45
|
+
export declare function createDevSessionsClient(options: DevSessionsClientOptions): Promise<DevSessionsClient>;
|
|
46
|
+
export declare class DevSessionError extends Error {
|
|
47
|
+
readonly code: string;
|
|
48
|
+
constructor(code: string, message: string);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=dev-sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-sessions.d.ts","sourceRoot":"","sources":["../src/dev-sessions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8DH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;KAC3C,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACxC,SAAS,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IACvF,MAAM,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAmC5B;AAeD,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps HubSpot's `projects-localdev/2025-09/dev-sessions` API.
|
|
3
|
+
*
|
|
4
|
+
* Spike verified: third-party callers can drive this with a developer PAK.
|
|
5
|
+
* See docs/phase-1.5/spike-ui-extension-dev-session.md for the handshake.
|
|
6
|
+
*/
|
|
7
|
+
const DEV_SESSIONS_PATH = 'projects-localdev/2025-09/dev-sessions';
|
|
8
|
+
/**
|
|
9
|
+
* Transient-failure retry policy. `@hs-x/types` (http.ts) carries the canonical
|
|
10
|
+
* Effect-based version (`DEFAULT_HTTP_RETRY_SCHEDULE`: 200ms base, 2x), but that
|
|
11
|
+
* helper operates on Effect's `HttpClient` and this module is a plain-Promise
|
|
12
|
+
* wrapper around `@hubspot/local-dev-lib/http`. We mirror the same constants
|
|
13
|
+
* here in a small local helper rather than pull Effect into the dev-session path.
|
|
14
|
+
*/
|
|
15
|
+
const RETRY_ATTEMPTS = 3;
|
|
16
|
+
const RETRY_BASE_MS = 200;
|
|
17
|
+
const RETRY_FACTOR = 2;
|
|
18
|
+
/**
|
|
19
|
+
* Pulls an HTTP status code off whatever the underlying http client threw.
|
|
20
|
+
* `@hubspot/local-dev-lib/http` is axios-backed, so HTTP failures carry
|
|
21
|
+
* `error.response.status`; transport/network failures have no `response`.
|
|
22
|
+
*/
|
|
23
|
+
function statusOf(error) {
|
|
24
|
+
if (typeof error !== 'object' || error === null)
|
|
25
|
+
return undefined;
|
|
26
|
+
const response = error.response;
|
|
27
|
+
if (typeof response !== 'object' || response === null)
|
|
28
|
+
return undefined;
|
|
29
|
+
const status = response.status;
|
|
30
|
+
return typeof status === 'number' ? status : undefined;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Transient = worth retrying: a network/transport error (no HTTP status at all),
|
|
34
|
+
* a 429 rate-limit, or any 5xx. A 4xx with a status (auth/validation) is fatal
|
|
35
|
+
* and must never be retried.
|
|
36
|
+
*/
|
|
37
|
+
function isTransient(error) {
|
|
38
|
+
const status = statusOf(error);
|
|
39
|
+
if (status === undefined)
|
|
40
|
+
return true; // network / transport error
|
|
41
|
+
return status === 429 || status >= 500;
|
|
42
|
+
}
|
|
43
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
44
|
+
/**
|
|
45
|
+
* Runs `op` with exponential backoff, retrying only transient failures.
|
|
46
|
+
* Non-transient errors (and the final attempt's error) propagate unchanged.
|
|
47
|
+
*/
|
|
48
|
+
async function withTransientRetry(op) {
|
|
49
|
+
let attempt = 0;
|
|
50
|
+
for (;;) {
|
|
51
|
+
try {
|
|
52
|
+
return await op();
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
attempt += 1;
|
|
56
|
+
if (attempt >= RETRY_ATTEMPTS || !isTransient(error)) {
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
const delay = RETRY_BASE_MS * RETRY_FACTOR ** (attempt - 1);
|
|
60
|
+
await sleep(delay);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export async function createDevSessionsClient(options) {
|
|
65
|
+
const http = options.httpClient ?? (await defaultDevSessionsHttp(options.accountId));
|
|
66
|
+
return {
|
|
67
|
+
async register(input) {
|
|
68
|
+
const response = await withTransientRetry(() => http.post({
|
|
69
|
+
url: `${DEV_SESSIONS_PATH}/register`,
|
|
70
|
+
data: { ports: input.ports },
|
|
71
|
+
}));
|
|
72
|
+
const sessionId = response.data?.sessionId;
|
|
73
|
+
if (typeof sessionId !== 'number') {
|
|
74
|
+
throw new DevSessionError('HSX_E_DEV_SESSION_REGISTER', 'HubSpot dev-session register did not return a sessionId.');
|
|
75
|
+
}
|
|
76
|
+
return { sessionId };
|
|
77
|
+
},
|
|
78
|
+
async heartbeat({ sessionId }) {
|
|
79
|
+
await withTransientRetry(() => http.post({
|
|
80
|
+
url: `${DEV_SESSIONS_PATH}/${encodeURIComponent(String(sessionId))}/heartbeat`,
|
|
81
|
+
data: {},
|
|
82
|
+
}));
|
|
83
|
+
},
|
|
84
|
+
async delete({ sessionId }) {
|
|
85
|
+
await withTransientRetry(() => http.delete({
|
|
86
|
+
url: `${DEV_SESSIONS_PATH}/${encodeURIComponent(String(sessionId))}`,
|
|
87
|
+
}));
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
async function defaultDevSessionsHttp(accountId) {
|
|
92
|
+
const { http } = await import('@hubspot/local-dev-lib/http');
|
|
93
|
+
return {
|
|
94
|
+
post: ((input) => http.post(accountId, {
|
|
95
|
+
url: input.url,
|
|
96
|
+
data: input.data,
|
|
97
|
+
})),
|
|
98
|
+
delete: ((input) => http.delete(accountId, input)),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export class DevSessionError extends Error {
|
|
102
|
+
code;
|
|
103
|
+
constructor(code, message) {
|
|
104
|
+
super(message);
|
|
105
|
+
this.name = 'DevSessionError';
|
|
106
|
+
this.code = code;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=dev-sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-sessions.js","sourceRoot":"","sources":["../src/dev-sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type HubSpotCreatePropertyRequest, type HubSpotCreateSchemaRequest, type HubSpotMigrateCardViewsRequest, type HubSpotMigrationAppList, type HubSpotObjectSchema, type HubSpotPropertyDefinition, type HubSpotPropertyList, type HubSpotSchemaList, type HubSpotUpdatePropertyRequest } from '@hs-x/hubspot';
|
|
2
|
+
import type { Redacted as RedactedValue } from 'effect/Redacted';
|
|
3
|
+
type SecretString = string | RedactedValue<string>;
|
|
4
|
+
export interface HubSpotDeveloperClientOptions {
|
|
5
|
+
readonly developerAccountId: number | string;
|
|
6
|
+
readonly personalAccessKey?: SecretString;
|
|
7
|
+
readonly developerApiKey?: SecretString;
|
|
8
|
+
readonly adapter?: HubSpotLocalDevAdapter;
|
|
9
|
+
}
|
|
10
|
+
export interface HubSpotDeveloperClient {
|
|
11
|
+
readonly projects: {
|
|
12
|
+
ensureProject(request: HubSpotProjectEnsureRequest): Promise<unknown>;
|
|
13
|
+
upload(request: HubSpotProjectUploadRequest): Promise<HubSpotProjectUploadResult>;
|
|
14
|
+
deployBuild(request: HubSpotProjectDeployRequest): Promise<unknown>;
|
|
15
|
+
getBuildStatus(request: HubSpotProjectBuildStatusRequest): Promise<unknown>;
|
|
16
|
+
getDeployStatus(request: HubSpotProjectDeployStatusRequest): Promise<unknown>;
|
|
17
|
+
resolveAppId(request: HubSpotProjectAppIdRequest): Promise<number>;
|
|
18
|
+
};
|
|
19
|
+
readonly migrations: {
|
|
20
|
+
listApps(): Promise<HubSpotMigrationAppList>;
|
|
21
|
+
migrateCardViews(request: HubSpotMigrateCardViewsRequest): Promise<unknown>;
|
|
22
|
+
};
|
|
23
|
+
readonly schemaManagement: {
|
|
24
|
+
listProperties(request: HubSpotListPropertiesRequest): Promise<HubSpotPropertyList>;
|
|
25
|
+
createProperty(request: HubSpotCreatePropertyRequest): Promise<HubSpotPropertyDefinition>;
|
|
26
|
+
updateProperty(request: HubSpotUpdatePropertyRequest): Promise<HubSpotPropertyDefinition>;
|
|
27
|
+
listSchemas(): Promise<HubSpotSchemaList>;
|
|
28
|
+
createSchema(request: HubSpotCreateSchemaRequest): Promise<HubSpotObjectSchema>;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface HubSpotLocalDevAdapter {
|
|
32
|
+
uploadProject(accountId: number, projectName: string, projectFile: string, uploadMessage: string, platformVersion?: string, intermediateRepresentation?: unknown): Promise<unknown>;
|
|
33
|
+
deployProjectV2(accountId: number, projectName: string, buildId: number, force?: boolean): Promise<unknown>;
|
|
34
|
+
getBuildStatus(accountId: number, projectName: string, buildId: number): Promise<unknown>;
|
|
35
|
+
getDeployStatus(accountId: number, projectName: string, deployId: number): Promise<unknown>;
|
|
36
|
+
fetchProject(accountId: number, projectName: string): Promise<unknown>;
|
|
37
|
+
createProject(accountId: number, projectName: string): Promise<unknown>;
|
|
38
|
+
fetchProjectComponentsMetadata(accountId: number, projectId: number): Promise<unknown>;
|
|
39
|
+
fetchAppMetadataBySourceId(accountId: number, projectId: number, appUid: string): Promise<unknown>;
|
|
40
|
+
fetchAppMetadataByUid(accountId: number, appUid: string): Promise<unknown>;
|
|
41
|
+
listMigrationApps(accountId: number): Promise<HubSpotMigrationAppList>;
|
|
42
|
+
migrateCardViews(accountId: number, request: HubSpotMigrateCardViewsRequest): Promise<unknown>;
|
|
43
|
+
listProperties(accountId: number, objectType: string): Promise<HubSpotPropertyList>;
|
|
44
|
+
createProperty(accountId: number, objectType: string, request: HubSpotCreatePropertyRequest): Promise<HubSpotPropertyDefinition>;
|
|
45
|
+
updateProperty(accountId: number, objectType: string, propertyName: string, request: HubSpotUpdatePropertyRequest): Promise<HubSpotPropertyDefinition>;
|
|
46
|
+
listSchemas(accountId: number): Promise<HubSpotSchemaList>;
|
|
47
|
+
createSchema(accountId: number, request: HubSpotCreateSchemaRequest): Promise<HubSpotObjectSchema>;
|
|
48
|
+
}
|
|
49
|
+
export interface HubSpotProjectUploadRequest {
|
|
50
|
+
readonly projectName: string;
|
|
51
|
+
readonly archivePath: string;
|
|
52
|
+
readonly message: string;
|
|
53
|
+
readonly platformVersion?: string;
|
|
54
|
+
readonly intermediateRepresentation?: unknown;
|
|
55
|
+
}
|
|
56
|
+
export interface HubSpotProjectEnsureRequest {
|
|
57
|
+
readonly projectName: string;
|
|
58
|
+
}
|
|
59
|
+
export interface HubSpotProjectUploadResult {
|
|
60
|
+
readonly buildId: number;
|
|
61
|
+
readonly raw: unknown;
|
|
62
|
+
}
|
|
63
|
+
export interface HubSpotProjectDeployRequest {
|
|
64
|
+
readonly projectName: string;
|
|
65
|
+
readonly buildId: number;
|
|
66
|
+
readonly force?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface HubSpotProjectBuildStatusRequest {
|
|
69
|
+
readonly projectName: string;
|
|
70
|
+
readonly buildId: number;
|
|
71
|
+
}
|
|
72
|
+
export interface HubSpotProjectDeployStatusRequest {
|
|
73
|
+
readonly projectName: string;
|
|
74
|
+
readonly deployId: number;
|
|
75
|
+
}
|
|
76
|
+
export interface HubSpotProjectAppIdRequest {
|
|
77
|
+
readonly projectName: string;
|
|
78
|
+
readonly appUid?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface HubSpotListPropertiesRequest {
|
|
81
|
+
readonly objectType: string;
|
|
82
|
+
}
|
|
83
|
+
export declare function createHubSpotDeveloperClient(options: HubSpotDeveloperClientOptions): HubSpotDeveloperClient;
|
|
84
|
+
export { createDevSessionsClient, DevSessionError, type DevSessionPort, type DevSessionRegisterResponse, type DevSessionsClient, type DevSessionsClientOptions, type DevSessionsHttp, } from './dev-sessions.js';
|
|
85
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { fetchAppMetadataBySourceId, fetchAppMetadataByUid, } from '@hubspot/local-dev-lib/api/appsDev';
|
|
2
|
+
import { createProject, deployProjectV2, fetchProject, fetchProjectComponentsMetadata, getBuildStatus, getDeployStatus, uploadProject, } from '@hubspot/local-dev-lib/api/projects';
|
|
3
|
+
import { http } from '@hubspot/local-dev-lib/http';
|
|
4
|
+
import { readFile } from 'node:fs/promises';
|
|
5
|
+
import { exchangePersonalAccessKey, uploadHubSpotProject, } from '@hs-x/hubspot';
|
|
6
|
+
import { Redacted } from 'effect';
|
|
7
|
+
export function createHubSpotDeveloperClient(options) {
|
|
8
|
+
const accountId = readDeveloperAccountId(options.developerAccountId);
|
|
9
|
+
const adapter = options.adapter ?? defaultHubSpotLocalDevAdapter;
|
|
10
|
+
return {
|
|
11
|
+
projects: {
|
|
12
|
+
async ensureProject(request) {
|
|
13
|
+
try {
|
|
14
|
+
return await withHubSpotDeveloperEnv(options, () => adapter.fetchProject(accountId, request.projectName));
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (!isMissingHubSpotProjectError(error)) {
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
return withHubSpotDeveloperEnv(options, () => adapter.createProject(accountId, request.projectName));
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
async upload(request) {
|
|
24
|
+
// Real deploys (PAK + a component IR) use the portable fetch/FormData/Blob
|
|
25
|
+
// uploader. local-dev-lib's axios + fs.createReadStream multipart produces
|
|
26
|
+
// a malformed body under Bun (HubSpot rejects it with a Jetty 400), and is
|
|
27
|
+
// unusable in workerd for dashboard-driven deploys. The adapter fallback
|
|
28
|
+
// below preserves the local mock / legacy no-IR path used by tests.
|
|
29
|
+
const personalAccessKey = readOptionalSecret(options.personalAccessKey);
|
|
30
|
+
if (personalAccessKey && request.intermediateRepresentation !== undefined) {
|
|
31
|
+
const { accessToken } = await exchangePersonalAccessKey({
|
|
32
|
+
personalAccessKey,
|
|
33
|
+
portalId: accountId,
|
|
34
|
+
});
|
|
35
|
+
const zip = await readFile(request.archivePath);
|
|
36
|
+
const { buildId } = await uploadHubSpotProject({
|
|
37
|
+
accessToken,
|
|
38
|
+
portalId: accountId,
|
|
39
|
+
projectName: request.projectName,
|
|
40
|
+
zip,
|
|
41
|
+
intermediateRepresentation: request.intermediateRepresentation,
|
|
42
|
+
...(request.platformVersion ? { platformVersion: request.platformVersion } : {}),
|
|
43
|
+
buildMessage: request.message,
|
|
44
|
+
});
|
|
45
|
+
return { buildId, raw: { buildId, createdBuildId: buildId } };
|
|
46
|
+
}
|
|
47
|
+
const raw = await withHubSpotDeveloperEnv(options, () => adapter.uploadProject(accountId, request.projectName, request.archivePath, request.message, request.platformVersion, request.intermediateRepresentation));
|
|
48
|
+
return { buildId: readBuildId(raw), raw };
|
|
49
|
+
},
|
|
50
|
+
deployBuild(request) {
|
|
51
|
+
return withHubSpotDeveloperEnv(options, () => adapter.deployProjectV2(accountId, request.projectName, request.buildId, request.force));
|
|
52
|
+
},
|
|
53
|
+
getBuildStatus(request) {
|
|
54
|
+
return withHubSpotDeveloperEnv(options, () => adapter.getBuildStatus(accountId, request.projectName, request.buildId));
|
|
55
|
+
},
|
|
56
|
+
getDeployStatus(request) {
|
|
57
|
+
return withHubSpotDeveloperEnv(options, () => adapter.getDeployStatus(accountId, request.projectName, request.deployId));
|
|
58
|
+
},
|
|
59
|
+
async resolveAppId(request) {
|
|
60
|
+
const project = await withHubSpotDeveloperEnv(options, () => adapter.fetchProject(accountId, request.projectName));
|
|
61
|
+
const projectAppId = readAppIdFromProjectRecord(project);
|
|
62
|
+
if (projectAppId !== undefined) {
|
|
63
|
+
return projectAppId;
|
|
64
|
+
}
|
|
65
|
+
const projectId = readNumericProperty(project, 'id');
|
|
66
|
+
if (projectId === undefined) {
|
|
67
|
+
throw new Error('HubSpot project lookup response did not include a project id.');
|
|
68
|
+
}
|
|
69
|
+
if (request.appUid) {
|
|
70
|
+
const projectScopedApp = await withHubSpotDeveloperEnv(options, () => adapter.fetchAppMetadataBySourceId(accountId, projectId, request.appUid));
|
|
71
|
+
const projectScopedAppId = readNumericProperty(projectScopedApp, 'id');
|
|
72
|
+
if (projectScopedAppId !== undefined) {
|
|
73
|
+
return projectScopedAppId;
|
|
74
|
+
}
|
|
75
|
+
const portalScopedApp = await withHubSpotDeveloperEnv(options, () => adapter.fetchAppMetadataByUid(accountId, request.appUid));
|
|
76
|
+
const portalScopedAppId = readNumericProperty(portalScopedApp, 'id');
|
|
77
|
+
if (portalScopedAppId !== undefined) {
|
|
78
|
+
return portalScopedAppId;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const metadata = await withHubSpotDeveloperEnv(options, () => adapter.fetchProjectComponentsMetadata(accountId, projectId));
|
|
82
|
+
return readAppIdFromProjectComponentsMetadata(metadata);
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
migrations: {
|
|
86
|
+
listApps() {
|
|
87
|
+
return withHubSpotDeveloperEnv(options, () => adapter.listMigrationApps(accountId));
|
|
88
|
+
},
|
|
89
|
+
migrateCardViews(request) {
|
|
90
|
+
return withHubSpotDeveloperEnv(options, () => adapter.migrateCardViews(accountId, request));
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
schemaManagement: {
|
|
94
|
+
listProperties(request) {
|
|
95
|
+
return withHubSpotDeveloperEnv(options, () => adapter.listProperties(accountId, request.objectType));
|
|
96
|
+
},
|
|
97
|
+
createProperty(request) {
|
|
98
|
+
return withHubSpotDeveloperEnv(options, () => adapter.createProperty(accountId, request.objectType, request));
|
|
99
|
+
},
|
|
100
|
+
updateProperty(request) {
|
|
101
|
+
return withHubSpotDeveloperEnv(options, () => adapter.updateProperty(accountId, request.objectType, request.propertyName, request));
|
|
102
|
+
},
|
|
103
|
+
listSchemas() {
|
|
104
|
+
return withHubSpotDeveloperEnv(options, () => adapter.listSchemas(accountId));
|
|
105
|
+
},
|
|
106
|
+
createSchema(request) {
|
|
107
|
+
return withHubSpotDeveloperEnv(options, () => adapter.createSchema(accountId, request));
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const defaultHubSpotLocalDevAdapter = {
|
|
113
|
+
async uploadProject(...args) {
|
|
114
|
+
return (await uploadProject(...args)).data;
|
|
115
|
+
},
|
|
116
|
+
async deployProjectV2(...args) {
|
|
117
|
+
return (await deployProjectV2(...args)).data;
|
|
118
|
+
},
|
|
119
|
+
async getBuildStatus(...args) {
|
|
120
|
+
return (await getBuildStatus(...args)).data;
|
|
121
|
+
},
|
|
122
|
+
async getDeployStatus(...args) {
|
|
123
|
+
return (await getDeployStatus(...args)).data;
|
|
124
|
+
},
|
|
125
|
+
async fetchProject(...args) {
|
|
126
|
+
return (await fetchProject(...args)).data;
|
|
127
|
+
},
|
|
128
|
+
async createProject(...args) {
|
|
129
|
+
return (await createProject(...args)).data;
|
|
130
|
+
},
|
|
131
|
+
async fetchProjectComponentsMetadata(...args) {
|
|
132
|
+
return (await fetchProjectComponentsMetadata(...args)).data;
|
|
133
|
+
},
|
|
134
|
+
async fetchAppMetadataBySourceId(accountId, projectId, appUid) {
|
|
135
|
+
return (await fetchAppMetadataBySourceId(projectId, appUid, accountId)).data;
|
|
136
|
+
},
|
|
137
|
+
async fetchAppMetadataByUid(accountId, appUid) {
|
|
138
|
+
return (await fetchAppMetadataByUid(appUid, accountId)).data;
|
|
139
|
+
},
|
|
140
|
+
async listMigrationApps(accountId) {
|
|
141
|
+
return (await http.get(accountId, {
|
|
142
|
+
url: 'dfs/migrations/v2/list-apps',
|
|
143
|
+
})).data;
|
|
144
|
+
},
|
|
145
|
+
async migrateCardViews(accountId, request) {
|
|
146
|
+
const data = request.helpDeskAppCardId === undefined
|
|
147
|
+
? {
|
|
148
|
+
legacyCrmCardId: request.legacyCrmCardId,
|
|
149
|
+
replacementAppCardId: request.replacementAppCardId,
|
|
150
|
+
}
|
|
151
|
+
: {
|
|
152
|
+
legacyCrmCardId: request.legacyCrmCardId,
|
|
153
|
+
replacementAppCardId: request.replacementAppCardId,
|
|
154
|
+
helpDeskAppCardId: request.helpDeskAppCardId,
|
|
155
|
+
};
|
|
156
|
+
return (await http.post(accountId, {
|
|
157
|
+
url: `crm/v3/extensions/cards-dev/${request.appId}/views/migrate`,
|
|
158
|
+
data,
|
|
159
|
+
headers: { 'Content-Type': 'application/json' },
|
|
160
|
+
})).data;
|
|
161
|
+
},
|
|
162
|
+
async listProperties(accountId, objectType) {
|
|
163
|
+
return (await http.get(accountId, {
|
|
164
|
+
url: `crm/v3/properties/${encodeURIComponent(objectType)}`,
|
|
165
|
+
})).data;
|
|
166
|
+
},
|
|
167
|
+
async createProperty(accountId, objectType, request) {
|
|
168
|
+
return (await http.post(accountId, {
|
|
169
|
+
url: `crm/v3/properties/${encodeURIComponent(objectType)}`,
|
|
170
|
+
data: propertyCreateBody(request),
|
|
171
|
+
headers: { 'Content-Type': 'application/json' },
|
|
172
|
+
})).data;
|
|
173
|
+
},
|
|
174
|
+
async updateProperty(accountId, objectType, propertyName, request) {
|
|
175
|
+
return (await http.patch(accountId, {
|
|
176
|
+
url: `crm/v3/properties/${encodeURIComponent(objectType)}/${encodeURIComponent(propertyName)}`,
|
|
177
|
+
data: propertyUpdateBody(request),
|
|
178
|
+
headers: { 'Content-Type': 'application/json' },
|
|
179
|
+
})).data;
|
|
180
|
+
},
|
|
181
|
+
async listSchemas(accountId) {
|
|
182
|
+
return (await http.get(accountId, {
|
|
183
|
+
url: 'crm/v3/schemas',
|
|
184
|
+
})).data;
|
|
185
|
+
},
|
|
186
|
+
async createSchema(accountId, request) {
|
|
187
|
+
return (await http.post(accountId, {
|
|
188
|
+
url: 'crm/v3/schemas',
|
|
189
|
+
data: request,
|
|
190
|
+
headers: { 'Content-Type': 'application/json' },
|
|
191
|
+
})).data;
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
function propertyCreateBody(request) {
|
|
195
|
+
return {
|
|
196
|
+
name: request.name,
|
|
197
|
+
label: request.label,
|
|
198
|
+
type: request.type,
|
|
199
|
+
...(request.fieldType ? { fieldType: request.fieldType } : {}),
|
|
200
|
+
...(request.groupName ? { groupName: request.groupName } : {}),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function propertyUpdateBody(request) {
|
|
204
|
+
return {
|
|
205
|
+
...(request.label ? { label: request.label } : {}),
|
|
206
|
+
...(request.type ? { type: request.type } : {}),
|
|
207
|
+
...(request.fieldType ? { fieldType: request.fieldType } : {}),
|
|
208
|
+
...(request.groupName ? { groupName: request.groupName } : {}),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function readDeveloperAccountId(accountId) {
|
|
212
|
+
const parsed = typeof accountId === 'number' ? accountId : Number.parseInt(accountId, 10);
|
|
213
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
214
|
+
throw new Error(`HubSpot developer account id must be a positive integer, received ${accountId}.`);
|
|
215
|
+
}
|
|
216
|
+
return parsed;
|
|
217
|
+
}
|
|
218
|
+
function readBuildId(value) {
|
|
219
|
+
if (isRecord(value) && typeof value.buildId === 'number') {
|
|
220
|
+
return value.buildId;
|
|
221
|
+
}
|
|
222
|
+
if (isRecord(value) && typeof value.createdBuildId === 'number') {
|
|
223
|
+
return value.createdBuildId;
|
|
224
|
+
}
|
|
225
|
+
throw new Error('HubSpot project upload response did not include a build id.');
|
|
226
|
+
}
|
|
227
|
+
function readAppIdFromProjectComponentsMetadata(value) {
|
|
228
|
+
if (!isRecord(value) || !Array.isArray(value.topLevelComponentMetadata)) {
|
|
229
|
+
throw new Error('HubSpot project metadata response did not include component metadata.');
|
|
230
|
+
}
|
|
231
|
+
for (const component of value.topLevelComponentMetadata) {
|
|
232
|
+
if (!isRecord(component) || !isRecord(component.deployOutput)) {
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
const appId = readNumericProperty(component.deployOutput, 'appId');
|
|
236
|
+
if (appId !== undefined) {
|
|
237
|
+
return appId;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
throw new Error('HubSpot project metadata response did not include a deployed app id.');
|
|
241
|
+
}
|
|
242
|
+
function readAppIdFromProjectRecord(value) {
|
|
243
|
+
if (!isRecord(value)) {
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
for (const buildKey of ['deployedBuild', 'latestBuild']) {
|
|
247
|
+
const build = value[buildKey];
|
|
248
|
+
if (!isRecord(build) || !Array.isArray(build.subbuildStatuses)) {
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
for (const subbuild of build.subbuildStatuses) {
|
|
252
|
+
const output = isRecord(subbuild) ? subbuild.deployOutput : undefined;
|
|
253
|
+
const appId = readNumericProperty(output, 'appId');
|
|
254
|
+
if (appId !== undefined) {
|
|
255
|
+
return appId;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
function isMissingHubSpotProjectError(error) {
|
|
262
|
+
if (!(error instanceof Error)) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
return /project .*does not exist|project not found|not found/i.test(error.message);
|
|
266
|
+
}
|
|
267
|
+
function readNumericProperty(value, key) {
|
|
268
|
+
return isRecord(value) && typeof value[key] === 'number' ? value[key] : undefined;
|
|
269
|
+
}
|
|
270
|
+
async function withHubSpotDeveloperEnv(options, operation) {
|
|
271
|
+
if (!options.personalAccessKey) {
|
|
272
|
+
return operation();
|
|
273
|
+
}
|
|
274
|
+
const previousAccountId = process.env.HUBSPOT_ACCOUNT_ID;
|
|
275
|
+
const previousPak = process.env.HUBSPOT_PERSONAL_ACCESS_KEY;
|
|
276
|
+
process.env.HUBSPOT_ACCOUNT_ID = String(options.developerAccountId);
|
|
277
|
+
process.env.HUBSPOT_PERSONAL_ACCESS_KEY = readSecret(options.personalAccessKey);
|
|
278
|
+
try {
|
|
279
|
+
return await operation();
|
|
280
|
+
}
|
|
281
|
+
finally {
|
|
282
|
+
restoreEnv('HUBSPOT_ACCOUNT_ID', previousAccountId);
|
|
283
|
+
restoreEnv('HUBSPOT_PERSONAL_ACCESS_KEY', previousPak);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function readOptionalSecret(value) {
|
|
287
|
+
return value === undefined ? undefined : readSecret(value);
|
|
288
|
+
}
|
|
289
|
+
function readSecret(value) {
|
|
290
|
+
return Redacted.isRedacted(value) ? Redacted.value(value) : value;
|
|
291
|
+
}
|
|
292
|
+
function restoreEnv(name, value) {
|
|
293
|
+
if (value === undefined) {
|
|
294
|
+
delete process.env[name];
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
process.env[name] = value;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function isRecord(value) {
|
|
301
|
+
return typeof value === 'object' && value !== null;
|
|
302
|
+
}
|
|
303
|
+
export { createDevSessionsClient, DevSessionError, } from './dev-sessions.js';
|
|
304
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hs-x/hubspot-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Dev-time HubSpot developer-account client and dev-session driver. Counterpart to @hs-x/hubspot — wraps @hubspot/local-dev-lib for CLI and control-plane executors.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc -b",
|
|
20
|
+
"clean": "tsc -b --clean"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/node": "^25.8.0"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@hs-x/hubspot": "0.1.0",
|
|
30
|
+
"@hubspot/local-dev-lib": "5.7.0",
|
|
31
|
+
"@hubspot/project-parsing-lib": "0.16.0",
|
|
32
|
+
"@hubspot/ui-extensions-dev-server": "2.0.7",
|
|
33
|
+
"effect": "^3.10.19"
|
|
34
|
+
}
|
|
35
|
+
}
|