open-index/open-npm huggingface dataset:
npm package: @samagra-x/uci-adapters-discord
Description: A discord wrapper for @samagra-x/uci-adapters-factory
Latest version: 1.0.3

# Nodejs Discord Bot Provider

A discord bot provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/discord)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'Discord',
});

await adapter.sendMessage({
    webhookUrl: 'WEBHOOK',
    content: 'CONTENT',
});
```
npm package: @samagra-x/uci-adapters-factory
Description: A factory module which provides specific adapter instance based on request data.
Latest version: 1.1.20

# UCI Adapter Provider Factory

A factory class that provides specific adapter types based on request data. [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/factory)

## Usage

```typescript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'TYPE_OF_ADAPTER',
    config: {
        configVariable1: 'CONFIG_VALUE1',
        configVariable2: 'CONFIG_VALUE2',
        ...
    }
});

adapter.sendMessage(MESSAGE_DATA);
```

Take a look at [factory](./src/lib/adapter.factory.ts) to get a list of available adapters.
npm package: @samagra-x/uci-adapters-fcm
Description: A FCM adapter for @samagra-x/uci-adapters-factory
Author: chinmoy12c
Latest version: 1.0.7

# Novu FCM Provider

A FCM push provider library for [@novu/node](https://github.com/novuhq/novu)

## Usage

The payload field supports all [NotificationMessagePayload](https://firebase.google.com/docs/reference/admin/node/firebase-admin.messaging.notificationmessagepayload.md#notificationmessagepayload_interface) values, example below.

```ts
import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVU_API_KEY);

novu.trigger('event-name', {
  to: {
    subscriberId: '...',
  },
  payload: {
    deviceTokens: ['abcda...'], // Override subscriberId notification/device identifiers
    badge: 1, // iOS: The value of the badge on the home screen app icon, if 0 then the badge is removed.
    clickAction: 'clickity', // Android: Action associated with a user click on the notification.
    color: '#ff00ff', // Android: Hex color of the notification
    icon: 'myicon', // Android: Drawable resource id of icon, Web: URL to icon
    sound: 'custom_sound', // Android: name of custom notification sound
  },
});
```
npm package: @samagra-x/uci-adapters-mailgun
Description: A mailgun wrapper for samagra-x/uci-adapters-factory
Latest version: 1.0.1

# Nodejs Mailgun Provider

A mailgun email provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/mailgun)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'MailgunEmail',
    config: {
      apiKey: process.env.MAILGUN_API_KEY,
      domain: process.env.MAILGUN_DOMAIN,
      username: process.env.MAILGUN_USERNAME,
    }
});
```
npm package: @samagra-x/uci-adapters-mailjet
Description: A mailjet wrapper for @samagra-x/uci-adapters-factory
Latest version: 1.0.1

# Nodejs Mailjet Provider

A mailjet email provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/mailjet)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'MailjetEmail',
    config: {
      apiKey: process.env.MAILJET_APIKEY,
      apiSecret: process.env.MAILJET_API_SECRET,
      from: process.env.MAILJET_FROM_EMAIL,
    }
});
```
npm package: @samagra-x/uci-adapters-mailtrap
Description: A mailtrap wrapper for @samagra-x/uci-adapters-factory
Latest version: 1.0.1

# Nodejs Mailtrap Provider

A mailtrap email provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/mailgun)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'MailtrapEmail',
    config: {
      apiKey: process.env.MAILTRAP_API_KEY
    }
});
```
npm package: @samagra-x/uci-adapters-nodemailer
Description: A nodemailer email provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/nodemailer)
Latest version: 1.0.2

# Nodejs Custom SMTP Provider

A nodemailer email provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/nodemailer)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { NodemailerProvider } from '@novu/nodemailer';

const adapter = AdapterFactory.getAdapter({
    type: 'NodeMailer',
    config: {
      from: process.env.NODEMAILER_FROM_EMAIL,
      host: process.env.NODEMAILER_HOST,
      user: process.env.NODEMAILER_USERNAME,
      password: process.env.NODEMAILER_PASSWORD,
      port: process.env.NODEMAILER_PORT,
      secure: process.env.NODEMAILER_SECURE,
    }
});
```

You can read more details of the different possible configurations in [Nodemailer documentation](https://nodemailer.com/smtp/#tls-options)
npm package: @samagra-x/uci-adapters-pwa
Description: A pwa bot message wrapper for @samagra-x/uci-adapters-factory
Latest version: 1.1.5

# Nodejs PWA Bot Provider

A pwa bot provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/pwa)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'PwaBot',
    config: {
      socketEndpoint: 'ENDPOINT'
    }
});

await adapter.sendMessage(xmessage);
```
npm package: @samagra-x/uci-adapters-slack
Description: A slack wrapper for @samagra-x/uci-adapters-factory
Latest version: 1.0.1

# Nodejs Slack Bot Provider

A slack bot provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/slack)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'Slack',
});

await adapter.sendMessage({
    webhookUrl: 'WEBHOOK',
    content: 'CONTENT',
});
```
npm package: @samagra-x/uci-adapters-telegram-bot
Description: A telegram message wrapper for @samagra-x/uci-adapters-factory
Latest version: 1.0.6

# Nodejs Telegram Bot Provider

A telegram bot provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/telegram)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'TelegramBot',
    config: {
      botToken: 'TEST_BOT_TOKEN'
    }
});

await adapter.sendMessage({
  channel: '9999999',
  content: 'TEST_CONTENT',
});
```
npm package: @samagra-x/uci-adapters-twilio-sms
Description: A twilio wrapper for @samagra-x/uci-adapters-factory
Latest version: 1.0.0

