welsonjs/README.md

139 lines
6.7 KiB
Markdown
Raw Normal View History

2020-06-28 14:19:26 +00:00
# welsonjs
2023-09-06 09:25:49 +00:00
WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.
2023-11-14 08:48:02 +00:00
Now, You can build an Windows desktop app with JavaScript, TypeScript, 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
2023-11-14 08:51:01 +00:00
I presented this project in [the open-source contest in the Republic of Korea in November 2023](https://www.slideshare.net/gnh1201/welsonjs-2023).
2023-11-10 01:29:08 +00:00
2020-07-05 02:49:10 +00:00
## Structure
2020-11-04 09:35:57 +00:00
![Structure](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/etianen/html5media](https://github.com/etianen/html5media)
- [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)
- [github.com/BorisMoore/jsrender](https://github.com/BorisMoore/jsrender)
2022-02-24 01:42:46 +00:00
- [Includes binaries](https://github.com/gnh1201/welsonjs/blob/master/bin/README.MD)
2021-04-25 12:47:05 +00:00
- [module.exports](https://nodejs.org/en/knowledge/getting-started/what-is-require/), CommonJS, UMD compatibility
2021-08-10 16:49:06 +00:00
- [NPM](https://www.npmjs.com/) compatibility
2023-09-07 11:43:45 +00:00
- [gRPC](https://grpc.io/) protocol support (New feature in 2023) [see video demo](https://youtu.be/GqbU5JKuLac)
2020-07-21 02:56:37 +00:00
2020-07-07 22:47:31 +00:00
## Included libraries
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)
2023-12-04 09:59:22 +00:00
- lib/http (HTTP interface with MSXML and cURL)
- lib/json (JSON library)
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)
2023-12-04 09:59:22 +00:00
- lib/oldbrowser (ES5, HTML5/CSS3 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)
2023-12-04 09:59:22 +00:00
- lib/msoffice (Microsoft Office (e.g. Excel) interface)
2021-07-28 04:14:05 +00:00
- lib/gtk (GTK/GladeXML server GUI interface)
2021-07-28 04:13:15 +00:00
- lib/chrome (Chrome Web Browser Debugging interface)
2021-08-10 16:49:06 +00:00
- lib/toolkit (`WelsonJS.Toolkit` native component)
2022-09-28 01:33:39 +00:00
- lib/pipe-ipc (PIPE-based IPC(Inter-Process Communication) implementation)
2023-12-04 09:59:22 +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
2020-11-06 01:21:09 +00:00
![Screenshot 1](app/assets/img/screenshot.png)
## Thanks!
![Thanks 1](app/assets/img/thanks.png)
2020-11-06 01:24:34 +00:00
- https://www.facebook.com/javascript4u/posts/1484014618472735
- https://python5.com/q/xtbsqjxb
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
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
2020-07-05 02:49:32 +00:00
## Contact me
2023-11-24 07:28:17 +00:00
If you have any inquiries about this project or if you are interested in becoming a partner, please feel free to contact us. By becoming an official partner, you can initiate exclusive (e.g. EULA) projects using WelsonJS. Explore the potential for achievements in various areas, such as website quality improvement and performance evaluation automation, with WelsonJS.
2023-08-07 08:30:01 +00:00
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)