open-index/open-npm huggingface dataset:
npm package: @subcomponents/grid
Description: CSS layout library
Latest version: 3.2.2

# @subcomponents/grid

![License][LicenseBadgeURL]
[![Donate][DonateBadgeURL]][DonateURL]

> CSS layout library

## Documentation

Docs and demo: <https://subcomponents.github.io/grid>

## Contribute

Be my guest:

- 😱 Open issue, describe bug, suggest solution
- 😊 Fork, clone, edit, push, send pull request

## MIT License

The MIT License is a permissive license. It lets you do anything you want with the code as long as you provide attribution back to the author and don’t hold him/her liable. jQuery, .NET Core, and Rails use the MIT License.

[LicenseBadgeURL]: https://img.shields.io/badge/License-MIT-blue.svg
[DonateBadgeURL]: https://img.shields.io/badge/Support_Active-Development-blue.svg
[DonateURL]: https://www.paypal.me/heyallan/10
npm package: @subcomponents/layout
Description: CSS layout library
Latest version: 1.4.3

# @subcomponents/layout

![License][LicenseBadgeURL]
[![Donate][DonateBadgeURL]][DonateURL]

> CSS layout library

## Documentation

Docs and demo: <https://subcomponents.github.io/layout>

## Contribute

Be my guest:

- 😱 Open issue, describe bug, suggest solution
- 😊 Fork, clone, edit, push, send pull request

## MIT License

The MIT License is a permissive license. It lets you do anything you want with the code as long as you provide attribution back to the author and don’t hold him/her liable. jQuery, .NET Core, and Rails use the MIT License.

[LicenseBadgeURL]: https://img.shields.io/badge/License-MIT-blue.svg
[DonateBadgeURL]: https://img.shields.io/badge/Support_Active-Development-blue.svg
[DonateURL]: https://www.paypal.me/heyallan/10
npm package: @subcomponents/properties
Description: CSS properties library
Latest version: 3.2.0

# @subcomponents/properties

![License][LicenseBadgeURL]
[![Donate][DonateBadgeURL]][DonateURL]

> CSS properties library

## Documentation

Docs and demo: <https://subcomponents.github.io/properties>

## Contribute

Be my guest:

- 😱 Open issue, describe bug, suggest solution
- 😊 Fork, clone, edit, push, send pull request

## MIT License

The MIT License is a permissive license. It lets you do anything you want with the code as long as you provide attribution back to the author and don’t hold him/her liable. jQuery, .NET Core, and Rails use the MIT License.

[LicenseBadgeURL]: https://img.shields.io/badge/License-MIT-blue.svg
[DonateBadgeURL]: https://img.shields.io/badge/Support_Active-Development-blue.svg
[DonateURL]: https://www.paypal.me/heyallan/10
npm package: @subcomponents/reset
Description: CSS reset library
Author: Allan Moreno
Latest version: 3.1.5

# @subcomponents/reset

![License][LicenseBadgeURL]
[![Donate][DonateBadgeURL]][DonateURL]

> CSS reset library

## Documentation

Docs and demo: <https://subcomponents.github.io/reset>

## Contribute

Be my guest:

- 😱 Open issue, describe bug, suggest solution
- 😊 Fork, clone, edit, push, send pull request

## MIT License

The MIT License is a permissive license. It lets you do anything you want with the code as long as you provide attribution back to the author and don’t hold him/her liable. jQuery, .NET Core, and Rails use the MIT License.

[LicenseBadgeURL]: https://img.shields.io/badge/License-MIT-blue.svg
[DonateBadgeURL]: https://img.shields.io/badge/Support_Active-Development-blue.svg
[DonateURL]: https://www.paypal.me/heyallan/10
npm package: @subdiox/schematics
Description: Nest - modern, fast, powerful node.js web framework (@schematics)
Latest version: 9.1.0

<p align="center">
  <a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="120" alt="Nest Logo" /></a>
</p>

  <p align="center">A progressive <a href="http://nodejs.org" target="blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
    <p align="center">
