πŸ€ͺ A linter, prettier, and test suite that does everything as-simple-as-possible.

Overview

Banner Logo

Code Grade Dependencies GitHub repo size GitHub

Features

Fully Featured Code Grading

Knowing if you need to work on your code is important- that's why we grade your code automatically. But, unlike other code-grading solutions, we let you choose how you want to be graded. If you project isn't supposed to have a bunch of comments, why should your grade drop because you don't have enough comments? We beat our competitors because you get to choose what you want to work on.

Lightweight, Feature-Rich Testing Suite

Our testing system gets as close-to-the-metal as possible. What this means for you is that the tests run fast, and since they run on JavaScript's V8 engine, everything you expect to happen, will happen. Nothing can be simplier than writing tests for the EaF linter, its as easy as writing things in plain English. Don't believe me, look at the code below!

describe(`A simple test!`, () => {
  expect(32 + 8).toBe(40); // passing
  expect(20 * 40).toBeGreaterThan(40 * 40); // failed
  expect("New String").toExist().and().length().toBe(10); // passing
});

Code Linter and Smell Detector

Our code-linter is built using an Abstract Syntax Tree approach. This allows for the code to be quickly and easily restructured into a more performant and readible program. Our linter also supports custom piping. This means that users can define scripts tell how they would like the resulting code to look. If you don't want to use custom scripts, we already have tons of prebuilt scripts just for you.

Customizable Beautifier

We have one of the most customizable code beautifiers in the JavaScript world. You can choose how you want spacing to work, if you want semicolins, how comments should be structured, how variable naming should work, etc. And, since our beautifier works alongside our code linter, you can also choose things like: should all methods be changed to arrow functions? should only let and const be allowed as variable declarors? should object properties be arranged by alphabetical order?

Performance Analysis Tool

In Progress

Performance anaylsis is very important, especially if you are managing a ton of data that has rapid changes to it. That is why EaF offers some of the most robust and detailed tools for measuring your codes execution time. We will run it in thousands of test cases, and you can setup different scenarios to make sure that the code you put out, stays on top.

Documentation Generator

In Progress

For Github Actions

When we were building EaF, we realized that most of its users will want to use it for continous integration and development. That is why we are one of the first NPM packages that is designed not to be downloaded, you can just run EaF with the npx command- its that easy. You don't need any special command parameters or files that stink up your root directory- our impact is as minimal as possible. If you really want to customize EaF, just add what you want to the package.json file.

name: Lint, Prettify, Test, and Score Code

on:
  push:
    branches: [master]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Run the EaF Linter
        run: npx eaf-linter

      - name: Commit Changes
        uses: EndBug/add-and-commit@v7
        with:
          messages: πŸ¦† Code Fixed with EaF-Lint!

License

