@ostanin/podman 0.1.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.
Files changed (142) hide show
  1. package/README.md +432 -0
  2. package/esm/_dnt.polyfills.d.ts +7 -0
  3. package/esm/_dnt.polyfills.d.ts.map +1 -0
  4. package/esm/_dnt.polyfills.js +1 -0
  5. package/esm/api/artifacts.d.ts +25 -0
  6. package/esm/api/artifacts.d.ts.map +1 -0
  7. package/esm/api/artifacts.js +89 -0
  8. package/esm/api/containers.d.ts +71 -0
  9. package/esm/api/containers.d.ts.map +1 -0
  10. package/esm/api/containers.js +234 -0
  11. package/esm/api/exec.d.ts +15 -0
  12. package/esm/api/exec.d.ts.map +1 -0
  13. package/esm/api/exec.js +45 -0
  14. package/esm/api/generate.d.ts +11 -0
  15. package/esm/api/generate.d.ts.map +1 -0
  16. package/esm/api/generate.js +24 -0
  17. package/esm/api/images.d.ts +55 -0
  18. package/esm/api/images.d.ts.map +1 -0
  19. package/esm/api/images.js +212 -0
  20. package/esm/api/kube.d.ts +13 -0
  21. package/esm/api/kube.d.ts.map +1 -0
  22. package/esm/api/kube.js +38 -0
  23. package/esm/api/manifests.d.ts +19 -0
  24. package/esm/api/manifests.d.ts.map +1 -0
  25. package/esm/api/manifests.js +60 -0
  26. package/esm/api/networks.d.ts +25 -0
  27. package/esm/api/networks.d.ts.map +1 -0
  28. package/esm/api/networks.js +95 -0
  29. package/esm/api/pods.d.ts +35 -0
  30. package/esm/api/pods.d.ts.map +1 -0
  31. package/esm/api/pods.js +120 -0
  32. package/esm/api/quadlets.d.ts +23 -0
  33. package/esm/api/quadlets.d.ts.map +1 -0
  34. package/esm/api/quadlets.js +56 -0
  35. package/esm/api/secrets.d.ts +17 -0
  36. package/esm/api/secrets.d.ts.map +1 -0
  37. package/esm/api/secrets.js +49 -0
  38. package/esm/api/system.d.ts +23 -0
  39. package/esm/api/system.d.ts.map +1 -0
  40. package/esm/api/system.js +98 -0
  41. package/esm/api/volumes.d.ts +23 -0
  42. package/esm/api/volumes.d.ts.map +1 -0
  43. package/esm/api/volumes.js +69 -0
  44. package/esm/client.d.ts +56 -0
  45. package/esm/client.d.ts.map +1 -0
  46. package/esm/client.js +63 -0
  47. package/esm/internal/query.d.ts +2 -0
  48. package/esm/internal/query.d.ts.map +1 -0
  49. package/esm/internal/query.js +24 -0
  50. package/esm/mod.d.ts +22 -0
  51. package/esm/mod.d.ts.map +1 -0
  52. package/esm/mod.js +18 -0
  53. package/esm/package.json +3 -0
  54. package/esm/ssh_transport.d.ts +14 -0
  55. package/esm/ssh_transport.d.ts.map +1 -0
  56. package/esm/ssh_transport.js +85 -0
  57. package/esm/transport.d.ts +23 -0
  58. package/esm/transport.d.ts.map +1 -0
  59. package/esm/transport.js +112 -0
  60. package/esm/transport_core.d.ts +31 -0
  61. package/esm/transport_core.d.ts.map +1 -0
  62. package/esm/transport_core.js +75 -0
  63. package/esm/types/api.d.ts +61 -0
  64. package/esm/types/api.d.ts.map +1 -0
  65. package/esm/types/api.js +5 -0
  66. package/esm/types/errors.d.ts +21 -0
  67. package/esm/types/errors.d.ts.map +1 -0
  68. package/esm/types/errors.js +47 -0
  69. package/esm/types/openapi.d.ts +19552 -0
  70. package/esm/types/openapi.d.ts.map +1 -0
  71. package/esm/types/openapi.js +5 -0
  72. package/package.json +36 -0
  73. package/script/_dnt.polyfills.d.ts +7 -0
  74. package/script/_dnt.polyfills.d.ts.map +1 -0
  75. package/script/_dnt.polyfills.js +2 -0
  76. package/script/api/artifacts.d.ts +25 -0
  77. package/script/api/artifacts.d.ts.map +1 -0
  78. package/script/api/artifacts.js +93 -0
  79. package/script/api/containers.d.ts +71 -0
  80. package/script/api/containers.d.ts.map +1 -0
  81. package/script/api/containers.js +238 -0
  82. package/script/api/exec.d.ts +15 -0
  83. package/script/api/exec.d.ts.map +1 -0
  84. package/script/api/exec.js +49 -0
  85. package/script/api/generate.d.ts +11 -0
  86. package/script/api/generate.d.ts.map +1 -0
  87. package/script/api/generate.js +28 -0
  88. package/script/api/images.d.ts +55 -0
  89. package/script/api/images.d.ts.map +1 -0
  90. package/script/api/images.js +216 -0
  91. package/script/api/kube.d.ts +13 -0
  92. package/script/api/kube.d.ts.map +1 -0
  93. package/script/api/kube.js +42 -0
  94. package/script/api/manifests.d.ts +19 -0
  95. package/script/api/manifests.d.ts.map +1 -0
  96. package/script/api/manifests.js +64 -0
  97. package/script/api/networks.d.ts +25 -0
  98. package/script/api/networks.d.ts.map +1 -0
  99. package/script/api/networks.js +99 -0
  100. package/script/api/pods.d.ts +35 -0
  101. package/script/api/pods.d.ts.map +1 -0
  102. package/script/api/pods.js +124 -0
  103. package/script/api/quadlets.d.ts +23 -0
  104. package/script/api/quadlets.d.ts.map +1 -0
  105. package/script/api/quadlets.js +60 -0
  106. package/script/api/secrets.d.ts +17 -0
  107. package/script/api/secrets.d.ts.map +1 -0
  108. package/script/api/secrets.js +53 -0
  109. package/script/api/system.d.ts +23 -0
  110. package/script/api/system.d.ts.map +1 -0
  111. package/script/api/system.js +102 -0
  112. package/script/api/volumes.d.ts +23 -0
  113. package/script/api/volumes.d.ts.map +1 -0
  114. package/script/api/volumes.js +73 -0
  115. package/script/client.d.ts +56 -0
  116. package/script/client.d.ts.map +1 -0
  117. package/script/client.js +67 -0
  118. package/script/internal/query.d.ts +2 -0
  119. package/script/internal/query.d.ts.map +1 -0
  120. package/script/internal/query.js +27 -0
  121. package/script/mod.d.ts +22 -0
  122. package/script/mod.d.ts.map +1 -0
  123. package/script/mod.js +42 -0
  124. package/script/package.json +3 -0
  125. package/script/ssh_transport.d.ts +14 -0
  126. package/script/ssh_transport.d.ts.map +1 -0
  127. package/script/ssh_transport.js +121 -0
  128. package/script/transport.d.ts +23 -0
  129. package/script/transport.d.ts.map +1 -0
  130. package/script/transport.js +149 -0
  131. package/script/transport_core.d.ts +31 -0
  132. package/script/transport_core.d.ts.map +1 -0
  133. package/script/transport_core.js +78 -0
  134. package/script/types/api.d.ts +61 -0
  135. package/script/types/api.d.ts.map +1 -0
  136. package/script/types/api.js +6 -0
  137. package/script/types/errors.d.ts +21 -0
  138. package/script/types/errors.d.ts.map +1 -0
  139. package/script/types/errors.js +54 -0
  140. package/script/types/openapi.d.ts +19552 -0
  141. package/script/types/openapi.d.ts.map +1 -0
  142. package/script/types/openapi.js +6 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/internal/query.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CA0B/D"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildQuery = buildQuery;
