Repository: weavejester/haslett Branch: master Commit: 83c7d5e3e70d Files: 11 Total size: 11.6 KB Directory structure: gitextract_bh_f4pej/ ├── .github/ │ └── workflows/ │ └── test.yml ├── .gitignore ├── .travis.yml ├── README.md ├── package.json ├── project.clj ├── src/ │ └── haslett/ │ ├── client.cljs │ └── format.cljs └── test/ └── haslett/ ├── client_test.cljs ├── test_runner.clj └── test_runner.cljs ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/workflows/test.yml ================================================ name: Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Prepare java uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '8' - name: Prepare node uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' - name: Install NPM dependencies run: npm ci - name: Install clojure tools uses: DeLaGuardo/setup-clojure@12.5 with: lein: 2.9.10 - name: Cache clojure dependencies uses: actions/cache@v4 with: path: ~/.m2/repository key: cljdeps-${{ hashFiles('project.clj') }} restore-keys: cljdeps- - name: Run tests run: lein test ================================================ FILE: .gitignore ================================================ /target /classes /checkouts pom.xml pom.xml.asc *.jar *.class /.lein-* /.nrepl-port .hgignore .hg/ /node_modules /.clj-kondo ================================================ FILE: .travis.yml ================================================ language: clojure dist: trusty addons: chrome: stable install: - npm install karma karma-cljs-test --save-dev - npm install -g karma-cli - npm install karma-chrome-launcher --save-dev script: - lein test ================================================ FILE: README.md ================================================ # Haslett [![Build Status](https://github.com/weavejester/haslett/actions/workflows/test.yml/badge.svg)](https://github.com/weavejester/haslett/actions/workflows/test.yml) A lightweight WebSocket library for ClojureScript that uses [core.async][]. [core.async]: https://github.com/clojure/core.async ## Installation Add the following dependency to your deps.edn file: haslett/haslett {:mvn/version "0.2.0"} Or to your Leiningen project file: [haslett "0.2.0"] ## Usage Haslett provides a simple and idiomatic interface to using WebSockets: ```clojure (ns example.core (:require [cljs.core.async :as a :refer [! go]] [haslett.client :as ws] [haslett.format :as fmt])) (go (let [stream (! (:out stream) "Hello World") (js/console.log (! (:out stream) {:foo [1 2 3]}) (js/console.log (pr-str (clj (js/JSON.parse s))) (write [_ v] (js/JSON.stringify (clj->js v))))) ================================================ FILE: test/haslett/client_test.cljs ================================================ (ns haslett.client-test (:require [cljs.test :refer-macros [deftest is async]] [cljs.core.async :as a :refer [! go]] [cljs.core.async.impl.protocols :as ap] [haslett.client :as ws] [haslett.format :as fmt])) (deftest test-defaults (async done (go (let [stream (! (:out stream) "Hello World") (is (= (! (:out stream) {:hello "World"}) (is (= (! (:out stream) {:hello "World"}) (is (= (! (:out stream) {:hello "World"}) (is (= (