From 56cbea1c5dcb068057ea2d32245eaed8a7100d39 Mon Sep 17 00:00:00 2001 From: Luke Hoersten Date: Sun, 14 Jun 2026 19:19:06 -0500 Subject: scrypted: revert to declare-const for SDK names — diagnostic confirmed they're injected MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The probe in scrypted/diagnostic.ts confirmed @scrypted/core 0.3.147 injects every name we need (ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface, systemManager, deviceManager, mediaManager, endpointManager, log, device, require, exports) as top-level scope variables. Notably sdk.ScryptedDeviceBase IS undefined — the classes are separate injections, not properties on the sdk object. So the correct pattern is `declare const X: any` for each (declarations erase at compile time → free identifiers at runtime → bound to the scryptedEval-injected values), not `const X = sdk.X` (which was undefined and tripped "Class extends value undefined"). --- scrypted/scrypted-viewport.ts | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/scrypted/scrypted-viewport.ts b/scrypted/scrypted-viewport.ts index 0ce81a5..37879af 100644 --- a/scrypted/scrypted-viewport.ts +++ b/scrypted/scrypted-viewport.ts @@ -42,19 +42,16 @@ // declarations erase at compile time and the values come from the // runtime scope. declare const sdk: any; -declare const require: any; - -// Everything the script touches at runtime comes off the `sdk` global — -// older @scrypted/core versions don't inject `ScryptedDeviceBase` etc -// as separate identifiers, only `sdk` itself. Accessing `sdk.X` is the -// stable interface. -const ScryptedDeviceBase = sdk.ScryptedDeviceBase; -const ScryptedDeviceType = sdk.ScryptedDeviceType; -const ScryptedInterface = sdk.ScryptedInterface; -const systemManager = sdk.systemManager; -const endpointManager = sdk.endpointManager; -const mediaManager = sdk.mediaManager; -const deviceManager = sdk.deviceManager; +declare const ScryptedDeviceBase: any; +declare const ScryptedDeviceType: any; +declare const ScryptedInterface: any; +declare const systemManager: any; +declare const endpointManager: any; +declare const mediaManager: any; +declare const deviceManager: any; +declare const log: any; +declare const device: any; +declare const require: any; const dns = require("dns").promises; -- cgit v1.2.3