@hs-x/cli 0.2.6 → 0.3.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/LICENSE +202 -0
- package/README.md +25 -8
- package/dist/audit-interactive.d.ts +29 -0
- package/dist/audit-interactive.d.ts.map +1 -0
- package/dist/audit-interactive.js +156 -0
- package/dist/audit-interactive.js.map +1 -0
- package/dist/bin/hs-x.js.map +1 -1
- package/dist/checkpoint-interactive.d.ts +24 -0
- package/dist/checkpoint-interactive.d.ts.map +1 -0
- package/dist/checkpoint-interactive.js +65 -0
- package/dist/checkpoint-interactive.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +266 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/kit.d.ts +1 -1
- package/dist/cli/kit.d.ts.map +1 -1
- package/dist/cli/kit.js +19 -3
- package/dist/cli/kit.js.map +1 -1
- package/dist/cloudflare-auth.d.ts +8 -0
- package/dist/cloudflare-auth.d.ts.map +1 -1
- package/dist/cloudflare-auth.js +12 -2
- package/dist/cloudflare-auth.js.map +1 -1
- package/dist/cloudflare-oauth-store.d.ts +9 -1
- package/dist/cloudflare-oauth-store.d.ts.map +1 -1
- package/dist/cloudflare-oauth-store.js +23 -4
- package/dist/cloudflare-oauth-store.js.map +1 -1
- package/dist/cloudflare-oauth.d.ts +1 -0
- package/dist/cloudflare-oauth.d.ts.map +1 -1
- package/dist/cloudflare-oauth.js +6 -2
- package/dist/cloudflare-oauth.js.map +1 -1
- package/dist/cloudflare-worker-versions.d.ts +184 -0
- package/dist/cloudflare-worker-versions.d.ts.map +1 -0
- package/dist/cloudflare-worker-versions.js +360 -0
- package/dist/cloudflare-worker-versions.js.map +1 -0
- package/dist/commands/account.d.ts +28 -13
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +219 -69
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/api.d.ts +1 -1
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +6 -10
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +13 -7
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +239 -125
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/control-plane-read.d.ts +72 -11
- package/dist/commands/control-plane-read.d.ts.map +1 -1
- package/dist/commands/control-plane-read.js +1035 -58
- package/dist/commands/control-plane-read.js.map +1 -1
- package/dist/commands/deploy-promote.d.ts +25 -3
- package/dist/commands/deploy-promote.d.ts.map +1 -1
- package/dist/commands/deploy-promote.js +314 -38
- package/dist/commands/deploy-promote.js.map +1 -1
- package/dist/commands/deploy.d.ts +67 -4
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +1333 -255
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +5 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +502 -107
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +15 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +131 -20
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/flags.d.ts +108 -6
- package/dist/commands/flags.d.ts.map +1 -1
- package/dist/commands/flags.js +996 -75
- package/dist/commands/flags.js.map +1 -1
- package/dist/commands/help-command.d.ts +14 -0
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +144 -44
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/history.js +14 -10
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts +4 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +69 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/link.d.ts +2 -3
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +201 -101
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/login.d.ts +2 -2
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +22 -5
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/migrate.d.ts +23 -3
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +500 -73
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/rollback.d.ts +42 -2
- package/dist/commands/rollback.d.ts.map +1 -1
- package/dist/commands/rollback.js +422 -58
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/secrets.d.ts +76 -3
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +328 -41
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/status.d.ts +13 -2
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +154 -17
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/unlink.d.ts +2 -2
- package/dist/commands/unlink.d.ts.map +1 -1
- package/dist/commands/unlink.js +2 -2
- package/dist/commands/unlink.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +4 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.d.ts +12 -3
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +70 -8
- package/dist/commands/validate.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/control-plane-fetch.d.ts.map +1 -1
- package/dist/control-plane-fetch.js +5 -4
- package/dist/control-plane-fetch.js.map +1 -1
- package/dist/deploy-revision-capture.d.ts +48 -0
- package/dist/deploy-revision-capture.d.ts.map +1 -0
- package/dist/deploy-revision-capture.js +125 -0
- package/dist/deploy-revision-capture.js.map +1 -0
- package/dist/dev/compat-shim.d.ts.map +1 -1
- package/dist/dev/compat-shim.js +10 -35
- package/dist/dev/compat-shim.js.map +1 -1
- package/dist/dev/event-bus.d.ts +5 -2
- package/dist/dev/event-bus.d.ts.map +1 -1
- package/dist/dev/event-bus.js +4 -1
- package/dist/dev/event-bus.js.map +1 -1
- package/dist/dev/hubspot-logs-poller.d.ts +35 -0
- package/dist/dev/hubspot-logs-poller.d.ts.map +1 -0
- package/dist/dev/hubspot-logs-poller.js +94 -0
- package/dist/dev/hubspot-logs-poller.js.map +1 -0
- package/dist/dev/invoke.d.ts +9 -1
- package/dist/dev/invoke.d.ts.map +1 -1
- package/dist/dev/invoke.js +69 -20
- package/dist/dev/invoke.js.map +1 -1
- package/dist/dev/keyboard.d.ts +31 -0
- package/dist/dev/keyboard.d.ts.map +1 -0
- package/dist/dev/keyboard.js +143 -0
- package/dist/dev/keyboard.js.map +1 -0
- package/dist/dev/log-server.d.ts +7 -0
- package/dist/dev/log-server.d.ts.map +1 -1
- package/dist/dev/log-server.js +68 -31
- package/dist/dev/log-server.js.map +1 -1
- package/dist/dev/migrated-card.d.ts +17 -0
- package/dist/dev/migrated-card.d.ts.map +1 -0
- package/dist/dev/migrated-card.js +114 -0
- package/dist/dev/migrated-card.js.map +1 -0
- package/dist/dev/stream-filter.d.ts +40 -0
- package/dist/dev/stream-filter.d.ts.map +1 -0
- package/dist/dev/stream-filter.js +93 -0
- package/dist/dev/stream-filter.js.map +1 -0
- package/dist/dev/stream-renderer.d.ts +34 -0
- package/dist/dev/stream-renderer.d.ts.map +1 -1
- package/dist/dev/stream-renderer.js +222 -8
- package/dist/dev/stream-renderer.js.map +1 -1
- package/dist/errors-registry.d.ts.map +1 -1
- package/dist/errors-registry.js +280 -36
- package/dist/errors-registry.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +8 -0
- package/dist/help.js.map +1 -1
- package/dist/hubspot-app-logs.d.ts +76 -0
- package/dist/hubspot-app-logs.d.ts.map +1 -0
- package/dist/hubspot-app-logs.js +323 -0
- package/dist/hubspot-app-logs.js.map +1 -0
- package/dist/hubspot-auth.d.ts +8 -2
- package/dist/hubspot-auth.d.ts.map +1 -1
- package/dist/hubspot-auth.js +36 -12
- package/dist/hubspot-auth.js.map +1 -1
- package/dist/hubspot-developer-client.js +119 -11
- package/dist/hubspot-developer-client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init/templates.d.ts +10 -0
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +157 -14
- package/dist/init/templates.js.map +1 -1
- package/dist/link-migration-journal.d.ts +131 -0
- package/dist/link-migration-journal.d.ts.map +1 -0
- package/dist/link-migration-journal.js +395 -0
- package/dist/link-migration-journal.js.map +1 -0
- package/dist/link-preflight.d.ts +78 -0
- package/dist/link-preflight.d.ts.map +1 -0
- package/dist/link-preflight.js +231 -0
- package/dist/link-preflight.js.map +1 -0
- package/dist/local-project-picker.d.ts +34 -0
- package/dist/local-project-picker.d.ts.map +1 -0
- package/dist/local-project-picker.js +121 -0
- package/dist/local-project-picker.js.map +1 -0
- package/dist/logs-interactive.d.ts +37 -0
- package/dist/logs-interactive.d.ts.map +1 -0
- package/dist/logs-interactive.js +110 -0
- package/dist/logs-interactive.js.map +1 -0
- package/dist/output-context.d.ts +13 -0
- package/dist/output-context.d.ts.map +1 -0
- package/dist/output-context.js +46 -0
- package/dist/output-context.js.map +1 -0
- package/dist/project-context.d.ts +55 -0
- package/dist/project-context.d.ts.map +1 -0
- package/dist/project-context.js +115 -0
- package/dist/project-context.js.map +1 -0
- package/dist/project-picker.d.ts +65 -0
- package/dist/project-picker.d.ts.map +1 -0
- package/dist/project-picker.js +227 -0
- package/dist/project-picker.js.map +1 -0
- package/dist/prompt.d.ts +8 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +81 -13
- package/dist/prompt.js.map +1 -1
- package/dist/reporter/human.d.ts +10 -2
- package/dist/reporter/human.d.ts.map +1 -1
- package/dist/reporter/human.js +82 -14
- package/dist/reporter/human.js.map +1 -1
- package/dist/reporter/index.d.ts.map +1 -1
- package/dist/reporter/index.js +7 -5
- package/dist/reporter/index.js.map +1 -1
- package/dist/reporter/json.d.ts +2 -1
- package/dist/reporter/json.d.ts.map +1 -1
- package/dist/reporter/json.js +10 -7
- package/dist/reporter/json.js.map +1 -1
- package/dist/reporter/style.d.ts +19 -0
- package/dist/reporter/style.d.ts.map +1 -1
- package/dist/reporter/style.js +126 -6
- package/dist/reporter/style.js.map +1 -1
- package/dist/reporter/types.d.ts +34 -4
- package/dist/reporter/types.d.ts.map +1 -1
- package/dist/reporter/types.js.map +1 -1
- package/dist/rollback-traffic.d.ts +85 -0
- package/dist/rollback-traffic.d.ts.map +1 -0
- package/dist/rollback-traffic.js +204 -0
- package/dist/rollback-traffic.js.map +1 -0
- package/dist/services/account-store.d.ts +3 -1
- package/dist/services/account-store.d.ts.map +1 -1
- package/dist/services/account-store.js +2 -1
- package/dist/services/account-store.js.map +1 -1
- package/dist/services/app-paths.d.ts.map +1 -1
- package/dist/services/app-paths.js +3 -1
- package/dist/services/app-paths.js.map +1 -1
- package/dist/services/cloudflare-auth.d.ts +1 -1
- package/dist/services/cloudflare-auth.d.ts.map +1 -1
- package/dist/services/cloudflare-auth.js +2 -2
- package/dist/services/cloudflare-auth.js.map +1 -1
- package/dist/services/cloudflare-kv.d.ts.map +1 -1
- package/dist/services/cloudflare-kv.js.map +1 -1
- package/dist/services/command-history.d.ts.map +1 -1
- package/dist/services/command-history.js.map +1 -1
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +1 -1
- package/dist/services/config.js.map +1 -1
- package/dist/services/control-plane.d.ts.map +1 -1
- package/dist/services/control-plane.js +3 -3
- package/dist/services/control-plane.js.map +1 -1
- package/dist/services/env-loader.d.ts.map +1 -1
- package/dist/services/env-loader.js +1 -3
- package/dist/services/env-loader.js.map +1 -1
- package/dist/services/http.d.ts.map +1 -1
- package/dist/services/http.js.map +1 -1
- package/dist/services/hubspot-dev-client.d.ts.map +1 -1
- package/dist/services/hubspot-dev-client.js +30 -0
- package/dist/services/hubspot-dev-client.js.map +1 -1
- package/dist/services/live.d.ts +2 -2
- package/dist/services/live.d.ts.map +1 -1
- package/dist/services/live.js +1 -1
- package/dist/services/live.js.map +1 -1
- package/dist/services/machine-id.d.ts.map +1 -1
- package/dist/services/machine-id.js.map +1 -1
- package/dist/services/reporter.d.ts +8 -5
- package/dist/services/reporter.d.ts.map +1 -1
- package/dist/services/reporter.js +6 -4
- package/dist/services/reporter.js.map +1 -1
- package/dist/services/tenant-state.d.ts.map +1 -1
- package/dist/services/tenant-state.js.map +1 -1
- package/dist/state-store.d.ts +4 -0
- package/dist/state-store.d.ts.map +1 -1
- package/dist/state-store.js +15 -0
- package/dist/state-store.js.map +1 -1
- package/dist/status-drilldown.d.ts +24 -0
- package/dist/status-drilldown.d.ts.map +1 -0
- package/dist/status-drilldown.js +50 -0
- package/dist/status-drilldown.js.map +1 -0
- package/dist/tenant-state.d.ts.map +1 -1
- package/dist/tenant-state.js +3 -2
- package/dist/tenant-state.js.map +1 -1
- package/dist/token-key-custody.d.ts +91 -0
- package/dist/token-key-custody.d.ts.map +1 -0
- package/dist/token-key-custody.js +375 -0
- package/dist/token-key-custody.js.map +1 -0
- package/package.json +13 -14
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import * as Command from '@effect/cli/Command';
|
|
2
2
|
import { HttpClientRequest, Schema, schemas } from '@hs-x/types';
|
|
3
3
|
import { Config, Effect, Option } from 'effect';
|
|
4
|
-
import { isLinked } from '../account-store.js';
|
|
5
|
-
import { CliError, cliError } from '../cli-error.js';
|
|
6
|
-
import { accountIdOption, controlPlaneUrlOption, deployIdOption, jsonOption, projectIdOption, runHandler, userIdOption, } from '../cli/kit.js';
|
|
4
|
+
import { isLinked, loadStore } from '../account-store.js';
|
|
5
|
+
import { CliError, cliError, exitWith } from '../cli-error.js';
|
|
6
|
+
import { accountIdOption, controlPlaneUrlOption, cwdOption, deployIdOption, forceOption, jsonOption, projectIdOption, runHandler, userIdOption, yesOption, } from '../cli/kit.js';
|
|
7
7
|
import { controlPlaneAuthHeaders } from '../control-plane-fetch.js';
|
|
8
8
|
import { executeCliHttp } from '../effect-http.js';
|
|
9
|
+
import { readLocalProjectContext, resolveProjectId } from '../project-context.js';
|
|
10
|
+
import { ProjectPickerCancelled, discoverProjects, resolveAccountId, resolveProjectSelection, } from '../project-picker.js';
|
|
11
|
+
import { isInteractive, promptConfirm, promptSelect } from '../prompt.js';
|
|
9
12
|
import { createReporter } from '../reporter/index.js';
|
|
10
13
|
import { AccountStore } from '../services/account-store.js';
|
|
11
14
|
import { ControlPlaneClient } from '../services/control-plane.js';
|
|
15
|
+
import { Cwd } from '../services/cwd.js';
|
|
12
16
|
import { CliHttp } from '../services/http.js';
|
|
13
17
|
import { Reporter } from '../services/reporter.js';
|
|
14
18
|
const UNLINKED_PROMOTE_HINT = 'Promote is a linked-mode operation tied to control-plane revisioned routing. Unlinked deploys become active automatically when they succeed. Run `hs-x link` to enable the staged promote workflow, or use `hs-x rollback --deploy-id <id>` to move the active pointer in tenant state.';
|
|
@@ -26,17 +30,21 @@ const UNLINKED_PROMOTE_HINT = 'Promote is a linked-mode operation tied to contro
|
|
|
26
30
|
// so the JSON branches write verbatim via sync stdout writes.
|
|
27
31
|
// TODO(phase-5): reconcile these bespoke payloads with the standard envelope.
|
|
28
32
|
export const promoteCmd = Command.make('promote', {
|
|
33
|
+
cwd: cwdOption,
|
|
29
34
|
json: jsonOption,
|
|
30
35
|
deployId: deployIdOption,
|
|
31
36
|
accountId: accountIdOption,
|
|
32
37
|
projectId: projectIdOption,
|
|
33
38
|
controlPlaneUrl: controlPlaneUrlOption,
|
|
34
39
|
userId: userIdOption,
|
|
40
|
+
force: forceOption,
|
|
41
|
+
yes: yesOption,
|
|
35
42
|
}, (opts) => runHandler('promote', { json: opts.json }, promoteBody(opts)));
|
|
36
43
|
function promoteBody(opts) {
|
|
37
44
|
return Effect.gen(function* () {
|
|
38
45
|
const store = yield* AccountStore;
|
|
39
46
|
const controlPlane = yield* ControlPlaneClient;
|
|
47
|
+
const http = yield* CliHttp;
|
|
40
48
|
const reporter = yield* Reporter;
|
|
41
49
|
const commandName = 'promote';
|
|
42
50
|
const envControlPlaneUrl = yield* Config.string('HSX_CONTROL_PLANE_URL').pipe(Config.withDefault(''), Effect.orDie);
|
|
@@ -66,16 +74,89 @@ function promoteBody(opts) {
|
|
|
66
74
|
exitCode: 10,
|
|
67
75
|
}));
|
|
68
76
|
}
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const controlPlaneUrl = explicitControlPlaneUrl;
|
|
73
|
-
if (!deployId || !accountId || !projectId || !controlPlaneUrl) {
|
|
74
|
-
return yield* Effect.fail(cliError('HSX_E_INTERNAL', 'Linked deploy promotion requires --deploy-id, --account-id/HSX_ACCOUNT_ID, --project-id/HSX_PROJECT_ID, and --control-plane-url/HSX_CONTROL_PLANE_URL.'));
|
|
77
|
+
const interactive = !opts.json && reporter.mode !== 'ndjson' && isInteractive();
|
|
78
|
+
if (!opts.yes && !interactive) {
|
|
79
|
+
return yield* Effect.fail(cliError('HSX_E_INPUT_INVALID', 'Promote requires explicit consent in machine or non-interactive mode. Re-run with --yes.'));
|
|
75
80
|
}
|
|
76
|
-
const
|
|
81
|
+
const cwd = yield* Cwd;
|
|
82
|
+
const root = Option.getOrElse(opts.cwd, () => cwd);
|
|
83
|
+
const local = yield* Effect.promise(() => readLocalProjectContext(root));
|
|
84
|
+
const stored = yield* store.load;
|
|
85
|
+
const envAccountId = yield* configString('HSX_ACCOUNT_ID');
|
|
86
|
+
const explicitAccountId = Option.getOrUndefined(opts.accountId);
|
|
87
|
+
const accountId = resolveAccountId({
|
|
88
|
+
...(explicitAccountId ? { explicitAccountId } : {}),
|
|
89
|
+
...(envAccountId ? { envAccountId } : {}),
|
|
90
|
+
...(local.projectBinding?.accountId
|
|
91
|
+
? { localAccountId: local.projectBinding.accountId }
|
|
92
|
+
: {}),
|
|
93
|
+
...(stored.defaultAccountId ? { defaultAccountId: stored.defaultAccountId } : {}),
|
|
94
|
+
});
|
|
95
|
+
const envProjectId = yield* configString('HSX_PROJECT_ID');
|
|
96
|
+
let projectId = resolveProjectId({
|
|
97
|
+
explicit: Option.getOrUndefined(opts.projectId),
|
|
98
|
+
env: envProjectId || undefined,
|
|
99
|
+
local,
|
|
100
|
+
})?.value;
|
|
101
|
+
let deployId = Option.getOrUndefined(opts.deployId);
|
|
102
|
+
const controlPlaneUrl = explicitControlPlaneUrl;
|
|
103
|
+
const userIdEnv = yield* configString('HSX_USER_ID');
|
|
77
104
|
const userId = Option.getOrUndefined(opts.userId) ?? (userIdEnv || 'local-cli-user');
|
|
105
|
+
if (!accountId || !controlPlaneUrl || (!projectId && !interactive)) {
|
|
106
|
+
return yield* Effect.fail(missingPromoteContext());
|
|
107
|
+
}
|
|
78
108
|
const headers = yield* controlPlane.authHeaders(userId);
|
|
109
|
+
if (!projectId) {
|
|
110
|
+
const projects = yield* Effect.tryPromise({
|
|
111
|
+
try: () => discoverProjects({
|
|
112
|
+
accountId,
|
|
113
|
+
controlPlane: controlPlaneAdapter({
|
|
114
|
+
controlPlaneUrl,
|
|
115
|
+
headers,
|
|
116
|
+
execute: (request) => Effect.runPromise(http.execute(request)),
|
|
117
|
+
}),
|
|
118
|
+
}),
|
|
119
|
+
catch: (cause) => cliError('HSX_E_INTERNAL', errorMessage(cause)),
|
|
120
|
+
});
|
|
121
|
+
const selected = yield* Effect.tryPromise({
|
|
122
|
+
try: () => resolveProjectSelection({
|
|
123
|
+
accountId,
|
|
124
|
+
projects,
|
|
125
|
+
allowPrompt: true,
|
|
126
|
+
prompts: { select: promptSelect },
|
|
127
|
+
message: 'Which project should be promoted?',
|
|
128
|
+
}),
|
|
129
|
+
catch: (cause) => cause,
|
|
130
|
+
}).pipe(Effect.catchIf((cause) => cause instanceof ProjectPickerCancelled, () => cancelPromote(reporter)), Effect.mapError((cause) => cause instanceof CliError ? cause : cliError('HSX_E_INTERNAL', errorMessage(cause))));
|
|
131
|
+
projectId = selected.id;
|
|
132
|
+
}
|
|
133
|
+
let reads;
|
|
134
|
+
if (!deployId || (!opts.yes && interactive)) {
|
|
135
|
+
reads = yield* fetchPromotionReadsEff({ controlPlaneUrl, projectId, headers });
|
|
136
|
+
}
|
|
137
|
+
if (!deployId && reads?.revisions) {
|
|
138
|
+
deployId = yield* Effect.tryPromise({
|
|
139
|
+
try: () => selectPromoteRevision(reads.revisions),
|
|
140
|
+
catch: (cause) => cause,
|
|
141
|
+
}).pipe(Effect.catchIf((cause) => cause instanceof ProjectPickerCancelled, () => cancelPromote(reporter)), Effect.mapError((cause) => cause instanceof CliError ? cause : cliError('HSX_E_INTERNAL', errorMessage(cause))));
|
|
142
|
+
}
|
|
143
|
+
if (!deployId)
|
|
144
|
+
return yield* Effect.fail(missingPromoteContext());
|
|
145
|
+
if (!opts.yes) {
|
|
146
|
+
const preview = formatPromotePreview({
|
|
147
|
+
projectId,
|
|
148
|
+
deployId,
|
|
149
|
+
...(reads ? { reads } : {}),
|
|
150
|
+
});
|
|
151
|
+
yield* reporter.header(projectId);
|
|
152
|
+
yield* reporter.block(preview);
|
|
153
|
+
const confirmed = yield* Effect.promise(() => promptConfirm({
|
|
154
|
+
message: `Promote ${deployId} and move live traffic?`,
|
|
155
|
+
default: false,
|
|
156
|
+
}));
|
|
157
|
+
if (confirmed !== true)
|
|
158
|
+
return yield* cancelPromote(reporter);
|
|
159
|
+
}
|
|
79
160
|
const promotion = yield* requestControlPlaneDeployPromotionEff({
|
|
80
161
|
controlPlaneUrl,
|
|
81
162
|
deployId,
|
|
@@ -94,20 +175,95 @@ function promoteBody(opts) {
|
|
|
94
175
|
yield* reporter.raw(`${JSON.stringify(result, null, 2)}\n`);
|
|
95
176
|
return;
|
|
96
177
|
}
|
|
97
|
-
|
|
178
|
+
if (opts.yes)
|
|
179
|
+
yield* reporter.header(projectId);
|
|
98
180
|
const step = yield* reporter.step(`Promoted ${promotion.promoted.deployId}`);
|
|
99
181
|
yield* step.ok();
|
|
100
182
|
yield* reporter.done('Promoted');
|
|
101
183
|
});
|
|
102
184
|
}
|
|
103
|
-
function
|
|
185
|
+
function configString(key) {
|
|
186
|
+
return Config.string(key).pipe(Config.withDefault(''), Effect.orDie);
|
|
187
|
+
}
|
|
188
|
+
function missingPromoteContext() {
|
|
189
|
+
return cliError('HSX_E_INTERNAL', 'Linked deploy promotion requires --deploy-id, --account-id/HSX_ACCOUNT_ID, --project-id/HSX_PROJECT_ID (or a checkout binding), and --control-plane-url/HSX_CONTROL_PLANE_URL.');
|
|
190
|
+
}
|
|
191
|
+
function cancelPromote(reporter) {
|
|
192
|
+
return reporter.info('Cancelled.').pipe(Effect.flatMap(() => Effect.fail(exitWith(130))));
|
|
193
|
+
}
|
|
194
|
+
function controlPlaneAdapter(input) {
|
|
195
|
+
return {
|
|
196
|
+
request: ({ path, method, body }) => hostedHttp({
|
|
197
|
+
url: new URL(path, input.controlPlaneUrl),
|
|
198
|
+
...(method ? { method } : {}),
|
|
199
|
+
headers: input.headers,
|
|
200
|
+
...(body === undefined ? {} : { body }),
|
|
201
|
+
}, input.execute),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function fetchPromotionReadsEff(input) {
|
|
205
|
+
const encoded = encodeURIComponent(input.projectId);
|
|
206
|
+
return Effect.all({
|
|
207
|
+
revisions: fetchProjectReadEff(input, `/v1/projects/${encoded}/revisions`, schemas.ProjectRevisionRead),
|
|
208
|
+
drift: fetchProjectReadEff(input, `/v1/projects/${encoded}/drift`, schemas.DriftRead),
|
|
209
|
+
routing: fetchProjectReadEff(input, `/v1/projects/${encoded}/routing`, schemas.ProjectRoutingRead),
|
|
210
|
+
}, { concurrency: 3 }).pipe(Effect.map(({ revisions, drift, routing }) => ({
|
|
211
|
+
...(revisions ? { revisions } : {}),
|
|
212
|
+
...(drift ? { drift } : {}),
|
|
213
|
+
...(routing ? { routing } : {}),
|
|
214
|
+
})));
|
|
215
|
+
}
|
|
216
|
+
function fetchProjectReadEff(input, path, schema) {
|
|
104
217
|
return Effect.gen(function* () {
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
218
|
+
const http = yield* CliHttp;
|
|
219
|
+
const request = HttpClientRequest.make('GET')(new URL(path, input.controlPlaneUrl)).pipe(HttpClientRequest.setHeaders(input.headers));
|
|
220
|
+
const response = yield* http.execute(request);
|
|
221
|
+
if (!response.ok)
|
|
222
|
+
return undefined;
|
|
223
|
+
const body = yield* Effect.promise(() => response.json());
|
|
224
|
+
const decoded = Schema.decodeUnknownEither(schema)(body);
|
|
225
|
+
return decoded._tag === 'Right' ? decoded.right : undefined;
|
|
226
|
+
}).pipe(Effect.catchAll(() => Effect.succeed(undefined)));
|
|
227
|
+
}
|
|
228
|
+
export async function selectPromoteRevision(revisions, select = promptSelect) {
|
|
229
|
+
const ordered = [...revisions.revisions].sort((left, right) => right.recordedAt.localeCompare(left.recordedAt));
|
|
230
|
+
if (ordered.length === 0) {
|
|
231
|
+
throw new Error('No recorded deploys are available for this project. Run `hs-x deploy` first.');
|
|
232
|
+
}
|
|
233
|
+
const selected = await select({
|
|
234
|
+
message: `Which deploy should become active for ${revisions.projectId}?`,
|
|
235
|
+
options: ordered.map((record) => ({
|
|
236
|
+
value: record.deployId,
|
|
237
|
+
label: record.deployId,
|
|
238
|
+
description: `${record.recordedAt} · ${record.status}${record.deployId === revisions.activeDeployId ? ' · active' : ''}`,
|
|
239
|
+
})),
|
|
110
240
|
});
|
|
241
|
+
if (selected === undefined)
|
|
242
|
+
throw new ProjectPickerCancelled();
|
|
243
|
+
return selected;
|
|
244
|
+
}
|
|
245
|
+
export function formatPromotePreview(input) {
|
|
246
|
+
const revisions = input.reads?.revisions;
|
|
247
|
+
const activeId = revisions?.activeDeployId;
|
|
248
|
+
const active = revisions?.revisions.find((record) => record.deployId === activeId);
|
|
249
|
+
const target = revisions?.revisions.find((record) => record.deployId === input.deployId);
|
|
250
|
+
const drift = input.reads?.drift?.deployId === input.deployId ? input.reads.drift : undefined;
|
|
251
|
+
const activeRoute = input.reads?.routing?.routes.find((route) => route.activeDeployId === activeId);
|
|
252
|
+
const environment = drift?.environment ?? (activeId === input.deployId ? activeRoute?.environment : undefined);
|
|
253
|
+
return [
|
|
254
|
+
'Promotion preview',
|
|
255
|
+
`Environment: ${environment ?? 'unknown'}`,
|
|
256
|
+
`Health: ${drift?.state ?? 'unknown'}`,
|
|
257
|
+
`Active: ${formatDeployPreview(activeId, active, activeId)}`,
|
|
258
|
+
`Target: ${formatDeployPreview(input.deployId, target, activeId)}`,
|
|
259
|
+
].join('\n');
|
|
260
|
+
}
|
|
261
|
+
function formatDeployPreview(deployId, record, activeId) {
|
|
262
|
+
if (!deployId)
|
|
263
|
+
return 'none';
|
|
264
|
+
const status = record?.status ?? 'unknown status';
|
|
265
|
+
const recorded = record?.recordedAt ?? 'recorded time unknown';
|
|
266
|
+
return `${deployId} · ${status} · ${recorded}${deployId === activeId ? ' · active' : ''}`;
|
|
111
267
|
}
|
|
112
268
|
/** Effect-native control-plane promote POST over `CliHttp`. */
|
|
113
269
|
function requestControlPlaneDeployPromotionEff(input) {
|
|
@@ -132,7 +288,7 @@ function requestControlPlaneDeployPromotionEff(input) {
|
|
|
132
288
|
});
|
|
133
289
|
});
|
|
134
290
|
}
|
|
135
|
-
export async function deployPromoteCommand({ argv, json, }) {
|
|
291
|
+
export async function deployPromoteCommand({ argv, json, root = process.cwd(), }) {
|
|
136
292
|
const commandName = argv[0] === 'promote' ? 'promote' : 'deploy promote';
|
|
137
293
|
const explicitControlPlaneUrl = resolveFlag(argv, '--control-plane-url') ?? process.env.HSX_CONTROL_PLANE_URL;
|
|
138
294
|
const linked = await isLinked();
|
|
@@ -158,20 +314,108 @@ export async function deployPromoteCommand({ argv, json, }) {
|
|
|
158
314
|
}
|
|
159
315
|
return { exitCode: 10 };
|
|
160
316
|
}
|
|
161
|
-
const
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
if (!deployId || !accountId || !projectId || !controlPlaneUrl) {
|
|
166
|
-
throw new Error('Linked deploy promotion requires --deploy-id, --account-id/HSX_ACCOUNT_ID, --project-id/HSX_PROJECT_ID, and --control-plane-url/HSX_CONTROL_PLANE_URL.');
|
|
317
|
+
const interactive = !json && isInteractive();
|
|
318
|
+
const yes = hasFlag(argv, '--yes') || hasFlag(argv, '-y');
|
|
319
|
+
if (!yes && !interactive) {
|
|
320
|
+
throw new Error('Promote requires explicit consent in machine or non-interactive mode. Re-run with --yes.');
|
|
167
321
|
}
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
322
|
+
const local = await readLocalProjectContext(root);
|
|
323
|
+
const stored = await loadStore();
|
|
324
|
+
const explicitAccountId = resolveFlag(argv, '--account-id');
|
|
325
|
+
const accountId = resolveAccountId({
|
|
326
|
+
...(explicitAccountId ? { explicitAccountId } : {}),
|
|
327
|
+
...(process.env.HSX_ACCOUNT_ID ? { envAccountId: process.env.HSX_ACCOUNT_ID } : {}),
|
|
328
|
+
...(local.projectBinding?.accountId ? { localAccountId: local.projectBinding.accountId } : {}),
|
|
329
|
+
...(stored.defaultAccountId ? { defaultAccountId: stored.defaultAccountId } : {}),
|
|
174
330
|
});
|
|
331
|
+
let projectId = resolveProjectId({
|
|
332
|
+
explicit: resolveFlag(argv, '--project-id') ?? resolveFlag(argv, '--project'),
|
|
333
|
+
env: process.env.HSX_PROJECT_ID,
|
|
334
|
+
local,
|
|
335
|
+
})?.value;
|
|
336
|
+
let deployId = resolveFlag(argv, '--deploy-id');
|
|
337
|
+
const controlPlaneUrl = resolveFlag(argv, '--control-plane-url') ?? process.env.HSX_CONTROL_PLANE_URL;
|
|
338
|
+
if (!accountId || !controlPlaneUrl || (!projectId && !interactive)) {
|
|
339
|
+
throw new Error(missingPromoteContext().message);
|
|
340
|
+
}
|
|
341
|
+
const userId = resolveFlag(argv, '--user-id') ?? process.env.HSX_USER_ID ?? 'local-cli-user';
|
|
342
|
+
const headers = await controlPlaneAuthHeaders(userId);
|
|
343
|
+
const reporter = json ? undefined : createReporter({ command: commandName, argv });
|
|
344
|
+
if (!projectId) {
|
|
345
|
+
try {
|
|
346
|
+
const projects = await discoverProjects({
|
|
347
|
+
accountId,
|
|
348
|
+
controlPlane: controlPlaneAdapter({ controlPlaneUrl, headers }),
|
|
349
|
+
});
|
|
350
|
+
projectId = (await resolveProjectSelection({
|
|
351
|
+
accountId,
|
|
352
|
+
projects,
|
|
353
|
+
allowPrompt: true,
|
|
354
|
+
prompts: { select: promptSelect },
|
|
355
|
+
message: 'Which project should be promoted?',
|
|
356
|
+
})).id;
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
if (error instanceof ProjectPickerCancelled) {
|
|
360
|
+
reporter?.info('Cancelled.');
|
|
361
|
+
return { exitCode: 130 };
|
|
362
|
+
}
|
|
363
|
+
throw error;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
if (!projectId)
|
|
367
|
+
throw new Error(missingPromoteContext().message);
|
|
368
|
+
let reads;
|
|
369
|
+
if (!deployId || (!yes && interactive)) {
|
|
370
|
+
reads = await fetchPromotionReads({ controlPlaneUrl, projectId, headers });
|
|
371
|
+
}
|
|
372
|
+
if (!deployId && reads?.revisions) {
|
|
373
|
+
try {
|
|
374
|
+
deployId = await selectPromoteRevision(reads.revisions);
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
if (error instanceof ProjectPickerCancelled) {
|
|
378
|
+
reporter?.info('Cancelled.');
|
|
379
|
+
return { exitCode: 130 };
|
|
380
|
+
}
|
|
381
|
+
throw error;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
if (!deployId)
|
|
385
|
+
throw new Error(missingPromoteContext().message);
|
|
386
|
+
if (!yes) {
|
|
387
|
+
reporter?.header(projectId);
|
|
388
|
+
reporter?.block(formatPromotePreview({ projectId, deployId, ...(reads ? { reads } : {}) }));
|
|
389
|
+
const confirmed = await promptConfirm({
|
|
390
|
+
message: `Promote ${deployId} and move live traffic?`,
|
|
391
|
+
default: false,
|
|
392
|
+
});
|
|
393
|
+
if (confirmed !== true) {
|
|
394
|
+
reporter?.info('Cancelled.');
|
|
395
|
+
return { exitCode: 130 };
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// Start the step BEFORE the control-plane call so the promotion is visible
|
|
399
|
+
// while it runs; a failure resolves the step in place before the error
|
|
400
|
+
// surfaces. --json keeps its bespoke stdout payload untouched.
|
|
401
|
+
if (yes)
|
|
402
|
+
reporter?.header(projectId);
|
|
403
|
+
const promoteStep = reporter?.step(`Promoting ${deployId}`);
|
|
404
|
+
let promotion;
|
|
405
|
+
try {
|
|
406
|
+
promotion = await requestControlPlaneDeployPromotion({
|
|
407
|
+
controlPlaneUrl,
|
|
408
|
+
deployId,
|
|
409
|
+
accountId,
|
|
410
|
+
projectId,
|
|
411
|
+
userId,
|
|
412
|
+
headers,
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
catch (error) {
|
|
416
|
+
promoteStep?.fail((error instanceof Error ? error.message : String(error)).split('\n')[0]);
|
|
417
|
+
throw error;
|
|
418
|
+
}
|
|
175
419
|
const result = {
|
|
176
420
|
ok: true,
|
|
177
421
|
command: commandName,
|
|
@@ -182,19 +426,17 @@ export async function deployPromoteCommand({ argv, json, }) {
|
|
|
182
426
|
if (json) {
|
|
183
427
|
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
184
428
|
}
|
|
185
|
-
else {
|
|
186
|
-
|
|
187
|
-
reporter.header(projectId);
|
|
188
|
-
reporter.step(`Promoted ${promotion.promoted.deployId}`).ok();
|
|
429
|
+
else if (reporter) {
|
|
430
|
+
promoteStep?.ok(`now active: ${promotion.promoted.deployId}`);
|
|
189
431
|
reporter.done('Promoted');
|
|
190
432
|
}
|
|
191
433
|
return { exitCode: 0 };
|
|
192
434
|
}
|
|
193
|
-
export async function requestControlPlaneDeployPromotion({ controlPlaneUrl, deployId, accountId, projectId, userId, }) {
|
|
435
|
+
export async function requestControlPlaneDeployPromotion({ controlPlaneUrl, deployId, accountId, projectId, userId, headers, }) {
|
|
194
436
|
const response = await hostedHttp({
|
|
195
437
|
url: new URL(`/v1/deploys/${encodeURIComponent(deployId)}/promote`, controlPlaneUrl),
|
|
196
438
|
method: 'POST',
|
|
197
|
-
headers: await controlPlaneAuthHeaders(userId),
|
|
439
|
+
headers: headers ?? (await controlPlaneAuthHeaders(userId)),
|
|
198
440
|
body: { accountId, projectId },
|
|
199
441
|
});
|
|
200
442
|
const body = await response.json();
|
|
@@ -205,14 +447,45 @@ export async function requestControlPlaneDeployPromotion({ controlPlaneUrl, depl
|
|
|
205
447
|
}
|
|
206
448
|
return Schema.decodeUnknownSync(schemas.DeployPromotionResult)(body);
|
|
207
449
|
}
|
|
208
|
-
async function
|
|
450
|
+
async function fetchPromotionReads(input) {
|
|
451
|
+
const encoded = encodeURIComponent(input.projectId);
|
|
452
|
+
const read = async (path, schema) => {
|
|
453
|
+
try {
|
|
454
|
+
const response = await hostedHttp({
|
|
455
|
+
url: new URL(path, input.controlPlaneUrl),
|
|
456
|
+
headers: input.headers,
|
|
457
|
+
});
|
|
458
|
+
if (!response.ok)
|
|
459
|
+
return undefined;
|
|
460
|
+
const decoded = Schema.decodeUnknownEither(schema)(await response.json());
|
|
461
|
+
return decoded._tag === 'Right' ? decoded.right : undefined;
|
|
462
|
+
}
|
|
463
|
+
catch {
|
|
464
|
+
return undefined;
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
const [revisions, drift, routing] = await Promise.all([
|
|
468
|
+
read(`/v1/projects/${encoded}/revisions`, schemas.ProjectRevisionRead),
|
|
469
|
+
read(`/v1/projects/${encoded}/drift`, schemas.DriftRead),
|
|
470
|
+
read(`/v1/projects/${encoded}/routing`, schemas.ProjectRoutingRead),
|
|
471
|
+
]);
|
|
472
|
+
return {
|
|
473
|
+
...(revisions ? { revisions } : {}),
|
|
474
|
+
...(drift ? { drift } : {}),
|
|
475
|
+
...(routing ? { routing } : {}),
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
async function hostedHttp(input, execute = executeCliHttp) {
|
|
209
479
|
const headers = { ...(input.headers ?? {}) };
|
|
210
480
|
let request = HttpClientRequest.make(input.method ?? 'GET')(input.url).pipe(HttpClientRequest.setHeaders(headers));
|
|
211
481
|
if (input.body !== undefined) {
|
|
212
482
|
headers['content-type'] = headers['content-type'] ?? 'application/json';
|
|
213
483
|
request = request.pipe(HttpClientRequest.setHeaders(headers), HttpClientRequest.bodyText(typeof input.body === 'string' ? input.body : JSON.stringify(input.body), headers['content-type']));
|
|
214
484
|
}
|
|
215
|
-
return
|
|
485
|
+
return execute(request);
|
|
486
|
+
}
|
|
487
|
+
function hasFlag(argv, flag) {
|
|
488
|
+
return argv.includes(flag);
|
|
216
489
|
}
|
|
217
490
|
function resolveFlag(argv, flag) {
|
|
218
491
|
const index = argv.indexOf(flag);
|
|
@@ -227,6 +500,9 @@ function resolveFlag(argv, flag) {
|
|
|
227
500
|
const value = found.slice(prefix.length);
|
|
228
501
|
return value.length > 0 ? value : undefined;
|
|
229
502
|
}
|
|
503
|
+
function errorMessage(cause) {
|
|
504
|
+
return cause instanceof Error ? cause.message : String(cause);
|
|
505
|
+
}
|
|
230
506
|
function isRecord(value) {
|
|
231
507
|
return typeof value === 'object' && value !== null;
|
|
232
508
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-promote.js","sourceRoot":"","sources":["../../src/commands/deploy-promote.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploy-promote.js","sourceRoot":"","sources":["../../src/commands/deploy-promote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,58 @@
|
|
|
1
|
+
import * as Command from '@effect/cli/Command';
|
|
1
2
|
import { type WorkerManifest } from '@hs-x/codegen';
|
|
2
|
-
import type { AppEventDeclaration, AppObjectAssociationDeclaration, AppObjectDeclaration, CardDefinition } from '@hs-x/types';
|
|
3
|
+
import type { AppAlertsConfiguration, AppEventBatchingConfiguration, AppEventDeclaration, AppObjectAssociationDeclaration, AppObjectDeclaration, AppRedactionConfiguration, CardDefinition, HubSpotRateLimitConfiguration } from '@hs-x/types';
|
|
4
|
+
import { Schema, schemas } from '@hs-x/types';
|
|
3
5
|
import type { AppBillingDeclaration } from '@hs-x/types';
|
|
4
|
-
import * as Command from '@effect/cli/Command';
|
|
5
6
|
import { Option } from 'effect';
|
|
6
|
-
import { Cwd } from '../services/cwd.js';
|
|
7
7
|
import type { CliResult } from '../result.js';
|
|
8
|
+
import { Cwd } from '../services/cwd.js';
|
|
9
|
+
/**
|
|
10
|
+
* Resolve the HubSpot credentials required by the runtime. OAuth installs need
|
|
11
|
+
* the client id + secret for `/oauth-start`; every card backend needs the
|
|
12
|
+
* client secret to verify HubSpot's v3 request signature, regardless of whether
|
|
13
|
+
* the app uses OAuth or static auth. When interactive, prompt for anything
|
|
14
|
+
* required and missing (only on the first worker, to avoid contending for stdin
|
|
15
|
+
* across concurrent worker deploys), then persist answers to the process env so
|
|
16
|
+
* sibling workers reuse them.
|
|
17
|
+
*
|
|
18
|
+
* OAuth-only bootstrap deploys retain the historical warning-only behavior
|
|
19
|
+
* because the Auth page may not exist until after upload. Card backends fail
|
|
20
|
+
* closed before the Worker deploy: shipping one without the HMAC key guarantees
|
|
21
|
+
* that every live `hubspot.fetch` returns 401.
|
|
22
|
+
*/
|
|
23
|
+
/** @internal Exported for the deploy credential-gate regression suite. */
|
|
24
|
+
export declare function resolveHubSpotRuntimeCredentials(input: {
|
|
25
|
+
readonly auth: string;
|
|
26
|
+
readonly requiresCardSignatureSecret: boolean;
|
|
27
|
+
readonly dryRun: boolean;
|
|
28
|
+
readonly allowPrompt: boolean;
|
|
29
|
+
readonly hubSpotClientId: string | undefined;
|
|
30
|
+
readonly hubSpotClientSecret: string | undefined;
|
|
31
|
+
readonly authUrl?: string;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
readonly clientId: string | undefined;
|
|
34
|
+
readonly clientSecret: string | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
/** @internal Exported for the deploy credential-gate regression suite. */
|
|
37
|
+
export declare function requireHubSpotCardAppId(hubSpotAppId: HubSpotAppId | undefined, authUrl?: string): HubSpotAppId;
|
|
38
|
+
/**
|
|
39
|
+
* HubSpot cannot reveal an app secret after creation, but its token endpoint
|
|
40
|
+
* authenticates the client before rejecting a deliberately invalid auth code.
|
|
41
|
+
* Use that distinction to catch a copied secret from the wrong app before a
|
|
42
|
+
* Worker ships and turns every card request into a signature 401.
|
|
43
|
+
*
|
|
44
|
+
* No credential or response body is logged. `invalid_grant` (the expected
|
|
45
|
+
* dummy-code response) proves the client pair was accepted; `invalid_client`
|
|
46
|
+
* / BAD_CLIENT_* proves it was not.
|
|
47
|
+
*
|
|
48
|
+
* @internal Exported for the deploy credential-gate regression suite.
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateHubSpotClientCredentials(input: {
|
|
51
|
+
readonly clientId: string | undefined;
|
|
52
|
+
readonly clientSecret: string | undefined;
|
|
53
|
+
readonly authUrl?: string;
|
|
54
|
+
readonly fetchImpl?: typeof fetch;
|
|
55
|
+
}): Promise<void>;
|
|
8
56
|
export declare function deployCommand({ argv, root, json, }: {
|
|
9
57
|
readonly argv: readonly string[];
|
|
10
58
|
readonly root: string;
|
|
@@ -31,6 +79,7 @@ interface CloudflareDeployResult {
|
|
|
31
79
|
readonly deployId: string;
|
|
32
80
|
readonly workers: readonly CloudflareWorkerDeployResult[];
|
|
33
81
|
}
|
|
82
|
+
type HubSpotAppId = Schema.Schema.Type<typeof schemas.HubSpotAppId>;
|
|
34
83
|
export declare function renderWranglerConfig(input: {
|
|
35
84
|
readonly workerName: string;
|
|
36
85
|
readonly entrypointPath: string;
|
|
@@ -45,8 +94,15 @@ export declare function renderWranglerConfig(input: {
|
|
|
45
94
|
readonly checkpointDataset?: string;
|
|
46
95
|
/** Enable Workers Logs ingestion (linked deploys; read by the dashboard tail). */
|
|
47
96
|
readonly observability?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* ADR-023 S04 Cloudflare cron triggers: the deduplicated, normalized cron
|
|
99
|
+
* expressions generated from the worker's declared sync schedules. The
|
|
100
|
+
* generated `scheduled` handler dispatches the syncs for each fired
|
|
101
|
+
* expression.
|
|
102
|
+
*/
|
|
103
|
+
readonly crons?: readonly string[];
|
|
48
104
|
}): string;
|
|
49
|
-
export declare function ensureHubSpotRuntimeProjectArtifacts({ argv, root, app, workers, cloudflareDeployResult, needsRuntime, controlPlanePlan, }: {
|
|
105
|
+
export declare function ensureHubSpotRuntimeProjectArtifacts({ argv, root, app, workers, cloudflareDeployResult, needsRuntime, controlPlanePlan, runtimeOrigin, }: {
|
|
50
106
|
readonly argv: readonly string[];
|
|
51
107
|
readonly root: string;
|
|
52
108
|
readonly app: HsxAppConfig;
|
|
@@ -58,6 +114,8 @@ export declare function ensureHubSpotRuntimeProjectArtifacts({ argv, root, app,
|
|
|
58
114
|
readonly oauthCallbackPath: string;
|
|
59
115
|
};
|
|
60
116
|
};
|
|
117
|
+
/** Explicit origin for the upload-first path, before a deploy URL exists. */
|
|
118
|
+
readonly runtimeOrigin?: string;
|
|
61
119
|
}): Promise<void>;
|
|
62
120
|
interface HsxAppConfig {
|
|
63
121
|
readonly appName: string;
|
|
@@ -69,6 +127,10 @@ interface HsxAppConfig {
|
|
|
69
127
|
readonly appObjects: readonly AppObjectDeclaration[];
|
|
70
128
|
readonly appObjectAssociations: readonly AppObjectAssociationDeclaration[];
|
|
71
129
|
readonly appEvents: readonly AppEventDeclaration[];
|
|
130
|
+
readonly appEventBatching?: AppEventBatchingConfiguration | false;
|
|
131
|
+
readonly rateLimits?: HubSpotRateLimitConfiguration;
|
|
132
|
+
readonly alerts?: AppAlertsConfiguration;
|
|
133
|
+
readonly redaction?: AppRedactionConfiguration;
|
|
72
134
|
readonly cards: readonly CardDefinition[];
|
|
73
135
|
readonly billing?: AppBillingDeclaration;
|
|
74
136
|
}
|
|
@@ -110,6 +172,7 @@ export declare const deployCmd: Command.Command<"deploy", Cwd, import("../cli-er
|
|
|
110
172
|
readonly applySchema: boolean;
|
|
111
173
|
readonly heartbeat: boolean;
|
|
112
174
|
readonly noHeartbeat: boolean;
|
|
175
|
+
readonly noRecord: boolean;
|
|
113
176
|
readonly portalSchemaLive: boolean;
|
|
114
177
|
readonly localHubspotSchema: boolean;
|
|
115
178
|
readonly force: boolean;
|