BrightScript-JavaScript Migration Guide
This page describes the mapping between BrightScript and JavaScript APIs. BrightScript functionality is implemented in JavaScript using the BrightSign JavaScript APIBrightSign JavaScript API and the older BrightScript-JavaScript objectsBS- JavaScript objects; BrightScript APIs are not ported when standard JavaScript libraries provide equivalent functionality.
If the JavaScript equivalent is "Not available", the functionality is not currently implemented but should be in the future. If the equivalent is "Not applicable", the corresponding BrightScript method would be meaningless in JavaScript or is otherwise unnecessary.
Global Functions
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
CreateObject() | Not applicable | |
RestartScript() | Not applicable | |
RestartApplication() | process.exit() | Node.js® |
Sleep() | Not applicable | |
asc() | String.charCodeAt() | JavaScript built-in |
chr() | String.fromCharCode() | JavaScript built-in |
len() | String.length | JavaScript built-in |
str() | Number.toString() | JavaScript built-in |
strl() | Number.toString() | JavaScript built-in |
val() | Number() | JavaScript built-in |
abs() | Math.abs() | JavaScript built-in |
atn() | Math.atan() | JavaScript built-in |
csng() | Not applicable | |
cdbl() | Not applicable | |
cint() | Not applicable | |
cos() | Math.cos() | JavaScript built-in |
exp() | Math.exp() | JavaScript built-in |
fix() | Number.toFixed() | JavaScript built-in |
int() | Math.trunc() | JavaScript built-in |
log() | Math.log() | JavaScript built-in |
sgn() | Math.sign() | JavaScript built-in |
sgnl() | Math.sign() | JavaScript built-in |
sin() | Math.sin() | JavaScript built-in |
tan() | Math.tan() | JavaScript built-in |
sqr() | Math.sqrt() | JavaScript built-in |
Left(target_string, n) | target_string.substr(0, n)* | JavaScript built-in |
Right(target_string, n) | target_string.substr(target_string.length - n)* target_string.substr(-n)* | JavaScript built-in |
StringI() | String.repeat() | JavaScript built-in |
Mid(target_string, start_position, length | target_string.substr(start_position, length)* | JavaScript built-in |
Instr() | String.indexOf() | JavaScript built-in |
GetInterface() | Access object interfaces as strings | |
Wait() | Not applicable in JavaScript, unless the function is used without reference to ports, and merely to delay execution for a time, in which case, use setTimeout(). | JavaScript built-in |
ReadAsciiFile() | readFileSync()** | Node.js® |
WriteAsciiFile() | fs.writeFile()** | Node.js® |
ListDir() | fs.readDir()** | Node.js® |
MatchFiles() | fs.readDir()** Additional JavaScript code is needed to complete matching. | Node.js® |
LCase() | String.toLowerCase() | JavaScript built-in |
UCase() | String.toUpperCase() | JavaScript built-in |
DeleteFile() | fs.unlink()** | Node.js® |
DeleteDirectory() | fs.rmdir()** | Node.js® |
CreateDirectory() | fs.mkdir()** | Node.js® |
RebootSystem() | system.reboot() | BrightSign JavaScript API |
ShutdownSystem() | Not available | |
UpTime() | OS.uptime() | Node.js® |
FormatDrive() | No exact equivalent. | |
EjectDrive() | Not available | |
CopyFile() | fs.copyFile()** | Node.js® |
MoveFile() | fs.rename()** | Node.js® |
MapFilenameToNative() | Not applicable | |
strtoi() | parseInt() strtoi() parses in base 10, whereas JavaScript supports any base. | JavaScript built-in |
rnd() | JavaScript built-in | |
RunGarbageCollector() | Not applicable | |
GetDefaultDrive() | Not applicable | Node.js® |
SetDefaultDrive() | process.chdir() | Node.js® |
EnableZoneSupport() | Not applicable | |
EnableAudioMixer() | Not applicable | |
Pi() | Math.PI | JavaScript built-in |
ParseJson() | JSON.parse() BrightScript returns Invalid in the case of problematic strings, whereas JavaScript throws an exception. | JavaScript built-in |
FormatJson() | JSON.stringify() JSON.stringify must be invoked with a custom replacer, for example, Cyclic_object_value or WebReflection/flatted#flatted | JavaScript built-in |
* substr takes parameters as (from, length). substring takes parameters as (from, to). slice takes parameters as (from, to).
** Async operations are always preferable.
Core Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roArray | Not applicable | |
roAssociativeArray | Not applicable | |
roBoolean | Not applicable | |
roByteArray | Blob() (JavaScript now has typed arrays - for example, Uint8Array) | |
roDouble | Not applicable | |
roFunction | Not applicable | |
roInt, roFloat, roString | Not applicable | |
roList | Use JavaScript built-in function | |
roMessagePort | Not applicable | |
roRegex | RegExp() | |
roXMLElement | DOMParser() | |
roXMLList | DOMParser() |
Presentation Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roAudioEventMx | Not available | |
roAudioOutput | audiooutputaudiooutput | |
roAudioPlayer | Use html audio tag | |
roCanvasWidget | Not applicable | |
roClockWidget | Not applicable | |
roHdmiInputChanged | videoinput.VideoInputConfiguration.hdmiinputchanged | BrightSign JavaScript APIBrightSign JavaScript API |
roHdmiOutputChanged | videooutput.VideoOutputConfiguration.hotplugevent | BrightSign JavaScript APIBrightSign JavaScript API |
roHTMLWidget | htmlwidgethtmlwidget | |
roImageBuffer | Not applicable | |
roImagePlayer | | |
roImageWidget | | |
roRectangle | Not applicable | |
roStreamQueue | Not available | |
roTextField | Not applicable | |
roTextWidget | Not applicable | |
roTouchEvent | TouchEvent() | Web API |
roTouchScreen | Not available | |
SetResolution() | Browser performs mapping | |
AddRectangle() | Map CSS cursor properties to hardware cursor | |
AddCircleRegion() | Map CSS cursor properties to hardware cursor | |
ClearRegions() | Not applicable | |
GetDeviceName() | Not applicable | |
SetCursorPosition() | Simulate mouse cursor events in JavaScript | |
SetCursorBitmap() | Map CSS cursor properties to hardware cursor | |
EnableCursor() | Map CSS cursor properties to hardware cursor | |
EnableRollover() | Not applicable | |
EnableRegion() | Map CSS cursor properties to hardware cursor | |
SetRollOverOrigin() | Map CSS cursor properties to hardware cursor | |
IsMousePresent() | pointer.isMousePresent() | |
SetMouseRotation() | Not applicable | |
EnableSerialTouchscreen() | Not available | |
SetSerialTouchscreenConfiguration() | Not available | |
GetDiagnosticInfo() | pointerCalibration.getDiagnosticInfoHTML() | |
StartCalibration() | pointerCalibration.startCalibration() | |
GetCalibrationStatus() | pointerCalibration.getCalibrationStatus() | |
ClearStoredCalibration() | pointerCalibration.clearStoredCalibration() | |
StartEventLogging() | pointerCalibration.startEventLogging() | |
StopEventLogging() | pointerCalibration.stopEventLogging() | |
ClearEventLogs() | Not applicable (no information on the log) | |
SetCalibrationRanges() | pointerCalibration.setCalibrationRanges() | |
roVIdeoInput | MediaDevices.getUserMedia() | Web API |
roVideoMode | | |
SetMode() | videomodeconfiguration.setMode() | |
SetModeForNextBoot() | Not applicable (use @brightsign/videomodeconfiguration SetMode()) | |
GetModeForNextBoot() | Not applicable (use @brightsign/videomodeconfiguration getActiveMode()) | |
GetBestMode() | videomodeconfiguration.getBestMode() | |
GetMode() | videomodeconfiguration.getActiveMode() | |
GetActiveMode() | videomodeconfiguration.getActiveMode() | |
GetAvailableModes() | videomodeconfiguration.getAvailableModes() | |
GetConfiguredMode() | videomodeconfiguration.getConfiguredMode() | |
GetFPS | videomodeconfiguration.getActiveMode() | |
SetDecoderMode() | decoderconfiguration.applyConfig() | |
GetDecoderModes() | decoderconfiguration.getConfig() | |
Set3DMode() | videooutput.set3dMode() | |
Screenshot() | screenshot.syncCapture()/asyncCapture() | |
GetResX() | videomodeconfiguration.Mode.graphicsPlaneWidth | |
GetRexY() | videomodeconfiguration.Mode.graphicsPlaneHeight | |
GetVideoResX() | videomodeconfiguration.Mode.width | |
GetVideoResY() | videomodeconfiguration.Mode.height | |
GetOutputResX() | videooutput.Size.width | |
GetOutputResY() | videooutput.Size.height | |
GetSafeX() | BSVideoMode.safeX | BS-JavaScript objects |
GetSafeY() | BSVideoMode.safeY | BS-JavaScript objects |
SafeWidth() | BSVideoMode.safeWidth | BS-JavaScript objects |
SafeHeight() | BSVideoMOde.safeHeight | BS-JavaScript objects |
SetGraphicsZOrder | Not applicable | |
PauseGraphics() | compositor.pause() | |
ResumeGraphics() | compositor.resume() | |
SetImageSizeThreshold() | system.setImageSizeThreshold() | |
AdjustGraphicsColor() | videooutput.adjustGraphicColor() | |
ConfigureHdmiInput() | videoinput.ApplyConfig() | |
SetHdmiMetadata() | Not available and possibly not applicable | |
GetHdmiOutputStatus() | videooutput.getOutputStatus() | |
GetHdmiInputStatus() | videoinput.getStatus() | |
GetCompositorCrc() | compositor.getCrc() | |
GetTxHdcpStatus() | videooutput.getTxHdcpStatus() | |
ForceHdcpOn() | videooutput.forceHdcpOn() | |
DisableHdcpRepeater() | videooutput.DisableHdcpRepeater() | |
SetBackgroundColor() | videooutput.setBackgroundColor() | |
SetPowerSaveMode() | videooutput.SetPowerSaveMode() | |
IsAttached() | videooutput.isAttached() | |
HdmiAudioDisable() | videooutput.disableAudio() | |
SetMultiscreenBezel() | videooutput.setMultiscreenBezel() | |
SaveEdids() | videooutput.getEdid() returns EDID information as a hex-encoded string. | |
GetEdidIdentity() | videooutput.getEdidIdentity() | |
SetMpcdi() | videooutput.setMpcdi() | |
SetSyncDomain() | videooutput.setSyncDomain() | |
roVideoPlayer | Use <video> elements with BrightSign properties | |
File Objects
Use the Node.js File API.
Hashing and Storage Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roBlockCipher | Node.js Crypto API | |
roBrightPackage | Node.js Zlib API | |
roDiskErrorEvent | Not available | |
roDiskMonitor | Not available | |
roHashGenerator | Node.js Crypto API | |
roPassKey | Node.js Crypto API | |
roRegistry | registry | |
GetSectionList() | registry.read() | |
Delete() | registry.write() | |
Flush() | Not applicable; registry writes are flushed implicitly | |
roRegistrySection | registry | |
Read() | registry.read() | |
Write() | registry.write() | |
Exists() | Not applicable (Use read followed by a truthy check on the registry key) | |
GetKeyList() | Not applicable (Use read followed by Object.keys()) | |
roSqliteDatabase | Use IndexedDB | |
roSqliteStatement | Use IndexedDB | |
roStorageAttached | node.js fs.watch() | |
roStorageDetached | node.js fs.watch() | |
roStorageHotplug | node.js fs.watch() | |
roStorageInfo | filesysteminfo and storageinfo | |
GetBytesPerBlock() | filesysteminfo.getStatistics() | |
GetSizeInMegabytes() | filesysteminfo.getStatistics() | |
GetUsedInMegabytes() | node.js fs.stat() | |
GetFreeInMegabytes() | filesysteminfo.getStatistics() | |
GetFileSystemType() | filesysteminfo.getFileSystemType() | |
GetStorageCardInfo() | storageinfo.getStorageCardInfo() | |
roVirtualMemory | Not available | |
Content Management Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roAssetCollection | Not available | |
roAssetFetcher | ||
roAssetPool | ||
roAssetPoolFiles | | |
roAssetRealizer | ||
roSyncSpec | Not applicable | |
Networking Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roDatagramReceiver | Node.js Dgram API | |
roDatagramSender | Node.js Dgram API | |
roDatagramSocket | Node.js Dgram API | |
roHttpServer | Node.js | |
roKeyStore | keystore | |
roMediaServer | node-media-server | |
roMediaStreamer | Not available | |
roMimeStream | Not applicable | |
roNetworkAdvertisement | Not applicable (use node.js) | |
roNetworkConfiguration | | |
Apply() | networkconfiguration.applyConfig() | |
SetupDWS() | dwsconfiguration | |
EnableLEDs() | networkconfiguration.enableLeds() | |
SetClientIdentifier() | networkconfiguration.NetworkInterfaceConfig.clientIdentifier | |
GetClientIdentifier() | networkconfiguration.NetworkInterfaceConfig.clientIdentifier | |
SetLoginPassword() | hostconfiguration.HostConfigWritable.loginPassword | |
SetObfuscatedLoginPassword() | hostconfiguration.HostConfigWritable.ObfuscatedLoginPassword | |
SetInboundShaperRate() | networkconfiguration.NetworkInterfaceConfig.inboundShaperRate | |
SetMTU() | networkconfiguration.NetworkInterfaceConfig.mtu | |
SetRoutingMetric() | networkconfiguration.NetworkInterfaceConfig.metric | |
SetDHCP() | networkconfiguration.NetworkInterfaceConfig.ipAddressList | |
SetEnabledProtocols() | networkconfiguration.NetworkInterfaceConfig.enabledProtocolList | |
SetIP4Address() | networkconfiguration.NetworkInterfaceConfig.ipAddressList | |
SetIP4Netmask() | networkconfiguration.NetworkInterfaceConfig.ipAddressList | |
SetIP4Broadcast() | networkconfiguration.NetworkInterfaceConfig.ipAddressList | |
SetIP4Gateway() | networkconfiguration.NetworkInterfaceConfig.ipAddressList | |
SetVlanIds() | networkconfiguration.NetworkInterfaceConfig.vlanIdList | |
SetWiFiESSID()/.GetWiFiESSID() | networkconfiguration.WiFiInterfaceConfig.essId | |
SetWiFiPassphrase() | networkconfiguration.WiFiInterfaceConfig.passphrase | |
SetWiFiPassphraseAndObfuscate() | networkconfiguration.WiFiInterfaceConfig.obfuscatedPassphrase | |
SetWiFiAccessPointMode() | networkconfiguration.WiFiInterfaceConfig.accessPointMode | |
SetAccessPointFrequencyMHz() | networkconfiguration.WiFiInterfaceConfig.accessPointFrequency | |
SetWiFiIdentity() | networkconfiguration.WiFiInterfaceConfig.identity | |
SetWiFiEapTlsOptions() | networkconfiguration.WiFiInterfaceConfig.eapTlsOptions | |
SetWiFiCACertificates() | networkconfiguration.WiFiInterfaceConfig.caCertificates | |
SetWiFiClientCertificate() | networkconfiguration.WiFiInterfaceConfig.clientCertificate | |
SetWiFiPrivateKey() | networkconfiguration.WiFiInterfaceConfig.privateKey | |
SetWiFiSecurityMode() | networkconfiguration.WiFiInterfaceConfig.securityMode | |
ConfigureDHCPServer() | networkconfiguration.NetworkInterfaceConfig.dhcpServerConfig | |
SetForwardingPolicy() | Not available | |
SetDNSServers()/.AddDNSServer() | networkconfiguration.NetworkInterfaceConfig.dnsServerList | |
SetTimeServer() | hostconfiguration.HostConfig.timeServerList | |
SetTimeServerIntervalSeconds()/ GetTimeServerIntervalSecons() | hostconfiguration.HostConfig.timeServerInterval | |
SetHostName()/.GetHostName() | hostconfiguration.HostConfig.hostName | |
SetProxy()/.GetProxy() | hostconfiguration.HostConfig.proxy | |
SetProxyBypass()/.GetProxyBypass() | hostconfiguration.HostConfig.proxyBypassList | |
GetRecoveryUrl() | Not available | |
ResetInterfaceSettings() | networkconfiguration.applyConfig() | |
ResetHostSettings() | hostconfiguration.applyConfig() | |
GetCurrentConfig() | networkconfiguration.getConfig()/hostconfiguration.getConfig() | |
TestInterface() | networkdiagnostics.testNetworkInterface() | |
TestInternetConnectivity() | networkdiagnostics.testInternetConnectivity() | |
GetNeighborInformation() | networkconfiguration.getNeighborInformation() | |
ScanWiFi() | networkconfiguration.scan() | |
roNetworkHotplug | | |
roNetworkAttached | | |
roNetworkDetached | | |
roNetworkDiscovery | Not applicable (node.js can be used instead) | |
roNetworkStatistics | Not applicable (See node module net-stat) | |
roPtp | hostconfiguration (see OS 8.0.94 release note) | |
roRssArticle/roRssParser | Not applicable | |
roRtspStream | Use <video> elements | |
roSnmpAgent | net-snmp | npm*** |
roStream | Not applicable | |
roSyncManager | BSSyncManagerBSSyncManager | BS-JavaScript objects |
roTCPServer/roTCPStream | net.socket | Node.js® |
roUPnP | Not applicable | |
roUrlTransfer | http | Node.js® |
*** npm is a registered trademark of npm, Inc.
Input/Output Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roBtManager | BSBtManager | BS-JavaScript objects |
roBtClientManager/roBtClient | BSBtManager | |
roCecInterface | cec | |
roChannelManager | obsolete | |
roControlPort | controlport | BS-JavaScript objects |
roGpioControlPort | controlport | BS-JavaScript objects |
roIRReceiver | BSIRReceiver | BS-JavaScript objects |
roIRTransmitter | BS-JavaScript objects | |
roIRRemote | BSIRRemote | |
roKeyboard | keyboard | |
roSequenceManager | Not applicable | |
roSerialPort | BSSerialPort | BS-JavaScript objects |
System Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roDeviceCustomization | Not available | |
roDeviceInfo | BSDeviceInfo | |
roResourceManager | Not applicable | |
roSystemLog | Not available | |
Date and Time Objects
BrightScript API | JavaScript Equivalent | Library |
|---|---|---|
roDateTime | Date | JavaScript built-in |
roSystemTime | ||
roTimer | .setTimeout()/.setInterval() | Web API |
roTimeSpan | Date | JavaScript built-in |