openship 0.7.0 → 0.7.1
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/bare-AB4SMTNJ.js +29 -0
- package/dist/{chunk-J2NDOB7D.js → chunk-2BAKEGGF.js} +1 -1
- package/dist/{chunk-JAKVPLHT.js → chunk-2YAY5XHK.js} +1 -1
- package/dist/{chunk-YGA52DHX.js → chunk-37XZTLBJ.js} +3 -3
- package/dist/{chunk-GYDROM4W.js → chunk-3K65MMYV.js} +1 -1
- package/dist/{chunk-XQC6KYZD.js → chunk-3WBKLDGC.js} +3 -3
- package/dist/{chunk-5CFUYMPE.js → chunk-3YSSXSC2.js} +12 -12
- package/dist/{chunk-TPGBT5UR.js → chunk-7MCPDYKP.js} +621 -94
- package/dist/{chunk-CMGRMPRQ.js → chunk-7TQP6723.js} +2 -2
- package/dist/{chunk-MZYD3LFP.js → chunk-AMADTKC6.js} +1 -1
- package/dist/{chunk-JWW5YAFL.js → chunk-B2BQX6JX.js} +3 -3
- package/dist/{chunk-DZBXOF5Q.js → chunk-BBPKAQ54.js} +6 -6
- package/dist/{chunk-IVRTIKNZ.js → chunk-COI4VFRW.js} +34 -2
- package/dist/{chunk-ZFA3MZ5N.js → chunk-CQ2JOXEQ.js} +3 -3
- package/dist/{chunk-BOD2IQ3P.js → chunk-DQR5TPFB.js} +5 -5
- package/dist/{chunk-AUBB5DLY.js → chunk-ETK6IBCH.js} +6 -6
- package/dist/{chunk-RHHCAWW3.js → chunk-FNWNUYS3.js} +3 -3
- package/dist/{chunk-3KUW2UC6.js → chunk-GPTBEPUE.js} +21 -14
- package/dist/{chunk-TT7P5ZZ3.js → chunk-H36ASAYI.js} +8 -8
- package/dist/{chunk-SYQ3FOLE.js → chunk-IVMPA6RC.js} +2 -2
- package/dist/{chunk-SPR7N2EK.js → chunk-IXBOV7BE.js} +9 -9
- package/dist/{chunk-3LWGDMJU.js → chunk-KATXZ5AB.js} +1 -1
- package/dist/{chunk-J4SYG2LC.js → chunk-KCMEWNP7.js} +1 -1
- package/dist/{chunk-N5YZMO33.js → chunk-L4DRH6ZA.js} +12 -1
- package/dist/{chunk-GEHV7JBS.js → chunk-NF7NQOAP.js} +2 -2
- package/dist/{chunk-KYTTPWRP.js → chunk-NIOLZENU.js} +9 -9
- package/dist/{chunk-LL7M7GL4.js → chunk-OEYXXSAM.js} +4 -4
- package/dist/{chunk-QNQFS37A.js → chunk-S5GU345P.js} +3 -3
- package/dist/{chunk-HBQWOJRP.js → chunk-TKK5NPDQ.js} +2 -2
- package/dist/{chunk-5D27WZBW.js → chunk-WG5PDWZ3.js} +5 -5
- package/dist/{chunk-7MKZP4TW.js → chunk-XJSLJLNY.js} +14 -14
- package/dist/{cloud-RFZSO6P5.js → cloud-T2JOFEQL.js} +20 -20
- package/dist/{detect-NXD3PYBM.js → detect-SWLZURYX.js} +5 -5
- package/dist/{docker-U5APUZBI.js → docker-SQNZRZXN.js} +11 -11
- package/dist/{docker-edge-executor-HUQOWFQU.js → docker-edge-executor-BSSQQS76.js} +8 -8
- package/dist/{edge-import-UXD52WQR.js → edge-import-LUDX77C2.js} +27 -27
- package/dist/{edge-preflight-3PMJ5BWM.js → edge-preflight-JAEFWBRI.js} +14 -14
- package/dist/{ensure-container-edge-GDPY7UJD.js → ensure-container-edge-U7FTLFVJ.js} +12 -12
- package/dist/{executor-XOVSO6QZ.js → executor-GYRZ7RIU.js} +7 -7
- package/dist/host-channel-preflight-U4IZCRXR.js +54 -0
- package/dist/index.js +45 -45
- package/dist/{local-executor-KR7BFCJP.js → local-executor-JCR46VAP.js} +3 -3
- package/dist/{nginx-JMLAS7YS.js → nginx-YA6IRPJT.js} +10 -10
- package/dist/{openresty-lua-FJH3KEC4.js → openresty-lua-DUOB64TP.js} +8 -8
- package/dist/{privilege-H2QTJ5TE.js → privilege-4B2TMVW2.js} +6 -6
- package/dist/server/index.js +3719 -1002
- package/dist/server/migrations/0122_data_transfer_staging.sql +45 -0
- package/dist/server/migrations/meta/_journal.json +7 -0
- package/dist/setup-T3WN3HRS.js +25 -0
- package/dist/{ssh-client-WVLLOAYK.js → ssh-client-FZDWP5PQ.js} +3 -3
- package/dist/up-U73RUN5R.js +61 -0
- package/package.json +1 -1
- package/dist/bare-3POKLHTW.js +0 -29
- package/dist/host-channel-preflight-T2QUDQXU.js +0 -54
- package/dist/setup-ERGE5XNW.js +0 -25
- package/dist/up-EFCE6KA6.js +0 -61
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
formatDuration,
|
|
7
7
|
isRemoteConnectionError,
|
|
8
8
|
systemDebug
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-L4DRH6ZA.js";
|
|
10
10
|
import {
|
|
11
11
|
safeErrorMessage,
|
|
12
12
|
shellQuote
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-COI4VFRW.js";
|
|
14
14
|
|
|
15
15
|
// ../../packages/adapters/src/system/probe-exec.ts
|
|
16
16
|
async function tryExec(executor, command, opts) {
|
|
@@ -4,7 +4,7 @@ import { createRequire as __ospCreateRequire } from "node:module";
|
|
|
4
4
|
const require = __ospCreateRequire(import.meta.url);
|
|
5
5
|
import {
|
|
6
6
|
sq
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-2BAKEGGF.js";
|
|
8
8
|
|
|
9
9
|
// ../../packages/adapters/src/runtime/managed-artifact.ts
|
|
10
10
|
var MANAGED_ARTIFACT_BASE = "/opt/openship";
|
|
@@ -4,12 +4,12 @@ import { createRequire as __ospCreateRequire } from "node:module";
|
|
|
4
4
|
const require = __ospCreateRequire(import.meta.url);
|
|
5
5
|
import {
|
|
6
6
|
sq
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-2BAKEGGF.js";
|
|
8
8
|
import {
|
|
9
9
|
formatDuration,
|
|
10
10
|
isRemoteConnectionError,
|
|
11
11
|
systemDebug
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-L4DRH6ZA.js";
|
|
13
13
|
import {
|
|
14
14
|
assessHostSupport,
|
|
15
15
|
classifyDistro,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
parseSystemArch,
|
|
18
18
|
parseSystemOs,
|
|
19
19
|
safeErrorMessage
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-COI4VFRW.js";
|
|
21
21
|
|
|
22
22
|
// ../../packages/adapters/src/system/elevated-executor.ts
|
|
23
23
|
import { randomBytes } from "crypto";
|
|
@@ -5,17 +5,17 @@ const require = __ospCreateRequire(import.meta.url);
|
|
|
5
5
|
import {
|
|
6
6
|
checkGit,
|
|
7
7
|
installGit
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XJSLJLNY.js";
|
|
9
9
|
import {
|
|
10
10
|
createDockerBuildContext,
|
|
11
11
|
resolveDockerBuildArgs
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-S5GU345P.js";
|
|
13
13
|
import {
|
|
14
14
|
prepareStackOutput,
|
|
15
15
|
resolveProjectDir,
|
|
16
16
|
resolveStaticOutputPath,
|
|
17
17
|
runLocalBuild
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-CQ2JOXEQ.js";
|
|
19
19
|
import {
|
|
20
20
|
BuildLogger,
|
|
21
21
|
dockerBuildContextDirectory,
|
|
@@ -29,10 +29,10 @@ import {
|
|
|
29
29
|
splitRuntimeEnv,
|
|
30
30
|
sq,
|
|
31
31
|
transferLocalDirectory
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-IVMPA6RC.js";
|
|
33
33
|
import {
|
|
34
34
|
isRuntimeNotFoundError
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-L4DRH6ZA.js";
|
|
36
36
|
import {
|
|
37
37
|
PRICING,
|
|
38
38
|
STACKS,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
packageManagerEnsureCommand,
|
|
45
45
|
safeErrorMessage,
|
|
46
46
|
shellSplitWords
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-COI4VFRW.js";
|
|
48
48
|
|
|
49
49
|
// ../../packages/adapters/src/runtime/cloud.ts
|
|
50
50
|
import { readFile } from "fs/promises";
|
|
@@ -1418,6 +1418,26 @@ function parseEnv(ctx, v, path) {
|
|
|
1418
1418
|
}
|
|
1419
1419
|
return out;
|
|
1420
1420
|
}
|
|
1421
|
+
function parseBuildArgs(ctx, v, path) {
|
|
1422
|
+
if (v === void 0) return void 0;
|
|
1423
|
+
if (!ctx.isObj(v)) {
|
|
1424
|
+
ctx.err(path, "must be an object of string or null build arguments");
|
|
1425
|
+
return void 0;
|
|
1426
|
+
}
|
|
1427
|
+
const out = {};
|
|
1428
|
+
for (const [key, value] of Object.entries(v)) {
|
|
1429
|
+
if (!isValidEnvKey(key)) {
|
|
1430
|
+
ctx.err(`${path}.${key}`, "has an invalid build argument name");
|
|
1431
|
+
continue;
|
|
1432
|
+
}
|
|
1433
|
+
if (value === null || typeof value === "string") {
|
|
1434
|
+
out[key] = value;
|
|
1435
|
+
} else {
|
|
1436
|
+
ctx.err(`${path}.${key}`, "must be a string or null");
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
return out;
|
|
1440
|
+
}
|
|
1421
1441
|
function parseDomains(ctx, v, path) {
|
|
1422
1442
|
if (v === void 0) return void 0;
|
|
1423
1443
|
if (!Array.isArray(v)) {
|
|
@@ -1488,7 +1508,10 @@ function parseRoutes(ctx, v, path) {
|
|
|
1488
1508
|
const source = ctx.str(h.source, `${p}.source`);
|
|
1489
1509
|
const list = Array.isArray(h.headers) ? h.headers.map((kv, j) => {
|
|
1490
1510
|
const key = ctx.str(kv?.key, `${p}.headers[${j}].key`);
|
|
1491
|
-
const value = ctx.str(
|
|
1511
|
+
const value = ctx.str(
|
|
1512
|
+
kv?.value,
|
|
1513
|
+
`${p}.headers[${j}].value`
|
|
1514
|
+
);
|
|
1492
1515
|
return key && value !== void 0 ? { key, value } : null;
|
|
1493
1516
|
}).filter(Boolean) : [];
|
|
1494
1517
|
return source ? { source, headers: list } : null;
|
|
@@ -1569,6 +1592,7 @@ function parseServices(ctx, v, path) {
|
|
|
1569
1592
|
image: ctx.str(item.image, `${p}.image`),
|
|
1570
1593
|
build: ctx.str(item.build, `${p}.build`),
|
|
1571
1594
|
dockerfile: ctx.str(item.dockerfile, `${p}.dockerfile`),
|
|
1595
|
+
buildArgs: parseBuildArgs(ctx, item.buildArgs, `${p}.buildArgs`),
|
|
1572
1596
|
ports: ctx.strArray(item.ports, `${p}.ports`),
|
|
1573
1597
|
volumes: ctx.strArray(item.volumes, `${p}.volumes`),
|
|
1574
1598
|
dependsOn: ctx.strArray(item.dependsOn, `${p}.dependsOn`),
|
|
@@ -4070,6 +4094,7 @@ var catalog_default = {
|
|
|
4070
4094
|
GOTRUE_API_HOST: "0.0.0.0",
|
|
4071
4095
|
GOTRUE_API_PORT: "9999",
|
|
4072
4096
|
API_EXTERNAL_URL: "{{publicUrl:kong}}",
|
|
4097
|
+
GOTRUE_SAML_EXTERNAL_URL: "{{publicUrl:kong}}/auth/v1",
|
|
4073
4098
|
GOTRUE_DB_DRIVER: "postgres",
|
|
4074
4099
|
GOTRUE_DB_DATABASE_URL: "postgres://supabase_auth_admin:{{config:POSTGRES_PASSWORD}}@db:5432/postgres",
|
|
4075
4100
|
GOTRUE_SITE_URL: "{{publicUrl:kong}}",
|
|
@@ -4326,7 +4351,7 @@ var catalog_default = {
|
|
|
4326
4351
|
{
|
|
4327
4352
|
service: "kong",
|
|
4328
4353
|
path: "/usr/local/kong/kong.yml",
|
|
4329
|
-
content: '_format_version: "3.0"\n_transform: true\n\nconsumers:\n - username: DASHBOARD\n - username: anon\n keyauth_credentials:\n - key: {{config:ANON_KEY}}\n - username: service_role\n keyauth_credentials:\n - key: {{config:SERVICE_ROLE_KEY}}\n\nacls:\n - consumer: anon\n group: anon\n - consumer: service_role\n group: admin\n\nbasicauth_credentials:\n - consumer: DASHBOARD\n username: {{config:DASHBOARD_USERNAME}}\n password: {{config:DASHBOARD_PASSWORD}}\n\nservices:\n - name: auth-v1-open\n url: http://auth:9999/verify\n routes:\n - name: auth-v1-open\n strip_path: true\n paths:\n - /auth/v1/verify\n plugins:\n - name: cors\n - name: auth-v1-open-callback\n url: http://auth:9999/callback\n routes:\n - name: auth-v1-open-callback\n strip_path: true\n paths:\n - /auth/v1/callback\n plugins:\n - name: cors\n - name: auth-v1-open-authorize\n url: http://auth:9999/authorize\n routes:\n - name: auth-v1-open-authorize\n strip_path: true\n paths:\n - /auth/v1/authorize\n plugins:\n - name: cors\n - name: auth-v1\n url: http://auth:9999/\n routes:\n - name: auth-v1-all\n strip_path: true\n paths:\n - /auth/v1/\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: false\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: rest-v1\n url: http://rest:3000/\n routes:\n - name: rest-v1-all\n strip_path: true\n paths:\n - /rest/v1/\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: true\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: graphql-v1\n url: http://rest:3000/rpc/graphql\n routes:\n - name: graphql-v1-all\n strip_path: true\n paths:\n - /graphql/v1\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: true\n - name: request-transformer\n config:\n add:\n headers:\n - Content-Profile:graphql_public\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: realtime-v1-ws\n url: http://realtime-dev.supabase-realtime:4000/socket/\n routes:\n - name: realtime-v1-ws\n strip_path: true\n paths:\n - /realtime/v1/\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: false\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: storage-v1\n url: http://storage:5000/\n routes:\n - name: storage-v1-all\n strip_path: true\n paths:\n - /storage/v1/\n plugins:\n - name: cors\n - name: meta\n url: http://meta:8080/\n routes:\n - name: meta-all\n strip_path: true\n paths:\n - /pg/\n plugins:\n - name: key-auth\n config:\n hide_credentials: false\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - name: dashboard\n url: http://studio:3000/\n routes:\n - name: dashboard-all\n strip_path: true\n paths:\n - /\n plugins:\n - name: cors\n - name: basic-auth\n config:\n hide_credentials: true\n'
|
|
4354
|
+
content: '_format_version: "3.0"\n_transform: true\n\nconsumers:\n - username: DASHBOARD\n - username: anon\n keyauth_credentials:\n - key: {{config:ANON_KEY}}\n - username: service_role\n keyauth_credentials:\n - key: {{config:SERVICE_ROLE_KEY}}\n\nacls:\n - consumer: anon\n group: anon\n - consumer: service_role\n group: admin\n\nbasicauth_credentials:\n - consumer: DASHBOARD\n username: {{config:DASHBOARD_USERNAME}}\n password: {{config:DASHBOARD_PASSWORD}}\n\nservices:\n - name: auth-v1-open\n url: http://auth:9999/verify\n routes:\n - name: auth-v1-open\n strip_path: true\n paths:\n - /auth/v1/verify\n plugins:\n - name: cors\n - name: auth-v1-open-callback\n url: http://auth:9999/callback\n routes:\n - name: auth-v1-open-callback\n strip_path: true\n paths:\n - /auth/v1/callback\n plugins:\n - name: cors\n - name: auth-v1-open-authorize\n url: http://auth:9999/authorize\n routes:\n - name: auth-v1-open-authorize\n strip_path: true\n paths:\n - /auth/v1/authorize\n plugins:\n - name: cors\n - name: auth-v1-open-sso-acs\n url: http://auth:9999/sso/saml/acs\n routes:\n - name: auth-v1-open-sso-acs\n strip_path: true\n paths:\n - /auth/v1/sso/saml/acs\n plugins:\n - name: cors\n - name: auth-v1-open-sso-metadata\n url: http://auth:9999/sso/saml/metadata\n routes:\n - name: auth-v1-open-sso-metadata\n strip_path: true\n paths:\n - /auth/v1/sso/saml/metadata\n plugins:\n - name: cors\n - name: auth-v1\n url: http://auth:9999/\n routes:\n - name: auth-v1-all\n strip_path: true\n paths:\n - /auth/v1/\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: false\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: rest-v1\n url: http://rest:3000/\n routes:\n - name: rest-v1-all\n strip_path: true\n paths:\n - /rest/v1/\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: true\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: graphql-v1\n url: http://rest:3000/rpc/graphql\n routes:\n - name: graphql-v1-all\n strip_path: true\n paths:\n - /graphql/v1\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: true\n - name: request-transformer\n config:\n add:\n headers:\n - Content-Profile:graphql_public\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: realtime-v1-ws\n url: http://realtime-dev.supabase-realtime:4000/socket/\n routes:\n - name: realtime-v1-ws\n strip_path: true\n paths:\n - /realtime/v1/\n plugins:\n - name: cors\n - name: key-auth\n config:\n hide_credentials: false\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - anon\n - name: storage-v1\n url: http://storage:5000/\n routes:\n - name: storage-v1-all\n strip_path: true\n paths:\n - /storage/v1/\n plugins:\n - name: cors\n - name: meta\n url: http://meta:8080/\n routes:\n - name: meta-all\n strip_path: true\n paths:\n - /pg/\n plugins:\n - name: key-auth\n config:\n hide_credentials: false\n - name: acl\n config:\n hide_groups_header: true\n allow:\n - admin\n - name: dashboard\n url: http://studio:3000/\n routes:\n - name: dashboard-all\n strip_path: true\n paths:\n - /\n plugins:\n - name: cors\n - name: basic-auth\n config:\n hide_credentials: true\n'
|
|
4330
4355
|
},
|
|
4331
4356
|
{
|
|
4332
4357
|
service: "db",
|
|
@@ -25441,6 +25466,13 @@ var AUDIT_EVENTS = {
|
|
|
25441
25466
|
tone: "warning",
|
|
25442
25467
|
description: "Cleanup did not complete, so the app record was kept for a safe retry."
|
|
25443
25468
|
},
|
|
25469
|
+
"project.build_cache.cleared": {
|
|
25470
|
+
category: "apps",
|
|
25471
|
+
action: "cleared the Docker build cache for",
|
|
25472
|
+
label: "Build cache cleared",
|
|
25473
|
+
tone: "warning",
|
|
25474
|
+
description: "Unused build cache was removed from the app's Docker host."
|
|
25475
|
+
},
|
|
25444
25476
|
"project:write": {
|
|
25445
25477
|
category: "apps",
|
|
25446
25478
|
action: "changed",
|
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
detectBuildKillHint,
|
|
7
7
|
runBuildPipeline,
|
|
8
8
|
transferLocalDirectory
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IVMPA6RC.js";
|
|
10
10
|
import {
|
|
11
11
|
LocalExecutor
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KCMEWNP7.js";
|
|
13
13
|
import {
|
|
14
14
|
wrapLocalBuildCommand
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-2BAKEGGF.js";
|
|
16
16
|
|
|
17
17
|
// ../../packages/adapters/src/runtime/local-build.ts
|
|
18
18
|
var LOCAL_BUILD_DIR = "/tmp/openship/.builds";
|
|
@@ -5,23 +5,23 @@ const require = __ospCreateRequire(import.meta.url);
|
|
|
5
5
|
import {
|
|
6
6
|
envOps,
|
|
7
7
|
opScript
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-KATXZ5AB.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveEnvironment
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-B2BQX6JX.js";
|
|
12
12
|
import {
|
|
13
13
|
sq
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-2BAKEGGF.js";
|
|
15
15
|
import {
|
|
16
16
|
describeProcess,
|
|
17
17
|
probeListeningPortOwners
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-NF7NQOAP.js";
|
|
19
19
|
import {
|
|
20
20
|
SYSTEM,
|
|
21
21
|
answered,
|
|
22
22
|
refused,
|
|
23
23
|
safeErrorMessage
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-COI4VFRW.js";
|
|
25
25
|
|
|
26
26
|
// ../../packages/adapters/src/infra/openresty-lua.ts
|
|
27
27
|
import { createHash, randomBytes } from "crypto";
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
isCloudFrontedHost,
|
|
20
20
|
luaSourceAvailable,
|
|
21
21
|
reloadBareOpenResty
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-DQR5TPFB.js";
|
|
23
23
|
import {
|
|
24
24
|
edgeDownExplanation,
|
|
25
25
|
explainEdgeDown,
|
|
@@ -30,17 +30,17 @@ import {
|
|
|
30
30
|
} from "./chunk-R4VDPFLS.js";
|
|
31
31
|
import {
|
|
32
32
|
EXECUTOR_DELEGATE
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-B2BQX6JX.js";
|
|
34
34
|
import {
|
|
35
35
|
logEntry,
|
|
36
36
|
sq
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-2BAKEGGF.js";
|
|
38
38
|
import {
|
|
39
39
|
edgeFailureReason
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-37XZTLBJ.js";
|
|
41
41
|
import {
|
|
42
42
|
probeListeningPort
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-NF7NQOAP.js";
|
|
44
44
|
import {
|
|
45
45
|
PROXY_DIRECTIVES,
|
|
46
46
|
parseProxyValue,
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
resolveRedirectStatus,
|
|
49
49
|
safeErrorMessage,
|
|
50
50
|
sanitizeProxySettings
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-COI4VFRW.js";
|
|
52
52
|
|
|
53
53
|
// ../../packages/adapters/src/infra/nginx.ts
|
|
54
54
|
import {
|
|
@@ -4,15 +4,15 @@ import { createRequire as __ospCreateRequire } from "node:module";
|
|
|
4
4
|
const require = __ospCreateRequire(import.meta.url);
|
|
5
5
|
import {
|
|
6
6
|
hostRefusal
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-KATXZ5AB.js";
|
|
8
8
|
import {
|
|
9
9
|
elevatedExecutor,
|
|
10
10
|
resolveEnvironment
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-B2BQX6JX.js";
|
|
12
12
|
import {
|
|
13
13
|
answered,
|
|
14
14
|
refused
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-COI4VFRW.js";
|
|
16
16
|
|
|
17
17
|
// ../../packages/adapters/src/system/privilege.ts
|
|
18
18
|
function rootChecked(executor, why) {
|
|
@@ -8,30 +8,32 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
getTarCreateEnv,
|
|
10
10
|
prepareSourceTarArgs
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-2YAY5XHK.js";
|
|
12
12
|
import {
|
|
13
13
|
connectSshClient,
|
|
14
14
|
openDockerDialStdioChannel,
|
|
15
15
|
openSftp,
|
|
16
16
|
openSshUnixSocket,
|
|
17
17
|
reconcileKnownHosts
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-TKK5NPDQ.js";
|
|
19
19
|
import {
|
|
20
20
|
LocalExecutor
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-KCMEWNP7.js";
|
|
22
22
|
import {
|
|
23
23
|
emitBufferedLines,
|
|
24
24
|
flushBufferedLines,
|
|
25
25
|
hasLocalCommand,
|
|
26
26
|
logEntry,
|
|
27
27
|
sq
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-2BAKEGGF.js";
|
|
29
29
|
import {
|
|
30
30
|
HostChannelUnavailableError,
|
|
31
31
|
SshDisconnectedError,
|
|
32
|
+
SshExecRequestError,
|
|
32
33
|
commandForError,
|
|
33
|
-
isSshAuthError
|
|
34
|
-
|
|
34
|
+
isSshAuthError,
|
|
35
|
+
isSshExecRequestError
|
|
36
|
+
} from "./chunk-L4DRH6ZA.js";
|
|
35
37
|
import {
|
|
36
38
|
HOST_CHANNEL_AUTH_REJECTED,
|
|
37
39
|
HOST_CHANNEL_NOT_PROVISIONED,
|
|
@@ -42,7 +44,7 @@ import {
|
|
|
42
44
|
hostChannelAccount,
|
|
43
45
|
hostFirewallRule,
|
|
44
46
|
safeErrorMessage
|
|
45
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-COI4VFRW.js";
|
|
46
48
|
|
|
47
49
|
// ../../packages/adapters/src/system/executor.ts
|
|
48
50
|
import { existsSync, readFileSync } from "fs";
|
|
@@ -254,6 +256,9 @@ var remoteDirname = posix.dirname;
|
|
|
254
256
|
var SFTP_OPERATION_TIMEOUT_MS = 3e4;
|
|
255
257
|
var CHANNEL_CLOSE_GRACE_MS = 750;
|
|
256
258
|
var TRANSPORT_CLOSE_GRACE_MS = 250;
|
|
259
|
+
function tagExecRequestError(error) {
|
|
260
|
+
return error.message === "Unable to exec" ? new SshExecRequestError(error) : error;
|
|
261
|
+
}
|
|
257
262
|
function abortError(operation, signal) {
|
|
258
263
|
const reason = signal.reason;
|
|
259
264
|
const suffix = reason instanceof Error && reason.message ? `: ${reason.message}` : "";
|
|
@@ -619,18 +624,20 @@ var SshExecutor = class _SshExecutor {
|
|
|
619
624
|
if (this.inflight.size > 0) this.dropSftp();
|
|
620
625
|
else this.resetConnection();
|
|
621
626
|
}
|
|
622
|
-
/** Returns true if the error is an SSH channel-open failure. */
|
|
627
|
+
/** Returns true if the error is an SSH channel-open or channel-exec failure. */
|
|
623
628
|
static isChannelError(err) {
|
|
624
629
|
if (!(err instanceof Error)) return false;
|
|
630
|
+
if (isSshExecRequestError(err)) return true;
|
|
625
631
|
const msg = err.message.toLowerCase();
|
|
626
632
|
return msg.includes("channel open failure") || msg.includes("open failed");
|
|
627
633
|
}
|
|
628
634
|
/**
|
|
629
635
|
* Run an operation, and if it fails opening an SSH channel on a half-dead
|
|
630
636
|
* cached connection ("Channel open failure: open failed" — common after the
|
|
631
|
-
* idle timeout drops the socket),
|
|
632
|
-
*
|
|
633
|
-
*
|
|
637
|
+
* idle timeout drops the socket), recover channel capacity and retry ONCE.
|
|
638
|
+
* An idle connection is replaced; a busy one stays alive so its other command
|
|
639
|
+
* is not aborted (see recoverFromChannelError). The SFTP-based ops
|
|
640
|
+
* (writeFile/readFile/exists) must go through this too, or a deploy's route
|
|
634
641
|
* write fails spuriously and only succeeds on a manual redeploy.
|
|
635
642
|
*/
|
|
636
643
|
async withChannelRetry(fn) {
|
|
@@ -703,7 +710,7 @@ var SshExecutor = class _SshExecutor {
|
|
|
703
710
|
);
|
|
704
711
|
timer.unref?.();
|
|
705
712
|
client.exec(_SshExecutor.ENV_PREFIX + command, (err, stream) => {
|
|
706
|
-
if (err) return finish(() => reject(err));
|
|
713
|
+
if (err) return finish(() => reject(tagExecRequestError(err)));
|
|
707
714
|
channel = stream;
|
|
708
715
|
if (terminating) {
|
|
709
716
|
try {
|
|
@@ -788,7 +795,7 @@ var SshExecutor = class _SshExecutor {
|
|
|
788
795
|
return;
|
|
789
796
|
}
|
|
790
797
|
client.exec(_SshExecutor.ENV_PREFIX + command, (err, stream) => {
|
|
791
|
-
if (err) return finish(() => reject(err));
|
|
798
|
+
if (err) return finish(() => reject(tagExecRequestError(err)));
|
|
792
799
|
channel = stream;
|
|
793
800
|
if (terminating || signal?.aborted) {
|
|
794
801
|
try {
|
|
@@ -2102,7 +2109,7 @@ async function verifyHostChannelAuth(config) {
|
|
|
2102
2109
|
let hint = null;
|
|
2103
2110
|
let forwarding = "unknown";
|
|
2104
2111
|
try {
|
|
2105
|
-
const { connectSshClient: connectSshClient2 } = await import("./ssh-client-
|
|
2112
|
+
const { connectSshClient: connectSshClient2 } = await import("./ssh-client-FZDWP5PQ.js");
|
|
2106
2113
|
const client = await connectSshClient2({
|
|
2107
2114
|
host: config.host,
|
|
2108
2115
|
port: config.port,
|
|
@@ -10,28 +10,28 @@ import {
|
|
|
10
10
|
readComposeEnvFile,
|
|
11
11
|
resolveLocalEnvironmentSync,
|
|
12
12
|
thisHost
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-IXBOV7BE.js";
|
|
14
14
|
import {
|
|
15
15
|
OS_DIR
|
|
16
16
|
} from "./chunk-ELGRMZOW.js";
|
|
17
17
|
import {
|
|
18
18
|
systemCatalog
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-XJSLJLNY.js";
|
|
20
20
|
import {
|
|
21
21
|
EDGE_CONTAINER_MOUNTS,
|
|
22
22
|
EDGE_HOST_STATE_DIR
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-DQR5TPFB.js";
|
|
24
24
|
import {
|
|
25
25
|
DEFAULT_DOCKER_SOCKET_PATH,
|
|
26
26
|
resolveLocalDockerSocketPath
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-7MCPDYKP.js";
|
|
28
28
|
import {
|
|
29
29
|
LocalExecutor
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-KCMEWNP7.js";
|
|
31
31
|
import {
|
|
32
32
|
invalidateEdgeContainer,
|
|
33
33
|
sanitizeEdgeVhosts
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-37XZTLBJ.js";
|
|
35
35
|
import {
|
|
36
36
|
DEFAULT_IMAGE_REGISTRY,
|
|
37
37
|
HOST_CHANNEL_BLOCKED,
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
hostFirewallRule,
|
|
52
52
|
hostFirewallRuleRemoval,
|
|
53
53
|
wrapText
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-COI4VFRW.js";
|
|
55
55
|
|
|
56
56
|
// src/lib/host-channel-preflight.ts
|
|
57
57
|
import { spawnSync as spawnSync4 } from "child_process";
|
|
@@ -1627,7 +1627,7 @@ function operatorEnvPassthrough(managed, prev) {
|
|
|
1627
1627
|
}
|
|
1628
1628
|
var PRESERVED_ENV_HEADER = "# Preserved from your existing .env \u2014 set by you, not by `openship up` (#485).";
|
|
1629
1629
|
function resolveImageVersion(opts) {
|
|
1630
|
-
return opts.version?.trim() || process.env.OPENSHIP_VERSION?.trim() || (true ? "0.7.
|
|
1630
|
+
return opts.version?.trim() || process.env.OPENSHIP_VERSION?.trim() || (true ? "0.7.1" : "latest");
|
|
1631
1631
|
}
|
|
1632
1632
|
function managedEnvLines(opts, host, cfg, prev) {
|
|
1633
1633
|
const lines = [
|
|
@@ -5,7 +5,7 @@ const require = __ospCreateRequire(import.meta.url);
|
|
|
5
5
|
import {
|
|
6
6
|
getTarCreateEnv,
|
|
7
7
|
prepareSourceTarArgs
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2YAY5XHK.js";
|
|
9
9
|
import {
|
|
10
10
|
TRANSFER_EXCLUDES,
|
|
11
11
|
nodeBinDirs,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
packageManagerEnsureCommand,
|
|
14
14
|
safeErrorMessage,
|
|
15
15
|
shellQuote
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-COI4VFRW.js";
|
|
17
17
|
|
|
18
18
|
// ../../packages/adapters/src/runtime/git-clone.ts
|
|
19
19
|
var sq = shellQuote;
|
|
@@ -134,10 +134,10 @@ import {
|
|
|
134
134
|
} from "./chunk-ZWLDLTJP.js";
|
|
135
135
|
import {
|
|
136
136
|
CloudRuntime
|
|
137
|
-
} from "./chunk-
|
|
137
|
+
} from "./chunk-BBPKAQ54.js";
|
|
138
138
|
import {
|
|
139
139
|
OPENRESTY_DEFAULT_PATHS
|
|
140
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-DQR5TPFB.js";
|
|
141
141
|
import {
|
|
142
142
|
DockerRuntime,
|
|
143
143
|
daemonConnectionFrom,
|
|
@@ -146,26 +146,26 @@ import {
|
|
|
146
146
|
resolveExecExitCode,
|
|
147
147
|
startAttachStream,
|
|
148
148
|
startExecStream
|
|
149
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-7MCPDYKP.js";
|
|
150
150
|
import {
|
|
151
151
|
BareRuntime
|
|
152
|
-
} from "./chunk-
|
|
152
|
+
} from "./chunk-3YSSXSC2.js";
|
|
153
153
|
import {
|
|
154
154
|
createExecutor
|
|
155
|
-
} from "./chunk-
|
|
155
|
+
} from "./chunk-GPTBEPUE.js";
|
|
156
156
|
import {
|
|
157
157
|
envOps
|
|
158
|
-
} from "./chunk-
|
|
158
|
+
} from "./chunk-KATXZ5AB.js";
|
|
159
159
|
import {
|
|
160
160
|
ENVIRONMENT_PROBE_SCRIPT,
|
|
161
161
|
ENVIRONMENT_PROBE_TIMEOUT_MS,
|
|
162
162
|
cacheEnvironment,
|
|
163
163
|
parseEnvironmentProbe,
|
|
164
164
|
profileIsFresh
|
|
165
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-B2BQX6JX.js";
|
|
166
166
|
import {
|
|
167
167
|
MAIL_HOST_STATE_DIR
|
|
168
|
-
} from "./chunk-
|
|
168
|
+
} from "./chunk-7TQP6723.js";
|
|
169
169
|
import {
|
|
170
170
|
FAMILY_BY_DISTRO,
|
|
171
171
|
isAwsS3Endpoint,
|
|
@@ -177,7 +177,7 @@ import {
|
|
|
177
177
|
validateBackupPath,
|
|
178
178
|
validateClearPath,
|
|
179
179
|
withTimeout
|
|
180
|
-
} from "./chunk-
|
|
180
|
+
} from "./chunk-COI4VFRW.js";
|
|
181
181
|
|
|
182
182
|
// ../../packages/adapters/src/runtime/image-transfer.ts
|
|
183
183
|
import { Transform } from "stream";
|
|
@@ -44,6 +44,15 @@ var SshDisconnectedError = class extends Error {
|
|
|
44
44
|
this.name = "SshDisconnectedError";
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
|
+
var SshExecRequestError = class extends Error {
|
|
48
|
+
constructor(cause) {
|
|
49
|
+
super(cause.message, { cause });
|
|
50
|
+
this.name = "SshExecRequestError";
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
function isSshExecRequestError(err) {
|
|
54
|
+
return err instanceof SshExecRequestError || err instanceof Error && err.name === "SshExecRequestError";
|
|
55
|
+
}
|
|
47
56
|
function isSshDisconnectedError(err) {
|
|
48
57
|
return err instanceof SshDisconnectedError || err instanceof Error && err.name === "SshDisconnectedError";
|
|
49
58
|
}
|
|
@@ -67,7 +76,7 @@ function isRetryableRemoteConnectionError(err) {
|
|
|
67
76
|
);
|
|
68
77
|
}
|
|
69
78
|
function isRemoteConnectionError(err) {
|
|
70
|
-
return isSshAuthError(err) || isRetryableRemoteConnectionError(err);
|
|
79
|
+
return isSshAuthError(err) || isRetryableRemoteConnectionError(err) || isSshExecRequestError(err);
|
|
71
80
|
}
|
|
72
81
|
var MAX_COMMAND_CHARS = 120;
|
|
73
82
|
function commandForError(command) {
|
|
@@ -100,6 +109,8 @@ function formatDuration(startMs) {
|
|
|
100
109
|
|
|
101
110
|
export {
|
|
102
111
|
SshDisconnectedError,
|
|
112
|
+
SshExecRequestError,
|
|
113
|
+
isSshExecRequestError,
|
|
103
114
|
isSshAuthError,
|
|
104
115
|
HostChannelUnavailableError,
|
|
105
116
|
isRetryableRemoteConnectionError,
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
isContainerPortForwarder,
|
|
8
8
|
managedDeploymentIdFromUnit,
|
|
9
9
|
tryExec
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-7TQP6723.js";
|
|
11
11
|
import {
|
|
12
12
|
shellQuote
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-COI4VFRW.js";
|
|
14
14
|
|
|
15
15
|
// ../../packages/adapters/src/system/port-listen.ts
|
|
16
16
|
var PROC_NET_TCP_FILES = ["/proc/net/tcp", "/proc/net/tcp6"];
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
resolvePorts,
|
|
29
29
|
sourceBuildDir,
|
|
30
30
|
verifyHostChannel
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-H36ASAYI.js";
|
|
32
32
|
import {
|
|
33
33
|
bootstrapAdmin,
|
|
34
34
|
importMigratedSites,
|
|
@@ -36,18 +36,18 @@ import {
|
|
|
36
36
|
internalPost,
|
|
37
37
|
mintBareInternalToken,
|
|
38
38
|
waitHealthy
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-OEYXXSAM.js";
|
|
40
40
|
import {
|
|
41
41
|
startUnitHint,
|
|
42
42
|
thisHost
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-IXBOV7BE.js";
|
|
44
44
|
import {
|
|
45
45
|
completeHostEdge,
|
|
46
46
|
markStoppedProxyImported,
|
|
47
47
|
planAndApplyHostEdge,
|
|
48
48
|
previewHostEdge,
|
|
49
49
|
rollbackHostEdge
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-WG5PDWZ3.js";
|
|
51
51
|
import {
|
|
52
52
|
AUTH_SECRET_FILE,
|
|
53
53
|
DATA_DIR,
|
|
@@ -58,17 +58,17 @@ import {
|
|
|
58
58
|
} from "./chunk-ELGRMZOW.js";
|
|
59
59
|
import {
|
|
60
60
|
LocalExecutor
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-KCMEWNP7.js";
|
|
62
62
|
import {
|
|
63
63
|
edgeCrashReason,
|
|
64
64
|
edgeIsBroken
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-37XZTLBJ.js";
|
|
66
66
|
import {
|
|
67
67
|
EDGE_CONTAINER_NAME
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-7TQP6723.js";
|
|
69
69
|
import {
|
|
70
70
|
isValidEmail
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-COI4VFRW.js";
|
|
72
72
|
|
|
73
73
|
// src/commands/up.ts
|
|
74
74
|
import { Command } from "commander";
|
|
@@ -1564,7 +1564,7 @@ async function runForeground(opts, source) {
|
|
|
1564
1564
|
const uiSpinner = ora("Preparing the dashboard\u2026").start();
|
|
1565
1565
|
try {
|
|
1566
1566
|
const bundle = await ensureDashboard({
|
|
1567
|
-
tag: source ? "local" : opts.uiVersion || `v${"0.7.
|
|
1567
|
+
tag: source ? "local" : opts.uiVersion || `v${"0.7.1"}`,
|
|
1568
1568
|
onProgress: (received, total) => {
|
|
1569
1569
|
if (total) {
|
|
1570
1570
|
uiSpinner.text = `Downloading dashboard\u2026 ${Math.round(received / total * 100)}%`;
|