Skip to main content

Gauntlet

Lightning-fast front-end tool which does put a smile on my face

Current cache size

Overview

Gauntlet is a work-in-progress naive and fast ES Modules powered frontend tool based on Deno and ESBuild.

Goals

  • πŸ’Ž Power β€” Very fast
  • πŸ’Ž Space β€” Browser-compatible at the core, modularized codebase (no deps.ts)
  • πŸ’Ž Time β€” Discoverable, backed by XState statecharts (planned!)
  • πŸ’Ž Mind β€” Subscribable, log and watch for any event the way you want
  • πŸ’Ž Soul β€” Supports Snowpack plugins (planned!)
  • πŸ’Ž Reality β€” Supports TypeScript and JSX via ESBuild

Contributing

Submitting a Pull Request

Here is a couple of rules of thumb for any submitted pull request:

  • Please be respectful and mindful of your language
  • Please use english language for any comment through Github or the source code
  • Fork the hereby repo and follow the Github flow
  • Give the PR a descriptive title

Building from source

Clone the hereby repo or, if intending to submit a PR, your own fork.

git clone https://github.com/tommywalkie/gauntlet
Prerequisites
  • Deno 1.8+
  • Deno Visual Studio Code extension

Note: No need to install ESBuild yourself, this is done automatically by the official Deno module itself, or retrieved via network if using the WebAssembly version.

Usage

Install the cli.ts script as a command-line tool via Deno.

deno install -A --unstable <your-repo>/cli.ts
# βœ… Successfully installed gauntlet

Now you can run the actual program.

gauntlet --help   # Open the help guide
gauntlet dev      # Run the development server
Testing

Launch tests with Deno:

deno test

Style guide

Contributing section is still work-in-progress, but here is the basic idea:

  • All the platform-agnostic source code shall reside in src/core/
  • Similarly to Meteor projects, individual dependencies shall be settled under imports/
  • Prefer JS/TS/native dependencies over WebAssembly ones unless necessary (e.g. ESBuild for the browser)
  • Prefer modularized dependencies over heavy centralized ones using, inter alia, the deps.ts convention (i.e. please don’t make accustomed Lodash users vendor the whole deno.land/x)
  • Most core features shall be event-driven, using the available EventEmitter implementation in imports/deno_events.ts which is based on deno_events for type safety
  • Test files (**/*.test.ts) use the available Jest-like matchers in imports/expect.ts which are based on expect

Current dependency graph

Dependency graph via Deno Visualizer, using mod.ts as entrypoint

License

Gauntlet is currently licensed under Apache License, Version 2.0.

Β© Copyright 2021 Tom Bazarnik.