@homeflare/alchemy 0.37.6 → 0.37.8
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/linux/container-form.d.ts +1 -1
- package/dist/linux/container-generator.d.ts +28 -0
- package/dist/linux/container-generator.d.ts.map +1 -1
- package/dist/linux/container-lifecycle.d.ts +18 -1
- package/dist/linux/container-lifecycle.d.ts.map +1 -1
- package/dist/linux/container-preflight.d.ts +34 -0
- package/dist/linux/container-preflight.d.ts.map +1 -1
- package/dist/linux/container-settle.d.ts.map +1 -1
- package/dist/linux/fake-sudo.d.ts +14 -2
- package/dist/linux/fake-sudo.d.ts.map +1 -1
- package/dist/linux/index.js +76 -29
- package/dist/linux/index.js.map +11 -10
- package/dist/linux/sudo-exec.d.ts +16 -0
- package/dist/linux/sudo-exec.d.ts.map +1 -1
- package/dist/linux/unit-form.d.ts.map +1 -1
- package/dist/linux/unit-text.d.ts +35 -0
- package/dist/linux/unit-text.d.ts.map +1 -0
- package/dist/proxmox/firewall-alias-config.d.ts +36 -0
- package/dist/proxmox/firewall-alias-config.d.ts.map +1 -0
- package/dist/proxmox/firewall-alias-form.d.ts +3 -1
- package/dist/proxmox/firewall-alias-form.d.ts.map +1 -1
- package/dist/proxmox/firewall-alias-lifecycle.d.ts +43 -0
- package/dist/proxmox/firewall-alias-lifecycle.d.ts.map +1 -0
- package/dist/proxmox/firewall-alias.d.ts +2 -8
- package/dist/proxmox/firewall-alias.d.ts.map +1 -1
- package/dist/proxmox/index.js +795 -526
- package/dist/proxmox/index.js.map +23 -10
- package/dist/proxmox/lxc-errors.d.ts +12 -0
- package/dist/proxmox/lxc-errors.d.ts.map +1 -0
- package/dist/proxmox/lxc-lifecycle.d.ts +9 -31
- package/dist/proxmox/lxc-lifecycle.d.ts.map +1 -1
- package/dist/proxmox/lxc-read.d.ts +4 -0
- package/dist/proxmox/lxc-read.d.ts.map +1 -0
- package/dist/proxmox/lxc-task.d.ts +15 -0
- package/dist/proxmox/lxc-task.d.ts.map +1 -0
- package/dist/proxmox/network-apply-read.d.ts +7 -14
- package/dist/proxmox/network-apply-read.d.ts.map +1 -1
- package/dist/proxmox/network-apply-run.d.ts +7 -0
- package/dist/proxmox/network-apply-run.d.ts.map +1 -0
- package/dist/proxmox/network-apply.d.ts +2 -3
- package/dist/proxmox/network-apply.d.ts.map +1 -1
- package/dist/proxmox/qemu-errors.d.ts +5 -0
- package/dist/proxmox/qemu-errors.d.ts.map +1 -0
- package/dist/proxmox/qemu-form.d.ts +22 -0
- package/dist/proxmox/qemu-form.d.ts.map +1 -0
- package/dist/proxmox/qemu-lifecycle.d.ts +26 -0
- package/dist/proxmox/qemu-lifecycle.d.ts.map +1 -0
- package/dist/proxmox/qemu-read.d.ts +5 -0
- package/dist/proxmox/qemu-read.d.ts.map +1 -0
- package/dist/proxmox/qemu-task.d.ts +9 -0
- package/dist/proxmox/qemu-task.d.ts.map +1 -0
- package/dist/proxmox/qemu.d.ts +9 -14
- package/dist/proxmox/qemu.d.ts.map +1 -1
- package/dist/proxmox/replication-firewall-fixtures.d.ts +30 -0
- package/dist/proxmox/replication-firewall-fixtures.d.ts.map +1 -0
- package/dist/proxmox/replication-job-config.d.ts +56 -0
- package/dist/proxmox/replication-job-config.d.ts.map +1 -0
- package/dist/proxmox/replication-job-lifecycle.d.ts +62 -0
- package/dist/proxmox/replication-job-lifecycle.d.ts.map +1 -0
- package/dist/proxmox/replication-job.d.ts +5 -6
- package/dist/proxmox/replication-job.d.ts.map +1 -1
- package/dist/release/archive.d.ts.map +1 -1
- package/dist/release/index.js +3 -2
- package/dist/release/index.js.map +3 -3
- package/docs/linux-sudo.md +18 -7
- package/docs/proxmox-lxc-distilled.md +56 -0
- package/docs/proxmox-replication-firewall-distilled.md +53 -0
- package/docs/proxmox-sdk-migration.md +23 -18
- package/package.json +2 -2
- package/src/linux/container-form.ts +1 -1
- package/src/linux/container-generator.test.ts +33 -0
- package/src/linux/container-generator.ts +72 -0
- package/src/linux/container-lifecycle.test.ts +6 -3
- package/src/linux/container-lifecycle.ts +23 -2
- package/src/linux/container-preflight.ts +47 -0
- package/src/linux/container-settle.ts +12 -1
- package/src/linux/container-shadow.test.ts +131 -0
- package/src/linux/fake-sudo.ts +21 -5
- package/src/linux/sudo-exec.ts +60 -10
- package/src/linux/sudo-lifecycle.test.ts +64 -3
- package/src/linux/unit-form.ts +4 -18
- package/src/linux/unit-text.test.ts +67 -0
- package/src/linux/unit-text.ts +58 -0
- package/src/proxmox/firewall-alias-config.ts +39 -0
- package/src/proxmox/firewall-alias-form.ts +1 -1
- package/src/proxmox/firewall-alias-lifecycle.ts +100 -0
- package/src/proxmox/firewall-alias.ts +4 -67
- package/src/proxmox/lxc-create.test.ts +4 -1
- package/src/proxmox/lxc-distilled.test.ts +239 -0
- package/src/proxmox/lxc-errors.ts +9 -0
- package/src/proxmox/lxc-lifecycle.ts +31 -113
- package/src/proxmox/lxc-read.test.ts +29 -6
- package/src/proxmox/lxc-read.ts +88 -0
- package/src/proxmox/lxc-task.ts +71 -0
- package/src/proxmox/network-apply-distilled.test.ts +76 -0
- package/src/proxmox/network-apply-read.ts +18 -39
- package/src/proxmox/network-apply-run.ts +97 -0
- package/src/proxmox/network-apply.ts +5 -94
- package/src/proxmox/qemu-errors.ts +7 -0
- package/src/proxmox/qemu-form.ts +15 -0
- package/src/proxmox/qemu-lifecycle.test.ts +171 -0
- package/src/proxmox/qemu-lifecycle.ts +134 -0
- package/src/proxmox/qemu-read.ts +73 -0
- package/src/proxmox/qemu-task.ts +64 -0
- package/src/proxmox/qemu.ts +11 -44
- package/src/proxmox/replication-firewall-fixtures.ts +71 -0
- package/src/proxmox/replication-firewall-lifecycle.test.ts +109 -0
- package/src/proxmox/replication-firewall-wire.test.ts +173 -0
- package/src/proxmox/replication-job-config.ts +79 -0
- package/src/proxmox/replication-job-lifecycle.ts +113 -0
- package/src/proxmox/replication-job.ts +7 -84
- package/src/release/archive.ts +4 -1
|
@@ -23,6 +23,22 @@
|
|
|
23
23
|
* is a valid type in `unit-form.ts`'s `TYPES` set) would also have elevated. Grepped: no code
|
|
24
24
|
* in this package ever calls `enable`/`start`/`restart` on a unit it has not itself just
|
|
25
25
|
* written a file for, so narrowing the exemption to `stop`/`disable` costs nothing legitimate.
|
|
26
|
+
* 🔴 MEASURED, CT100 deploy 2026-09-26 00:11Z: a THIRD gap, this one refusing a call that should
|
|
27
|
+
* have been allowed. `Podman.Container caddy`'s generated `caddy.service` has
|
|
28
|
+
* `FragmentPath=/run/systemd/generator/caddy.service` — Quadlet's generator output, never a
|
|
29
|
+
* path this runner would ever declare as a prefix (nothing writes there directly) — so `restart`
|
|
30
|
+
* was refused outright, even though the `.container` FILE THAT GENERATED IT lives at
|
|
31
|
+
* `/etc/containers/systemd/caddy.container`, squarely under this runner's own
|
|
32
|
+
* `/etc/containers/systemd` prefix, and this SAME runner had just written it. `SourcePath` is
|
|
33
|
+
* the generator's own record of that file (systemctl.ts's header, MEASURED on CT100). So a
|
|
34
|
+
* generated unit is now also reachable when its `FragmentPath` is the generator's OWN output
|
|
35
|
+
* directory (`GENERATOR_DIRECTORIES` below) AND its `SourcePath` is under a declared prefix —
|
|
36
|
+
* the thing this runner actually owns is the `.container` file, and the generated unit is
|
|
37
|
+
* systemd's own derivative of it, not a foreign unit. Everything the check refused before still
|
|
38
|
+
* refuses: a vendor unit's `FragmentPath` (`/usr/lib/systemd/system/...`) is not under a
|
|
39
|
+
* generator directory at all; a generated unit with no `SourcePath`, or one outside every
|
|
40
|
+
* prefix (a `.container` file elsewhere in Quadlet's OWN search path —
|
|
41
|
+
* `podman-systemd.unit(5)` — that this runner was never told to own), still refuses.
|
|
26
42
|
*/
|
|
27
43
|
import type { ExecResult, HostRunner } from '../launchd/runner.ts';
|
|
28
44
|
import type { Elevate } from './sudo-write.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sudo-exec.d.ts","sourceRoot":"","sources":["../../src/linux/sudo-exec.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sudo-exec.d.ts","sourceRoot":"","sources":["../../src/linux/sudo-exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAInE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AA4D/C,iGAAiG;AACjG,eAAO,MAAM,YAAY,SACjB,UAAU,WACP,OAAO,YACN,SAAS,MAAM,EAAE,QACrB,SAAS,MAAM,EAAE,KACtB,OAAO,CAAC,UAAU,CAuDpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-form.d.ts","sourceRoot":"","sources":["../../src/linux/unit-form.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unit-form.d.ts","sourceRoot":"","sources":["../../src/linux/unit-form.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,WAAW,GAAG;IACxB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,YAClC,qBAAqB,EACrB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,CACb,CAAC;AAEX,mGAAmG;AACnG,eAAO,MAAM,UAAU;aAAK,GAAG,EAAE,CAAC;aAAE,IAAI,EAAE,GAAK;aAAE,GAAG,EAAE,CAAC;CAAW,CAAC;AAEnE,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,MAAmD,CAAC;AAE5F,4FAA4F;AAC5F,eAAO,MAAM,YAAY,cAAe,SAAS,MAAM,EAAE,GAAG,SAAS,KAAG,MAChC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,aAAa,gBACX,MAAM,YACT,MAAM,GAAG,SAAS,WACnB,OAAO,KACf,OAKF,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,UAAU,aAAc,SAAS,WAAW,EAAE,KAAG,MAKzC,CAAC;AAEtB,eAAO,MAAM,QAAQ,UAAW,gBAAgB,KAAG,MACA,CAAC;AAEpD,eAAO,MAAM,WAAW,UAAW,gBAAgB,KAAG,MACQ,CAAC;AAE/D,mGAAmG;AACnG,eAAO,MAAM,IAAI,QAA6C,CAAC;AAgB/D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,UAAW,gBAAgB,WAAW,MAAM,KAAG,MAAM,EAmC7E,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parts of `unit-form.ts`'s validation that inspect the unit file's TEXT rather than its
|
|
3
|
+
* props struct — split out so unit-form.ts stays under the file cap, and because these are one
|
|
4
|
+
* coherent concern: is this INI shape something systemd would actually load. Takes plain strings,
|
|
5
|
+
* never `SystemdUnitProps`, so it never needs to import back from unit-form.ts.
|
|
6
|
+
*
|
|
7
|
+
* ⛔ `[Install]` KEYS ARE `unit-form.ts`'s OWN LIST, NOT SYSTEMD'S FULL VOCABULARY — WantedBy,
|
|
8
|
+
* RequiredBy, UpsertedBy, Also, Alias, per `systemd.unit(5)` §[Install]. `container-form.ts`'s
|
|
9
|
+
* own header notes it deliberately does NOT reuse this set: a `.container` file's `[Install]`
|
|
10
|
+
* supports only Alias/WantedBy/RequiredBy (`podman-systemd.unit(5)`), narrower than this.
|
|
11
|
+
*/
|
|
12
|
+
export declare const INSTALL_KEYS: Set<string>;
|
|
13
|
+
/** Whether `text` has an `[Install]` section carrying at least one key systemd actually links on. */
|
|
14
|
+
export declare const hasInstallSection: (text: string) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* The first line that is neither blank nor a comment — the line whose shape actually decides
|
|
17
|
+
* whether the file "begins with a [Section]", per `textProblems` below.
|
|
18
|
+
* ★ systemd.syntax(7): "Empty lines and lines starting with '#' or ';' are ignored", with no
|
|
19
|
+
* carve-out for the position before the first section — a comment header is ordinary content
|
|
20
|
+
* there, same as anywhere else in the file.
|
|
21
|
+
*/
|
|
22
|
+
export declare const firstSubstantiveLine: (text: string) => string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* 🔴 MEASURED FALSE, CT100 deploy 2026-09-26 00:11Z: the openbao-agent.service asset's first eight
|
|
25
|
+
* lines are `#`-comments recording where the file was recovered from (verbatim from the live
|
|
26
|
+
* host — homeflare-ct100's `src/openbao-agent/files/openbao-agent.service`), and the file is
|
|
27
|
+
* byte-identical to what systemd already loads there. The old check tested the WHOLE text
|
|
28
|
+
* against `/^\s*\[[A-Za-z]+]/` — `\s*` skips blank lines and indentation, never a `#`/`;`
|
|
29
|
+
* comment — so a leading comment line failed it outright. This checks only the first
|
|
30
|
+
* SUBSTANTIVE line, so any number of leading blank lines and comments are fine and a genuine
|
|
31
|
+
* `key=value` before any section — the one real error this exists to catch — still fails, since
|
|
32
|
+
* that line is neither blank nor a comment either.
|
|
33
|
+
*/
|
|
34
|
+
export declare const textProblems: (text: string) => string[];
|
|
35
|
+
//# sourceMappingURL=unit-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit-text.d.ts","sourceRoot":"","sources":["../../src/linux/unit-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,YAAY,aAAqE,CAAC;AAE/F,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,OAIhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,SAAU,MAAM,KAAG,MAAM,GAAG,SAG6B,CAAC;AAE3F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,MAAM,EAajD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** Existing alias normalization and forms, independent of the named SDK transport. */
|
|
2
|
+
import type { FirewallAliasAttributes, FirewallAliasProps } from './firewall-alias.ts';
|
|
3
|
+
import { body } from './firewall-alias-form.ts';
|
|
4
|
+
export declare const firewallAliasSpec: {
|
|
5
|
+
/** The SDK read refuses malformed successful payloads before applying these normalizers. */
|
|
6
|
+
attributes: (live: Record<string, unknown>, props: FirewallAliasProps) => {
|
|
7
|
+
cidr: string;
|
|
8
|
+
comment: string;
|
|
9
|
+
ipversion: number;
|
|
10
|
+
/** The read checks identity; the stored spelling is preserved for display. */
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
collection: () => string;
|
|
14
|
+
createForm: (props: FirewallAliasProps) => {
|
|
15
|
+
cidr: string;
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* ⚠️ EXACTLY THE TWO FIELDS A PUT CAN PUT BACK, both sides through the same normalisers. `name`
|
|
20
|
+
* is identity and case-only drift (see the header); `ipversion` is derived and unwritable.
|
|
21
|
+
* Comparing either would report an update that no update can settle.
|
|
22
|
+
*/
|
|
23
|
+
/** The vendor rules these forms are checked against at plan time — resource-spec.ts. */
|
|
24
|
+
endpoint: {
|
|
25
|
+
create: string;
|
|
26
|
+
update: string;
|
|
27
|
+
};
|
|
28
|
+
matches: (attributes: FirewallAliasAttributes, props: FirewallAliasProps) => boolean;
|
|
29
|
+
/**
|
|
30
|
+
* ⚠️ UNESCAPED ON PURPOSE: `pve-fw-alias` admits only `[A-Za-z][A-Za-z0-9\-\_]+`, so there is no
|
|
31
|
+
* character here that a URL would need to encode, and PVE lowercases the segment on arrival.
|
|
32
|
+
*/
|
|
33
|
+
path: (props: FirewallAliasProps) => string;
|
|
34
|
+
updateForm: typeof body;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=firewall-alias-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firewall-alias-config.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-config.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,IAAI,EAAiB,MAAM,0BAA0B,CAAC;AAG/D,eAAO,MAAM,iBAAiB;IAC5B,4FAA4F;;;;;QAOxF,8EAA8E;;;;;;;;IAMlF;;;;OAIG;IACH,wFAAwF;;QAEtF,MAAM;QACN,MAAM;;;IAIR;;;OAGG;;;CAG2D,CAAC"}
|
|
@@ -94,5 +94,7 @@ export declare const comment: (value: unknown) => string;
|
|
|
94
94
|
* this form would be a second, invisible identity for the object, set from a field the resource
|
|
95
95
|
* does not have.
|
|
96
96
|
*/
|
|
97
|
-
export declare const body: (props: FirewallAliasProps) => Record<string, string
|
|
97
|
+
export declare const body: (props: FirewallAliasProps) => Record<string, string> & {
|
|
98
|
+
cidr: string;
|
|
99
|
+
};
|
|
98
100
|
//# sourceMappingURL=firewall-alias-form.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firewall-alias-form.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,SAAU,MAAM,WAA8B,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,IAAI,UAAW,OAAO,WAIlC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,UAAW,OAAO,WAGrC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,IAAI,UAAW,kBAAkB,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"firewall-alias-form.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,SAAU,MAAM,WAA8B,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,IAAI,UAAW,OAAO,WAIlC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,UAAW,OAAO,WAGrC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,IAAI,UAAW,kBAAkB,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAGvF,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Input } from 'alchemy/Input';
|
|
2
|
+
import * as cluster from '@distilled.cloud/proxmox/cluster';
|
|
3
|
+
import * as Effect from 'effect/Effect';
|
|
4
|
+
import type { FirewallAliasAttributes, FirewallAliasProps } from './firewall-alias.ts';
|
|
5
|
+
export declare const readFirewallAlias: (props: FirewallAliasProps) => Effect.Effect<{
|
|
6
|
+
cidr: string;
|
|
7
|
+
comment: string;
|
|
8
|
+
ipversion: number;
|
|
9
|
+
name: string;
|
|
10
|
+
} | undefined, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
11
|
+
/** Vendor deletion silently removes a missing key. All actual SDK failures still propagate. */
|
|
12
|
+
export declare const deleteFirewallAlias: (props: FirewallAliasProps) => Effect.Effect<cluster.DeleteClusterFirewallAliasResponse, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
13
|
+
export declare const firewallAliasHandlers: {
|
|
14
|
+
list: () => Effect.Effect<never[], never, never>;
|
|
15
|
+
read: ({ olds }: {
|
|
16
|
+
olds: FirewallAliasProps;
|
|
17
|
+
}) => Effect.Effect<{
|
|
18
|
+
cidr: string;
|
|
19
|
+
comment: string;
|
|
20
|
+
ipversion: number;
|
|
21
|
+
name: string;
|
|
22
|
+
} | undefined, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
23
|
+
diff: (args_0: {
|
|
24
|
+
news: Input<FirewallAliasProps>;
|
|
25
|
+
output: FirewallAliasAttributes | undefined;
|
|
26
|
+
}) => Effect.Effect<{
|
|
27
|
+
readonly action: 'replace';
|
|
28
|
+
} | {
|
|
29
|
+
readonly action: "noop" | "update";
|
|
30
|
+
} | undefined, Error | import("effect/unstable/http/HttpClientError").HttpClientError | import("./credential-errors.ts").PveCredentialDenied, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
31
|
+
reconcile: (args_0: {
|
|
32
|
+
news: FirewallAliasProps;
|
|
33
|
+
}) => Effect.Effect<{
|
|
34
|
+
cidr: string;
|
|
35
|
+
comment: string;
|
|
36
|
+
ipversion: number;
|
|
37
|
+
name: string;
|
|
38
|
+
}, Error | import("effect/unstable/http/HttpClientError").HttpClientError | import("./credential-errors.ts").PveCredentialDenied, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
39
|
+
delete: ({ olds }: {
|
|
40
|
+
olds: FirewallAliasProps;
|
|
41
|
+
}) => Effect.Effect<cluster.DeleteClusterFirewallAliasResponse, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=firewall-alias-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firewall-alias-lifecycle.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-lifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AASvF,eAAO,MAAM,iBAAiB,UAAW,kBAAkB;;;;;oPA0BxD,CAAC;AAEJ,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,UAAW,kBAAkB,oSACsC,CAAC;AAEpG,eAAO,MAAM,qBAAqB;IAChC,IAAI;IACJ,IAAI,aAAa;QAAE,IAAI,EAAE,kBAAkB,CAAA;KAAE;;;;;;IAC7C,IAAI;cAII,KAAK,CAAC,kBAAkB,CAAC;gBACvB,uBAAuB,GAAG,SAAS;;yBAOiB,SAAS;;;;IAQvE,SAAS;cAAyC,kBAAkB;;;;;;;IA4BpE,MAAM,aAAa;QAAE,IAAI,EAAE,kBAAkB,CAAA;KAAE;CAChD,CAAC"}
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
*/
|
|
95
95
|
import { Resource } from 'alchemy';
|
|
96
96
|
import * as Provider from 'alchemy/Provider';
|
|
97
|
-
import {
|
|
97
|
+
import type { PveRequirements, WithTarget } from './resource-spec.ts';
|
|
98
98
|
export interface FirewallAliasProps extends WithTarget {
|
|
99
99
|
/**
|
|
100
100
|
* PVE's `pve-fw-alias`: a letter, then at least one more of letter/digit/`-`/`_`, to 64 chars.
|
|
@@ -130,12 +130,6 @@ export interface FirewallAliasAttributes {
|
|
|
130
130
|
export interface ProxmoxFirewallAlias extends Resource<'Proxmox.FirewallAlias', FirewallAliasProps, FirewallAliasAttributes, never, PveRequirements> {
|
|
131
131
|
}
|
|
132
132
|
export declare const ProxmoxFirewallAlias: import("alchemy").ResourceClass<ProxmoxFirewallAlias>;
|
|
133
|
-
/**
|
|
134
|
-
* ⛔ ONE HANDLER IS OVERRIDDEN AND THE REST COME FROM THE FACTORY, for the reason `acl.ts` spells
|
|
135
|
-
* out at length: the factory answers `replace` only for an object with no update path, and this
|
|
136
|
-
* one has a PUT. Left to delegate, a changed `name` would read absent at the new path, plan as an
|
|
137
|
-
* update, and quietly leave the old alias behind. Everything else — the empty `list`, the read,
|
|
138
|
-
* the read-back-guarded reconcile, the delete — is the factory's, unchanged.
|
|
139
|
-
*/
|
|
133
|
+
/** Named distilled operations preserve create-first identity replacement and explicit adoption. */
|
|
140
134
|
export declare const ProxmoxFirewallAliasProvider: () => import("effect/Layer").Layer<Provider.Provider<ProxmoxFirewallAlias>, never, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
141
135
|
//# sourceMappingURL=firewall-alias.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firewall-alias.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"firewall-alias.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGtE,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,QAAQ,CACpD,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,EACL,eAAe,CAChB;CAAG;AAEJ,eAAO,MAAM,oBAAoB,uDAA0D,CAAC;AAE5F,mGAAmG;AACnG,eAAO,MAAM,4BAA4B,0IAItC,CAAC"}
|