open-index/open-npm huggingface dataset:
npm package: @microgamma/datagator
Description: Abstract ORM foundations
Author: Davide Cavaliere
Latest version: 2.1.0

# @microgamma/datagator [![npm version](https://badge.fury.io/js/%40microgamma%2Fdatagator.svg)](https://badge.fury.io/js/%40microgamma%2Fdatagator)

> TODO: description

## Usage

```
const datagator = require('datagator');

// TODO: DEMONSTRATE API
```
npm package: @microgamma/digator
Description: Handcrafted DI container
Author: Davide Cavaliere
Latest version: 2.1.0

# @microgamma/digator [![npm version](https://badge.fury.io/js/%40microgamma%2Fdigator.svg)](https://badge.fury.io/js/%40microgamma%2Fdigator)

## install

`npm i -S @microgamma/digator` or `yarn add @microgamma/digator`

## How to use

Decorate a class with `@Injectable()`.

```typescript
// my-class.ts


import { Injectable } from '@microgamma/digator';

@Injectable()
class MyClass {

  public sayHello(name: string) {
    return `Hello ${name}`;
  }
}
```

Inject it using `@Inject(<Class>)`

```typescript
// consumer.ts

import { Inject } from '@microgamma/digator';

class Consumer {

  constructor(
    @Inject(MyClass) public myClassSingleton: MyClass
  ) {
    this.myClassSingleton.sayHello('consumer');
  }

}
```

Getting a singleton programmatically

```typescript
// my-script.ts

const singleton = injector(MyClass);

```

Create the app

```typescript

@DI({
  providers: [
    MyClass,
  ]
})
class App {
}

const app = bootstrap(App);
```

## Providing custom implementation
`providers` array also accept an object such as:

```typescript
@DI({
  providers: [
    {
      provide: MyClass,
      useClass: MyCustomImplementation,
    },
  ]
})
class App {
}

const app = bootstrap(App);
```

## Testing
In order to test a singleton and mock dependencies use `TestBed`

```typescript
import { Inject } from '@microgamma/digator';


describe('MyClass', () => {

  @Injectable()
  class HttpService {
  }

  @Injectable()
  class TestClass {
    constructor(
      @Inject(HttpService) http: HttpService,
    ) {
    }
  }

  let instance;

  beforeEach(() => {
    TestBed.configure({
      providers: [
        TestClass,
        {
          provide: HttpService,
          useClass: class {
            // test implementation
          }
        }
      ]
    });

    instance = TestBed.inject(TestClass);
  });

  it('should exist', () => {
    expect(instance).toBeTruthy();
  });
});

```

## Mocked
Only if jest is used the `Mocked` utility can be used to automatically mock any given class.

```typescript
import { Inject } from '@microgamma/digator';


describe('MyClass', () => {

  @Injectable()
  class HttpService {
  }

  @Injectable()
  class TestClass {
    constructor(
      @Inject(HttpService) http: HttpService,
    ) {
    }
  }

  let instance;

  beforeEach(() => {
    TestBed.configure({
      providers: [
        TestClass,
        {
          provide: HttpService,
          useClass: Mocked(HttpService)
        }
      ]
    });

    instance = TestBed.inject(TestClass);
  });

  it('should exist', () => {
    expect(instance).toBeTruthy();
  });
});
```
for more info look at its [tests](src/lib/testing/mocked.spec.ts)


## DEBUG
Prepend `DEBUG=microgamma:digator*` to your script to see debugging information.
npm package: @microgamma/dynamodb
Description: DynamoDB persistence engine
Author: Davide Cavaliere
Latest version: 2.1.0

# @microgamma/datagator [![npm version](https://badge.fury.io/js/%40microgamma%2Fdatagator.svg)](https://badge.fury.io/js/%40microgamma%2Fdatagator)

> TODO: description

## Usage

