een-api-toolkit 0.3.81 → 0.3.85
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/.claude/agents/api-coverage-agent.md +264 -0
- package/CHANGELOG.md +36 -55
- package/README.md +24 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +17 -26
- package/dist/index.js.map +1 -1
- package/docs/AI-CONTEXT.md +1 -1
- package/docs/ai-reference/AI-AUTH.md +1 -1
- package/docs/ai-reference/AI-AUTOMATIONS.md +1 -1
- package/docs/ai-reference/AI-DEVICES.md +1 -1
- package/docs/ai-reference/AI-EVENT-DATA-SCHEMAS.md +1 -1
- package/docs/ai-reference/AI-EVENTS.md +1 -1
- package/docs/ai-reference/AI-GROUPING.md +1 -1
- package/docs/ai-reference/AI-JOBS.md +1 -1
- package/docs/ai-reference/AI-MEDIA.md +1 -1
- package/docs/ai-reference/AI-SETUP.md +1 -1
- package/docs/ai-reference/AI-USERS.md +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -6855,7 +6855,7 @@ setSessionId: (newSessionId: string) => void;
|
|
|
6855
6855
|
setBaseUrl: (data: string | {
|
|
6856
6856
|
hostname: string;
|
|
6857
6857
|
port?: number;
|
|
6858
|
-
}) =>
|
|
6858
|
+
}) => boolean;
|
|
6859
6859
|
setUserProfile: (profile: UserProfile) => void;
|
|
6860
6860
|
setupAutoRefresh: () => void;
|
|
6861
6861
|
clearRefreshFailed: () => void;
|
|
@@ -6898,7 +6898,7 @@ setSessionId: (newSessionId: string) => void;
|
|
|
6898
6898
|
setBaseUrl: (data: string | {
|
|
6899
6899
|
hostname: string;
|
|
6900
6900
|
port?: number;
|
|
6901
|
-
}) =>
|
|
6901
|
+
}) => boolean;
|
|
6902
6902
|
setUserProfile: (profile: UserProfile) => void;
|
|
6903
6903
|
setupAutoRefresh: () => void;
|
|
6904
6904
|
clearRefreshFailed: () => void;
|
|
@@ -6941,7 +6941,7 @@ setSessionId: (newSessionId: string) => void;
|
|
|
6941
6941
|
setBaseUrl: (data: string | {
|
|
6942
6942
|
hostname: string;
|
|
6943
6943
|
port?: number;
|
|
6944
|
-
}) =>
|
|
6944
|
+
}) => boolean;
|
|
6945
6945
|
setUserProfile: (profile: UserProfile) => void;
|
|
6946
6946
|
setupAutoRefresh: () => void;
|
|
6947
6947
|
clearRefreshFailed: () => void;
|
package/dist/index.js
CHANGED
|
@@ -134,20 +134,11 @@ const f = Ae("een-auth", () => {
|
|
|
134
134
|
const E = new URL(l.startsWith("http") ? l : `https://${l}`);
|
|
135
135
|
R = E.hostname, p = E.port ? parseInt(E.port, 10) : 443;
|
|
136
136
|
} catch (E) {
|
|
137
|
-
console.warn(`[EEN API Toolkit] Rejected invalid URL: ${l}`), s("Failed to parse URL:", E instanceof Error ? E.message : String(E));
|
|
138
|
-
return;
|
|
137
|
+
return console.warn(`[EEN API Toolkit] Rejected invalid URL: ${l}`), s("Failed to parse URL:", E instanceof Error ? E.message : String(E)), !1;
|
|
139
138
|
}
|
|
140
139
|
else
|
|
141
140
|
R = l.hostname.toLowerCase().trim(), p = l.port ?? 443;
|
|
142
|
-
|
|
143
|
-
console.warn(`[EEN API Toolkit] Rejected invalid port: ${p}`);
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
if (!P(R)) {
|
|
147
|
-
console.warn(`[EEN API Toolkit] Rejected hostname - not an allowed EEN domain: ${R}`);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
a.value = R, o.value = p, k(), s("Base URL set:", b.value);
|
|
141
|
+
return typeof p != "number" || !Number.isInteger(p) || p < 1 || p > 65535 ? (console.warn(`[EEN API Toolkit] Rejected invalid port: ${p}`), !1) : P(R) ? (a.value = R, o.value = p, k(), s("Base URL set:", b.value), !0) : (console.warn(`[EEN API Toolkit] Rejected hostname - not an allowed EEN domain: ${R}`), !1);
|
|
151
142
|
}
|
|
152
143
|
function I(l) {
|
|
153
144
|
c.value = l, k();
|
|
@@ -361,7 +352,7 @@ async function we(e, n) {
|
|
|
361
352
|
if (i.error)
|
|
362
353
|
return i;
|
|
363
354
|
const a = f(), o = i.data;
|
|
364
|
-
return a.setToken(o.accessToken, o.expiresIn), a.setRefreshTokenMarker("present"), a.setSessionId(o.sessionId),
|
|
355
|
+
return a.setBaseUrl(o.httpsBaseUrl) ? (a.setToken(o.accessToken, o.expiresIn), a.setRefreshTokenMarker("present"), a.setSessionId(o.sessionId), s("Auth callback complete, user:", o.userEmail), d(o)) : r("AUTH_FAILED", "OAuth response contained an invalid or disallowed hostname");
|
|
365
356
|
}
|
|
366
357
|
function je(e, n) {
|
|
367
358
|
if (e.length !== n.length)
|
|
@@ -870,7 +861,7 @@ async function ct(e) {
|
|
|
870
861
|
signal: a.signal
|
|
871
862
|
});
|
|
872
863
|
if (!c.ok)
|
|
873
|
-
return
|
|
864
|
+
return H(c);
|
|
874
865
|
const u = await c.json();
|
|
875
866
|
return s("Media intervals fetched:", u.results?.length ?? 0, "intervals"), d(u);
|
|
876
867
|
} catch (c) {
|
|
@@ -902,7 +893,7 @@ async function st(e) {
|
|
|
902
893
|
signal: o.signal
|
|
903
894
|
}), h = u.headers.get("X-Een-Timestamp"), _ = u.headers.get("X-Een-PrevToken");
|
|
904
895
|
if (!u.ok)
|
|
905
|
-
return
|
|
896
|
+
return H(u);
|
|
906
897
|
const v = await u.arrayBuffer(), O = `data:image/jpeg;base64,${de(v)}`;
|
|
907
898
|
return s("Live image fetched, timestamp:", h), d({
|
|
908
899
|
imageData: O,
|
|
@@ -942,7 +933,7 @@ async function ut(e) {
|
|
|
942
933
|
signal: a.signal
|
|
943
934
|
}), u = c.headers.get("X-Een-Timestamp"), h = c.headers.get("X-Een-NextToken"), _ = c.headers.get("X-Een-PrevToken"), v = c.headers.get("X-Een-OverlaySvg");
|
|
944
935
|
if (!c.ok)
|
|
945
|
-
return
|
|
936
|
+
return H(c);
|
|
946
937
|
const g = await c.arrayBuffer(), b = `data:image/jpeg;base64,${de(g)}`;
|
|
947
938
|
return s("Recorded image fetched, timestamp:", u), d({
|
|
948
939
|
imageData: b,
|
|
@@ -957,7 +948,7 @@ async function ut(e) {
|
|
|
957
948
|
clearTimeout(o);
|
|
958
949
|
}
|
|
959
950
|
}
|
|
960
|
-
async function
|
|
951
|
+
async function H(e) {
|
|
961
952
|
const n = e.status;
|
|
962
953
|
let t;
|
|
963
954
|
try {
|
|
@@ -1000,7 +991,7 @@ async function Ne() {
|
|
|
1000
991
|
signal: t.signal
|
|
1001
992
|
});
|
|
1002
993
|
if (!a.ok)
|
|
1003
|
-
return
|
|
994
|
+
return H(a);
|
|
1004
995
|
const o = await a.json();
|
|
1005
996
|
return s("Media session URL received:", o.url), d(o);
|
|
1006
997
|
} catch (a) {
|
|
@@ -1140,7 +1131,7 @@ async function ft(e) {
|
|
|
1140
1131
|
}
|
|
1141
1132
|
});
|
|
1142
1133
|
if (!o.ok)
|
|
1143
|
-
return
|
|
1134
|
+
return C(o);
|
|
1144
1135
|
const c = await o.json();
|
|
1145
1136
|
return s("Events fetched:", c.results?.length ?? 0, "events"), d(c);
|
|
1146
1137
|
} catch (o) {
|
|
@@ -1168,7 +1159,7 @@ async function gt(e, n) {
|
|
|
1168
1159
|
}
|
|
1169
1160
|
});
|
|
1170
1161
|
if (!c.ok)
|
|
1171
|
-
return
|
|
1162
|
+
return C(c);
|
|
1172
1163
|
const u = await c.json();
|
|
1173
1164
|
return s("Event fetched:", u.id), d(u);
|
|
1174
1165
|
} catch (c) {
|
|
@@ -1194,7 +1185,7 @@ async function ht(e) {
|
|
|
1194
1185
|
}
|
|
1195
1186
|
});
|
|
1196
1187
|
if (!o.ok)
|
|
1197
|
-
return
|
|
1188
|
+
return C(o);
|
|
1198
1189
|
const c = await o.json();
|
|
1199
1190
|
return s("Event types fetched:", c.results?.length ?? 0, "types"), d(c);
|
|
1200
1191
|
} catch (o) {
|
|
@@ -1222,14 +1213,14 @@ async function _t(e) {
|
|
|
1222
1213
|
}
|
|
1223
1214
|
});
|
|
1224
1215
|
if (!o.ok)
|
|
1225
|
-
return
|
|
1216
|
+
return C(o);
|
|
1226
1217
|
const c = await o.json();
|
|
1227
1218
|
return s("Event field values fetched:", c.type?.length ?? 0, "types"), d(c);
|
|
1228
1219
|
} catch (o) {
|
|
1229
1220
|
return r("NETWORK_ERROR", `Failed to fetch event field values: ${String(o)}`);
|
|
1230
1221
|
}
|
|
1231
1222
|
}
|
|
1232
|
-
async function
|
|
1223
|
+
async function C(e) {
|
|
1233
1224
|
const n = e.status;
|
|
1234
1225
|
let t;
|
|
1235
1226
|
try {
|
|
@@ -2270,7 +2261,7 @@ async function Pt(e) {
|
|
|
2270
2261
|
return r("NETWORK_ERROR", `Failed to fetch alert actions: ${String(o)}`);
|
|
2271
2262
|
}
|
|
2272
2263
|
}
|
|
2273
|
-
async function
|
|
2264
|
+
async function Ht(e) {
|
|
2274
2265
|
const n = f();
|
|
2275
2266
|
if (!n.isAuthenticated)
|
|
2276
2267
|
return r("AUTH_REQUIRED", "Authentication required");
|
|
@@ -2318,7 +2309,7 @@ async function y(e) {
|
|
|
2318
2309
|
return r("API_ERROR", `API error: ${t}`, n);
|
|
2319
2310
|
}
|
|
2320
2311
|
}
|
|
2321
|
-
async function
|
|
2312
|
+
async function Ct(e) {
|
|
2322
2313
|
const n = f();
|
|
2323
2314
|
if (!n.isAuthenticated)
|
|
2324
2315
|
return r("AUTH_REQUIRED", "Authentication required");
|
|
@@ -2775,7 +2766,7 @@ export {
|
|
|
2775
2766
|
Mt as addFile,
|
|
2776
2767
|
kt as connectToEventSubscription,
|
|
2777
2768
|
mt as createEventSubscription,
|
|
2778
|
-
|
|
2769
|
+
Ct as createExportJob,
|
|
2779
2770
|
it as createLayout,
|
|
2780
2771
|
$t as deleteEventSubscription,
|
|
2781
2772
|
Gt as deleteFile,
|
|
@@ -2788,7 +2779,7 @@ export {
|
|
|
2788
2779
|
T as formatTimestamp,
|
|
2789
2780
|
ue as getAccessToken,
|
|
2790
2781
|
Ut as getAlert,
|
|
2791
|
-
|
|
2782
|
+
Ht as getAlertAction,
|
|
2792
2783
|
Bt as getAlertActionRule,
|
|
2793
2784
|
Nt as getAlertConditionRule,
|
|
2794
2785
|
vt as getAllDataSchemas,
|