4
+ function buildQuery(params) {
5
+ if (!params)
6
+ return "";
7
+ const entries = Object.entries(params).filter(([_, v]) => v !== undefined);
8
+ if (entries.length === 0)
9
+ return "";
10
+ const parts = [];
11
+ for (const [k, v] of entries) {
12
+ if (Array.isArray(v)) {
13
+ // Arrays → repeated query params: ?names=foo&names=bar
14
+ for (const item of v) {
15
+ parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(item))}`);
16
+ }
17
+ }
18
+ else if (typeof v === "object" && v !== null) {
19
+ // Objects (e.g. filters) → JSON-encoded
20
+ parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(JSON.stringify(v))}`);
21
+ }
22
+ else {
23
+ parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);
24
+ }
25
+ }
26
+ return parts.length > 0 ? `?${parts.join("&")}` : "";
27
+ }
@@ -0,0 +1,22 @@
1
+ import "./_dnt.polyfills.js";
2
+ export { type ClientOptions, createClient, createSshClient, type PodmanClient, type SshClientOptions, type TcpClientOptions, type UnixClientOptions, } from "./client.js";
3
+ export { PodmanError, createPodmanError, throwRawError } from "./types/errors.js";
4
+ export { createTcpTransport, createTransport, type TcpTransportOptions, type TlsOptions, type Transport, type TransportOptions, type TransportResponse, } from "./transport.js";
5
+ export { createSshTransport, type SshTransportOptions, } from "./ssh_transport.js";
6
+ export type { AuthOption } from "./transport_core.js";
7
+ export type * from "./types/api.js";
8
+ export { ContainersApi } from "./api/containers.js";
9
+ export { ImagesApi } from "./api/images.js";
10
+ export { NetworksApi } from "./api/networks.js";
11
+ export { VolumesApi } from "./api/volumes.js";
12
+ export { PodsApi } from "./api/pods.js";
13
+ export { SecretsApi } from "./api/secrets.js";
14
+ export { SystemApi } from "./api/system.js";
15
+ export { ExecApi } from "./api/exec.js";
16
+ export { GenerateApi } from "./api/generate.js";
17
+ export { ManifestsApi } from "./api/manifests.js";
18
+ export { KubeApi } from "./api/kube.js";
19
+ export { ArtifactsApi } from "./api/artifacts.js";
20
+ export { QuadletsApi } from "./api/quadlets.js";
21
+ export type { QuadletInstallReport } from "./api/quadlets.js";
22
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,mBAAmB,gBAAgB,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
package/script/mod.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuadletsApi = exports.ArtifactsApi = exports.KubeApi = exports.ManifestsApi = exports.GenerateApi = exports.ExecApi = exports.SystemApi = exports.SecretsApi = exports.PodsApi = exports.VolumesApi = exports.NetworksApi = exports.ImagesApi = exports.ContainersApi = exports.createSshTransport = exports.createTransport = exports.createTcpTransport = exports.throwRawError = exports.createPodmanError = exports.PodmanError = exports.createSshClient = exports.createClient = void 0;
4
+ require("./_dnt.polyfills.js");
5
+ var client_js_1 = require("./client.js");
6
+ Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return client_js_1.createClient; } });
7
+ Object.defineProperty(exports, "createSshClient", { enumerable: true, get: function () { return client_js_1.createSshClient; } });
8
+ var errors_js_1 = require("./types/errors.js");
9
+ Object.defineProperty(exports, "PodmanError", { enumerable: true, get: function () { return errors_js_1.PodmanError; } });
10
+ Object.defineProperty(exports, "createPodmanError", { enumerable: true, get: function () { return errors_js_1.createPodmanError; } });
11
+ Object.defineProperty(exports, "throwRawError", { enumerable: true, get: function () { return errors_js_1.throwRawError; } });
12
+ var transport_js_1 = require("./transport.js");
13
+ Object.defineProperty(exports, "createTcpTransport", { enumerable: true, get: function () { return transport_js_1.createTcpTransport; } });
14
+ Object.defineProperty(exports, "createTransport", { enumerable: true, get: function () { return transport_js_1.createTransport; } });
15
+ var ssh_transport_js_1 = require("./ssh_transport.js");
16
+ Object.defineProperty(exports, "createSshTransport", { enumerable: true, get: function () { return ssh_transport_js_1.createSshTransport; } });
17
+ var containers_js_1 = require("./api/containers.js");
18
+ Object.defineProperty(exports, "ContainersApi", { enumerable: true, get: function () { return containers_js_1.ContainersApi; } });
19
+ var images_js_1 = require("./api/images.js");
20
+ Object.defineProperty(exports, "ImagesApi", { enumerable: true, get: function () { return images_js_1.ImagesApi; } });
21
+ var networks_js_1 = require("./api/networks.js");
22
+ Object.defineProperty(exports, "NetworksApi", { enumerable: true, get: function () { return networks_js_1.NetworksApi; } });
23
+ var volumes_js_1 = require("./api/volumes.js");
24
+ Object.defineProperty(exports, "VolumesApi", { enumerable: true, get: function () { return volumes_js_1.VolumesApi; } });
25
+ var pods_js_1 = require("./api/pods.js");
26
+ Object.defineProperty(exports, "PodsApi", { enumerable: true, get: function () { return pods_js_1.PodsApi; } });
27
+ var secrets_js_1 = require("./api/secrets.js");
28
+ Object.defineProperty(exports, "SecretsApi", { enumerable: true, get: function () { return secrets_js_1.SecretsApi; } });
29
+ var system_js_1 = require("./api/system.js");
30
+ Object.defineProperty(exports, "SystemApi", { enumerable: true, get: function () { return system_js_1.SystemApi; } });
31
+ var exec_js_1 = require("./api/exec.js");
32
+ Object.defineProperty(exports, "ExecApi", { enumerable: true, get: function () { return exec_js_1.ExecApi; } });
33
+ var generate_js_1 = require("./api/generate.js");
34
+ Object.defineProperty(exports, "GenerateApi", { enumerable: true, get: function () { return generate_js_1.GenerateApi; } });
35
+ var manifests_js_1 = require("./api/manifests.js");
36
+ Object.defineProperty(exports, "ManifestsApi", { enumerable: true, get: function () { return manifests_js_1.ManifestsApi; } });
37
+ var kube_js_1 = require("./api/kube.js");
38
+ Object.defineProperty(exports, "KubeApi", { enumerable: true, get: function () { return kube_js_1.KubeApi; } });
39
+ var artifacts_js_1 = require("./api/artifacts.js");
40
+ Object.defineProperty(exports, "ArtifactsApi", { enumerable: true, get: function () { return artifacts_js_1.ArtifactsApi; } });
41
+ var quadlets_js_1 = require("./api/quadlets.js");
42
+ Object.defineProperty(exports, "QuadletsApi", { enumerable: true, get: function () { return quadlets_js_1.QuadletsApi; } });
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,14 @@
1
+ import { type Transport } from "./transport.js";
2
+ import type { AuthOption } from "./transport_core.js";
3
+ export interface SshTransportOptions {
4
+ host: string;
5
+ remoteSocketPath?: string;
6
+ port?: number;
7
+ identityFile?: string;
8
+ sshOptions?: string[];
9
+ apiVersion?: string;
10
+ timeout?: number;
11
+ auth?: AuthOption;
12
+ }
13
+ export declare function createSshTransport(opts: SshTransportOptions): Promise<Transport>;
14
+ //# sourceMappingURL=ssh_transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssh_transport.d.ts","sourceRoot":"","sources":["../src/ssh_transport.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAWD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,SAAS,CAAC,CAyFpB"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createSshTransport = createSshTransport;
37
+ const node_child_process_1 = require("node:child_process");
38
+ const fs = __importStar(require("node:fs/promises"));
39
+ const os = __importStar(require("node:os"));
40
+ const path = __importStar(require("node:path"));
41
+ const transport_js_1 = require("./transport.js");
42
+ async function drainStderr(child) {
43
+ if (!child.stderr)
44
+ return "";
45
+ const chunks = [];
46
+ for await (const chunk of child.stderr) {
47
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
48
+ }
49
+ return Buffer.concat(chunks).toString("utf8");
50
+ }
51
+ async function createSshTransport(opts) {
52
+ const { host, remoteSocketPath = "/run/podman/podman.sock", port = 22, identityFile, sshOptions = [], apiVersion, timeout, auth, } = opts;
53
+ const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "podman-deno-"));
54
+ const localSocket = path.join(tempDir, "podman.sock");
55
+ const hasStrictHostKeyChecking = sshOptions.some((o) => o.includes("StrictHostKeyChecking"));
56
+ const args = [
57
+ "-N",
58
+ "-L", `${localSocket}:${remoteSocketPath}`,
59
+ "-p", String(port),
60
+ ...(hasStrictHostKeyChecking
61
+ ? []
62
+ : ["-o", "StrictHostKeyChecking=accept-new"]),
63
+ "-o", "ExitOnForwardFailure=yes",
64
+ ];
65
+ if (identityFile)
66
+ args.push("-i", identityFile);
67
+ args.push(...sshOptions, host);
68
+ const child = (0, node_child_process_1.spawn)("ssh", args, {
69
+ stdio: ["ignore", "ignore", "pipe"],
70
+ });
71
+ let processExited = false;
72
+ const exitPromise = new Promise((resolve) => {
73
+ child.on("exit", () => {
74
+ processExited = true;
75
+ resolve();
76
+ });
77
+ });
78
+ const deadline = Date.now() + 10_000;
79
+ let ready = false;
80
+ while (Date.now() < deadline && !processExited) {
81
+ try {
82
+ await fs.stat(localSocket);
83
+ ready = true;
84
+ break;
85
+ }
86
+ catch {
87
+ await new Promise((r) => setTimeout(r, 100));
88
+ }
89
+ }
90
+ if (!ready) {
91
+ child.kill("SIGTERM");
92
+ let timerId;
93
+ const errText = await Promise.race([
94
+ drainStderr(child),
95
+ new Promise((r) => {
96
+ timerId = setTimeout(() => r(""), 5_000);
97
+ }),
98
+ ]);
99
+ clearTimeout(timerId);
100
+ await exitPromise;
101
+ await fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
102
+ throw new Error(`SSH tunnel to ${host} failed: ${errText.trim() || "socket not created within 10s"}`);
103
+ }
104
+ const inner = (0, transport_js_1.createTransport)({
105
+ socketPath: localSocket,
106
+ apiVersion,
107
+ timeout,
108
+ auth,
109
+ });
110
+ return {
111
+ request: inner.request,
112
+ requestRaw: inner.requestRaw,
113
+ requestStream: inner.requestStream,
114
+ getAuthHeader: inner.getAuthHeader,
115
+ close() {
116
+ inner.close();
117
+ child.kill("SIGTERM");
118
+ fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
119
+ },
120
+ };
121
+ }
@@ -0,0 +1,23 @@
1
+ import { type AuthOption, type Transport } from "./transport_core.js";
2
+ export type { DoFetchFn, DoFetchInit, Transport, TransportResponse, } from "./transport_core.js";
3
+ export interface TransportOptions {
4
+ socketPath: string;
5
+ apiVersion?: string;
6
+ timeout?: number;
7
+ auth?: AuthOption;
8
+ }
9
+ export declare function createTransport(opts: TransportOptions): Transport;
10
+ export interface TlsOptions {
11
+ caCerts?: string[];
12
+ cert?: string;
13
+ key?: string;
14
+ }
15
+ export interface TcpTransportOptions {
16
+ uri: string;
17
+ apiVersion?: string;
18
+ timeout?: number;
19
+ auth?: AuthOption;
20
+ tls?: TlsOptions;
21
+ }
22
+ export declare function createTcpTransport(opts: TcpTransportOptions): Transport;
23
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EAGf,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AA4E7B,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAuBjE;AAID,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,UAAU,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,CAyCvE"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createTransport = createTransport;
37
+ exports.createTcpTransport = createTcpTransport;
38
+ const http = __importStar(require("node:http"));
39
+ const https = __importStar(require("node:https"));
40
+ const transport_core_js_1 = require("./transport_core.js");
41
+ // ─── Node http.request → web Response adapter ────────────────────────────────
42
+ function nodeRequest(url, options, body) {
43
+ return new Promise((resolve, reject) => {
44
+ const isHttps = url.startsWith("https:");
45
+ const requester = isHttps ? https.request : http.request;
46
+ const req = requester(url, options, (res) => {
47
+ const readable = new ReadableStream({
48
+ start(controller) {
49
+ res.on("data", (chunk) => controller.enqueue(new Uint8Array(chunk)));
50
+ res.on("end", () => controller.close());
51
+ res.on("error", (err) => controller.error(err));
52
+ },
53
+ cancel() {
54
+ res.destroy();
55
+ },
56
+ });
57
+ const headers = new Headers();
58
+ for (const [key, value] of Object.entries(res.headers)) {
59
+ if (value !== undefined) {
60
+ headers.set(key, Array.isArray(value) ? value.join(", ") : value);
61
+ }
62
+ }
63
+ resolve(new Response(readable, { status: res.statusCode ?? 0, headers }));
64
+ });
65
+ req.on("error", reject);
66
+ if (body !== undefined && body !== null) {
67
+ if (typeof body === "string") {
68
+ req.end(body);
69
+ return;
70
+ }
71
+ if (body instanceof ArrayBuffer) {
72
+ req.end(Buffer.from(body));
73
+ return;
74
+ }
75
+ if (body instanceof Uint8Array) {
76
+ req.end(Buffer.from(body.buffer, body.byteOffset, body.byteLength));
77
+ return;
78
+ }
79
+ if (body instanceof ReadableStream) {
80
+ const reader = body.getReader();
81
+ (function pump() {
82
+ reader.read().then(({ done, value }) => {
83
+ if (done) {
84
+ req.end();
85
+ return;
86
+ }
87
+ req.write(Buffer.from(value));
88
+ pump();
89
+ }).catch((err) => {
90
+ req.destroy(err);
91
+ reject(err);
92
+ });
93
+ })();
94
+ return;
95
+ }
96
+ }
97
+ req.end();
98
+ });
99
+ }
100
+ function createTransport(opts) {
101
+ const { socketPath, apiVersion = "4.0.0", timeout = 30_000 } = opts;
102
+ const authHeader = opts.auth ? btoa(JSON.stringify(opts.auth)) : undefined;
103
+ const base = `/v${apiVersion}/libpod`;
104
+ const doFetch = async (method, path, init) => {
105
+ const signal = init?.signal !== undefined
106
+ ? (init.signal ?? undefined)
107
+ : AbortSignal.timeout(timeout);
108
+ return await nodeRequest(`http://localhost${base}${path}`, {
109
+ socketPath,
110
+ method,
111
+ headers: init?.headers,
112
+ signal: signal ?? undefined,
113
+ }, init?.body);
114
+ };
115
+ return (0, transport_core_js_1.buildTransport)(doFetch, authHeader, () => { });
116
+ }
117
+ function createTcpTransport(opts) {
118
+ const { uri, apiVersion = "4.0.0", timeout = 30_000 } = opts;
119
+ const authHeader = opts.auth ? btoa(JSON.stringify(opts.auth)) : undefined;
120
+ const base = `${uri.replace(/\/+$/, "")}/v${apiVersion}/libpod`;
121
+ let agent;
122
+ if (opts.tls) {
123
+ agent = new https.Agent({
124
+ ca: opts.tls.caCerts?.join("\n"),
125
+ cert: opts.tls.cert,
126
+ key: opts.tls.key,
127
+ });
128
+ }
129
+ const doFetch = async (method, path, init) => {
130
+ const signal = init?.signal !== undefined
131
+ ? (init.signal ?? undefined)
132
+ : AbortSignal.timeout(timeout);
133
+ if (agent) {
134
+ return await nodeRequest(`${base}${path}`, {
135
+ method,
136
+ headers: init?.headers,
137
+ agent,
138
+ signal: signal ?? undefined,
139
+ }, init?.body);
140
+ }
141
+ return await fetch(`${base}${path}`, {
142
+ method,
143
+ headers: init?.headers,
144
+ body: init?.body,
145
+ signal,
146
+ });
147
+ };
148
+ return (0, transport_core_js_1.buildTransport)(doFetch, authHeader, () => agent?.destroy());
149
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Shared transport types and builder used by both Deno and Node transports.
3
+ *
4
+ * Runtime-specific code (Unix sockets, TLS clients) lives in
5
+ * `transport.ts` (Deno) or `_node/transport.ts` (Node).
6
+ */
7
+ export interface TransportResponse {
8
+ status: number;
9
+ json: unknown;
10
+ }
11
+ export interface Transport {
12
+ request(method: string, path: string, body?: unknown): Promise<TransportResponse>;
13
+ requestRaw(method: string, path: string, body?: BodyInit, headers?: Record<string, string>): Promise<Response>;
14
+ requestStream(method: string, path: string): Promise<ReadableStream<Uint8Array>>;
15
+ getAuthHeader(): string | undefined;
16
+ close(): void;
17
+ }
18
+ export type AuthOption = {
19
+ username: string;
20
+ password: string;
21
+ } | {
22
+ identityToken: string;
23
+ };
24
+ export interface DoFetchInit {
25
+ body?: BodyInit;
26
+ headers?: Record<string, string>;
27
+ signal?: AbortSignal | null;
28
+ }
29
+ export type DoFetchFn = (method: string, path: string, init?: DoFetchInit) => Promise<Response>;
30
+ export declare function buildTransport(doFetch: DoFetchFn, authHeader: string | undefined, closeFn: () => void): Transport;
31
+ //# sourceMappingURL=transport_core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport_core.d.ts","sourceRoot":"","sources":["../src/transport_core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CACL,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B,UAAU,CACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB,aAAa,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvC,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;IACpC,KAAK,IAAI,IAAI,CAAC;CACf;AAID,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9B,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,SAAS,GAAG,CACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAIvB,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,IAAI,GAClB,SAAS,CAiFX"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /**
3
+ * Shared transport types and builder used by both Deno and Node transports.
4
+ *
5
+ * Runtime-specific code (Unix sockets, TLS clients) lives in
6
+ * `transport.ts` (Deno) or `_node/transport.ts` (Node).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.buildTransport = buildTransport;
10
+ const errors_js_1 = require("./types/errors.js");
11
+ // ─── Shared builder ──────────────────────────────────────────────────────────
12
+ function buildTransport(doFetch, authHeader, closeFn) {
13
+ return {
14
+ async request(method, path, body) {
15
+ const headers = {
16
+ "Accept": "application/json",
17
+ };
18
+ if (body !== undefined) {
19
+ headers["Content-Type"] = "application/json";
20
+ }
21
+ const res = await doFetch(method, path, {
22
+ body: body !== undefined ? JSON.stringify(body) : undefined,
23
+ headers,
24
+ });
25
+ const text = await res.text();
26
+ let json = null;
27
+ if (text.trim()) {
28
+ try {
29
+ json = JSON.parse(text);
30
+ }
31
+ catch {
32
+ throw new errors_js_1.PodmanError({
33
+ status: res.status,
34
+ message: `Invalid JSON response: ${text.slice(0, 200)}`,
35
+ method,
36
+ path,
37
+ });
38
+ }
39
+ }
40
+ return { status: res.status, json };
41
+ },
42
+ async requestRaw(method, path, body, headers) {
43
+ return await doFetch(method, path, { body, headers });
44
+ },
45
+ async requestStream(method, path) {
46
+ const res = await doFetch(method, path, {
47
+ headers: { "Accept": "application/json" },
48
+ signal: null,
49
+ });
50
+ if (res.status >= 400) {
51
+ const text = await res.text();
52
+ let json = null;
53
+ try {
54
+ json = text.trim() ? JSON.parse(text) : null;
55
+ }
56
+ catch {
57
+ // use raw text as message if JSON parse fails
58
+ }
59
+ throw new errors_js_1.PodmanError({
60
+ status: res.status,
61
+ message: json
62
+ ? (0, errors_js_1.extractMessage)(json)
63
+ : text || "Stream request failed",
64
+ method,
65
+ path,
66
+ });
67
+ }
68
+ if (!res.body) {
69
+ throw new Error(`No response body for ${method} ${path}`);
70
+ }
71
+ return res.body;
72
+ },
73
+ close: closeFn,
74
+ getAuthHeader() {
75
+ return authHeader;
76
+ },
77
+ };
78
+ }
@@ -0,0 +1,61 @@
1
+ export type * from "./openapi.js";
2
+ import type { components, Mount } from "./openapi.js";
3
+ export type ContainerTopResponse = components["schemas"]["ContainerTopOKBody"];
4
+ export type ContainersPruneReport = components["schemas"]["ContainersPruneReportLibpod"];
5
+ export type ImageSummary = components["schemas"]["LibpodImageSummary"];
6
+ export type ImageRemoveReport = components["schemas"]["LibpodImagesRemoveReport"];
7
+ export type ImageHistory = components["schemas"]["HistoryResponse"];
8
+ export type ImagePruneReport = components["schemas"]["PruneReport"];
9
+ export type NetworkCreateOptions = components["schemas"]["networkCreateLibpod"];
10
+ export type NetworkDisconnectOptions = components["schemas"]["DisconnectOptions"];
11
+ export type VolumePruneReport = components["schemas"]["PruneReport"];
12
+ export type OciMount = {
13
+ destination: string;
14
+ type?: string;
15
+ source?: string;
16
+ options?: string[];
17
+ };
18
+ type _SpecGenerator = components["schemas"]["SpecGenerator"];
19
+ export type SpecGenerator = Omit<_SpecGenerator, "mounts"> & {
20
+ mounts?: (Mount | OciMount)[];
21
+ };
22
+ export type ImageSearchResult = NonNullable<components["responses"]["registrySearchResponse"]["content"]["application/json"]>;
23
+ /** Options for creating an exec session inside a container. */
24
+ export type ExecCreateConfig = {
25
+ /** Attach to stderr of the exec command. */
26
+ AttachStderr?: boolean;
27
+ /** Attach to stdin of the exec command. */
28
+ AttachStdin?: boolean;
29
+ /** Attach to stdout of the exec command. */
30
+ AttachStdout?: boolean;
31
+ /** Command to run, as a string or array of strings. */
32
+ Cmd?: string[];
33
+ /** Override the key sequence for detaching a container. */
34
+ DetachKeys?: string;
35
+ /** A list of environment variables in the form ["VAR=value", ...]. */
36
+ Env?: string[];
37
+ /** Runs the exec process with extended privileges. */
38
+ Privileged?: boolean;
39
+ /** Allocate a pseudo-TTY. */
40
+ Tty?: boolean;
41
+ /** The user, and optionally, group to run the exec process inside the container. */
42
+ User?: string;
43
+ /** The working directory for the exec process inside the container. */
44
+ WorkingDir?: string;
45
+ };
46
+ /** Options for starting an exec session. */
47
+ export type ExecStartConfig = {
48
+ /** Detach from the command. */
49
+ Detach?: boolean;
50
+ /** Allocate a pseudo-TTY. */
51
+ Tty?: boolean;
52
+ /** Height of the TTY session in characters. */
53
+ h?: number;
54
+ /** Width of the TTY session in characters. */
55
+ w?: number;
56
+ };
57
+ export interface ContainerChange {
58
+ Path: string;
59
+ Kind: number;
60
+ }
61
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAOA,mBAAmB,cAAc,CAAC;AAElC,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC/E,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,6BAA6B,CAAC,CAAC;AACzF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,0BAA0B,CAAC,CAAC;AAClF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AACpE,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAChF,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAClF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AAOrE,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,KAAK,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG;IAC3D,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC/B,CAAC;AAIF,MAAM,MAAM,iBAAiB,GAAG,WAAW,CACzC,UAAU,CAAC,WAAW,CAAC,CAAC,wBAAwB,CAAC,CAAC,SAAS,CAAC,CAC1D,kBAAkB,CACnB,CACF,CAAC;AAIF,+DAA+D;AAC/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG;IAC5B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+CAA+C;IAC/C,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // Friendly aliases for awkwardly-named schemas, custom types not in the OpenAPI spec,
3
+ // and schema overrides. Query param types are auto-generated in openapi.ts.
4
+ //
5
+ // Run `deno task generate-types` to regenerate types/openapi.ts from Podman's swagger spec.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,21 @@
1
+ /** Error thrown by the Podman client on non-404 API failures. Includes HTTP status, method, and path. */
2
+ export declare class PodmanError extends Error {
3
+ readonly status: number;
4
+ readonly method: string;
5
+ readonly path: string;
6
+ constructor(opts: {
7
+ status: number;
8
+ message: string;
9
+ method: string;
10
+ path: string;
11
+ });
12
+ }
13
+ export declare function extractMessage(json: unknown): string;
14
+ /** Create a PodmanError from a status code and raw JSON body. */
15
+ export declare function createPodmanError(status: number, json: unknown, method: string, path: string): PodmanError;
16
+ /**
17
+ * Read a raw Response body and throw a PodmanError.
18
+ * Use when a `requestRaw()` call returned a non-success status.
19
+ */
20
+ export declare function throwRawError(res: Response, method: string, path: string): Promise<never>;
21
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd;CAOF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOpD;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,WAAW,CAOb;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,CAAC,CAShB"}