open-index/open-npm huggingface dataset:
npm package: @gyhyfj/rollup-plugin-replace
Description: Replace strings in code when dev and build
Author: gyhyfj
Latest version: 0.0.3

# rollup-plugin-replace

Code for leaning, based on `@rollup/plugin-replace`.
Both support for rollup and vite.

## Get Start

1. Install:

```bash
pnpm add @gyhyfj/rollup-plugin-replace -D
```

2. Usage:

```ts
plugins: [
  replacePlugin({
    // [RegExp|string, string][]
    replace: [
      ['book', 'cat'],
      [/!((?<=(\<|\<\/))template(?=\>))/i, 'cat'],
    ],
    // [RegExp|string]
    include: ['**/*.(vue|tsx|jsx|ts|js)'],
    exclude: ['node_modules/**'],
  }),
],
```

Different from `@rollup/plugin-replace`, `*.ext` will match `*.ext` files at root path of project, which `@rollup/plugin-replace` won't.
npm package: @gykh/caesar-cipher
Description: Used to encrypt/decrypt using simple caesar cipher
Author: Sylvester Das
Latest version: 2.0.2

# GYKH - caesar-cipher

> One of the simplest forms of encryption

## Install

```
$ npm install --save @gykh/caesar-cipher
```
### or


```
$ npm i -S @gykh/caesar-cipher
```

## Usage

Encrypt and decrypt string

```js
const { encryptString, decryptString } = require("@gykh/caesar-cipher");

...

const encrypted = encryptString(str, 3);

const decrypted = decryptString(encrypted, 3);

console.log(str === decrypted); // true
```

Encrypt and decrypt buffer

```js
const { encrypt, decrypt } = require("@gykh/caesar-cipher");
const fs = require('fs');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);

...

const encrypted = encrypt(await readFile(inputFile), 3);

const decrypted = decrypt(encrypted, 3);

console.log(buffer == decrypted); // true
```

Encrypt and decrypt streams (Use this in case of input being large data / file)

```js
const { EncryptTransform, DecryptTransform } = require("@gykh/caesar-cipher");
const fs = require('fs'); 

...

const readStream = fs.createReadStream(inputFile);
const writeStream = fs.createWriteStream(outputFile);

const encryptTransform = new EncryptTransform(3);
const decryptTransform = new DecryptTransform(3);

const stream = readStream
    .pipe(encryptTransform)
    .pipe(decryptTransform)
    .pipe(writeStream)

stream.on("error", () => /* do something */);
stream.on("finish", () => /* do something */);
```

## API

### caesar-cipher

### .encryptString(input, key)

#### input

Type: `string`<br/>
Required

#### key

Type: `number`<br/>
Required

key should be a number between 0-25

### .decryptString(input, key)

#### input

Type: `string`<br/>
Required

#### key

Type: `number`<br/>
Required

key should be a number between 0-25

### .encrypt(input, key)

#### input

Type: `Buffer`<br/>
Required

#### key

Type: `number`<br/>
Required

key should be a number between 0-25

### .decrypt(input, key)

#### input

Type: `Buffer`<br/>
Required

#### key

Type: `number`<br/>
Required

key should be a number between 0-25

### new EncryptTransform(key)

#### key

Type: `number`<br/>
Required

key should be a number between 0-25

### new DecryptTransform(key)

#### key

Type: `number`<br/>
Required

key should be a number between 0-25

## Understand Caesar Cipher