<a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/v/@nestjs/schematics.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/l/@nestjs/schematics.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/dm/@nestjs/schematics.svg" alt="NPM Downloads" /></a>
  <a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
  <a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
  <a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>

## Description

The Nest CLI is a command-line interface tool that helps you to initialize, develop, and maintain your Nest applications. It assists in multiple ways, including scaffolding the project, serving it in development mode, and building and bundling the application for production distribution. It embodies best-practice architectural patterns to encourage well-structured apps. Read more [here](https://docs.nestjs.com/cli/overview).

## Installation

```bash
$ npm install -g @nestjs/schematics
```

## Usage

Learn more in the [official documentation](https://docs.nestjs.com/).

## Stay in touch

- Website - [https://nestjs.com](https://nestjs.com/)
- Twitter - [@nestframework](https://twitter.com/nestframework)

## License

Nest is [MIT licensed](LICENSE).
npm package: @sube126/test
Description: just test vue component js
Author: sube126
Latest version: 0.1.0

# test

## Project setup
```
npm install
```

### Compiles and hot-reloads for development
```
npm run serve
```

### Compiles and minifies for production
```
npm run build
```

### Lints and fixes files
```
npm run lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
npm package: @subedigaurav/ngx-pdf-viewer
Description: Headless PDF viewer library for Angular applications.
Latest version: 0.0.2

# ngx-pdf-viewer

Headless PDF viewer library for Angular applications.

[![Angular](https://img.shields.io/badge/Angular-21+-DD0031?logo=angular)](https://angular.dev)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript)](https://www.typescriptlang.org/)

## Features

- **Angular 21+** — Built for modern Angular applications
- **Lightweight** — Minimal dependencies, optimized bundle size
- **Type-safe** — Full TypeScript support
- **Standalone** — Uses Angular standalone components (no NgModules required)

## Installation

```bash
pnpm add @subedigaurav/ngx-pdf-viewer
```

Or with npm:

```bash
npm install @subedigaurav/ngx-pdf-viewer
```

### Peer Dependencies

Ensure you have the following peer dependencies installed:

- `@angular/common` ^21.1.0
- `@angular/core` ^21.1.0
- `pdfjs-dist` ^5.4.0 (optional — loads from CDN if not installed)

## Usage

Import the standalone component in your Angular application:

```typescript
import { PdfViewerComponent } from '@subedigaurav/ngx-pdf-viewer';

@Component({
  selector: 'app-document-viewer',
  standalone: true,
  imports: [PdfViewerComponent],
  template: `<ngx-pdf-viewer [src]="pdfSrc"></ngx-pdf-viewer>`,
})
export class DocumentViewerComponent {
  pdfSrc = 'https://example.com/document.pdf';
}
```

## License

MIT
npm package: @subf/config
Description: Universal configuration for TypeScript, oxlint (+unocss, +solid), oxfmt, and tsdown.
Author: subframe7536
Latest version: 0.1.3

# @subf/config

Universal configuration for TypeScript, oxlint (+unocss, +solid), oxfmt, and tsdown.

## Quick start

```sh
bun i -D @subf/config
```

## Usage

### `tsconfig`

```json
{
  "extends": "@subf/config/tsc-lib"
}
```

Available configs:

- `tsc-lib`: for libraries.
- `tsc-node`: for Node.js apps.
- `tsc-web`: for SolidJS apps.
- `tsc-base`: base config for custom setups.

### `tsdown`

Helpers to create `tsdown` build configs.

Example: use `lib()` in your `tsdown.config.ts`:

```ts
import { defineConfig } from 'tsdown'
import { lib } from '@subf/config/tsdown'

export default lib({
  entry: 'shallow',
  excludeDeps: ['oxlint', 'oxfmt', 'tsdown'],
  overrides: {
    exports: {
      customExports(exports) {
        exports['./custom'] = './you-custom-file.js'
        return exports
      },
    },
  },
})
```

For Node builds use `nodeLib()`:

```ts
import { nodeLib } from '@subf/config/tsdown'
export default nodeLib({ entry: 'src/index.ts' })
```

For Solid builds (requires `vite-plugin-solid`) use `solidLib()`:

```ts
import { defineConfig } from 'tsdown'
import { solidLib } from '@subf/config/tsdown'

export default solidLib({ entry: 'src/index.tsx' })
```

### `oxfmt`

In `oxfmt.config.ts`:

```ts
import { CONFIG } from '@subf/config/oxfmt'
export default CONFIG
```

#### Helper

Use `subfFmt()` helper to create a config with opinionated presets for lib, solid, unocss, etc.

```ts
import { subfFmt } from '@subf/config/oxfmt'
export default subfFmt({
  // your custom oxfmt config here
})
```

### `oxlint`

In `oxlint.config.ts`:

```ts
import { CONFIG } from '@subf/config/oxlint'

export default CONFIG
```

or use `defineConfig()` with `extend` if you want to extend it:

```ts
import { defineConfig } from 'oxlint'
import { CONFIG } from '@subf/config/oxlint'

export default defineConfig({
  extend: [CONFIG],
  // your custom config here
})
```

#### Helper

Use `subf()` helper to create a config with opinionated presets for lib, solid, unocss, etc.

```ts
import { subf } from '@subf/config/oxlint'

export default subf({
  lib: true,
  solid: true,
  unocss: true,
  // your custom oxlint config here
})
```

## CLI

Scaffold `tsconfig.json`, `oxlint.config.ts`, and `oxfmt.config.ts` into your project.

### Quick start (no install)

```sh
bunx @subf/config          # recommended
npx -y @subf/config        # fallback
bunx @subf/config -f       # force overwrite existing files
```

After scaffolding you'll be prompted to install the package so your configs stay in sync with future updates:

```sh
bun i -D @subf/config
```

### Installed locally

```sh
bun i -D @subf/config
bun subf                   # or just `subf` if on PATH
bun subf -f                # force overwrite existing files
```

## License

MIT
npm package: @subf/unocss
Description: A custom subset of UnoCSS packages
Author: subframe7536
Latest version: 0.2.0

# @subf/unocss

A custom subset of UnoCSS packages.

If you are using `vue` or `svelte`, you should use `unocss` directly.

## Included

| Package                             | Description                                        |
| ----------------------------------- | -------------------------------------------------- |
| `@unocss/core`                      | Core engine                                        |
| `@unocss/preset-wind3`              | Tailwind v3 preset                                 |
| `@unocss/preset-wind4`              | Tailwind v4 preset                                 |
| `@unocss/preset-icons`              | Pure CSS icons via Iconify                         |
| `@unocss/preset-web-fonts`          | Web fonts support                                  |
| `@unocss/transformer-variant-group` | Variant group transformer                          |
| `@unocss/transformer-directives`    | `@apply` directive transformer                     |
| `@unocss/reset`                     | CSS reset styles with `reset-*`, no sanitize entry |
| `unocss-preset-completion`          | Auto completion support for UnoCSS classes         |
| `@subf/unocss/vite`                 | Vite plugin, remove inspector                      |
| `@subf/unocss/oxlint-plugin`        | oxlint rules, `order` and `blocklist` rules only   |

## Install

```bash
bun add @subf/unocss
```

## Usage

### Core + Presets

```ts
import {
  defineConfig,
  presetCompletion,
  presetIcons,
  presetWebFonts,
  presetWind4,
  transformerDirectives,
  transformerVariantGroup,
} from '@subf/unocss'

export default defineConfig({
  presets: [presetWind4(), presetIcons(), presetWebFonts(), presetCompletion()],
  transformers: [transformerVariantGroup(), transformerDirectives()],
})
```

### Vite Plugin

The Vite plugin is a drop-in replacement for `@unocss/vite` with the following changes:

- Remove inspector
- Remove `VueScopePlugin`
- Remove `@unocss-skip-start` / `@unocss-skip-end` range comments support

```ts
// vite.config.ts
import UnoCSS from '@subf/unocss/vite'

export default {
  plugins: [UnoCSS()],
}
```

### Reset

```ts
import '@subf/unocss/reset-tailwind.css'
import 'uno.css'
```

### Oxlint Plugin

Oxlint rules for UnoCSS. Currently only includes `order` and `blocklist` rules, more to come in the future.

```ts
// oxlint.config.ts
import { defineConfig } from 'oxlint'

export default defineConfig({
  jsPlugins: [{ name: 'unocss', specifier: '@subf/unocss/oxlint-plugin' }],
  rules: {
    'unocss/order': 'error',
    'unocss/blocklist': ['error', { blocklist: ['!important'] }],
  },
})
```

## License

MIT
npm package: @subflag/api-types
Description: TypeScript type definitions for Subflag SDK
Author: Subflag
Latest version: 0.2.0

# @subflag/api-types

TypeScript type definitions for the Subflag SDK.

## Installation

```bash
npm install @subflag/api-types
```

## Usage

```typescript
import type { EvaluationContext, EvaluationResult } from '@subflag/api-types';

// Evaluation context for targeting
const context: EvaluationContext = {
  targetingKey: 'user-123',
  kind: 'user',
  attributes: {
    email: 'user@example.com',
    plan: 'premium'
  }
};

// Evaluation result
const result: EvaluationResult = {
  flagKey: 'my-flag',
  value: true,
  variant: 'enabled',
  reason: 'SEGMENT_MATCH'
};
```

## Exported Types

### `EvaluationContext`

Context information sent with flag evaluation requests:
- `targetingKey?: string | null` - Unique identifier (e.g., user ID, session ID)
- `kind: string | null` - Type of context (e.g., "user", "organization", "device")
- `attributes?: Record<string, unknown> | null` - Custom attributes for targeting

### `EvaluationResult`

Result returned from flag evaluations:
- `flagKey: string` - The flag key that was evaluated
- `value: unknown` - Flag value (boolean, string, number, or object)
- `variant: string` - Selected variant name
- `reason: EvaluationReason` - Why this result was returned

### `EvaluationReason`

Possible reasons for evaluation results:
- `'DEFAULT'` - No targeting rules matched, using default variant
- `'OVERRIDE'` - Context-specific override applied
- `'SEGMENT_MATCH'` - Matched a segment targeting rule
- `'PERCENTAGE_ROLLOUT'` - Matched a percentage rollout rule
- `'TARGETING_MATCH'` - Matched a targeting rule (generic)
- `'ERROR'` - Evaluation error occurred

## Bundle Size

**0 bytes runtime** - This package only exports TypeScript types, which are stripped during compilation.

## Used By

- `@subflag/openfeature-web-provider` - Web browser SDK
- `@subflag/openfeature-node-provider` - Node.js server SDK

## License

MIT
npm package: @subfuzion/auditor
Description: Automated auditor for Docker
Author: Tony Pujals
Latest version: 1.0.0

[![Docker Build Status](https://img.shields.io/docker/build/subfuzion/vote-auditor.svg)](subfuzion/vote-auditor)

# @subfuzion/auditor

This is the `auditor` for evaluating the performance of the
[Voting App](https://github.com/subfuzion/docker-voting-app-nodejs)
running under Docker. It works by monitoring the logs of each service
for patterns that must be matched to indicate success. The assessor
produces a report when complete or when the evaluation times out.
npm package: @subfuzion/create-cloud-run-app
Description: Create a Node.js app with TypeScript for Cloud Run
Latest version: 0.1.1

# Deprecated

Please use
[create-cloud-run-app](https://www.npmjs.com/package/create-cloud-run-app)
instead of
[@subfuzion/create-cloud-run-app](https://www.npmjs.com/package/@subfuzion/create-cloud-run-app).

At the time of this deprecation notice, the current version of
`create-cloud-run-app` is `v1.1.0` while `@subfuzion/create-cloud-run-app` is
deprecated at `v0.1.1`.

# create-cloud-run-app

Get started with boilerplate for writing, testing, linting, and formatting
TypeScript for a Node.js app to deploy to Cloud Run.

```
npx create-cloud-run-app [path]
```
npm package: @subfuzion/create-next-app
Description: Create a Next.js app that can be containerized
Latest version: 0.1.1

# create-next-app

Get up and running with boilerplate for writing, testing, linting, and
formatting TypeScript for a Next.js app. The generated project includes a
Dockerfile for deploying the app to a server or containerized cloud
environment.

```
npx @subfuzion/create-next-app [path]
```

> **Note**
>
> - If `path` isn't specified, it defaults to the current working directory (`.`).
> - The directory under `path` must be empty. 

## Details

Configuration boilerplate for jump starting your app development includes:

* [TypeScript]
* [Jest]
* Linting and formatting
  * [EditorConfig]
  * [ESLint]
  * [Prettier]

The linting and formatting tools have been configured to  work together:

* `.editorconfig` has format settings that feed into Prettier
* `.eslintrc.json` uses Prettier for formatting

The generated app includes a number of package scripts for development, including:
- `dev`
- `build`
- `lint` and `lint:fix`

It is also configured with a `pre-commit` hook using [Husky] and [lint-staged].

## Notes

To use the latest published version, enter:

```
npx @subfuzion/create-next-app@latest [path]
```

If you want to use the latest version from the GitHub [repo], enter:

```
npx github:subfuzion/create-next-app [path]
```

> **Warning**
> Currently under development. This implementation assumes:
> 
> 1. You're running the latest LTS version (or greater) of [Node.js]
>    (the current implementation might work with earlier versions, but this
     hasn't been verified).
> 2. `node` and `npm` (automatically installed with Node.js) are in the path.
> 3. `git` is in your path and [user.name] and [user.email] are already
>    configured.
> 4. Your system can run a `bash` script (for now).

## Source

The source for the generated app is in the [@subfuzion/next-starter-app]
repo.

## License

Licensed under [MIT].

[@subfuzion/next-starter-app]: https://github.com/subfuzion/next-starter-app/
[EditorConfig]: https://editorconfig.org/
[ESLint]: https://eslint.org/
[Husky]: https://typicode.github.io/husky/
[Jest]: https://jestjs.io/
[lint-staged]: https://github.com/okonet/lint-staged/
[MIT]: ./LICENSE
[Node.js]: https://nodejs.org/en/download/
[Prettier]: https://prettier.io/
[repo]: https://github.com/subfuzion/create-next-app/
[TypeScript]: https://typescriptlang.org/
[user.name]: https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git#setting-your-git-username-for-every-repository-on-your-computer/
[user.email]: https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-email-address-for-every-repository-on-your-computer/
npm package: @subfuzion/create-typescript-app
Description: Create a Node.js app configured for TypeScript
Latest version: 0.5.5

# create-typescript-app

Get up and running with minimal boilerplate for writing, testing, linting, and
formatting TypeScript for Node.js app, and nothing else. There are no other
assumptions or opinions about what frameworks you need.

```
npx @subfuzion/create-typescript-app [path]
```

> **Note**
>
> - If `path` isn't specified, it defaults to the current working directory (`.`).
> - The directory under `path` must be empty. 

## Details

Configuration boilerplate for jump starting your app development includes:

* [TypeScript]
* [Jest]
* Linting and formatting
  * [EditorConfig]
  * [ESLint]
  * [Prettier]

The linting and formatting tools have been configured to  work together:

* `.editorconfig` has format settings that feed into Prettier
* `.eslintrc.json` uses Prettier for formatting

The generated app includes a number of package scripts for development, including:
- `dev` | `dev:notify`
- `build` | `build:watch`
- `test` | `test:watch`
- `lint` | `lint:fix`

It is also configured with a `pre-commit` hook using [Husky] and
[lint-staged].

## Notes

To use the latest published version, enter:

```
npx @subfuzion/create-typescript-app@latest [path]
```

If you want to use the latest version from the GitHub [repo], enter:

```
npx github:subfuzion/create-typescript-app [path]
```

> **WARNING**
>
> Currently under development. This implementation assumes:
> 
> 1. You're running the latest LTS version (or greater) of [Node.js]
>    (the current implementation might work with earlier versions, but this
     hasn't been verified).
> 2. `node` and `npm` (automatically installed with Node.js) are in the path.
> 3. `git` is in your path and [user.name] and [user.email] are already
>    configured.
> 4. Your system can run a `bash` script (for now).

## Source

The source for the generated app is in the [@subfuzion/typescript-starter-app]
repo.

## License

Licensed under [MIT].

[@subfuzion/typescript-starter-app]: https://github.com/subfuzion/typescript-starter-app/
[EditorConfig]: https://editorconfig.org/
[ESLint]: https://eslint.org/
[Husky]: https://typicode.github.io/husky/
[Jest]: https://jestjs.io/
[lint-staged]: https://github.com/okonet/lint-staged/
[MIT]: ./LICENSE
[Node.js]: https://nodejs.org/en/download/
[Prettier]: https://prettier.io/
[repo]: https://github.com/subfuzion/create-typescript-app/
[TypeScript]: https://typescriptlang.org/
[user.name]: https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git#setting-your-git-username-for-every-repository-on-your-computer/
[user.email]: https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-email-address-for-every-repository-on-your-computer/
npm package: @subfuzion/vote-client
Description: Client for voting app
Author: Tony Pujals
Latest version: 1.0.1

## Voting app client

Simple command-line client for accessing the voting app.

The following environment variables should be set:

`FRONTEND`: the voting app frontend (ex: `http://localhost:8080`)

or

`FRONTEND_HOST`: the frontend host (defaults to `frontend`)
`FRONTEND_PORT`: the frontend listening port (defaults to port `8080`)

### Usage

```text
$ client
Usage: client [options] [command]

Options:
-V, --version   output the version number
-h, --help      display help for command

Commands:
vote            vote for cats or dogs
results         tally the votes
help [command]  display help for command
```

To cast a vote:

```text
$ client vote
? What do you like better? (Use arrow keys)
❯ (quit)
  cats
  dogs
```

To see voting results:

```text
$ client results
Total votes -> cats: 1, dogs: 2 ... DOGS WIN!
```
npm package: @subfuzion/vote-frontend
Description: Frontend for voting app
Author: Tony Pujals
Latest version: 1.0.1

## Vote API

The service can be started with the following environment variable overrides:

`PORT`: the frontend listening port (defaults to port `8080`)
`DATABASE_HOST`: the database host (defaults to `database`)
`DATABASE_PORT`: the database host (defaults to `27017`)

### POST /vote

This endpoint is used to cast a vote.

#### Request Body

`application/json`

##### Schema

* `vote` - `string`; currently restricted to either "a" or "b"

##### Example

```
{
  "vote": "a"
}
```

### GET /results

This endpoint is used to query the voting results.

#### Response

`application/json`

* `success` - `boolean`

* `tally` - `object`; present only if success. The object has a property named for each vote ("a", "b"); the value of the property is a `number` corresponding to the number of votes cast.

* `reason` - `string`; present only if success is false.

#### Example:

```
{
  "success": true,
  "tally": {
    "a": 5,
    "b": 3
  }
}
```

## Testing

The easiest way is to test using Docker Compose.

The following will build an image for running the tests under `test/test.js` and then start
the environment declared in `./docker-compose.test.yml`.

    $ docker compose -f ./docker-compose.test.yml run sut

If you make changes to any of the Node.js sources, rebuild the test image with the
following command:

    $ docker compose -f ./docker-compose.test.yml build

To view logs, run:

    $ docker compose -f ./docker-compose.test.yml logs

When finished running a test, run:

    $ docker-compose -f ./docker-compose.test.yml down

> Warning: ensure you run the `down` command before the next `run sut`
> command to ensure each test run starts with a fresh database
> container. Otherwise, tests will fail.