Commit Graph

8479 Commits

Author SHA1 Message Date
Koushik Dutta
61d9345bf6 cluster: add type assertions for strictNullChecks compliance
Fix strictNullChecks in cluster modules:
- cluster-labels.ts: add assertions for label and weight access
- cluster.ts: keep getClusterWorkerId returning string (API contract)
- scrypted-cluster-main.ts: add assertions for socket properties,
  consolidate remoteAddress assertion, fix cluster worker lookups
- cluster-fork.ts: add assertions for worker and options properties,
  fix findPluginDevice call with assertion
2026-04-02 14:50:26 -07:00
Koushik Dutta
d0deb04588 runtime: add type assertions for strictNullChecks compliance
Fix strictNullChecks in runtime.ts and scrypted-server-main.ts:
- Change findPluginDevice return type to PluginDevice | undefined
- Add type assertions at call sites that expect valid results
- Consolidate assertions at variable declarations
- Use undefined! instead of undefined as any
- Use throw e instead of throw new Error(e as string)
- Add catch block type annotations (e: any)
- Fix socket property and plugin device lookups with assertions
2026-04-02 14:48:39 -07:00
Koushik Dutta
d69c949ec7 services: add type assertions for strictNullChecks compliance
Fix strictNullChecks in services:
- plugin.ts: assert findPluginDeviceById results at assignment point,
  clean up scattered assertions throughout methods
