@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,305 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate.ts from .generated-specs (specs/spec-mirror-unifi-network/specs/openapi.json). Do not edit.
|
|
2
|
+
import * as S from "@distilled.cloud/core/schema";
|
|
3
|
+
import * as API from "@distilled.cloud/core/api";
|
|
4
|
+
import * as T from "../traits.ts";
|
|
5
|
+
import {
|
|
6
|
+
UnifiNetworkProtocol,
|
|
7
|
+
type UnifiNetworkOpError,
|
|
8
|
+
type UnifiNetworkOpContext,
|
|
9
|
+
} from "../protocol.ts";
|
|
10
|
+
import { UnknownUnifiNetworkError } from "../errors.ts";
|
|
11
|
+
import * as Retry from "../retry.ts";
|
|
12
|
+
|
|
13
|
+
export type { UnifiNetworkOpError, UnifiNetworkOpContext };
|
|
14
|
+
|
|
15
|
+
export interface CreateVouchersRequest {
|
|
16
|
+
siteId: string;
|
|
17
|
+
/** (Optional) limit for how many different guests can use the same voucher to authorize network access */
|
|
18
|
+
authorizedGuestLimit?: number;
|
|
19
|
+
/** Number of vouchers to generate */
|
|
20
|
+
count?: number;
|
|
21
|
+
/** (Optional) data usage limit in megabytes */
|
|
22
|
+
dataUsageLimitMBytes?: number;
|
|
23
|
+
/** Voucher note, duplicated across all generated vouchers */
|
|
24
|
+
name: string;
|
|
25
|
+
/** (Optional) download rate limit in kilobits per second */
|
|
26
|
+
rxRateLimitKbps?: number;
|
|
27
|
+
/** How long (in minutes) the voucher will provide access to the network since authorization of the first guest. Subsequently connected guests, if allowed, will share the same expiration time. */
|
|
28
|
+
timeLimitMinutes: number;
|
|
29
|
+
/** (Optional) upload rate limit in kilobits per second */
|
|
30
|
+
txRateLimitKbps?: number;
|
|
31
|
+
}
|
|
32
|
+
export const CreateVouchersRequest = /*@__PURE__*/ S.suspend(() =>
|
|
33
|
+
S.Struct({
|
|
34
|
+
siteId: S.String.pipe(T.Label()),
|
|
35
|
+
authorizedGuestLimit: S.optional(S.Number),
|
|
36
|
+
count: S.optional(S.Number),
|
|
37
|
+
dataUsageLimitMBytes: S.optional(S.Number),
|
|
38
|
+
name: S.String,
|
|
39
|
+
rxRateLimitKbps: S.optional(S.Number),
|
|
40
|
+
timeLimitMinutes: S.Number,
|
|
41
|
+
txRateLimitKbps: S.optional(S.Number),
|
|
42
|
+
}).pipe(
|
|
43
|
+
T.Http({
|
|
44
|
+
method: "POST",
|
|
45
|
+
uri: "/v1/sites/{siteId}/hotspot/vouchers",
|
|
46
|
+
code: 200,
|
|
47
|
+
}),
|
|
48
|
+
),
|
|
49
|
+
).annotate({
|
|
50
|
+
identifier: "CreateVouchersRequest",
|
|
51
|
+
}) as any as S.Schema<CreateVouchersRequest>;
|
|
52
|
+
|
|
53
|
+
export interface HotspotVoucherDetails {
|
|
54
|
+
/** (Optional) timestamp when the voucher has been activated (authorization time of the first guest) */
|
|
55
|
+
activatedAt?: string;
|
|
56
|
+
/** For how many guests the voucher has been used to authorize network access */
|
|
57
|
+
authorizedGuestCount: number;
|
|
58
|
+
/** (Optional) limit for how many different guests can use the same voucher to authorize network access */
|
|
59
|
+
authorizedGuestLimit?: number;
|
|
60
|
+
/** Secret code to active the voucher using the Hotspot portal */
|
|
61
|
+
code: string;
|
|
62
|
+
createdAt: string;
|
|
63
|
+
/** (Optional) data usage limit in megabytes */
|
|
64
|
+
dataUsageLimitMBytes?: number;
|
|
65
|
+
/** Whether the voucher has been expired and can no longer be used to authorize network access */
|
|
66
|
+
expired: boolean;
|
|
67
|
+
/** (Optional) timestamp when the voucher will become expired. All guests using the voucher will be unauthorized from network access */
|
|
68
|
+
expiresAt?: string;
|
|
69
|
+
id: string;
|
|
70
|
+
/** Voucher note, may contain duplicate values across multiple vouchers */
|
|
71
|
+
name: string;
|
|
72
|
+
/** (Optional) download rate limit in kilobits per second */
|
|
73
|
+
rxRateLimitKbps?: number;
|
|
74
|
+
/** How long (in minutes) the voucher will provide access to the network since authorization of the first guest. Subsequently connected guests, if allowed, will share the same expiration time. */
|
|
75
|
+
timeLimitMinutes: number;
|
|
76
|
+
/** (Optional) upload rate limit in kilobits per second */
|
|
77
|
+
txRateLimitKbps?: number;
|
|
78
|
+
}
|
|
79
|
+
export const HotspotVoucherDetails = /*@__PURE__*/ S.suspend(() =>
|
|
80
|
+
S.Struct({
|
|
81
|
+
activatedAt: S.optional(S.String),
|
|
82
|
+
authorizedGuestCount: S.Number,
|
|
83
|
+
authorizedGuestLimit: S.optional(S.Number),
|
|
84
|
+
code: S.String,
|
|
85
|
+
createdAt: S.String,
|
|
86
|
+
dataUsageLimitMBytes: S.optional(S.Number),
|
|
87
|
+
expired: S.Boolean,
|
|
88
|
+
expiresAt: S.optional(S.String),
|
|
89
|
+
id: S.String,
|
|
90
|
+
name: S.String,
|
|
91
|
+
rxRateLimitKbps: S.optional(S.Number),
|
|
92
|
+
timeLimitMinutes: S.Number,
|
|
93
|
+
txRateLimitKbps: S.optional(S.Number),
|
|
94
|
+
}),
|
|
95
|
+
).annotate({
|
|
96
|
+
identifier: "HotspotVoucherDetails",
|
|
97
|
+
}) as any as S.Schema<HotspotVoucherDetails>;
|
|
98
|
+
|
|
99
|
+
export type IntegrationVoucherCreationResultDtoVouchersList =
|
|
100
|
+
Array<HotspotVoucherDetails>;
|
|
101
|
+
export const IntegrationVoucherCreationResultDtoVouchersList =
|
|
102
|
+
/*@__PURE__*/ S.Array(
|
|
103
|
+
HotspotVoucherDetails,
|
|
104
|
+
) as any as S.Schema<IntegrationVoucherCreationResultDtoVouchersList>;
|
|
105
|
+
|
|
106
|
+
export interface IntegrationVoucherCreationResultDto {
|
|
107
|
+
vouchers?: IntegrationVoucherCreationResultDtoVouchersList;
|
|
108
|
+
}
|
|
109
|
+
export const IntegrationVoucherCreationResultDto = /*@__PURE__*/ S.suspend(() =>
|
|
110
|
+
S.Struct({
|
|
111
|
+
vouchers: S.optional(IntegrationVoucherCreationResultDtoVouchersList),
|
|
112
|
+
}),
|
|
113
|
+
).annotate({
|
|
114
|
+
identifier: "IntegrationVoucherCreationResultDto",
|
|
115
|
+
}) as any as S.Schema<IntegrationVoucherCreationResultDto>;
|
|
116
|
+
|
|
117
|
+
export interface DeleteVoucherRequest {
|
|
118
|
+
siteId: string;
|
|
119
|
+
voucherId: string;
|
|
120
|
+
}
|
|
121
|
+
export const DeleteVoucherRequest = /*@__PURE__*/ S.suspend(() =>
|
|
122
|
+
S.Struct({
|
|
123
|
+
siteId: S.String.pipe(T.Label()),
|
|
124
|
+
voucherId: S.String.pipe(T.Label()),
|
|
125
|
+
}).pipe(
|
|
126
|
+
T.Http({
|
|
127
|
+
method: "DELETE",
|
|
128
|
+
uri: "/v1/sites/{siteId}/hotspot/vouchers/{voucherId}",
|
|
129
|
+
code: 200,
|
|
130
|
+
}),
|
|
131
|
+
),
|
|
132
|
+
).annotate({
|
|
133
|
+
identifier: "DeleteVoucherRequest",
|
|
134
|
+
}) as any as S.Schema<DeleteVoucherRequest>;
|
|
135
|
+
|
|
136
|
+
export interface VoucherDeletionResults {
|
|
137
|
+
vouchersDeleted?: number;
|
|
138
|
+
}
|
|
139
|
+
export const VoucherDeletionResults = /*@__PURE__*/ S.suspend(() =>
|
|
140
|
+
S.Struct({
|
|
141
|
+
vouchersDeleted: S.optional(S.Number),
|
|
142
|
+
}),
|
|
143
|
+
).annotate({
|
|
144
|
+
identifier: "VoucherDeletionResults",
|
|
145
|
+
}) as any as S.Schema<VoucherDeletionResults>;
|
|
146
|
+
|
|
147
|
+
export interface DeleteVouchersRequest {
|
|
148
|
+
siteId: string;
|
|
149
|
+
filter: string;
|
|
150
|
+
}
|
|
151
|
+
export const DeleteVouchersRequest = /*@__PURE__*/ S.suspend(() =>
|
|
152
|
+
S.Struct({
|
|
153
|
+
siteId: S.String.pipe(T.Label()),
|
|
154
|
+
filter: S.String.pipe(T.Query()),
|
|
155
|
+
}).pipe(
|
|
156
|
+
T.Http({
|
|
157
|
+
method: "DELETE",
|
|
158
|
+
uri: "/v1/sites/{siteId}/hotspot/vouchers",
|
|
159
|
+
code: 200,
|
|
160
|
+
}),
|
|
161
|
+
),
|
|
162
|
+
).annotate({
|
|
163
|
+
identifier: "DeleteVouchersRequest",
|
|
164
|
+
}) as any as S.Schema<DeleteVouchersRequest>;
|
|
165
|
+
|
|
166
|
+
export interface GetVoucherRequest {
|
|
167
|
+
siteId: string;
|
|
168
|
+
voucherId: string;
|
|
169
|
+
}
|
|
170
|
+
export const GetVoucherRequest = /*@__PURE__*/ S.suspend(() =>
|
|
171
|
+
S.Struct({
|
|
172
|
+
siteId: S.String.pipe(T.Label()),
|
|
173
|
+
voucherId: S.String.pipe(T.Label()),
|
|
174
|
+
}).pipe(
|
|
175
|
+
T.Http({
|
|
176
|
+
method: "GET",
|
|
177
|
+
uri: "/v1/sites/{siteId}/hotspot/vouchers/{voucherId}",
|
|
178
|
+
code: 200,
|
|
179
|
+
}),
|
|
180
|
+
),
|
|
181
|
+
).annotate({
|
|
182
|
+
identifier: "GetVoucherRequest",
|
|
183
|
+
}) as any as S.Schema<GetVoucherRequest>;
|
|
184
|
+
|
|
185
|
+
export interface GetVouchersRequest {
|
|
186
|
+
siteId: string;
|
|
187
|
+
offset?: number;
|
|
188
|
+
limit?: number;
|
|
189
|
+
filter?: string;
|
|
190
|
+
}
|
|
191
|
+
export const GetVouchersRequest = /*@__PURE__*/ S.suspend(() =>
|
|
192
|
+
S.Struct({
|
|
193
|
+
siteId: S.String.pipe(T.Label()),
|
|
194
|
+
offset: S.optional(S.Number.pipe(T.Query())),
|
|
195
|
+
limit: S.optional(S.Number.pipe(T.Query())),
|
|
196
|
+
filter: S.optional(S.String.pipe(T.Query())),
|
|
197
|
+
}).pipe(
|
|
198
|
+
T.Http({
|
|
199
|
+
method: "GET",
|
|
200
|
+
uri: "/v1/sites/{siteId}/hotspot/vouchers",
|
|
201
|
+
code: 200,
|
|
202
|
+
}),
|
|
203
|
+
),
|
|
204
|
+
).annotate({
|
|
205
|
+
identifier: "GetVouchersRequest",
|
|
206
|
+
}) as any as S.Schema<GetVouchersRequest>;
|
|
207
|
+
|
|
208
|
+
export type HotspotVoucherDetailPageDataList = Array<HotspotVoucherDetails>;
|
|
209
|
+
export const HotspotVoucherDetailPageDataList = /*@__PURE__*/ S.Array(
|
|
210
|
+
HotspotVoucherDetails,
|
|
211
|
+
) as any as S.Schema<HotspotVoucherDetailPageDataList>;
|
|
212
|
+
|
|
213
|
+
export interface HotspotVoucherDetailPage {
|
|
214
|
+
count: number;
|
|
215
|
+
data: HotspotVoucherDetailPageDataList;
|
|
216
|
+
limit: number;
|
|
217
|
+
offset: number;
|
|
218
|
+
totalCount: number;
|
|
219
|
+
}
|
|
220
|
+
export const HotspotVoucherDetailPage = /*@__PURE__*/ S.suspend(() =>
|
|
221
|
+
S.Struct({
|
|
222
|
+
count: S.Number,
|
|
223
|
+
data: HotspotVoucherDetailPageDataList,
|
|
224
|
+
limit: S.Number,
|
|
225
|
+
offset: S.Number,
|
|
226
|
+
totalCount: S.Number,
|
|
227
|
+
}),
|
|
228
|
+
).annotate({
|
|
229
|
+
identifier: "HotspotVoucherDetailPage",
|
|
230
|
+
}) as any as S.Schema<HotspotVoucherDetailPage>;
|
|
231
|
+
|
|
232
|
+
export type CreateVouchersError = UnifiNetworkOpError;
|
|
233
|
+
/** Generate Vouchers Create one or more Hotspot vouchers. */
|
|
234
|
+
export const createVouchers: API.OperationMethod<
|
|
235
|
+
CreateVouchersRequest,
|
|
236
|
+
IntegrationVoucherCreationResultDto,
|
|
237
|
+
CreateVouchersError,
|
|
238
|
+
UnifiNetworkOpContext
|
|
239
|
+
> = /*@__PURE__*/ API.make(() => ({
|
|
240
|
+
input: CreateVouchersRequest,
|
|
241
|
+
output: IntegrationVoucherCreationResultDto,
|
|
242
|
+
errors: [UnknownUnifiNetworkError],
|
|
243
|
+
protocol: UnifiNetworkProtocol,
|
|
244
|
+
retry: Retry.Retry,
|
|
245
|
+
}));
|
|
246
|
+
|
|
247
|
+
export type DeleteVoucherError = UnifiNetworkOpError;
|
|
248
|
+
/** Delete Voucher Remove a specific Hotspot voucher. */
|
|
249
|
+
export const deleteVoucher: API.OperationMethod<
|
|
250
|
+
DeleteVoucherRequest,
|
|
251
|
+
VoucherDeletionResults,
|
|
252
|
+
DeleteVoucherError,
|
|
253
|
+
UnifiNetworkOpContext
|
|
254
|
+
> = /*@__PURE__*/ API.make(() => ({
|
|
255
|
+
input: DeleteVoucherRequest,
|
|
256
|
+
output: VoucherDeletionResults,
|
|
257
|
+
errors: [UnknownUnifiNetworkError],
|
|
258
|
+
protocol: UnifiNetworkProtocol,
|
|
259
|
+
retry: Retry.Retry,
|
|
260
|
+
}));
|
|
261
|
+
|
|
262
|
+
export type DeleteVouchersError = UnifiNetworkOpError;
|
|
263
|
+
/** Delete Vouchers Remove Hotspot vouchers based on the specified filter criteria. <details> <summary>Filterable properties (click to expand)</summary> </details> */
|
|
264
|
+
export const deleteVouchers: API.OperationMethod<
|
|
265
|
+
DeleteVouchersRequest,
|
|
266
|
+
VoucherDeletionResults,
|
|
267
|
+
DeleteVouchersError,
|
|
268
|
+
UnifiNetworkOpContext
|
|
269
|
+
> = /*@__PURE__*/ API.make(() => ({
|
|
270
|
+
input: DeleteVouchersRequest,
|
|
271
|
+
output: VoucherDeletionResults,
|
|
272
|
+
errors: [UnknownUnifiNetworkError],
|
|
273
|
+
protocol: UnifiNetworkProtocol,
|
|
274
|
+
retry: Retry.Retry,
|
|
275
|
+
}));
|
|
276
|
+
|
|
277
|
+
export type GetVoucherError = UnifiNetworkOpError;
|
|
278
|
+
/** Get Voucher Details Retrieve details of a specific Hotspot voucher. */
|
|
279
|
+
export const getVoucher: API.OperationMethod<
|
|
280
|
+
GetVoucherRequest,
|
|
281
|
+
HotspotVoucherDetails,
|
|
282
|
+
GetVoucherError,
|
|
283
|
+
UnifiNetworkOpContext
|
|
284
|
+
> = /*@__PURE__*/ API.make(() => ({
|
|
285
|
+
input: GetVoucherRequest,
|
|
286
|
+
output: HotspotVoucherDetails,
|
|
287
|
+
errors: [UnknownUnifiNetworkError],
|
|
288
|
+
protocol: UnifiNetworkProtocol,
|
|
289
|
+
retry: Retry.Retry,
|
|
290
|
+
}));
|
|
291
|
+
|
|
292
|
+
export type GetVouchersError = UnifiNetworkOpError;
|
|
293
|
+
/** List Vouchers Retrieve a paginated list of Hotspot vouchers. <details> <summary>Filterable properties (click to expand)</summary> </details> */
|
|
294
|
+
export const getVouchers: API.OperationMethod<
|
|
295
|
+
GetVouchersRequest,
|
|
296
|
+
HotspotVoucherDetailPage,
|
|
297
|
+
GetVouchersError,
|
|
298
|
+
UnifiNetworkOpContext
|
|
299
|
+
> = /*@__PURE__*/ API.make(() => ({
|
|
300
|
+
input: GetVouchersRequest,
|
|
301
|
+
output: HotspotVoucherDetailPage,
|
|
302
|
+
errors: [UnknownUnifiNetworkError],
|
|
303
|
+
protocol: UnifiNetworkProtocol,
|
|
304
|
+
retry: Retry.Retry,
|
|
305
|
+
}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate.ts. Do not edit.
|
|
2
|
+
export * as accessControlAclRules from "./access_control_acl_rules.ts";
|
|
3
|
+
export * as applicationInfo from "./application_info.ts";
|
|
4
|
+
export * as clients from "./clients.ts";
|
|
5
|
+
export * as dnsPolicies from "./dns_policies.ts";
|
|
6
|
+
export * as firewall from "./firewall.ts";
|
|
7
|
+
export * as hotspot from "./hotspot.ts";
|
|
8
|
+
export * as networks from "./networks.ts";
|
|
9
|
+
export * as sites from "./sites.ts";
|
|
10
|
+
export * as supportingResources from "./supporting_resources.ts";
|
|
11
|
+
export * as switching from "./switching.ts";
|
|
12
|
+
export * as trafficMatchingLists from "./traffic_matching_lists.ts";
|
|
13
|
+
export * as unifiDevices from "./unifi_devices.ts";
|
|
14
|
+
export * as wifiBroadcasts from "./wifi_broadcasts.ts";
|