Copyright 2021 Fairfield Programming Association

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Comments
  • πŸ€ͺ Add in Check for Force Exit on Failure

    πŸ€ͺ Add in Check for Force Exit on Failure

    Idea

    I'm getting really annoyed because my code keeps failing because this library isn't done yet. To fix this, I'm adding the option to ignore test failure in the options.

    Todo

    • [x] Add in a parameter check in the readme
    enhancement good first issue help wanted 
    opened by William-McGonagle 1
  • πŸŽ‰ Get us onto Github Explore

    πŸŽ‰ Get us onto Github Explore

    Idea

    We really need to make this project more popular. The way we can do this is by getting onto Github Explore because then we will get a ton of stars. There is an explore collection just for this here that you can just add our repository into and then create a pull request.

    Todo

    • [ ] Send in a pull request to Github Explore with our repository
    good first issue help wanted 
    opened by William-McGonagle 0
  • πŸ“œ Add Readme in Beautifier Page

    πŸ“œ Add Readme in Beautifier Page

    Idea

    Right now, we have a ton of features, we just need to start documenting them. So, I've added readme files to the pages that need them. If you want to write a bit about this feature, just leave a comment and I will assign you to the issue.

    For the beautifier, it's not done yet, but just write about the features it will have. It will be a pretty ordinary beautifier but what makes it different is that it will support tons of different coding styles. Most alternative beautifiers don't support that, so it will make this one very special.

    https://github.com/fairfield-programming/eaf-linter/tree/master/src/linter

    Todo

    • [ ] Add in Readme to Beautifier Page
    documentation good first issue help wanted 
    opened by William-McGonagle 0
  • 🦜 Add Duplicate Detector

    🦜 Add Duplicate Detector

    Idea

    I just learned that duplicate lines are a problem in large codebases. So, we should make a system that detects duplicate chunks of code. This duplicate detector should not fire off if there are a few similar lines, but it should be triggered when an entire function is duplicated, or giant chunks of code are duplicated a bunch.

    This detector can either be built using plaintext or by using the abstract syntax tree generated by the babel parser. I think that the system would be much more powerful if we build it using the babel parser.

    https://linearb.io/blog/code-duplication/

    Todo

    • [ ] Build a system to detect important code chunks using the babel parser
    • [ ] Store the important code chunks
    • [ ] Check in the code where the important chunks of code are repeated
    enhancement good first issue help wanted 
    opened by William-McGonagle 0
  • πŸ“œ Add in Readme to Performer Page

    πŸ“œ Add in Readme to Performer Page

    Idea

    Right now, we have a ton of features, we just need to start documenting them. So, I've added readme files to the pages that need them. If you want to write a bit about this feature, just leave a comment and I will assign you to the issue.

    For the performer, you just need to add a couple more sentences about what makes the performer special, and maybe just make it look a little prettier. You don't need to do much, but any help would be appreciated.

    https://github.com/fairfield-programming/eaf-linter/tree/master/src/performer

    Todo

    • [ ] Add in Readme to Linter Page
    documentation good first issue help wanted 
    opened by William-McGonagle 0
  • πŸ“œ Add in Readme to Linter Page

    πŸ“œ Add in Readme to Linter Page

    Idea

    Right now, we have a ton of features, we just need to start documenting them. So, I've added readme files to the pages that need them. If you want to write a bit about this feature, just leave a comment and I will assign you to the issue.

    For the linter, it's not done yet, but just write about the features it will have. It will be a pretty ordinary linter but what makes it different is going to be a pipeline approach to plugins and focusing on comments in the linting process.

    https://github.com/fairfield-programming/eaf-linter/tree/master/src/linter

    Todo

    • [ ] Add in Readme to Linter Page
    documentation good first issue help wanted 
    opened by William-McGonagle 0
  • πŸ•΅οΈβ€β™‚οΈ Add in Regex Parameter for Finding Testing Files

    πŸ•΅οΈβ€β™‚οΈ Add in Regex Parameter for Finding Testing Files

    Idea

    We want this library to be as simple to use as possible, but also it needs to be modular and customizable. So, what we need now is the ability for users to configure the path for their testing files. And, this isn't going to be a static path but rather, they are going to specify a regex pattern and we will see if that pattern matches any of their files. If the pattern matches, we will test that file.

    Todo

    • [ ] Add in a parameter to look for in the package.json so people can specify where they want to keep their test files
    • [ ] Allow them to put in regex as the parameter
    • [ ] Replace the current code with their regex when checking for the testing path
    enhancement good first issue help wanted 
    opened by William-McGonagle 4
Owner
Fairfield Programming Association
An open-source, non-profit dedicated to the education of children in the world of computer science.
Fairfield Programming Association
Boilerplate project to run MOBILE Test Automation with WebdriverIO v7, Mocha, Appium, Allure reporting and Momentum Suite cloud device farm support

WebdriverIO Mocha Appium Momentumsuite WebdriverIO Integration with local or Momentum Suite real mobile farm devices Supports Native or Hybrid Android

Momentum Suite 21 Dec 5, 2022
REST API complete test suite using openapi.json

Openapi Test Suite Objective This package aims to solve the following two problems: Maintenance is a big problem to solve in any test suite. As the AP

PLG Works 21 Nov 3, 2022
All-in-one code linter and formatter for TypeScript and JavaScript

