@stacksjs/ts-cloud 0.7.83 → 0.7.85
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/dist/bin/cli.js +601 -601
- package/dist/{chunk-838t87x3.js → chunk-gx4288t5.js} +57 -1
- package/dist/{chunk-ptf1hhsd.js → chunk-qbj74thz.js} +30 -48
- package/dist/deploy/index.js +6 -4
- package/dist/deploy/local-dashboard-server.d.ts +1 -0
- package/dist/deploy/server-dns.d.ts +18 -3
- package/dist/drivers/hetzner/state.d.ts +8 -0
- package/dist/drivers/index.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -4
- package/dist/ui/access-denied.html +2 -2
- package/dist/ui/account/automation.html +3 -3
- package/dist/ui/account/security.html +2 -2
- package/dist/ui/applications/compose.html +4 -4
- package/dist/ui/applications/new.html +2 -2
- package/dist/ui/data/backups.html +4 -4
- package/dist/ui/data/services.html +4 -4
- package/dist/ui/data/volumes.html +4 -4
- package/dist/ui/index.html +4 -4
- package/dist/ui/integrations.html +2 -2
- package/dist/ui/operations/alerts.html +4 -4
- package/dist/ui/operations/configuration.html +4 -4
- package/dist/ui/operations/jobs.html +4 -4
- package/dist/ui/operations/maintenance.html +3 -3
- package/dist/ui/operations/observability.html +4 -4
- package/dist/ui/operations/previews.html +4 -4
- package/dist/ui/operations/queue.html +4 -4
- package/dist/ui/operations/regions.html +4 -4
- package/dist/ui/operations/releases.html +4 -4
- package/dist/ui/operations/workloads.html +4 -4
- package/dist/ui/security.html +2 -2
- package/dist/ui/server/actions.html +4 -4
- package/dist/ui/server/activity.html +2 -2
- package/dist/ui/server/capacity.html +4 -4
- package/dist/ui/server/database.html +4 -4
- package/dist/ui/server/deployments.html +4 -4
- package/dist/ui/server/firewall.html +4 -4
- package/dist/ui/server/fleet.html +4 -4
- package/dist/ui/server/logs.html +4 -4
- package/dist/ui/server/metrics.html +4 -4
- package/dist/ui/server/services.html +2 -2
- package/dist/ui/server/sites.html +4 -4
- package/dist/ui/server/ssh-keys.html +3 -3
- package/dist/ui/server/team.html +4 -4
- package/dist/ui/server/terminal.html +2 -2
- package/dist/ui/serverless/alarms.html +4 -4
- package/dist/ui/serverless/assets.html +2 -2
- package/dist/ui/serverless/cost.html +2 -2
- package/dist/ui/serverless/data.html +4 -4
- package/dist/ui/serverless/firewall.html +2 -2
- package/dist/ui/serverless/functions.html +4 -4
- package/dist/ui/serverless/logs.html +4 -4
- package/dist/ui/serverless/metrics.html +2 -2
- package/dist/ui/serverless/queues.html +3 -3
- package/dist/ui/serverless/secrets.html +3 -3
- package/dist/ui/serverless/traces.html +4 -4
- package/dist/ui/serverless.html +4 -4
- package/package.json +3 -3
|
@@ -2045,6 +2045,59 @@ import { execSync } from "node:child_process";
|
|
|
2045
2045
|
import { randomUUID } from "node:crypto";
|
|
2046
2046
|
import { existsSync, readFileSync as readFileSync2 } from "node:fs";
|
|
2047
2047
|
|
|
2048
|
+
// src/deploy/server-dns.ts
|
|
2049
|
+
function collectServerDnsDomains(sites = {}) {
|
|
2050
|
+
const domains = new Set;
|
|
2051
|
+
for (const site of Object.values(sites)) {
|
|
2052
|
+
if (!site.domain)
|
|
2053
|
+
continue;
|
|
2054
|
+
if (site.redirect || site.deploy === "server" || site.start)
|
|
2055
|
+
domains.add(site.domain);
|
|
2056
|
+
}
|
|
2057
|
+
return domains;
|
|
2058
|
+
}
|
|
2059
|
+
function normalizeName(name) {
|
|
2060
|
+
return name.replace(/\.$/, "").toLowerCase();
|
|
2061
|
+
}
|
|
2062
|
+
function matchesHostname(record, zone, hostname) {
|
|
2063
|
+
const recordName = normalizeName(record.name);
|
|
2064
|
+
const normalizedZone = normalizeName(zone);
|
|
2065
|
+
const normalizedHostname = normalizeName(hostname);
|
|
2066
|
+
const relativeName = normalizedHostname === normalizedZone ? "@" : normalizedHostname.endsWith(`.${normalizedZone}`) ? normalizedHostname.slice(0, -(normalizedZone.length + 1)) : normalizedHostname;
|
|
2067
|
+
return recordName === normalizedHostname || recordName === relativeName || relativeName === "@" && (recordName === "" || recordName === normalizedZone);
|
|
2068
|
+
}
|
|
2069
|
+
async function removeStaleServerAddressRecords(provider, zone, hostname, desiredAddress, recordType = "A") {
|
|
2070
|
+
const listed = await provider.listRecords(zone);
|
|
2071
|
+
if (!listed.success)
|
|
2072
|
+
return [`could not list ${recordType} records: ${listed.message || "unknown provider error"}`];
|
|
2073
|
+
const matching = listed.records.filter((record) => record.type === recordType && matchesHostname(record, zone, hostname));
|
|
2074
|
+
const desiredIndex = matching.findIndex((record) => record.content === desiredAddress);
|
|
2075
|
+
if (matching.length <= 1 || desiredIndex === -1)
|
|
2076
|
+
return [];
|
|
2077
|
+
const warnings = [];
|
|
2078
|
+
for (const [index, record] of matching.entries()) {
|
|
2079
|
+
if (index === desiredIndex)
|
|
2080
|
+
continue;
|
|
2081
|
+
const result = await provider.deleteRecord(zone, record);
|
|
2082
|
+
if (!result.success)
|
|
2083
|
+
warnings.push(`could not remove stale ${record.name} ${recordType} ${record.content}: ${result.message || "unknown provider error"}`);
|
|
2084
|
+
}
|
|
2085
|
+
return warnings;
|
|
2086
|
+
}
|
|
2087
|
+
function hetznerBoxIpv6(reported) {
|
|
2088
|
+
if (!reported)
|
|
2089
|
+
return;
|
|
2090
|
+
const trimmed = reported.trim();
|
|
2091
|
+
if (!trimmed)
|
|
2092
|
+
return;
|
|
2093
|
+
if (!trimmed.includes("/"))
|
|
2094
|
+
return trimmed;
|
|
2095
|
+
const [block] = trimmed.split("/");
|
|
2096
|
+
if (!block.endsWith("::"))
|
|
2097
|
+
return block || undefined;
|
|
2098
|
+
return `${block}1`;
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2048
2101
|
// src/drivers/shared/fleet.ts
|
|
2049
2102
|
function resolveFleetTopology(compute = {}) {
|
|
2050
2103
|
const appServers = Math.max(1, compute.appServers ?? compute.instances ?? 1);
|
|
@@ -2613,6 +2666,7 @@ class HetznerDriver {
|
|
|
2613
2666
|
serverId: alreadyRunning.id,
|
|
2614
2667
|
serverName: alreadyRunning.name,
|
|
2615
2668
|
publicIp: alreadyRunning.public_net.ipv4?.ip,
|
|
2669
|
+
publicIpv6: hetznerBoxIpv6(alreadyRunning.public_net.ipv6?.ip),
|
|
2616
2670
|
deployStoragePath: "/var/ts-cloud/staging",
|
|
2617
2671
|
sshUser: this.sshUser
|
|
2618
2672
|
};
|
|
@@ -2660,6 +2714,7 @@ class HetznerDriver {
|
|
|
2660
2714
|
serverName: running.name,
|
|
2661
2715
|
firewallId: firewall.id,
|
|
2662
2716
|
publicIp: running.public_net.ipv4?.ip,
|
|
2717
|
+
publicIpv6: hetznerBoxIpv6(running.public_net.ipv6?.ip),
|
|
2663
2718
|
deployStoragePath: "/var/ts-cloud/staging",
|
|
2664
2719
|
sshUser: this.sshUser
|
|
2665
2720
|
};
|
|
@@ -3373,6 +3428,7 @@ ${out}`);
|
|
|
3373
3428
|
deployStoragePath: state.deployStoragePath || "/var/ts-cloud/staging",
|
|
3374
3429
|
appInstanceId: state.serverId ? String(state.serverId) : undefined,
|
|
3375
3430
|
appPublicIp: server?.public_net.ipv4?.ip || state.publicIp,
|
|
3431
|
+
appPublicIpv6: hetznerBoxIpv6(server?.public_net.ipv6?.ip) || state.publicIpv6,
|
|
3376
3432
|
sshUser: state.sshUser || this.sshUser,
|
|
3377
3433
|
servicesPrivateIp: state.servicesPrivateIp
|
|
3378
3434
|
};
|
|
@@ -6198,4 +6254,4 @@ function buildCloudFrontOriginConfig(options) {
|
|
|
6198
6254
|
CustomErrorResponses: { Quantity: 0 }
|
|
6199
6255
|
};
|
|
6200
6256
|
}
|
|
6201
|
-
export { PANTRY_PROJECT_DIR, pgAdminCommand, BACKUP_RUNNER_PATH, buildBackupRestoreScript, siteInstallBase, isPhpSite, resolveSiteDeployTarget, resolveSiteKind, validateDeploymentConfig, shipsARelease, DEFAULT_RPX_CERTS_DIR, normalizeRoutePath, deriveRouteId, buildRpxConfig, buildRpxLbConfig, renderRpxLauncher, RPX_DIR, RPX_LAUNCHER_PATH, RPX_SERVICE_NAME, buildRpxProvisionScript, buildRpxFragmentRefreshScript, buildUbuntuBootstrapScript, AwsDriver, resolveHetznerLocation, HetznerClient, resolveHetznerApiToken2 as resolveHetznerApiToken, normalizeSshPublicKey, wrapCloudInitUserData, HetznerDriver, LocalBoxDriver, isBoxMode, createCloudDriver, CloudDriverFactory, cloudDrivers, planHetznerServerResize, isHetznerCapacityError, executeHetznerServerResize, buildSshArgs, sshExec, sshExecOrThrow, scpUpload, waitForSsh, waitForCloudInit, collectHetznerResizeManifest, prepareHetznerResize, verifyHetznerResize, resolveHetznerHostOptimizationPlan, buildHetznerHostOptimizationScript, applyHetznerHostOptimization, collectHetznerHostOptimizationReport, verifyHetznerHostOptimization, resizeCheckpointPath, resizeLockPath, readResizeCheckpoint, writeResizeCheckpoint, acquireResizeLock, ensureSshKey, ensureFirewall, ensureServer, serverPublicIpv4, UBUNTU_2404_AMI_PARAM, buildBoxUserData, HetznerBoxProvisioner, AwsBoxProvisioner, createBoxProvisioner, releasePaths, buildRollbackScript, resolveExecStart, buildSiteDeployScript, buildStaticSiteDeployScript, releaseTarballTmpPath, buildAwsArtifactFetch, buildLocalArtifactFetch, buildHostCleanupScript, MANAGEMENT_DASHBOARD_SITE, dashboardCredentialsFile, resolveDashboardAuth, resolveUiSource, ensureManagementDashboard, buildManagementDashboardArtifact, resolveSiteFramework, deploySiteRelease, deployAllComputeSites, reloadRpxGateway, renewRpxCertificates, MANAGED_CACHE_POLICY_OPTIMIZED, MANAGED_CACHE_POLICY_DISABLED, MANAGED_ORIGIN_REQUEST_POLICY_ALL_VIEWER, buildCloudFrontOriginConfig };
|
|
6257
|
+
export { PANTRY_PROJECT_DIR, pgAdminCommand, BACKUP_RUNNER_PATH, buildBackupRestoreScript, siteInstallBase, isPhpSite, resolveSiteDeployTarget, resolveSiteKind, validateDeploymentConfig, shipsARelease, DEFAULT_RPX_CERTS_DIR, normalizeRoutePath, deriveRouteId, buildRpxConfig, buildRpxLbConfig, renderRpxLauncher, RPX_DIR, RPX_LAUNCHER_PATH, RPX_SERVICE_NAME, buildRpxProvisionScript, buildRpxFragmentRefreshScript, buildUbuntuBootstrapScript, AwsDriver, collectServerDnsDomains, removeStaleServerAddressRecords, hetznerBoxIpv6, resolveHetznerLocation, HetznerClient, resolveHetznerApiToken2 as resolveHetznerApiToken, normalizeSshPublicKey, wrapCloudInitUserData, HetznerDriver, LocalBoxDriver, isBoxMode, createCloudDriver, CloudDriverFactory, cloudDrivers, planHetznerServerResize, isHetznerCapacityError, executeHetznerServerResize, buildSshArgs, sshExec, sshExecOrThrow, scpUpload, waitForSsh, waitForCloudInit, collectHetznerResizeManifest, prepareHetznerResize, verifyHetznerResize, resolveHetznerHostOptimizationPlan, buildHetznerHostOptimizationScript, applyHetznerHostOptimization, collectHetznerHostOptimizationReport, verifyHetznerHostOptimization, resizeCheckpointPath, resizeLockPath, readResizeCheckpoint, writeResizeCheckpoint, acquireResizeLock, ensureSshKey, ensureFirewall, ensureServer, serverPublicIpv4, UBUNTU_2404_AMI_PARAM, buildBoxUserData, HetznerBoxProvisioner, AwsBoxProvisioner, createBoxProvisioner, releasePaths, buildRollbackScript, resolveExecStart, buildSiteDeployScript, buildStaticSiteDeployScript, releaseTarballTmpPath, buildAwsArtifactFetch, buildLocalArtifactFetch, buildHostCleanupScript, MANAGEMENT_DASHBOARD_SITE, dashboardCredentialsFile, resolveDashboardAuth, resolveUiSource, ensureManagementDashboard, buildManagementDashboardArtifact, resolveSiteFramework, deploySiteRelease, deployAllComputeSites, reloadRpxGateway, renewRpxCertificates, MANAGED_CACHE_POLICY_OPTIMIZED, MANAGED_CACHE_POLICY_DISABLED, MANAGED_ORIGIN_REQUEST_POLICY_ALL_VIEWER, buildCloudFrontOriginConfig };
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
resolveSiteKind,
|
|
46
46
|
resolveUiSource,
|
|
47
47
|
siteInstallBase
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-gx4288t5.js";
|
|
49
49
|
import {
|
|
50
50
|
artifactKey,
|
|
51
51
|
buildCloudFormationTemplate,
|
|
@@ -88,45 +88,6 @@ import {
|
|
|
88
88
|
import {
|
|
89
89
|
__require
|
|
90
90
|
} from "./chunk-v0bahtg2.js";
|
|
91
|
-
// src/deploy/server-dns.ts
|
|
92
|
-
function collectServerDnsDomains(sites = {}) {
|
|
93
|
-
const domains = new Set;
|
|
94
|
-
for (const site of Object.values(sites)) {
|
|
95
|
-
if (!site.domain)
|
|
96
|
-
continue;
|
|
97
|
-
if (site.redirect || site.deploy === "server" || site.start)
|
|
98
|
-
domains.add(site.domain);
|
|
99
|
-
}
|
|
100
|
-
return domains;
|
|
101
|
-
}
|
|
102
|
-
function normalizeName(name) {
|
|
103
|
-
return name.replace(/\.$/, "").toLowerCase();
|
|
104
|
-
}
|
|
105
|
-
function matchesHostname(record, zone, hostname) {
|
|
106
|
-
const recordName = normalizeName(record.name);
|
|
107
|
-
const normalizedZone = normalizeName(zone);
|
|
108
|
-
const normalizedHostname = normalizeName(hostname);
|
|
109
|
-
const relativeName = normalizedHostname === normalizedZone ? "@" : normalizedHostname.endsWith(`.${normalizedZone}`) ? normalizedHostname.slice(0, -(normalizedZone.length + 1)) : normalizedHostname;
|
|
110
|
-
return recordName === normalizedHostname || recordName === relativeName || relativeName === "@" && (recordName === "" || recordName === normalizedZone);
|
|
111
|
-
}
|
|
112
|
-
async function removeStaleServerAddressRecords(provider, zone, hostname, desiredAddress) {
|
|
113
|
-
const listed = await provider.listRecords(zone);
|
|
114
|
-
if (!listed.success)
|
|
115
|
-
return [`could not list A records: ${listed.message || "unknown provider error"}`];
|
|
116
|
-
const matching = listed.records.filter((record) => record.type === "A" && matchesHostname(record, zone, hostname));
|
|
117
|
-
const desiredIndex = matching.findIndex((record) => record.content === desiredAddress);
|
|
118
|
-
if (matching.length <= 1 || desiredIndex === -1)
|
|
119
|
-
return [];
|
|
120
|
-
const warnings = [];
|
|
121
|
-
for (const [index, record] of matching.entries()) {
|
|
122
|
-
if (index === desiredIndex)
|
|
123
|
-
continue;
|
|
124
|
-
const result = await provider.deleteRecord(zone, record);
|
|
125
|
-
if (!result.success)
|
|
126
|
-
warnings.push(`could not remove stale ${record.name} A ${record.content}: ${result.message || "unknown provider error"}`);
|
|
127
|
-
}
|
|
128
|
-
return warnings;
|
|
129
|
-
}
|
|
130
91
|
// src/deploy/dashboard-control-plane.ts
|
|
131
92
|
import { createHash as createHash5 } from "node:crypto";
|
|
132
93
|
|
|
@@ -13016,7 +12977,7 @@ function normalizeHost(value) {
|
|
|
13016
12977
|
throw new Error("Source host must use HTTPS");
|
|
13017
12978
|
return `${url.protocol}//${url.host}${url.pathname.replace(/\/$/, "")}`;
|
|
13018
12979
|
}
|
|
13019
|
-
function
|
|
12980
|
+
function normalizeName(value) {
|
|
13020
12981
|
const name = value.trim();
|
|
13021
12982
|
if (name.length < 2 || name.length > 80)
|
|
13022
12983
|
throw new Error("Connection name must contain 2-80 characters");
|
|
@@ -13207,7 +13168,7 @@ class SourceConnectionStore {
|
|
|
13207
13168
|
id,
|
|
13208
13169
|
input.organizationId,
|
|
13209
13170
|
input.provider,
|
|
13210
|
-
|
|
13171
|
+
normalizeName(input.name),
|
|
13211
13172
|
normalizeHost(input.host),
|
|
13212
13173
|
input.owner?.trim() || null,
|
|
13213
13174
|
input.authKind ?? (encoded ? "access_token" : "none"),
|
|
@@ -13340,7 +13301,7 @@ class SourceConnectionStore {
|
|
|
13340
13301
|
this.run(`INSERT INTO source_deploy_keys (id, connection_id, name, public_key, public_key_fingerprint, private_key_ciphertext, host, host_key, host_key_fingerprint, created_by_actor_id, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
13341
13302
|
id,
|
|
13342
13303
|
input.connectionId,
|
|
13343
|
-
|
|
13304
|
+
normalizeName(input.name),
|
|
13344
13305
|
input.publicKey.trim(),
|
|
13345
13306
|
publicFingerprint,
|
|
13346
13307
|
this.encrypt(input.privateKey),
|
|
@@ -43156,7 +43117,7 @@ function authorizationScope(body) {
|
|
|
43156
43117
|
const id2 = String(body.scopeId ?? "").trim();
|
|
43157
43118
|
return id2 ? { type, id: id2 } : undefined;
|
|
43158
43119
|
}
|
|
43159
|
-
async function resolveLiveDashboardData(config6, environment2) {
|
|
43120
|
+
async function resolveLiveDashboardData(config6, environment2, options = {}) {
|
|
43160
43121
|
const mode = resolveDeploymentMode(config6);
|
|
43161
43122
|
const meta = {
|
|
43162
43123
|
mode,
|
|
@@ -43165,12 +43126,24 @@ async function resolveLiveDashboardData(config6, environment2) {
|
|
|
43165
43126
|
project: { name: config6.project.name, slug: config6.project.slug, region: config6.project.region }
|
|
43166
43127
|
};
|
|
43167
43128
|
try {
|
|
43168
|
-
const data = mode === "serverless" ? await resolveDashboardData(config6, environment2) : await resolveServerDashboardData(config6, environment2
|
|
43129
|
+
const data = mode === "serverless" ? await resolveDashboardData(config6, environment2) : await resolveServerDashboardData(config6, environment2, {
|
|
43130
|
+
includeSiteHealth: options.includeSiteHealth
|
|
43131
|
+
});
|
|
43169
43132
|
return { ...data ?? {}, ...meta };
|
|
43170
43133
|
} catch {
|
|
43171
43134
|
return { ...meta };
|
|
43172
43135
|
}
|
|
43173
43136
|
}
|
|
43137
|
+
function preserveDashboardSiteSnapshot(previous, next) {
|
|
43138
|
+
if (!previous)
|
|
43139
|
+
return next;
|
|
43140
|
+
return {
|
|
43141
|
+
...next,
|
|
43142
|
+
...Array.isArray(previous.sites) ? { sites: previous.sites } : {},
|
|
43143
|
+
...Array.isArray(previous.sitesDetail) ? { sitesDetail: previous.sitesDetail } : {},
|
|
43144
|
+
...Array.isArray(previous.siteHealth) ? { siteHealth: previous.siteHealth } : {}
|
|
43145
|
+
};
|
|
43146
|
+
}
|
|
43174
43147
|
function resolveUiSourceDir(cwd) {
|
|
43175
43148
|
const candidates = [
|
|
43176
43149
|
join13(cwd, "packages", "ui"),
|
|
@@ -43524,8 +43497,13 @@ async function startLocalDashboardServer(options = {}) {
|
|
|
43524
43497
|
const initialData = await resolveLiveDashboardData(config6, defaultEnvironment);
|
|
43525
43498
|
const latestDataByEnvironment = new Map([[defaultEnvironment, initialData]]);
|
|
43526
43499
|
const latestDataRefreshedAtByEnvironment = new Map([[defaultEnvironment, Date.now()]]);
|
|
43500
|
+
const latestSiteHealthRefreshedAtByEnvironment = new Map([
|
|
43501
|
+
[defaultEnvironment, Date.now()]
|
|
43502
|
+
]);
|
|
43527
43503
|
const liveDataRefreshesByEnvironment = new Map;
|
|
43528
43504
|
const dashboardDataMinimumRefreshMs = Math.min(5 * 60000, Math.max(5000, Number(process.env.TS_CLOUD_DASHBOARD_REFRESH_MS) || 30000));
|
|
43505
|
+
const dashboardSiteHealthMinimumRefreshMs = Math.min(30 * 60000, Math.max(60000, Number(process.env.TS_CLOUD_DASHBOARD_SITE_REFRESH_MS) || 5 * 60000));
|
|
43506
|
+
const computeDashboard = resolveDeploymentMode(config6) !== "serverless";
|
|
43529
43507
|
const refreshLatestDashboardData = (environment2) => {
|
|
43530
43508
|
const previous = latestDataByEnvironment.get(environment2);
|
|
43531
43509
|
if (previous && !dashboardDataRefreshDue(latestDataRefreshedAtByEnvironment.get(environment2), Date.now(), dashboardDataMinimumRefreshMs))
|
|
@@ -43533,10 +43511,14 @@ async function startLocalDashboardServer(options = {}) {
|
|
|
43533
43511
|
const running = liveDataRefreshesByEnvironment.get(environment2);
|
|
43534
43512
|
if (running)
|
|
43535
43513
|
return running;
|
|
43536
|
-
const
|
|
43514
|
+
const includeSiteHealth = !computeDashboard || dashboardDataRefreshDue(latestSiteHealthRefreshedAtByEnvironment.get(environment2), Date.now(), dashboardSiteHealthMinimumRefreshMs);
|
|
43515
|
+
const refresh = resolveLiveDashboardData(config6, environment2, { includeSiteHealth }).then((refreshedData) => {
|
|
43537
43516
|
const previous2 = latestDataByEnvironment.get(environment2);
|
|
43517
|
+
const data = includeSiteHealth ? refreshedData : preserveDashboardSiteSnapshot(previous2, refreshedData);
|
|
43538
43518
|
latestDataByEnvironment.set(environment2, data);
|
|
43539
43519
|
latestDataRefreshedAtByEnvironment.set(environment2, Date.now());
|
|
43520
|
+
if (includeSiteHealth)
|
|
43521
|
+
latestSiteHealthRefreshedAtByEnvironment.set(environment2, Date.now());
|
|
43540
43522
|
if (previous2?._serverReachable !== data._serverReachable || previous2?._metricsStatus !== data._metricsStatus || (previous2?.sitesDetail?.length ?? 0) !== (data.sitesDetail?.length ?? 0))
|
|
43541
43523
|
clearUiCache();
|
|
43542
43524
|
return data;
|
|
@@ -43549,7 +43531,7 @@ async function startLocalDashboardServer(options = {}) {
|
|
|
43549
43531
|
const backgroundTelemetryEnabled = options.box && telemetryPreference !== "0" && (telemetryPreference === "1" || !config6.cloud?.attachTo);
|
|
43550
43532
|
if (backgroundTelemetryEnabled) {
|
|
43551
43533
|
let telemetryCollectionRunning = false;
|
|
43552
|
-
let nextSiteHealthCollectionAt =
|
|
43534
|
+
let nextSiteHealthCollectionAt = Date.now() + 5 * 60000;
|
|
43553
43535
|
const collectHostHistory = async () => {
|
|
43554
43536
|
if (telemetryCollectionRunning)
|
|
43555
43537
|
return;
|
|
@@ -49135,4 +49117,4 @@ data: ${JSON.stringify({ cursor: position, at: new Date().toISOString() })}
|
|
|
49135
49117
|
};
|
|
49136
49118
|
return { server, url: `http://${host2}:${server.port}/` };
|
|
49137
49119
|
}
|
|
49138
|
-
export { defaultConfig4 as defaultConfig, getConfig, loadCloudConfig, config5 as config, encodeBase32, decodeBase32, hotp, totp, verifyTotp, matchTotpCounter, totpUri, AUTH_SESSION_IDLE_TTL_MS, AUTH_SESSION_ABSOLUTE_TTL_MS, AUTH_ACTION_TOKEN_TTL_MS, AUTH_MFA_CHALLENGE_TTL_MS, AUTH_OIDC_TRANSACTION_TTL_MS, AuthenticationStore, sendAuthenticationEmail, authEncryptionKeyFile, resolveAuthEncryptionKey, sanitizeOidcReturnPath, discoverOidcProvider, beginOidcAuthorization, completeOidcAuthorization, CONTROL_PLANE_SCHEMA_VERSION, controlPlaneMigrations, AUTHORIZATION_CAPABILITIES, roleCapabilities, scopeContains, authorizeOrganization, effectiveCapabilities, OptimisticConcurrencyError, InvalidOperationTransitionError, UnsupportedSchemaVersionError, controlPlaneDatabaseFile, MAX_CONTROL_PLANE_JSON_BYTES, MAX_CONTROL_PLANE_ERROR_BYTES, sanitizeControlPlaneValue, ControlPlaneStore, searchControlPlane, API_TOKEN_DEFAULT_TTL_MS, API_TOKEN_MAX_TTL_MS, API_IDEMPOTENCY_TTL_MS, AutomationIdentityStore, TsCloudApiError, TsCloudClient, parseCompose, exportCompose, diffCompose, listComposeTemplates, getComposeTemplate, renderComposeTemplate, parseComposeCatalog, planComposeTemplateUpgrade, composeProjectName, buildComposeRuntimeCommand, buildComposeScaleCommand, buildComposeLogsCommand, buildComposeShellCommand, QueueCancellationError, QueueTimeoutError, RetryableOperationError, DurableOperationQueue, DurableQueueWorker, PreviewEnvironmentStore, PreviewEnvironmentService, DEPLOYMENT_QUEUE_KINDS, resolveQueuedDeploymentCommand, createDeploymentQueueHandlers, unsupportedVolumeCapabilities, volumeCapabilities, validateMountPath, validateAttachment, VolumeService, createVolumeQueueHandlers, DockerNamedVolumeDriver, ServerPathVolumeDriver, CloudBlockVolumeDriver, VolumeStore, synchronizeComposeVolumes, completeComposeVolumeDeletion, ComposeApplicationStore, ComposeApplicationService, releaseStrategyCapabilities, assertReleaseStrategy, ReleaseStore, ReleaseService, releaseTrafficPlan, activateImmutableRelease, rollbackImmutableRelease, RELEASE_QUEUE_KINDS, createReleaseQueueHandlers, SourceConnectionStore, SourceProviderError, GithubSourceAdapter, GitlabSourceAdapter, BitbucketSourceAdapter, GiteaSourceAdapter, createSourceAdapter, normalizeSourceEvent, processSourceWebhook, webhookEndpoint, discoverGitRefs, cloneSourceBinding, testSourceConnection, syncSourceRepositories, listSourceReferences, reconcileSourceWebhook, removeSourceWebhook, API_VERSION, openApiDocument, ApiServiceError, requestHash, AutomationApiService, createApiV1Handler, SecurityPostureStore, SECRET_PATTERNS, PreDeployScanner, scanForSecrets, formatScanResults, SecurityScannerRunner, SecretFindingScanner, TrivyImageScanner, AwsIamCapabilityScanner, generateCycloneDxSbom, generateImageSbom, attachSbomToRelease, attachVulnerabilitySummary, createReleaseProvenance, attachProvenanceToRelease, verifyArtifactSignature, securityScope, ensureDefaultSecurityPolicies, recordPreDeploySecretScan, recordSkippedSecretScan, recordDashboardHostPosture, productionChangeReview, secureContainerRelease, runtimeId2 as runtimeId, unsupportedCapabilities, capabilities2 as capabilities, normalizeRuntimeStatus, redactRuntimeConfig, ageSeconds, bytes, discoverRuntimeInventory, ecsWorkloads, lambdaWorkloads, parseDockerInspect, dockerWorkloads, DockerDiscoveryAdapter, parseSystemdRecords, systemdWorkloads, SystemdDiscoveryAdapter, EcsRuntimeAdapter, LambdaRuntimeAdapter, createRuntimeAdapters, resolveRuntimeInventory, authorizeRuntimePath, DIAGNOSTIC_PRESETS, RuntimeOperationService, RuntimeStreamRegistry, DEFAULT_TELEMETRY_POLICY, normalizeTelemetryPolicy, telemetryPolicyKey, loadTelemetryPolicy, saveTelemetryPolicy, telemetryEstimatedMonthlyCost, redactTelemetryText, redactTelemetryValue, pathTemplate, telemetryCursor, telemetryPercentile, telemetryBucketLabel, TelemetryStore, AlertStore, AlertEvaluator, isQuietHours, NotificationRouter, HealthCheckRunner, evaluateTelemetryAlertRules, normalizeScheduleExpression, nextScheduleRuns, previewSchedule, jobProviderCapability, renderServerCron, eventBridgeScheduleInput, reconcileJobObservation, desiredState, ServerCronJobAdapter, EventBridgeJobAdapter, JobProviderReconciler, synchronizeConfiguredJobs, JobService, createJobQueueHandlers, JobStore, dataServiceCapabilities, DataServiceStore, connectionGuidance, DataServiceLifecycle, createDataServiceQueueHandlers, AwsRdsDataAdapter, AwsAuroraDataAdapter, AwsElastiCacheDataAdapter, ServerDataAdapter, ContainerDataAdapter, AwsRdsTransport, AwsAuroraTransport, AwsElastiCacheTransport, BunDockerRuntime, DockerDataTransport, EncryptedDataSecretStore, SystemFleetSshTransport, SshFleetDriver, createFleetQueueHandlers, FleetStore, FleetService, zeroCapacity, capacity, PlacementStore, PlacementService, RemoteBuildService, createRemoteBuildQueueHandlers, TransportRemoteBuildDriver, createServerBuildDriver, createEcsBuildDriver, createAsgBuildDriver, RegionStore, RegionService, createRegionQueueHandlers, AwsRegionalDriver, UnavailableRegionalDriver, canonicalJson, manifestDigest, documentDigest, publicKeyFingerprint, verifyUpdateSignature, updateCompatibility, MaintenanceStore, maintenanceWindowOpen, MaintenanceService, createMaintenanceQueueHandlers, TransportPlatformMaintenanceDriver, ControlPlaneCleanupDriver, TransportDisasterRecoveryDriver,
|
|
49120
|
+
export { defaultConfig4 as defaultConfig, getConfig, loadCloudConfig, config5 as config, encodeBase32, decodeBase32, hotp, totp, verifyTotp, matchTotpCounter, totpUri, AUTH_SESSION_IDLE_TTL_MS, AUTH_SESSION_ABSOLUTE_TTL_MS, AUTH_ACTION_TOKEN_TTL_MS, AUTH_MFA_CHALLENGE_TTL_MS, AUTH_OIDC_TRANSACTION_TTL_MS, AuthenticationStore, sendAuthenticationEmail, authEncryptionKeyFile, resolveAuthEncryptionKey, sanitizeOidcReturnPath, discoverOidcProvider, beginOidcAuthorization, completeOidcAuthorization, CONTROL_PLANE_SCHEMA_VERSION, controlPlaneMigrations, AUTHORIZATION_CAPABILITIES, roleCapabilities, scopeContains, authorizeOrganization, effectiveCapabilities, OptimisticConcurrencyError, InvalidOperationTransitionError, UnsupportedSchemaVersionError, controlPlaneDatabaseFile, MAX_CONTROL_PLANE_JSON_BYTES, MAX_CONTROL_PLANE_ERROR_BYTES, sanitizeControlPlaneValue, ControlPlaneStore, searchControlPlane, API_TOKEN_DEFAULT_TTL_MS, API_TOKEN_MAX_TTL_MS, API_IDEMPOTENCY_TTL_MS, AutomationIdentityStore, TsCloudApiError, TsCloudClient, parseCompose, exportCompose, diffCompose, listComposeTemplates, getComposeTemplate, renderComposeTemplate, parseComposeCatalog, planComposeTemplateUpgrade, composeProjectName, buildComposeRuntimeCommand, buildComposeScaleCommand, buildComposeLogsCommand, buildComposeShellCommand, QueueCancellationError, QueueTimeoutError, RetryableOperationError, DurableOperationQueue, DurableQueueWorker, PreviewEnvironmentStore, PreviewEnvironmentService, DEPLOYMENT_QUEUE_KINDS, resolveQueuedDeploymentCommand, createDeploymentQueueHandlers, unsupportedVolumeCapabilities, volumeCapabilities, validateMountPath, validateAttachment, VolumeService, createVolumeQueueHandlers, DockerNamedVolumeDriver, ServerPathVolumeDriver, CloudBlockVolumeDriver, VolumeStore, synchronizeComposeVolumes, completeComposeVolumeDeletion, ComposeApplicationStore, ComposeApplicationService, releaseStrategyCapabilities, assertReleaseStrategy, ReleaseStore, ReleaseService, releaseTrafficPlan, activateImmutableRelease, rollbackImmutableRelease, RELEASE_QUEUE_KINDS, createReleaseQueueHandlers, SourceConnectionStore, SourceProviderError, GithubSourceAdapter, GitlabSourceAdapter, BitbucketSourceAdapter, GiteaSourceAdapter, createSourceAdapter, normalizeSourceEvent, processSourceWebhook, webhookEndpoint, discoverGitRefs, cloneSourceBinding, testSourceConnection, syncSourceRepositories, listSourceReferences, reconcileSourceWebhook, removeSourceWebhook, API_VERSION, openApiDocument, ApiServiceError, requestHash, AutomationApiService, createApiV1Handler, SecurityPostureStore, SECRET_PATTERNS, PreDeployScanner, scanForSecrets, formatScanResults, SecurityScannerRunner, SecretFindingScanner, TrivyImageScanner, AwsIamCapabilityScanner, generateCycloneDxSbom, generateImageSbom, attachSbomToRelease, attachVulnerabilitySummary, createReleaseProvenance, attachProvenanceToRelease, verifyArtifactSignature, securityScope, ensureDefaultSecurityPolicies, recordPreDeploySecretScan, recordSkippedSecretScan, recordDashboardHostPosture, productionChangeReview, secureContainerRelease, runtimeId2 as runtimeId, unsupportedCapabilities, capabilities2 as capabilities, normalizeRuntimeStatus, redactRuntimeConfig, ageSeconds, bytes, discoverRuntimeInventory, ecsWorkloads, lambdaWorkloads, parseDockerInspect, dockerWorkloads, DockerDiscoveryAdapter, parseSystemdRecords, systemdWorkloads, SystemdDiscoveryAdapter, EcsRuntimeAdapter, LambdaRuntimeAdapter, createRuntimeAdapters, resolveRuntimeInventory, authorizeRuntimePath, DIAGNOSTIC_PRESETS, RuntimeOperationService, RuntimeStreamRegistry, DEFAULT_TELEMETRY_POLICY, normalizeTelemetryPolicy, telemetryPolicyKey, loadTelemetryPolicy, saveTelemetryPolicy, telemetryEstimatedMonthlyCost, redactTelemetryText, redactTelemetryValue, pathTemplate, telemetryCursor, telemetryPercentile, telemetryBucketLabel, TelemetryStore, AlertStore, AlertEvaluator, isQuietHours, NotificationRouter, HealthCheckRunner, evaluateTelemetryAlertRules, normalizeScheduleExpression, nextScheduleRuns, previewSchedule, jobProviderCapability, renderServerCron, eventBridgeScheduleInput, reconcileJobObservation, desiredState, ServerCronJobAdapter, EventBridgeJobAdapter, JobProviderReconciler, synchronizeConfiguredJobs, JobService, createJobQueueHandlers, JobStore, dataServiceCapabilities, DataServiceStore, connectionGuidance, DataServiceLifecycle, createDataServiceQueueHandlers, AwsRdsDataAdapter, AwsAuroraDataAdapter, AwsElastiCacheDataAdapter, ServerDataAdapter, ContainerDataAdapter, AwsRdsTransport, AwsAuroraTransport, AwsElastiCacheTransport, BunDockerRuntime, DockerDataTransport, EncryptedDataSecretStore, SystemFleetSshTransport, SshFleetDriver, createFleetQueueHandlers, FleetStore, FleetService, zeroCapacity, capacity, PlacementStore, PlacementService, RemoteBuildService, createRemoteBuildQueueHandlers, TransportRemoteBuildDriver, createServerBuildDriver, createEcsBuildDriver, createAsgBuildDriver, RegionStore, RegionService, createRegionQueueHandlers, AwsRegionalDriver, UnavailableRegionalDriver, canonicalJson, manifestDigest, documentDigest, publicKeyFingerprint, verifyUpdateSignature, updateCompatibility, MaintenanceStore, maintenanceWindowOpen, MaintenanceService, createMaintenanceQueueHandlers, TransportPlatformMaintenanceDriver, ControlPlaneCleanupDriver, TransportDisasterRecoveryDriver, ensureDashboardActor, initializeDashboardControlPlane, synchronizeDashboardUsers, trackDashboardOperation, dashboardPageRoutes, resolveLegacyDashboardRoute, routesForDashboard, deploySite, createStaticApiOriginDependencies, deployStaticApiOrigin, verifyStaticApiOrigin, estimateStaticApiOriginMonthlyCost, createExistingStaticFullStackDependencies, generateExistingStaticFullStackTemplate, deployExistingStaticFullStack, estimateExistingStaticFullStackMonthlyCost, hashContainerContext, createContainerImageDependencies, buildAndPushContainerImage, infraEnvFromOutputs, buildFunctionEnv, deployServerlessApp, redeployServerlessApp, rollbackServerlessApp, setMaintenance, runRemoteCommand, resolveDashboardData, validateBackupDestination, BackupStore, encryptBackup, decryptBackup, backupCredentialStatus, S3BackupDestinationAdapter, BackupCoordinator, createBackupQueueHandlers, AwsDatabaseBackupSource, compressBackup, decompressBackup, BunFilesystemArchiveRuntime, FilesystemBackupSource, LogicalDatabaseBackupSource, BunDockerVolumeRuntime, DockerVolumeBackupSource, ControlPlaneBackupSource, AwsInfrastructureBackupSource, ConfigurationStore, parseDotenv, serializeDotenv, LocalEncryptedConfigurationBackend, AwsSecretsManagerConfigurationBackend, AwsSsmConfigurationBackend, ExternalConfigurationBackend, ConfigurationService, synchronizeConfiguredConfiguration, sanitizeCloudConfig, dashboardActions, resolveDashboardAction, startLocalDashboardServer };
|
package/dist/deploy/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildAndPushContainerImage,
|
|
3
3
|
buildFunctionEnv,
|
|
4
|
-
collectServerDnsDomains,
|
|
5
4
|
createContainerImageDependencies,
|
|
6
5
|
createExistingStaticFullStackDependencies,
|
|
7
6
|
createStaticApiOriginDependencies,
|
|
@@ -19,7 +18,6 @@ import {
|
|
|
19
18
|
infraEnvFromOutputs,
|
|
20
19
|
initializeDashboardControlPlane,
|
|
21
20
|
redeployServerlessApp,
|
|
22
|
-
removeStaleServerAddressRecords,
|
|
23
21
|
resolveDashboardAction,
|
|
24
22
|
resolveDashboardData,
|
|
25
23
|
resolveLegacyDashboardRoute,
|
|
@@ -32,7 +30,7 @@ import {
|
|
|
32
30
|
synchronizeDashboardUsers,
|
|
33
31
|
trackDashboardOperation,
|
|
34
32
|
verifyStaticApiOrigin
|
|
35
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-qbj74thz.js";
|
|
36
34
|
import {
|
|
37
35
|
deleteStaticSite,
|
|
38
36
|
deployStaticSite,
|
|
@@ -55,9 +53,12 @@ import"../chunk-gttvakpv.js";
|
|
|
55
53
|
import {
|
|
56
54
|
MANAGEMENT_DASHBOARD_SITE,
|
|
57
55
|
buildManagementDashboardArtifact,
|
|
56
|
+
collectServerDnsDomains,
|
|
58
57
|
dashboardCredentialsFile,
|
|
59
58
|
ensureManagementDashboard,
|
|
59
|
+
hetznerBoxIpv6,
|
|
60
60
|
isPhpSite,
|
|
61
|
+
removeStaleServerAddressRecords,
|
|
61
62
|
resolveDashboardAuth,
|
|
62
63
|
resolveSiteDeployTarget,
|
|
63
64
|
resolveSiteKind,
|
|
@@ -65,7 +66,7 @@ import {
|
|
|
65
66
|
shipsARelease,
|
|
66
67
|
siteInstallBase,
|
|
67
68
|
validateDeploymentConfig
|
|
68
|
-
} from "../chunk-
|
|
69
|
+
} from "../chunk-gx4288t5.js";
|
|
69
70
|
import"../chunk-1qjyqrc5.js";
|
|
70
71
|
import"../chunk-703nkybg.js";
|
|
71
72
|
import"../chunk-4cjrg98a.js";
|
|
@@ -101,6 +102,7 @@ export {
|
|
|
101
102
|
invalidateCache,
|
|
102
103
|
initializeDashboardControlPlane,
|
|
103
104
|
infraEnvFromOutputs,
|
|
105
|
+
hetznerBoxIpv6,
|
|
104
106
|
hashContainerContext,
|
|
105
107
|
generateStaticSiteTemplate,
|
|
106
108
|
generateExternalDnsStaticSiteTemplate,
|
|
@@ -48,6 +48,7 @@ export declare function resolveDashboardEnvironment(available: readonly string[]
|
|
|
48
48
|
export declare function dashboardDataRefreshDue(lastRefreshedAt: number | undefined, now: number, minimumIntervalMs: number): boolean;
|
|
49
49
|
/** Reject browser cross-site mutations while retaining header-light CLI access. */
|
|
50
50
|
export declare function isTrustedMutationRequest(req: Request): boolean;
|
|
51
|
+
export declare function preserveDashboardSiteSnapshot(previous: Record<string, any> | undefined, next: Record<string, any>): Record<string, any>;
|
|
51
52
|
export declare function sanitizeCloudConfig(config: CloudConfig): Record<string, any>;
|
|
52
53
|
export declare function dashboardActions(environment: EnvironmentType): DashboardAction[];
|
|
53
54
|
export declare function resolveDashboardAction(id: string, environment: EnvironmentType): DashboardAction | undefined;
|
|
@@ -9,8 +9,23 @@ interface ServerSite {
|
|
|
9
9
|
export declare function collectServerDnsDomains(sites?: Record<string, ServerSite>): Set<string>;
|
|
10
10
|
/**
|
|
11
11
|
* A compute deployment owns one address per managed hostname. After an upsert,
|
|
12
|
-
* remove only duplicate
|
|
13
|
-
* of the desired address and leaving every unrelated record untouched.
|
|
12
|
+
* remove only duplicate address records for that exact hostname, preserving one
|
|
13
|
+
* copy of the desired address and leaving every unrelated record untouched.
|
|
14
|
+
*
|
|
15
|
+
* `recordType` selects the family. It used to be hardcoded to 'A', which meant
|
|
16
|
+
* a dual-stack box could clean up its stale IPv4 records but accumulated stale
|
|
17
|
+
* AAAA ones forever — and a stale AAAA is worse than a stale A, because
|
|
18
|
+
* dual-stack clients prefer IPv6 and would keep landing on the dead address.
|
|
14
19
|
*/
|
|
15
|
-
export declare function removeStaleServerAddressRecords(provider: DnsProvider, zone: string, hostname: string, desiredAddress: string): Promise<string[]>;
|
|
20
|
+
export declare function removeStaleServerAddressRecords(provider: DnsProvider, zone: string, hostname: string, desiredAddress: string, recordType?: 'A' | 'AAAA'): Promise<string[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Hetzner hands a cloud server a routed /64 and configures `::1` inside it on
|
|
23
|
+
* the interface, but the API reports the block (`2a01:4f8:c014:6186::/64`), not
|
|
24
|
+
* the address. Publishing the block verbatim as an AAAA record yields a host
|
|
25
|
+
* nothing answers on, so turn it into the address the box actually holds.
|
|
26
|
+
*
|
|
27
|
+
* A plain address (no prefix) is returned unchanged, so this is safe to apply
|
|
28
|
+
* to whatever the driver surfaced.
|
|
29
|
+
*/
|
|
30
|
+
export declare function hetznerBoxIpv6(reported: string | undefined | null): string | undefined;
|
|
16
31
|
export {};
|
|
@@ -6,6 +6,14 @@ export interface HetznerDriverState {
|
|
|
6
6
|
serverName?: string;
|
|
7
7
|
firewallId?: number;
|
|
8
8
|
publicIp?: string;
|
|
9
|
+
/**
|
|
10
|
+
* The box's public IPv6 address, already narrowed from the routed /64 the
|
|
11
|
+
* API reports to the address the interface actually holds. Recorded so a
|
|
12
|
+
* deploy can publish AAAA records alongside the A records without having to
|
|
13
|
+
* call the Hetzner API again — attach-mode tenants read this state and never
|
|
14
|
+
* see the server object at all.
|
|
15
|
+
*/
|
|
16
|
+
publicIpv6?: string;
|
|
9
17
|
deployStoragePath?: string;
|
|
10
18
|
sshUser?: string;
|
|
11
19
|
/** Fleet: network/LB ids + the services box private IP, for deploy + teardown. */
|
package/dist/drivers/index.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export { keyMatchesFilters, migrateObjectStorage, remapKey } from './object-stor
|
|
|
30
30
|
export type { MigrateEndpoint, MigrateError, MigrateOptions, MigratePlanItem, MigrateProgress, MigrateResult, MigrateVerification, } from './object-storage/migrate';
|
|
31
31
|
export * from './ssl';
|
|
32
32
|
export { deployStaticSite, deployStaticSiteFull, uploadStaticFiles, invalidateCache, deleteStaticSite, generateStaticSiteTemplate, deployStaticSiteWithExternalDns, deployStaticSiteWithExternalDnsFull, generateExternalDnsStaticSiteTemplate, deploySite, resolveSiteDeployTarget, resolveSiteKind, validateDeploymentConfig, buildAndPushServerlessImage, buildFunctionEnv, deployServerlessApp, infraEnvFromOutputs, redeployServerlessApp, rollbackServerlessApp, runRemoteCommand, setMaintenance, buildManagementDashboardArtifact, dashboardCredentialsFile, ensureManagementDashboard, MANAGEMENT_DASHBOARD_SITE, resolveDashboardAuth, resolveUiSource, } from './deploy';
|
|
33
|
-
export { collectServerDnsDomains, removeStaleServerAddressRecords } from './deploy/server-dns';
|
|
33
|
+
export { collectServerDnsDomains, hetznerBoxIpv6, removeStaleServerAddressRecords } from './deploy/server-dns';
|
|
34
34
|
export type { EnsureDashboardLogger, ResolvedDashboardAuth, StaticSiteConfig, DeployResult, UploadOptions, ExternalDnsStaticSiteConfig, ExternalDnsDeployResult, DeploySiteConfig, DeploySiteResult, StaticSiteDnsProvider, SiteDeployKind, DeploymentValidationResult, BuildImageOptions, BuiltImage, CodeSource, DeployServerlessOptions, ResolvedContext, } from './deploy';
|
|
35
35
|
export { createCloudDriver, CloudDriverFactory, cloudDrivers, AwsDriver, HetznerDriver, HetznerClient, resolveHetznerApiToken, normalizeSshPublicKey, ensureFirewall, ensureServer, ensureSshKey, serverPublicIpv4, sshExec, sshExecOrThrow, scpUpload, waitForSsh, waitForCloudInit, buildSshArgs, generateUbuntuAppCloudInit, wrapCloudInitUserData, buildHostCleanupScript, buildSiteDeployScript, buildStaticSiteDeployScript, resolveExecStart, deployAllComputeSites, deploySiteRelease, } from './drivers';
|
|
36
36
|
export type { CreateCloudDriverOptions } from './drivers/factory';
|
package/dist/index.js
CHANGED
|
@@ -139,7 +139,6 @@ import {
|
|
|
139
139
|
capabilities,
|
|
140
140
|
capacity,
|
|
141
141
|
cloneSourceBinding,
|
|
142
|
-
collectServerDnsDomains,
|
|
143
142
|
completeComposeVolumeDeletion,
|
|
144
143
|
completeOidcAuthorization,
|
|
145
144
|
composeProjectName,
|
|
@@ -234,7 +233,6 @@ import {
|
|
|
234
233
|
releaseStrategyCapabilities,
|
|
235
234
|
releaseTrafficPlan,
|
|
236
235
|
removeSourceWebhook,
|
|
237
|
-
removeStaleServerAddressRecords,
|
|
238
236
|
renderComposeTemplate,
|
|
239
237
|
renderServerCron,
|
|
240
238
|
requestHash,
|
|
@@ -285,7 +283,7 @@ import {
|
|
|
285
283
|
volumeCapabilities,
|
|
286
284
|
webhookEndpoint,
|
|
287
285
|
zeroCapacity
|
|
288
|
-
} from "./chunk-
|
|
286
|
+
} from "./chunk-qbj74thz.js";
|
|
289
287
|
import {
|
|
290
288
|
deleteStaticSite,
|
|
291
289
|
deployStaticSite,
|
|
@@ -375,6 +373,7 @@ import {
|
|
|
375
373
|
buildStaticSiteDeployScript,
|
|
376
374
|
buildUbuntuBootstrapScript,
|
|
377
375
|
cloudDrivers,
|
|
376
|
+
collectServerDnsDomains,
|
|
378
377
|
createCloudDriver,
|
|
379
378
|
dashboardCredentialsFile,
|
|
380
379
|
deployAllComputeSites,
|
|
@@ -383,7 +382,9 @@ import {
|
|
|
383
382
|
ensureManagementDashboard,
|
|
384
383
|
ensureServer,
|
|
385
384
|
ensureSshKey,
|
|
385
|
+
hetznerBoxIpv6,
|
|
386
386
|
normalizeSshPublicKey,
|
|
387
|
+
removeStaleServerAddressRecords,
|
|
387
388
|
resolveDashboardAuth,
|
|
388
389
|
resolveExecStart,
|
|
389
390
|
resolveHetznerApiToken,
|
|
@@ -398,7 +399,7 @@ import {
|
|
|
398
399
|
waitForCloudInit,
|
|
399
400
|
waitForSsh,
|
|
400
401
|
wrapCloudInitUserData
|
|
401
|
-
} from "./chunk-
|
|
402
|
+
} from "./chunk-gx4288t5.js";
|
|
402
403
|
import {
|
|
403
404
|
ABTestManager,
|
|
404
405
|
AI,
|
|
@@ -5345,6 +5346,7 @@ export {
|
|
|
5345
5346
|
infraEnvFromOutputs,
|
|
5346
5347
|
imageScanningManager,
|
|
5347
5348
|
hotp,
|
|
5349
|
+
hetznerBoxIpv6,
|
|
5348
5350
|
healthCheckManager,
|
|
5349
5351
|
hashString,
|
|
5350
5352
|
hashManifest,
|