@homeflare/alchemy 0.34.0 → 0.36.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/grafana/alert-rule-group-drop-warning.d.ts +25 -0
- package/dist/grafana/alert-rule-group-drop-warning.d.ts.map +1 -0
- package/dist/grafana/alert-rule-group-fixtures.d.ts +73 -0
- package/dist/grafana/alert-rule-group-fixtures.d.ts.map +1 -0
- package/dist/grafana/alert-rule-group-model.d.ts +28 -0
- package/dist/grafana/alert-rule-group-model.d.ts.map +1 -0
- package/dist/grafana/alert-rule-group.d.ts +60 -0
- package/dist/grafana/alert-rule-group.d.ts.map +1 -0
- package/dist/grafana/index.d.ts +6 -4
- package/dist/grafana/index.d.ts.map +1 -1
- package/dist/grafana/index.js +355 -139
- package/dist/grafana/index.js.map +14 -8
- package/dist/grafana/notification-policy-drop-warning.d.ts +27 -0
- package/dist/grafana/notification-policy-drop-warning.d.ts.map +1 -0
- package/dist/grafana/notification-policy-fixtures.d.ts +34 -0
- package/dist/grafana/notification-policy-fixtures.d.ts.map +1 -0
- package/dist/grafana/notification-policy-model.d.ts +53 -0
- package/dist/grafana/notification-policy-model.d.ts.map +1 -0
- package/dist/grafana/notification-policy.d.ts +57 -0
- package/dist/grafana/notification-policy.d.ts.map +1 -0
- package/dist/grafana/providers.d.ts +1 -1
- package/dist/grafana/providers.d.ts.map +1 -1
- package/dist/proxmox/index.js +349 -287
- package/dist/proxmox/index.js.map +8 -7
- package/dist/proxmox/network-apply-read.d.ts +12 -0
- package/dist/proxmox/network-apply-read.d.ts.map +1 -1
- package/dist/proxmox/network-apply.d.ts +2 -0
- package/dist/proxmox/network-apply.d.ts.map +1 -1
- package/dist/proxmox/node-network-form.d.ts +86 -54
- package/dist/proxmox/node-network-form.d.ts.map +1 -1
- package/dist/proxmox/node-network-wire.d.ts +100 -0
- package/dist/proxmox/node-network-wire.d.ts.map +1 -0
- package/dist/proxmox/node-network.d.ts +21 -106
- package/dist/proxmox/node-network.d.ts.map +1 -1
- package/docs/grafana-alerting-rules.md +143 -0
- package/docs/grafana-alerting.md +7 -4
- package/docs/grafana-notification-policy.md +127 -0
- package/docs/grafana.md +12 -6
- package/docs/upstream-conformance.md +30 -4
- package/package.json +1 -1
- package/src/grafana/alert-rule-group-drop-warning.test.ts +107 -0
- package/src/grafana/alert-rule-group-drop-warning.ts +41 -0
- package/src/grafana/alert-rule-group-fixtures.ts +46 -0
- package/src/grafana/alert-rule-group-model.test.ts +75 -0
- package/src/grafana/alert-rule-group-model.ts +66 -0
- package/src/grafana/alert-rule-group-provenance.test.ts +116 -0
- package/src/grafana/alert-rule-group.test.ts +164 -0
- package/src/grafana/alert-rule-group.ts +231 -0
- package/src/grafana/index.ts +18 -4
- package/src/grafana/notification-policy-drop-warning.test.ts +163 -0
- package/src/grafana/notification-policy-drop-warning.ts +60 -0
- package/src/grafana/notification-policy-fixtures.ts +27 -0
- package/src/grafana/notification-policy-model.test.ts +104 -0
- package/src/grafana/notification-policy-model.ts +100 -0
- package/src/grafana/notification-policy-refusals.test.ts +119 -0
- package/src/grafana/notification-policy.test.ts +86 -0
- package/src/grafana/notification-policy.ts +191 -0
- package/src/grafana/providers.ts +4 -0
- package/src/proxmox/constraints-host-forms.test.ts +2 -2
- package/src/proxmox/network-apply-read.ts +12 -0
- package/src/proxmox/network-apply.ts +2 -0
- package/src/proxmox/node-network-form.ts +93 -99
- package/src/proxmox/node-network-read-failure.test.ts +206 -0
- package/src/proxmox/node-network-wire.ts +239 -0
- package/src/proxmox/node-network.ts +155 -167
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Input } from 'alchemy/Input';
|
|
2
|
+
import { Resource } from 'alchemy';
|
|
3
|
+
import * as Provider from 'alchemy/Provider';
|
|
4
|
+
import * as grafana from '@distilled.cloud/grafana';
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
import { type GrafanaProvisionedObjectError } from './alerting-provenance.ts';
|
|
7
|
+
import { type PolicyRoute } from './notification-policy-model.ts';
|
|
8
|
+
import { type GrafanaSpec } from './resource.ts';
|
|
9
|
+
export type { PolicyRoute };
|
|
10
|
+
export interface NotificationPolicyProps {
|
|
11
|
+
/** The root route and its full nested tree — Grafana's `Route` shape (`receiver`, `group_by`,
|
|
12
|
+
* `matchers`, nested `routes[]`, …), passed through opaquely — see the file header. Order of
|
|
13
|
+
* `routes[]` at every level is significant. */
|
|
14
|
+
route: PolicyRoute;
|
|
15
|
+
/** Lets `destroy` actually call `routeResetPolicyTree`. Defaults to `false` — see the file
|
|
16
|
+
* header for why this is a second gate on top of Alchemy's own removal policy. */
|
|
17
|
+
allowReset?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface NotificationPolicyAttributes {
|
|
20
|
+
route: PolicyRoute;
|
|
21
|
+
/** `""`/`"api"` (this family may write); anything else, INCLUDING `undefined`, refuses — see
|
|
22
|
+
* alerting-provenance.ts's "fails open" note. */
|
|
23
|
+
provenance: string | undefined;
|
|
24
|
+
}
|
|
25
|
+
export interface GrafanaNotificationPolicy extends Resource<'Grafana.NotificationPolicy', NotificationPolicyProps, NotificationPolicyAttributes, never> {
|
|
26
|
+
}
|
|
27
|
+
export declare const GrafanaNotificationPolicy: import("alchemy").ResourceClass<GrafanaNotificationPolicy>;
|
|
28
|
+
export declare const spec: GrafanaSpec<NotificationPolicyProps, grafana.Route, NotificationPolicyAttributes, grafana.RouteGetPolicyTreeError | grafana.RoutePutPolicyTreeError | grafana.RouteResetPolicyTreeError | GrafanaProvisionedObjectError>;
|
|
29
|
+
/**
|
|
30
|
+
* ⚠️ A LOCAL REIMPLEMENTATION OF `resource.ts`'s GENERIC `diff`, NOT A WRAP OF IT — same reasoning
|
|
31
|
+
* as `alert-rule-group.ts`'s own `diff`: the generic version has no seam to run the drop-warning
|
|
32
|
+
* side effect against the live tree it reads, and wrapping it would mean a second live fetch
|
|
33
|
+
* just to see what it already saw.
|
|
34
|
+
*/
|
|
35
|
+
declare const diff: ({ news, output, }: {
|
|
36
|
+
news: Input<NotificationPolicyProps>;
|
|
37
|
+
output: NotificationPolicyAttributes | undefined;
|
|
38
|
+
}) => Effect.Effect<{
|
|
39
|
+
readonly action: 'update';
|
|
40
|
+
} | {
|
|
41
|
+
readonly action: 'noop';
|
|
42
|
+
} | undefined, grafana.BadGateway | import("@distilled.cloud/caddy").BadRequest | grafana.BadRequest | grafana.ConfigError | import("@distilled.cloud/caddy").Conflict | grafana.Conflict | import("@distilled.cloud/caddy").Forbidden | grafana.Forbidden | grafana.GatewayTimeout | GrafanaProvisionedObjectError | import("effect/unstable/http/HttpClientError").HttpClientError | grafana.InternalServerError | grafana.Locked | import("@distilled.cloud/caddy").NotFound | grafana.ServiceUnavailable | grafana.TooManyRequests | grafana.Unauthorized | grafana.UnknownGrafanaError | import("@distilled.cloud/caddy").UnprocessableEntity, grafana.GrafanaOpContext>;
|
|
43
|
+
export declare const handlers: {
|
|
44
|
+
list: () => Effect.Effect<never[], never, never>;
|
|
45
|
+
read: ({ olds }: {
|
|
46
|
+
olds: NotificationPolicyProps;
|
|
47
|
+
}) => Effect.Effect<NotificationPolicyAttributes | undefined, grafana.BadGateway | import("@distilled.cloud/caddy").BadRequest | grafana.BadRequest | grafana.ConfigError | import("@distilled.cloud/caddy").Conflict | grafana.Conflict | import("@distilled.cloud/caddy").Forbidden | grafana.Forbidden | grafana.GatewayTimeout | GrafanaProvisionedObjectError | import("effect/unstable/http/HttpClientError").HttpClientError | grafana.InternalServerError | grafana.Locked | import("@distilled.cloud/caddy").NotFound | grafana.ServiceUnavailable | grafana.TooManyRequests | grafana.Unauthorized | grafana.UnknownGrafanaError | import("@distilled.cloud/caddy").UnprocessableEntity, grafana.GrafanaOpContext>;
|
|
48
|
+
reconcile: ({ news }: {
|
|
49
|
+
news: NotificationPolicyProps;
|
|
50
|
+
}) => Effect.Effect<NotificationPolicyAttributes, grafana.BadGateway | import("@distilled.cloud/caddy").BadRequest | grafana.BadRequest | grafana.ConfigError | import("@distilled.cloud/caddy").Conflict | grafana.Conflict | import("@distilled.cloud/caddy").Forbidden | grafana.Forbidden | grafana.GatewayTimeout | GrafanaProvisionedObjectError | import("effect/unstable/http/HttpClientError").HttpClientError | grafana.InternalServerError | grafana.Locked | import("@distilled.cloud/caddy").NotFound | grafana.ServiceUnavailable | grafana.TooManyRequests | grafana.Unauthorized | grafana.UnknownGrafanaError | import("@distilled.cloud/caddy").UnprocessableEntity, grafana.GrafanaOpContext>;
|
|
51
|
+
delete: ({ olds }: {
|
|
52
|
+
olds: NotificationPolicyProps;
|
|
53
|
+
}) => Effect.Effect<void, grafana.BadGateway | import("@distilled.cloud/caddy").BadRequest | grafana.BadRequest | grafana.ConfigError | import("@distilled.cloud/caddy").Conflict | grafana.Conflict | import("@distilled.cloud/caddy").Forbidden | grafana.Forbidden | grafana.GatewayTimeout | GrafanaProvisionedObjectError | import("effect/unstable/http/HttpClientError").HttpClientError | grafana.InternalServerError | grafana.Locked | import("@distilled.cloud/caddy").NotFound | grafana.ServiceUnavailable | grafana.TooManyRequests | grafana.Unauthorized | grafana.UnknownGrafanaError | import("@distilled.cloud/caddy").UnprocessableEntity, grafana.GrafanaOpContext>;
|
|
54
|
+
diff: typeof diff;
|
|
55
|
+
};
|
|
56
|
+
export declare const GrafanaNotificationPolicyProvider: () => import("effect/Layer").Layer<Provider.Provider<GrafanaNotificationPolicy>, never, grafana.GrafanaOpContext>;
|
|
57
|
+
//# sourceMappingURL=notification-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-policy.d.ts","sourceRoot":"","sources":["../../src/grafana/notification-policy.ts"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,KAAK,6BAA6B,EAGnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,gCAAgC,CAAC;AAElF,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,eAAe,CAAC;AAGlE,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,MAAM,WAAW,uBAAuB;IACtC;;oDAEgD;IAChD,KAAK,EAAE,WAAW,CAAC;IACnB;uFACmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,WAAW,CAAC;IACnB;sDACkD;IAClD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,yBAA0B,SAAQ,QAAQ,CACzD,4BAA4B,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,KAAK,CACN;CAAG;AAEJ,eAAO,MAAM,yBAAyB,4DAGrC,CAAC;AAKF,eAAO,MAAM,IAAI,EAAE,WAAW,CAC5B,uBAAuB,EACvB,OAAO,CAAC,KAAK,EACb,4BAA4B,EAC1B,OAAO,CAAC,uBAAuB,GAC/B,OAAO,CAAC,uBAAuB,GAC/B,OAAO,CAAC,yBAAyB,GACjC,6BAA6B,CA6ChC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,IAAI,sBAGP;IACD,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,EAAE,4BAA4B,GAAG,SAAS,CAAC;CAClD;qBAQ4C,QAAQ;;qBAIlC,MAAM;6oBAErB,CAAC;AAEL,eAAO,MAAM,QAAQ;;;;;;;;;;;;CAAqC,CAAC;AAE3D,eAAO,MAAM,iCAAiC,mHAI3C,CAAC"}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import * as Layer from 'effect/Layer';
|
|
15
15
|
import { type GrafanaTarget } from './credentials.ts';
|
|
16
|
-
export declare const grafanaProviders: (target: GrafanaTarget) => Layer.Layer<import("alchemy").Provider<import("./contact-point.ts").GrafanaContactPoint> | import("alchemy").Provider<import("./dashboard.ts").GrafanaDashboard> | import("alchemy").Provider<import("./datasource.ts").GrafanaDatasource> | import("alchemy").Provider<import("./folder.ts").GrafanaFolder> | import("alchemy").Provider<import("./message-template.ts").GrafanaMessageTemplate> | import("alchemy").Provider<import("./mute-timing.ts").GrafanaMuteTiming>, never, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
16
|
+
export declare const grafanaProviders: (target: GrafanaTarget) => Layer.Layer<import("alchemy").Provider<import("./alert-rule-group.ts").GrafanaAlertRuleGroup> | import("alchemy").Provider<import("./contact-point.ts").GrafanaContactPoint> | import("alchemy").Provider<import("./dashboard.ts").GrafanaDashboard> | import("alchemy").Provider<import("./datasource.ts").GrafanaDatasource> | import("alchemy").Provider<import("./folder.ts").GrafanaFolder> | import("alchemy").Provider<import("./message-template.ts").GrafanaMessageTemplate> | import("alchemy").Provider<import("./mute-timing.ts").GrafanaMuteTiming> | import("alchemy").Provider<import("./notification-policy.ts").GrafanaNotificationPolicy>, never, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
17
17
|
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/grafana/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/grafana/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,kBAAkB,CAAC;AAQ1E,eAAO,MAAM,gBAAgB,WAAY,aAAa,8rBAUH,CAAC"}
|