```
const datagator = require('datagator');

// TODO: DEMONSTRATE API
```
npm package: @microgamma/loggator
Description: visionmedia's debug wrapped like a candy
Author: Davide Cavaliere
Latest version: 2.1.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# loggator [![npm version](https://badge.fury.io/js/%40microgamma%2Floggator.svg)](https://badge.fury.io/js/%40microgamma%2Floggator)
npm package: @microgamma/mongodb
Description: MongoDB persistence engine
Author: Davide Cavaliere
Latest version: 2.1.0

# @microgamma/datagator [![npm version](https://badge.fury.io/js/%40microgamma%2Fdatagator.svg)](https://badge.fury.io/js/%40microgamma%2Fdatagator)

> TODO: description

## Usage

```
const datagator = require('datagator');

// TODO: DEMONSTRATE API
```
npm package: @microgamma/serverless-apigator
Description: serverless plugin to defer configuration using typescript's decorators
Author: Davide Cavaliere
Latest version: 2.1.0

# @microgamma/serverless-apigator [![serverless](https://camo.githubusercontent.com/547c6da94c16fedb1aa60c9efda858282e22834f/687474703a2f2f7075626c69632e7365727665726c6573732e636f6d2f6261646765732f76332e737667)](http://www.serverless.com) [![npm version](https://badge.fury.io/js/%40microgamma%2Fserverless-apigator.svg)](https://badge.fury.io/js/%40microgamma%2Fserverless-apigator)

serverless-apigator is a plugin for serverless to be use with `@microgamma/apigator`. It leverage the developer from maintain the `functions` section of serverless.yml so that configuration is written instead along the `@Endpoint` and `@Lambda` decorators.

> The only provider supported at this moment is aws

