An open API service indexing awesome lists of open source software.

https://github.com/idiocc/goa

The Koa Fork Optimised By Google Closure Compiler With Just 1 Dependency.
https://github.com/idiocc/goa

Last synced: 11 months ago
JSON representation

The Koa Fork Optimised By Google Closure Compiler With Just 1 Dependency.

Awesome Lists containing this project

README

          

# @goa/koa

[![npm version](https://badge.fury.io/js/%40goa%2Fgoa.svg)](https://www.npmjs.com/package/@goa/goa)

This is the source code for the `@goa/koa` repository that actually compiles this source code. Please navigate there for the documentation.

Compiled Source Code In 2400 lines.

`@goa/goa` is the [Koa web-sever](https://koajs.com) compiled and optimised with _Google Closure Compiler_ so that it has only 1 dependency (`mime-db`, for easy access to upgrades). The types are written as _JSDoc_ and don't require installing typings. The aim of this project is to demonstrate how to modernise old-school NPM packages, including starting to use import/export statements without _Babel_, restoring to pure _JSDoc_ without TypeScript, and compiling the code into a single executable using the compiler, and testing the code with [_Zoroaster_](https://contexttesting.com) testing framework which is twice as fast and weighs 500KB against 50MB compared with _Jest_ (as used to be used in the original repository).

```sh
yarn add @goa/goa
```

## Table Of Contents

- [Table Of Contents](#table-of-contents)
- [Goa](#goa)
- [Types](#types)
- [Packages](#packages)
- [Tests](#tests)
- [Copyright & License](#copyright--license)



## Goa

Goa is the same application as _Koa_. It has the same interface for the app object, as well as context, request and response API.

SourceOutput

```js
import Goa from '@goa/goa'

const app = new Goa()
app.use((ctx) => {
ctx.body = 'hello world'
})
```

```
hello world
```

## Types

The types detailed information can be found 📙 [in Wiki](../../wiki). The Koa documentation can be found on its page.



## Packages

Koa dependencies as packages had to be rewritten in ES6. Some of them were created as separate packages, and some were included in the source code (repository) in the `modules` directory.

Show included modules (updated to ES6 and annotated for Node.JS Compiler).

| Dependency | Type |
| --------------------- | ------ |
| `cache-content-type` | module |
| `content-disposition` | module |
| `delegates` | module |
| `ee-first` | module |
| `error-inject` | module |
| `escape-html` | module |
| `fresh` | module |
| `http-assert` | module |
| `koa-is-json` | module |
| `on-finished` | module |
| `only` | module |
| `parseurl` | module |

The external modules were created with tests also written to ensure their source and compiled versions work as expected.

| Dependency | Dep | Description |
| ---------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------ |
| [`@goa/accepts`](https://www.npmjs.com/package/@goa/accepts) | dev | Higher-Level Content Negotiation. |
| [`@goa/content-type`](https://www.npmjs.com/package/@goa/content-type) | dev | Create and parse HTTP Content-Type header according to RFC 7231. |
| [`@goa/cookies`](https://www.npmjs.com/package/@goa/cookies) | dev | Signed And Unsigned Cookies Based On Keygrip. |
| [`@goa/is-generator-function`](https://www.npmjs.com/package/@goa/is-generator-function) | dev | Checks If The Function Is An ES6 Generator. |
| [`@goa/mime-types`](https://www.npmjs.com/package/@goa/mime-types) | dev | The Ultimate Javascript Content-Type Utility. |
| [`@goa/negotiator`](https://www.npmjs.com/package/@goa/negotiator) | dev | HTTP Content Negotiation. |
| [`@goa/type-is`](https://www.npmjs.com/package/@goa/type-is) | dev | Infer The Content-Type Of A Request. |
| [`@goa/vary`](https://www.npmjs.com/package/@goa/vary) | dev | Manipulate The HTTP Vary header. |
| [`@goa/compose`](https://www.npmjs.com/package/@goa/compose) | dev | Compose a single middleware function for Goa out of many. |
| [`@goa/http-errors`](https://www.npmjs.com/package/@goa/http-errors) | dev | Creates HTTP Errors For Goa Apps. |
| [`@goa/statuses`](https://www.npmjs.com/package/@goa/statuses) | dev | HTTP status utility.. |
| [`@idio/debug`](https://www.npmjs.com/package/@idio/debug) | dev | Log Debugging Information. |
| `mime-db` | prod | Required for `@goa/mime-types`, `@goa/accepts` and `@goa/type-is`. |



## Tests

The tests were updated for [context testing](https://contexttesting.com) and include all original Koa tests.

✅ [View 326 tests](/doc/TESTS.md)



## Copyright & License

GNU Affero General Public License v3.0

Original work on the [Koa Web Server](https://github.com/koajs/koa) by its authors under MIT License found in [COPYING](COPYING).




Art Deco


© Art Deco for Idio 2019


Idio




Tech Nation Visa


Tech Nation Visa Sucks