welsonjs/README.md

190 lines
12 KiB
Markdown
Raw Normal View History

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-08-20 07:03:27 +00:00
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.11382384.svg)](https://doi.org/10.5281/zenodo.11382384)
2024-04-02 04:58:09 +00:00
2023-09-06 09:25:49 +00:00
WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.
2024-07-30 03:53:27 +00:00
![(Cover Image) Windows in 1999](app/assets/img/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
2020-07-05 02:49:10 +00:00
## Structure
2024-03-19 08:17:15 +00:00
![Structure Overview](app/assets/img/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)
2020-11-21 13:33:07 +00:00
- Default CSS Framework
2023-11-22 09:02:03 +00:00
- [github.com/jslegers/cascadeframework](https://github.com/jslegers/cascadeframework)
- 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/)
2023-11-22 09:02:03 +00:00
- [github.com/kamranahmedse/jquery-toast-plugin](https://github.com/kamranahmedse/jquery-toast-plugin)
2024-08-29 10:13:12 +00:00
- [github.com/hiddentao/squel](https://github.com/hiddentao/squel) - SQL query string builder for Javascript
2024-04-06 06:17:59 +00:00
- [github.com/BorisMoore/jsrender](https://github.com/BorisMoore/jsrender) - Templating engine
- [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
2022-02-24 01:42:46 +00:00
- [Includes binaries](https://github.com/gnh1201/welsonjs/blob/master/bin/README.MD)
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-07-31 09:17:09 +00:00
- lib/http (HTTP 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))
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)
- 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-08-22 23:56:01 +00:00
- [WelsonJS.Toolkit](https://github.com/gnh1201/welsonjs/wiki/Awesome-binaries) (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-08-22 23:44:42 +00:00
- [WelsonJS.Service](https://github.com/gnh1201/welsonjs/wiki/Awesome-binaries) (Windows Service Application, For recent Windows based systems)
2024-07-30 06:43:17 +00:00
- Write a Windows Service Application with JavaScript
2024-07-30 04:41:50 +00:00
- Find an image position on the computer screens or windows
2024-08-22 23:44:42 +00:00
- [WelsonJS.Launcher](https://github.com/gnh1201/welsonjs/wiki/Awesome-binaries) (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).
2023-12-28 04:20:11 +00:00
- lib/chatgpt ([ChatGPT](https://openai.com/chatgpt) 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?
### Method 1. Compress to Zip, and Use `WelsonJS.Launcher`
There have been various attempts at EXE packaging for WelsonJS, and I've reviewed as much feedback as possible. This includes not only usability but also whether the process is relatively secure.
2024-08-22 23:29:40 +00:00
I have tentatively concluded that a launcher method, where a ZIP file is distributed and then executed, would be effective. Therefore, I have begun distributing the [WelsonJS.Launcher](https://github.com/gnh1201/welsonjs/wiki/Awesome-binaries) artifact.
2024-08-22 23:28:12 +00:00
2024-08-22 23:29:40 +00:00
You can download and run the release or upstream source code of this project from GitHub in ZIP file format.
2024-08-22 23:28:12 +00:00
### Method 2. Build a setup file with `Inno Setup`
Please check `setup.iss` file it could be compile with [Inno Setup](https://jrsoftware.org/isinfo.php)
### Method 3. Copy all directories and files
This is so cool and so simple.
2020-11-09 08:40:58 +00:00
2022-01-12 12:48:29 +00:00
## Screenshots
2024-03-19 08:17:15 +00:00
![(Screenshot 1) GUI environment](app/assets/img/screenshot.png)
![(Screenshot 2) Command-line environment](app/assets/img/screenshot2.png)
2020-11-06 01:21:09 +00:00
2024-03-19 08:17:15 +00:00
![(Screenshot 3) WelsonJS with Microsoft Excel](app/assets/img/screenshot3.png)
2023-12-28 04:02:40 +00:00
2024-07-22 16:07:21 +00:00
![(Screenshot 4) Write a Windows Services with JavaScript](app/assets/img/screenshot4.png)
2024-07-30 06:40:17 +00:00
![(Screenshot 5) Template Matching on the computer screen](app/assets/img/screenshot5.png)
2024-08-21 19:16:36 +00:00
![(Screenshot 6) The Launcher for WelsonJS Application Packages](app/assets/img/screenshot6.png)
2024-03-19 08:17:15 +00:00
## Thanks to
2024-03-20 16:05:15 +00:00
- <img src="app/assets/img/logo_oss.gif" height="30" alt=""/> Open Software Portal, Korea National Industry Promotion Agency - Awarded Prize
- 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
2024-03-20 16:25:08 +00:00
- <img src="app/assets/img/morioh.svg" height="30" alt=""/> morioh.com - Mentioned
- <img src="app/assets/img/CSDN_Logo.svg" height="30" alt=""/> CSDN - Mentioned
- <img src="app/assets/img/qiita-logo.png" height="30" alt=""/> Qiita - Knowledge-base about WSH environment
2024-03-20 16:05:15 +00:00
- <img src="app/assets/img/RedSky-logo-web.webp" height="30" alt=""/> Redsky Software - PoC(Proof of Concept) of the CommonJS on WSH environment
2024-03-20 16:44:47 +00:00
- Inspired by a small-sized JavaScript payload demonstrated by a cybersecurity related group.
2024-03-20 17:05:12 +00:00
- Inspired by the use of Named Shared Memory in an inter-language IPC implementation devised by an unidentified developer.
2024-03-20 16:53:18 +00:00
- <img src="app/assets/img/Fediverse_logo_proposal.svg" height="30" alt=""/> Fediverse - Mentioned
2024-08-23 04:11:32 +00:00
- <img src="app/assets/img/Hackernews_logo.png" height="30" alt=""/> Hacker News - Mentioned
2024-06-21 05:31:11 +00:00
- [GitHub Sponsors](https://github.com/sponsors/gnh1201)
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-05-22 04:44:38 +00:00
- FOSSA report [HTML](https://pub-f926e14287b340cd9eff33731bb25329.r2.dev/fossa_report.html) [CSV](https://pub-f926e14287b340cd9eff33731bb25329.r2.dev/fossa_report.csv) [TXT](https://pub-f926e14287b340cd9eff33731bb25329.r2.dev/fossa_report.txt)
- [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
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-07-12 07:26:13 +00:00
- [Join Catswords on Microsoft Teams](https://teams.live.com/l/community/FEACHncAhq8ldnojAI)
## 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)