@homeflare/distilled-unifi-network 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/LICENSE +201 -0
- package/README.md +125 -0
- package/dist/credentials.d.ts +24 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +78 -0
- package/dist/credentials.js.map +1 -0
- package/dist/errors.d.ts +74 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +49 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol.d.ts +18 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +59 -0
- package/dist/protocol.js.map +1 -0
- package/dist/retry.d.ts +57 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +50 -0
- package/dist/retry.js.map +1 -0
- package/dist/services/access_control_acl_rules.d.ts +222 -0
- package/dist/services/access_control_acl_rules.d.ts.map +1 -0
- package/dist/services/access_control_acl_rules.js +225 -0
- package/dist/services/access_control_acl_rules.js.map +1 -0
- package/dist/services/application_info.d.ts +15 -0
- package/dist/services/application_info.d.ts.map +1 -0
- package/dist/services/application_info.js +22 -0
- package/dist/services/application_info.js.map +1 -0
- package/dist/services/clients.d.ts +108 -0
- package/dist/services/clients.d.ts.map +1 -0
- package/dist/services/clients.js +122 -0
- package/dist/services/clients.js.map +1 -0
- package/dist/services/dns_policies.d.ts +143 -0
- package/dist/services/dns_policies.d.ts.map +1 -0
- package/dist/services/dns_policies.js +171 -0
- package/dist/services/dns_policies.js.map +1 -0
- package/dist/services/firewall.d.ts +473 -0
- package/dist/services/firewall.d.ts.map +1 -0
- package/dist/services/firewall.js +521 -0
- package/dist/services/firewall.js.map +1 -0
- package/dist/services/hotspot.d.ts +107 -0
- package/dist/services/hotspot.d.ts.map +1 -0
- package/dist/services/hotspot.js +145 -0
- package/dist/services/hotspot.js.map +1 -0
- package/dist/services/index.d.ts +14 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +15 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/networks.d.ts +251 -0
- package/dist/services/networks.d.ts.map +1 -0
- package/dist/services/networks.js +256 -0
- package/dist/services/networks.js.map +1 -0
- package/dist/services/sites.d.ts +31 -0
- package/dist/services/sites.d.ts.map +1 -0
- package/dist/services/sites.js +38 -0
- package/dist/services/sites.js.map +1 -0
- package/dist/services/supporting_resources.d.ts +238 -0
- package/dist/services/supporting_resources.d.ts.map +1 -0
- package/dist/services/supporting_resources.js +298 -0
- package/dist/services/supporting_resources.js.map +1 -0
- package/dist/services/switching.d.ts +168 -0
- package/dist/services/switching.d.ts.map +1 -0
- package/dist/services/switching.js +226 -0
- package/dist/services/switching.js.map +1 -0
- package/dist/services/traffic_matching_lists.d.ts +75 -0
- package/dist/services/traffic_matching_lists.d.ts.map +1 -0
- package/dist/services/traffic_matching_lists.js +126 -0
- package/dist/services/traffic_matching_lists.js.map +1 -0
- package/dist/services/unifi_devices.d.ts +280 -0
- package/dist/services/unifi_devices.d.ts.map +1 -0
- package/dist/services/unifi_devices.js +338 -0
- package/dist/services/unifi_devices.js.map +1 -0
- package/dist/services/wifi_broadcasts.d.ts +378 -0
- package/dist/services/wifi_broadcasts.d.ts.map +1 -0
- package/dist/services/wifi_broadcasts.js +396 -0
- package/dist/services/wifi_broadcasts.js.map +1 -0
- package/dist/traits.d.ts +11 -0
- package/dist/traits.d.ts.map +1 -0
- package/dist/traits.js +12 -0
- package/dist/traits.js.map +1 -0
- package/package.json +75 -0
- package/src/credentials.ts +112 -0
- package/src/errors.ts +103 -0
- package/src/index.ts +36 -0
- package/src/protocol.ts +86 -0
- package/src/retry.ts +83 -0
- package/src/services/access_control_acl_rules.ts +537 -0
- package/src/services/application_info.ts +44 -0
- package/src/services/clients.ts +272 -0
- package/src/services/dns_policies.ts +363 -0
- package/src/services/firewall.ts +1492 -0
- package/src/services/hotspot.ts +305 -0
- package/src/services/index.ts +14 -0
- package/src/services/networks.ts +613 -0
- package/src/services/sites.ts +81 -0
- package/src/services/supporting_resources.ts +650 -0
- package/src/services/switching.ts +496 -0
- package/src/services/traffic_matching_lists.ts +248 -0
- package/src/services/unifi_devices.ts +795 -0
- package/src/services/wifi_broadcasts.ts +992 -0
- package/src/traits.ts +45 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type * as Layer from "effect/Layer";
|
|
2
|
+
import type * as HttpClient from "effect/unstable/http/HttpClient";
|
|
3
|
+
import type * as HttpClientError from "effect/unstable/http/HttpClientError";
|
|
4
|
+
import type * as API from "@distilled.cloud/core/api";
|
|
5
|
+
import type { ConfigError } from "@distilled.cloud/core/errors";
|
|
6
|
+
import { Credentials } from "./credentials.ts";
|
|
7
|
+
import { type DefaultErrors } from "./errors.ts";
|
|
8
|
+
/**
|
|
9
|
+
* Error channel shared by every generated UniFi Network operation. Generated
|
|
10
|
+
* service files annotate operations with `API.OperationMethod<I, O,
|
|
11
|
+
* UnifiNetworkOpError, UnifiNetworkOpContext>` explicitly so the compiler
|
|
12
|
+
* never infers these back out of the schema generics.
|
|
13
|
+
*/
|
|
14
|
+
export type UnifiNetworkOpError = DefaultErrors | ConfigError | HttpClientError.HttpClientError;
|
|
15
|
+
/** Context (requirements) shared by every generated UniFi Network operation. */
|
|
16
|
+
export type UnifiNetworkOpContext = Credentials | HttpClient.HttpClient;
|
|
17
|
+
export declare const UnifiNetworkProtocol: Layer.Layer<API.Protocol>;
|
|
18
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,KAAK,eAAe,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,KAAK,GAAG,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAKhE,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,WAAW,GACX,eAAe,CAAC,eAAe,CAAC;AAEpC,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AAUxE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CA0BvD,CAAC"}
|
package/dist/protocol.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UnifiNetworkProtocol — the shared header-auth REST protocol instantiated
|
|
3
|
+
* for the UniFi Network Integration API.
|
|
4
|
+
*
|
|
5
|
+
* The spec's `info.description` is empty and its `components` carries no
|
|
6
|
+
* `securitySchemes` — this package cannot generate its auth from the
|
|
7
|
+
* document, unlike almost every other OpenAPI-sourced package here. The
|
|
8
|
+
* `X-API-KEY` header is sourced from Ubiquiti's own Integration API guide;
|
|
9
|
+
* see the warning in `src/credentials.ts`.
|
|
10
|
+
*
|
|
11
|
+
* Response envelope: list endpoints return `{ count, data, limit, offset,
|
|
12
|
+
* totalCount }` (offset pagination — see `scripts/convert.ts` for why no
|
|
13
|
+
* `smithy.api#paginated` trait is stamped yet); single-resource endpoints
|
|
14
|
+
* return the object directly; mutations return the created/updated object
|
|
15
|
+
* (`200`/`201`), never `204`.
|
|
16
|
+
*
|
|
17
|
+
* FAILURE ENVELOPE IS UNKNOWN: no operation in the spec documents an error
|
|
18
|
+
* response, so there is no field to read a machine-readable code or message
|
|
19
|
+
* from (`errorEnvelope` below always returns undefined, meaning every
|
|
20
|
+
* failure falls through to the protocol's raw-text / `HTTP <status>`
|
|
21
|
+
* default and `unknownError`). Replace this the first time a real console
|
|
22
|
+
* failure is captured and its body shape is known.
|
|
23
|
+
*/
|
|
24
|
+
import * as Effect from "effect/Effect";
|
|
25
|
+
import * as Redacted from "effect/Redacted";
|
|
26
|
+
import { makeRestProtocol, } from "@distilled.cloud/core/protocol-rest";
|
|
27
|
+
import { Credentials } from "./credentials.js";
|
|
28
|
+
import { UnknownUnifiNetworkError } from "./errors.js";
|
|
29
|
+
/**
|
|
30
|
+
* No documented failure envelope to parse (see module docs) — every failure
|
|
31
|
+
* falls through to the protocol's status-derived default and
|
|
32
|
+
* {@link UnknownUnifiNetworkError}.
|
|
33
|
+
*/
|
|
34
|
+
const errorEnvelope = (_body) => undefined;
|
|
35
|
+
export const UnifiNetworkProtocol = makeRestProtocol({
|
|
36
|
+
// Resolved on the CALLING fiber per request (the layer is memoized per
|
|
37
|
+
// process); the Credentials service holds an effect, so a key rotated
|
|
38
|
+
// between calls is picked up without rebuilding the layer.
|
|
39
|
+
credentials: Effect.gen(function* () {
|
|
40
|
+
const resolve = yield* Credentials;
|
|
41
|
+
return yield* resolve;
|
|
42
|
+
}),
|
|
43
|
+
baseUrl: (creds) => creds.apiBaseUrl,
|
|
44
|
+
headers: (creds) => ({
|
|
45
|
+
"X-API-KEY": Redacted.value(creds.apiKey),
|
|
46
|
+
Accept: "application/json",
|
|
47
|
+
}),
|
|
48
|
+
errorEnvelope,
|
|
49
|
+
unknownError: ({ code, message, body }) => new UnknownUnifiNetworkError({
|
|
50
|
+
code: typeof code === "string"
|
|
51
|
+
? code
|
|
52
|
+
: code !== undefined
|
|
53
|
+
? String(code)
|
|
54
|
+
: undefined,
|
|
55
|
+
message,
|
|
56
|
+
body,
|
|
57
|
+
}),
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAK5C,OAAO,EACL,gBAAgB,GAEjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAsB,MAAM,aAAa,CAAC;AAgB3E;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,KAAc,EAAiC,EAAE,CACtE,SAAS,CAAC;AAEZ,MAAM,CAAC,MAAM,oBAAoB,GAC/B,gBAAgB,CAAS;IACvB,uEAAuE;IACvE,sEAAsE;IACtE,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnB,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,MAAM,EAAE,kBAAkB;KAC3B,CAAC;IACF,aAAa;IACb,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CACxC,IAAI,wBAAwB,CAAC;QAC3B,IAAI,EACF,OAAO,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,KAAK,SAAS;gBAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBACd,CAAC,CAAC,SAAS;QACjB,OAAO;QACP,IAAI;KACL,CAAC;CACL,CAAC,CAAC"}
|
package/dist/retry.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UniFi Network retry surface — a veneer over `@distilled.cloud/core/retry`.
|
|
3
|
+
*
|
|
4
|
+
* The `Retry` service tag is threaded into every generated operation via
|
|
5
|
+
* `API.make({ retry: Retry })`, so a caller-installed policy applies to all
|
|
6
|
+
* UniFi Network calls below it and core's `makeDefault` is the fallback when
|
|
7
|
+
* none is provided.
|
|
8
|
+
*
|
|
9
|
+
* No operation in the spec documents a 429 response (see `src/errors.ts`),
|
|
10
|
+
* so whether a console rate-limits at all — and whether it sends
|
|
11
|
+
* `Retry-After` — is unconfirmed. `TooManyRequests` is wired through core's
|
|
12
|
+
* shared status map regardless (a console-side reverse proxy or the cloud
|
|
13
|
+
* connector could still emit one), and the default policy's capped backoff
|
|
14
|
+
* applies when no server hint is present.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import * as UnifiNetwork from "@distilled.cloud/unifi-network";
|
|
19
|
+
*
|
|
20
|
+
* myEffect.pipe(UnifiNetwork.Retry.transient);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import * as Context from "effect/Context";
|
|
24
|
+
import * as Effect from "effect/Effect";
|
|
25
|
+
import * as Retries from "@distilled.cloud/core/retry";
|
|
26
|
+
export type Options = Retries.Options;
|
|
27
|
+
export type Factory = Retries.Factory;
|
|
28
|
+
export type Policy = Retries.Policy;
|
|
29
|
+
declare const Retry_base: Context.ServiceClass<Retry, "UnifiNetworkRetry", Retries.Policy>;
|
|
30
|
+
/** Context tag for configuring retry behavior of UniFi Network API calls. */
|
|
31
|
+
export declare class Retry extends Retry_base {
|
|
32
|
+
}
|
|
33
|
+
/** Provides a custom retry policy to every UniFi Network API call below it. */
|
|
34
|
+
export declare const policy: {
|
|
35
|
+
(options: Options): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Retry>>;
|
|
36
|
+
(factory: Factory): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Retry>>;
|
|
37
|
+
};
|
|
38
|
+
/** Disables all automatic retries. */
|
|
39
|
+
export declare const none: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Retry>>;
|
|
40
|
+
/**
|
|
41
|
+
* The default retry policy (core's): transient/throttling/retryable errors,
|
|
42
|
+
* capped exponential backoff with jitter, server `retryAfter` hints honored
|
|
43
|
+
* with precedence.
|
|
44
|
+
*/
|
|
45
|
+
export declare const makeDefault: Factory;
|
|
46
|
+
export declare const jittered: <Error, Env>(self: import("effect/Schedule").Schedule<unknown, unknown, Error, Env>) => import("effect/Schedule").Schedule<unknown, unknown, Error, Env>;
|
|
47
|
+
export declare const capped: (max: import("effect/Duration").Duration) => <Error, Env>(self: import("effect/Schedule").Schedule<unknown, unknown, Error, Env>) => import("effect/Schedule").Schedule<unknown, unknown, Error, Env>;
|
|
48
|
+
/** Retry options that retry all throttling errors indefinitely. */
|
|
49
|
+
export declare const throttlingOptions: Options;
|
|
50
|
+
/** Retries all throttling errors indefinitely (honoring server hints). */
|
|
51
|
+
export declare const throttling: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Retry>>;
|
|
52
|
+
/** Retry options that retry all transient errors indefinitely. */
|
|
53
|
+
export declare const transientOptions: Options;
|
|
54
|
+
/** Retries all transient errors indefinitely (honoring server hints). */
|
|
55
|
+
export declare const transient: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Retry>>;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAEvD,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACtC,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACtC,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;;AAEpC,6EAA6E;AAC7E,qBAAa,KAAM,SAAQ,UAE1B;CAAG;AAEJ,+EAA+E;AAC/E,eAAO,MAAM,MAAM,EAAE;IACnB,CACE,OAAO,EAAE,OAAO,GACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5C,CACE,OAAO,EAAE,OAAO,GACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;CAEU,CAAC;AAEzD,sCAAsC;AACtC,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAEzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,OAA6B,CAAC;AAExD,eAAO,MAAM,QAAQ,0JAAmB,CAAC;AACzC,eAAO,MAAM,MAAM,uMAAiB,CAAC;AAErC,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,EAAE,OAAmC,CAAC;AAEpE,0EAA0E;AAC1E,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAqC,CAAC;AAEhF,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,EAAE,OAAkC,CAAC;AAElE,yEAAyE;AACzE,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAoC,CAAC"}
|
package/dist/retry.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UniFi Network retry surface — a veneer over `@distilled.cloud/core/retry`.
|
|
3
|
+
*
|
|
4
|
+
* The `Retry` service tag is threaded into every generated operation via
|
|
5
|
+
* `API.make({ retry: Retry })`, so a caller-installed policy applies to all
|
|
6
|
+
* UniFi Network calls below it and core's `makeDefault` is the fallback when
|
|
7
|
+
* none is provided.
|
|
8
|
+
*
|
|
9
|
+
* No operation in the spec documents a 429 response (see `src/errors.ts`),
|
|
10
|
+
* so whether a console rate-limits at all — and whether it sends
|
|
11
|
+
* `Retry-After` — is unconfirmed. `TooManyRequests` is wired through core's
|
|
12
|
+
* shared status map regardless (a console-side reverse proxy or the cloud
|
|
13
|
+
* connector could still emit one), and the default policy's capped backoff
|
|
14
|
+
* applies when no server hint is present.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import * as UnifiNetwork from "@distilled.cloud/unifi-network";
|
|
19
|
+
*
|
|
20
|
+
* myEffect.pipe(UnifiNetwork.Retry.transient);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import * as Context from "effect/Context";
|
|
24
|
+
import * as Effect from "effect/Effect";
|
|
25
|
+
import * as Layer from "effect/Layer";
|
|
26
|
+
import * as Retries from "@distilled.cloud/core/retry";
|
|
27
|
+
/** Context tag for configuring retry behavior of UniFi Network API calls. */
|
|
28
|
+
export class Retry extends Context.Service()("UnifiNetworkRetry") {
|
|
29
|
+
}
|
|
30
|
+
/** Provides a custom retry policy to every UniFi Network API call below it. */
|
|
31
|
+
export const policy = (optionsOrFactory) => Effect.provide(Layer.succeed(Retry, optionsOrFactory));
|
|
32
|
+
/** Disables all automatic retries. */
|
|
33
|
+
export const none = Effect.provide(Layer.succeed(Retry, { while: () => false }));
|
|
34
|
+
/**
|
|
35
|
+
* The default retry policy (core's): transient/throttling/retryable errors,
|
|
36
|
+
* capped exponential backoff with jitter, server `retryAfter` hints honored
|
|
37
|
+
* with precedence.
|
|
38
|
+
*/
|
|
39
|
+
export const makeDefault = Retries.makeDefault;
|
|
40
|
+
export const jittered = Retries.jittered;
|
|
41
|
+
export const capped = Retries.capped;
|
|
42
|
+
/** Retry options that retry all throttling errors indefinitely. */
|
|
43
|
+
export const throttlingOptions = Retries.throttlingOptions;
|
|
44
|
+
/** Retries all throttling errors indefinitely (honoring server hints). */
|
|
45
|
+
export const throttling = policy(Retries.throttlingFactory);
|
|
46
|
+
/** Retry options that retry all transient errors indefinitely. */
|
|
47
|
+
export const transientOptions = Retries.transientOptions;
|
|
48
|
+
/** Retries all transient errors indefinitely (honoring server hints). */
|
|
49
|
+
export const transient = policy(Retries.transientFactory);
|
|
50
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAMvD,6EAA6E;AAC7E,MAAM,OAAO,KAAM,SAAQ,OAAO,CAAC,OAAO,EAAiB,CACzD,mBAAmB,CACpB;CAAG;AAEJ,+EAA+E;AAC/E,MAAM,CAAC,MAAM,MAAM,GAWf,CAAC,gBAAmC,EAAE,EAAE,CAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAEzD,sCAAsC;AACtC,MAAM,CAAC,MAAM,IAAI,GAE6B,MAAM,CAAC,OAAO,CAC1D,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAY,OAAO,CAAC,WAAW,CAAC;AAExD,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACzC,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAErC,mEAAmE;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAY,OAAO,CAAC,iBAAiB,CAAC;AAEpE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,UAAU,GAEuB,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEhF,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAY,OAAO,CAAC,gBAAgB,CAAC;AAElE,yEAAyE;AACzE,MAAM,CAAC,MAAM,SAAS,GAEwB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import * as S from "@distilled.cloud/core/schema";
|
|
2
|
+
import * as API from "@distilled.cloud/core/api";
|
|
3
|
+
import { type UnifiNetworkOpError, type UnifiNetworkOpContext } from "../protocol.ts";
|
|
4
|
+
export type { UnifiNetworkOpError, UnifiNetworkOpContext };
|
|
5
|
+
/** ACL rule action */
|
|
6
|
+
export type CreateAclRuleRequestAction = "ALLOW" | "BLOCK";
|
|
7
|
+
export declare const CreateAclRuleRequestAction: any;
|
|
8
|
+
/** List of Switch capable device IDs to which the ACL rule will be provisioned. */
|
|
9
|
+
export type ACLRuleDeviceFilterDeviceIdsList = Array<string>;
|
|
10
|
+
export declare const ACLRuleDeviceFilterDeviceIdsList: S.Schema<ACLRuleDeviceFilterDeviceIdsList>;
|
|
11
|
+
export interface ACLRuleDeviceFilter {
|
|
12
|
+
type: string;
|
|
13
|
+
/** List of Switch capable device IDs to which the ACL rule will be provisioned. */
|
|
14
|
+
deviceIds?: ACLRuleDeviceFilterDeviceIdsList;
|
|
15
|
+
}
|
|
16
|
+
export declare const ACLRuleDeviceFilter: S.Schema<ACLRuleDeviceFilter>;
|
|
17
|
+
export type CreateAclRuleRequestProtocolFilterItem = "TCP" | "UDP";
|
|
18
|
+
export declare const CreateAclRuleRequestProtocolFilterItem: any;
|
|
19
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
20
|
+
export type CreateAclRuleRequestProtocolFilterList = Array<CreateAclRuleRequestProtocolFilterItem | (string & {})>;
|
|
21
|
+
export declare const CreateAclRuleRequestProtocolFilterList: S.Schema<CreateAclRuleRequestProtocolFilterList>;
|
|
22
|
+
export interface CreateAclRuleRequest {
|
|
23
|
+
siteId: string;
|
|
24
|
+
/** ACL rule action */
|
|
25
|
+
action: CreateAclRuleRequestAction | (string & {});
|
|
26
|
+
/** ACL rule description */
|
|
27
|
+
description?: string;
|
|
28
|
+
/** Shape varies by variant — widened by scripts/convert.ts; see README. */
|
|
29
|
+
destinationFilter?: unknown;
|
|
30
|
+
enabled: boolean;
|
|
31
|
+
/** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
|
|
32
|
+
enforcingDeviceFilter?: ACLRuleDeviceFilter;
|
|
33
|
+
/** ACL rule index. This property is deprecated and has no effect. Use the dedicated ACL rule reordering endpoint. */
|
|
34
|
+
index?: number;
|
|
35
|
+
/** ACL rule name */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Shape varies by variant — widened by scripts/convert.ts; see README. */
|
|
38
|
+
sourceFilter?: unknown;
|
|
39
|
+
type: string;
|
|
40
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
41
|
+
protocolFilter?: CreateAclRuleRequestProtocolFilterList;
|
|
42
|
+
/** Network ID to which this ACL rule applies */
|
|
43
|
+
networkIdFilter?: string;
|
|
44
|
+
}
|
|
45
|
+
export declare const CreateAclRuleRequest: S.Schema<CreateAclRuleRequest>;
|
|
46
|
+
/** ACL rule action */
|
|
47
|
+
export type ACLRuleAction = "ALLOW" | "BLOCK";
|
|
48
|
+
export declare const ACLRuleAction: any;
|
|
49
|
+
export type UserDefinedOrDerivedEntityMetadataSource = "SDWAN";
|
|
50
|
+
export declare const UserDefinedOrDerivedEntityMetadataSource: any;
|
|
51
|
+
export interface UserDefinedOrDerivedEntityMetadata {
|
|
52
|
+
origin: string;
|
|
53
|
+
source?: UserDefinedOrDerivedEntityMetadataSource;
|
|
54
|
+
}
|
|
55
|
+
export declare const UserDefinedOrDerivedEntityMetadata: S.Schema<UserDefinedOrDerivedEntityMetadata>;
|
|
56
|
+
export type ACLRuleProtocolFilterItem = "TCP" | "UDP";
|
|
57
|
+
export declare const ACLRuleProtocolFilterItem: any;
|
|
58
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
59
|
+
export type ACLRuleProtocolFilterList = Array<ACLRuleProtocolFilterItem>;
|
|
60
|
+
export declare const ACLRuleProtocolFilterList: S.Schema<ACLRuleProtocolFilterList>;
|
|
61
|
+
export interface ACLRule {
|
|
62
|
+
/** ACL rule action */
|
|
63
|
+
action: ACLRuleAction;
|
|
64
|
+
/** ACL rule description */
|
|
65
|
+
description?: string;
|
|
66
|
+
/** Traffic destination filter */
|
|
67
|
+
destinationFilter?: unknown;
|
|
68
|
+
enabled: boolean;
|
|
69
|
+
/** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
|
|
70
|
+
enforcingDeviceFilter?: ACLRuleDeviceFilter;
|
|
71
|
+
id: string;
|
|
72
|
+
/** ACL rule index. Lower index has higher priority */
|
|
73
|
+
index: number;
|
|
74
|
+
/** Only user-defined rules can be deleted or modified */
|
|
75
|
+
metadata: UserDefinedOrDerivedEntityMetadata;
|
|
76
|
+
/** ACL rule name */
|
|
77
|
+
name: string;
|
|
78
|
+
/** Traffic source filter */
|
|
79
|
+
sourceFilter?: unknown;
|
|
80
|
+
type: string;
|
|
81
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
82
|
+
protocolFilter?: ACLRuleProtocolFilterList;
|
|
83
|
+
/** Network ID to which this ACL rule applies */
|
|
84
|
+
networkIdFilter?: string;
|
|
85
|
+
}
|
|
86
|
+
export declare const ACLRule: S.Schema<ACLRule>;
|
|
87
|
+
export interface DeleteAclRuleRequest {
|
|
88
|
+
siteId: string;
|
|
89
|
+
aclRuleId: string;
|
|
90
|
+
}
|
|
91
|
+
export declare const DeleteAclRuleRequest: S.Schema<DeleteAclRuleRequest>;
|
|
92
|
+
export interface DeleteAclRuleResponse {
|
|
93
|
+
}
|
|
94
|
+
export declare const DeleteAclRuleResponse: S.Schema<DeleteAclRuleResponse>;
|
|
95
|
+
export interface GetAclRuleRequest {
|
|
96
|
+
siteId: string;
|
|
97
|
+
aclRuleId: string;
|
|
98
|
+
}
|
|
99
|
+
export declare const GetAclRuleRequest: S.Schema<GetAclRuleRequest>;
|
|
100
|
+
export interface GetAclRuleOrderingRequest {
|
|
101
|
+
siteId: string;
|
|
102
|
+
}
|
|
103
|
+
export declare const GetAclRuleOrderingRequest: S.Schema<GetAclRuleOrderingRequest>;
|
|
104
|
+
export type ACLRuleOrderingOrderedAclRuleIdsList = Array<string>;
|
|
105
|
+
export declare const ACLRuleOrderingOrderedAclRuleIdsList: S.Schema<ACLRuleOrderingOrderedAclRuleIdsList>;
|
|
106
|
+
export interface ACLRuleOrdering {
|
|
107
|
+
orderedAclRuleIds: ACLRuleOrderingOrderedAclRuleIdsList;
|
|
108
|
+
}
|
|
109
|
+
export declare const ACLRuleOrdering: S.Schema<ACLRuleOrdering>;
|
|
110
|
+
export interface GetAclRulePageRequest {
|
|
111
|
+
siteId: string;
|
|
112
|
+
offset?: number;
|
|
113
|
+
limit?: number;
|
|
114
|
+
filter?: string;
|
|
115
|
+
}
|
|
116
|
+
export declare const GetAclRulePageRequest: S.Schema<GetAclRulePageRequest>;
|
|
117
|
+
/** ACL rule action */
|
|
118
|
+
export type ACLRuleObjectAction = "ALLOW" | "BLOCK";
|
|
119
|
+
export declare const ACLRuleObjectAction: any;
|
|
120
|
+
export type ACLRuleObjectProtocolFilterItem = "TCP" | "UDP";
|
|
121
|
+
export declare const ACLRuleObjectProtocolFilterItem: any;
|
|
122
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
123
|
+
export type ACLRuleObjectProtocolFilterList = Array<ACLRuleObjectProtocolFilterItem>;
|
|
124
|
+
export declare const ACLRuleObjectProtocolFilterList: S.Schema<ACLRuleObjectProtocolFilterList>;
|
|
125
|
+
export interface ACLRuleObject {
|
|
126
|
+
/** ACL rule action */
|
|
127
|
+
action: ACLRuleObjectAction;
|
|
128
|
+
/** ACL rule description */
|
|
129
|
+
description?: string;
|
|
130
|
+
/** Traffic destination filter */
|
|
131
|
+
destinationFilter?: unknown;
|
|
132
|
+
enabled: boolean;
|
|
133
|
+
/** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
|
|
134
|
+
enforcingDeviceFilter?: ACLRuleDeviceFilter;
|
|
135
|
+
id: string;
|
|
136
|
+
/** ACL rule index. Lower index has higher priority */
|
|
137
|
+
index: number;
|
|
138
|
+
/** Only user-defined rules can be deleted or modified */
|
|
139
|
+
metadata: UserDefinedOrDerivedEntityMetadata;
|
|
140
|
+
/** ACL rule name */
|
|
141
|
+
name: string;
|
|
142
|
+
/** Traffic source filter */
|
|
143
|
+
sourceFilter?: unknown;
|
|
144
|
+
type: string;
|
|
145
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
146
|
+
protocolFilter?: ACLRuleObjectProtocolFilterList;
|
|
147
|
+
/** Network ID to which this ACL rule applies */
|
|
148
|
+
networkIdFilter?: string;
|
|
149
|
+
}
|
|
150
|
+
export declare const ACLRuleObject: S.Schema<ACLRuleObject>;
|
|
151
|
+
export type IntegrationAclRulePageDtoDataList = Array<ACLRuleObject>;
|
|
152
|
+
export declare const IntegrationAclRulePageDtoDataList: S.Schema<IntegrationAclRulePageDtoDataList>;
|
|
153
|
+
export interface IntegrationAclRulePageDto {
|
|
154
|
+
count: number;
|
|
155
|
+
data: IntegrationAclRulePageDtoDataList;
|
|
156
|
+
limit: number;
|
|
157
|
+
offset: number;
|
|
158
|
+
totalCount: number;
|
|
159
|
+
}
|
|
160
|
+
export declare const IntegrationAclRulePageDto: S.Schema<IntegrationAclRulePageDto>;
|
|
161
|
+
/** ACL rule action */
|
|
162
|
+
export type UpdateAclRuleRequestAction = "ALLOW" | "BLOCK";
|
|
163
|
+
export declare const UpdateAclRuleRequestAction: any;
|
|
164
|
+
export type UpdateAclRuleRequestProtocolFilterItem = "TCP" | "UDP";
|
|
165
|
+
export declare const UpdateAclRuleRequestProtocolFilterItem: any;
|
|
166
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
167
|
+
export type UpdateAclRuleRequestProtocolFilterList = Array<UpdateAclRuleRequestProtocolFilterItem | (string & {})>;
|
|
168
|
+
export declare const UpdateAclRuleRequestProtocolFilterList: S.Schema<UpdateAclRuleRequestProtocolFilterList>;
|
|
169
|
+
export interface UpdateAclRuleRequest {
|
|
170
|
+
siteId: string;
|
|
171
|
+
aclRuleId: string;
|
|
172
|
+
/** ACL rule action */
|
|
173
|
+
action: UpdateAclRuleRequestAction | (string & {});
|
|
174
|
+
/** ACL rule description */
|
|
175
|
+
description?: string;
|
|
176
|
+
/** Shape varies by variant — widened by scripts/convert.ts; see README. */
|
|
177
|
+
destinationFilter?: unknown;
|
|
178
|
+
enabled: boolean;
|
|
179
|
+
/** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
|
|
180
|
+
enforcingDeviceFilter?: ACLRuleDeviceFilter;
|
|
181
|
+
/** ACL rule index. This property is deprecated and has no effect. Use the dedicated ACL rule reordering endpoint. */
|
|
182
|
+
index?: number;
|
|
183
|
+
/** ACL rule name */
|
|
184
|
+
name: string;
|
|
185
|
+
/** Shape varies by variant — widened by scripts/convert.ts; see README. */
|
|
186
|
+
sourceFilter?: unknown;
|
|
187
|
+
type: string;
|
|
188
|
+
/** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
|
|
189
|
+
protocolFilter?: UpdateAclRuleRequestProtocolFilterList;
|
|
190
|
+
/** Network ID to which this ACL rule applies */
|
|
191
|
+
networkIdFilter?: string;
|
|
192
|
+
}
|
|
193
|
+
export declare const UpdateAclRuleRequest: S.Schema<UpdateAclRuleRequest>;
|
|
194
|
+
export type UpdateAclRuleOrderingRequestOrderedAclRuleIdsList = Array<string>;
|
|
195
|
+
export declare const UpdateAclRuleOrderingRequestOrderedAclRuleIdsList: S.Schema<UpdateAclRuleOrderingRequestOrderedAclRuleIdsList>;
|
|
196
|
+
export interface UpdateAclRuleOrderingRequest {
|
|
197
|
+
siteId: string;
|
|
198
|
+
orderedAclRuleIds: UpdateAclRuleOrderingRequestOrderedAclRuleIdsList;
|
|
199
|
+
}
|
|
200
|
+
export declare const UpdateAclRuleOrderingRequest: S.Schema<UpdateAclRuleOrderingRequest>;
|
|
201
|
+
export type CreateAclRuleError = UnifiNetworkOpError;
|
|
202
|
+
/** Create ACL Rule Create a new user defined ACL rule on a site. */
|
|
203
|
+
export declare const createAclRule: API.OperationMethod<CreateAclRuleRequest, ACLRule, CreateAclRuleError, UnifiNetworkOpContext>;
|
|
204
|
+
export type DeleteAclRuleError = UnifiNetworkOpError;
|
|
205
|
+
/** Delete ACL Rule Delete an existing user defined ACL rule on a site. */
|
|
206
|
+
export declare const deleteAclRule: API.OperationMethod<DeleteAclRuleRequest, DeleteAclRuleResponse, DeleteAclRuleError, UnifiNetworkOpContext>;
|
|
207
|
+
export type GetAclRuleError = UnifiNetworkOpError;
|
|
208
|
+
/** Get ACL Rule */
|
|
209
|
+
export declare const getAclRule: API.OperationMethod<GetAclRuleRequest, ACLRule, GetAclRuleError, UnifiNetworkOpContext>;
|
|
210
|
+
export type GetAclRuleOrderingError = UnifiNetworkOpError;
|
|
211
|
+
/** Get User-Defined ACL Rule Ordering Retrieve user-defined ACL rule ordering on a site. */
|
|
212
|
+
export declare const getAclRuleOrdering: API.OperationMethod<GetAclRuleOrderingRequest, ACLRuleOrdering, GetAclRuleOrderingError, UnifiNetworkOpContext>;
|
|
213
|
+
export type GetAclRulePageError = UnifiNetworkOpError;
|
|
214
|
+
/** List ACL Rules Retrieve a paginated list of all ACL rules on a site. <details> <summary>Filterable properties (click to expand)</summary> </details> */
|
|
215
|
+
export declare const getAclRulePage: API.OperationMethod<GetAclRulePageRequest, IntegrationAclRulePageDto, GetAclRulePageError, UnifiNetworkOpContext>;
|
|
216
|
+
export type UpdateAclRuleError = UnifiNetworkOpError;
|
|
217
|
+
/** Update ACL Rule Update an existing user defined ACL rule on a site. */
|
|
218
|
+
export declare const updateAclRule: API.OperationMethod<UpdateAclRuleRequest, ACLRule, UpdateAclRuleError, UnifiNetworkOpContext>;
|
|
219
|
+
export type UpdateAclRuleOrderingError = UnifiNetworkOpError;
|
|
220
|
+
/** Reorder User-Defined ACL Rules Reorder user-defined ACL rules on a site. */
|
|
221
|
+
export declare const updateAclRuleOrdering: API.OperationMethod<UpdateAclRuleOrderingRequest, ACLRuleOrdering, UpdateAclRuleOrderingError, UnifiNetworkOpContext>;
|
|
222
|
+
//# sourceMappingURL=access_control_acl_rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access_control_acl_rules.d.ts","sourceRoot":"","sources":["../../src/services/access_control_acl_rules.ts"],"names":[],"mappings":"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"}
|