# @goa/koa

> The Koa2 Fork Optimized With Closure Compiler That Has Just 1 Dependency (mime-db).

Latest version **2.1.0** (published 2019-12-21) · AGPL-3.0 license · 0 weekly downloads

## Install

```sh
npm install @goa/koa
pnpm add @goa/koa
yarn add @goa/koa
bun add @goa/koa
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2019-12-21 |
| First published | 2019-05-11 |
| Weekly downloads | 0 |
| License | AGPL-3.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=7.7 |
| Dependencies | 1 |
| Unpacked size | 377.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Anton |
| Maintainers | zvr |
| Keywords | koa, goa, idio, gcc, closure, closure compiler, web, server, http |

## Links

- npm: https://www.npmjs.com/package/@goa/koa
- Repository: https://github.com/idiocc/koa
- Homepage: https://www.idio.cc/
- Issues: https://github.com/idiocc/koa/issues
- npm.io page: https://npm.io/package/@goa/koa

## Dependencies (1)

- [mime-db](https://npm.io/package/mime-db.md) ^1.42.0

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 2.1.0 (latest) — 2019-12-21
- 2.0.2 — 2019-12-20
- 2.0.1 — 2019-12-19
- 2.0.0 — 2019-12-18
- 1.1.5 — 2019-12-08
- 1.1.4 — 2019-12-08
- 1.1.3 — 2019-07-03
- 1.1.2 — 2019-06-21
- 1.1.1 — 2019-06-20
- 1.1.0 — 2019-05-12
- 1.0.2 — 2019-05-11
- 1.0.1 — 2019-05-11
- 1.0.0 — 2019-05-11

## README

# @goa/koa

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

`@goa/koa` 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 the old-school NPM package making, including starting to use import/export statements without _Babel_, restoring to pure _JSDoc_ without TypeScript, and compiling the code into the 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 in the original repository).

<table>
<tr><th colspan="2">@Goa/Koa Source Code Is ~2000 Lines Of Code</th></tr>
<tr><td colspan="2">
<img src="doc/ic.png" alt="@Goa/Koa Compiled Source Code.">
</td></tr>
<tr>
 <td align="center">
  <strong>Yarn Install</strong>
 </td>
 <td align="center">
  <strong>NPM Install</strong>
 </td>
</tr>
<tr>
 <td align="center">

```sh
yarn add @goa/koa
```
 </td>
 <td align="center">

```sh
npm install @goa/koa
```
 </td>
</tr>
</table>

This package actually compiles the [Goa Source Code](https://github.com/idiocc/goa). You can find all the documentation on that package's page.

## Table Of Contents

- [Table Of Contents](#table-of-contents)
- [API](#api)
  * [`constructor(options=)`](#constructoroptions-applicationoptions-application)
- [Copyright & License](#copyright--license)

<p align="center"><a href="#table-of-contents">
  <img src="/.documentary/section-breaks/0.svg?sanitize=true">
</a></p>

## API

The package is available by importing its default class:

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

<p align="center"><a href="#table-of-contents">
  <img src="/.documentary/section-breaks/1.svg?sanitize=true">
</a></p>


### <code><ins>constructor</ins>(</code><sub><br/>&nbsp;&nbsp;`options=: ApplicationOptions,`<br/></sub><code>): <i>Application</i></code>

Creates a new app instance.

 - <kbd>options</kbd> <em><code><a href="https://github.com/idiocc/goa/wiki/Application#type-applicationoptions" title="Options for the application constructor.">ApplicationOptions</a></code></em> (optional): Options to create an application.

<table>
<tr><th><a href="example/index.js">Source</a></th><th>Output</th></tr>
<tr><td>

```js
import aqt from '@rqt/aqt'
import Goa from '@goa/koa'

const goa = new Goa()
goa.use(async (ctx, next) => {
  ctx.body = 'Hello World'
  ctx.status = 201
  ctx.message = 'example'
  await next()
})
goa.listen(3000, async function() {
  const url = `http://localhost:3000`
  console.log(url, '\n')
  const res = await aqt(url)
  console.log(res)
  this.close()
})
```
</td>
<td>

```js
http://localhost:3000 

{ body: 'Hello World',
  headers: 
   { 'content-type': 'text/plain; charset=utf-8',
     'content-length': '11',
     date: 'Sat, 21 Dec 2019 05:10:34 GMT',
     connection: 'close' },
  statusCode: 201,
  statusMessage: 'example' }
```
</td></tr>
</table>

<p align="center"><a href="#table-of-contents">
  <img src="/.documentary/section-breaks/2.svg?sanitize=true">
</a></p>

## 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 [Goa's Source Code](https://github.com/idiocc/goa/blob/master/COPYING) repository.

<table>
  <tr>
    <th>
      <a href="https://artd.eco">
        <img width="100" src="https://raw.githubusercontent.com/wrote/wrote/master/images/artdeco.png"
          alt="Art Deco">
      </a>
    </th>
    <th>© <a href="https://artd.eco">Art Deco</a> for <a href="https://idio.cc">Idio</a> 2019</th>
    <th>
      <a href="https://idio.cc">
        <img src="https://avatars3.githubusercontent.com/u/40834161?s=100" width="100" alt="Idio">
      </a>
    </th>
    <th>
      <a href="https://www.technation.sucks" title="Tech Nation Visa">
        <img width="100" src="https://raw.githubusercontent.com/idiocc/cookies/master/wiki/arch4.jpg"
          alt="Tech Nation Visa">
      </a>
    </th>
    <th><a href="https://www.technation.sucks">Tech Nation Visa Sucks</a></th>
  </tr>
</table>

<p align="center"><a href="#table-of-contents">
  <img src="/.documentary/section-breaks/-1.svg?sanitize=true">
</a></p>

---
_Source: https://npm.io/package/@goa/koa · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
