
Company News
/Security News
Socket Selected for OpenAI's Cybersecurity Grant Program
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.
This is the TypeScript version EPICS Channale Acceess (CA) client library. It provides a TypeScript/JavaScript interface for an EPICS CA client communicating with CA servers.
This library complies the CA protocol specifications.
In your TypeScript/JavaScript project, run
npm install epics-tca
Create a .ts file (e.g. simpleGet.ts) with following contents:
import { Context } from "epics-tca";
async function simpleGet(name: string) {
let channel = await context.createChannel(name);
return await channel?.get();
}
let context = new Context();
context.initialize().then(() => {
simpleGet("FE:Scope_1:RMS2").then((data: any) => {
console.log("FE:Scope_1:RMS2", data.data);
context.destroyHard();
});
});
Run the transpiled simpleGet.js file, you will get the following result:
$ node simpleGet.js
FE:Scope_1:RMS2 [ 2.2934632737106067 ]
Create a .ts file (e.g. simplePut.ts) with following contents:
import { Context } from "epics-tca";
async function simplePut(name: string, value: number) {
let channel = await context.createChannel(name);
const value0 = await channel?.get();
console.log("Before:", name, value0?.data);
await channel?.put([value]);
return await channel?.get();
}
let context = new Context();
context.initialize().then(() => {
simplePut("val1", 9527).then((data: any) => {
console.log("After: ", "val1", data.data);
context.terminate();
});
});
Run the transpiled simplePut.js file, you will get the following result:
$ node simplePut.js
Before: val1 [ 2 ]
After: val1 [ 9527 ]
Create a .ts file (e.g. simpleMonitor.ts) with following contents:
import { Context } from "epics-tca";
async function tcaMonitor(name: string) {
let channel = await context.createChannel(name);
let monitor = await channel?.createMonitor(monitorListener);
await monitor?.subscribe();
}
function monitorListener(monitor: ChannelMonitor) {
console.log(monitor.name, ":", monitor.data.data);
}
let context = new Context();
context.initialize().then(() => {
tcaMonitor("FE:Scope_1:RMS2");
});
setTimeout(() => {
console.log("Terminate program");
context.terminate();
}, 5 * 1000)
Run the transpiled simpleMonitor.js file, you will get the following result:
$ node simpleMonitor.js
FE:Scope_1:RMS2 : [ 2.296598922566252 ]
FE:Scope_1:RMS2 : [ 2.2929398313489786 ]
FE:Scope_1:RMS2 : [ 2.299754072515923 ]
FE:Scope_1:RMS2 : [ 2.298171626156998 ]
Terminate program
Benefited from the asynchronous and event driven design of Node.js, the EPICS TCA can create EPICS channels efficiently. Below is the time used to create a batch of channels:
| Number of PVs | Time [seconds] |
|---|---|
| 1000 | 0.104 |
| 2000 | 0.184 |
| 5000 | 0.334 |
| 10000 | 0.603 |
| 15000 | 0.728 |
| 20000 | 0.923 |
| 25000 | 1.318 |
| 30000 | 1.553 |
| 35000 | 2.032 |
| 40000 | 2.432 |
| 45000 | 2.748 |
| 50000 | 3.082 |
| 60000 | 3.727 |
| 80000 | 5.583 |
| 100000 | 9.095 |
Each channel updates once every second. During the test, after the channels are created, the test program monitors the updates. For 100000 channels, the memory usage is about 450 MB when they are monitored, and the CPU usage is about 50% on a 2.3 GHz Intel Core i9-9880H processor with MacOS 12.4.
FAQs
TypeScript realization of EPICS Channel Acceess Client Protocol
The npm package epics-tca receives a total of 70 weekly downloads. As such, epics-tca popularity was classified as not popular.
We found that epics-tca demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.