@stacksjs/ts-cloud 0.7.104 → 0.7.108
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/aws/index.js +2 -14
- package/dist/bin/cli.js +784 -785
- package/dist/bin/dashboard-server.js +291 -291
- package/dist/{chunk-dmzez5f8.js → chunk-33sy72r8.js} +52 -3
- package/dist/{chunk-5cz14833.js → chunk-ef2dwfrg.js} +3 -3
- package/dist/{chunk-gtz4jar2.js → chunk-eg8ck25v.js} +859 -151
- package/dist/{chunk-6hymgy61.js → chunk-gttvakpv.js} +1 -85
- package/dist/{chunk-adgz2c49.js → chunk-s9c2x5jv.js} +2 -2
- package/dist/deploy/dashboard-bundle-encoding.test.d.ts +1 -0
- package/dist/deploy/dashboard-payload.d.ts +20 -0
- package/dist/deploy/dashboard-payload.test.d.ts +1 -0
- package/dist/deploy/dashboard-topology.d.ts +85 -0
- package/dist/deploy/dashboard-topology.test.d.ts +1 -0
- package/dist/deploy/egress-collection.d.ts +60 -0
- package/dist/deploy/index.d.ts +2 -0
- package/dist/deploy/index.js +16 -4
- package/dist/dns/index.d.ts +0 -2
- package/dist/dns/index.js +2 -14
- package/dist/drivers/index.js +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +5 -17
- package/dist/ui/404.html +1 -0
- package/dist/ui/access-denied.html +2 -2
- package/dist/ui/account/automation.html +4 -4
- package/dist/ui/account/security.html +2 -2
- package/dist/ui/applications/compose.html +3 -3
- package/dist/ui/applications/new.html +2 -2
- package/dist/ui/data/backups.html +22 -9
- package/dist/ui/data/services.html +22 -9
- package/dist/ui/data/volumes.html +22 -9
- package/dist/ui/index.html +22 -9
- package/dist/ui/infrastructure/topology.html +2223 -0
- package/dist/ui/integrations.html +2 -2
- package/dist/ui/operations/alerts.html +22 -9
- package/dist/ui/operations/configuration.html +4 -4
- package/dist/ui/operations/jobs.html +22 -9
- package/dist/ui/operations/maintenance.html +4 -4
- package/dist/ui/operations/observability.html +21 -8
- package/dist/ui/operations/previews.html +4 -4
- package/dist/ui/operations/queue.html +4 -4
- package/dist/ui/operations/regions.html +3 -3
- package/dist/ui/operations/releases.html +4 -4
- package/dist/ui/operations/workloads.html +22 -9
- 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/diagnostics.html +2 -2
- package/dist/ui/server/firewall.html +3 -3
- package/dist/ui/server/fleet.html +22 -9
- package/dist/ui/server/logs.html +22 -9
- package/dist/ui/server/metrics.html +130 -14
- package/dist/ui/server/security.html +2 -2
- package/dist/ui/server/services.html +2 -2
- package/dist/ui/server/sites.html +21 -8
- package/dist/ui/server/ssh-keys.html +4 -4
- package/dist/ui/server/team.html +4 -4
- package/dist/ui/server/terminal.html +1 -1
- package/dist/ui/serverless/alarms.html +4 -4
- package/dist/ui/serverless/assets.html +2 -2
- package/dist/ui/serverless/cost.html +1 -1
- package/dist/ui/serverless/data.html +4 -4
- package/dist/ui/serverless/deployments.html +2 -2
- package/dist/ui/serverless/firewall.html +2 -2
- package/dist/ui/serverless/functions.html +4 -4
- package/dist/ui/serverless/logs.html +22 -9
- package/dist/ui/serverless/metrics.html +2 -2
- package/dist/ui/serverless/queues.html +4 -4
- package/dist/ui/serverless/secrets.html +4 -4
- package/dist/ui/serverless/traces.html +4 -4
- package/dist/ui/serverless.html +4 -4
- package/dist/ui-src/functions/requestJson.ts +41 -0
- package/dist/ui-src/functions/useOpConfirm.ts +132 -0
- package/dist/ui-src/functions/usePolling.ts +98 -0
- package/dist/ui-src/functions/useTerminal.ts +79 -0
- package/dist/ui-src/pages/infrastructure/topology.stx +517 -0
- package/dist/ui-src/pages/partials/nav.stx +2 -0
- package/dist/ui-src/pages/server/metrics.stx +140 -6
- package/dist/ui-src/src/topology.ts +485 -0
- package/package.json +3 -3
- package/dist/dns/mail-records.d.ts +0 -82
|
@@ -306,90 +306,6 @@ class PorkbunProvider {
|
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
|
-
// src/dns/mail-records.ts
|
|
310
|
-
function buildSpfValue(options) {
|
|
311
|
-
const mechanisms = ["v=spf1"];
|
|
312
|
-
if (options.ip)
|
|
313
|
-
mechanisms.push(`ip4:${options.ip}`);
|
|
314
|
-
for (const include of options.spfIncludes || []) {
|
|
315
|
-
mechanisms.push(include.startsWith("include:") ? include : `include:${include}`);
|
|
316
|
-
}
|
|
317
|
-
mechanisms.push("~all");
|
|
318
|
-
return mechanisms.join(" ");
|
|
319
|
-
}
|
|
320
|
-
function normalizeDkimKey(key) {
|
|
321
|
-
return String(key || "").replace(/-----(?:BEGIN|END)[^-]*-----/g, "").replace(/\s+/g, "");
|
|
322
|
-
}
|
|
323
|
-
function buildDkimValue(publicKey) {
|
|
324
|
-
return `v=DKIM1; k=rsa; p=${normalizeDkimKey(publicKey)}`;
|
|
325
|
-
}
|
|
326
|
-
function buildDmarcValue(options) {
|
|
327
|
-
const parts = [`v=DMARC1`, `p=${options.dmarcPolicy || "none"}`];
|
|
328
|
-
if (options.dmarcReportTo)
|
|
329
|
-
parts.push(`rua=mailto:${options.dmarcReportTo}`);
|
|
330
|
-
return `${parts.join("; ")};`;
|
|
331
|
-
}
|
|
332
|
-
function buildMailDnsRecords(options) {
|
|
333
|
-
if (!options.domain)
|
|
334
|
-
throw new Error("A domain is required to build mail DNS records.");
|
|
335
|
-
if (!options.mailHost)
|
|
336
|
-
throw new Error("A mail host is required to build mail DNS records.");
|
|
337
|
-
const ttl = options.ttl ?? 600;
|
|
338
|
-
const selector = options.dkimSelector || "default";
|
|
339
|
-
const records = [
|
|
340
|
-
{
|
|
341
|
-
name: "@",
|
|
342
|
-
type: "MX",
|
|
343
|
-
content: options.mailHost,
|
|
344
|
-
priority: options.mxPriority ?? 10,
|
|
345
|
-
ttl
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
name: "@",
|
|
349
|
-
type: "TXT",
|
|
350
|
-
content: buildSpfValue(options),
|
|
351
|
-
ttl
|
|
352
|
-
},
|
|
353
|
-
{
|
|
354
|
-
name: "_dmarc",
|
|
355
|
-
type: "TXT",
|
|
356
|
-
content: buildDmarcValue(options),
|
|
357
|
-
ttl
|
|
358
|
-
}
|
|
359
|
-
];
|
|
360
|
-
if (normalizeDkimKey(options.dkimPublicKey || "")) {
|
|
361
|
-
records.push({
|
|
362
|
-
name: `${selector}._domainkey`,
|
|
363
|
-
type: "TXT",
|
|
364
|
-
content: buildDkimValue(options.dkimPublicKey),
|
|
365
|
-
ttl
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
return records;
|
|
369
|
-
}
|
|
370
|
-
async function syncMailDns(provider, options) {
|
|
371
|
-
const records = buildMailDnsRecords(options);
|
|
372
|
-
const applied = [];
|
|
373
|
-
for (const record of records) {
|
|
374
|
-
try {
|
|
375
|
-
const result = await provider.upsertRecord(options.domain, record);
|
|
376
|
-
applied.push({
|
|
377
|
-
name: record.name,
|
|
378
|
-
type: record.type,
|
|
379
|
-
ok: Boolean(result.success),
|
|
380
|
-
message: result.message
|
|
381
|
-
});
|
|
382
|
-
} catch (error) {
|
|
383
|
-
applied.push({
|
|
384
|
-
name: record.name,
|
|
385
|
-
type: record.type,
|
|
386
|
-
ok: false,
|
|
387
|
-
message: error instanceof Error ? error.message : String(error)
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
return { domain: options.domain, applied, ok: applied.every((entry) => entry.ok) };
|
|
392
|
-
}
|
|
393
309
|
// src/dns/godaddy.ts
|
|
394
310
|
var GODADDY_API_URL = "https://api.godaddy.com";
|
|
395
311
|
var GODADDY_OTE_API_URL = "https://api.ote-godaddy.com";
|
|
@@ -1966,4 +1882,4 @@ class DnsProviderFactory {
|
|
|
1966
1882
|
}
|
|
1967
1883
|
var dnsProviders = new DnsProviderFactory;
|
|
1968
1884
|
|
|
1969
|
-
export { PorkbunProvider,
|
|
1885
|
+
export { PorkbunProvider, GoDaddyProvider, CloudflareProvider, Route53Provider, UnifiedDnsValidator, createPorkbunValidator, createGoDaddyValidator, createRoute53Validator, createDnsProvider, detectDnsProvider, DnsProviderFactory, dnsProviders, ACMClient, ACMDnsValidator };
|
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
generateStaticSiteTemplate,
|
|
6
6
|
invalidateCache,
|
|
7
7
|
uploadStaticFiles
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ef2dwfrg.js";
|
|
9
9
|
import"./chunk-01d86gt1.js";
|
|
10
|
-
import"./chunk-
|
|
10
|
+
import"./chunk-gttvakpv.js";
|
|
11
11
|
import"./chunk-4cjrg98a.js";
|
|
12
12
|
import"./chunk-32e7ya18.js";
|
|
13
13
|
import"./chunk-wj3s95p9.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialize the dashboard payload for the trip through an environment variable.
|
|
3
|
+
*
|
|
4
|
+
* The UI is rebuilt by spawning stx with the resolved data in
|
|
5
|
+
* `TSCLOUD_DASHBOARD_DATA`. Environment variables are bytes, and the child
|
|
6
|
+
* decodes them using its locale — so on a box whose locale is `POSIX`/`C`
|
|
7
|
+
* (the default on most minimal server images) every non-ASCII character in the
|
|
8
|
+
* payload comes back mis-decoded and is then re-encoded as UTF-8, arriving in
|
|
9
|
+
* the built page as mojibake: `—` renders as `â€"`, `·` as `·`.
|
|
10
|
+
*
|
|
11
|
+
* That is not hypothetical or cosmetic. It corrupts any project name, domain,
|
|
12
|
+
* or status text carrying an accent or a dash, on exactly the hosts operators
|
|
13
|
+
* are most likely to provision.
|
|
14
|
+
*
|
|
15
|
+
* Escaping every non-ASCII code point makes the transport pure ASCII, which no
|
|
16
|
+
* locale can misread. `JSON.parse` on the other side turns the escapes back
|
|
17
|
+
* into the original characters, so the payload is unchanged — only its wire
|
|
18
|
+
* form is narrowed.
|
|
19
|
+
*/
|
|
20
|
+
export declare function encodeDashboardPayload(data: unknown): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive the infrastructure topology the dashboard draws as a diagram.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately built from the *resolved dashboard data* rather than straight
|
|
5
|
+
* from the cloud config: the diagram then shows what the rest of the cockpit
|
|
6
|
+
* shows — the same sites, services, functions and queues, with the same
|
|
7
|
+
* statuses — instead of a second, subtly different reading of the world.
|
|
8
|
+
*
|
|
9
|
+
* Nothing here invents a resource. A slice that could not be read simply
|
|
10
|
+
* contributes no node, and the reason lands in `notes` so the page can say so
|
|
11
|
+
* out loud. See `packages/ui/pages/infrastructure/topology.stx`.
|
|
12
|
+
*/
|
|
13
|
+
export type TopologyStatus = 'ok' | 'warn' | 'bad' | 'idle' | 'unknown';
|
|
14
|
+
export type TopologyKind = 'internet' | 'dns' | 'waf' | 'firewall' | 'cdn' | 'gateway' | 'proxy' | 'site' | 'function' | 'worker' | 'scheduler' | 'queue' | 'cache' | 'database' | 'storage' | 'filesystem' | 'backup';
|
|
15
|
+
/** How traffic or state moves along an edge — drives the edge styling. */
|
|
16
|
+
export type TopologyFlow = 'request' | 'async' | 'data' | 'backup';
|
|
17
|
+
export interface TopologyFact {
|
|
18
|
+
label: string;
|
|
19
|
+
value: string;
|
|
20
|
+
}
|
|
21
|
+
export interface TopologyNode {
|
|
22
|
+
id: string;
|
|
23
|
+
label: string;
|
|
24
|
+
kind: TopologyKind;
|
|
25
|
+
/** Row in the diagram: 0 is the internet, higher is deeper in the stack. */
|
|
26
|
+
layer: number;
|
|
27
|
+
status: TopologyStatus;
|
|
28
|
+
/** One-line subtitle: runtime, engine, instance class… */
|
|
29
|
+
sub?: string;
|
|
30
|
+
facts: TopologyFact[];
|
|
31
|
+
/** Dashboard page this resource is managed from. */
|
|
32
|
+
href?: string;
|
|
33
|
+
/** Boundary this node sits inside (a box, a VPC, a managed account). */
|
|
34
|
+
group?: string;
|
|
35
|
+
/** Outside the deployment — drawn as an open shape. */
|
|
36
|
+
external?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface TopologyLink {
|
|
39
|
+
source: string;
|
|
40
|
+
target: string;
|
|
41
|
+
flow: TopologyFlow;
|
|
42
|
+
label?: string;
|
|
43
|
+
status?: TopologyStatus;
|
|
44
|
+
}
|
|
45
|
+
export interface TopologyGroup {
|
|
46
|
+
id: string;
|
|
47
|
+
label: string;
|
|
48
|
+
sub?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface TopologyLayer {
|
|
51
|
+
index: number;
|
|
52
|
+
id: string;
|
|
53
|
+
label: string;
|
|
54
|
+
}
|
|
55
|
+
/** Identity the data bag doesn't carry on its own. */
|
|
56
|
+
export interface TopologyContext {
|
|
57
|
+
project?: string;
|
|
58
|
+
environment?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface TopologyModel {
|
|
61
|
+
mode: 'server' | 'serverless';
|
|
62
|
+
project: string;
|
|
63
|
+
environment: string;
|
|
64
|
+
provider: string;
|
|
65
|
+
region: string;
|
|
66
|
+
generatedAt: string;
|
|
67
|
+
layers: TopologyLayer[];
|
|
68
|
+
groups: TopologyGroup[];
|
|
69
|
+
nodes: TopologyNode[];
|
|
70
|
+
links: TopologyLink[];
|
|
71
|
+
/** What the diagram could not show, and why. Never left implicit. */
|
|
72
|
+
notes: string[];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Server-mode topology: clients → DNS → host firewall → reverse proxy → sites,
|
|
76
|
+
* with the box's workers, scheduler, data services and backups hanging off it.
|
|
77
|
+
*/
|
|
78
|
+
export declare function buildServerTopology(data: Record<string, any>, context?: TopologyContext): TopologyModel;
|
|
79
|
+
/**
|
|
80
|
+
* Serverless-mode topology: clients → DNS → WAF/CDN → the HTTP entry point →
|
|
81
|
+
* functions, with queues, database, cache and object storage behind them.
|
|
82
|
+
*/
|
|
83
|
+
export declare function buildServerlessTopology(data: Record<string, any>, context?: TopologyContext): TopologyModel;
|
|
84
|
+
/** Build the topology matching the dashboard mode the data was resolved for. */
|
|
85
|
+
export declare function buildTopology(mode: 'server' | 'serverless', data: Record<string, any>, context?: TopologyContext): TopologyModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Object-storage egress collection.
|
|
3
|
+
*
|
|
4
|
+
* Host network counters answer a different question than the one an
|
|
5
|
+
* object-storage invoice asks. When an application redirects downloads to a
|
|
6
|
+
* bucket (or to a CDN in front of one), those bytes never traverse the host's
|
|
7
|
+
* NIC — the box can sit idle while the bucket serves terabytes. The only
|
|
8
|
+
* component that knows a transfer happened, and how large it was, is the
|
|
9
|
+
* application that authorized it, so this polls it instead of guessing.
|
|
10
|
+
*
|
|
11
|
+
* The reports carry a per-day history rather than a single counter, and that is
|
|
12
|
+
* deliberately exploited here: each day becomes one metric point stamped with
|
|
13
|
+
* that day's own timestamp. Because record ids are a deterministic hash of
|
|
14
|
+
* (source, name, timestamp) and the store inserts with OR IGNORE, replaying a
|
|
15
|
+
* history is idempotent. A collector that was down for six hours — or six days
|
|
16
|
+
* — backfills what it missed on its next run instead of leaving a hole, and
|
|
17
|
+
* re-reading the same day never double-counts it.
|
|
18
|
+
*/
|
|
19
|
+
import type { EgressEndpointConfig, EgressReport } from '@ts-cloud/core';
|
|
20
|
+
export interface EgressMetric {
|
|
21
|
+
name: string;
|
|
22
|
+
value: number;
|
|
23
|
+
unit: string;
|
|
24
|
+
/** ISO timestamp this point belongs to. */
|
|
25
|
+
timestamp: string;
|
|
26
|
+
attributes: Record<string, string>;
|
|
27
|
+
}
|
|
28
|
+
export interface EgressCollectionResult {
|
|
29
|
+
metrics: EgressMetric[];
|
|
30
|
+
errors: Array<{
|
|
31
|
+
source: string;
|
|
32
|
+
message: string;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Turn one report into metric points.
|
|
37
|
+
*
|
|
38
|
+
* Pure: no clock, no network. `now` is the timestamp for the point-in-time
|
|
39
|
+
* series (month-to-date, projection, allowance), which describe the moment of
|
|
40
|
+
* collection rather than a calendar day.
|
|
41
|
+
*/
|
|
42
|
+
export declare function egressReportMetrics(report: EgressReport | null | undefined, options: {
|
|
43
|
+
name: string;
|
|
44
|
+
now: string;
|
|
45
|
+
maxReplayDays?: number;
|
|
46
|
+
}): EgressMetric[];
|
|
47
|
+
/**
|
|
48
|
+
* Fetch one endpoint's report.
|
|
49
|
+
*
|
|
50
|
+
* Returns null on any failure. An egress endpoint is supplementary — it must
|
|
51
|
+
* never be able to fail a telemetry collection that is also carrying host
|
|
52
|
+
* metrics, so problems surface as an error entry rather than a throw.
|
|
53
|
+
*/
|
|
54
|
+
export declare function fetchEgressReport(endpoint: EgressEndpointConfig, env?: NodeJS.ProcessEnv, fetchImpl?: typeof fetch): Promise<EgressReport | null>;
|
|
55
|
+
/** Poll every configured endpoint and flatten the results. */
|
|
56
|
+
export declare function collectEgressMetrics(endpoints: EgressEndpointConfig[] | undefined, options: {
|
|
57
|
+
now: string;
|
|
58
|
+
env?: NodeJS.ProcessEnv;
|
|
59
|
+
fetchImpl?: typeof fetch;
|
|
60
|
+
}): Promise<EgressCollectionResult>;
|
package/dist/deploy/index.d.ts
CHANGED
|
@@ -15,5 +15,7 @@ export * from './container-image';
|
|
|
15
15
|
export { buildFunctionEnv, type CodeSource, deployServerlessApp, type DeployServerlessOptions, infraEnvFromOutputs, redeployServerlessApp, type ResolvedContext, rollbackServerlessApp, runRemoteCommand, setMaintenance, } from './serverless-app';
|
|
16
16
|
export { buildAndPushServerlessImage, type BuildImageOptions, type BuiltImage } from './serverless-image';
|
|
17
17
|
export { type DashboardData, resolveDashboardData } from './dashboard-data';
|
|
18
|
+
export { buildServerlessTopology, buildServerTopology, buildTopology, type TopologyContext, type TopologyFact, type TopologyFlow, type TopologyGroup, type TopologyKind, type TopologyLayer, type TopologyLink, type TopologyModel, type TopologyNode, type TopologyStatus, } from './dashboard-topology';
|
|
19
|
+
export { collectEgressMetrics, type EgressCollectionResult, egressReportMetrics, type EgressMetric, fetchEgressReport, } from './egress-collection';
|
|
18
20
|
export { dashboardActions, resolveDashboardAction, sanitizeCloudConfig, startLocalDashboardServer, type DashboardAction, type LocalDashboardServer, type LocalDashboardServerOptions, } from './local-dashboard-server';
|
|
19
21
|
export { buildManagementDashboardArtifact, dashboardCredentialsFile, ensureManagementDashboard, type EnsureDashboardLogger, MANAGEMENT_DASHBOARD_SITE, resolveDashboardAuth, type ResolvedDashboardAuth, resolveUiSource, } from './management-dashboard';
|
package/dist/deploy/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildAndPushContainerImage,
|
|
3
3
|
buildFunctionEnv,
|
|
4
|
+
buildServerTopology,
|
|
5
|
+
buildServerlessTopology,
|
|
6
|
+
buildTopology,
|
|
7
|
+
collectEgressMetrics,
|
|
4
8
|
createContainerImageDependencies,
|
|
5
9
|
createExistingStaticFullStackDependencies,
|
|
6
10
|
createStaticApiOriginDependencies,
|
|
@@ -10,9 +14,11 @@ import {
|
|
|
10
14
|
deployServerlessApp,
|
|
11
15
|
deploySite,
|
|
12
16
|
deployStaticApiOrigin,
|
|
17
|
+
egressReportMetrics,
|
|
13
18
|
ensureDashboardActor,
|
|
14
19
|
estimateExistingStaticFullStackMonthlyCost,
|
|
15
20
|
estimateStaticApiOriginMonthlyCost,
|
|
21
|
+
fetchEgressReport,
|
|
16
22
|
generateExistingStaticFullStackTemplate,
|
|
17
23
|
hashContainerContext,
|
|
18
24
|
infraEnvFromOutputs,
|
|
@@ -30,7 +36,7 @@ import {
|
|
|
30
36
|
synchronizeDashboardUsers,
|
|
31
37
|
trackDashboardOperation,
|
|
32
38
|
verifyStaticApiOrigin
|
|
33
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-eg8ck25v.js";
|
|
34
40
|
import {
|
|
35
41
|
deleteStaticSite,
|
|
36
42
|
deployStaticSite,
|
|
@@ -41,7 +47,7 @@ import {
|
|
|
41
47
|
generateStaticSiteTemplate,
|
|
42
48
|
invalidateCache,
|
|
43
49
|
uploadStaticFiles
|
|
44
|
-
} from "../chunk-
|
|
50
|
+
} from "../chunk-ef2dwfrg.js";
|
|
45
51
|
import {
|
|
46
52
|
buildAndPushServerlessImage
|
|
47
53
|
} from "../chunk-3g4r09dd.js";
|
|
@@ -49,7 +55,7 @@ import"../chunk-ybcz6sxc.js";
|
|
|
49
55
|
import"../chunk-01d86gt1.js";
|
|
50
56
|
import"../chunk-50jpda9q.js";
|
|
51
57
|
import"../chunk-he9a874b.js";
|
|
52
|
-
import"../chunk-
|
|
58
|
+
import"../chunk-gttvakpv.js";
|
|
53
59
|
import {
|
|
54
60
|
IPV6_EXCLUDED_HOST_LABELS,
|
|
55
61
|
MANAGEMENT_DASHBOARD_SITE,
|
|
@@ -70,7 +76,7 @@ import {
|
|
|
70
76
|
siteInstallBase,
|
|
71
77
|
validateDeploymentConfig,
|
|
72
78
|
verifyAddressRecord
|
|
73
|
-
} from "../chunk-
|
|
79
|
+
} from "../chunk-33sy72r8.js";
|
|
74
80
|
import"../chunk-c6db5m63.js";
|
|
75
81
|
import"../chunk-7m60qnc8.js";
|
|
76
82
|
import"../chunk-4cjrg98a.js";
|
|
@@ -114,10 +120,12 @@ export {
|
|
|
114
120
|
generateStaticSiteTemplate,
|
|
115
121
|
generateExternalDnsStaticSiteTemplate,
|
|
116
122
|
generateExistingStaticFullStackTemplate,
|
|
123
|
+
fetchEgressReport,
|
|
117
124
|
estimateStaticApiOriginMonthlyCost,
|
|
118
125
|
estimateExistingStaticFullStackMonthlyCost,
|
|
119
126
|
ensureManagementDashboard,
|
|
120
127
|
ensureDashboardActor,
|
|
128
|
+
egressReportMetrics,
|
|
121
129
|
deployStaticSiteWithExternalDnsFull,
|
|
122
130
|
deployStaticSiteWithExternalDns,
|
|
123
131
|
deployStaticSiteFull,
|
|
@@ -134,6 +142,10 @@ export {
|
|
|
134
142
|
createExistingStaticFullStackDependencies,
|
|
135
143
|
createContainerImageDependencies,
|
|
136
144
|
collectServerDnsDomains,
|
|
145
|
+
collectEgressMetrics,
|
|
146
|
+
buildTopology,
|
|
147
|
+
buildServerlessTopology,
|
|
148
|
+
buildServerTopology,
|
|
137
149
|
buildManagementDashboardArtifact,
|
|
138
150
|
buildFunctionEnv,
|
|
139
151
|
buildAndPushServerlessImage,
|
package/dist/dns/index.d.ts
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export * from './types';
|
|
6
6
|
export { PorkbunProvider } from './porkbun';
|
|
7
|
-
export { buildDkimValue, buildDmarcValue, buildMailDnsRecords, buildSpfValue, normalizeDkimKey, syncMailDns, } from './mail-records';
|
|
8
|
-
export type { MailDnsOptions, MailDnsSyncResult } from './mail-records';
|
|
9
7
|
export { GoDaddyProvider } from './godaddy';
|
|
10
8
|
export { CloudflareProvider } from './cloudflare';
|
|
11
9
|
export { Route53Provider } from './route53-adapter';
|
package/dist/dns/index.js
CHANGED
|
@@ -5,35 +5,23 @@ import {
|
|
|
5
5
|
PorkbunProvider,
|
|
6
6
|
Route53Provider,
|
|
7
7
|
UnifiedDnsValidator,
|
|
8
|
-
buildDkimValue,
|
|
9
|
-
buildDmarcValue,
|
|
10
|
-
buildMailDnsRecords,
|
|
11
|
-
buildSpfValue,
|
|
12
8
|
createDnsProvider,
|
|
13
9
|
createGoDaddyValidator,
|
|
14
10
|
createPorkbunValidator,
|
|
15
11
|
createRoute53Validator,
|
|
16
12
|
detectDnsProvider,
|
|
17
|
-
dnsProviders
|
|
18
|
-
|
|
19
|
-
syncMailDns
|
|
20
|
-
} from "../chunk-6hymgy61.js";
|
|
13
|
+
dnsProviders
|
|
14
|
+
} from "../chunk-gttvakpv.js";
|
|
21
15
|
import"../chunk-32e7ya18.js";
|
|
22
16
|
import"../chunk-zqtpg06c.js";
|
|
23
17
|
import"../chunk-v0bahtg2.js";
|
|
24
18
|
export {
|
|
25
|
-
syncMailDns,
|
|
26
|
-
normalizeDkimKey,
|
|
27
19
|
dnsProviders,
|
|
28
20
|
detectDnsProvider,
|
|
29
21
|
createRoute53Validator,
|
|
30
22
|
createPorkbunValidator,
|
|
31
23
|
createGoDaddyValidator,
|
|
32
24
|
createDnsProvider,
|
|
33
|
-
buildSpfValue,
|
|
34
|
-
buildMailDnsRecords,
|
|
35
|
-
buildDmarcValue,
|
|
36
|
-
buildDkimValue,
|
|
37
25
|
UnifiedDnsValidator,
|
|
38
26
|
Route53Provider,
|
|
39
27
|
PorkbunProvider,
|
package/dist/drivers/index.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -37,8 +37,7 @@ export { createCloudDriver, CloudDriverFactory, cloudDrivers, AwsDriver, Hetzner
|
|
|
37
37
|
export type { CreateCloudDriverOptions } from './drivers/factory';
|
|
38
38
|
export { dashboardActions, resolveDashboardAction, sanitizeCloudConfig, startLocalDashboardServer, } from './deploy/local-dashboard-server';
|
|
39
39
|
export type { DashboardAction, LocalDashboardServer, LocalDashboardServerOptions, } from './deploy/local-dashboard-server';
|
|
40
|
-
export { createDnsProvider, detectDnsProvider, DnsProviderFactory, dnsProviders, PorkbunProvider, GoDaddyProvider, Route53Provider, UnifiedDnsValidator, createPorkbunValidator, createGoDaddyValidator, createRoute53Validator,
|
|
41
|
-
export type { MailDnsOptions, MailDnsSyncResult } from './dns';
|
|
40
|
+
export { createDnsProvider, detectDnsProvider, DnsProviderFactory, dnsProviders, PorkbunProvider, GoDaddyProvider, Route53Provider, UnifiedDnsValidator, createPorkbunValidator, createGoDaddyValidator, createRoute53Validator, } from './dns';
|
|
42
41
|
export * from './source';
|
|
43
42
|
export * from './queue';
|
|
44
43
|
export * from './backups';
|
package/dist/index.js
CHANGED
|
@@ -283,7 +283,7 @@ import {
|
|
|
283
283
|
volumeCapabilities,
|
|
284
284
|
webhookEndpoint,
|
|
285
285
|
zeroCapacity
|
|
286
|
-
} from "./chunk-
|
|
286
|
+
} from "./chunk-eg8ck25v.js";
|
|
287
287
|
import {
|
|
288
288
|
deleteStaticSite,
|
|
289
289
|
deployStaticSite,
|
|
@@ -294,7 +294,7 @@ import {
|
|
|
294
294
|
generateStaticSiteTemplate,
|
|
295
295
|
invalidateCache,
|
|
296
296
|
uploadStaticFiles
|
|
297
|
-
} from "./chunk-
|
|
297
|
+
} from "./chunk-ef2dwfrg.js";
|
|
298
298
|
import {
|
|
299
299
|
buildAndPushServerlessImage
|
|
300
300
|
} from "./chunk-3g4r09dd.js";
|
|
@@ -353,19 +353,13 @@ import {
|
|
|
353
353
|
PorkbunProvider,
|
|
354
354
|
Route53Provider,
|
|
355
355
|
UnifiedDnsValidator,
|
|
356
|
-
buildDkimValue,
|
|
357
|
-
buildDmarcValue,
|
|
358
|
-
buildMailDnsRecords,
|
|
359
|
-
buildSpfValue,
|
|
360
356
|
createDnsProvider,
|
|
361
357
|
createGoDaddyValidator,
|
|
362
358
|
createPorkbunValidator,
|
|
363
359
|
createRoute53Validator,
|
|
364
360
|
detectDnsProvider,
|
|
365
|
-
dnsProviders
|
|
366
|
-
|
|
367
|
-
syncMailDns
|
|
368
|
-
} from "./chunk-6hymgy61.js";
|
|
361
|
+
dnsProviders
|
|
362
|
+
} from "./chunk-gttvakpv.js";
|
|
369
363
|
import {
|
|
370
364
|
AwsDriver,
|
|
371
365
|
CloudDriverFactory,
|
|
@@ -411,7 +405,7 @@ import {
|
|
|
411
405
|
waitForCloudInit,
|
|
412
406
|
waitForSsh,
|
|
413
407
|
wrapCloudInitUserData
|
|
414
|
-
} from "./chunk-
|
|
408
|
+
} from "./chunk-33sy72r8.js";
|
|
415
409
|
import {
|
|
416
410
|
ABTestManager,
|
|
417
411
|
AI,
|
|
@@ -5169,7 +5163,6 @@ export {
|
|
|
5169
5163
|
synchronizeConfiguredConfiguration,
|
|
5170
5164
|
synchronizeComposeVolumes,
|
|
5171
5165
|
syncSourceRepositories,
|
|
5172
|
-
syncMailDns,
|
|
5173
5166
|
suggestRegions,
|
|
5174
5167
|
suggestRegionPairs,
|
|
5175
5168
|
suggestQuotaIncrease,
|
|
@@ -5320,7 +5313,6 @@ export {
|
|
|
5320
5313
|
normalizeScheduleExpression,
|
|
5321
5314
|
normalizeRuntimeStatus,
|
|
5322
5315
|
normalizePublicIpv6,
|
|
5323
|
-
normalizeDkimKey,
|
|
5324
5316
|
nextScheduleRuns,
|
|
5325
5317
|
networkSecurityManager,
|
|
5326
5318
|
needsRenewal,
|
|
@@ -5594,18 +5586,14 @@ export {
|
|
|
5594
5586
|
bytes,
|
|
5595
5587
|
buildStaticSiteDeployScript,
|
|
5596
5588
|
buildSshArgs,
|
|
5597
|
-
buildSpfValue,
|
|
5598
5589
|
buildSiteDeployScript,
|
|
5599
5590
|
buildPhpRuntimeLayerZip,
|
|
5600
5591
|
buildOptimizationManager,
|
|
5601
5592
|
buildNodeRuntimeLayerZip,
|
|
5602
5593
|
buildMediaCdnPlan,
|
|
5603
5594
|
buildManagementDashboardArtifact,
|
|
5604
|
-
buildMailDnsRecords,
|
|
5605
5595
|
buildHostCleanupScript,
|
|
5606
5596
|
buildFunctionEnv,
|
|
5607
|
-
buildDmarcValue,
|
|
5608
|
-
buildDkimValue,
|
|
5609
5597
|
buildComposeShellCommand,
|
|
5610
5598
|
buildComposeScaleCommand,
|
|
5611
5599
|
buildComposeRuntimeCommand,
|
package/dist/ui/404.html
CHANGED
|
@@ -793,6 +793,7 @@ video {
|
|
|
793
793
|
|
|
794
794
|
<section class="nav-group">
|
|
795
795
|
<h2>Infrastructure</h2>
|
|
796
|
+
<a class="" href="/infrastructure/topology?env=production">Infrastructure map</a>
|
|
796
797
|
<a class="" href="/data/services?env=production">Data services</a>
|
|
797
798
|
<a class="" href="/data/volumes?env=production">Persistent volumes</a>
|
|
798
799
|
<a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a>
|