Uniform is a CLI tool - code linter and formatter for JavaScript and TypeScript. Works using eslint and prettier under the hood.

Irakli Dautashvili 21 Feb 27, 2022
It is a simple Math Sprint Game in which the user must agree or disagree with the answers to math problems in the quickest time possible.

MATH-SPRINT-GAME The user must agree or disagree with the results of math equations in this Math Sprint Game. The amount of time the player spends mak

AMEY THAKUR 8 Aug 1, 2022
Linter for Nix using tree-sitter 🌳 + ❄️

Linter for Nix using tree-sitter ?? + ❄️ This is a simple linter for Nix that uses tree-sitter. I plan on extending it with more detections in the fut

Ben Siraphob 41 Dec 20, 2022
Yet another linter rule to detect compatibility of CSS features.

stylelint-browser-compat Yet another linter rule to detect compatibility of CSS features. This plugin checks if the CSS you're using is supported by t

Masahiro Miyashiro (3846masa) 16 Dec 15, 2022
In this project, I built a simple HTML list of To-Do tasks. This simple web page was built using Webpack, creating everything from a JavaScript index file that imported all the modules and assets

To Do List In this project, I built a simple HTML list of To-Do tasks. This simple web page was built using Webpack, creating everything from a JavaSc

AndrΓ©s Felipe Arroyave Naranjo 10 Mar 31, 2022
A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Written in nodeJS and Electron.

α΅”α΄₯α΅” RedJoust A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Writte

Dave 17 Oct 31, 2022
A comprehensive collection of useful tools developed with the help of Ethers.js to interact with the Ethereum Blockchain to develop great DeFi apps as quickly and easily as possible.

hudi-packages-ethersfactory How to install Installing with npm For more information on using npm check out the docs here. npm i @humandataincome/ether

HUDI 6 Mar 30, 2022
Tiny and fast utility to extract all possible values for a given enum.

Tiny (208B) and fast utility to extract all possible values for a given enum.

Andrea Cappuccio 2 Apr 18, 2022
A simple but powerful tweening / animation library for Javascript. Part of the CreateJS suite of libraries.

TweenJS TweenJS is a simple tweening library for use in Javascript. It was developed to integrate well with the EaselJS library, but is not dependent

CreateJS 3.5k Jan 3, 2023
Awesome critique of crypto / web3. Curated list of high quality critique plus background. Seek to be as constructive as possible.

Awesome critique of crypto/web3 Awesome critique of crypto/web3, etc. Contributions are welcome. Critique General Stephen Diehl series - https://www.s

Rufus Pollock 1.5k Jan 1, 2023
This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js

This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js. But in most cases, I would recommend you to use something like Express in a production project for productivity purposes.

Eduardo Dantas 7 Jul 19, 2022
This is a library that makes it possible to change the configuration values of the Remix compiler (esbuild).

?? remix-esbuild-override ⚠️ While I believe you will most likely get a lot of benefit from using this library, it can sometimes destroy your product.

AijiUejima 73 Dec 22, 2022
πŸ–ΌοΈ Image proxy for Next.js. Makes it possible to use dynamic domains in next/image component.

Next.js Image Proxy Image proxy for Next.js. Makes it possible to use dynamic domains in next/image component. ❔ Motivation This library makes it poss

Blazity 30 Dec 1, 2022
This is the simplest possible nodejs api using express.

NodeJS JWT Authentication sample A Todo Application with NodeJS and ExpressJS that uses JWT authentication to manage each user's todos. Available APIs

Yacine Maouche 3 Sep 11, 2022
Uncensorable, immutable microblogging platform that is completely decentralized and does not rely on any centralized systems.

Zooko Truly decentralized, immutable and uncensorable microblogging Zooko is a working-example, proof-of-concept proving that you can have a decentral

Publius Federalist 152 Apr 20, 2022
Userland module that implements the module path mapping that Node.js does with "exports" in package.json

exports-map Userland module that implements the module path mapping that Node.js does with "exports" in package.json npm install exports-map Usage co

Mathias Buus 9 May 31, 2022