envpush 0.2.0
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/chunk-2H7UOFLK.js +11 -0
- package/dist/chunk-2H7UOFLK.js.map +1 -0
- package/dist/chunk-BWPCYXXL.js +50 -0
- package/dist/chunk-BWPCYXXL.js.map +1 -0
- package/dist/chunk-HL2WXSVD.js +22 -0
- package/dist/chunk-HL2WXSVD.js.map +1 -0
- package/dist/chunk-HQFY6BB6.js +44 -0
- package/dist/chunk-HQFY6BB6.js.map +1 -0
- package/dist/chunk-TSUQGF7F.js +27 -0
- package/dist/chunk-TSUQGF7F.js.map +1 -0
- package/dist/chunk-UWVCYS24.js +63 -0
- package/dist/chunk-UWVCYS24.js.map +1 -0
- package/dist/chunk-Z23MVAIZ.js +4194 -0
- package/dist/chunk-Z23MVAIZ.js.map +1 -0
- package/dist/create-ET6VM5GG.js +82 -0
- package/dist/create-ET6VM5GG.js.map +1 -0
- package/dist/create-M22SN3AK.js +47 -0
- package/dist/create-M22SN3AK.js.map +1 -0
- package/dist/diff-3BVIP6CW.js +82 -0
- package/dist/diff-3BVIP6CW.js.map +1 -0
- package/dist/env-JDEDJCKM.js +17 -0
- package/dist/env-JDEDJCKM.js.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/init-JIDH7ICC.js +141 -0
- package/dist/init-JIDH7ICC.js.map +1 -0
- package/dist/invite-code-LVWE5FMM.js +78 -0
- package/dist/invite-code-LVWE5FMM.js.map +1 -0
- package/dist/join-XR6STHVE.js +50 -0
- package/dist/join-XR6STHVE.js.map +1 -0
- package/dist/link-YLGQQZQE.js +81 -0
- package/dist/link-YLGQQZQE.js.map +1 -0
- package/dist/list-4OS4UHKS.js +63 -0
- package/dist/list-4OS4UHKS.js.map +1 -0
- package/dist/list-YU2RHCZP.js +51 -0
- package/dist/list-YU2RHCZP.js.map +1 -0
- package/dist/login-ZH5PD5PW.js +72 -0
- package/dist/login-ZH5PD5PW.js.map +1 -0
- package/dist/logout-XROX3UVL.js +21 -0
- package/dist/logout-XROX3UVL.js.map +1 -0
- package/dist/members-ADBLZZLN.js +72 -0
- package/dist/members-ADBLZZLN.js.map +1 -0
- package/dist/pull-MVF276VO.js +50 -0
- package/dist/pull-MVF276VO.js.map +1 -0
- package/dist/push-WJ2WQRE7.js +111 -0
- package/dist/push-WJ2WQRE7.js.map +1 -0
- package/dist/register-U2RDF5PD.js +123 -0
- package/dist/register-U2RDF5PD.js.map +1 -0
- package/dist/server-C2XU2NWC.js +49 -0
- package/dist/server-C2XU2NWC.js.map +1 -0
- package/dist/set-BDI2SUDG.js +53 -0
- package/dist/set-BDI2SUDG.js.map +1 -0
- package/dist/switch-5B3A4YIX.js +57 -0
- package/dist/switch-5B3A4YIX.js.map +1 -0
- package/dist/team-V2D7J34H.js +18 -0
- package/dist/team-V2D7J34H.js.map +1 -0
- package/dist/unset-5XBSSZX5.js +45 -0
- package/dist/unset-5XBSSZX5.js.map +1 -0
- package/dist/whoami-7H25CWKV.js +39 -0
- package/dist/whoami-7H25CWKV.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
__export
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=chunk-2H7UOFLK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/lib/ui.ts
|
|
4
|
+
import * as p from "@clack/prompts";
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
function handleCancel(value) {
|
|
7
|
+
if (p.isCancel(value)) {
|
|
8
|
+
p.cancel("Operation cancelled.");
|
|
9
|
+
process.exit(0);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function maskValue(value) {
|
|
13
|
+
if (value.length <= 4) return "****";
|
|
14
|
+
return value.slice(0, 2) + "****" + value.slice(-2);
|
|
15
|
+
}
|
|
16
|
+
function formatTable(headers, rows) {
|
|
17
|
+
const colWidths = headers.map(
|
|
18
|
+
(h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || "").length))
|
|
19
|
+
);
|
|
20
|
+
const headerLine = headers.map((h, i) => chalk.bold(h.padEnd(colWidths[i]))).join(" ");
|
|
21
|
+
const dataLines = rows.map(
|
|
22
|
+
(row) => row.map((cell, i) => cell.padEnd(colWidths[i])).join(" ")
|
|
23
|
+
);
|
|
24
|
+
return [headerLine, ...dataLines].join("\n");
|
|
25
|
+
}
|
|
26
|
+
function timeAgo(date) {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
const then = new Date(date).getTime();
|
|
29
|
+
const diff = now - then;
|
|
30
|
+
const seconds = Math.floor(diff / 1e3);
|
|
31
|
+
if (seconds < 60) return "just now";
|
|
32
|
+
const minutes = Math.floor(seconds / 60);
|
|
33
|
+
if (minutes < 60) return `${minutes}m ago`;
|
|
34
|
+
const hours = Math.floor(minutes / 60);
|
|
35
|
+
if (hours < 24) return `${hours}h ago`;
|
|
36
|
+
const days = Math.floor(hours / 24);
|
|
37
|
+
if (days < 7) return `${days}d ago`;
|
|
38
|
+
const weeks = Math.floor(days / 7);
|
|
39
|
+
return `${weeks}w ago`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export {
|
|
43
|
+
p,
|
|
44
|
+
chalk,
|
|
45
|
+
handleCancel,
|
|
46
|
+
maskValue,
|
|
47
|
+
formatTable,
|
|
48
|
+
timeAgo
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=chunk-BWPCYXXL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/ui.ts"],"sourcesContent":["import * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\n\nexport function handleCancel(value: unknown): asserts value is Exclude<typeof value, symbol> {\n if (p.isCancel(value)) {\n p.cancel(\"Operation cancelled.\");\n process.exit(0);\n }\n}\n\nexport function maskValue(value: string): string {\n if (value.length <= 4) return \"****\";\n return value.slice(0, 2) + \"****\" + value.slice(-2);\n}\n\nexport function formatTable(headers: string[], rows: string[][]): string {\n const colWidths = headers.map((h, i) =>\n Math.max(h.length, ...rows.map((r) => (r[i] || \"\").length))\n );\n\n const headerLine = headers\n .map((h, i) => chalk.bold(h.padEnd(colWidths[i]!)))\n .join(\" \");\n\n const dataLines = rows.map((row) =>\n row.map((cell, i) => cell.padEnd(colWidths[i]!)).join(\" \")\n );\n\n return [headerLine, ...dataLines].join(\"\\n\");\n}\n\nexport function timeAgo(date: Date | string): string {\n const now = Date.now();\n const then = new Date(date).getTime();\n const diff = now - then;\n\n const seconds = Math.floor(diff / 1000);\n if (seconds < 60) return \"just now\";\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return `${minutes}m ago`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n if (days < 7) return `${days}d ago`;\n const weeks = Math.floor(days / 7);\n return `${weeks}w ago`;\n}\n\nexport { p, chalk };\n"],"mappings":";;;AAAA,YAAY,OAAO;AACnB,OAAO,WAAW;AAEX,SAAS,aAAa,OAAgE;AAC3F,MAAM,WAAS,KAAK,GAAG;AACrB,IAAE,SAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEO,SAAS,UAAU,OAAuB;AAC/C,MAAI,MAAM,UAAU,EAAG,QAAO;AAC9B,SAAO,MAAM,MAAM,GAAG,CAAC,IAAI,SAAS,MAAM,MAAM,EAAE;AACpD;AAEO,SAAS,YAAY,SAAmB,MAA0B;AACvE,QAAM,YAAY,QAAQ;AAAA,IAAI,CAAC,GAAG,MAChC,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC;AAAA,EAC5D;AAEA,QAAM,aAAa,QAChB,IAAI,CAAC,GAAG,MAAM,MAAM,KAAK,EAAE,OAAO,UAAU,CAAC,CAAE,CAAC,CAAC,EACjD,KAAK,IAAI;AAEZ,QAAM,YAAY,KAAK;AAAA,IAAI,CAAC,QAC1B,IAAI,IAAI,CAAC,MAAM,MAAM,KAAK,OAAO,UAAU,CAAC,CAAE,CAAC,EAAE,KAAK,IAAI;AAAA,EAC5D;AAEA,SAAO,CAAC,YAAY,GAAG,SAAS,EAAE,KAAK,IAAI;AAC7C;AAEO,SAAS,QAAQ,MAA6B;AACnD,QAAM,MAAM,KAAK,IAAI;AACrB,QAAM,OAAO,IAAI,KAAK,IAAI,EAAE,QAAQ;AACpC,QAAM,OAAO,MAAM;AAEnB,QAAM,UAAU,KAAK,MAAM,OAAO,GAAI;AACtC,MAAI,UAAU,GAAI,QAAO;AACzB,QAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,MAAI,UAAU,GAAI,QAAO,GAAG,OAAO;AACnC,QAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AACrC,MAAI,QAAQ,GAAI,QAAO,GAAG,KAAK;AAC/B,QAAM,OAAO,KAAK,MAAM,QAAQ,EAAE;AAClC,MAAI,OAAO,EAAG,QAAO,GAAG,IAAI;AAC5B,QAAM,QAAQ,KAAK,MAAM,OAAO,CAAC;AACjC,SAAO,GAAG,KAAK;AACjB;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
createClient
|
|
4
|
+
} from "./chunk-UWVCYS24.js";
|
|
5
|
+
import {
|
|
6
|
+
loadConfig
|
|
7
|
+
} from "./chunk-Z23MVAIZ.js";
|
|
8
|
+
|
|
9
|
+
// src/lib/client.ts
|
|
10
|
+
async function getClient() {
|
|
11
|
+
const config = await loadConfig();
|
|
12
|
+
if (!config) {
|
|
13
|
+
console.error("Not logged in. Run `evp login` first.");
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
return { client: createClient(config.server_url, config.token), config };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
getClient
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=chunk-HL2WXSVD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/client.ts"],"sourcesContent":["import { createClient } from \"@envpush/client\";\nimport { loadConfig } from \"./config.js\";\n\n/** Get an authenticated API client. Exits if not logged in. */\nexport async function getClient() {\n const config = await loadConfig();\n if (!config) {\n console.error(\"Not logged in. Run `evp login` first.\");\n process.exit(1);\n }\n return { client: createClient(config.server_url, config.token), config };\n}\n"],"mappings":";;;;;;;;;AAIA,eAAsB,YAAY;AAChC,QAAM,SAAS,MAAM,WAAW;AAChC,MAAI,CAAC,QAAQ;AACX,YAAQ,MAAM,uCAAuC;AACrD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,SAAO,EAAE,QAAQ,aAAa,OAAO,YAAY,OAAO,KAAK,GAAG,OAAO;AACzE;","names":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "./chunk-HL2WXSVD.js";
|
|
5
|
+
import {
|
|
6
|
+
handleApiResponse
|
|
7
|
+
} from "./chunk-UWVCYS24.js";
|
|
8
|
+
import {
|
|
9
|
+
loadProjectConfig
|
|
10
|
+
} from "./chunk-TSUQGF7F.js";
|
|
11
|
+
|
|
12
|
+
// src/lib/resolve-env.ts
|
|
13
|
+
import chalk from "chalk";
|
|
14
|
+
async function resolveEnvironmentId(envOverride) {
|
|
15
|
+
const projectConfig = await loadProjectConfig();
|
|
16
|
+
if (!projectConfig) {
|
|
17
|
+
console.error(chalk.red("No .evp.json found. Run `evp init` or `evp link` first."));
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
const { client } = await getClient();
|
|
21
|
+
const projectRes = await client.projects[":teamSlug"][":projectSlug"].$get({
|
|
22
|
+
param: { teamSlug: projectConfig.team, projectSlug: projectConfig.project }
|
|
23
|
+
});
|
|
24
|
+
await handleApiResponse(projectRes);
|
|
25
|
+
const projectData = await projectRes.json();
|
|
26
|
+
const envSlug = envOverride || projectConfig.environment;
|
|
27
|
+
const env = projectData.environments.find((e) => e.slug === envSlug);
|
|
28
|
+
if (!env) {
|
|
29
|
+
console.error(chalk.red(`Environment "${envSlug}" not found.`));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
client,
|
|
34
|
+
envId: env.id,
|
|
35
|
+
envName: env.name,
|
|
36
|
+
projectName: projectData.project.name,
|
|
37
|
+
projectConfig
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
resolveEnvironmentId
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=chunk-HQFY6BB6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/resolve-env.ts"],"sourcesContent":["import { loadProjectConfig } from \"./project-config.js\";\nimport { getClient } from \"./client.js\";\nimport { handleApiResponse } from \"./errors.js\";\nimport chalk from \"chalk\";\n\n/**\n * Resolve the current environment ID from .evp.json + server lookup.\n * Optionally override with a specific env name.\n */\nexport async function resolveEnvironmentId(envOverride?: string) {\n const projectConfig = await loadProjectConfig();\n if (!projectConfig) {\n console.error(chalk.red(\"No .evp.json found. Run `evp init` or `evp link` first.\"));\n process.exit(1);\n }\n\n const { client } = await getClient();\n\n const projectRes = await client.projects[\":teamSlug\"][\":projectSlug\"].$get({\n param: { teamSlug: projectConfig.team, projectSlug: projectConfig.project },\n });\n await handleApiResponse(projectRes);\n\n const projectData = await projectRes.json() as {\n project: { id: string; name: string };\n environments: { id: string; name: string; slug: string }[];\n };\n\n const envSlug = envOverride || projectConfig.environment;\n const env = projectData.environments.find((e) => e.slug === envSlug);\n if (!env) {\n console.error(chalk.red(`Environment \"${envSlug}\" not found.`));\n process.exit(1);\n }\n\n return {\n client,\n envId: env.id,\n envName: env.name,\n projectName: projectData.project.name,\n projectConfig,\n };\n}\n"],"mappings":";;;;;;;;;;;;AAGA,OAAO,WAAW;AAMlB,eAAsB,qBAAqB,aAAsB;AAC/D,QAAM,gBAAgB,MAAM,kBAAkB;AAC9C,MAAI,CAAC,eAAe;AAClB,YAAQ,MAAM,MAAM,IAAI,yDAAyD,CAAC;AAClF,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,EAAE,OAAO,IAAI,MAAM,UAAU;AAEnC,QAAM,aAAa,MAAM,OAAO,SAAS,WAAW,EAAE,cAAc,EAAE,KAAK;AAAA,IACzE,OAAO,EAAE,UAAU,cAAc,MAAM,aAAa,cAAc,QAAQ;AAAA,EAC5E,CAAC;AACD,QAAM,kBAAkB,UAAU;AAElC,QAAM,cAAc,MAAM,WAAW,KAAK;AAK1C,QAAM,UAAU,eAAe,cAAc;AAC7C,QAAM,MAAM,YAAY,aAAa,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AACnE,MAAI,CAAC,KAAK;AACR,YAAQ,MAAM,MAAM,IAAI,gBAAgB,OAAO,cAAc,CAAC;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,SAAO;AAAA,IACL;AAAA,IACA,OAAO,IAAI;AAAA,IACX,SAAS,IAAI;AAAA,IACb,aAAa,YAAY,QAAQ;AAAA,IACjC;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
PROJECT_CONFIG_FILE
|
|
4
|
+
} from "./chunk-Z23MVAIZ.js";
|
|
5
|
+
|
|
6
|
+
// src/lib/project-config.ts
|
|
7
|
+
import { readFile, writeFile } from "fs/promises";
|
|
8
|
+
import { join } from "path";
|
|
9
|
+
async function loadProjectConfig(cwd) {
|
|
10
|
+
try {
|
|
11
|
+
const path = join(cwd || process.cwd(), PROJECT_CONFIG_FILE);
|
|
12
|
+
const content = await readFile(path, "utf-8");
|
|
13
|
+
return JSON.parse(content);
|
|
14
|
+
} catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function saveProjectConfig(config, cwd) {
|
|
19
|
+
const path = join(cwd || process.cwd(), PROJECT_CONFIG_FILE);
|
|
20
|
+
await writeFile(path, JSON.stringify(config, null, 2) + "\n");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
loadProjectConfig,
|
|
25
|
+
saveProjectConfig
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=chunk-TSUQGF7F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/project-config.ts"],"sourcesContent":["import { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { PROJECT_CONFIG_FILE } from \"@envpush/shared\";\n\nexport interface ProjectConfig {\n team: string;\n project: string;\n environment: string;\n}\n\nexport async function loadProjectConfig(cwd?: string): Promise<ProjectConfig | null> {\n try {\n const path = join(cwd || process.cwd(), PROJECT_CONFIG_FILE);\n const content = await readFile(path, \"utf-8\");\n return JSON.parse(content) as ProjectConfig;\n } catch {\n return null;\n }\n}\n\nexport async function saveProjectConfig(config: ProjectConfig, cwd?: string): Promise<void> {\n const path = join(cwd || process.cwd(), PROJECT_CONFIG_FILE);\n await writeFile(path, JSON.stringify(config, null, 2) + \"\\n\");\n}\n"],"mappings":";;;;;;AAAA,SAAS,UAAU,iBAAiB;AACpC,SAAS,YAAY;AASrB,eAAsB,kBAAkB,KAA6C;AACnF,MAAI;AACF,UAAM,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG,mBAAmB;AAC3D,UAAM,UAAU,MAAM,SAAS,MAAM,OAAO;AAC5C,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,kBAAkB,QAAuB,KAA6B;AAC1F,QAAM,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG,mBAAmB;AAC3D,QAAM,UAAU,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI,IAAI;AAC9D;","names":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// ../../packages/client/dist/index.js
|
|
4
|
+
import { hc } from "hono/client";
|
|
5
|
+
function createClient(serverUrl, token) {
|
|
6
|
+
return hc(serverUrl, {
|
|
7
|
+
headers: token ? { Authorization: `Bearer ${token}` } : {}
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// src/lib/errors.ts
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
async function handleApiResponse(res) {
|
|
14
|
+
if (res.ok) return;
|
|
15
|
+
const body = await res.json().catch(() => ({}));
|
|
16
|
+
const err = body.error;
|
|
17
|
+
let message;
|
|
18
|
+
if (err && typeof err === "object" && "issues" in err) {
|
|
19
|
+
const issues = err.issues;
|
|
20
|
+
message = issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ");
|
|
21
|
+
} else if (typeof err === "string") {
|
|
22
|
+
message = err;
|
|
23
|
+
} else {
|
|
24
|
+
message = `Request failed with status ${res.status}`;
|
|
25
|
+
}
|
|
26
|
+
switch (res.status) {
|
|
27
|
+
case 401:
|
|
28
|
+
console.error(chalk.red("Authentication failed. Run `evp login` to re-authenticate."));
|
|
29
|
+
break;
|
|
30
|
+
case 403:
|
|
31
|
+
console.error(chalk.red("Permission denied: " + message));
|
|
32
|
+
break;
|
|
33
|
+
case 404:
|
|
34
|
+
console.error(chalk.red("Not found: " + message));
|
|
35
|
+
break;
|
|
36
|
+
case 409:
|
|
37
|
+
console.error(chalk.red("Conflict: " + message));
|
|
38
|
+
break;
|
|
39
|
+
case 429:
|
|
40
|
+
console.error(chalk.red("Rate limited. Please wait and try again."));
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
console.error(chalk.red("Error: " + message));
|
|
44
|
+
}
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
function handleError(err) {
|
|
48
|
+
if (err instanceof TypeError && (err.message.includes("fetch") || err.message.includes("ECONNREFUSED"))) {
|
|
49
|
+
console.error(chalk.red("Cannot connect to server. Is the EnvPush server running?"));
|
|
50
|
+
} else if (err instanceof Error) {
|
|
51
|
+
console.error(chalk.red("Error: " + err.message));
|
|
52
|
+
} else {
|
|
53
|
+
console.error(chalk.red("An unexpected error occurred."));
|
|
54
|
+
}
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export {
|
|
59
|
+
createClient,
|
|
60
|
+
handleApiResponse,
|
|
61
|
+
handleError
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=chunk-UWVCYS24.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/client/src/index.ts","../src/lib/errors.ts"],"sourcesContent":["import { hc } from \"hono/client\";\nimport type { AppType } from \"@envpush/server\";\n\n/**\n * Create a typed Hono RPC client for the EnvPush API.\n *\n * @param serverUrl - EnvPush server URL (e.g., \"http://localhost:8787\")\n * @param token - Optional CLI token for authenticated requests\n * @returns Fully typed Hono RPC client\n */\nexport function createClient(serverUrl: string, token?: string) {\n return hc<AppType>(serverUrl, {\n headers: token ? { Authorization: `Bearer ${token}` } : {},\n });\n}\n\nexport type { AppType };\n","import chalk from \"chalk\";\n\nexport async function handleApiResponse(res: Response) {\n if (res.ok) return;\n\n const body = await res.json().catch(() => ({})) as Record<string, unknown>;\n const err = body.error;\n let message: string;\n if (err && typeof err === \"object\" && \"issues\" in err) {\n const issues = (err as { issues: { path: string[]; message: string }[] }).issues;\n message = issues.map((i) => `${i.path.join(\".\")}: ${i.message}`).join(\", \");\n } else if (typeof err === \"string\") {\n message = err;\n } else {\n message = `Request failed with status ${res.status}`;\n }\n\n switch (res.status) {\n case 401:\n console.error(chalk.red(\"Authentication failed. Run `evp login` to re-authenticate.\"));\n break;\n case 403:\n console.error(chalk.red(\"Permission denied: \" + message));\n break;\n case 404:\n console.error(chalk.red(\"Not found: \" + message));\n break;\n case 409:\n console.error(chalk.red(\"Conflict: \" + message));\n break;\n case 429:\n console.error(chalk.red(\"Rate limited. Please wait and try again.\"));\n break;\n default:\n console.error(chalk.red(\"Error: \" + message));\n }\n\n process.exit(1);\n}\n\nexport function handleError(err: unknown): never {\n if (err instanceof TypeError && (err.message.includes(\"fetch\") || err.message.includes(\"ECONNREFUSED\"))) {\n console.error(chalk.red(\"Cannot connect to server. Is the EnvPush server running?\"));\n } else if (err instanceof Error) {\n console.error(chalk.red(\"Error: \" + err.message));\n } else {\n console.error(chalk.red(\"An unexpected error occurred.\"));\n }\n process.exit(1);\n}\n"],"mappings":";;;AAAA,SAAS,UAAU;AAUZ,SAAS,aAAa,WAAmB,OAAgB;AAC9D,SAAO,GAAY,WAAW;IAC5B,SAAS,QAAQ,EAAE,eAAe,UAAU,KAAK,GAAG,IAAI,CAAC;EAC3D,CAAC;AACH;;;ACdA,OAAO,WAAW;AAElB,eAAsB,kBAAkB,KAAe;AACrD,MAAI,IAAI,GAAI;AAEZ,QAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AAC9C,QAAM,MAAM,KAAK;AACjB,MAAI;AACJ,MAAI,OAAO,OAAO,QAAQ,YAAY,YAAY,KAAK;AACrD,UAAM,SAAU,IAA0D;AAC1E,cAAU,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI;AAAA,EAC5E,WAAW,OAAO,QAAQ,UAAU;AAClC,cAAU;AAAA,EACZ,OAAO;AACL,cAAU,8BAA8B,IAAI,MAAM;AAAA,EACpD;AAEA,UAAQ,IAAI,QAAQ;AAAA,IAClB,KAAK;AACH,cAAQ,MAAM,MAAM,IAAI,4DAA4D,CAAC;AACrF;AAAA,IACF,KAAK;AACH,cAAQ,MAAM,MAAM,IAAI,wBAAwB,OAAO,CAAC;AACxD;AAAA,IACF,KAAK;AACH,cAAQ,MAAM,MAAM,IAAI,gBAAgB,OAAO,CAAC;AAChD;AAAA,IACF,KAAK;AACH,cAAQ,MAAM,MAAM,IAAI,eAAe,OAAO,CAAC;AAC/C;AAAA,IACF,KAAK;AACH,cAAQ,MAAM,MAAM,IAAI,0CAA0C,CAAC;AACnE;AAAA,IACF;AACE,cAAQ,MAAM,MAAM,IAAI,YAAY,OAAO,CAAC;AAAA,EAChD;AAEA,UAAQ,KAAK,CAAC;AAChB;AAEO,SAAS,YAAY,KAAqB;AAC/C,MAAI,eAAe,cAAc,IAAI,QAAQ,SAAS,OAAO,KAAK,IAAI,QAAQ,SAAS,cAAc,IAAI;AACvG,YAAQ,MAAM,MAAM,IAAI,0DAA0D,CAAC;AAAA,EACrF,WAAW,eAAe,OAAO;AAC/B,YAAQ,MAAM,MAAM,IAAI,YAAY,IAAI,OAAO,CAAC;AAAA,EAClD,OAAO;AACL,YAAQ,MAAM,MAAM,IAAI,+BAA+B,CAAC;AAAA,EAC1D;AACA,UAAQ,KAAK,CAAC;AAChB;","names":[]}
|