2020-06-28 14:19:26 +00:00
# welsonjs
2024-04-02 04:58:09 +00:00
[![FOSSA Status ](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fgnh1201%2Fwelsonjs.svg?type=shield )](https://app.fossa.com/projects/git%2Bgithub.com%2Fgnh1201%2Fwelsonjs?ref=badge_shield)
2024-08-20 23:01:31 +00:00
[![AppVeyor Status ](https://ci.appveyor.com/api/projects/status/github/gnh1201/welsonjs?svg=true )](https://ci.appveyor.com/project/gnh1201/welsonjs)
2024-10-18 12:41:51 +00:00
[![DOI 10.5281/zenodo.11382384 ](https://zenodo.org/badge/DOI/10.5281/zenodo.11382384.svg )](https://doi.org/10.5281/zenodo.11382384)
2024-11-03 17:18:21 +00:00
[![ChatGPT available ](https://img.shields.io/badge/ChatGPT-74aa9c?logo=openai&logoColor=white )](https://catswords-oss.rdbl.io/5719744820/8278298336)
2024-11-03 17:22:15 +00:00
[![Anthropic available ](https://img.shields.io/badge/Anthropic-000000?logo=Anthropic&logoColor=white )](https://catswords-oss.rdbl.io/5719744820/8278298336)
2024-10-23 06:31:53 +00:00
[![slideshare.net available ](https://img.shields.io/badge/SlideShare-black?logo=slideshare )](https://www.slideshare.net/slideshow/welsonjs-2023/263181443)
2024-04-02 04:58:09 +00:00
2024-10-03 04:57:09 +00:00
< img src = "app/assets/img/logo.svg" height = "32" alt = "" / > WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.
2023-09-06 09:25:49 +00:00
2024-11-18 07:40:58 +00:00
![A Cover Image: Windows in 1999 ](https://ics.catswords.net/cover.png )
2024-01-05 07:01:15 +00:00
2024-03-19 08:17:15 +00:00
Now, You can build an Windows desktop app with JavaScript, TypeScript, CoffeeScript, ReScript, and HTML/CSS on Windows built-in ECMAScript engine.
2020-07-05 02:49:10 +00:00
2024-07-30 04:22:05 +00:00
WelsonJS = ** *W***indows + ** *El***ectr***on***-like + ** *Javascript(JS)*** + [Your contribution ](https://github.com/sponsors/gnh1201 )
2023-01-31 03:04:14 +00:00
2023-07-19 02:34:37 +00:00
Dual license notice: 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.
2023-07-19 02:33:58 +00:00
2024-09-23 13:35:46 +00:00
## Sponsors
2024-10-23 08:58:47 +00:00
- :octocat: [GitHub Sponsors ](https://github.com/sponsors/gnh1201 )
2024-11-18 07:40:58 +00:00
- < img src = "https://ics.catswords.net/logo_oss.gif" height = "32" alt = "" /> [Open Software Portal ](https://oss.kr ), Korea National Industry Promotion Agency - Awarded Prize
2024-10-23 09:15:34 +00:00
- < img src = "https://ics.catswords.net/signpath_logo.png" height = "32" alt = "" /> Free code signing provided by [SignPath.io ](https://signpath.io ), certificate by [SignPath Foundation ](https://signpath.org/ )
2024-11-19 16:17:48 +00:00
- < img src = "https://ics.catswords.net/f1security_logo.png" height = "32" alt = "" /> [F1Security ](https://azuremarketplace.microsoft.com/ko-kr/marketplace/apps/1599123192819.uwss?tab=overview ) provides web security services designed by [industry-leading experts ](https://www.ksecurity.or.kr/kisis/subIndex/469.do ).
2024-10-24 14:20:45 +00:00
- :zap: [Integrations ](https://catswords-oss.rdbl.io/5719744820/8278298336 ) ([ScrapeOps](https://scrapeops.io?fpr=namhyeon75), [SearchApi ](https://www.searchapi.io/?via=namhyeon ), ...)
2024-09-25 13:36:31 +00:00
2020-07-05 02:49:10 +00:00
## Structure
2024-10-23 11:45:40 +00:00
![The structure of the WelsonJS framework can be extended based on whether it operates in a console (command prompt) environment, a GUI (with HTML/CSS) environment, or a service environment, with the `app.js` file at its core. ](https://ics.catswords.net/structure.png )
2020-07-07 22:47:31 +00:00
2020-07-21 02:56:37 +00:00
## Specifications
2023-08-04 13:35:59 +00:00
- Built-in transpilers: [TypeScript ](https://www.typescriptlang.org/ ), [Rescript ](https://rescript-lang.org/ ), [CoffeeScript 2 ](https://coffeescript.org/ ), [LiveScript ](https://livescript.net/ )
- Ready to use on Windows machine immediately. No require additional software installation.
2022-02-08 02:48:58 +00:00
- ES5(ECMAScript 5), XML, JSON, YAML compatibility
2023-11-22 09:02:03 +00:00
- [github.com/zloirock/core-js ](https://github.com/zloirock/core-js )
- [github.com/douglascrockford/JSON-js ](https://github.com/douglascrockford/JSON-js ) (aka. JSON2.js)
- [github.com/nodeca/js-yaml ](https://github.com/nodeca/js-yaml )
2020-11-14 16:11:51 +00:00
- HTML5, CSS3 compatibility
2023-11-22 09:02:03 +00:00
- [github.com/aFarkas/html5shiv ](https://github.com/aFarkas/html5shiv )
- [github.com/parndt/jquery-html5-placeholder-shim ](https://github.com/parndt/jquery-html5-placeholder-shim )
- [github.com/scottjehl/Respond ](https://github.com/scottjehl/Respond )
- [github.com/keithclark/selectivizr ](https://github.com/keithclark/selectivizr )
- [github.com/arv/ExplorerCanvas ](https://github.com/arv/ExplorerCanvas )
- [github.com/Modernizr/Modernizr ](https://github.com/Modernizr/Modernizr )
2024-09-26 06:49:14 +00:00
- CSS Frameworks
2023-11-22 09:02:03 +00:00
- [github.com/jslegers/cascadeframework ](https://github.com/jslegers/cascadeframework )
2024-09-26 06:49:14 +00:00
- [github.com/golden-layout/golden-layout ](https://github.com/golden-layout/golden-layout )
2023-11-22 09:02:03 +00:00
- WYSIWYG HTML Editor
- [github.com/summernote/summernote ](https://github.com/summernote/summernote )
2020-11-25 06:10:02 +00:00
- Included libraries
- [jQuery ](https://jquery.com/ )
- [jQuery UI ](https://jqueryui.com/ )
2024-08-29 10:13:52 +00:00
- [github.com/kamranahmedse/jquery-toast-plugin ](https://github.com/kamranahmedse/jquery-toast-plugin ) - Highly customizable jquery plugin to show toast messages
2024-08-29 10:13:12 +00:00
- [github.com/hiddentao/squel ](https://github.com/hiddentao/squel ) - SQL query string builder for Javascript
2024-08-29 10:13:52 +00:00
- [github.com/BorisMoore/jsrender ](https://github.com/BorisMoore/jsrender ) - A lightweight, powerful and highly extensible templating engine. In the browser or on Node.js, with or without jQuery.
2024-04-06 06:17:59 +00:00
- [github.com/mihaifm/linq ](https://github.com/mihaifm/linq ) - LINQ for JavaScript
2024-08-29 10:12:26 +00:00
- [github.com/pegjs/pegjs ](https://github.com/pegjs/pegjs ) - PEG.js: Parser generator for JavaScript
2024-11-14 18:51:50 +00:00
- [github.com/numbers/numbers.js ](https://github.com/numbers/numbers.js ) - Advanced Mathematics Library for Node.js and JavaScript
2024-04-07 07:02:06 +00:00
- [module.exports ](https://nodejs.org/api/modules.html#moduleexports ), CommonJS, UMD compatibility
2021-08-10 16:49:06 +00:00
- [NPM ](https://www.npmjs.com/ ) compatibility
2024-03-20 17:05:12 +00:00
- [Chrome DevTools Protocol ](https://chromedevtools.github.io/devtools-protocol/ ) support
2024-04-07 07:01:10 +00:00
- [ADB(Android Debug Bridge) ](https://source.android.com/docs/setup/build/adb ) support
2024-04-07 06:58:21 +00:00
- RPC(Remote Procedure Call) protocol support
- [gRPC ](https://grpc.io/ )
- [JSON-RPC 2.0 ](https://www.jsonrpc.org/specification )
2020-07-21 02:56:37 +00:00
2024-03-20 17:05:12 +00:00
## Included modules
2020-07-19 06:36:24 +00:00
- lib/std (Standard library)
2023-12-04 09:59:22 +00:00
- lib/system (System interface)
- lib/base64 (BASE64 encode and decode)
2020-07-19 06:36:24 +00:00
- lib/file (File I/O interface)
2024-10-19 12:04:34 +00:00
- lib/http (HTTP/HTTPS client with [XHR(MSXML) ](https://developer.mozilla.org/docs/Glossary/XMLHttpRequest ), [cURL ](https://curl.se/ ), [BITS ](https://en.m.wikipedia.org/w/index.php?title=Background_Intelligent_Transfer_Service ), [CERT ](https://github.com/MicrosoftDocs/windowsserverdocs/blob/main/WindowsServerDocs/administration/windows-commands/certutil.md ), [Proxy/SEO/SERP ](https://catswords-oss.rdbl.io/5719744820/1706431912 ))
2020-07-19 06:36:24 +00:00
- lib/registry (Windows Registry interface)
2023-12-04 09:59:22 +00:00
- lib/security (Windows Security Policy interface)
- lib/shell (Windows Shell (Command Prompt) interface)
2020-07-19 06:36:24 +00:00
- lib/powershell (Windows Powershell interface)
2020-07-23 06:08:38 +00:00
- lib/service (Windows Service interface)
2024-03-20 17:05:12 +00:00
- lib/browser (Modern web compatibility layer)
2020-07-27 02:31:52 +00:00
- lib/uri (URI scheme interface)
2020-07-27 05:56:43 +00:00
- lib/winlibs (Windows DLL(Dynamic-link library) interface)
2022-02-24 01:41:18 +00:00
- lib/autohotkey ([AutoHotkey](https://www.autohotkey.com/) interface)
- lib/autoit ([AutoIt3/AutoItX](https://www.autoitscript.com/) interface)
2024-01-27 04:51:32 +00:00
- lib/msoffice (Microsoft Office (e.g. Excel, PowerPoint, Word) interface)
- lib/gtk (GTK-server and GladeXML supported GUI interface)
2024-03-20 17:05:12 +00:00
- lib/chrome ([Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) based Chrome/Chromium web browser testing interface)
2024-07-30 06:42:32 +00:00
- lib/pipe-ipc (PIPE (e.g., File IO, Standard IO) based IPC(Inter-Process Communication) implementation)
2024-10-18 13:24:55 +00:00
- [WelsonJS.Toolkit ](https://catswords-oss.rdbl.io/5719744820/0811015590 ) (DLL/COM component with .NET 2.0, For all Windows based systems)
2024-07-30 04:39:28 +00:00
- User prompt methods (e.g., alert, confirm) implementation
2024-08-22 23:56:01 +00:00
- Useful tools to control the windows and window handle (find, attach, trigger events. e.g., Virtual Human Interface
2024-07-30 04:39:28 +00:00
- Cryptography ([ISO/IEC 18033-3:2010](https://www.iso.org/standard/54531.html) aka. [HIGHT ](https://seed.kisa.or.kr/kisa/algorithm/EgovHightInfo.do ))
2024-07-13 07:20:08 +00:00
- [Named Shared Memory ](https://learn.microsoft.com/en-us/windows/win32/memory/creating-named-shared-memory ) based IPC(Inter-Process Communication) implementation [# ](https://qiita.com/gnh1201/items/4e70dccdb7adacf0ace5 )
2024-10-22 09:22:48 +00:00
- [NuGet package ](https://www.nuget.org/packages/WelsonJS.Toolkit ) available
2024-10-18 13:24:55 +00:00
- [WelsonJS.Service ](https://catswords-oss.rdbl.io/5719744820/0811015590 ) (Windows Service Application, For recent Windows based systems)
2024-07-30 06:43:17 +00:00
- Write a Windows Service Application with JavaScript
2024-10-18 13:24:55 +00:00
- [File Event Monitor ](https://catswords-oss.rdbl.io/5719744820/6159022056 ): Trace file creation, network connections, and registry modifications.
- [Screen Time Feature ](https://catswords-oss.rdbl.io/5719744820/8803957194 ): Find an image position on the computer screens or windows.
- [WelsonJS.Launcher ](https://catswords-oss.rdbl.io/5719744820/4131485779 ) (Launcher Application, For recent Windows based systems)
2024-08-22 23:46:33 +00:00
- This is a launcher app designed to easily distribute WelsonJS application packages (based on ZIP compression files).
2024-11-03 17:18:21 +00:00
- [ChatGPT ](https://openai.com/index/chatgpt/ ) or [Anthropic/Claude ](https://claude.ai/ ) integration
2024-03-20 17:05:12 +00:00
- Everything you can imagine.
2020-07-05 02:49:32 +00:00
2020-07-21 04:10:36 +00:00
## Make your own `sayhello` example
2020-07-21 04:10:15 +00:00
2022-01-12 12:48:29 +00:00
### 1. Write a file `lib/sayhello.js`
2023-12-04 10:01:58 +00:00
```js
// lib/sayhello.js
2023-12-04 09:59:22 +00:00
function say() {
2020-07-21 04:10:15 +00:00
console.log("hello");
}
2023-12-04 09:59:22 +00:00
exports.say = say;
exports.VERSIONINFO = "SayHello Library (sayhello.js) version 0.1";
exports.AUTHOR = "abuse@catswords.net"; // e.g. YOUR EMAIL ADDRESS
exports.global = global;
exports.require = global.require;
2020-07-21 04:10:15 +00:00
```
2020-07-21 04:13:41 +00:00
### 2. Write a file `sayhello.js`
2023-12-04 10:01:58 +00:00
```js
// sayhello.js
2022-01-12 12:48:29 +00:00
var SayHello = require("lib/sayhello");
function main() {
console.log("calling say()");
SayHello.say();
console.log("ended say()");
}
exports.main = main;
2020-07-21 04:10:15 +00:00
```
2020-07-21 04:13:41 +00:00
### 3. Execute file on the command prompt
2023-12-04 10:01:58 +00:00
```cmd
2024-07-30 06:40:17 +00:00
C:\Users\knh94\Documents\GitHub\welsonjs> cscript app.js sayhello
2022-01-12 12:48:29 +00:00
calling say()
2020-07-21 04:10:15 +00:00
hello
2022-01-12 12:48:29 +00:00
ended say()
2020-07-21 04:10:15 +00:00
```
2024-08-22 23:28:12 +00:00
## How to release my application?
2024-09-23 14:27:06 +00:00
The WelsonJS framework suggests the following application release methods:
2024-08-22 23:28:12 +00:00
2024-10-18 13:24:55 +00:00
- **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 ](https://catswords-oss.rdbl.io/5719744820/4131485779 ).
2024-09-23 14:27:06 +00:00
- **Build a setup file**: Use [Inno Setup ](https://jrsoftware.org/isinfo.php ). Information needed to create the setup file (the `setup.iss` file) is already included.
- **Copy all directories and files**: This is the simplest and most straightforward method.
2020-11-09 08:40:58 +00:00
2022-01-12 12:48:29 +00:00
## Screenshots
2024-10-23 11:45:40 +00:00
![(Screenshot 1) GUI environment ](https://ics.catswords.net/screenshot.png )
2024-03-19 08:17:15 +00:00
2024-10-23 11:45:40 +00:00
![(Screenshot 2) Command-line environment ](https://ics.catswords.net/screenshot2.png )
2020-11-06 01:21:09 +00:00
2024-10-23 11:45:40 +00:00
![(Screenshot 3) WelsonJS with Microsoft Excel ](https://ics.catswords.net/screenshot3.png )
2023-12-28 04:02:40 +00:00
2024-10-23 11:45:40 +00:00
![(Screenshot 4) Write a Windows Services with JavaScript ](https://ics.catswords.net/screenshot4.png )
2024-07-22 16:07:21 +00:00
2024-10-23 11:45:40 +00:00
![(Screenshot 5) Template Matching on the computer screen ](https://ics.catswords.net/screenshot5.png )
2024-07-30 06:40:17 +00:00
2024-10-23 11:45:40 +00:00
![(Screenshot 6) The Launcher for WelsonJS Application Packages ](https://ics.catswords.net/screenshot6.png )
2024-08-21 19:16:36 +00:00
2024-09-23 13:29:45 +00:00
## Thanks to
2024-10-23 11:55:31 +00:00
- :sunglasses: Heavy-industry specialized CSP(Cloud Service Provider) in Republic of Korea - Use case establishment
- :sunglasses: Live-commerce specialized online advertisement companies in Republic of Korea - Use case establishment
- :sunglasses: Information security companies in Republic of Korea - Use case establishment
2024-10-23 11:48:11 +00:00
- :eyes: Facebook Group "Javascript Programming"(javascript4u) - [Mentioned ](https://www.facebook.com/javascript4u/posts/build-a-windows-desktop-apps-with-javascript-html-and-cssmorioh-javascript-html-/1484014618472735/ )
2024-10-23 09:08:19 +00:00
- :eyes: morioh.com - [Mentioned ](https://morioh.com/a/23c427a82bf1/build-a-windows-desktop-apps-with-javascript-html-and-css )
- :eyes: CSDN - Mentioned
- :eyes: Qiita - Knowledge-base about WSH environment
- :eyes: Redsky Software - PoC(Proof of Concept) of the CommonJS on WSH environment
2024-10-23 11:55:31 +00:00
- :sunglasses: Inspired by a small-sized JavaScript payload demonstrated by a cybersecurity related group.
- :sunglasses: Inspired by the use of Named Shared Memory in an inter-language IPC implementation devised by an unidentified developer.
2024-10-23 09:08:19 +00:00
- :eyes: Fediverse - Mentioned
- :eyes: Hacker News - [Mentioned ](https://news.ycombinator.com/item?id=41316782 )
- :eyes: WebToolsWeekly - [Mentioned ](https://webtoolsweekly.com/archives/issue-585/ )
2024-10-23 11:48:11 +00:00
- :eyes: GeekNews - [Mentioned ](https://news.hada.io/weekly/202441 ) in GeekNews Weekly (2024-09-30 ~ 2024-10-06)
2024-11-05 05:29:17 +00:00
- :eyes: daily.dev - [Mentioned ](https://app.daily.dev/posts/js-libraries-svg-tools-json-databases-8quregz3a )
- :eyes: PitchHut - [Mentioned ](https://www.pitchhut.com/project/proj_Ya136OLSW5at )
2020-11-04 09:35:57 +00:00
2024-07-30 06:40:17 +00:00
## Related links
2020-11-04 08:46:41 +00:00
- [gnh1201/wsh-js-gtk ](https://github.com/gnh1201/wsh-js-gtk ) - GTK GUI ported to Windows Scripting Host - Javascript (Microsoft JScript) (wsh-js)
- [gnh1201/wsh-json ](https://github.com/gnh1201/wsh-json ) - JSON stringify/parse (encode/decode) for Windows Scripting Host
- [redskyit/wsh-appjs ](https://github.com/redskyit/wsh-appjs ) - require-js and app framework for Windows Scripting Host JavaScript
- [JohnLaTwC's gist ](https://gist.github.com/JohnLaTwC/4315bbbd89da0996f5c08c032b391799 ) - JavaScript RAT
- [JSMan-/JS-Framework ](https://github.com/JSMan-/JS-Framework ) - No description
- [iconjack/setTimeout-for-windows-script-host ](https://github.com/iconjack/setTimeout-for-windows-script-host ) - Replacement for the missing setTimeout and clearTimeout function in Windows Script Host
- [johnjohnsp1/WindowsScriptHostExtension ](https://github.com/johnjohnsp1/WindowsScriptHostExtension ) - Inject DLL Prototype using Microsoft.Windows.ACTCTX COM Object
- [kuntashov/jsunit ](https://github.com/kuntashov/jsunit ) - JSUnit port for Windows Scripting Host
- [nickdoth/WSHHttpServer ](https://github.com/nickdoth/WSHHttpServer ) - HTTP server based on Windows Script Host
2024-10-03 05:40:04 +00:00
- FOSSA report [HTML ](https://ics.catswords.net/fossa_report.html ) [CSV ](https://ics.catswords.net/fossa_report.csv ) [TXT ](https://ics.catswords.net/fossa_report.txt )
2024-05-22 04:44:38 +00:00
- [License attributions of a stock images ](https://policy.catswords.social/stock_images.html )
2021-12-09 03:03:33 +00:00
2024-03-20 02:22:37 +00:00
## Report abuse
2024-09-15 14:29:51 +00:00
- [GitHub Security Advisories ](https://github.com/gnh1201/welsonjs/security )
2022-11-25 14:11:37 +00:00
- abuse@catswords.net
2023-08-08 05:37:48 +00:00
- ActivityPub [@catswords_oss@catswords.social ](https://catswords.social/@catswords_oss )
2024-11-10 21:12:38 +00:00
- XMPP [catswords@conference.omemo.id ](xmpp:catswords@conference.omemo.id?join )
2024-11-20 09:47:20 +00:00
- [Join Catswords OSS on Microsoft Teams (teams.live.com) ](https://teams.live.com/l/community/FEACHncAhq8ldnojAI )
- [Join Catswords OSS #welsonjs on Discord (discord.gg) ](https://discord.gg/XKG5CjtXEj )
2024-11-20 10:30:27 +00:00
- [Join Catswords OSS on Gather (app.gather.town) ](https://app.gather.town/invite?token=IE2AYZDpS-Ocu3SzpSc0 )
2024-04-01 09:05:12 +00:00
## License
2024-05-22 04:44:38 +00:00
[![FOSSA Status ](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fgnh1201%2Fwelsonjs.svg?type=large )](https://app.fossa.com/projects/git%2Bgithub.com%2Fgnh1201%2Fwelsonjs?ref=badge_large)