- users.ts: make aclId parameter optional in addUserToDatabase/addUserInternal
2026-04-02 14:19:26 -07:00
Koushik Dutta
519eb36368 utils: add type assertions for strictNullChecks compliance
Fix strictNullChecks in utility modules:
- rpc.ts: make onProxySerialization optional (used with ?.), add definite assignment for killedDeferred
- state.ts: cast catch block error to Error
- level.ts: add definite assignment for curId
- threading.ts: cast catch block errors to Error
- http-interfaces.ts: cast catch block error to Error
- plugin-http.ts: cast catch block errors to Error, fix abstract method return type
- usertoken.ts: make aclId optional in UserToken constructor
2026-04-02 14:15:28 -07:00
Koushik Dutta
6ece12e3cc sdk: change return type of getNativeIds 2026-04-02 13:34:39 -07:00
Koushik Dutta
896445ec80 strictNullChecks: fix plugin remote handlers
- Make PluginRemote.loadZip options parameter optional to match implementations
- Add undefined to _protocols type in WebSocket class
- Add non-null assertions for device lookup in REPL server
2026-04-02 13:33:12 -07:00
Koushik Dutta
85a30d7b87 strictNullChecks: fix plugin types
- Add non-null assertion for eventInterface in acl.ts
- Add non-null assertion for SCRYPTED_CLUSTER_ADDRESS env var
- Use .flat() instead of [].concat() for type safety
- Add non-null assertion for ScryptedDevice descriptor access
- Use options! and null! assertions for mediaObject properties
2026-04-02 13:33:12 -07:00
Koushik Dutta
f620c80589 strictNullChecks: fix plugin runtime workers
- Add non-null assertions for worker and stdio access
- Add non-null assertions for kill() undefined assignments
2026-04-02 13:33:12 -07:00
Koushik Dutta
5f040f5ff4 strictNullChecks: fix core utilities
- Change Express sendFile root from null to undefined
- Add undefined to RefreshPromise.promise type
- Add undefined to debouncer current promise type
2026-04-02 13:33:12 -07:00
Koushik Dutta
5bfb3e5675 strictNullChecks: fix services and notifyInterfaceEvent type
- Change notifyInterfaceEvent parameter to PluginDevice | undefined
- Pass undefined instead of null at call sites
- Add non-null assertion for webhookUpdateAuthorization
2026-04-02 13:33:12 -07:00
Koushik Dutta
056be96e4f strictNullChecks: fix cluster modules
- Initialize foundAny variable before use
- Add fallback for undefined env var in parseFloat
- Add non-null assertions for Map lookups and array indices
- Fix ClusterObject type annotation for undefined case
- Add non-null assertions for env vars and socket properties
2026-04-02 13:33:12 -07:00
Koushik Dutta
ca7efc1f04 fix: type annotations for event and state management
- Add type assertions for event callbacks and timestamps
- Use non-null assertions for guaranteed object references
- Update notify signature to accept number | undefined for eventTime
- Preserve crash behavior for logger and refresh throttle access
2026-04-02 13:33:12 -07:00
Koushik Dutta
9c1d2b78c8 fix: type annotations for plugin API layer
- setStorage interface uses ScryptedNativeId to match implementation
- getDeviceById returns Promise<ScryptedDevice | undefined>
- Add non-null assertions where objects are guaranteed to exist
- Add explicit error throws for null checks with descriptive messages
2026-04-02 13:33:12 -07:00
Koushik Dutta
2763f4af2c fix: make pid optional in RuntimeWorker interface
pid may be undefined if worker hasn't started yet.
Update implementations to return number | undefined.
2026-04-02 13:33:12 -07:00
Koushik Dutta
621c5537d4 fix: use ScryptedNativeId type for plugin device maps
Use ScryptedNativeId (string | undefined) as Map key type instead of string,
matching the actual usage pattern where nativeId can be undefined.
2026-04-02 13:33:12 -07:00
Koushik Dutta
2187982b07 fix: add type annotations for plugin HTTP handling
- Add ?? false for isUpgradeRequest return type
- Add non-null assertion for socket access
- Add early validation for empty endpoint
2026-04-02 13:33:12 -07:00
Koushik Dutta
5dde5ae893 fix: add type annotations for network address functions
- Add parseInt with empty string fallback for undefined env vars
- getIpAddress returns string | undefined when no addresses available
- Add type guard filters for network interface arrays
2026-04-02 13:33:12 -07:00
Koushik Dutta
cfa9e2a200 fix: make LevelDocument._id and _documentType required
These properties are always present after document creation.
Update PluginDevice constructor to require id parameter.
2026-04-02 13:33:12 -07:00
Koushik Dutta
0d4a0d2c2c fix: initialize RpcResult before try block to match Python implementation
Previously, if this.serialize() threw an exception, result would be undefined
when passed to createErrorResult. This fix brings TypeScript in sync with the
Python rpc.py implementation which already initializes result before the try block.
2026-04-02 13:33:12 -07:00
Koushik Dutta
24ecc19e99 fix: add ts-ignore for delete operations on required properties
zipFile and unzippedPath are set at runtime by cluster worker host.
2026-04-02 13:33:12 -07:00
Koushik Dutta
675b967862 fix: add undefined to buffer state type annotations
Buffer state variables can be undefined before initialization.
2026-04-02 13:33:12 -07:00
Koushik Dutta
3882805cfc fix: add type guard filter for network interfaces
Filter undefined values after flat() to prevent runtime errors
when accessing ni.address.
2026-04-02 13:33:12 -07:00
Koushik Dutta
6ac91bc1a3 fix: add undefined to return type and filter
inferTypeFromInterfaces can return undefined for empty arrays.
Add type guard filter to remove undefined entries.
2026-04-02 13:33:12 -07:00
Koushik Dutta
b2301a3073 fix: add non-null assertions for process.argv and process.send
These values are guaranteed to exist in the plugin main process context.
2026-04-02 13:33:12 -07:00
Koushik Dutta
9cfa6ea58b fix: refactor serviceKey undefined handling
Check serviceKey directly after parsing instead of checking existing?.serviceKey.
This fixes a bug where key parsing failures would be silently ignored.
2026-04-02 13:33:12 -07:00
Koushik Dutta
65199ecdf7 refactor: rename mixins parameter to avoid mutation
Rename parameter to mixinsList to avoid mutating the input parameter.
Add non-null assertion for pop result.
2026-04-02 13:33:12 -07:00
Koushik Dutta
64ed95e9aa fix: add non-null assertions for parentPort access
parentPort is guaranteed to exist in worker thread context.
2026-04-02 13:33:12 -07:00
Koushik Dutta
8c5b2f48cc fix: add definite assignment assertion for cancel variable
Add `!` assertion to cancel variable that is assigned in callback.
2026-04-02 13:33:12 -07:00
Koushik Dutta
bc8f1ebc97 refactor: use Object.entries() in createHeadersArray
Use Object.entries() spread instead of manual loop for cleaner code.
2026-04-02 13:33:12 -07:00
Koushik Dutta
2977d0a90b server: update types 2026-04-02 13:33:12 -07:00
Koushik Dutta
dd59ac40b6 noImplicitReturns: enabled implicit return checking
Fixed all 32 errors by:
- Adding '| undefined' to return type signatures where functions could return undefined
- Changing 'return;' to 'return undefined;' (explicit instead of implicit)
- Adding 'return undefined;' at function ends where needed

