open-index/open-npm huggingface dataset:
npm package: @skald-labs/n8n-nodes-skald
Description: N8N community nodes for Skald knowledge base API
Author: Skald
Latest version: 0.1.2

# n8n-nodes-skald

N8N community nodes for integrating with [Skald](https://useskald.com) - an AI-powered knowledge base API.

## Features

This node package provides integration with the Skald API, enabling you to:

### Memo Operations
- **Create**: Add new memos to your knowledge base
- **Get**: Retrieve memos by UUID or reference ID
- **Update**: Modify existing memos
- **Delete**: Remove memos from your knowledge base

### Chat Operations
- **Ask**: Query your AI-powered knowledge base

## Installation

### Community Nodes (Recommended)

1. Go to **Settings > Community Nodes**
2. Select **Install**
3. Enter `n8n-nodes-skald` and confirm

### Manual Installation

```bash
npm install n8n-nodes-skald
```

## Credentials

To use this node, you need a Skald API key:

1. Sign up at [Skald](https://platform.useskald.com)
2. Navigate to your project settings
3. Generate an API key (starts with `sk_proj_`)
4. Add the API key in n8n credentials

## Usage Examples

### Create a Memo

```json
{
  "title": "Meeting Notes",
  "content": "Discussed Q4 roadmap and budget allocation",
  "tags": "meetings, planning, q4",
  "source": "Weekly Sync"
}
```

### Query the Knowledge Base

```json
{
  "query": "What were the main discussion points from our last meeting?",
  "system_prompt": "Answer concisely based on the available memos"
}
```

## Resources

- [Skald Documentation](https://docs.useskald.com)
- [API Reference - Memos](https://docs.useskald.com/docs/api-reference/memos)
- [API Reference - Chat](https://docs.useskald.com/docs/api-reference/chat)
- [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

## Development

### Prerequisites

- Node.js >= 18.10
- pnpm >= 9.1

### Setup

```bash
pnpm install
pnpm build
```

### Local Testing

Link the package to your n8n installation:

```bash
cd ~/.n8n/nodes
pnpm link /path/to/n8n-nodes-skald
```

Replace `/path/to/n8n-nodes-skald` with the absolute path to this project directory (e.g., `/Users/yourname/Developer/tmp/n8n-nodes-study`).

Then restart n8n.

## License

MIT
npm package: @skaleboarder/safe-tools
Description: tools to interact with gnosis safe on sChains
Author: Topper Bowers
Latest version: 0.0.24

# safe-tools

[![npm version](https://badge.fury.io/js/@skaleboarder%2Fsafe-tools.svg)](https://badge.fury.io/js/@skaleboarder%2Fsafe-tools)

The SafeRelayer library allows you to implement a non-custodial sign-in system that enables in-browser transaction relay without requiring users to switch their wallets. It uses the Gnosis Safe for transaction processing and provides a seamless integration with your dApp.

## Usage

Import the required modules and classes:

Import necessary modules and classes from the SafeRelayer library, ethers.js, and other required packages.

```typescript
import { SafeRelayer, UserRelayerProps } from '@skaleboarder/safe-tools';
import { ethers } from 'ethers';
```

Create a relayer object:

Create a relayer object with the required configurations, such as signer, ethers, wallet deployer address, EnglishOwnerAdder address, network configuration, provider, and faucet function.

```typescript
  const relayer = new SafeRelayer({
      ethers,
      signer: signers[1],
      walletDeployerAddress: walletDeployer.address,
      EnglishOwnerAdderAddress: deploys.EnglishOwnerAdder.address,
      networkConfig: contractNetworks,
      provider: deployer.provider!,
      faucet: async (address: string) => {
          await (await deployer.sendTransaction({
              to: address,
              value: ethers.utils.parseEther("2")
          })).wait()
      }
  })
  
  // we need to do this within the fixture so that the safe is created before the test runs
  // and when the state is snapshotted it all works.
  await relayer.ready

  // This can be used anywhere you'd usually use an ethers signer.
  const relayedEthersSigner = await relayer.wrappedSigner()
```

The returned signer is a drop-in replacement (a subclass) of an ethers.Signer. [You can see how we use this in WAGMI](../wagmi/src/wrapper.ts)
npm package: @skalekarr/gatsby-source-strapi
Description: Gatsby source plugin for building websites using Strapi as a data source
Author: Strapi Solutions
Latest version: 0.1.5

# gatsby-source-strapi

Source plugin for pulling documents into Gatsby from a Strapi API based on status forked from [strapi](https://github.com/strapi/gatsby-source-strapi)

## Install

`npm install --save @skalekarr/gatsby-source-strapi`

## How to use

```javascript
// In your gatsby-config.js
plugins: [
  {
    resolve: `gatsby-source-strapi`,
    options: {
      apiURL: `http://localhost:1337`,
      queryLimit: 1000, // Default to 100
      contentTypes: [`article`, `user`],
      //If using single types place them in this array.
      singleTypes: [`home-page`, `contact`],
      // Possibility to login with a strapi user, when content types are not publically available (optional).
      loginData: {
        identifier: "",
        password: "",
      },
      status: ["Review"]
    },
  },
]
```

## How to query

You can query Document nodes created from your Strapi API like the following:

```graphql
{
  allStrapiArticle {
    edges {
      node {
        id
        title
        content
      }
    }
  }
}
```

To query images you can do the following:

```graphql
{
  allStrapiArticle {
    edges {
      node {
        id
        singleImage {
         publicURL
        }
        multipleImages {
          localFile {
            publicURL
          }
        }
      }
    }
  }
}
```
npm package: @skalk/maude
Description: bodice block with  bust darts
Author: sannek
Latest version: 0.0.2

# maude

> bodice block with  bust darts

[![NPM](https://img.shields.io/npm/v/maude.svg)](https://www.npmjs.com/package/maude) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save maude
```

## Usage

```jsx
import React, { Component } from 'react'

import MyComponent from 'maude'

class Example extends Component {
  render () {
    return (
      <MyComponent />
    )
  }
}
```

## License

 © [sannek](https://github.com/sannek)


## Steps and Stuff

- [] halsschema
npm package: @skam22/watermelondb-expo-plugin
Description: Expo config plugin for WatermelonDB that includes support for JSI
Author: Spencer Kam
Latest version: 50.0.2

# @skam22/watermelondb-expo-plugin

Expo config plugin for WatermelonDB that includes support for JSI

# Usage

#### Add @nozbe/watermelondb and its dependencies:

```
npx expo install @nozbe/watermelondb @babel/plugin-proposal-decorators
```

#### Modify your `babel.config.js` file to include the decorator plugin:

```js
module.exports = function (api) {
  api.cache(true);
  return {
    presets: ["babel-preset-expo"],
    plugins: [["@babel/plugin-proposal-decorators", { legacy: true }]],
  };
};
```

### Add expo dependencies

```
npx expo install @expo/config-plugins expo-build-properties
```

### Add the watermelondb-expo-plugin

```
npx expo install @skam22/watermelondb-expo-plugin
```

#### Modify your `app.json` plugin block to add the following:

```json
{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "kotlinVersion": "1.8.10",
            "compileSdkVersion": 33,
            "targetSdkVersion": 33,
            "packagingOptions": {
              "pickFirst": ["**/libc++_shared.so"]
            }
          },
          "ios": {
            "extraPods": [
              {
                "name": "simdjson",
                "configurations": ["Debug", "Release"],
                "path": "path_to/node_modules/@nozbe/simdjson",
                "modular_headers": true
              }
            ]
          }
        }
      ],
      "@skam22/watermelondb-expo-plugin"
    ]
  }
}
```

### Build a client for each platform

```
npx expo run:ios
```

```
npx expo run:android
```

# Contributing

Contributions are very welcome! Current limitations of this plugin:

The modifications to the native files are all accomplished by reading the existing contents of the document, searching for an existing line to anchor around, inserting the modification, and then saving the file.

If the structure/contents/spelling of these default files change in future versions of react native or expo in any way, these plugin modifications will fail.

For example, `android/settings.gradle` references the line:

```groovy
include ':app'
```

`android/app/build.gradle` references the line:

```groovy
def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true";
```

`android/app/proguard-rules.pro` references the line

```
# Add any project specific keep options here:
```
npm package: @skan-io/babel-config-react
Description: A configurable @babel config for react applications
Author: Skan Admin
Latest version: 2.2.1

# babel-config-react
A configurable @babel plugin for react applications

## Usage

> ```bash
> npm i -D @skan-io/babel-config-react
> ```

`babel.config.js`

```js
const config = require('@skan-io/babel-config-react');

module.exports = {
  ...config.default(
    true, // Use jest testing env
    'current', // Node version to target
    ['last 2 versions','not IE < 11'], // Browser targets
    ['last 1 Chrome versions'], // Development browser targets
    ['@babel/plugin-transform-runtime'] // Extra babel plugins
    // NOTE: these will still need installation
  )
};
```
npm package: @skan-io/eslint-config-base
Description: Base eslint config for latest ecma script standards (stage-2)
Author: Skan Admin
Latest version: 1.1.0

# eslint-config-base
Base eslint config for latest ecma script standards (stage-2)

## Usage

```bash
npm i -D @skan-io/eslint-config-base
```

In `.eslintrc`:

```
root: true

extends:
  - '@skan-io/eslint-config-base'
```

**NOTE:** may need to restart your editor for config to take effect
npm package: @skan-io/eslint-config-react
Description: React eslint config for ecma script standard (stage 2)
Author: Skan Admin
Latest version: 1.1.1

# eslint-config-react
React eslint config for ecma script standard (stage 2)

## Usage

```bash
npm i -D @skan-io/eslint-config-react
```

In `.eslintrc`:

```
root: true

extends:
  - '@skan-io/eslint-config-react'
```

**NOTE:** may need to restart your editor for config to take effect
npm package: @skandalabrandur/morphoanalyzer
Description: morphological analyzer for Japanese with kuromoji
Author: skandalabrandur
Latest version: 2.3.4

# @tomsd/morphoanalyzer

It is a morphological analyzer for Japanese with kuromoji.

![npm](https://img.shields.io/npm/v/@tomsd/morphoanalyzer)
![NPM](https://img.shields.io/npm/l/@tomsd/morphoanalyzer)
![npms.io (quality)](https://img.shields.io/npms-io/quality-score/@tomsd/morphoanalyzer)
![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/npm/@tomsd/morphoanalyzer)
![Maintenance](https://img.shields.io/maintenance/yes/2022)

## Installation
``` sh
npm install @tomsd/morphoanalyzer
```

# Usage

``` typescript
import { Analyzer } from "@tomsd/morphoanalyzer";

Analyzer.analyze("これは、テストです。")
  .then(console.log);

/*
[
  { surface: 'これ', pos: '名詞' },
  { surface: 'は', pos: '助詞' },
  { surface: '、', pos: '記号' },
  { surface: 'テスト', pos: '名詞' },
  { surface: 'です', pos: '助動詞' },
  { surface: '。', pos: '記号' }
]
*/

```
npm package: @skanska/branded-components
Description: Skanska Branded Component Library
Author: Skanska
Latest version: 0.0.4


# Skanska Branded Components

This library is intended for Skanska to be able to brand web applications according to the brand guidelines.

## Using this library

### Script tag

- Put a script tag similar to this `<script type='module' src='https://unpkg.com/my-component@0.0.1/dist/my-component.esm.js'></script>` in the head of your index.html
- Then you can use the element anywhere in your template, JSX, html, etc.

### Node Modules
- Run `npm install my-component --save`
- Put a script tag similar to this `<script type='module' src='node_modules/my-component/dist/my-component.esm.js'></script>` in the head of your index.html
- Then you can use the element anywhere in your template, JSX, html, etc.

### In a stencil-starter app
- Run `npm install my-component --save`
- Add an import to the npm packages `import my-component;`
- Then you can use the element anywhere in your template, JSX, html, etc.

### In a frontend framework app
- Run `npm install my-component --save`
- Add an import to the index.js file:
``` js
import { defineCustomElements } from '@skanska/branded-components/dist/loader';
```
- Bind the elements at the bottom of the  index.js file:
``` js
defineCustomElements(window);
```
- Then you can use the element anywhere in your project, JSX, etc.
npm package: @skapxd/debounce
Description: package use to generate a debounce ease and fast from Vanilla or React
Author: skapxd
Latest version: 1.0.17

# How to use

**Debounce**

It takes care of ignoring the first functions that are called and executing the last time the function is called after a certain time

Case of use
- Online search engine

---
**InverseDebounce**

It is in charge of executing the first time the function is called and ignores the calls of the other times that the same function is called

Case of use
- Loading data when reaching the end of a InfinityScroll

---

## Vanilla Debounce - Live examples
  
[![Edit @skapxd/debounce](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/skapxd-debounce-4ugtm?fontsize=14&hidenavigation=1&theme=dark)


  
## React Debounce - Live examples

[![Edit @skapxd/useDebounce](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/skapxd-usedebounce-npste?fontsize=14&hidenavigation=1&theme=dark)

## Vanilla InverseDebounce - Live example

[![Edit @skapxd/inverseDebounce](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/skapxd-inversedebounce-ozfj1?fontsize=14&hidenavigation=1&theme=dark)

## React InverseDebounce - Live examples

[![Edit @skapxd/useInverseDebounce](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/skapxd-useinversedebounce-0znjc?fontsize=14&hidenavigation=1&theme=dark)
npm package: @skapxd/swagger
Description: Nest - modern, fast, powerful node.js web framework (@swagger)
Author: Kamil Mysliwiec
Latest version: 8.0.5

<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/core.svg" alt="NPM Version" /></a>
  <a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
  <a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
  <a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
  <a href="https://coveralls.io/github/nestjs/nest?branch=master"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#5" 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"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
  <a href="https://opencollective.com/nest#sponsor"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
  <a href="https://paypal.me/kamilmysliwiec"><img src="https://img.shields.io/badge/Donate-PayPal-dc3d53.svg"/></a>
  <a href="https://twitter.com/nestframework"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
</p>
  <!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
  [![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->

## Description

[OpenAPI (Swagger)](https://www.openapis.org/) module for [Nest](https://github.com/nestjs/nest).

## Installation

```bash
$ npm i --save @nestjs/swagger
```

## Quick Start

[Overview & Tutorial](https://docs.nestjs.com/openapi/introduction)

## Support

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).

## Stay in touch

- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec)
- Website - [https://nestjs.com](https://nestjs.com/)
- Twitter - [@nestframework](https://twitter.com/nestframework)

## License

Nest is [MIT licensed](LICENSE).
npm package: @skapxd/validate
Description: Value validation in modern format
Author: skapxd
Latest version: 2.0.5

��# How to use 

```js
import { regexValidate, MapOfRegExpValidate } from "@skapxd/regex-validate";

/** @type {boolean} */
const isValid = regexValidate({
    stringToValidate: "test@test.test",
    regExp: MapOfRegExpValidate.email, // any regular expression -> /any/ 
});

console.log({ isValid });
```
npm package: @skara-live/react-native-otp
Description: A React Native Otp input component.
Author: Chinmoy Raj Deka
Latest version: 0.1.1

# react-native-otp

A React Native Otp input component.

## Installation

```sh
npm install react-native-otp
```

## Usage

```ts
import * as React from 'react';
import { StyleSheet, View } from 'react-native';
import OTPInput from 'react-native-otp';

export default function App() {
  const [code, setCode] = React.useState<string[]>([])

  return (
    <View style={styles.container}>
      <OTPInput length={6} value={code} onChange={(value) => setCode(value)} />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  box: {
    width: 60,
    height: 60,
    marginVertical: 20,
  },
});

```

## Props
| Name  | Required  | Type |  Description  |
|---|---|---|---|
| length | true | `number` |The number of input fields |
| value | true | `string[]` | The value from the inputs | 
| onChange | true | `(value:string[]) => void` | Call function to run on input change | 
| disabled | optional | `boolean` | Toggle between editable state of the input |
| inputStyle | optional | `ViewStyle` | The style object for the inputs | 
| containerStyle | optional | `ViewStyle` | The style object for the container | 

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT
npm package: @skarab/detect-package-manager
Description: Detects which package manager (bun, pnpm, yarn, npm) is used based on the current working directory.
Author: skarab42
Latest version: 1.0.0

# @skarab/detect-package-manager

Detects which package manager (bun, pnpm, yarn, npm) is used based on the current working directory.

## Features

- Support `packageManager` field in `package.json`.
- Detect PM agent version from lock file name, format or version.
- Fully typed and well tested!

_TODO_

- Resolve external lock file such as `lockfile-directory` in `.npmrc` (PR welcome).

## Installation

```bash
pnpm add @skarab/detect-package-manager
```

## Usage

Detect the PM agent from the current working directory.

```ts
import { detectAgent } from '@skarab/detect-package-manager';

const agent = await detectAgent();

console.log(agent); // { name: 'pnpm', version: '7.6.0' }
```

Detect the PM agent from a provided directory.

```ts
import { detectAgent } from '@skarab/detect-package-manager';

const agent = await detectAgent('path/to/yarn/project');

console.log(agent); // { name: 'yarn', version: '1.22.17' }
```

Detect all installed and [known](#known-agents) agents.

```ts
import { detectInstalledAgents } from '@skarab/detect-package-manager';

const agents = await api.detectInstalledAgents();

console.log(agents.has('pnpm')); // true

// agents === Map(3) {
//   'pnpm' => { name: 'pnpm', version: '7.6.0' },
//   'yarn' => { name: 'yarn', version: '1.22.17' },
//   'npm' => { name: 'npm', version: '8.13.2' }
// }
```

## Known agents

- [bun](https://bun.sh/) Bun is a fast all-in-one JavaScript runtime.
- [pnpm](https://pnpm.io/) Fast, disk space efficient package manager.
- [yarn](https://yarnpkg.com/) Yarn is a package manager that doubles down as project manager.
- [npm](https://www.npmjs.com/package/npm) A JavaScript package manager.

## Related

- [detect-package-manager](https://github.com/egoist/detect-package-manager) Detect which package manager you're using (yarn or pnpm or npm)
- [preferred-pm](https://github.com/zkochan/packages/tree/main/preferred-pm) Returns the preferred package manager of a project
- [@antfu/ni](https://github.com/antfu/ni) Use the right package manager

---

Scaffolded with [@skarab/skaffold](https://www.npmjs.com/package/@skarab/skaffold)
npm package: @skarab/eslint-config
Description: My ESLint config
Author: skarab42
Latest version: 5.0.0

# My shared ESLint config

## Installation

```bash
pnpm add -D typescript eslint @skarab/eslint-config
```

## Basic usage

Add `@skarab/eslint-config/recommended` or `@skarab/eslint-config/recommended-commonjs` to the extends section of your ESLint configuration file.

```json
{
  "extends": ["some-other-config-you-use", "@skarab/eslint-config/recommended"]
}
```

## Advenced usages

This ESLint configuration is designed to be highly customizable, allowing for flexible setup options that cater to different environments and scenarios, including automatic detection of TypeScript.

### Importing and Configuring

To start, in your `.eslintrc.js`, import the `config` function:

```ts
const { config } = require('@skarab/eslint-config');
```

### Configuring options

The `config` function accepts an object of type `ConfigOptions`, enabling you to customize the ESLint setup for your project. The configuration supports **automatic TypeScript detection** but also allows you to explicitly enable or disable TypeScript support based on your requirements.

Here's an example of configuring the ESLint setup:

```ts
// .eslintrc.js
// ...
module.exports = config({
  ts: true,
  jsx: true,
  node: true,
  browser: false,
  type: 'module',
  ecmaVersion: 2020,
  environments: ['jest'],
  reportUnusedDisableDirectives: true,
  ignores: ['**/dist/**', '**/node_modules/**'],
});
```

### Example Usage

#### Basic Configuration for Node.js

For a simple Node.js project using ECMAScript modules:

```ts
const basicConfig = config({
  node: true,
  type: 'module',
});
```

#### TypeScript Project

For a project using TypeScript, where TypeScript is detected automatically:

```ts
const tsConfig = config({
  // TypeScript is automatically detected
  jsx: true,
  ecmaVersion: 2020,
});
```

To explicitly disable TypeScript support:

```ts
const tsConfigExplicit = config({
  ts: false,
  jsx: true,
  ecmaVersion: 2020,
});
```

#### Browser Environment

For a project tailored to run in a browser environment:

```ts
const browserConfig = config({
  browser: true,
  node: false,
});
```

# Related tools

- [@skarab/eslint-staged](https://github.com/skarab42/eslint-staged)

# My other shared configurations

- [@skarab/prettier-config](https://github.com/skarab42/prettier-config)
- [@skarab/typescript-config](https://github.com/skarab42/typescript-config)
npm package: @skarab/eslint-staged
Description: My skaffolded project
Author: skarab42
Latest version: 1.0.0

# @skarab/eslint-staged

This package provides a CLI tool (`eslint-staged`) designed to run ESLint on specific files, considering the files in `.eslintignore`.

It resolves the [common issue] ([1], [2]) where [lint-staged] pass files ignored by ESLint.

## Installation

```bash
pnpm add @skarab/eslint-staged --save-dev
```

## Usage

In your `package.json`, configure [lint-staged] as follows:

```ts
"lint-staged": {
  "*": [
    "pnpm eslint-staged --fix --max-warnings=0",
    "pnpm prettier --write --ignore-unknown"
  ]
}
```

---

Scaffolded with [@skarab/skaffold](https://www.npmjs.com/package/@skarab/skaffold)

[lint-staged]: https://github.com/lint-staged/lint-staged
[common issue]: https://www.curiouslychase.com/posts/eslint-error-file-ignored-because-of-a-matching-ignore-pattern/
[1]: https://github.com/lint-staged/lint-staged/issues/584#issue-413947299
[2]: https://github.com/eslint/eslint/issues/16602#issue-1470373542
npm package: @skarab/prettier-config
Description: My shared Prettier config
Author: skarab42
Latest version: 1.2.2

# My shared Prettier config

## Installation

```bash
pnpm add -D prettier @skarab/prettier-config
```

## Configuration

Select one of the three methods below according to your needs and/or preferences.

### Setup in `package.json`

```ts
{
  "prettier": "@skarab/prettier-config"
}
```

### Export from `.prettierrc.json`

```json
"@skarab/prettier-config"
```

### Or extends in `.prettierrc.js`

```js
module.exports = {
  ...require('@skarab/prettier-config'),
  semi: false,
};
```
npm package: @skarab/skaffold
Description: The best way to scaffold a project as I would do it myself (Kappa)
Author: skarab42
Latest version: 3.4.0

# @skarab/skaffold

The best way to scaffold a project as I would do it myself.

## Features

- 📐 Setup the holy trinity: [Prettier](https://prettier.io/), [ESLint](https://eslint.org/), [TypeScript](https://www.typescriptlang.org/) with my [shared configuration](#my-shared-configurations).
- 🤖 Setup [GitHub Actions](https://github.com/features/actions) to run the trinity on `push` and `pull_request`.
- 🔎 Setup [lint-staged](https://github.com/okonet/lint-staged) and [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks) to run Prettier and ESLint on staged files.
- ✅ Setup [Vitest](https://vitest.dev/) and create a minimal example in the `./test` directory.
- 📦 Setup [semantic-release](https://github.com/semantic-release/semantic-release) for automatic release on NPM via GitHub Actions (see [Publishing](#before-publishing)).

## Installation

```bash
pnpm add --global @skarab/skaffold
```

## Example

```bash
skaffold my-amazing-project
cd ./my-amazing-project
pnpm install
pnpm update # optional
```

## Usage

```ts
Usage: skaffold [options] [command]

The best way to scaffold a project as I would do it myself (Kappa).

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

Commands:
  create [options] [name]  create a new project
  help [command]           display help for command
```

## Publishing

If you have selected the `release` feature when creating your project, please check the following points:

1. Make sure you add your [NPM_TOKEN](https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow) as a secret in your [repo configuration](https://docs.github.com/en/actions/security-guides/encrypted-secrets).
2. Edit the `.github/workflows/CI.yml` file and uncomment the `release` job.
3. Edit the `package.json` and make your project public.

   ```json
   {
     "private": false,
     "publishConfig": {
       "access": "public"
     }
   }
   ```

> The next time you push on the main branch your package will be automatically published on NPM 🚀

## My shared configurations

- [@skarab/eslint-config](https://github.com/skarab42/eslint-config)
- [@skarab/prettier-config](https://github.com/skarab42/prettier-config)
- [@skarab/typescript-config](https://github.com/skarab42/typescript-config)
npm package: @skarab/tsinit
Description: Create a tsconfig file with all available options.
Author: skarab42
Latest version: 1.1.0

# @skarab/tsinit

Create a `tsconfig.json` file with all available options.

> See a [sample output](tsconfig.tsinit.json) for typescript@4.7.4

## Installation

```bash
pnpm add -D typescript @skarab/tsinit
```

## Usage

```bash
pnpm tsinit [filename] [options]

Options:
  --overwrite
  --comment-all
```
npm package: @skarab/tssert
Description: 🔥 Micro TypeScript assertion (test) library.
Author: skarab42
Latest version: 1.0.1

# @skarab/tssert

Micro TypeScript assertion (test) library.

> Add your assertions to your usual test suite and run `tsc --noEmit`, enjoy!

📌 Please note that this library does not perform any check at runtime, but only at compile time (or in your IDE).

# Why ?

An attempt to reduce the [verbosity](https://github.com/colinhacks/zod/blob/51e93e7dd30b161d55e2f17d0907ecdd2f526c60/src/__tests__/default.test.ts#L51-L56) of type testing.

# Install

```bash
pnpm add @skarab/tssert typescript
```

# Usages

## With a full description of the error

```ts
import { expectType } from '@skarab/tssert';

expectType<boolean>().toAccept(true);
expectType<true>().toAccept(false); // ts-error with description
```

## Without error description, but stricter and more flexible

```ts
expectType('Hello').toExtend('42').toBe(true);
expectType<string>().toExtend('42').toBe(true);
expectType('Hello').toExtend<string>().toBe(true);
expectType<string>().toExtend<string>().toBe(true);

expectType<boolean>().toExtend<true>().toBe(true); // ts-error
expectType<true>().toExtend<boolean>().toBe(true);
```

> When you move the mouse over `toAccept`, `toExtend` and `toEqual` you can see the expected and received values.
>
> ![Sans titre](https://user-images.githubusercontent.com/62928763/177138437-c9b271dd-e99f-41b7-9415-146cd2981076.png)

# API

## toExtend()

```ts
interface TypeA {
	a: 42;
	b: string | number;
}

interface TypeB {
	a: 42;
	b: number;
}

expectType<TypeB>().toExtend<TypeA>().toBe(true);
expectType<TypeA>().toExtend<TypeB>().toBe(true); // ts-error
```

## toEqual()

```ts
expectType<TypeA>().toEqual<TypeA>().toBe(true);
expectType<TypeA>().toEqual<TypeB>().toBe(true); // ts-error
expectType<TypeB>().toEqual<TypeA>().toBe(true); // ts-error
```

## Types ...

```ts
import type { ExpectExtend, ExpectEqual } from '@skarab/tssert';

type A = ExpectExtend<TypeB, TypeA>; // true
type B = ExpectEqual<TypeA, TypeB>; // false
```

# TypeScript ~~god~~ strict mode

It is strongly recommended to activate the [strict](https://www.typescriptlang.org/tsconfig#strict) mode of TypeScript which will activate all checking behaviours that results in stronger guarantees of the program's correctness.

# Contributing 💜

See [CONTRIBUTING.md](https://github.com/skarab42/tssert/blob/main/CONTRIBUTING.md)
npm package: @skarab/typescript-config
Description: My shared TypeScript config
Author: skarab42
Latest version: 3.1.0

# My shared TypeScript config

## Installation

```bash
pnpm add -D typescript @skarab/typescript-config
```

## Usage

Add `@skarab/typescript-config` to the extends section of your TypeScript configuration file.

```json
{
  "extends": "@skarab/typescript-config",
  "compilerOptions": {
    "outDir": "build",
    "noEmit": false // true by default
  }
}
```

# My other shared configurations

- [@skarab/eslint-config](https://github.com/skarab42/eslint-config)
- [@skarab/prettier-config](https://github.com/skarab42/prettier-config)
npm package: @skaratech/tiny
Description: Tiny package from skara technologies
Author: Skara Technologies Limited
Latest version: 1.0.3

# Tiny

Tiny is a npm library for dealing with word pluralization.

## Installation

Use the package manager [npm](https://pip.pypa.io/en/stable/) to install tiny.

```bash
npm install @skaratech/tiny
```

## Usage

```javascript
import tiny from 'tiny'; //ES5

npm.pluralize('word') //returns 'words'
npm.pluralize('goose') //returns 'geese'
npm.singularize('phenomena') //returns 'phenomenon'
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @skarif2/logger
Description: Express middleware for console logging request details
Author: Sk Arif
Latest version: 0.3.0

# logger 🌱

[![NPM Version](https://img.shields.io/npm/v/@skarif2/logger.svg)](https://www.npmjs.com/package/@skarif2/logger)
[![Build Status](https://travis-ci.com/skarif2/logger.svg?branch=master)](https://travis-ci.com/skarif2/logger)
[![dependencies Status](https://david-dm.org/skarif2/logger/status.svg)](https://david-dm.org/skarif2/logger)
[![Maintainability](https://api.codeclimate.com/v1/badges/2a0c31825e520752692b/maintainability)](https://codeclimate.com/github/skarif2/logger/maintainability)
[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://img.shields.io/badge/license-MIT-brightgreen.svg)

Logger is an [express](http://expressjs.com) middleware that can be used to log request details to the console.

<div align='center'>
  <img src='https://user-images.githubusercontent.com/5141132/50721684-aac76a80-10ed-11e9-8785-43327e845cda.png' alt='Logger'>
</div>

**Note:** A parser (ie: [body-parser](https://www.npmjs.com/package/body-parser))  should be used before initializing logger.

## Installation

This is a [Node.js](https://nodejs.org/en/) module available through the
[npm registry](https://www.npmjs.com/). Installation is done using the
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):

```sh
$ npm i @skarif2/logger
```

## Usages

### Enable logger for all requests
```javascript
var express = require('express')
var logger = require('@skarif2/logger')
var app = express()

app.use(express.json())

app.use(logger())

app.get('/', function (req, res) {
  res.json({
    msg: 'Beautiful log in the console!'
  })
})

app.listen(3000, function () {
  console.log('Listening on port 3000')
})
```

### Enable logger for a single route
```javascript
var express = require('express')
var logger = require('@skarif2/logger')
var app = express()

app.use(express.json())

app.get('/', logger(), function (req, res) {
  res.json({
    msg: 'Beautiful log in the console!'
  })
})

app.get('/no-log', function (req, res) {
  res.json({
    msg: 'Without any logging!'
  })
})

app.listen(3000, function () {
  console.log('Listening on port 3000')
})
```