@supacloud/admin 0.1.5 → 0.1.6
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/index.js +56 -8
- package/dist/sshcrypto-w7mnkyjv.node +0 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4757,6 +4757,11 @@ var require_utils = __commonJS((exports, module) => {
|
|
|
4757
4757
|
};
|
|
4758
4758
|
});
|
|
4759
4759
|
|
|
4760
|
+
// node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node
|
|
4761
|
+
var require_sshcrypto = __commonJS((exports, module) => {
|
|
4762
|
+
module.exports = __require("./sshcrypto-w7mnkyjv.node");
|
|
4763
|
+
});
|
|
4764
|
+
|
|
4760
4765
|
// node_modules/ssh2/lib/protocol/crypto/poly1305.js
|
|
4761
4766
|
var require_poly1305 = __commonJS((exports, module) => {
|
|
4762
4767
|
var __dirname = "/home/runner/work/supacloud/supacloud/packages/admin/node_modules/ssh2/lib/protocol/crypto", __filename = "/home/runner/work/supacloud/supacloud/packages/admin/node_modules/ssh2/lib/protocol/crypto/poly1305.js";
|
|
@@ -5243,7 +5248,7 @@ var require_crypto = __commonJS((exports, module) => {
|
|
|
5243
5248
|
var ChaChaPolyDecipher;
|
|
5244
5249
|
var GenericDecipher;
|
|
5245
5250
|
try {
|
|
5246
|
-
binding = (
|
|
5251
|
+
binding = require_sshcrypto();
|
|
5247
5252
|
({
|
|
5248
5253
|
AESGCMCipher,
|
|
5249
5254
|
ChaChaPolyCipher,
|
|
@@ -23019,26 +23024,69 @@ function detectSource(sources) {
|
|
|
23019
23024
|
return present.has("env") ? "env" : "dotenv";
|
|
23020
23025
|
return "mixed";
|
|
23021
23026
|
}
|
|
23027
|
+
function normalizeUrl(value) {
|
|
23028
|
+
const trimmed = value.trim().replace(/\/+$/, "");
|
|
23029
|
+
if (!trimmed)
|
|
23030
|
+
return "";
|
|
23031
|
+
try {
|
|
23032
|
+
return new URL(trimmed).toString().replace(/\/+$/, "");
|
|
23033
|
+
} catch {
|
|
23034
|
+
return "";
|
|
23035
|
+
}
|
|
23036
|
+
}
|
|
23037
|
+
function hostFromUrl(value) {
|
|
23038
|
+
try {
|
|
23039
|
+
return new URL(value).hostname;
|
|
23040
|
+
} catch {
|
|
23041
|
+
return "";
|
|
23042
|
+
}
|
|
23043
|
+
}
|
|
23044
|
+
function inferManagementApiUrlFromSupabaseUrl(value, projectRef = "") {
|
|
23045
|
+
const normalized = normalizeUrl(value);
|
|
23046
|
+
if (!normalized)
|
|
23047
|
+
return "";
|
|
23048
|
+
const url = new URL(normalized);
|
|
23049
|
+
const host = url.hostname;
|
|
23050
|
+
if (host.startsWith("api.")) {
|
|
23051
|
+
url.hostname = `studio.${host.slice("api.".length)}`;
|
|
23052
|
+
return url.toString().replace(/\/+$/, "");
|
|
23053
|
+
}
|
|
23054
|
+
const ref = projectRef.trim();
|
|
23055
|
+
if (ref && host.startsWith(`${ref}.api.`)) {
|
|
23056
|
+
url.hostname = `studio-${ref}.${host.slice(`${ref}.api.`.length)}`;
|
|
23057
|
+
return url.toString().replace(/\/+$/, "");
|
|
23058
|
+
}
|
|
23059
|
+
const managedHostMatch = host.match(/^([a-z0-9-]+)\.api\.(.+)$/i);
|
|
23060
|
+
if (managedHostMatch) {
|
|
23061
|
+
url.hostname = `studio-${managedHostMatch[1]}.${managedHostMatch[2]}`;
|
|
23062
|
+
return url.toString().replace(/\/+$/, "");
|
|
23063
|
+
}
|
|
23064
|
+
return normalized;
|
|
23065
|
+
}
|
|
23022
23066
|
function resolveSupaCloudContext(env = process.env, cwd = process.cwd()) {
|
|
23023
23067
|
const dotenv = readDotEnvFile(cwd);
|
|
23024
|
-
const
|
|
23068
|
+
const supabaseUrl = pickValue(env, dotenv, ["SUPABASE_URL"]);
|
|
23069
|
+
const explicitApiUrl = pickValue(env, dotenv, ["SUPACLOUD_API_URL", "SUPACLOUD_MANAGEMENT_API_URL", "MANAGEMENT_API_URL"]);
|
|
23025
23070
|
const inferredToken = pickValue(env, dotenv, ["SUPABASE_SERVICE_ROLE_KEY", "SUPACLOUD_API_TOKEN"]);
|
|
23071
|
+
const projectRef = pickValue(env, dotenv, ["SUPACLOUD_PROJECT_REF", "X_PROJECT_REF"]).value;
|
|
23026
23072
|
const hostFromEnv = env.SUPACLOUD_HOST;
|
|
23027
|
-
const
|
|
23073
|
+
const normalizedSupabaseUrl = normalizeUrl(supabaseUrl.value);
|
|
23074
|
+
const apiUrl = normalizeUrl(explicitApiUrl.value) || inferManagementApiUrlFromSupabaseUrl(normalizedSupabaseUrl, projectRef) || (hostFromEnv ? `http://${hostFromEnv}:9090` : "");
|
|
23075
|
+
const resolvedHostFromUrl = hostFromUrl(apiUrl || normalizedSupabaseUrl);
|
|
23028
23076
|
return {
|
|
23029
|
-
host: hostFromEnv ??
|
|
23077
|
+
host: hostFromEnv ?? resolvedHostFromUrl,
|
|
23030
23078
|
sshUser: env.SUPACLOUD_SSH_USER ?? "root",
|
|
23031
23079
|
sshPort: parseInt(env.SUPACLOUD_SSH_PORT ?? "22", 10),
|
|
23032
23080
|
sshKey: env.SUPACLOUD_SSH_KEY ?? resolve(homedir(), ".ssh", "id_rsa"),
|
|
23033
23081
|
sshPass: env.SUPACLOUD_SSH_PASS ?? "",
|
|
23034
|
-
apiUrl
|
|
23082
|
+
apiUrl,
|
|
23035
23083
|
apiToken: env.SUPACLOUD_API_TOKEN ?? inferredToken.value,
|
|
23036
|
-
projectRef
|
|
23084
|
+
projectRef,
|
|
23037
23085
|
readOnly: env.SUPACLOUD_READ_ONLY === "true",
|
|
23038
|
-
inferredSupabaseUrl:
|
|
23086
|
+
inferredSupabaseUrl: normalizedSupabaseUrl,
|
|
23039
23087
|
inferredServiceRoleKey: inferredToken.value,
|
|
23040
23088
|
source: detectSource([
|
|
23041
|
-
|
|
23089
|
+
supabaseUrl.value || explicitApiUrl.value ? supabaseUrl.value ? supabaseUrl.source : explicitApiUrl.source : "none",
|
|
23042
23090
|
inferredToken.value ? inferredToken.source : "none"
|
|
23043
23091
|
])
|
|
23044
23092
|
};
|
|
Binary file
|