> A blue print to get you up and running quickly is available [here](https://github.com/microgamma/serverless-apigator-blue-print)

## How to use it
Install serverless
```
yarn add -D serverless
```
Create a `serverless.yml` file such as

```yaml
service: your-service-name # NOTE: update this with your service name

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: eu-west-2

# add this plugin
plugins:
  - '@microgamma/serverless-apigator'

custom:
  apigator:
    entrypoint: handler # this is the file where the service is bootstrapped without .ts
    buildFolder: build/main # this is the folder where tsc transpiles your typescript code

# save S3 space excluding everything but build and node_modules folders
package:
  exclude:
    - ./*
    - ./**
    - '!build/**'
    - '!node_modules/**'
```

You won't need to provide the `functions` section as it will be written at runtime by this plugin.

See [@microgamma](https://github.com/davidecavaliere/-microgamma) for more information.
npm package: @microgamma/ts-debug
Description: typescript decorator for easy log
Latest version: 0.3.1
Deprecated: this package has been deprecated. use @microgamma/loggator instead

![Build Status](https://codebuild.eu-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiUnljbDkvdmc3cjcvWUNYV2tBZzNMRURRUkp2d25EeWlzR0pHTWtMNndxU2xEcThRRCs2VUZsUzVGdmNlV0RBSDNHbEhranRENVlqdXdNTEhvQ2sxOElZPSIsIml2UGFyYW1ldGVyU3BlYyI6IjBiYmI4VEl5eG5MRDkyNTIiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=master)

# ts-debug

typescript decorator for easy log
npm package: @micrographics-js/core
Description: Shared utilities for Micrographics — RNG, easing, tickers, glitch effects
Latest version: 0.3.0

# @micrographics-js/core

Shared animation utilities for the [Micrographics](https://github.com/micrographics-js/micrographs) component library.

This package provides the low-level primitives that power all Micrographics components: deterministic RNG, easing functions, animation tickers, typewriter effects, and glitch text generators.

## Install

```bash
npm install @micrographics-js/core
```

> This package is **free and open source** (MIT license). It's automatically installed as a dependency of all Micrographics framework packages.

## What's inside

| Module | Exports | Description |
|--------|---------|-------------|
| `utils/rng` | `seeded(n)` | Deterministic pseudo-random number generator for consistent visuals |
| `utils/easing` | `easeInOut`, `easeOut`, `linear` | Standard easing functions for smooth animations |
| `utils/paths` | `pixelDiamondPath`, `cornerPath` | SVG path generators for pixel-crisp shapes |
| `animations/ticker` | `createTicker(ms, cb)` | Interval-based animation loop with automatic cleanup |
| `animations/typewriter` | `typeIn(text, speed)` | Character-by-character text reveal |
| `animations/glitch` | `glitchText(text, intensity)`, `scramble(text)` | Text distortion effects |

## License Validation

After purchasing Micrographics, add this once in your app entry point:

```ts
import { initLicense } from "@micrographics-js/core";
initLicense("your-license-key");
```

Components render for 60 seconds without a license (trial mode), then stop. Valid license = renders forever.

## Usage

```ts
import { createTicker, seeded, glitchText, initLicense } from "@micrographics-js/core";

// License (call once at app startup)
initLicense("your-license-key");

// Animation loop — returns cleanup function
const stop = createTicker(200, () => {
  console.log("tick");
});
// Later: stop();

// Deterministic random
seeded(42); // always returns the same value

// Glitch text
glitchText("HELLO", 0.3); // "HE▓LO" (random distortion)
```

## Part of Micrographics

84 animated micro-UI components for React, Vue, Svelte & Vanilla Web Components.
Dark industrial terminal aesthetic. Pure SVG. CSS custom properties. Zero runtime dependencies.

- [`@micrographics-js/react`](https://github.com/micrographics-js/micrographs/tree/main/packages/react)
- [`@micrographics-js/vue`](https://github.com/micrographics-js/micrographs/tree/main/packages/vue)
- [`@micrographics-js/svelte`](https://github.com/micrographics-js/micrographs/tree/main/packages/svelte)
- [`@micrographics-js/vanilla`](https://github.com/micrographics-js/micrographs/tree/main/packages/vanilla)
- [`@micrographics-js/tailwind`](https://github.com/micrographics-js/micrographs/tree/main/packages/tailwind)

## License

MIT
npm package: @micrographics-js/tailwind
Description: Tailwind CSS plugin and preset for Micrographics — dark terminal theme tokens, utilities, animations
Latest version: 0.3.0

# @micrographics-js/tailwind

Tailwind CSS plugin + preset for the [Micrographics](https://github.com/micrographics-js/micrographs) component library. Injects dark terminal theme tokens, utility classes, animations, and layout helpers.

**Free and open source** (MIT). Works standalone or alongside `@micrographics-js/react` etc.

## Install

```bash
npm install @micrographics-js/tailwind
```

## Usage

### Full preset (recommended)

```js
// tailwind.config.js
module.exports = {
  presets: [require("@micrographics-js/tailwind/preset")],
  content: ["./src/**/*.{js,ts,jsx,tsx,vue,svelte}"],
};
```

### Plugin only

```js
const micrographics = require("@micrographics-js/tailwind");
module.exports = { plugins: [micrographics.plugin] };
```

## What you get

### Theme tokens (auto-injected on `:root`)

| Variable | Default | Description |
|---|---|---|
| `--mg-accent` | `#3ecf8e` | Primary accent (green) |
| `--mg-accent-amber` | `#f5a623` | Warning |
| `--mg-accent-red` | `#e05252` | Error |
| `--mg-bg` | `#0d0e17` | Dark background |
| `--mg-fg` | `#e8e8e8` | Primary text |

### Utility classes

```html
<!-- Text & colors -->
<span class="text-mg-accent">ACTIVE</span>
<span class="text-mg-accent-amber">WARNING</span>
<div class="bg-mg-bg font-mg">Monospace dark panel</div>

<!-- Component shells -->
<div class="mg-card">...</div>
<div class="mg-panel"><div class="mg-panel-header">TITLE</div><div class="mg-panel-body">Content</div></div>

<!-- Badges -->
<span class="mg-badge mg-badge-active">ONLINE</span>
<span class="mg-badge mg-badge-warn">DEGRADED</span>
<span class="mg-badge mg-badge-error">FAILED</span>

<!-- Effects -->
<span class="mg-glow">Glowing text</span>
<div class="mg-scanlines">CRT scanline overlay</div>
<div class="mg-hud"><div class="mg-hud-corner mg-hud-corner-tl"></div></div>

<!-- Animations (from preset) -->
<span class="animate-mg-pulse">pulsing</span>
<span class="animate-mg-blink">blinking cursor</span>
```

### Override accent color

```html
<div class="[--mg-accent:#8b5cf6] [--accent:#8b5cf6]">
  <!-- all Micrographics components here render in violet -->
</div>
```

## Part of Micrographics

84 animated micro-UI components for React, Vue, Svelte & Vanilla.

- [`@micrographics-js/react`](https://github.com/micrographics-js/micrographs/tree/main/packages/react)
- [`@micrographics-js/vue`](https://github.com/micrographics-js/micrographs/tree/main/packages/vue)
- [`@micrographics-js/svelte`](https://github.com/micrographics-js/micrographs/tree/main/packages/svelte)
- [`@micrographics-js/vanilla`](https://github.com/micrographics-js/micrographs/tree/main/packages/vanilla)

## License

MIT
npm package: @microh-labs/auth
Description: > Modern, secure authentication SPA and API for your apps. Built with React, Express, Drizzle ORM, shadcn/ui, and Vite.
Latest version: 1.0.11

# @microh-labs/auth

> Modern, secure authentication SPA and API for your apps. Built with React, Express, Drizzle ORM, shadcn/ui, and Vite.

---

## Features

- Username/password authentication with JWT (RS256, public/private key)
- Professional, responsive UI (shadcn/ui, React, Vite)
- Secure config, validation, and error handling
- Auto-migrating SQLite DB (Drizzle ORM)
- Programmatic migrations (no CLI needed)

---

## Quick Start (End Users)

1. **Install:**
   ```sh
   npx @microh-labs/auth
   # or clone and run: pnpm install && pnpm build && node .
   ```
2. **First Run:**
   - Visit the setup page (`/setup`) to configure branding and upload/generate your JWT keypair.
3. **Sign Up/Login:**
   - Use the web UI to create your first user and log in.

---

## Developer Guide

### Local Development

```sh
pnpm install
pnpm dev
# Open http://localhost:5173
```

### Project Structure

- `src/` — Frontend (React, shadcn/ui, assets, components)
- `src/db/` — Drizzle ORM schema and DB logic
- `app.ts` — Express backend (API, config, JWT, etc.)
- `public/` — Static assets

### Database & Migrations

- Uses SQLite (`drizzle.db`)
- Migrations are run programmatically on server start (no CLI needed)

### Linting & Build

```sh
pnpm lint
pnpm build
```

---

## Screenshots

<p align="center">
  <img src="./screenshots/image.png" alt="App Screenshot" width="600" />
</p>

## Maintainers

- **Publishing:**

  - Update version in `package.json`
  - Build and publish to npm

- **Screenshots:**
  - See `/screenshots/` for UI previews
- **Entrypoint:**
  - `index.js` (CLI) and `app.ts` (server)

---

## License

MIT — Chien Tran, microh-labs
npm package: @microh-labs/home
Description: <p align="center">    <img src="screenshots/image.png" alt="chientrm.com screenshot" width="700" /> </p>
Latest version: 1.1.0

<p align="center">
   <img src="screenshots/image.png" alt="chientrm.com screenshot" width="700" />
</p>

# chientrm.com – Personal Homepage & Web App

**A modern, minimal, and instantly runnable personal homepage and web app.**

---

## 🚀 Quick Start (End Users)

Run this web app instantly, no build or setup required:

### 1. Run instantly with npx

```bash
npx @microh-labs/home
```

### 2. Or install globally (optional)

```bash
npm install -g @microh-labs/home
ulabs_home
```

### 3. Or install locally in a project

```bash
npm install @microh-labs/home
npx ulabs_home
```

#### Custom port

To run on a specific port:

```bash
PORT=5000 npx @microh-labs/home
# or
PORT=5000 ulabs_home
```

The app will print the URL to access it in your browser.

---

## 🌟 Features

- Modern, minimal design using [shadcn/ui](https://ui.shadcn.com/) React components
- Responsive and accessible
- Express API backend with Swagger docs

---

## 🛠️ For Developers

### Tech Stack

- React + TypeScript
- Vite
- Tailwind CSS
- shadcn/ui
- Express (API)

### Development (use pnpm)

Install dependencies:

```bash
pnpm install
```

Start the development server:

```bash
pnpm dev
```

**Drizzle ORM migrations:**

> After changing your database schema, you can now run Drizzle migrations directly using the drizzle-kit CLI (thanks to `drizzle.config.ts`). No need to build and run the app first!
>
> To push schema changes to your SQLite database:
>
> ```bash
> pnpm drizzle-kit push:sqlite
> # or
> npx drizzle-kit push:sqlite
> ```
>
> This will apply your schema changes and hydrate the database. You only need to run `pnpm build` and `node .` for production or to start the app normally.

Build for production:

```bash
pnpm build
```

---

## For Maintainers: Publishing

This app is published to npm on every version tag push (e.g., `1.2.3`).

To release a new version:

1. Bump the version in `package.json` (or just tag with the new version).
2. Create a git tag matching the new version:
   ```bash
   git tag 1.2.3
   git push --tags
   ```
3. GitHub Actions will build and publish to npm automatically.

> **Note:** Lockfiles (pnpm-lock.yaml, etc.) are not published to npm.

---

© 2025 Chien Tran. All rights reserved.
npm package: @microhoffman/sourcify-to-etherscan
Description: CLI for importing Sourcify verified contracts to Etherscan
Author: microhoffman
Latest version: 2.0.0

# sourcify-to-etherscan

> **Note:** This is an actively maintained rewrite of the original [sourcify-to-etherscan](https://github.com/k1rill-fedoseev/sourcify-to-etherscan). Uses the current Sourcify v2 and Etherscan v2 APIs.

CLI for importing [Sourcify](https://sourcify.dev/) verified contracts to [Etherscan](https://etherscan.io/) in the simplest and fastest way.

Uses the Sourcify v2 API to fetch standard JSON input and submits it to Etherscan's unified v2 API. Works with any chain supported by both services — no hardcoded network list.

## Install

```bash
npm install -g sourcify-to-etherscan
```

Requires Node.js >= 18.

## Usage

```bash
sourcify-to-etherscan <contract-address> -c <chain> -k <etherscan-api-key>
```

### Options

| Option | Description |
|--------|-------------|
| `-c, --chain <chain>` | Chain ID or network name (required). Examples: `1`, `mainnet`, `sepolia` |
| `-k, --api-key <key>` | Etherscan API key (or set `ETHERSCAN_API_KEY` env var) |
| `-a, --constructor-args <args>` | ABI-encoded constructor arguments (auto-detected from Sourcify if available) |
| `--exact-only` | Reject partial Sourcify matches (only accept exact matches) |
| `-V, --version` | Output the version number |
| `-h, --help` | Display help |

### Supported chain aliases

`mainnet`, `sepolia`, `holesky`, `bsc`, `polygon`, `gnosis`, `arbitrum`, `optimism`, `base`, `avalanche`, `linea`, `scroll`

Any numeric chain ID is also accepted.

### Examples

```bash
# Verify a contract on mainnet
sourcify-to-etherscan 0x1234...abcd -c mainnet -k YOUR_API_KEY

# Verify on Arbitrum using chain ID
sourcify-to-etherscan 0x1234...abcd -c 42161 -k YOUR_API_KEY

# Using environment variable for API key
export ETHERSCAN_API_KEY=YOUR_API_KEY
sourcify-to-etherscan 0x1234...abcd -c sepolia

# With explicit constructor arguments
sourcify-to-etherscan 0x1234...abcd -c 1 -k YOUR_API_KEY -a 000000000000000000000000...

# Only accept exact Sourcify matches
sourcify-to-etherscan 0x1234...abcd -c mainnet -k YOUR_API_KEY --exact-only
```

### Docker

```bash
docker run microhoffman/sourcify-to-etherscan:latest \
  0x1234...abcd -c mainnet -k YOUR_API_KEY
```

## How it works

1. Fetches the contract's standard JSON input, compiler info, and constructor arguments from Sourcify's v2 API in a single request
2. Submits the verification to Etherscan's unified v2 API endpoint
3. Polls for the verification result

## Acknowledgments

Inspired by the original [sourcify-to-etherscan](https://github.com/k1rill-fedoseev/sourcify-to-etherscan) by [@k1rill-fedoseev](https://github.com/k1rill-fedoseev). This is a ground-up rewrite using the Sourcify v2 and Etherscan v2 APIs.

## License

MIT
npm package: @microhub/tsconfig-path-esm-loader
Description: A custom loader for ESM projects that adds support for tsconfig paths
Latest version: 1.0.3

Code primarily taken from https://github.com/TypeStrong/ts-node/discussions/1450#discussioncomment-1806115

## What is this?

A custom Typescript ESM loader that allows you to run projects locally while using [Typescript paths](https://www.typescriptlang.org/tsconfig#paths)

Use with ESM modules only.

## Installation & Usage

#### Installation

```shell
npm install -d tsconfig-paths-esm-loader
```

```shell
yarn add --dev tsconfig-paths-esm-loader
```

#### Usage

When running an ESM project in development, you can do it like this:

```shell
node --loader tsconfig-paths-esm-loader/loader.mjs path/to/entryFile{.ts,.mts}
```

Where `path/to/entryFile{.ts,.mts}` is simply your entry file like `main.ts` or `main.mts`
npm package: @microjournal/accessor
Description: Microjournal ============
Author: Steve Streza
Latest version: 0.0.7

Microjournal
============

**This project is under heavy development and is not considered stable. Use at your own risk.**

Microjournal is a set of tools for building a journal out of short status updates that you write to multiple times over a day. You can use **#tags** and **@mentions** to annotate your content, and search for them later.

Data
----

Microjournal supports multiple types of data storage, including building custom data storage layers. Right now there is only one supported file format, using flat files, with the **@microjournal/accessor-folder** package. There is also a **@microjournal/accessor-api** package for supporting a client/server setup, but there is no backend available yet.

To build a custom data accessor, see the **@microjournal/accessor** package.

Installation
------------

To use Microjournal you can install the **@microjournal/cli** package, which exposes the ``mj`` command. You can find more commands under ``mj --help``.

License
-------

See LICENSE.rst for license information. 

Copyright
---------

Copyright © 2019 Steve Streza. All rights reserved.
npm package: @microjournal/accessor-api
Description: Microjournal ============
Author: Steve Streza
Latest version: 0.0.7

Microjournal
============

**This project is under heavy development and is not considered stable. Use at your own risk.**

Microjournal is a set of tools for building a journal out of short status updates that you write to multiple times over a day. You can use **#tags** and **@mentions** to annotate your content, and search for them later.

Data
----

Microjournal supports multiple types of data storage, including building custom data storage layers. Right now there is only one supported file format, using flat files, with the **@microjournal/accessor-folder** package. There is also a **@microjournal/accessor-api** package for supporting a client/server setup, but there is no backend available yet.

To build a custom data accessor, see the **@microjournal/accessor** package.

Installation
------------

To use Microjournal you can install the **@microjournal/cli** package, which exposes the ``mj`` command. You can find more commands under ``mj --help``.

License
-------

See LICENSE.rst for license information. 

Copyright
---------

Copyright © 2019 Steve Streza. All rights reserved.
npm package: @microjournal/accessor-empty
Description: Microjournal ============
Author: Steve Streza
Latest version: 0.0.7

Microjournal
============

**This project is under heavy development and is not considered stable. Use at your own risk.**

Microjournal is a set of tools for building a journal out of short status updates that you write to multiple times over a day. You can use **#tags** and **@mentions** to annotate your content, and search for them later.

Data
----

Microjournal supports multiple types of data storage, including building custom data storage layers. Right now there is only one supported file format, using flat files, with the **@microjournal/accessor-folder** package. There is also a **@microjournal/accessor-api** package for supporting a client/server setup, but there is no backend available yet.

To build a custom data accessor, see the **@microjournal/accessor** package.

Installation
------------

To use Microjournal you can install the **@microjournal/cli** package, which exposes the ``mj`` command. You can find more commands under ``mj --help``.

License
-------

See LICENSE.rst for license information. 

Copyright
---------

Copyright © 2019 Steve Streza. All rights reserved.
npm package: @microjournal/accessor-folder
Description: Microjournal ============
Author: Steve Streza
Latest version: 0.0.7

Microjournal
============

**This project is under heavy development and is not considered stable. Use at your own risk.**

Microjournal is a set of tools for building a journal out of short status updates that you write to multiple times over a day. You can use **#tags** and **@mentions** to annotate your content, and search for them later.

Data
----

Microjournal supports multiple types of data storage, including building custom data storage layers. Right now there is only one supported file format, using flat files, with the **@microjournal/accessor-folder** package. There is also a **@microjournal/accessor-api** package for supporting a client/server setup, but there is no backend available yet.

To build a custom data accessor, see the **@microjournal/accessor** package.

Installation
------------

To use Microjournal you can install the **@microjournal/cli** package, which exposes the ``mj`` command. You can find more commands under ``mj --help``.

License
-------

See LICENSE.rst for license information. 

Copyright
---------

Copyright © 2019 Steve Streza. All rights reserved.
npm package: @microjournal/cli
Description: Microjournal ============
Author: Steve Streza
Latest version: 0.0.7

Microjournal
============

**This project is under heavy development and is not considered stable. Use at your own risk.**

Microjournal is a set of tools for building a journal out of short status updates that you write to multiple times over a day. You can use **#tags** and **@mentions** to annotate your content, and search for them later.

Data
----

Microjournal supports multiple types of data storage, including building custom data storage layers. Right now there is only one supported file format, using flat files, with the **@microjournal/accessor-folder** package. There is also a **@microjournal/accessor-api** package for supporting a client/server setup, but there is no backend available yet.

To build a custom data accessor, see the **@microjournal/accessor** package.

Installation
------------

To use Microjournal you can install the **@microjournal/cli** package, which exposes the ``mj`` command. You can find more commands under ``mj --help``.

License
-------

See LICENSE.rst for license information. 

Copyright
---------

Copyright © 2019 Steve Streza. All rights reserved.
npm package: @microjournal/data-store
Description: Microjournal ============
Author: Steve Streza
Latest version: 0.0.7

Microjournal
============

**This project is under heavy development and is not considered stable. Use at your own risk.**

Microjournal is a set of tools for building a journal out of short status updates that you write to multiple times over a day. You can use **#tags** and **@mentions** to annotate your content, and search for them later.

Data
----

Microjournal supports multiple types of data storage, including building custom data storage layers. Right now there is only one supported file format, using flat files, with the **@microjournal/accessor-folder** package. There is also a **@microjournal/accessor-api** package for supporting a client/server setup, but there is no backend available yet.

To build a custom data accessor, see the **@microjournal/accessor** package.

Installation
------------

To use Microjournal you can install the **@microjournal/cli** package, which exposes the ``mj`` command. You can find more commands under ``mj --help``.

License
-------

See LICENSE.rst for license information. 

Copyright
---------

Copyright © 2019 Steve Streza. All rights reserved.
npm package: @microkits/microinjection
Description: An inversion of control container for build better Node.js applications.
Author: Guilherme Covre Dalleprane
Latest version: 2.1.1

# Microinjection

![Image of Microinjection](./docs/assets/logo.png)

Connecting everything is a tedious part of app development. <b>Microinjection</b> aims to make development easier and faster by helping you write testable, loosely coupled, and maintainable applications.

Microinjection is written entirely in <b>TypeScript</b>, but supports <b>JavaScript</b> as well.

[![npm version](https://badge.fury.io/js/%40microkits%2Fmicroinjection.svg)](https://badge.fury.io/js/%40microkits%2Fmicroinjection)
[![CodeQL](https://github.com/microkits/microinjection/workflows/CodeQL/badge.svg)](https://github.com/microkits/microinjection/actions?query=workflow%3ACodeQL)
## Features

- Property Injection
- Constructor Injection
- Multiple DI containers
- Registering and resolving dependencies hierarchically
- Singleton, Transient, and Context scopes
- Circular dependencies
- Out-of-the-box support for injecting values, factories and classes.

## Installation

Microinjection is available as a package on NPM.

To install and save in your package.json dependencies, run the following command:

Install with **npm**:
```sh
npm install @microkits/microinjection
```

Install with **yarn**:
```sh
yarn add @microkits/microinjection
```

## Basic usage

Containers are the main components of Microinjection. The first step to start using Microinjection is to getting a container.

```typescript
import { Microinjection } from "@microkits/microinjection";

const container = Microinjection.getDefaultContainer();
```

With an instance of the `Container` in hand, you can add your Registrations.

```typescript
class Cat {
  speak() {
    console.log("meooow!")
  }
}

class CatOwner {
  cat: Cat;
}

container.register("Cat").asClass(Cat);
container.register("CatOwner").asClass(CatOwner, {
  properties: [{
    name: "cat",
    inject: "Cat"
  }]
});
```

Now, you can request that the `Container` resolve a `Registration` for you. It will also resolve all necessary dependencies.

```typescript
// Container will inject an instance of Cat on resolved CatOwner.
const owner = container.resolve<CatOwner>("CatOwner");

owner.cat.speak();
// logs "meooow!" to the console
```
npm package: @microkits/micromapper
Description: Helps you to create object mappings in a simple and fluid way.
Author: Guilherme Covre Dalleprane
Latest version: 0.2.0

# MicroMapper

![Image of MicroMapper](./docs/assets/logo.png)

<b>MicroMapper</b> is a small and flexible library that allows you to map between different object types. It provides a simple and powerful API to perform the mapping, and it is highly configurable. This library is especially useful when working with data transfer objects (DTOs) and entities.

MicroMapper is written entirely in <b>TypeScript</b>, but supports <b>JavaScript</b> as well.

## Why use @microkits/micromapper?
* Facilitates code maintenance as it allows mapping rules to be defined in one place.
* Improves code readability as mapping rules are expressed clearly and concisely.
* Supports mapping of arrays, classes, primitive values and complex objects.
* Allows reuse of mappings anywhere in the code

## Installation

To use @microkits/micromapper in your project, you need to install it with npm or yarn.

Install with **npm**:
```sh
npm install @microkits/micromapper
```

Install with **yarn**:
```sh
yarn add @microkits/micromapper
```

## Basic usage

Here is an example of how to use the library to map between two object interfaces:

```typescript
interface Input {
  name: string;
  surname: string;
}

interface Output {
  fullName: string;
}

const mapper = new MicroMapper<Input, Output>(mapper => (
  mapper.object({
    fullName: mapper.string(input => (
      `${input.name} ${input.surname}`
    ))
  })
));

const input = {
    name: "John",
    surname: "Doe"
};

const output = mapper.map(input);
console.log(output); // output: { fullName: "John Doe" }
````