.github | ||
app | ||
data | ||
examples | ||
lib | ||
tmp | ||
WelsonJS.Toolkit | ||
.appveyor.yml | ||
.gitignore | ||
.gitmodules | ||
.sonarcloud.properties | ||
app.hta | ||
app.js | ||
bgloader.js | ||
bootstrap.bat | ||
bootstrap.js | ||
CITATION.cff | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
defaultService.example.js | ||
encryptor.js | ||
helloworld.coffee | ||
helloworld.js | ||
helloworld.js.enc | ||
helloworld.ls | ||
helloworld.re | ||
helloworld.ts | ||
installService.bat | ||
LICENSE | ||
LICENSE_MSRL | ||
officeloader.js | ||
package-lock.json | ||
package.json | ||
README.md | ||
SECURITY.MD | ||
settings.example.ini | ||
setup.iss | ||
shoutcut.js | ||
startInteractiveService.bat | ||
testloader.js | ||
uninstallService.bat | ||
uriloader.js | ||
webloader.js |
welsonjs
WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.
Now, You can build a Windows desktop app with JavaScript, TypeScript, CoffeeScript, ReScript, and HTML/CSS on Windows built-in ECMAScript engine.
WelsonJS = Windows + Electron-like + Javascript(JS) + ❤️Contributions
😽 Download Latest WelsonJS Launcher (ics.catswords.net)
Note: The default license for this project is GPL 3.0. However, if the GPL 3.0 license is not compatible with Microsoft products, it is subject to the MS-RL license.
Sponsors
- :octocat: GitHub Sponsors
Open Software Portal, Korea National Industry Promotion Agency - Awarded Prize
Free code signing provided by SignPath.io, certificate by SignPath Foundation
F1Security provides web security services designed by industry-leading experts.
Microsoft ISV Success Program, Grow your business with powerful tools.
- ⚡ Integrations (ScrapeOps, SearchApi, AviationStack, Coupang...)
System Requirements
- Operating Systems: Windows XP SP3 or later (Currently, Windows 11 24H2)
- For systems running Windows 2000 or earlier versions (e.g., 95, 98, Me), please contact us separately.
Why Choose WelsonJS?
WelsonJS is an advanced JavaScript framework designed to operate in extreme conditions where conventional solutions may fail. Unlike traditional JavaScript frameworks, WelsonJS focuses on executing scripts in constrained environments, ensuring reliable performance even with minimal system resources.
Key Features
- Lightweight and Efficient: Optimized for environments with limited computing power, WelsonJS delivers efficient script execution without unnecessary overhead.
- Windows ECMAScript Compatibility: Designed to run seamlessly on Windows-based systems, adhering to the ECMAScript standard while maintaining lightweight execution.
- Standalone Execution: Unlike well-known JavaScript runtimes, which require external dependencies, a WelsonJS application can operate as a self-contained app, making it suitable for embedded systems and isolated environments.
- Security-Oriented: Built with security in mind, ensuring controlled execution of scripts without compromising system integrity.
- Minimalist Design: WelsonJS strips away unnecessary complexities, focusing on core functionalities that maximize performance and reliability.
Use Cases
- Legacy System Integration: WelsonJS provides a practical solution for running JavaScript on older Windows environments where modern frameworks are not feasible.
- Automation and Scripting: Ideal for executing scripts in constrained environments, enabling automated workflows and system-level scripting.
- Embedded Applications: Suitable for devices and systems with strict resource constraints, such as industrial controllers and embedded platforms.
- Security-Focused Environments: Useful in security-sensitive applications where dependencies on external network connections are limited.
- Office Automation: Suitable for office automation tasks using Microsoft Office and various LLM-based AI (such as ChatGPT).
WelsonJS is tailored for developers who need a reliable, lightweight JavaScript framework in environments where traditional solutions are impractical. Whether working with legacy systems, embedded devices, or security-critical applications, WelsonJS ensures that JavaScript remains a viable and efficient option.
Structure
Specifications
- Built-in transpilers: TypeScript, Rescript, CoffeeScript 2, LiveScript
- Ready to use on Windows machine immediately. No require additional software installation.
- WelsonJS Launcher: Instance management (You can manage previously run apps), User-defined variable editor (You can pass user-defined variables if needed), Microsoft Monaco Editor (You can edit code without installing an additional editor).
- ES5(ECMAScript 5), XML, JSON, YAML compatibility: core-js, JSON2.js, js-yaml
- HTML5, CSS3 compatibility: html5shiv, jquery-html5-placeholder-shim, Respond, selectivizr, ExplorerCanvas, Modernizr
- Classical CSS Frameworks: cascadeframework, golden-layout
- WYSIWYG HTML Editor: summernote
- Included libraries: jQuery, jQuery UI, jquery-toast-plugin, squel, jsrender, linq, pegjs, numbers.js
- Compatible with modern JavaScript specifications: module.exports, CommonJS, UMD compatibility, NPM(Node Pacakge Manager) compatibility
- Support a device debugging protocol clients: Chrome DevTools Protocol, ADB(Android Debug Bridge)
- RPC(Remote Procedure Call) protocol clients: gRPC, JSON-RPC 2.0
- Various types of HTTP clients: XHR(MSXML), cURL, BITS, CERT, Web Proxy, SEO/SERP
- The native toolkit for Windows environments: Write a Windows Service Application with JavaScript, Control a window handle, Cryptography (e.g., ISO/IEC 18033-3:2010 aka. HIGHT), Named Shared Memory based IPC, NuGet package
- Generative AI integrations: Multiple LLM and sLLM (e.g., ChatGPT, Claude, ...)
- Aviation Data integrations: AviationStack, SearchApi Google Flight
- VM infrastucture tool integrations: OVFTool for Broadcom/VMware infrastructures
- Everything you can imagine.
Quick start
1. Write a file lib/sayhello.js
// lib/sayhello.js
function say() {
console.log("hello");
}
exports.say = say;
exports.VERSIONINFO = "SayHello (sayhello.js) version 0.1";
exports.AUTHOR = "abuse@catswords.net";
exports.global = global;
exports.require = global.require;
2. Write a file sayhello.js
// sayhello.js
var SayHello = require("lib/sayhello");
function main() {
console.log("calling say()");
SayHello.say();
console.log("ended say()");
}
exports.main = main;
3. Execute script on the console
C:\Users\JohnDoe\Documents\GitHub\welsonjs> cscript app.js sayhello
calling say()
hello
ended say()
How to release my application?
The WelsonJS framework suggests the following application release methods:
- Compress to Zip, and use the launcher: Compress the files and directories necessary for running the project into a Zip file, and distribute it along with the WelsonJS Launcher.
- Build a setup file: Use Inno Setup. The setup profile (the
setup.iss
file) is already included. - Copy all directories and files: This is the simplest and most straightforward method.
Screenshots
Thanks to
- ❤️ Artwork (Logo image): @druidesse
- ❤️ Artwork (Cover image): @_bag0@x.com
- 😎 Heavy-industry specialized CSP(Cloud Service Provider) in Republic of Korea - Use case establishment
- 😎 Live-commerce specialized online advertisement companies in Republic of Korea - Use case establishment
- 😎 Information security companies in Republic of Korea - Use case establishment
- 👀 Facebook Group "Javascript Programming"(javascript4u)
- 👀 morioh.com
- 👀 CSDN
- 👀 Qiita - Knowledge-base about WSH environment
- 😎 Redsky Software - PoC(Proof of Concept) of the CommonJS on WSH environment
- 😎 Inspired by a small-sized JavaScript payload demonstrated by a cybersecurity related group.
- 😎 Inspired by the use of Named Shared Memory in an inter-language IPC implementation devised by an unidentified developer.
- 👀 Fediverse
- 👀 Hacker News
- 👀 WebToolsWeekly
- 👀 GeekNews in GeekNews Weekly (2024-09-30 ~ 2024-10-06)
- 👀 daily.dev
- 👀 PitchHut
- 👀 Disquiet
Report abuse
Join the community
I am always open. Collaboration, opportunities, and community activities are all welcome.
- ActivityPub @catswords_oss@catswords.social
- XMPP catswords@conference.omemo.id
- Join Catswords OSS on Microsoft Teams (teams.live.com)
- Join Catswords OSS #welsonjs on Discord (discord.gg)
Special channels
- A paid consultation channel (m.expert.naver.com) is available for Korean (한국어) region.
- Join the private operations channel (forms.gle) is available for all regions.