
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
iagate-scriptkit
Advanced tools
ScriptKit: build and transpile universal scripts (PowerShell/Bash) with DSLs and platform-aware APIs.
Build and transpile universal scripts to PowerShell (Windows) or Bash (macOS/Linux) using a portable program builder, DSLs, and platform-aware high-level APIs.
npm install iagate-scriptkit
ScriptBuilder
: imperative builder for shell scripts (ps1/sh) with run()
helperPowerShellDsl
, BashDsl
, CSharpBuilder
: structured DSLs for script/code generationUniversalTranspiler
, UniversalProgramBuilder
, detectPlatform
ScriptQuery
/ scriptQuery()
: fluent high-level builderuniversalApis
and category-specific groups (fsApis
, systemApis
, processApis
, etc.)Below are representative calls (not exhaustive). All return a UniversalProgram
which you can transpile and run.
ensureDir
, ensureTree
, mirror
, copy
, copyPattern
, move
, rm
, searchFiles|Dirs|Any
, gzipFile
, untarGz
, hashSha256|Md5
, chmod
, touch
, du
, df
, which
, mktemp
restart
, shutdown
, sleep
, lock
, openUrl
, openTerminal
, systemInfoJson
, netInterfacesJson
, ping
, traceroute
, dnsLookup
, envGet|envSet
, hostname
modesJson
, setResolution
, setBrightness
setVolume
, mute
, unmute
, beep
, say
listJson
, enableRule
, disableRule
, addAllowTcp|Udp
, addDenyTcp|Udp
, removeRule
, blockAllInbound
, allowAllOutbound
list
, killByPid|Name
, startDetached
, niceTop
, cpuUsage
, memUsage
, openFile
, uptime
, gpuInfo
install
, uninstall
, updateAll
, list
, whichManager
, addTap
, cleanup
, info
start
, stop
, restart
, status
, enable
, disable
, list
, logs
set
, get
, clear
, typeText
wifiScan
, wifiConnect
, ipConfig
, openPortCheck
, routeTable
, dnsCacheFlush
, speedTest
, curl
notify
, open
, defaultBrowser
, openUrl
, revealInFolder
, screenshot
currentUser
, listUsers
, addUser
, deleteUser
, listGroups
, addGroup
, deleteGroup
, userAddToGroup
, userRemoveFromGroup
, whoIs
, passwd
list
, default
, setDefault
, pause
, resume
, status
, printFile
, jobs
list
, powerOn|Off
, pair|connect|disconnect
version
, ps
, images
, start|stop|restart|rm
, logs
, run
, pull
contexts
, setContext
, getPods|Services|Nodes
, logs
, applyFile
, portForward
batteryStatus
, sleepDisplay
, powerPlan
, timeSync
, timezoneGet|Set
, hibernate
, rebootToFirmware
proxySet|Unset|Get
, vpnList|Connect|Disconnect
, hostsAdd|List
sevenZipCompress|Extract
, rarExtract
, zipList|Test
, tarList|Test
tail|follow|grep|head
uuid
, base64Encode|Decode
Platform nuances are handled inside the transpiler; some calls may be best-effort on certain OSes.
const program = fsApis.ensureDir('out')
const { builder, shell } = UniversalTranspiler.transpile(program)
// shell: 'powershell' on Windows, 'bash' otherwise
const result = await builder.run()
// result: { stdout: string; stderr: string }
// or a ServiceResult if you pass a host Service implementation
import { UniversalTranspiler, fsApis as fs } from 'iagate-scriptkit'
const program = fs.ensureDirs(['out/logs', 'out/data'])
const { builder } = UniversalTranspiler.transpile(program)
const r1 = await builder.run()
// Expected: stdout empty or OS command acknowledgements; directories exist
const p2 = fs.copyPattern('src', 'out/data', '*.json', true)
const { builder: b2 } = UniversalTranspiler.transpile(p2)
const r2 = await b2.run()
// Expected: JSON files copied; stdout may contain command output depending on OS
import { UniversalTranspiler, displayApis as display } from 'iagate-scriptkit'
const { builder } = UniversalTranspiler.transpile(display.modesJson())
const out = await builder.run()
// Expected stdout (Windows example):
// [ { "resolution": "1920x1080", "width": 1920, "height": 1080, ... }, ... ]
import { UniversalTranspiler, audioApis as audio, appApis as app } from 'iagate-scriptkit'
await UniversalTranspiler.run(audio.setVolume(30))
await UniversalTranspiler.run(app.notify('Build', 'Finished'))
// Expected: volume set; native notification shown
import { UniversalTranspiler, firewallApis as fw } from 'iagate-scriptkit'
const p = fw.addAllowTcp('db-allow-5432', 5432, 'in')
const { builder } = UniversalTranspiler.transpile(p)
const res = await builder.run()
// Expected: rule created (Windows: New-NetFirewallRule; Linux: ufw allow)
import { UniversalTranspiler, dockerApis as d, k8sApis as k } from 'iagate-scriptkit'
await UniversalTranspiler.run(d.images())
await UniversalTranspiler.run(k.getPods('default'))
// Expected: stdout from docker/kubectl commands
import { scriptQuery } from 'iagate-scriptkit'
const { builder } = scriptQuery()
.setEnv('NODE_ENV', 'production')
.fs().ensureDir('build')
.system().openUrl('https://example.com')
.build()
const r = await builder.run()
// Expected: directory created; URL opened
if/elseif/else/endif
, try/catch/finally
, for/foreach/while
, switch
, break/continue
var/set/inc
, newArray/pushArray
, newHash/addHash/setHashAtIndex
, JSON: toJson/fromJson
ensureModule
, ensureCommand
, guard
, retry
, timeout
, sleep
, startProcess/stopProcess
, ensureDir
, registry/property helpersparallel(jobs: string[], ...)
via background jobs and Receive-Job
addTypeFromCSharp
to inline C# types and P/InvokeExample (retry + parallel):
import { PowerShellDsl } from 'iagate-scriptkit'
const ps = new PowerShellDsl()
.retry(3, 1000, p => p.startProcess('ping', ['-n','1','8.8.8.8']))
.parallel([
`Start-Sleep -Milliseconds 200; 'jobA'`,
`Start-Sleep -Milliseconds 100; 'jobB'`,
], '$out', true, 2)
.toJson('$out', 2)
.build()
// Transpile then run; Expected: JSON array with job outputs
if/elif/else/fi
, while
, forIn
retry(times, delaySec)
, ensureCommand
, guard
, pipeline
, command
Example:
import { BashDsl } from 'iagate-scriptkit'
const sh = new BashDsl()
.retry(3, 1, s => s.command('curl', ['-fsSL', 'https://example.com']))
.pipeline([`echo 'ok'`, `tr 'a-z' 'A-Z'`])
.build()
You can generate C# structures for P/Invoke or utility classes and inject them into PowerShell via Add-Type
.
Supported:
[StructLayout]
and field attributes (MarshalAs
)CharSet
, SetLastError
Example: display settings interop (excerpt)
import { CSharpBuilder, PowerShellDsl } from 'iagate-scriptkit'
const cs = new CSharpBuilder()
.struct('DEVMODE')
.addFields([
(f)=>f.type('string').named('dmDeviceName').attrs(['[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]']),
{ type: 'int', name: 'dmPelsWidth' },
{ type: 'int', name: 'dmPelsHeight' },
])
.class('DisplaySettings')
.addDllImportMethod('user32.dll', 'bool', 'EnumDisplaySettings', [
{ type: 'string', name: 'deviceName' },
{ type: 'int', name: 'modeNum' },
{ type: 'ref DEVMODE', name: 'devMode' },
])
const ps = new PowerShellDsl().addTypeFromCSharp(cs.build()).build()
// Expected: PowerShell can now call [DisplaySettings]::EnumDisplaySettings(...)
builder.run()
spawns platform commands; ensure required tools exist (brew/choco/apt/kubectl/docker/etc.).Service.executeWithTempFile
and pass a Service
to ScriptBuilder.run()
.MIT
FAQs
ScriptKit: build and transpile universal scripts (PowerShell/Bash) with DSLs and platform-aware APIs.
The npm package iagate-scriptkit receives a total of 0 weekly downloads. As such, iagate-scriptkit popularity was classified as not popular.
We found that iagate-scriptkit 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.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.