Functions updated:
- src/cluster/cluster-setup.ts: getClusterObject, getScryptedClusterMode
- src/fetch/index.ts: getHttpFetchAccept
- src/infer-defaults.ts: inferRoomFromName, getProvidedRoomOrDefault, getDisplayRoom
- src/level.ts: tryGet
- src/plugin/plugin-api.ts: getDeviceById
- src/plugin/plugin-device.ts: findMethod, findMixin
- src/plugin/plugin-host-api.ts: setDeviceProperty
- src/plugin/system.ts: getOwnPropertyDescriptor
- src/rpc.ts: getIteratorNext
- src/runtime.ts: getAccessControlAllowOrigin, getDeviceLogger, getEndpointPluginData, getAccessControls, invalidatePluginDevice, rebuildPluginDeviceMixinTable, installNpm, getPluginHostForDevice, getDevice
- src/scrypted-server-main.ts: getDefaultAuthentication, checkValidUserToken
- src/services/addresses.ts: getLocalAddresses
- src/state.ts: setState
2026-04-02 13:33:09 -07:00
Koushik Dutta
fd0b3a0b8f noImplicitOverride: enabled override modifier checking
Added 'override' keyword to methods that override base class members:
- src/level.ts: override open() methods
- src/plugin/plugin-remote-worker.ts: override setStorage() methods
- src/plugin/runtime/node-fork-worker.ts: override pid getter
- src/plugin/runtime/python-worker.ts: override stdout/stderr getters
- src/rpc.ts: override cause parameter in RPCResultError
- src/runtime.ts: override wss property
- src/state.ts: override listenDevice() method
2026-04-02 13:32:51 -07:00
Koushik Dutta
196ff8378c noUncheckedIndexedAccess: enabled unchecked indexed access checking 2026-04-02 13:32:51 -07:00
Koushik Dutta
78311762a7 strictFunctionTypes: enabled stricter function type checking 2026-04-02 13:32:51 -07:00
Koushik Dutta
4e0ab38986 noImplicitThis: enabled implicit this checking 2026-04-02 13:32:51 -07:00
Koushik Dutta
bd8b152bfd noFallthroughCasesInSwitch: enabled switch fallthrough checking 2026-04-02 13:32:51 -07:00
Koushik Dutta
7cf11d040c strictBindCallApply: enabled stricter bind/call/apply checking 2026-04-02 13:32:51 -07:00
Koushik Dutta
125db2e8dd sdk: remove axios, fix http-fetch usage
Some checks failed
Build SDK / Build (push) Has been cancelled
2026-03-31 09:08:24 -07:00
Koushik Dutta
a64dd8e878 http-fetch: missing file 2026-03-31 09:07:24 -07:00
Koushik Dutta
25bf83832a http-fetch: fix buffer post 2026-03-31 09:06:21 -07:00
Koushik Dutta
181d0fdc92 packages: expose http fetch 2026-03-31 08:38:02 -07:00
Koushik Dutta
148bd27fd3 sdk: switch off axios to @scrypted/auth-fetch 2026-03-31 08:19:48 -07:00
Koushik Dutta
b634330ab0 sdk: make bin files typescript 2026-03-31 08:17:42 -07:00
Koushik Dutta
21ce1af766 packages: publish auth-fetch 2026-03-31 08:09:25 -07:00
Koushik Dutta
89b780590a packages: publish auth-fetch 2026-03-31 08:04:45 -07:00
Koushik Dutta
f1fac2ab99 Merge branch 'main' of github.com:koush/scrypted
Some checks failed
Build SDK / Build (push) Has been cancelled
2026-03-28 20:31:35 -07:00
Koushik Dutta
41e17a8dc4 core: remove scripts templates, direct to scripts site 2026-03-28 20:31:31 -07:00
Koushik Dutta
936a81ecbb sdk: filter invalid devices from storage settings 2026-03-28 12:08:04 -07:00
JoshADC
eefab888a7 reolink: logout expired token sessions before renewing (#1979)
The ReolinkCameraClient never called the Logout API before requesting a
new token, causing stale sessions to accumulate on the camera. When the
camera's session limit was reached (~68 min cycle), it would close the
RTMP/RTSP connection, dropping the stream.

Add a logout() method that releases the old token session before login()
requests a new one, matching the pattern already used by ReolinkNvrClient.
This prevents session buildup and eliminates periodic stream drops.

Fixes #1873

Co-authored-by: Josh Casada <joshcasada@Joshs-Mac-mini.ts.net lan>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 08:23:11 -07:00
Koushik Dutta
6a8260d09d ncnn: readd cluster label 2026-03-08 10:42:04 -07:00