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.
- Host: GitHub
- URL: https://github.com/idiocc/goa
- Owner: idiocc
- License: agpl-3.0
- Created: 2019-05-04T12:37:17.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-03-12T03:45:30.000Z (over 6 years ago)
- Last Synced: 2024-12-27T09:18:35.049Z (over 1 year ago)
- Language: JavaScript
- Homepage: https://www.idio.cc
- Size: 846 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: COPYING
Awesome Lists containing this project
README
# @goa/koa
[](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.

`@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 for Idio 2019
Tech Nation Visa Sucks