2.4.0 • Published 7 months ago

@wcardinal/wcardinal v2.4.0

Weekly downloads
2
License
Apache-2.0
Repository
github
Last release
7 months ago

WinterCardinal

WinterCardinal is a library for real-time web applications build on top of the Spring framework. It is designed for making single-page applications stable against unintended network/server failures. The controller class and its fields defined on a server will be synchronized with clones on browsers in real time. Also enables us to call methods defined on the controller class from browsers.

import org.wcardinal.controller.annotation.AbstractController;
import org.wcardinal.controller.annotation.Controller;
import org.wcardinal.controller.annotation.Callable;

@Controller
class MyController extends AbstractController {
	@Autowired
	SLong field;

	@OnCreate
	void init() {
		field.set(42);
	}

	@Callable
	String hello(String name) {
		return "Hello, " + name + "!";
	}

	void method() {
		trigger("eventname", 42);
	}
}
<script src="./my-controller"></script>
<script>
	// Accessing Fields
	console.log(myController.field.get()); // Prints 42
	myController.field.set(84);

	// Calling Methods
	console.log(await myController.hello("Cardinal")); // Prints "Hello, Cardinal!"

	// Catching Events
	myController.on("eventname", (e, value) => {
		console.log(value); // Prints 42
	});
</script>

Installation

Gradle

dependencies {
	compile 'com.github.winter-cardinal:winter-cardinal:latest.release'
}

Client-side libraries are packed in this JAR as a WebJars. Please find the wcardinal.worker.min.js in the directory META-INF/resources/webjars/wcardinal/${version}/. WebJars can be loaded from browsers as follows:

<script src="webjars/wcardinal/wcardinal.worker.min.js"></script>

Please note that the ${version} part is omitted. The worker version wcardinal.worker.min.js is strongly recommended over the non-worker version wcardinal.min.js as the setTimeout is not reliable in some cases.

NPM

The client-side libraries are also available as a NPM package.

$> npm i @wcardinal/wcardinal

Please note that the NPM package has no default exports.

import * as wcardinal from "@wcardinal/wcardinal";

CDN

<script src="https://cdn.jsdelivr.net/npm/@wcardinal/wcardinal/dist/wcardinal.worker.min.js"></script>
<script src="./my-controller"></script>

All the classes are in window.wcardinal in this case. Note that the wcardinal.worker.min.js must be loaded before loading your controller as shown above.

Documentation

Compatibility Matrix

WinterCardinal VersionJDK VersionSpring Boot Version
1.0.x82.2.4.RELEASE
1.1.082.7.18
2.0.0 to 2.2.0173.3.1

How to Build

JS for Release

npm run build

JS for Development

npm run watch:ts

and then in an another terminal

npm run watch:rollup

Java API Document

./gradlew compileJavaApiDocument

JS API Document

npm run build:api

Cheatsheet

./gradlew compileCheatsheet

Publishing

JARs to Sonatype

In ~/.gradle/gradle.properties, add

signing.keyId=<SIGNING-KEYID>
signing.password=<SIGNING-PASSWORD>
signing.secretKeyRingFile=<SIGNING-SECRETRINGFILE>

ossrhUsername=<OSSRH-USERNAME>
ossrhPassword=<OSSRH-PASSWORD>
ossrhName=<OSSRH-NAME>
ossrhEMail=<OSSRH-EMAIL>

ossrhToken=<OSSRH-USER-TOKEN>
ossrhTokenPassword=<OSSRH-USER-TOKEN-PASSWORD>

and then execute

./gradlew publishToSonatype
./gradlew closeAndReleaseRepository

Or close and release via Nexus repository manager.

NPM

npm publish

License

Apache License Version 2.0

2.3.0

7 months ago

2.2.0

7 months ago

2.4.0

7 months ago

1.1.0

1 year ago

2.1.0

1 year ago

2.0.0

1 year ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.1.2

6 years ago

0.1.1

6 years ago