@stacksjs/ts-cloud 0.12.11 → 0.12.13
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 +1 -1
- package/dist/bin/chunk-0vsxpmfj.js +3 -0
- package/dist/bin/chunk-12e9v1dw.js +3 -0
- package/dist/bin/chunk-13dhcjjb.js +60 -0
- package/dist/bin/chunk-1fj5gk6r.js +725 -0
- package/dist/bin/chunk-1j2sja1j.js +1 -0
- package/dist/bin/chunk-1s4dny8d.js +1 -0
- package/dist/bin/chunk-2hpnd4g4.js +1 -0
- package/dist/bin/chunk-49sthm4q.js +2 -0
- package/dist/bin/chunk-4yntpqbe.js +1 -0
- package/dist/bin/chunk-4zbnwt9b.js +2 -0
- package/dist/bin/chunk-55kmbzr5.js +1 -0
- package/dist/{chunk-2ybcnrte.js → bin/chunk-57w9nsjk.js} +3 -3
- package/dist/bin/chunk-5gehfky4.js +2 -0
- package/dist/bin/chunk-6xw0r4gn.js +7364 -0
- package/dist/bin/chunk-6zk2n3wk.js +511 -0
- package/dist/bin/{chunk-2pevjm25.js → chunk-7a7n6p2m.js} +2 -2
- package/dist/bin/chunk-7h6h8yxm.js +6 -0
- package/dist/bin/chunk-7x0hrna6.js +1 -0
- package/dist/bin/{chunk-bj4ft4qc.js → chunk-80zkjpfz.js} +29 -29
- package/dist/bin/chunk-84tvv3x1.js +1 -0
- package/dist/bin/chunk-94cfdvrn.js +2 -0
- package/dist/bin/chunk-96xtj5j6.js +1 -0
- package/dist/bin/chunk-9jfjzycs.js +111 -0
- package/dist/bin/{chunk-mhrtx0p1.js → chunk-bckm6fre.js} +6 -6
- package/dist/bin/chunk-bnv8yd9w.js +6 -0
- package/dist/bin/chunk-c51xp8f7.js +1 -0
- package/dist/bin/chunk-d5qhwtkg.js +9 -0
- package/dist/bin/chunk-d7r6mhyv.js +34 -0
- package/dist/bin/chunk-de88yqwy.js +1 -0
- package/dist/bin/chunk-dh2qmxw9.js +1 -0
- package/dist/bin/chunk-dhxwmkhz.js +2 -0
- package/dist/bin/chunk-f35pte64.js +44 -0
- package/dist/bin/{chunk-3g80gjw6.js → chunk-gj5jkhfr.js} +13 -13
- package/dist/bin/chunk-jcyrm5q0.js +2 -0
- package/dist/bin/chunk-jh1593zx.js +1 -0
- package/dist/bin/chunk-nnkhrm4n.js +8 -0
- package/dist/bin/chunk-p36ns96s.js +1 -0
- package/dist/bin/{chunk-dep2n31v.js → chunk-p9hd27k4.js} +8 -8
- package/dist/bin/chunk-qz3za76g.js +1 -0
- package/dist/bin/chunk-r6cvc2pr.js +1 -0
- package/dist/bin/chunk-rh2sqtew.js +1 -0
- package/dist/bin/chunk-rxwecjgc.js +1 -0
- package/dist/bin/chunk-tkzpbb7n.js +1 -0
- package/dist/bin/chunk-vx649y7t.js +1 -0
- package/dist/bin/chunk-vymg9ywg.js +2 -0
- package/dist/bin/chunk-w7k5rvmw.js +1 -0
- package/dist/bin/chunk-wge61ccr.js +2 -0
- package/dist/bin/chunk-wvhqjr80.js +2 -0
- package/dist/bin/chunk-x5x9dzk7.js +3 -0
- package/dist/bin/chunk-xaafj6kf.js +1 -0
- package/dist/bin/chunk-xgepx8yx.js +1 -0
- package/dist/bin/{chunk-48eb4z0c.js → chunk-yhxpmk29.js} +32 -32
- package/dist/bin/chunk-ymbwekjm.js +1 -0
- package/dist/bin/chunk-yn34zgr2.js +1 -0
- package/dist/bin/chunk-ynr22ma8.js +2 -0
- package/dist/bin/chunk-yt8rgkqt.js +2 -0
- package/dist/bin/chunk-z2ez8wn9.js +37 -0
- package/dist/bin/cli.js +428 -428
- package/dist/bin/dashboard-server.js +1 -1
- package/dist/chunk-13d54txj.js +44 -0
- package/dist/chunk-1kp3y2s7.js +1 -0
- package/dist/chunk-1n3ckctd.js +7355 -0
- package/dist/chunk-30h9rgfn.js +6 -0
- package/dist/chunk-3kapcdpn.js +92 -0
- package/dist/chunk-3qp10j0j.js +5 -0
- package/dist/chunk-6g81m01r.js +141 -0
- package/dist/{chunk-6cxb8d6y.js → chunk-6nvn041c.js} +3 -3
- package/dist/chunk-7by4rm7y.js +1 -0
- package/dist/chunk-7ww65b66.js +709 -0
- package/dist/chunk-9c29rnk3.js +22 -0
- package/dist/chunk-9w32efae.js +1 -0
- package/dist/chunk-e0919h5g.js +2 -0
- package/dist/{chunk-dndxwssj.js → chunk-e7ds04wb.js} +2 -2
- package/dist/chunk-edqhhcg9.js +4 -0
- package/dist/chunk-ej4sm2tw.js +60 -0
- package/dist/chunk-emg3shmb.js +2 -0
- package/dist/chunk-fdexq9e1.js +1 -0
- package/dist/chunk-g8fpsdyq.js +37 -0
- package/dist/chunk-jb8em9ba.js +2 -0
- package/dist/chunk-n688m5fp.js +1 -0
- package/dist/chunk-r5emv4x8.js +2 -0
- package/dist/{chunk-q9a1z53k.js → chunk-sct6mdgc.js} +51 -51
- package/dist/chunk-thpce63q.js +34 -0
- package/dist/chunk-tnjae324.js +585 -0
- package/dist/{bin/chunk-hv3w2qy1.js → chunk-wjgnfg6q.js} +6 -6
- package/dist/chunk-wpqj98h8.js +2 -0
- package/dist/chunk-wrnhbb13.js +1 -0
- package/dist/chunk-zftpjxkr.js +2 -0
- package/dist/chunk-zmyv76f0.js +114 -0
- package/dist/deploy/index.js +1 -1
- package/dist/dns/index.js +1 -1
- package/dist/drivers/index.d.ts +1 -0
- package/dist/drivers/index.js +1 -1
- package/dist/drivers/shared/compute-deploy.d.ts +0 -12
- package/dist/drivers/shared/rpx-gateway.d.ts +124 -4
- package/dist/drivers/ssh/bootstrap.d.ts +13 -3
- package/dist/drivers/ssh/config.d.ts +11 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +91 -91
- package/dist/operations/index.js +1 -1
- package/dist/protection/index.js +1 -1
- package/dist/push/index.js +1 -1
- package/dist/spend/index.js +1 -1
- package/dist/ui/404.html +1 -1
- package/dist/ui/accept-invitation.html +1 -1
- package/dist/ui/access-denied.html +2 -2
- package/dist/ui/account/automation.html +5 -5
- package/dist/ui/account/security.html +2 -2
- package/dist/ui/applications/compose.html +6 -6
- package/dist/ui/applications/new.html +2 -2
- package/dist/ui/data/backups.html +6 -6
- package/dist/ui/data/services.html +6 -6
- package/dist/ui/data/volumes.html +6 -6
- package/dist/ui/index.html +5 -5
- package/dist/ui/infrastructure/topology.html +9 -9
- package/dist/ui/integrations.html +2 -2
- package/dist/ui/operations/alerts.html +6 -6
- package/dist/ui/operations/configuration.html +6 -6
- package/dist/ui/operations/jobs.html +6 -6
- package/dist/ui/operations/maintenance.html +5 -5
- package/dist/ui/operations/observability.html +5 -5
- package/dist/ui/operations/previews.html +6 -6
- package/dist/ui/operations/queue.html +6 -6
- package/dist/ui/operations/regions.html +5 -5
- package/dist/ui/operations/releases.html +6 -6
- package/dist/ui/operations/spend.html +6 -6
- package/dist/ui/operations/workloads.html +10 -10
- package/dist/ui/security.html +2 -2
- package/dist/ui/server/actions.html +6 -6
- package/dist/ui/server/activity.html +2 -2
- package/dist/ui/server/capacity.html +5 -5
- package/dist/ui/server/database.html +5 -5
- package/dist/ui/server/deployments.html +5 -5
- package/dist/ui/server/diagnostics.html +2 -2
- package/dist/ui/server/firewall.html +6 -6
- package/dist/ui/server/fleet.html +5 -5
- package/dist/ui/server/logs.html +6 -6
- package/dist/ui/server/metrics.html +5 -5
- package/dist/ui/server/security.html +1 -1
- package/dist/ui/server/services.html +2 -2
- package/dist/ui/server/sites.html +16 -16
- package/dist/ui/server/ssh-keys.html +6 -6
- package/dist/ui/server/team.html +6 -6
- package/dist/ui/server/terminal.html +2 -2
- package/dist/ui/serverless/alarms.html +5 -5
- package/dist/ui/serverless/assets.html +2 -2
- package/dist/ui/serverless/cost.html +2 -2
- package/dist/ui/serverless/data.html +6 -6
- package/dist/ui/serverless/deployments.html +2 -2
- package/dist/ui/serverless/firewall.html +2 -2
- package/dist/ui/serverless/functions.html +5 -5
- package/dist/ui/serverless/logs.html +6 -6
- package/dist/ui/serverless/metrics.html +2 -2
- package/dist/ui/serverless/queues.html +6 -6
- package/dist/ui/serverless/secrets.html +6 -6
- package/dist/ui/serverless/traces.html +6 -6
- package/dist/ui/serverless.html +6 -6
- package/dist/ui-src/src/charts.ts +1141 -1294
- package/dist/ui-src/src/topology.ts +3 -3
- package/package.json +3 -3
- package/dist/bin/chunk-0x8szp53.js +0 -111
- package/dist/bin/chunk-1hggd7yz.js +0 -1
- package/dist/bin/chunk-2tsg6e8j.js +0 -1
- package/dist/bin/chunk-3f27aa5r.js +0 -2
- package/dist/bin/chunk-40j9hgzc.js +0 -1
- package/dist/bin/chunk-4gqfdr7t.js +0 -1
- package/dist/bin/chunk-5gx38418.js +0 -44
- package/dist/bin/chunk-5jv4cpky.js +0 -1
- package/dist/bin/chunk-5kxm5mx7.js +0 -1
- package/dist/bin/chunk-5rhvcgzt.js +0 -34
- package/dist/bin/chunk-8223r1xn.js +0 -2
- package/dist/bin/chunk-84703zpq.js +0 -7364
- package/dist/bin/chunk-9edyzdm0.js +0 -2
- package/dist/bin/chunk-9xbsmz1f.js +0 -2
- package/dist/bin/chunk-a8t3c4qe.js +0 -2
- package/dist/bin/chunk-aghy01we.js +0 -1
- package/dist/bin/chunk-akwfvn5k.js +0 -1
- package/dist/bin/chunk-asvz121j.js +0 -1
- package/dist/bin/chunk-b0xtsv8k.js +0 -6
- package/dist/bin/chunk-bcpdj01b.js +0 -1
- package/dist/bin/chunk-da49my09.js +0 -1
- package/dist/bin/chunk-ewxf62t8.js +0 -60
- package/dist/bin/chunk-f42gqn6c.js +0 -3
- package/dist/bin/chunk-fc6r1ack.js +0 -2
- package/dist/bin/chunk-ftcjjf76.js +0 -9
- package/dist/bin/chunk-g76sry03.js +0 -1
- package/dist/bin/chunk-hwdfky19.js +0 -2
- package/dist/bin/chunk-j02d6qmn.js +0 -1
- package/dist/bin/chunk-j2cb8we4.js +0 -37
- package/dist/bin/chunk-kmz8vb77.js +0 -1
- package/dist/bin/chunk-kyr5rasx.js +0 -511
- package/dist/bin/chunk-nc9pp87y.js +0 -8
- package/dist/bin/chunk-ncrnbcsa.js +0 -6
- package/dist/bin/chunk-py1hyeb2.js +0 -1
- package/dist/bin/chunk-qa06sft7.js +0 -1
- package/dist/bin/chunk-qr0xck72.js +0 -3
- package/dist/bin/chunk-r85ahkwq.js +0 -1
- package/dist/bin/chunk-re15e6p4.js +0 -2
- package/dist/bin/chunk-sj5csg49.js +0 -2
- package/dist/bin/chunk-t6y3pkm8.js +0 -1
- package/dist/bin/chunk-tfmx17he.js +0 -2
- package/dist/bin/chunk-vfcchrby.js +0 -1
- package/dist/bin/chunk-vmdh41kp.js +0 -1
- package/dist/bin/chunk-vrc7eemq.js +0 -1
- package/dist/bin/chunk-vsd7670h.js +0 -2
- package/dist/bin/chunk-vwqn3yx6.js +0 -3
- package/dist/bin/chunk-vxbnjz78.js +0 -1
- package/dist/bin/chunk-w8s8vgdj.js +0 -1
- package/dist/bin/chunk-yq9vetf8.js +0 -698
- package/dist/bin/chunk-zrgd65r8.js +0 -1
- package/dist/chunk-0a4tqwm9.js +0 -709
- package/dist/chunk-4884der5.js +0 -1
- package/dist/chunk-4wdxsnn2.js +0 -44
- package/dist/chunk-5hhyyhjt.js +0 -1
- package/dist/chunk-5zkacdw1.js +0 -1
- package/dist/chunk-6f68caq0.js +0 -1
- package/dist/chunk-7z50g5xz.js +0 -4
- package/dist/chunk-8fh4m5ge.js +0 -1
- package/dist/chunk-97pb7wb1.js +0 -1
- package/dist/chunk-ac87ds1k.js +0 -6
- package/dist/chunk-ess6vxfj.js +0 -2
- package/dist/chunk-fvpkxznh.js +0 -558
- package/dist/chunk-j06r5rwv.js +0 -2
- package/dist/chunk-j1g67djb.js +0 -92
- package/dist/chunk-k8x8mrkr.js +0 -2
- package/dist/chunk-mnmz8t7q.js +0 -34
- package/dist/chunk-n1fyryha.js +0 -141
- package/dist/chunk-n1hg0jxs.js +0 -2
- package/dist/chunk-n5xmh0ma.js +0 -37
- package/dist/chunk-q22qfwsc.js +0 -22
- package/dist/chunk-r8t25tbm.js +0 -7355
- package/dist/chunk-whyttetx.js +0 -5
- package/dist/chunk-yf8stygs.js +0 -114
- package/dist/chunk-ze5x2bpm.js +0 -2
- package/dist/chunk-zh0apedk.js +0 -60
- package/dist/chunk-zjyz926j.js +0 -2
package/dist/deploy/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jr,zr,Sl,xi,Cl,bl,El,Jo,vl,Tl,fm,wl,S,Rl,_i,we,Dl,Pl,bA,Nl,Am,EA,vA,TA,ym,Im,wA,RA,Sm,Cm,DA,Oi,Kt,Xo,Kr,Wr,Wt,je,ht,Li,bm,Jr,kl,Bl,Yo,Mi,Yr,Fi,pa}from"../chunk-7ww65b66.js";import{ga,Zr,en,Ui,Qi,Hi,Gi,ma,ha}from"../chunk-ej4sm2tw.js";import{fa}from"../chunk-3qp10j0j.js";import"../chunk-zmyv76f0.js";import"../chunk-thpce63q.js";import"../chunk-6g81m01r.js";import"../chunk-r5emv4x8.js";import"../chunk-zftpjxkr.js";import"../chunk-emg3shmb.js";import"../chunk-wjgnfg6q.js";import{Kl,Na,me,ka,mn,Wl,Ba,rc,us,nc,Pt,Hn,ps}from"../chunk-tnjae324.js";import"../chunk-6nvn041c.js";import"../chunk-jb8em9ba.js";import"../chunk-3kapcdpn.js";import"../chunk-30h9rgfn.js";import{rt,wh,dc,zn,Kn,Wn,zu}from"../chunk-edqhhcg9.js";import{B,hr,fr,lc,hs,u,Rh,Ku,Wu,sy,oy}from"../chunk-wpqj98h8.js";import"../chunk-sct6mdgc.js";import"../chunk-1n3ckctd.js";export{wh as DEFAULT_SITE_PORT_RANGE,rt as HOST_SITES_DIR,ka as IPV6_EXCLUDED_HOST_LABELS,rc as MANAGEMENT_DASHBOARD_SITE,jr as addSiteToCloudConfig,zu as allocateSitePorts,DA as buildAndPushContainerImage,fa as buildAndPushServerlessImage,Kt as buildFunctionEnv,Kn as buildHostSitePortsScript,ps as buildManagementDashboardArtifact,ht as buildServerTopology,Li as buildServerlessTopology,bm as buildTopology,Yo as collectEgressMetrics,Kl as collectServerDnsDomains,Cm as createContainerImageDependencies,ym as createExistingStaticFullStackDependencies,Am as createStaticApiOriginDependencies,Yr as dashboardActions,us as dashboardCredentialsFile,Dl as dashboardPageRoutes,ma as deleteStaticSite,wA as deployExistingStaticFullStack,Xo as deployServerlessApp,oy as deployShipsFiles,Nl as deploySite,EA as deployStaticApiOrigin,Qi as deployStaticSite,ha as deployStaticSiteFull,Zr as deployStaticSiteWithExternalDns,en as deployStaticSiteWithExternalDnsFull,kl as egressReportMetrics,S as ensureDashboardActor,Hn as ensureManagementDashboard,RA as estimateExistingStaticFullStackMonthlyCost,TA as estimateStaticApiOriginMonthlyCost,Bl as fetchEgressReport,Im as generateExistingStaticFullStackTemplate,ga as generateExternalDnsStaticSiteTemplate,Ui as generateStaticSiteTemplate,Rh as hasComputeConfigured,lc as hasProxyUpstream,Sm as hashContainerContext,mn as hostAcceptsIpv6,Oi as infraEnvFromOutputs,Rl as initializeDashboardControlPlane,Gi as invalidateCache,hr as isPhpSite,Jo as isValidHostname,me as normalizePublicIpv6,zn as occupiedHostPorts,Wn as parseHostSiteFragments,dc as parseUpstreamPort,Wl as reconcileAddressRecords,Kr as redeployServerlessApp,zr as removeSiteFromCloudConfig,Na as removeStaleServerAddressRecords,vl as renderAliasesValue,El as renderEnvValue,Tl as renderRedirectsValue,fm as renderSiteSnippet,Cl as renderSslValue,bl as renderStringValue,Fi as resolveDashboardAction,nc as resolveDashboardAuth,Jr as resolveDashboardData,Pl as resolveLegacyDashboardRoute,fr as resolveProxyUpstreams,hs as resolveSiteDeployTarget,u as resolveSiteKind,Pt as resolveUiSource,Wr as rollbackServerlessApp,bA as routesForDashboard,je as runRemoteCommand,Mi as sanitizeCloudConfig,wl as setAttachToInCloudConfig,Wt as setMaintenance,xi as setSitePropertyInCloudConfig,Wu as shipsARelease,sy as shipsToBucket,B as siteInstallBase,pa as startLocalDashboardServer,_i as synchronizeDashboardUsers,we as trackDashboardOperation,Sl as updateSiteInCloudConfig,Hi as uploadStaticFiles,Ku as validateDeploymentConfig,Ba as verifyAddressRecord,vA as verifyStaticApiOrigin};
|
package/dist/dns/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{un,Ne,Ct,bt,Et,pn,Xi,Yi,ge,Zi,es,ts,rs,ne,ns,is,ss,T,Da,gn,Pa}from"../chunk-emg3shmb.js";import"../chunk-wjgnfg6q.js";import"../chunk-30h9rgfn.js";export{bt as CloudflareProvider,gn as DnsProviderFactory,Ct as GoDaddyProvider,un as PROXIABLE_RECORD_TYPES,Ne as PorkbunProvider,ge as Route53Provider,ne as UnifiedDnsValidator,ts as applyZoneMigration,T as createDnsProvider,is as createGoDaddyValidator,ns as createPorkbunValidator,ss as createRoute53Validator,Da as detectDnsProvider,Pa as dnsProviders,Zi as exportRoute53Zone,es as planZoneMigration,Et as policyTag,pn as qualifyName,Yi as reconcileDeclaredRecords,Xi as resolveDeclaredRecords,rs as verifyZoneParity};
|
package/dist/drivers/index.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export { AwsBoxProvisioner, buildBoxUserData, createBoxProvisioner, HetznerBoxPr
|
|
|
36
36
|
export type { AwsBoxProvisionerOptions, BoxPort, BoxProviderName, BoxProvisioner, BoxSpec, CreateBoxProvisionerOptions, ProvisionedBox, } from './shared/box-provision';
|
|
37
37
|
export { buildAwsArtifactFetch, buildHostCleanupScript, buildLocalArtifactFetch, buildSiteDeployScript, buildStaticSiteDeployScript, releaseTarballTmpPath, resolveExecStart, } from './shared/deploy-script';
|
|
38
38
|
export { deployAllComputeSites, deploySiteRelease, reloadRpxGateway, renewRpxCertificates, } from './shared/compute-deploy';
|
|
39
|
+
export { isLocalDatabase } from './shared/db-provision';
|
|
39
40
|
export { buildRpxConfig, buildRpxFragmentRefreshScript, buildRpxLbConfig, buildRpxProvisionScript, deriveRouteId, gatewayHostnames, hasAutoWwwVariant, normalizeRoutePath, renderRpxLauncher, DEFAULT_RPX_CERTS_DIR, RPX_DIR, RPX_LAUNCHER_PATH, RPX_SERVICE_NAME, } from './shared/rpx-gateway';
|
|
40
41
|
export type { BuildRpxConfigOptions, BuildRpxFragmentRefreshOptions, BuildRpxProvisionOptions, RpxGatewayConfig, RpxLbAppBox, RpxRoute, } from './shared/rpx-gateway';
|
|
41
42
|
export { buildCloudFrontOriginConfig, MANAGED_CACHE_POLICY_DISABLED, MANAGED_CACHE_POLICY_OPTIMIZED, MANAGED_ORIGIN_REQUEST_POLICY_ALL_VIEWER, } from './shared/cloudfront-origin';
|
package/dist/drivers/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{hn,vt,nr,Tt,fn,xa,An,yn,Zl,_a,he,or,Mm,In,Oa,Xe,fe,Rt,N,ar,Sn,cr,se,La,Cn,$a,bn,Ma,dr,Ua,ke,z,Qa,Ye,Be,xe,Ze,Ae,cs,Ha,eu,tu,Ga,ru,et,En,qa,nu,iu,Va,lr,ye,ja,su,ou,ds,vn,tt,au,cu,du,lu,uu,pu,gu,mu,hu,Tn,wn,Rn,Dn,Pn,Nn,kn,fu,Au,ur,k,ls,yu,Iu,Su,za,Cu,bu,Fm,Ka,Um,Qm,Eu,vu,Hm,Gm,qm,Wa,Tu,Vm,jm,zm,Bn,xn,_n,On,Ja,Xa,Ya,Za,Km,Ln,$n,Mn,Un,ec,tc,Qn,gs,ic,Gn,sc,Wm,Jm,Xm,Ym}from"../chunk-tnjae324.js";import"../chunk-6nvn041c.js";import"../chunk-jb8em9ba.js";import"../chunk-3kapcdpn.js";import"../chunk-30h9rgfn.js";import"../chunk-wpqj98h8.js";import"../chunk-1n3ckctd.js";export{Za as AwsBoxProvisioner,ar as AwsDriver,Su as BOOT_PARTITION_LABEL,ls as CloudDriverFactory,xa as DEFAULT_RPX_CERTS_DIR,Iu as FIRST_BOOT_SCRIPT_PATH,Ya as HetznerBoxProvisioner,dr as HetznerClient,Ae as HetznerDriver,Qa as LEGACY_DRIVER_STATE_DIR,cs as LocalBoxDriver,Jm as MANAGED_CACHE_POLICY_DISABLED,Wm as MANAGED_CACHE_POLICY_OPTIMIZED,Xm as MANAGED_ORIGIN_REQUEST_POLICY_ALL_VIEWER,ou as RASPBERRY_PI_DEFAULT_SWAP_GB,Ma as REMOTE_SCRIPT_RUNNER,In as RPX_DIR,Oa as RPX_LAUNCHER_PATH,Xe as RPX_SERVICE_NAME,ja as SSH_BOOTSTRAP_MARKER_DIR,ye as SSH_BOOTSTRAP_VERSION,tt as SSH_DEFAULTS,kn as SSH_DEPLOY_STORAGE_PATH,eu as SSH_INSECURE_HOST_KEY_OPTS,tu as SSH_KEEPALIVE_OPTS,wn as SSH_PREFLIGHT_SCRIPT,fu as SSH_SKIP_BOOTSTRAP_ENV,ur as SshDriver,lr as SystemSshTransport,Ja as UBUNTU_2404_AMI_PARAM,zm as acquireResizeLock,Hm as applyHetznerHostOptimization,ds as assertArchSupported,Au as assertSshComputeConfig,ec as buildAwsArtifactFetch,Xa as buildBoxUserData,Ym as buildCloudFrontOriginConfig,za as buildCloudInitFirstBoot,vu as buildHetznerHostOptimizationScript,Qn as buildHostCleanupScript,tc as buildLocalArtifactFetch,he as buildRpxConfig,Rt as buildRpxFragmentRefreshScript,or as buildRpxLbConfig,fe as buildRpxProvisionScript,ru as buildScpArgsFor,$n as buildSiteDeployScript,Sn as buildSshArgs,Ga as buildSshArgsFor,vn as buildSshBootstrapScript,Mn as buildStaticSiteDeployScript,yu as cloudDrivers,Gm as collectHetznerHostOptimizationReport,Ka as collectHetznerResizeManifest,Km as createBoxProvisioner,k as createCloudDriver,ic as deployAllComputeSites,gs as deploySiteRelease,_a as deriveRouteId,hn as describeScriptSyntaxError,Ye as driverStateDir,Be as driverStatePath,xn as ensureFirewall,_n as ensureServer,Bn as ensureSshKey,Dn as evaluatePreflight,Fm as executeHetznerServerResize,iu as findKnownHostKey,Nn as formatPreflightFindings,vt as formatSshFailure,yn as gatewayHostnames,N as generateUbuntuAppCloudInit,An as hasAutoWwwVariant,Ha as isBoxMode,bu as isHetznerCapacityError,fn as isLocalDatabase,nu as knownHostsLine,qa as knownHostsToken,Zl as normalizeRoutePath,ke as normalizeSshPublicKey,Rn as parsePreflightFacts,Cu as planHetznerServerResize,Pn as preflightFailed,Um as prepareHetznerResize,xe as readDriverState,Vm as readResizeCheckpoint,Un as releaseTarballTmpPath,Gn as reloadRpxGateway,bn as remoteScriptRunner,Mm as renderRpxLauncher,sc as renewRpxCertificates,Wa as resizeCheckpointPath,Tu as resizeLockPath,Ln as resolveExecStart,Ua as resolveHetznerApiToken,Eu as resolveHetznerHostOptimizationPlan,uu as resolveSshHostKeyPolicy,au as resolveSshHosts,hu as resolveSshLan,du as resolveSshPort,lu as resolveSshPrivateKeyPath,gu as resolveSshProfile,mu as resolveSshPublicIp,Tn as resolveSshSettings,pu as resolveSshSudo,cu as resolveSshUser,En as scanHostKey,La as scpUpload,On as serverPublicIpv4,su as sshBootstrapMarkerPath,cr as sshExec,se as sshExecOrThrow,et as sshHostKeyFingerprint,Va as sshKnownHostsPath,Tt as summarizeRemoteFailures,nr as surfaceRemoteNotices,qm as verifyHetznerHostOptimization,Qm as verifyHetznerResize,$a as waitForCloudInit,Cn as waitForSsh,z as wrapCloudInitUserData,Ze as writeDriverState,jm as writeResizeCheckpoint};
|
|
@@ -49,18 +49,6 @@ export declare function buildManagementDashboardServiceReconciliationScript(slug
|
|
|
49
49
|
* without `start`, shipped to `/var/www/<site>`). Bucket sites are skipped.
|
|
50
50
|
*/
|
|
51
51
|
export declare function deployAllComputeSites(options: DeployAllSitesOptions): Promise<boolean>;
|
|
52
|
-
/**
|
|
53
|
-
* Regenerate the rpx gateway config from the sites model and (re)start the
|
|
54
|
-
* gateway. No-op (returns `true`) unless `compute.proxy.engine === 'rpx'`.
|
|
55
|
-
*
|
|
56
|
-
* Two shapes, resolved by probing for a dedicated load-balancer target:
|
|
57
|
-
* - **Fleet** (bun-style: one rpx LB box fronts N gateway-less app boxes) —
|
|
58
|
-
* rewrite ONLY the LB's route fragment with the multi-upstream LB config
|
|
59
|
-
* ({@link buildRpxLbConfig} + {@link buildRpxFragmentRefreshScript}).
|
|
60
|
-
* - **Single box** — the gateway is co-located with the app, so the full
|
|
61
|
-
* provision script runs on the app targets. Re-runnable: it rewrites the
|
|
62
|
-
* launcher + unit and `systemctl restart`s, reloading the new routes.
|
|
63
|
-
*/
|
|
64
52
|
export declare function reloadRpxGateway(options: DeployAllSitesOptions): Promise<boolean>;
|
|
65
53
|
/**
|
|
66
54
|
* Request the first production certificates after DNS has been reconciled.
|
|
@@ -19,10 +19,27 @@
|
|
|
19
19
|
* It replaces the old Caddyfile generation — pantry/stacks use rpx (their own
|
|
20
20
|
* tooling), so the gateway is rpx, not Caddy.
|
|
21
21
|
*/
|
|
22
|
-
import type { ComputeProxyConfig, RpxLoadBalancerConfig, SiteConfig, SiteRedirectConfig } from '@ts-cloud/core';
|
|
22
|
+
import type { CloudConfig, ComputeProxyConfig, RpxLoadBalancerConfig, SiteConfig, SiteRedirectConfig } from '@ts-cloud/core';
|
|
23
23
|
/** Default directory on the box that holds real per-domain TLS certs. */
|
|
24
24
|
export declare const DEFAULT_RPX_CERTS_DIR = "/etc/rpx/certs";
|
|
25
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Where the LAN certificate authority lives on the box. rpx writes the CA
|
|
27
|
+
* (`rpx-root-ca.crt` / `.key`) and the leaf it signs here; the CA cert is the
|
|
28
|
+
* one file an operator copies off the box to trust on a laptop or a phone.
|
|
29
|
+
*/
|
|
30
|
+
export declare const DEFAULT_LOCAL_CA_DIR = "/etc/rpx/local-ca";
|
|
31
|
+
/** rpx's own filename for the CA certificate inside {@link DEFAULT_LOCAL_CA_DIR}. */
|
|
32
|
+
export declare const LOCAL_CA_ROOT_CERT_FILENAME = "rpx-root-ca.crt";
|
|
33
|
+
/** Absolute path to the CA certificate a client has to trust. */
|
|
34
|
+
export declare function localCaCertPath(dir?: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the gateway adds a `www.` redirect for `domain` on its own.
|
|
37
|
+
*
|
|
38
|
+
* Apex domains only, and never an mDNS name: `pi-app.local` also has two
|
|
39
|
+
* labels, but nobody types `www.pi-app.local`, no LAN resolves it, and the
|
|
40
|
+
* route it would create is a host the LAN certificate does not cover, so it
|
|
41
|
+
* is a browser warning on a name that exists for no reason.
|
|
42
|
+
*/
|
|
26
43
|
export declare function hasAutoWwwVariant(domain: string): boolean;
|
|
27
44
|
/**
|
|
28
45
|
* Every hostname the gateway will answer for a sites config.
|
|
@@ -137,6 +154,68 @@ export interface RpxRoute {
|
|
|
137
154
|
* enabled (default) AND a password is present — no password is ever invented.
|
|
138
155
|
*/
|
|
139
156
|
export declare function resolveRouteAuth(site: SiteConfig): RpxRoute['auth'];
|
|
157
|
+
/**
|
|
158
|
+
* The gateway's LAN certificate authority, mirroring rpx's `LocalCaConfig`
|
|
159
|
+
* (see `@stacksjs/rpx`'s `types.ts`, available since 0.11.49). rpx loads or
|
|
160
|
+
* creates the CA under `dir`, signs ONE leaf covering `hosts` + `ips`, and
|
|
161
|
+
* registers it both per server name and as the default TLS context, so a
|
|
162
|
+
* connection that sends no SNI at all (an IP-literal URL) still gets it.
|
|
163
|
+
*/
|
|
164
|
+
export interface RpxLocalCaConfig {
|
|
165
|
+
/** Directory holding the CA and the leaf it signs. See {@link DEFAULT_LOCAL_CA_DIR}. */
|
|
166
|
+
dir: string;
|
|
167
|
+
/** dNSName SANs on the leaf, e.g. `['pi-app.local']`. Never empty. */
|
|
168
|
+
hosts: string[];
|
|
169
|
+
/** iPAddress SANs, so the box is also reachable by address over TLS. */
|
|
170
|
+
ips?: string[];
|
|
171
|
+
/** Install the CA into the box's OWN system trust store (rpx runs as root here). */
|
|
172
|
+
installTrust?: boolean;
|
|
173
|
+
/** Leaf validity in days. Omitted so rpx applies its documented default (825). */
|
|
174
|
+
validityDays?: number;
|
|
175
|
+
/** Re-mint when fewer than this many days remain. Omitted for rpx's default (30). */
|
|
176
|
+
renewBeforeDays?: number;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* LAN settings for a gateway on a host that is not on the public internet.
|
|
180
|
+
*
|
|
181
|
+
* This is the ONLY input that makes {@link buildRpxConfig} emit `localCa` or
|
|
182
|
+
* `https: false`, and it is passed exclusively on the ssh-provider path (see
|
|
183
|
+
* {@link resolveGatewayLan}), which is what keeps every cloud driver's
|
|
184
|
+
* emitted config byte-identical to what it produced before LAN TLS existed.
|
|
185
|
+
*/
|
|
186
|
+
export interface RpxLanOptions {
|
|
187
|
+
/** The LAN name the gateway's certificate covers. Defaults to `<slug>.local`. */
|
|
188
|
+
hostname?: string;
|
|
189
|
+
/** `'local-ca'` issues a LAN certificate; `'off'` serves plain HTTP. @default 'local-ca' */
|
|
190
|
+
tls?: 'local-ca' | 'off';
|
|
191
|
+
/**
|
|
192
|
+
* The box's LAN address, when it is actually known: the ssh preflight's
|
|
193
|
+
* `lanIp`, else the configured ssh host when that is an IP literal. Never
|
|
194
|
+
* guessed: a wrong iPAddress SAN is worse than an absent one.
|
|
195
|
+
*/
|
|
196
|
+
ip?: string;
|
|
197
|
+
}
|
|
198
|
+
/** `lan.tls` with its default applied, or `undefined` when there is no LAN config. */
|
|
199
|
+
export declare function lanTlsMode(lan?: RpxLanOptions): 'local-ca' | 'off' | undefined;
|
|
200
|
+
/**
|
|
201
|
+
* The LAN options for a config, or `undefined` when LAN TLS does not apply.
|
|
202
|
+
*
|
|
203
|
+
* The provider gate lives HERE, in one function, rather than at each call
|
|
204
|
+
* site: `ssh.lan` is meaningless for a cloud box (a Hetzner host has no LAN an
|
|
205
|
+
* operator can reach), and a driver that reads it anyway would start emitting
|
|
206
|
+
* a `localCa` the box can never use. Callers with resolved ssh settings should
|
|
207
|
+
* pass those instead; this reads `cloud.config.ts` alone, so a `TS_CLOUD_SSH_*`
|
|
208
|
+
* override is not visible to it.
|
|
209
|
+
*/
|
|
210
|
+
export declare function resolveGatewayLan(config: Pick<CloudConfig, 'cloud' | 'ssh'>, lanIp?: string): RpxLanOptions | undefined;
|
|
211
|
+
/** The host profile the gateway unit should be tuned for, when one is known. */
|
|
212
|
+
export declare function resolveGatewayProfile(config: Pick<CloudConfig, 'cloud' | 'ssh'>): 'raspberry-pi' | 'generic' | undefined;
|
|
213
|
+
/**
|
|
214
|
+
* Is `domain` a name only a LAN can resolve? Either an mDNS `.local` name or a
|
|
215
|
+
* bare single-label hostname. Public CAs cannot issue for either, so these are
|
|
216
|
+
* exactly the names that need the box's own CA instead.
|
|
217
|
+
*/
|
|
218
|
+
export declare function isLanHostname(domain: string): boolean;
|
|
140
219
|
/** The rpx daemon/proxy config produced from a sites model. */
|
|
141
220
|
export interface RpxGatewayConfig {
|
|
142
221
|
/** Multi-proxy route list (host + path keyed). */
|
|
@@ -167,8 +246,18 @@ export interface RpxGatewayConfig {
|
|
|
167
246
|
* down to free `:80`. Omitted ⇒ the `:80` server only redirects.
|
|
168
247
|
*/
|
|
169
248
|
acmeChallengeWebroot?: string;
|
|
170
|
-
/**
|
|
171
|
-
|
|
249
|
+
/**
|
|
250
|
+
* `true` (the only value any public deploy produces) terminates TLS on the
|
|
251
|
+
* box. `false` is the LAN opt-out (`ssh.lan.tls: 'off'`): rpx then binds the
|
|
252
|
+
* HTTP port only, and nothing on `:443`.
|
|
253
|
+
*/
|
|
254
|
+
https: boolean;
|
|
255
|
+
/**
|
|
256
|
+
* LAN certificate authority: rpx signs one leaf for these names with a CA it
|
|
257
|
+
* keeps on the box. Emitted ONLY on the ssh-provider path; see
|
|
258
|
+
* {@link RpxLanOptions}.
|
|
259
|
+
*/
|
|
260
|
+
localCa?: RpxLocalCaConfig;
|
|
172
261
|
/** Never touch `/etc/hosts` on a real server with real DNS. */
|
|
173
262
|
hostsManagement: false;
|
|
174
263
|
/** Don't remove certs/hosts on exit. */
|
|
@@ -199,6 +288,12 @@ export interface BuildRpxConfigOptions {
|
|
|
199
288
|
* wrong directory.
|
|
200
289
|
*/
|
|
201
290
|
slug?: string;
|
|
291
|
+
/**
|
|
292
|
+
* LAN settings for a host with no public DNS. Passed on the ssh-provider
|
|
293
|
+
* path only (see {@link resolveGatewayLan}); every other driver leaves it
|
|
294
|
+
* undefined and gets exactly the config it always got.
|
|
295
|
+
*/
|
|
296
|
+
lan?: RpxLanOptions;
|
|
202
297
|
}
|
|
203
298
|
/**
|
|
204
299
|
* Normalize a path prefix to a leading-slash, no-trailing-slash form, or
|
|
@@ -313,7 +408,32 @@ export interface BuildRpxProvisionOptions {
|
|
|
313
408
|
bunBin?: string;
|
|
314
409
|
/** Keep the dashboard route currently running on the box during an app-only deploy. */
|
|
315
410
|
preserveManagementDashboardRoutes?: boolean;
|
|
411
|
+
/**
|
|
412
|
+
* Host profile, when the caller knows it (the ssh provider resolves one; the
|
|
413
|
+
* cloud drivers do not and leave this undefined, keeping their unit byte for
|
|
414
|
+
* byte what it was). `raspberry-pi` lowers the gateway's memory ceilings, see
|
|
415
|
+
* {@link RASPBERRY_PI_PROXY_MEMORY}.
|
|
416
|
+
*/
|
|
417
|
+
profile?: 'raspberry-pi' | 'generic';
|
|
316
418
|
}
|
|
419
|
+
/**
|
|
420
|
+
* Gateway cgroup ceilings by host profile.
|
|
421
|
+
*
|
|
422
|
+
* The generic defaults are sized for a 4G+ cloud box. A Pi is commonly a 2G
|
|
423
|
+
* board also running the app, a database and swap on an SD card, where a
|
|
424
|
+
* 768M ceiling is not a bound at all: the gateway can take a third of RAM
|
|
425
|
+
* before systemd notices, and the reclaim that follows lands on the SD card.
|
|
426
|
+
* The gateway's steady state is well under 100M on either machine, so the
|
|
427
|
+
* lower pair still leaves the same order of magnitude of burst room.
|
|
428
|
+
*/
|
|
429
|
+
export declare const RASPBERRY_PI_PROXY_MEMORY: {
|
|
430
|
+
readonly high: '256M';
|
|
431
|
+
readonly max: '384M';
|
|
432
|
+
};
|
|
433
|
+
export declare const DEFAULT_PROXY_MEMORY: {
|
|
434
|
+
readonly high: '512M';
|
|
435
|
+
readonly max: '768M';
|
|
436
|
+
};
|
|
317
437
|
export declare const RPX_CERT_RENEW_SCRIPT = "/etc/rpx/renew-certs.sh";
|
|
318
438
|
export declare const RPX_CERT_RENEW_SERVICE = "rpx-cert-renew.service";
|
|
319
439
|
export declare const RPX_CERT_RENEW_TIMER = "rpx-cert-renew.timer";
|
|
@@ -36,16 +36,26 @@ export interface SshBootstrapOptions {
|
|
|
36
36
|
config: CloudConfig;
|
|
37
37
|
environment: EnvironmentType;
|
|
38
38
|
profile: SshProfile;
|
|
39
|
-
/**
|
|
40
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Preflight facts, when the host has been probed. `arch` gates x86_64-only
|
|
41
|
+
* services; `lanIp` becomes the LAN certificate's iPAddress SAN.
|
|
42
|
+
*/
|
|
43
|
+
facts?: Pick<SshPreflightFacts, 'arch'> & Partial<Pick<SshPreflightFacts, 'lanIp'>>;
|
|
41
44
|
/**
|
|
42
45
|
* The non-root deploy user, when there is one. Makes the artifact and
|
|
43
46
|
* staging directories group-writable for it and manages its
|
|
44
47
|
* `authorized_keys` rather than root's.
|
|
45
48
|
*/
|
|
46
49
|
sudoUser?: string;
|
|
47
|
-
/** LAN settings; recorded in the script header
|
|
50
|
+
/** LAN settings; recorded in the script header and wired into the gateway's local CA. */
|
|
48
51
|
lan?: SshLanConfig;
|
|
52
|
+
/**
|
|
53
|
+
* The box's LAN address, when the caller knows one that is not in `facts`
|
|
54
|
+
* (the configured ssh host, when that host is an IP literal). Wins over
|
|
55
|
+
* `facts.lanIp`. Never guessed: an address absent here is simply left off
|
|
56
|
+
* the certificate.
|
|
57
|
+
*/
|
|
58
|
+
lanIp?: string;
|
|
49
59
|
}
|
|
50
60
|
/**
|
|
51
61
|
* Refuse a config that asks for something this host's architecture cannot
|
|
@@ -52,8 +52,15 @@ export declare function resolveSshSudo(config?: CloudConfig, user?: string, expl
|
|
|
52
52
|
export declare function resolveSshProfile(config?: CloudConfig, explicit?: string): SshProfile;
|
|
53
53
|
/** The public IP DNS should point at: `'auto'` or a literal address. */
|
|
54
54
|
export declare function resolveSshPublicIp(config?: CloudConfig, explicit?: string): string;
|
|
55
|
-
/**
|
|
56
|
-
|
|
55
|
+
/**
|
|
56
|
+
* LAN access settings, or `undefined` when the project configured none.
|
|
57
|
+
*
|
|
58
|
+
* This used to answer `{}` for "unset", which reads as a LAN with defaults
|
|
59
|
+
* once anything acts on it: with the gateway now wired to `lan`, that sentinel
|
|
60
|
+
* would give every adopted host a local certificate authority for
|
|
61
|
+
* `<slug>.local` that nobody asked for. Absent has to be absent.
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveSshLan(config?: CloudConfig, explicit?: SshLanConfig): SshLanConfig | undefined;
|
|
57
64
|
/** One host with every per-host value resolved. */
|
|
58
65
|
export interface ResolvedSshHost {
|
|
59
66
|
host: string;
|
|
@@ -69,7 +76,8 @@ export interface ResolvedSshSettings {
|
|
|
69
76
|
sudo: boolean;
|
|
70
77
|
profile: SshProfile;
|
|
71
78
|
publicIp: string;
|
|
72
|
-
|
|
79
|
+
/** LAN access settings, or `undefined` when this project configured none. */
|
|
80
|
+
lan?: SshLanConfig;
|
|
73
81
|
}
|
|
74
82
|
export interface SshOverrides {
|
|
75
83
|
hosts?: SshHostConfig[];
|
package/dist/index.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export { collectServerDnsDomains, hostAcceptsIpv6, IPV6_EXCLUDED_HOST_LABELS, no
|
|
|
39
39
|
export type { AddressRecordReport } from './deploy/server-dns';
|
|
40
40
|
export * from './cdn';
|
|
41
41
|
export type { EnsureDashboardLogger, ResolvedDashboardAuth, StaticSiteConfig, DeployResult, UploadOptions, ExternalDnsStaticSiteConfig, ExternalDnsDeployResult, DeploySiteConfig, DeploySiteResult, StaticSiteDnsProvider, SiteDeployKind, DeploymentValidationResult, BuildImageOptions, BuiltImage, CodeSource, DeployServerlessOptions, ResolvedContext, } from './deploy';
|
|
42
|
-
export { createCloudDriver, CloudDriverFactory, cloudDrivers, AwsDriver, HetznerDriver, SshDriver, SystemSshTransport, resolveSshSettings, buildSshBootstrapScript, SSH_BOOTSTRAP_VERSION, evaluatePreflight, formatPreflightFindings, parsePreflightFacts, preflightFailed, SSH_PREFLIGHT_SCRIPT, buildCloudInitFirstBoot, driverStatePath, readDriverState, writeDriverState, HetznerClient, resolveHetznerApiToken, normalizeSshPublicKey, ensureFirewall, ensureServer, ensureSshKey, serverPublicIpv4, sshExec, sshExecOrThrow, scpUpload, waitForSsh, waitForCloudInit, buildSshArgs, generateUbuntuAppCloudInit, wrapCloudInitUserData, buildHostCleanupScript, buildSiteDeployScript, buildStaticSiteDeployScript, resolveExecStart, deployAllComputeSites, deploySiteRelease, reloadRpxGateway, renewRpxCertificates, gatewayHostnames, hasAutoWwwVariant, } from './drivers';
|
|
42
|
+
export { createCloudDriver, CloudDriverFactory, cloudDrivers, AwsDriver, HetznerDriver, SshDriver, SystemSshTransport, resolveSshSettings, buildSshBootstrapScript, SSH_BOOTSTRAP_VERSION, evaluatePreflight, formatPreflightFindings, parsePreflightFacts, preflightFailed, SSH_PREFLIGHT_SCRIPT, buildCloudInitFirstBoot, driverStatePath, readDriverState, writeDriverState, HetznerClient, resolveHetznerApiToken, normalizeSshPublicKey, ensureFirewall, ensureServer, ensureSshKey, serverPublicIpv4, sshExec, sshExecOrThrow, scpUpload, waitForSsh, waitForCloudInit, buildSshArgs, generateUbuntuAppCloudInit, wrapCloudInitUserData, buildHostCleanupScript, buildSiteDeployScript, buildStaticSiteDeployScript, resolveExecStart, deployAllComputeSites, deploySiteRelease, isLocalDatabase, reloadRpxGateway, renewRpxCertificates, gatewayHostnames, hasAutoWwwVariant, } from './drivers';
|
|
43
43
|
export type { CreateCloudDriverOptions } from './drivers/factory';
|
|
44
44
|
export type { DriverState, FirstBootBundle, FirstBootIdentity, FirstBootOs, ResolvedSshSettings, SshDriverOptions, SshDriverState, SshPreflightFacts, SshTransport, SshTransportOptions, } from './drivers';
|
|
45
45
|
export { dashboardActions, resolveDashboardAction, sanitizeCloudConfig, startLocalDashboardServer, } from './deploy/local-dashboard-server';
|