welsonjs/README.md

163 lines
8.9 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)
2023-09-06 09:25:49 +00:00
WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.
2024-03-19 08:17:15 +00:00
![(Cover Image) A man programming against a power plant facility, the screen that the man is watching shows the Windows logo](app/assets/img/overture.jpg)
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
2023-11-14 08:49:05 +00:00
WelsonJS = ***W***indows + ***El***ectr***on***-like + ***Javascript(JS)*** + [Your contribution](FUNDING.yml)
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)
- [github.com/hiddentao/squel](https://github.com/hiddentao/squel)
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
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-03-20 17:05:12 +00:00
- lib/http (HTTP client with MSXML/cURL)
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)
2022-09-28 01:33:39 +00:00
- lib/pipe-ipc (PIPE-based IPC(Inter-Process Communication) implementation)
2024-03-20 17:09:23 +00:00
- lib/toolkit (`WelsonJS.Toolkit` native component)
- Find and attach a handle of the window
- alert(), prompt() implementation in console mode
- Virtualized Human Interfaces
- Cryptography
- [Named Shared Memory](https://learn.microsoft.com/en-us/windows/win32/memory/creating-named-shared-memory) based IPC(Inter-Process Communication) implementation
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
2023-12-04 09:59:22 +00:00
C:\Users\oss\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
```
2022-01-12 12:48:29 +00:00
## How to make your own setup file
- Please check `setup.iss` file it could be compile with [Inno Setup](https://jrsoftware.org/isinfo.php)
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-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
2020-11-04 09:35:57 +00:00
2020-07-08 08:36:14 +00:00
## Related projects
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-04-02 04:39:27 +00:00
- Check 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)
2020-07-08 08:36:14 +00:00
2021-12-09 03:03:33 +00:00
## Image stocks
- [7418_blocks_color_modules_rgb_square_icon](https://www.iconfinder.com/icons/7418/blocks_color_modules_rgb_square_icon) (Icon File) - Sergio Sanchesz Lopez, Futurosoft
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)
## License
[![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)