# Nodejs Twilio SMS Provider

A twilio sms provider library for [@samagra-x/uci-adapters-factory](https://github.com/PraVriShti/packages/tree/main/packages/adapters/twilio)

Taken from: [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { AdapterFactory } from '@samagra-x/uci-adapters-factory';

const adapter = AdapterFactory.getAdapter({
    type: 'TwilioSms',
    config: {
      accountSid: process.env.TWILIO_ACCOUNT_SID,
      authToken: process.env.TWILIO_AUTH_TOKEN,
      from: process.env.TWILIO_FROM_NUMBER, // a valid twilio phone number
    }
});

await adapter.sendMessage({
  to: '0123456789',
  content: 'Message to send',
});
```
npm package: @samakunchan/oc-modal
Description: Modal pour le projet étudiant et projet final de OpenClassroom
Author: samakunchan
Latest version: 1.0.4

# oc-modal

> Simple modal for the final project OpenClassroom.

[![NPM](https://img.shields.io/badge/npm-v1.0.3-blue)](https://www.npmjs.com/package/@samakunchan/oc-modal)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save @samakunchan/oc-modal
```

```bash
yarn add --save @samakunchan/oc-modal
```

## Usage

```jsx
import { useState } from 'react';
import { OCModalComponent } from '@samakunchan/oc-modal';
import '@samakunchan/oc-modal/dist/index.css';

const MyComponent = () => {
  const [isOpenModal, setIsOpenModal] = useState(false);
  const message = 'This is my modal';
  const closeModal = () => setIsOpenModal(false);

  return (
    <div>
      <button onClick={() => setIsOpenModal(true)}>Open my modal</button>
      <OCModalComponent
        message={message}
        isModalActive={isOpenModal}
        closeModal={closeModal}
      />
    </div>
  );
}

export default MyComponent;
```

## License

MIT © [samakunchan](https://github.com/samakunchan)
npm package: @samandar.boymurodov/editorjs-codeflask
Description: Codeflask, for EditorJS
Author: Calum Knott
Latest version: 1.0.19

# EditorJs - Codeflask

### NPM
    npm i @samandar.boymurodov/editorjs-codeflask


---

## About

This is an EditorJs wrapper for [CodeFlask](https://kazzkiq.github.io/CodeFlask/) - A lovely lightweight zero-dep code formatter

It was built to be an improvement on :
* https://github.com/editor-js/code - Too Basic
* https://github.com/dev-juju/codebox - Agressive styling, and exports more data than markdown can handle


## Demo

![Demo ](./example-media/editorjs-codeflask-demo.gif)


## Built with:

* [CodeFlask](https://kazzkiq.github.io/CodeFlask/)
* [Prism](https://www.npmjs.com/package/prismjs)
* [Prism ESM Importer](https://www.npmjs.com/package/prismjs-components-importer)
* [Nice Select 2](https://www.npmjs.com/package/nice-select2)


---

## Installation / use

```javascript
import EditorJS from '@editorjs/editorjs';
import editorjsCodeflask from '@samandar.boymurodov/editorjs-codeflask';

var editor = EditorJS({
  // ...
  tools: {
    ...
    code: editorjsCodeflask
  },
});
```


## Data Format
The data imported/exported from the block is as follows:

| Name                       | Description                                                                                                              |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| code                       | The code that is displayed in the editor, with line breaks                                                               |
| language (optional)        | The programming language                                                                                                 |
| showlinenumbers (optional) | Will show/hide the line numbers (Default true) (WIP - [Codeflask #132](https://github.com/kazzkiq/CodeFlask/issues/132)) |


Since language and linenumbers are optional, existing ```code``` blocks can safley use this plugin



<!-- ---

## Markdown Compatability

> TODO!

This plugin *will be* compatible with

    npm i editorjs-markdown-parser

It will import/export using the code fence markdown style, with the language printed imediatly after the first fence, as described in [GFM #117](https://github.github.com/gfm/#example-112)

Line-numbers cant be expressed in markdown, so will be ommited

Example :

    ```javascript
    \\ Hello World
    ``` -->
npm package: @samandar_log02/labelflow-core
Description: Framework-agnostic image annotation engine
Latest version: 0.1.0

# @labelflow/core

Framework-agnostic image annotation engine. Draw bounding boxes on images with zoom, pan, resize, and drag support. Zero dependencies. ~23KB.

This is the core package — use it directly with vanilla JavaScript, or pair it with [`@labelflow/react`](https://www.npmjs.com/package/@labelflow/react) or [`@labelflow/vue`](https://www.npmjs.com/package/@labelflow/vue).

## Install

```bash
npm install @labelflow/core
```

## Usage

```js
import { AnnotationEngine, Canvas2DRenderer } from '@labelflow/core'

const canvas = document.getElementById('canvas')
const engine = new AnnotationEngine()
const renderer = new Canvas2DRenderer(canvas)

// Load image
const img = new Image()
img.onload = () => {
  engine.setImage(img)
  renderer.resize(800, 600)
  engine.setCanvasSize({ width: 800, height: 600 })
  engine.setActiveTool('bbox')
  renderer.render(engine.renderState)
}
img.src = '/photo.jpg'

// Pointer events
canvas.addEventListener('pointerdown', (e) => {
  const r = canvas.getBoundingClientRect()
  engine.onPointerDown({ x: e.clientX - r.left, y: e.clientY - r.top }, e.button)
  renderer.render(engine.renderState)
})

// Import annotations
engine.setAnnotations([
  { id: '1', x: 100, y: 100, width: 200, height: 150, rotation: 0, color: '#FF6B6B' }
])

// Export annotations
console.log(engine.annotations)
```

See the [full documentation](https://github.com/user/labelflow#readme) for complete API reference.

## License

MIT
npm package: @samandar_log02/labelflow-react
Description: React components for LabelFlow image annotation
Latest version: 0.1.0

# @labelflow/react

React components for image annotation. Draw bounding boxes on images with zoom, pan, resize, and drag support. Built on [`@labelflow/core`](https://www.npmjs.com/package/@labelflow/core).

## Install

```bash
npm install @labelflow/core @labelflow/react
```

## Usage

```tsx
import { useState } from 'react'
import { AnnotationProvider, AnnotationCanvas, ToolButton, useAnnotation } from '@labelflow/react'
import type { BoundingBox } from '@labelflow/react'

function App() {
  const [annotations, setAnnotations] = useState<BoundingBox[]>([])

  return (
    <AnnotationProvider annotations={annotations} onChange={setAnnotations}>
      <Toolbar />
      <AnnotationCanvas src="/photo.jpg" width={800} height={600} />
    </AnnotationProvider>
  )
}

function Toolbar() {
  const { engine, setColor, deleteSelected, zoomIn, zoomOut } = useAnnotation()

  return (
    <div>
      <ToolButton tool={null}>Select</ToolButton>
      <ToolButton tool="bbox">BBox</ToolButton>
      <button onClick={() => setColor('#FF6B6B')}>Red</button>
      <button onClick={() => setColor(null)}>Random</button>
      <button onClick={deleteSelected}>Delete</button>
      <button onClick={zoomIn}>Zoom In</button>
      <button onClick={zoomOut}>Zoom Out</button>
      <span>{engine.annotations.length} annotations</span>
    </div>
  )
}
```

### Import / Export

```tsx
// Import — pass array, it renders
setAnnotations([
  { id: '1', x: 100, y: 100, width: 200, height: 150, rotation: 0, color: '#FF6B6B' }
])

// Export — read current state, save to server
await fetch('/api/save', { method: 'POST', body: JSON.stringify(annotations) })
```

See the [full documentation](https://github.com/user/labelflow#readme) for complete API reference.

## License

MIT
npm package: @samandar_log02/labelflow-vue
Description: Vue 3 components for LabelFlow image annotation
Latest version: 0.1.0

# @labelflow/vue

Vue 3 components for image annotation. Draw bounding boxes on images with zoom, pan, resize, and drag support. Built on [`@labelflow/core`](https://www.npmjs.com/package/@labelflow/core).

## Install

```bash
npm install @labelflow/core @labelflow/vue
```

## Usage

```vue
<script setup lang="ts">
import { ref } from 'vue'
import { AnnotationProvider, AnnotationCanvas, ToolButton, useAnnotation } from '@labelflow/vue'
import type { BoundingBox } from '@labelflow/vue'

const annotations = ref<BoundingBox[]>([])
</script>

<template>
  <AnnotationProvider :annotations="annotations" @change="annotations = $event">
    <ToolButton :tool="null">Select</ToolButton>
    <ToolButton tool="bbox">BBox</ToolButton>
    <AnnotationCanvas src="/photo.jpg" :width="800" :height="600" />
  </AnnotationProvider>
</template>
```

### Import / Export

```ts
// Import — assign array, it renders
annotations.value = [
  { id: '1', x: 100, y: 100, width: 200, height: 150, rotation: 0, color: '#FF6B6B' }
]

// Export — read current state, save to server
await fetch('/api/save', { method: 'POST', body: JSON.stringify(annotations.value) })
```

### useAnnotation()

```ts
const { engine, setActiveTool, setColor, deleteSelected, zoomIn, zoomOut, resetZoom } = useAnnotation()
```

See the [full documentation](https://github.com/user/labelflow#readme) for complete API reference.

## License

MIT
npm package: @samanmoss2/nestjs-package-starter
Description: NestJS npm package starter
Author: John Biundo
Latest version: 1.0.0

<h1 align="center"></h1>

<div align="center">
  <a href="http://nestjs.com/" target="_blank">
    <img src="https://nestjs.com/img/logo_text.svg" width="150" alt="Nest Logo" />
  </a>
</div>

<h3 align="center">NestJS npm Package Starter</h3>

<div align="center">
  <a href="https://nestjs.com" target="_blank">
    <img src="https://img.shields.io/badge/built%20with-NestJs-red.svg" alt="Built with NestJS">
  </a>
</div>

### Installation

1. Clone the repo
2. Run npm/yarn install

```bash
cd nestjs-package-starter
npm install
```

## Change Log

See [Changelog](CHANGELOG.md) for more information.

## Contributing

Contributions welcome! See [Contributing](CONTRIBUTING.md).

## Author

**John Biundo (Y Prospect on [Discord](https://discord.gg/G7Qnnhy))**

## License

Licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
npm package: @samarthpatel/claude-skill-session-handoff
Description: Claude Code skill for session handoffs, end-of-day reports, and progress tracking
Latest version: 1.0.0

# claude-session-handoff

A Claude Code skill that captures your session into a structured document — useful for carrying context between sessions, sharing progress with your team, or keeping a personal development log.

## What it does

Run `/session-handoff` at the end of any Claude Code session. It will:
- Summarize what was worked on, decisions made, and files changed
- Record the current state of the project (builds? tests pass? deployed?)
- List blockers and next steps
- Write a `handoffs/YYYY-MM-DD.md` file in your project root

## Use cases

**Session continuity** — Resume exactly where you left off. No more re-explaining context to Claude at the start of a new session.

**End-of-day reports** — Share a clean, structured summary of what you shipped with your manager, team lead, or client. The output is human-readable and requires no editing.

**Progress tracking** — Build up a running log of `handoffs/` files over time. Flip back through them to see how a feature evolved, audit decisions, or write a retrospective.

**Async team handoffs** — Passing work to a colleague? The handoff doc covers state, blockers, and next steps so they can pick up without a sync call.

## Installation

**Via npm (recommended):**

```bash
npm install -g @samarthpatel/claude-skill-session-handoff
```

**Via npx (no install needed):**

```bash
npx @samarthpatel/claude-skill-session-handoff
```

**Via git:**

```bash
git clone https://github.com/samarthpatel24/claude-session-handoff.git ~/.claude/skills/session-handoff
```

All methods copy the skill to `~/.claude/skills/session-handoff/`.

## Usage

In any Claude Code session, type:

```
/session-handoff
```

Claude will gather context from the session, write a structured handoff doc to `./handoffs/YYYY-MM-DD.md`, and print it to the terminal.

## Example Output

See [examples/sample-handoff.md](examples/sample-handoff.md) for a realistic example of what a handoff document looks like.

## Works with

- **[claude-historian](https://github.com/badass-courses/claude-historian)** (optional) — if installed, enriches the handoff with deeper session history search
- **[nightly-digest](https://github.com/samarthpatel24/nightly-digest)** (optional) — if you use nightly-digest, session-handoff will offer to copy summaries to `~/.claude/daily-summaries/` for automatic progress report generation

## Requirements

- [Claude Code](https://claude.ai/code) CLI installed
- No other dependencies

## License

MIT
npm package: @samatech/cadence-lint
Description: CLI linter for Cadence projects
Author: Sam Pullman
Latest version: 0.3.0

<h2 align='center'>@samatech/cadence-lint</h2>

<p align='center'>CLI linter for Cadence projects</p>

<p align='center'>
<a href='https://www.npmjs.com/package/@samatech/cadence-lint'>
  <img src='https://img.shields.io/npm/v/@samatech/cadence-lint?color=222&style=flat-square'>
</a>
</p>

<br>

## Description

A command line linter for [Cadence](https://docs.onflow.org/cadence/language/) (Flow smart contract language). It uses the [Flow CLI](https://github.com/onflow/flow-cli) to start a language server, and passes Cadence files described via glob pattern.

## Usage

### Install

Install globally

```bash
npm i -g @samatech/cadence-lint
```

Install to local project

```bash
npm i -D @samatech/cadence-lint
```

### Run

Basic usage

```bash
cadence-lint -f "./contracts/**/*.cdc"
```

### Options

<!-- prettier-ignore -->
| Option       | Abbr. | Default       | Description                                                                           |
| ------------ | ----- | ------------- | ------------------------------------------------------------------------------------- |
| --files      | -f    | "./**/*.cdc" | Comman separated file glob, based on [fast-glob](https://github.com/mrmlnc/fast-glob) |
| --configPath | -p    | "./flow.json" | Path to flow.json                                                                     |
| --failOnWarning     | --failOnWarning    | -             | Flag that causes the linter to fail when warnings are detected                        |
| --failOnHint     | --failOnHint    | -             | Flag that causes the linter to fail when hints are detected                        |
| --help       | -h    | -             | Display usage info                                                                    |
| --version    | -v    | -             | Display version info                                                                  |
npm package: @samatech/fetch-api
Description: Small fetch wrapper for quickly prototyping API clients
Author: Sam Pullman
Latest version: 0.12.1

<h2 align='center'>@samatech/fetch-api</h2>

<p align='center'>Small fetch wrapper for creating quick API wrappers</p>

<p align='center'>
<a href='https://www.npmjs.com/package/@samatech/fetch-api'>
  <img src='https://img.shields.io/npm/v/@samatech/fetch-api?color=222&style=flat-square'>
</a>
</p>

<br>

## Instructions

### Install

```bash
npm i -D @samatech/fetch-api
```

```bash
yarn add @samatech/fetch-api
```

```bash
pnpm i -D @samatech/fetch-api
```

### Configuration

`FetchApi` global configuration is passed to the constructor.

```ts
FetchApi({
  // API base URL prepended to requests
  baseUrl: '',

  // Default request timeout
  timeout: 10000,

   // Passed to JSON.stringify and used as fetch `body`.
   // Sets headers: { Accept: 'application/json', 'Content-Type': 'application/json' }
  data: null,

  // Request URL parameters, e.g. `{ 'a': 1 }`. Passed to `new URLSearchParams(params)`
  // Entries with undefined values are filtered out
  params: RequestParams,

  // Convenience for Basic Auth.
  // Sets headers['Authorization'] = `Basic ${btoa(`${auth.username}:${auth.password}`)}`
  auth: { username: 'test', password: 'password' }

  // Request interceptors
  requestInterceptors: [],

  // Response interceptors
  responseInterceptors: [],
});
```

### Usage

Here is an example of basic usage that includes a response interceptor for handling 403 response codes and converting the body to json.

```ts
const api = new FetchApi({
  baseUrl: 'https://cool.api/',
  responseInterceptors: [
    async (res) => {
      const { status } = res;

      if (status === 403) {
        throw new Error('FORBIDDEN');
      }
      res.data = await res.json();
      return res;
    },
  ],
});

// Make a get request to 'https://cool.api/status/'
const status = api.request({ url: 'status/' });
```

## Environment

`fetch` must be available. If you need to support older browsers or Node, use a polyfill such as [whatwg-fetch](https://github.com/github/fetch)

## Example

See the `example` directory.

## License

MIT License © 2021 [Samuel Pullman](https://github.com/samatech)
npm package: @samatech/i18n-json
Description: Convert i18n translation files between json and csv
Author: Sam Pullman
Latest version: 0.1.1

# i18n JSON

CLI tool for converting i18n translation files between json and csv.

WARNING - this tool is not well tested yet, and not recommended for production use. It overrides files, so make sure you're using version control!

## Usage

We recommend [PNPM](https://github.com/pnpm/pnpm) for reducing disk usage and speeding up installation for Javascript/Typescript projects.
`npm` may be substituted with `pnpm` in the following commands:

**Install**

```
pnpm install
```

**Run tests**

```
pnpm run test
```

**Build library**

```
pnpm run build
```

**Run on local project**

Convert single JSON file to CSV

```
node ./bin/i18n-json.js -i ./test/json/translations/en.json -o ./test/output
```

Convert folder of JSON files to CSV, with `en.json` fallback

```
node ./bin/i18n-json.js -i ./test/json/translations -o ./test/output -f en.json
```

Convert CSV to JSON

```
node ./bin/i18n-json.js -i ./test/csv/translations/en.csv -o ./test/output
node ./bin/i18n-json.js -i ./test/csv/translations/en_kr.csv -o ./test/output
```
npm package: @samatech/onflow-fcl-esm
Description: @onflow/fcl built for ES Module consumption
Author: Sam Pullman
Latest version: 0.8.0

<h2 align='center'>@samatech/onflow-fcl-esm</h2>

<p align='center'>@onflow/fcl built for ES Module consumption. Includes some typings.</p>

<p align='center'>
<a href='https://www.npmjs.com/package/@samatech/onflow-fcl-esm'>
  <img src='https://img.shields.io/npm/v/@samatech/onflow-fcl-esm?color=222&style=flat-square'>
</a>
</p>

<br>

### Installation

```bash
npm i -D @samatech/onflow-fcl-esm
```

### Usage

Use according to Flow [documentation](https://github.com/onflow/fcl-js/tree/master/packages/fcl)

### Development

#### Release

Currently, a custom release script is used to update the version and publish to NPM. This must be executed on the main branch, and `<version>` must not equal the current version on NPM.

```bash
node scripts/release.js <version>
```
npm package: @samatech/onflow-ts
Description: TypeScript test and dApp utils for the Flow blockchain.
Author: Sam Pullman
Latest version: 0.15.0

<h2 align='center'>@samatech/onflow-ts</h2>

<p align='center'>TypeScript test and dApp utils for the Flow blockchain.</p>

<p align='center'>
<a href='https://www.npmjs.com/package/@samatech/onflow-ts'>
  <img src='https://img.shields.io/npm/v/@samatech/onflow-ts?color=222&style=flat-square'>
</a>
</p>

<br>

## Installation

```bash
npm i -D @samatech/onflow-ts
```

## Usage

### Configuration

**BASE_PATH**

_Required_

Directory where the app's Cadence files are located

**CDC_DIRECTORIES**

Subdirectories containing Cadence contracts, transactions, and scripts.

Default

```ts
{
  'CONTRACT': './contracts/',
  'TRANSACTION': './transactions/',
  'SCRIPT': './scripts/',
}
```

## Development

#### Install packages with [PNPM](https://pnpm.io/installation)

```bash
pnpm install
```

#### Build

```bash
# tsc
npm run build
```

#### Test

```bash
# Jest
npm run test
```

#### Lint

```bash
# ESlint
npm run lint
```

#### Format

```bash
# Use Prettier to format files
npm run format
# Just check the formatting (used in CI)
npm run format:check
```

#### Release

Currently, a custom release script is used to update the version and publish to NPM. This must be executed on the main branch, and `<version>` must not equal the current version on NPM.

```bash
node scripts/release.js <version>
```
npm package: @samatech/postcss-basics
Description: Simple opinionated PostCSS plugin pack.
Author: SamaTech
Latest version: 0.7.4

# PostCSS Basics

[PostCSS](https://github.com/postcss/postcss) plugin pack for quick project bootstrapping.

Intended for use with [Vite](https://github.com/vitejs/vite), so `postcss-modules` and `postcss-import` are not included.

Plugins:
- [`autoprefixer`](https://github.com/postcss/autoprefixer)
- [`postcss-mixins`](https://github.com/postcss/postcss-mixins)
- [`postcss-nested`](https://github.com/postcss/postcss-nested)
- [`postcss-simple-vars`](https://github.com/postcss/postcss-simple-vars)
- [`@samatech/postcss-colors`](https://github.com/samatechtw/postcss-colors)

## Usage

**Step 1:** Install plugin:

```sh
npm install --save-dev @samatech/postcss-basics
```

**Step 2:** Check your project for existing PostCSS config: `postcss.config.js`
in the project root, `"postcss"` section in `package.json`
or `postcss` in bundle config.

If you do not use PostCSS, first add it according to [PostCSS docs].

**Step 3:** Add the plugin to plugins list (note the spread operator and the extra `()` after the `import` statement):

```javascript
import postcssBasics from '@samatech/postcss-basics'
export default {
  plugins: [
    ...postcssBasics(),
  ],
};
```

This can be simplified if you are not using other plugins:
```javascript
import postcssBasics from '@samatech/postcss-basics'
export default {
  plugins: postcssBasics(),
};
```

[PostCSS docs]: https://github.com/postcss/postcss#usage


## Options

**TODO**

- Pass through options for plugins
- Disable plugins


Call plugin function to set options:

```js
import postcssBasics from '@samatech/postcss-basics'
postcssBasics()
```
npm package: @samatech/postcss-colors
Description: PostCSS plugin that provides various color related transforms
Author: SamaTech
Latest version: 0.5.4

# PostCSS Colors

[PostCSS](https://github.com/postcss/postcss) plugin that provides various color related transforms.

## Features

- Converts 4 and 8 character hex colors to rgba according to the [CSS Color Module Spec](https://www.w3.org/TR/css-color-4/#hex-notation)
  - With 4 characters, the first three expand as a 3 character hex color would. The 4th expands similarly, and is used to calculate alpha with `0` as the lowest and `f` as the highest.
  - 8 character colors use the first six for the color, and the last two for alpha. For example, if the last two characeters are `cc` the alpha value is `204 / 255 = 0.8`.
```css
color: #00ff00cc;
color: #0f0c;

/* Converts to */
color: rgba(0, 255, 0, 0.8);
color: rgba(0, 255, 0, 0.8);
```

- Converts 3 and 6 character hex colors within `rgb` and `rgba` functions to valid syntax

```css
color: rgba(#0f0, 0.8);
color: rgba(#00ff00, 0.8);

/* Converts to */
color: rgba(0, 255, 0, 0.8);
color: rgba(0, 255, 0, 0.8);
```

## Usage

**Step 1:** Install plugin:

```sh
npm install --save-dev @samatech/postcss-colors
```

**Step 2:** Check your project for existing PostCSS config: `postcss.config.js`
in the project root, `"postcss"` section in `package.json`
or `postcss` in bundle config.

If you do not use PostCSS, first add it according to [PostCSS docs].

**Step 3:** Add the plugin to plugins list:

```javascript
import postcssColors from '@samatech/postcss-colors'
export default {
  plugins: postcssColors({
    // Options
  }),
};
```

[PostCSS docs]: https://github.com/postcss/postcss#usage


## Options

## TODO

## Inspiration

This original purpose behind this plugin was to update [`postcss-hexrgba`](https://github.com/madeleineostoja/postcss-hexrgba) to support PostCSS 8. `postcss-hexrgba` has since been updated.

The abstractions for converting hex to rgba are similar to those in [`postcss-color-hex-alpha`](https://github.com/postcss/postcss-color-hex-alpha), so that functionality is included in this library as well.

Adding a custom alpha syntax for hex colors may be considered, similar to [`postcss-color-alpha`](https://github.com/avanes/postcss-color-alpha)
npm package: @samatech/vue-color-picker
Description: Vue color picker component
Latest version: 1.2.0

<h2 align='center'>@samatech/vue-color-picker</h2>

<p align='center'>Vue color picker component</p>

<p align='center'>
<a href='https://www.npmjs.com/package/@samatech/vue-color-picker'>
  <img src='https://img.shields.io/npm/v/@samatech/vue-color-picker?color=222&style=flat-square'>
</a>
</p>

<br>

## Instructions

### Install

```bash
npm i -S @samatech/vue-color-picker
```

### Usage

Displays the picker and updates refs on color/gradient selection. See `packages/demo` for a slightly more advanced example.

```Vue
<template>
  <ColorPicker
    :color="selectedColor"
    :gradient="selectedGradient"
    :forceNonGradient="false"
    :selectedThemeColors="themeColors"
    @selectColor="selectColor"
    @update="update"
    @applyGradient="applyGradient"
  />
</template>

<script setup lang="ts">
import { ref } from 'vue'
import {
  ColorPicker,
  getRgbaCss,
  IPickerColor,
  IThemedGradient,
  IThemeColor,
  IRgba,
} from '@samatech/vue-color-picker'
import '@samatech/vue-color-picker/dist/style.css'

const selectedColor = ref<string | undefined>()
const selectedGradient = ref()
const themeColors = ref<IThemeColor[]>([])

const update = (color: IPickerColor | IThemedGradient | undefined) => {
  if (color && 'raw' in color) {
    selectedGradient.value = color.raw
    selectedColor.value = undefined
  } else {
    selectedColor.value = getRgbaCss(color?.rgba)
    selectedGradient.value = undefined
  }
}

const addThemeColor = (color: string | undefined) => {
  if (color && !themeColors.value.find((c) => c.key === color)) {
    themeColors.value.push({ key: color, value: color })
  }
}

const selectColor = (color: IPickerColor | undefined) => {
  selectedColor.value = getRgbaCss(color?.rgba)
  selectedGradient.value = undefined
  addThemeColor(selectedColor.value)
}

const applyGradient = (gradient: IThemedGradient | undefined) => {
  selectedGradient.value = gradient?.raw
  selectedColor.value = undefined
}
</script>
```

## Development

We use [PNPM](https://pnpm.io/) workspaces for development

```bash
# Clone
git clone git@github.com:samatechtw/vue-color-picker
cd vue-color-picker

# Install dependencies
pnpm install

# Build library
pnpm run build

# Run example site
pnpm run demo
```

## License

MIT License © 2021 - 2025 [SamaTech Limited Company](https://github.com/samatechtw)
npm package: @samatech/vue-components
Description: SamaTech Vue component library
Latest version: 1.4.0

# @samatech/vue-components

Umbrella package for all components.

## Usage

#### Install

```bash
npm install -S @samatech/vue-components
```

#### Import

```js
import { STMultiselect, STInput } from '@samatech/vue-components'
```
npm package: @samavi/simple-npm-package
Description: A simple npm package for demonstration purposes and use in a Node.js app.
Author: Snyk Labs
Latest version: 0.0.2

<div align="center">

# Simple npm Package

A simple npm package for demonstration purposes and use in a Node.js app.

</div>

## Get Started

Follow these steps to publish your own npm package for your own project or using this project.

> This is using the CommonJS module format for use in Node.js apps. You can read more about CommonJS vs. ESM module formats in Node.js on the [LogRocket Blog](https://blog.logrocket.com/commonjs-vs-es-modules-node-js/)

1. [Create a GitHub Repository](https://github.com/new)
1. Clone the repo locally. Example `git clone https://github.com/snyk-labs/simple-npm-package.git`
1. Open your terminal and change directories to the folder of your cloned project. Example `cd simple-npm-package`
1. Run `npm init -y` to create a `package.json` file. Note: if you cloned this repository you won't need to do this step.
1. Update package.json name property with a scoped name. Example `@snyk-labs/simple-npm-package`. Be sure to use your username or organization name instead of mine.
1. Write code for the package (or just use the hello world example in `index.js`)
1. [Sign up with npm](https://www.npmjs.com/signup). Also for better security be sure to enable [two-factor authentication](https://docs.npmjs.com/configuring-two-factor-authentication) on your npm account.
1. Sign in with your npm account in your terminal using the command `npm login` and follow the on-screen instructions.
1. Run `npx npm-packlist` to see the contents that will be included in the published version of the package.
1. Run `npm publish --dry-run` to see what would be done when actually running the command.
1. Run `npm publish --access=public` to actually publish the package to npm. Note: --access=public is needed for scoped packages (`@snyk-labs/simple-npm-package`) as they're private by default. If it's not scoped and doesn't have the `private` field set to `true` in `package.json` it will be public as well.
npm package: @sambeevors/canvasplus
Description: A JavaScript library for creating animations simply within HTML5 canvas
Author: @sambeevors
Latest version: 1.0.4

# canvasplus

[![GitHub issues](https://img.shields.io/github/issues/sambeevors/canvasplus.svg)](https://github.com/sambeevors/canvasplus/issues) [![GitHub stars](https://img.shields.io/github/stars/sambeevors/canvasplus.svg)](https://github.com/sambeevors/canvasplus/stargazers) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://prettier.io/)

A JavaScript library for creating animations simply within HTML5 canvas.

## Table of Contents

- [Installation](#installation)
- [Usage](#usage)
- [Contributing](#contributing)
- [License](#license)

## Installation

Can be installed via npm or yarn

```shell
npm i @sambeevors/canvasplus
```

```shell
yarn add @sambeevors/canvasplus
```

## Usage

To get started, you first need to import `canvasplus` and create a new canvas

```javascript
import { CanvasPlus, Ease } from 'canvasplus'
```

```javascript
CanvasPlus.addCanvas({
  el: '#canvas',
  size: [300, 150]
})
```

Add an animation

```javascript
CanvasPlus.addAnimation({
  duration: 900,
  easing: Ease.outQuad,
  loop: true
})
```

Then simply add a shape

```javascript
CanvasPlus.addShape({
  shape: 'rect',
  w: 100,
  h: 100,
  position: {
    start: [0, 0],
    end: [300, 150]
  }
})
```

You can also add images to the animation in a similar way

```javascript
CanvasPlus.addImage({
  src: 'example.jpg',
  w: 50,
  h: 75,
  position: {
    start: [150, 150]
  }
})
```

Once you are ready you can start your animation

```javascript
CanvasPlus.run()
```

## Contributing

Contributions are welcome! There's so much I want to do with this project but struggle to find the time to do it. If there's any features you want me to add, open an issue or even have a go yourself! PRs are always welcome.

To get the project running locally, simply install dependencies with `yarn`.

## License

This package is covered by the [MIT License](https://opensource.org/licenses/MIT).
npm package: @sambeevors/hacksaw
Description: Jigsaw + Tailwind + Babel
Author: @sambeevors
Latest version: 0.0.1

# Hacksaw

Install globally with npm or yarn

```shell
npm i -g hacksaw
```

```shell
yarn global add hacksaw
```

Then run hacksaw command, passing the desired directory name

```shell
hacksaw my-app
```
npm package: @sambegin/material-ui-lab
Description: Material-UI Lab - Incubator for Material-UI React components.
Author: Material-UI Team
Latest version: 1.0.7

# @material-ui/lab

This package hosts the incubator components that are not yet ready to move to `core`.

## Installation

Install the package in your project directory with:

```sh
// with npm
npm install @material-ui/lab

// with yarn
yarn add @material-ui/lab
```

If you are not already using Material-UI in your project, you can add it with:

```sh
// with npm
npm install @material-ui/core

// with yarn
yarn add @material-ui/core
```
npm package: @sambego/about-me
Description: A little package the prints some about me information
Author: Sam Bellen
Latest version: 1.3.0

# What's this
An nmp package that prints info about me, nothing more, nothing less

You can get some links about me by installing the package with `npx @sambego/about-me`.

![A preview of the package](about-me.gif)

### Acknowledgements
- I got the idea from, and based the code on [this](tomastrajan) package by Tomas Trajan
npm package: @sambego/storybook-styles
Description: Add default styles to the storybook preview panel
Author: Sam Bellen
Latest version: 1.0.0

# Storybook styles

### Getting Started

```sh
npm install --save @sambego/storybook-styles
```

Then write your stories like this:

```js
import React from 'react';
import { storiesOf } from "@storybook/react";
import styles from "@sambego/storybook-styles";

storiesOf("Button", module)
  .addDecorator(styles({
    background: 'tomato',
    fontFamily: 'Helvetica, Arial, sans-serif'
  }))
  .add("with text", () => <button>Click me</button>);
```
npm package: @sambruca/fiscal-year
Description: ## Installation
Latest version: 0.0.3

# Fiscal Year

## Installation

### NPM

```shell
npm install @sambruca/fiscal-year
```

### YARN

```shell
yarn add @sambruca/fiscal-year
```

## Usage

```typescript
import { fyUtils } from "@sambruca/fiscal-year";
```

To fetch fiscal year of a given date:

```typescript
    const date = new Date()
    const fyStartMonth = 3;
    const fiscalYear=  fyUtils.getFiscalYearOfDate(date, fyStartMonth)
```

`fyStartMonth` must always be a number from 0 to 11, 0 being Jan and 11 being December.

To build a fiscal year object, with information about the year, run:

```typescript  
    const fyStartMonth = 3;
    const year = 2023;
    const fiscalYear: IFiscalYear = fyUtils.buildFiscalYear(fyStartMonth, year)
```

The shape of the resulting object can be found [here](src%2Ftypes.ts).
npm package: @sambruca/xe-client
Description: Node client for interactive with XE API
Latest version: 0.0.1

# XE Client Year

## Project

Source code can be found on [GitHub](https://github.com/steve-christie/xe-client)

## Installation

### NPM

```shell
npm install @sambruca/xe-client
```

### YARN

```shell
yarn add @sambruca/xe-client
```
npm package: @samchon/bbs-api
Description: API for bbs
Author: Samchon
Latest version: 4.0.0

# SDK for Client Developers
## Outline
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/bbs-backend/tree/master/LICENSE)
[![npm version](https://img.shields.io/npm/v/@samchon/bbs-api.svg)](https://www.npmjs.com/package/@samchon/bbs-api)
[![Build Status](https://github.com/samchon/bbs-backend/workflows/build/badge.svg)](https://github.com/samchon/bbs-backend/actions?query=workflow%3Abuild)
[![Guide Documents](https://img.shields.io/badge/guide-documents-forestgreen)](https://nestia.io/docs/)

[`@samchon/bbs-backend`](https://github.com/samchon/bbs-backend) provides SDK (Software Development Kit) for convenience.

For the client developers who are connecting to this backend server, [`@samchon/bbs-backend`](https://github.com/samchon/bbs-backend) provides not API documents like the Swagger, but provides the API interaction library, one of the typical SDK (Software Development Kit) for the convenience.

With the SDK, client developers never need to re-define the duplicated API interfaces. Just utilize the provided interfaces and asynchronous functions defined in the SDK. It would be much convenient than any other Rest API solutions.

```bash
npm install --save @samchon/bbs-api
```




## Usage
Import the `@samchon/bbs-api` and enjoy the auto-completion.

```typescript
import { ArrayUtil, RandomGenerator, TestValidator } from "@nestia/e2e";
import { randint } from "tstl";
import typia from "typia";

import api from "@samchon/bbs-api/lib/index";
import { IBbsArticle } from "@samchon/bbs-api/lib/structures/bbs/IBbsArticle";

import { prepare_random_file } from "./internal/prepare_random_file";

export const test_api_bbs_article_create = async (
  connection: api.IConnection,
): Promise<void> => {
  // PREPARE INPUT DATA
  const input: IBbsArticle.ICreate = {
    writer: RandomGenerator.name(),
    password: RandomGenerator.alphaNumeric(8),
    title: RandomGenerator.paragraph()(),
    body: RandomGenerator.content()()(),
    format: "md",
    files: ArrayUtil.repeat(randint(0, 3))(() => prepare_random_file()),
  };

  // DO CREATE
  const article: IBbsArticle = await api.functional.bbs.articles.create(
    connection,
    input,
  );
  typia.assertEquals(article);

  // VALIDATE WHETHER EXACT DATA IS INSERTED
  TestValidator.equals("create")({
    snapshots: [
      {
        format: input.format,
        title: input.title,
        body: input.body,
        files: input.files,
      },
    ],
    writer: input.writer,
  })(article);

  // COMPARE WITH READ DATA
  const read: IBbsArticle = await api.functional.bbs.articles.at(
    connection,
    article.id,
  );
  typia.assertEquals(read);
  TestValidator.equals("read")(read)(article);
};
```
npm package: @samcjparry/ts-chess
Description: ## Introduction
Author: Sam Parry
Latest version: 1.0.2

# TypeScript Chess Engine

## Introduction

- Hello! Welcome to my chess engine. This was my exploration into object orientated programming using TypeScript.
- When creating this project, I tried to stick to [SOLID principles](https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898) as much as possible, but this was my first time so go easy on me.

## How To Use

- You can add the package as a dependency using npm:

```js
npm install @samcjparry/ts-chess
```

- Or using yarn:

```js
yarn add @samcjparry/ts-chess
```

- Then first of all, you'll need to create a new `Game`:

```js
import { Game } from "@samcjparry/ts-chess";

const game = new Game();
```

- If you want to create a new game with custom pieces, you will have to create an array with the pieces you want and pass it as an argument when you create the game:
- **ACHTUNG MINEFIELD** - The colours 'White' and 'Black' are represented by the numbers 0 and 1 respectively. This is because I wanted to use an enum. I'm aware that if something is one of two things it should be a boolean but this is my engine so sue me.

```js
const pieces = [
  { piece: "Kg4", colour: 0 },
  { piece: "Nd3", colour: 1 },
  { piece: "d4", colour: 1 },
];

const game = new Game(pieces);

// Will spawn a white king on square g4, a black knight on square d3, and a black pawn on square d4
```

- Also worthy of note is that I use standard chess notation as much as possible, so...

  - Named pieces are notated thus:
    - K - King
    - Q - Queen
    - R - Rook
    - N - Knight
    - B - Bishop
  - Pawns aren't notated, so if you just pass in a square it will generate a pawn in that square.

# Moving a piece

- The current colour's move can be found by running:

```js
import { isWhiteMove } from "ChessGame";

console.log(isWhiteMove); // logs true/false
```

The game will alternate the current colour at the end of the turn. This IS a boolean.