> The Caesar cipher, also known as a shift cipher, is one of the simplest forms of encryption. It is a substitution cipher where each letter in the original message (called the plaintext) is replaced with a letter corresponding to a certain number of letters up or down in the alphabet. [Learn more](https://learncryptography.com/classical-encryption/caesar-cipher)

## Developer

- [Sylvester Das](https://www.sylvesterdas.com) 

[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/black_img.png)](https://www.buymeacoffee.com/sylvester.das)

## License

MIT © 2021 [get-your-knowledge-here](./LICENSE)
npm package: @gykh/is-even
Description: > One of the simplest forms of encryption
Author: Sylvester Das
Latest version: 1.0.1

# GYKH - is-even

> One of the simplest forms of encryption

## Install

```
$ npm install --save @gykh/is-even
```
### or


```
$ npm i -S @gykh/is-even
```

## Usage

isEven

```js
const { isEven } = require("@gykh/is-even");

...
console.log(isEven(2)); // true
console.log(isEven(1)); // false
```

## API

### is-even

#### input

Type: `number`<br/>
Required

## Understand Caesar Cipher

> Simple demonstration for publishing a package

## Developer

- [Sylvester Das](https://www.sylvesterdas.com) 

[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/black_img.png)](https://www.buymeacoffee.com/sylvester.das)

## License

MIT © 2021 [get-your-knowledge-here](./LICENSE)
npm package: @gyldendal/kobber-audio-recorder
Description: An audio recorder and playback interface that lets you do multiple recordings and bounce them down to a single mp3.
Latest version: 0.7.2

# Kobber AudioRecorder

An audio recorder and playback interface that lets you do
multiple recordings and bounce them down to a single mp3.

## Basic Setup

Install via npm

    npm i @gyldendal/kobber-audio-recorder

Examples of ways to mount the component:

Straight into the html, mounting the component
to a target in the DOM.

    <script type="module" src="@gyldendal/kobber-audio-recorder"></script>
    <script type="module">
        import AudioRecorder from "@gyldendal/kobber-audio-recorder";
        const recorder = new AudioRecorder({
            target: document.getElementById("from-index"),
        });
    </script>
    <div id="from-index"></div>

As a class constructor, here shown in the context of Svelte.

    <script>
        import { onMount } from "svelte";
        import AudioRecorder from "@gyldendal/kobber-audio-recorder";
    
        onMount(() => {
            const target = document.getElementById("in-svelte");
                if (target) {
                    new AudioRecorder({ target: target });
                }
        });
    </script>

    <div id="in-svelte"></div>
    
As a customElement

    import AudioRecorder from "@gyldendal/kobber-audio-recorder";   

    <kobber-audio-recorder id=""></kobber-audio-recorder>


## Properties

### mp3Callback

A callback function passed to the component, called
with a mp3 blob as argument when the recording is updated.
npm package: @gyldendal/kobber-base
Description: See also https://kobber.gyldendal.no/tokens/hva-er-tokens.
Latest version: 0.7.2

# Base

See also https://kobber.gyldendal.no/tokens/hva-er-tokens.

## 🛠️ Usage

Design tokens can be imported as json, css variables or sass variables:

```JavaScript
import * as tokens from "~@gyldendal/kobber-base/themes/default/tokens.js";

export const Button = styled.button`
    background-color: ${tokens.component.button.color.background};
`;
```

```css
@import "~@gyldendal/kobber-base/themes/default/tokens.css";

.button {
  background-color: var(--kobber-component-button-color-background);
}
```

```scss
@use "~@gyldendal/kobber-base/themes/default/tokens.scss" as tokens;

.button {
  background-color: tokens.$component-button-color-background;
}
```

Typography can be applied directly to HTML using CSS classes or by using `composes` in css modules:

```html
<style>
  @import "~@gyldendal/kobber-base/themes/default/typography.css";
</style>

<h1 class="kobber-typography-heading-xl">Heading</h1>
```

```css
.my-heading {
  composes: headingXxl from "~@gyldendal/kobber-base/themes/default/typography.module.css";
}
```

Also see the typography component from @gyldendal/kobber-components:

```tsx
import { ThemeProvider, Typography } from "~@gyldendal/kobber-base/react";

<ThemeProvider variant="default">
    <Typography component="h1" variant="headingXxl" />
</TheThemeProviderme>
```

## 🧱 Token folder structure

```
/
├── themes/
│   ├── tokens.css
│   ├── tokens.scss
│   └── token.json
├── tokens-from-figma/
│   ├── index.ts
│   └── tokens-YYYY-MM-DD.json
├── build.ts
└── buildConfig.ts
```

Using [style-dictionary](https://github.com/amzn/style-dictionary) to transform and format the tokens from Figma.

The files in `./themes` are auto generated and should never be edited manually.

[How to update tokens](./tokens-from-figma/README.md)
npm package: @gyldendal/kobber-scene
Description: Components for rendering scene objects from Gyldendal's CMS.
Latest version: 0.7.2

# Kobber scene

Components for rendering scene objects from Gyldendal's CMS.

See [Scene.stories.tsx](src/Scene.stories.tsx) for examples.

Can be imported as web components or react components:

`@gyldendal/kobber-scene/web-components`<br />
`@gyldendal/kobber-scene/react`

## CMS data

Enums that match data from CMS are defined in [types.ts](src/types.ts)

## Calculate padding

Pass CMS-data and other variables through the [`calculatePadding`](src/calculatePadding.ts)-function and pass it to  `kobber-scene-boundary` to apply css paddings.

```javascript
import { calculatePadding } from '@gyldendal/kobber-scene/web-components';

const padding = calculatePadding({
  cmsWhiteSpace: sceneFromCms.sceneWhitespace,
  cmsHorizontalAlignment: sceneFromCms.sceneHorizontalAlignments
});
```

```html
<kobber-scene>
  <kobber-scene-boundary padding=${JSON.stringify(padding)}>
    ...
  </kobber-scene-boundary>
</kobber-scene>
```

## Optional presentation logic

The following rules are applied to thousands of scenes in Skolestudio:

* The sections `sc-feature-header` and `sc-card-carousel` are displayed in full width
* `sc-feature-header` affects the wrapping row's bottom padding
* Dynamic contents are displayed in full width and full height if there is no other content in the scene
* Dynamic contents are displayed in full width if there is no other content in the row

To apply the same rules, pass `scene.rows` through [groupRowsByPresentation](src/groupRowsByPresentation.ts) and render each `rowGroup` as [in Skolestudio](https://gyldendaldigital.visualstudio.com/Skolestudio/_git/Skolestudio/?path=%2Fclient%2Fapps%2Fapp%2Fsrc%2Fcommon%2Fscene%2FScene.tsx&version=GBmaster&_a=contents).
npm package: @gyldendal/kobber-tsconfig
Description: Basert på [denne gode gjennomgangen av tsconfig](https://2ality.com/2025/01/tsconfig-json.html#summary).
Latest version: 0.7.2

## kobber-tsonfig

Basert på [denne gode gjennomgangen av tsconfig](https://2ality.com/2025/01/tsconfig-json.html#summary).

`target` er valgt basert på grønnheten [her](https://compat-table.github.io/compat-table/es2016plus/)
npm package: @gylove1994/npg
Description: A command-line tool for generating NestJS code form schema.prisma file.
Author: gylove1994
Latest version: 0.5.0

# NestJS Prisma Generator

![NPM Version](https://img.shields.io/npm/v/%40gylove1994%2Fnpg?style=flat)


[中文文档](README_CN.md)

## Project Overview

NestJS Prisma Generator is a command-line tool for generating NestJS and Prisma code.

## Features

- Automatically generate Entity code, synchronized with Prisma models
- Generate Enum code to ensure type safety
- Create complete Module structures, including controllers, services, and DTOs
- Support generating all types of code to meet different development needs
- Generate code structures that comply with my own best practices（**This is an opinionated tool**）
- Support custom templates for flexible adaptation to project requirements (TBD)

## Installation

```bash
npm install @gylove1994/npg -g
```

## Usage

### Generating Code

You can use the following command to generate code:

```bash
npg
```

Follow the prompts to select the type of code you want to generate, the path to your Prisma schema file, and the output directory.

### Command Line Options

wip

## Project Structure

- `src/index.ts` - Main entry file, defines the core logic of the command-line tool
- `src/generateEntity.ts` - Module responsible for generating entity code
- `src/generateEnum.ts` - Handles the logic for generating enum code
- `src/generateNestModule.ts` - Core code for generating NestJS module structures
- `src/generateNestController.ts` - Module for creating controller code
- `src/generateNestDto.ts` - Logic for generating Data Transfer Objects (DTOs)
- `src/utils` - Utility functions, including file operations, type mapping, etc.

## Development

### Local Development
```bash
npm run dev
```

### Build

```bash
npm run build
```

### Code Linting

```bash
npm run lint
```

## License

[MIT](LICENSE)

## Author

gylove1994

## Contribution Guidelines

We welcome and appreciate any form of contribution! If you want to contribute to the project, please follow these steps:

1. Fork this repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
npm package: @gylove1994/pnpm-workspace-runner
Description: Interactive CLI to locate pnpm workspace root, list packages and scripts, and run selected scripts.
Author: gylove1994
Latest version: 0.1.0

# pnpm-workspace-runner

交互式 CLI：自动定位 pnpm 工作区根目录，列出包与脚本，并支持在选定目标中执行脚本、安装/移除依赖（含一键添加对应 `@types/*`）。

- Node 要求：>= 18
- 包管理器：pnpm
- 可执行文件：`pnpm-workspace-runner`

## 安装与启动

工作区内已经配置好本工具，构建后可直接运行：

```bash
pnpm -C tools/pnpm-workspace-runner build
pnpm-workspace-runner
```

也可以通过 `node` 直接执行打包产物：

```bash
node tools/pnpm-workspace-runner/dist/index.mjs
```

## 交互流程

1) 选择一个目标：
   - `<workspace-root>`（工作区根目录）
   - 某个具体包（自动从 `pnpm-workspace.yaml` 的 `packages` 模式解析）
2) 在同一个列表中选择要执行的项（单步完成）：
   - 目标包的 `scripts`（显示为：脚本名 — 命令预览）
   - 操作项：
     - 安装依赖 (pnpm add)
     - 安装依赖并添加类型包 (pnpm add + @types，types 为 dev)
     - 移除依赖 (pnpm remove)
     - 自定义命令...

选择不同项后会继续询问必要参数，例如附加参数、包名列表等。

## 功能说明

### 运行脚本
- 选择任意脚本后，可输入额外参数（以空格分隔）。
- 实际执行：`pnpm -C <目标目录> run <scriptName> ...extraArgs`

### 安装依赖（pnpm add）
- 输入要安装的包（以空格分隔，支持 `name` 或 `name@version`）。
- 选项：是否作为 dev 依赖安装（-D）、是否精确版本（-E）、附加自定义参数。
- 实际执行：`pnpm -C <目标目录> add [包...] [-D] [-E] ...extraArgs`

### 安装依赖并添加类型包（pnpm add + @types）
- 对输入的每个包自动生成 `@types/*` 并以 dev 依赖安装。
- 名称映射规则：
  - 普通包：`react` → `@types/react`
  - 作用域包：`@scope/name` → `@types/scope__name`
  - 多级名：`@scope/a/b` → `@types/scope__a__b`
  - 已是 `@types/*` 的包不会重复添加
- 实际执行两步：
  - `pnpm -C <目标目录> add [包...] [-D?] [-E?] ...extraArgs`
  - `pnpm -C <目标目录> add -D [@types 包...]`

### 移除依赖（pnpm remove）
- 输入要移除的包（以空格分隔）。
- 可附加自定义参数。
- 实际执行：`pnpm -C <目标目录> remove [包...] ...extraArgs`

### 自定义命令
- 在目标目录作为 `cwd` 执行任意命令行。

## 示例

- 在包 `packages/genid` 中运行 `build` 脚本：
  1) 选择 `packages/genid`
  2) 选择 `build — tsup -d dist src/index.ts`（示例）
  3) 可选输入额外参数，例如 `--watch`

- 在包 `packages/genid` 中安装依赖：
  - 选择 `packages/genid` → `安装依赖 (pnpm add)` → 输入：`zod` → 选择是否 `-D`/`-E`

- 在包 `packages/genid` 中安装依赖并自动添加类型包：
  - 选择 `packages/genid` → `安装依赖并添加类型包` → 输入：`react @radix-ui/react-popover` → 将附加安装 `@types/react` 与 `@types/radix-ui__react-popover`（作为 dev）

- 在包 `packages/genid` 中移除依赖：
  - 选择 `packages/genid` → `移除依赖 (pnpm remove)` → 输入：`zod`

## 常见问题

- 无法找到工作区：请确认在包含 `pnpm-workspace.yaml` 的目录或其任意子目录中运行本工具。
- 列表没有脚本：该包的 `package.json` 中没有 `scripts`，仍可使用安装/移除依赖与自定义命令。

## 开发

```bash
pnpm -C tools/pnpm-workspace-runner dev
# 修改 src/index.ts 后自动重新构建到 dist/
```
npm package: @gylraj/code
Description: Custom Code Tool for Editor.js
Author: gian
Latest version: 0.1.5

![](https://badgen.net/badge/Editor.js/v2.0/blue)

# Code Tool for Editor.js

Code Tool for the [Editor.js](https://ifmo.su/editor) allows to include code examples in your articles.

![](https://capella.pics/8df022f5-b4d5-4d30-a527-2a0efb63f291.jpg)

## Installation

### Install via NPM

Get the package

```shell
npm i --save-dev @gylraj/code
```

Include module at your application

```javascript
const CustomCodeTool = require('@gylraj/code');
```

### Download to your project's source dir

1. Upload folder `dist` from repository
2. Add `dist/bundle.js` file to your page.

### Load from CDN

You can load specific version of package from [jsDelivr CDN](https://www.jsdelivr.com/package/npm/@gylraj/code).

`https://cdn.jsdelivr.net/npm/@gylraj/code@2.0.0`

Require this script on a page with Editor.js.

```html
<script src="..."></script>
```

## Usage

Add a new Tool to the `tools` property of the Editor.js initial config.

```javascript
var editor = EditorJS({
  ...
  
  tools: {
    ...
    code: CustomCodeTool,
  }
  
  ...
});
```

## Config Params

| Field       | Type     | Description                    |
| ----------- | -------- | -------------------------------|
| placeholder | `string` | Code Tool's placeholder string |

## Output data

This Tool returns code.

```json
{
    "type" : "code",
    "data" : {
        "code": "body {\n font-size: 14px;\n line-height: 16px;\n}",
    }
}
```
npm package: @gymast/calendar-citas
Description: Instructor appointment calendar component for gym management
Latest version: 1.1.4
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @gymast/calendar-citas

Calendario React especializado para la gestión de citas individuales (entrenamientos personales, nutrición, fisioterapia, etc.) en gimnasios.

## 🚀 Características

- Vistas diaria, semanal y mensual.
- Drag & drop para reagendar citas.
- Redimensionamiento para ajustar la duración de las citas.
- Filtrado por profesional.
- Totalmente personalizable mediante props y estilos CSS/Tailwind.

## 📦 Instalación

```bash
npm install @gymast/calendar-citas @gymast/calendar-shared
```

## 💻 Uso Básico

```tsx
import { CalendarioCitas } from '@gymast/calendar-citas';
import { Cita } from '@gymast/calendar-citas/types';
// No es necesario importar estilos CSS si ya tienes Tailwind configurado

function App() {
  const citas: Cita[] = [
    // ... tus datos de citas
  ];

  return (
    <CalendarioCitas
      citas={citas}
      onEventClick={(cita) => console.log('Click en cita', cita)}
      onEventDrop={(cita, newDate, newTime) => console.log('Cita movida', cita, newDate, newTime)}
    />
  );
}
```

## 📝 API

### Props

| Prop | Tipo | Requerido | Descripción |
|------|------|-----------|-------------|
| `citas` | `Cita[]` | ❌ No | Array de citas para mostrar. |
| `onRefresh` | `() => void` | ❌ No | Callback para refrescar los datos. |
| `onEventClick` | `(cita: Cita) => void` | ❌ No | Se ejecuta al hacer clic en una cita. |
| `onEmptySpaceClick` | `(date: Date, time: string) => void` | ❌ No | Se ejecuta al hacer clic en un espacio vacío. |
| `onEventDrop` | `(cita: Cita, newDate: Date, newTime: string) => void` | ❌ No | Se ejecuta al arrastrar y soltar una cita. |
| `onEventResize` | `(cita: Cita, newEndTime: string) => void` | ❌ No | Se ejecuta al redimensionar la duración. |

### Estructura de Datos (`Cita`)

```typescript
interface Cita {
    codigo: number;
    codProfesor: string;
    nombreProfesor: string;
    codSocio: string;
    nombreSocio: string;
    emailSocio: string;
    fotoSocio: string;
    fecha: string; // ISO Date string (YYYY-MM-DD)
    horaInicio: string; // HH:mm
    horaFin: string; // HH:mm
    color: string;
    observacion: string;
    estado: number;
    estadoDescripcion: string;
    visible: boolean;
    fechaCreacion: string;
    codUsuarioCrea: string;
}
```

## 🎨 Estilos

Este paquete utiliza Tailwind CSS. Para asegurar que los estilos se apliquen correctamente, añade la ruta a tu `tailwind.config.js`:

```javascript
module.exports = {
  content: [
    // ...
    "./node_modules/@gymast/calendar-citas/dist/**/*.{js,mjs,cjs}",
    "./node_modules/@gymast/calendar-shared/dist/**/*.{js,mjs,cjs}",
  ],
  // ...
}
```
npm package: @gymast/calendar-horarios
Description: Fixed schedule calendar component for gym management
Latest version: 1.1.3
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @gymast/calendar-horarios

Calendario React diseñado para la configuración y visualización de parrillas de horarios de clases grupales fijas en gimnasios.

## 🚀 Características

- Visualización clara de bloques de horarios recurrentes.
- Vistas diaria, semanal y mensual.
- Soporte para asignación de profesores y cupos.
- Interfaz intuitiva para gestión de horarios.

## 📦 Instalación

```bash
npm install @gymast/calendar-horarios @gymast/calendar-shared
```

## 💻 Uso Básico

```tsx
import Calendario from '@gymast/calendar-horarios';
import { TimeBlock } from '@gymast/calendar-horarios/types';

function App() {
  const timeBlocks: TimeBlock[] = [
    // ... tus datos de horarios
  ];

  return (
    <Calendario
      timeBlocks={timeBlocks}
      onEventClick={(clase) => console.log('Click en clase', clase)}
    />
  );
}
```

## 📝 API

### Props

| Prop | Tipo | Requerido | Descripción |
|------|------|-----------|-------------|
| `timeBlocks` | `TimeBlock[]` | ❌ No | Array de bloques de horario. |
| `onCreateClass` | `(classData: TimeBlock) => void` | ❌ No | Callback para creación de clases (legacy). |
| `onRefresh` | `() => void` | ❌ No | Callback para refrescar datos. |
| `onEventClick` | `(classData: TimeBlock) => void` | ❌ No | Al hacer clic en una clase. |
| `onEmptySpaceClick` | `(date: Date, time: string) => void` | ❌ No | Al hacer clic en un espacio vacío. |
| `onEventDrop` | `(event: TimeBlock, newDate: Date, newTime: string) => void` | ❌ No | Al mover una clase de horario. |

### Estructura de Datos (`TimeBlock`)

```typescript
interface TimeBlock {
    codigo: string;
    codclase: number;
    nombreclase: string;
    color: string;
    horainicio: string; // ISO Date string
    horafin: string; // ISO Date string
    dias: string; // Ejemplo: "[lun]", "[mar,jue]"
    cupos: number;
    permitereposiciones: number; // 1 o 0
    codtiporeposiciones: number;
    nombretiporeposicion: string;
    maxreposiciones: number;
    horaantes: string;
    horadespues: string;
    codprofesor: string;
    nombreprofesor: string;
}
```

## 🎨 Estilos

Este paquete utiliza Tailwind CSS. Para asegurar que los estilos se apliquen correctamente, añade la ruta a tu `tailwind.config.js`:

```javascript
module.exports = {
  content: [
    // ...
    "./node_modules/@gymast/calendar-horarios/dist/**/*.{js,mjs,cjs}",
    "./node_modules/@gymast/calendar-shared/dist/**/*.{js,mjs,cjs}",
  ],
  // ...
}
```
npm package: @gymast/calendar-shared
Description: Shared components, hooks and UI for calendar packages
Latest version: 1.1.3
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @gymast/calendar-shared

Componentes base, utilidades, tipos y elementos de UI compartidos para el ecosistema de calendarios de GyMast.

Este paquete es una dependencia fundamental para `@gymast/calendar-citas`, `@gymast/calendar-horarios` y `@gymast/calendar-reservas`.

## 📦 Instalación

```bash
npm install @gymast/calendar-shared
```

## 🛠️ Contenido

### Tipos Comunes

- `TimeBlock`: Interfaz base para bloques de tiempo en el calendario.
- `ViewType`: Tipos de vista ('daily', 'weekly', 'monthly').
- `CalendarBaseProps`: Props base compartidas.

### Componentes de UI

Este paquete exporta una colección de componentes de UI reutilizables construidos sobre Radix UI y estilizados con Tailwind CSS:

- `Button`
- `Dialog` (Modal)
- `Card`
- `Input`, `Select`, `Checkbox`
- `Popover`
- `Table`
- `Tabs`
- `DateRangePicker`

### Componentes de Calendario

Componentes internos utilizados para construir las vistas de calendario:

- `DailyView`, `WeeklyView`, `MonthlyView`
- `CalendarFilters`
- `TimeSlot`, `TimeLabels`
- `ClassBlockRenderer`

### Hooks

- `useCalendarUtils`: Utilidades para manejo de fechas y tiempos en el calendario.

## 🎨 Estilos

Este paquete utiliza Tailwind CSS. Asegúrate de que tu configuración de Tailwind incluya los archivos de este paquete:

```javascript
// tailwind.config.js
module.exports = {
  content: [
    // ...
    "./node_modules/@gymast/calendar-shared/dist/**/*.{js,mjs,cjs}",
  ],
  // ...
}
```
npm package: @gymbro/react-scripts
Description: Configuration and scripts for Create React App.
Latest version: 1.1.4

# react-scripts

This package includes scripts and configuration used by [Create React App](https://github.com/facebookincubator/create-react-app).<br>
Please refer to its documentation:

* [Getting Started](https://github.com/facebookincubator/create-react-app/blob/master/README.md#getting-started) – How to create a new app.
* [User Guide](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md) – How to develop apps bootstrapped with Create React App.
npm package: @gymctrl/n8n-nodes-gymcontrol
Description: N8N integration for Gym Control
Author: Davide Alberti
Latest version: 0.1.3

# n8n-nodes-gymcontrol

This is an n8n community node. It lets you use _GymControl_ instance in your n8n workflows.

[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

[Installation](#installation)  
[Operations](#operations)  
[Credentials](#credentials) 
[Usage](#usage)  

## Installation

Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

## Operations

It covers all the Gymcontrol functionalities

## Credentials

It need an api key to be able to operate
npm package: @gymglish_npm/mjml-a9-container
Description: mjml-a9-container
Latest version: 0.0.2
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

## mj-a9-container

Surround the content with an A9 container

```xml
<mjml>
  <mj-body>
    <mj-a9-container>
      <mj-column>
        <mj-text>A line of text</mj-text>
      </mj-column>
    </mj-a9-container>
  </mj-body>
</mjml>
```
npm package: @gymglish_npm/mjml-preset-core
Description: mjml-preset-core
Latest version: 4.15.3-a9-0.0.4
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

## mjml-preset-core

### Installation

```bash
npm install --save mjml-preset-core
```

This is the set of mjml components bundled together for simple setup.

### Usage

```javascript
import mjml2html from 'mjml-core'
import presetCore from 'mjml-preset-core'

console.log(mjml2html(`code`, { presets: [presetCore] }))
```
npm package: @gymito/monitor-browser
Description: @gymito/monitor-browser
Author: gymito
Latest version: 0.0.4-alpha.0

# @gymito/monitor-browser

- [x] 🔨监听请求错误
- [x] 🔨console
- [x] 🔨路由跳转
- [x] 🔨代码报错
- [x] 🔨click
- [x] 🔨资源加载错误
- [x] 🌝支持IE8和安卓5以上
npm package: @gymito/monitor-core
Description: @gymito/monitor-core
Author: gymito
Latest version: 0.0.4-alpha.0

# @gymito/monitor-core

给`@gymito/monitor`提供一系列的核心类与函数

### Breadcrumb
收集用户行为

### errorId
生成错误id的规则

### subscribe
发布订阅策略

### options
配置项与钩子函数的绑定


### external
手动上报错误

### transform
公共的格式转换函数

### transport
日志上报类
npm package: @gymito/monitor-react
Description: A SDK For Report React ErrorBoundary
Author: gymito
Latest version: 0.0.4-alpha.0

# @gymito/monitor-react
## errorBoundaryReport

向外暴露出`errorBoundaryReport`全局函数，[具体用法](https://github.com/clouDr-f2e/mitojs/blob/master/docs/guide.md#NPM%E5%8C%85%E5%BD%A2%E5%BC%8F)
npm package: @gymito/monitor-vue
Description: A SDK for monitoring Vue errors
Author: gymito
Latest version: 0.0.4-alpha.0

# @gymito/monitor-vue

### MitoVue
抛出`vue`的插件，[具体使用](https://github.com/clouDr-f2e/mitojs/blob/master/docs/guide.md#vue)
npm package: @gymito/monitor-web
Description: A SDK For Monitoring Web(React、Vue) Errors
Author: gymito
Latest version: 0.0.5-alpha.0

# @gymito/monitor-web

<!-- 整合:

* [@gymito/monitor-browser](https://github.com/clouDr-f2e/mitojs/tree/master/packages/browser)
* [@gymito/monitor-react](https://github.com/clouDr-f2e/mitojs/tree/master/packages/react)
* [@gymito/monitor-vue](https://github.com/clouDr-f2e/mitojs/tree/master/packages/vue)

## 使用指南

[使用指南](https://github.com/clouDr-f2e/mitojs/blob/master/docs/guide.md) -->
npm package: @gymlib/codegen-types-plugin
Description: @graphql-codegen plugin generate enums of all types
Author: nmarien29@gmail.com
Latest version: 1.0.3

# What is this?

This is a [graphql-codegen](https://github.com/dotansimha/graphql-code-generator) plugin to generate enums containing type names.
This is useful to avoid hardcoding them.
npm package: @gympass/yoga-icons
Description: Yoga icon package
Latest version: 1.44.0

# Yoga Icons

<p style="float: left;">
  <img src="./src/svg/star.svg" alt="Star" title="Star" width="12"  />
  <img src="./src/svg/building.svg" alt="building" title="building" width="12"  />
  <img src="./src/svg/clock.svg" alt="clock" title="clock" width="12"  />
  <img src="./src/svg/triangle_alert.svg" alt="triangle_alert" title="triangle_alert" width="12"  />
  <img src="./src/svg/close.svg" alt="triangle_alert" title="triangle_alert" width="12"  />
  <img src="./src/svg/visibility.svg" alt="triangle_alert" title="triangle_alert" width="12"  />
  <img src="./src/svg/visibility_off.svg" alt="triangle_alert" title="triangle_alert" width="12"  />
  <img src="./src/svg/arrow_down.svg" alt="arrow_down" title="arrow_down" width="12"  />
  <img src="./src/svg/youtube.svg" alt="youtube" title="youtube" width="12"  />
</p>

## Instalation

```
yarn add @gympass/yoga-icons
```

`@gympass/yoga-icons` is a pacakge containing all icons used in `@gympass/yoga` package.

### React native

To use in `react-native` make sure you have installed [react-native-svg](https://github.com/react-native-community/react-native-svg).

## Usage

Icon works out of the box for both platforms.

```
import { Star } from '@gympass/yoga-icons';

export default () => <Star fill="#f01 />;
```

Here you can check an example in [web](https://gympass.github.io/yoga/components/icons#web) and [native](https://gympass.github.io/yoga/components/icons#native) platforms.
npm package: @gympass/yoga-illustrations
Description: Yoga illustrations package
Latest version: 0.7.3

# Yoga Illustrations

## Instalation

```sh
yarn add @gympass/yoga-illustrations
```

`@gympass/yoga-illustrations` is a package containing all illustrations used in `@gympass/yoga` package.

### React native

To use in `react-native` make sure you have installed [react-native-svg](https://github.com/react-native-community/react-native-svg).

## Usage

Icon works out of the box for both platforms.

```jsx
import { Img2d11 } from '@gympass/yoga-illustrations';

export default () => <Img2d11 />;
```

Here you can check an example in [web](https://gympass.github.io/yoga/components/illustrations#web) and [native](https://gympass.github.io/yoga/components/illustrations#native) platforms.
npm package: @gymspace/shared
Description: Shared types and interfaces for GymSpace
Author: GymSpace Team
Latest version: 1.9.39

# @gymspace/shared

Shared types, interfaces, and constants for the GymSpace ecosystem.

## Installation

```bash
npm install @gymspace/shared
# or
yarn add @gymspace/shared
# or
pnpm add @gymspace/shared
```

## Usage

```typescript
import { 
  IUser, 
  IGym, 
  Permission, 
  UserType,
  ContractStatus,
  PERMISSIONS 
} from '@gymspace/shared';

// Use the types in your application
const user: IUser = {
  id: '123',
  email: 'user@example.com',
  type: UserType.Client,
  // ...
};
```

## What's included

- **Types & Interfaces**: Core domain models (User, Gym, Organization, etc.)
- **Enums**: Status types, user types, and other enumerations
- **Constants**: Permission definitions, cache TTLs, and other constants
- **Utilities**: Common type utilities and helpers

## License

MIT © GymSpace Team
npm package: @gyng/esbuild-quickstart
Description: [Example API documentation](https://gyng.github.io/esbuild-quickstart/)
Author: Ng Guoyou
Latest version: 1.2.0

# esbuild-quickstart

[Example API documentation](https://gyng.github.io/esbuild-quickstart/)

Quickstart for esbuild library projects. Depends on `yarn`.

- Typescript
- Testing with jest
- Linting with prettier, eslint
- CI and skeleton CD with GitHub Actions
- Dockerfiles for build and test
- Publish to NPM and GitHub Packages by creating releases

## Usage

See `scripts` in `package.json` for more scripts.

- `yarn d` watch and build
- `yarn t:watch` watch and test
- `yarn lint`
- `yarn build`

Build targets are set in `esbuild.js`.

## Publish

### Setup

1. Get an automation token from npm under settings

   ```
   https://www.npmjs.com/settings/$YOUR_USERNAME/tokens/
   ```

2. Add the token to your repository secrets.

   ```
   https://github.com/$YOUR_USERNAME/$YOUR_REPO_NAME/settings/secrets/actions/new
   ```

   - Name: `NPM_TOKEN`
   - Value: The automation token you got from the previous step

3. Update the `scope` key in `./github/workflows/publish.yml` to your GitHub (organisation) name

4. Configure GitHub Pages

   ```
   https://github.com/gyng/esbuild-quickstart/settings/pages
   ```

   - Source: `gh-pages` branch
   - Directory: `/ (root)`

### Run

1. Bump your version number in `package.json` before this. Publishing will fail if the version already exists.

2. Create a new release.

   ```
   https://github.com/$YOUR_USERNAME/$YOUR_REPO_NAME/releases
   ```

   The workflow at `./github/workflows/publish.yml` should run and publish your packages to both NPM and GitHub Packages.

   Also, API documentation will be published to your GitHub pages via the `gh-pages` branch. It will be viewable at `https://$YOUR_NAME.github.io/$YOUR_REPO/`.
npm package: @gyng/remote-zip
Description: [API documentation](https://gyng.github.io/remote-zip)
Author: AIcadium, Ng Guoyou
Latest version: 0.2.5

# remote-zip

[API documentation](https://gyng.github.io/remote-zip)

Fetch file listings and individual files from a remote ZIP file.

## Features

Without downloading the entire ZIP:

- Fetch individual files in a remote ZIP
- Fetch file listings

The gist of what the library does is:

1. Get the content size of the ZIP file using a HTTP HEAD request.
2. Get the last 100 bytes using HTTP Range queries (hoping it's enough) to read the end-of-central-directory (EOCD) section.
3. Using the EOCD, read the central directory (CD) section with a Range request. This section contains a complete file listing and file byte offsets in the ZIP.
4. To get individual files, use another Range request with an offset to get the local file header + compressed data.

## Limitations

- No ZIP64 support
- No encrypted ZIP support
- No stream support via `ReadableStream` due to testing/dev difficulties
- Long comments in a ZIP file might cause `populate()` to fail

## Install

```bash
yarn add @gyng/remote-zip
```

```bash
npm install --save @gyng/remote-zip
```

## Usage

See the [generated API documentation](https://gyng.github.io/remote-zip/).

If using in the browser, the server will need to whitelist CORS for `GET`, `HEAD`, and the `Range` header.

### Basic

```ts
const url = new URL("http://www.example.com/test.zip");
const remoteZip = await new RemoteZipPointer({ url }).populate();
const fileListing = remoteZip.files(); // RemoteZipFile[]
const uncompressedBytes = await remoteZip.fetch("test.txt"); // ArrayBuffer
```

### With more features

```ts
const method = "POST";
const additonalHeaders = new Headers();
additonalHeaders.append("X-Example", "foobar");
const url = new URL("http://www.example.com/test.zip");
const remoteZip = await new RemoteZipPointer({
  url,
  additionalHeaders,
  method,
  credentials: "include",
}).populate();
const uncompressedBytes = await remoteZip.fetch("test.txt", additionalHeaders);
```

## Dev

<details>
<summary>Dev instructions</summary>
See `scripts` in `package.json` for more scripts.

- `yarn d` watch and build
- `yarn t:watch` watch and test
- `yarn lint`
- `yarn build`

Run tests and checks with Docker

```
docker-compose -f docker-compose.test.yml up --build
```

### Publish

#### Setup

1. Get an automation token from npm under settings

   ```
   https://www.npmjs.com/settings/aicadium/tokens/
   ```

2. Add the token to your repository secrets.

   ```
   https://github.com/$YOUR_USERNAME/$YOUR_REPO_NAME/settings/secrets/actions/new
   ```

   - Name: `NPM_TOKEN`
   - Value: The automation token you got from the previous step

#### Run

1. Create a new release.

   ```
   https://github.com/$YOUR_USERNAME/$YOUR_REPO_NAME/releases
   ```

   The workflow at `./github/workflows/publish.yml` should run and publish your packages to both NPM and GitHub Packages.

   Don't forget to bump your version number in `package.json` before this.
   </details>
npm package: @gyng/ts-library-quickstart
Description: Quickstart for esbuild library projects.
Author: Ng Guoyou
Latest version: 1.6.4

# ts-library-quickstart

Quickstart for esbuild library projects.

[Example API documentation](https://gyng.github.io/ts-library-quickstart/)

- Typescript
- Testing with jest
- Linting with prettier, eslint
- CI and skeleton CD with GitHub Actions
- Dockerfiles for build and test
- Publish to NPM and GitHub Packages by creating releases

## Usage

See `scripts` in `package.json` for more scripts.

- `npm run d` watch and build
- `npm run t:watch` watch and test
- `npm run lint`
- `npm run build`

Build targets are set in `esbuild.mjs`.

## Publish

### Setup

1. Get an automation token from npm under settings

   ```
   https://www.npmjs.com/settings/$YOUR_USERNAME/tokens/
   ```

2. Add the token to your repository secrets.

   ```
   https://github.com/$YOUR_USERNAME/$YOUR_REPO_NAME/settings/secrets/actions/new
   ```

   - Name: `NPM_TOKEN`
   - Value: The automation token you got from the previous step

3. Update the `scope` key in `./github/workflows/publish.yml` to your GitHub (organisation) name

4. Configure GitHub Pages

   ```
   https://github.com/gyng/esbuild-quickstart/settings/pages
   ```

   - Source: `gh-pages` branch
   - Directory: `/ (root)`

### Run

1. Bump your version number in `package.json` before this. Run `npm i` to update `package-lock.json`. Publishing will fail if the version already exists.

2. Create a new release.

   ```
   https://github.com/$YOUR_USERNAME/$YOUR_REPO_NAME/releases
   ```

   The workflow at `./github/workflows/publish.yml` should run and publish your packages to both NPM and GitHub Packages.

   Also, API documentation will be published to your GitHub pages via the `gh-pages` branch. It will be viewable at `https://$YOUR_NAME.github.io/$YOUR_REPO/`.
npm package: @gynxtswap-libs/sdk
Description: 🛠 An SDK for building applications on top of DYNXTswap.
Latest version: 0.0.2

# DYNXT SDK

Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk/commit/a88048e9c4198a5bdaea00883ca00c8c8e582605).

You can refer to the Uniswap SDK documentation [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).
npm package: @gyo-framework/cli
Description: CLI tool for Gyo framework - Build cross-platform apps with web technologies
Author: Gyo Framework
Latest version: 0.1.0

# Gyo CLI

## 개발 환경 설정

### 초기 설정
```bash
cd cli
npm install
npm run build
npm link  # gyo 명령어를 전역으로 사용 가능하게 함
```

### 개발 모드 (자동 빌드)
CLI 코드를 수정하면 자동으로 빌드되어 바로 사용할 수 있습니다:

```bash
# 터미널 1: watch 모드 실행 (코드 수정 시 자동 빌드)
npm run dev

# 터미널 2: gyo 명령어 테스트
cd /path/to/test-project
gyo run
```

### 수동 빌드
```bash
npm run build
```

## 기능

이 폴더에는 `gyo` 프로젝트의 생성, 빌드, 실행 등 전체적인 라이프사이클을 관리하는 Command Line Interface (CLI) 도구가 포함되어 있습니다. TypeScript로 작성되었으며, 사용자가 `gyo` 명령어를 통해 프로젝트와 상호작용할 수 있는 인터페이스를 제공합니다.

### 주요 명령어

- `gyo create`: 새로운 `gyo` 프로젝트를 생성합니다.
- `gyo run`: Android 또는 iOS 플랫폼으로 앱을 실행합니다.
- `gyo build`: 앱을 배포용으로 빌드합니다.
- `gyo clean`: 빌드 캐시 및 임시 파일을 삭제합니다.
- `gyo config`: `gyo` 관련 설정을 확인하고 수정합니다.
- `gyo doctor`: 개발 환경에 필요한 요소들이 올바르게 설정되었는지 확인합니다.

## 앞으로 추가할 기능 (Todo List)

- [ ] `gyo test` 명령어 추가 (단위 및 통합 테스트 프레임워크 연동)
- [ ] `gyo lint` 명령어 추가 (프로젝트 전체의 코드 스타일 및 정적 분석 기능)
- [ ] 각 명령어에 대한 상세 도움말 기능 강화 (`gyo create --help`)
- [ ] 더 나은 오류 처리 및 사용자 피드백 메시지 개선
- [ ] 플러그인 시스템을 도입하여 CLI 기능의 확장성 제공
- [ ] 자동 업데이트 기능 추가 (`gyo upgrade`)