open-index/open-npm huggingface dataset:
npm package: @ioco-dev/angular-framework
Description: This project is an Angular framework that provides a set of reusable components, services, and utilities to accelerate the development of Angular applications. It aims to simplify common tasks and promote best practices in Angular development.
Latest version: 21.1.1

# IOCO Angular Framework

This project is an Angular framework that provides a set of reusable components, services, and utilities to accelerate the development of Angular applications. It aims to simplify common tasks and promote best practices in Angular development.

## Features

- Error handling
- Monitoring
- Examples of services
- Strongly typed Navigation
- Modals
- Complex snackbar

## Getting started

To get started with the IOCO Angular Framework, follow these steps:

1. Create a new angular project: `ng new <Angular-project>`
2. Add the IOCO angular framework: `ng add @ioco-dev/angular-framework`
3. Start the development server: `npm start`
4. Open your browser and navigate to `http://localhost:4200`
npm package: @iocore/cli
Description: Default Monorepo template
Latest version: 1.0.28

# @iocore/cli

[![npm version](https://badge.fury.io/js/%40iocore%2Fcli.svg)](https://badge.fury.io/js/%40iocore%2Fcli)

IoCore 框架的命令行工具。

提供用于创建、启动和管理 IoCore 应用程序的命令。

## 安装

全局安装（推荐）：

```bash
npm install -g @iocore/cli
# or
yarn global add @iocore/cli
```

或者作为开发依赖安装：

```bash
npm install --save-dev @iocore/cli
# or
yarn add --dev @iocore/cli
```

如果作为开发依赖安装，你需要通过 `npx iocore ...` 或 `yarn iocore ...` 来运行命令。

## 依赖

*   `@iocore/boot`: 用于启动应用。
*   `@iocore/micro-ws-registry`: 用于启动 WebSocket 注册中心。
*   `commander`: 命令行参数解析。
*   `inquirer`: 交互式命令行提示。
*   `fs-extra`: 文件系统操作。
*   `ts-morph`: TypeScript AST 操作 (用于项目创建)。
*   `tsx`: (可选，开发模式需要) 即时执行 TypeScript/ESM。

## 命令

### `iocore start [yaml]`

启动 IoCore 应用程序。

*   `[yaml]` (可选): 指定配置文件的路径，默认为项目根目录下的 `iocore.configs.yaml`。
*   `-e, --entry <file>`: **必须** 指定应用程序的入口 TypeScript/JavaScript 文件路径 (相对或绝对路径)。该文件 **必须** `export default` 一个继承自 `Application` 的类。
*   `-m, --module <module>`: (**替代 --entry**) 指定要导入的模块名或路径，而不是本地文件。
*   `-d, --dev`: 启用开发模式。如果设置，将使用 `tsx` 来即时运行 TypeScript 代码，无需预先编译。

**示例:**

```bash
# 使用默认 iocore.configs.yaml 启动 src/main.ts
iocore start -e src/main.ts

# 使用指定配置文件启动，并启用开发模式
iocore start myconfig.yaml -e src/main.ts --dev

# 使用模块作为入口
iocore start -m my-package/dist/main.js
```

### `iocore create`

创建一个新的 IoCore 项目。

它会通过一系列交互式问题引导你：

1.  **输入项目名称**: 新项目的文件夹名称。
2.  **选择需要的服务**: 可以多选，包括：
    *   Http 服务 (`@iocore/http`)
    *   WS 微服务 (`@iocore/micro-ws-agent`)
    *   IORedis 服务 (`@iocore/ioredis`)
    *   TypeORM 服务 (`@iocore/typeorm`)

该命令会自动：

*   创建项目文件夹。
*   复制基础项目模板 (`packages/cli/template/project`)。
*   根据选择的服务，添加相应的依赖到 `package.json`。
*   在 `iocore.configs.yaml` 中添加对应服务的示例配置。
*   如果选择了 Http 或 Micro-WS 服务，会复制相应的 Controller/Middleware/Service 模板 (`packages/cli/template/*`) 到 `src/` 目录下。
*   使用 `ts-morph` 修改 `src/main.ts`，自动注入和绑定所选的服务和控制器/服务。

**示例:**

```bash
iocore create
# ? 请输入项目名称 my-new-app
# ? 请选择需要的服务 (Press <space> to select, <a> to toggle all, <i> to invert selection)
# > [x] Http服务
#   [ ] WS微服务
#   [x] IORedis服务
#   [ ] TypeORM服务
# ... 项目创建完成
```

### `iocore registry <protocol>`

快速启动一个 IoCore 微服务注册中心。

*   `<protocol>`: **必须** 指定协议。目前只支持 `ws`。
*   `-p, --port <port>`: **必须** 指定注册中心监听的端口。

**示例:**

```bash
# 启动一个监听在 8427 端口的 WebSocket 注册中心
iocore registry ws -p 8427
```

这实际上是使用 `@iocore/boot` 和预设配置来启动 `@iocore/micro-ws-registry`。

## 贡献

欢迎提交 Pull Request。对于重大更改，请先开一个 Issue 来讨论您想要更改的内容。

## 许可证

[MIT](LICENSE)
npm package: @iocore/ioredis
Description: Default Monorepo template
Latest version: 1.0.17

# @iocore/ioredis

[![npm version](https://badge.fury.io/js/%40iocore%2Fioredis.svg)](https://badge.fury.io/js/%40iocore%2Fioredis)

IoCore 的 ioredis 模块。

集成了 `ioredis` 库，提供了一个 IoCore 组件来管理 Redis 连接。

## 安装

```bash
npm install @iocore/ioredis @iocore/component ioredis --save
# or
yarn add @iocore/ioredis @iocore/component ioredis
```

## 依赖

*   `@iocore/component`
*   `ioredis`: 功能强大的 Node.js Redis 客户端。

## 配置

通过环境变量 `IOCORE_IOREDIS_CONFIGS` 配置 ioredis。该变量应包含一个 JSON 字符串，其内容是 ioredis 的 `RedisOptions`。

**示例 `.env` 文件:**

```env
# 连接到单个 Redis 实例
IOCORE_IOREDIS_CONFIGS='{"host":"localhost","port":6379,"password":"yourpassword","db":0}'

# 连接到 Redis Sentinel
# IOCORE_IOREDIS_CONFIGS='{"sentinels":[{"host":"localhost","port":26379},{"host":"localhost","port":26380}],"name":"mymaster","password":"yourpassword","db":0}'

# 连接到 Redis Cluster
# IOCORE_IOREDIS_CONFIGS='[{"host":"localhost","port":7000},{"host":"localhost","port":7001}]'
```

有关 `RedisOptions` 的详细信息，请参阅 [ioredis 文档](https://github.com/luin/ioredis/blob/main/API.md#new-redisport-host-options)。

## 使用

`IORedis` 类是一个 IoCore `Application` 组件，可以通过依赖注入使用。

```typescript
import { Application } from '@iocore/component';
import IORedis from '@iocore/ioredis';
import { Redis } from 'ioredis';

// 配置 Redis (通常通过环境变量完成)
// process.env.IOCORE_IOREDIS_CONFIGS = JSON.stringify({ host: 'localhost', port: 6379 });

@Application.Inject(IORedis)
class MyApp extends Application {

  @Application.Inject(IORedis)
  private ioredis: IORedis;

  public async main() {
    const redisClient: Redis = this.ioredis.conn;
    console.log('Redis Client Status:', redisClient.status);

    if (redisClient.status === 'ready') {
      try {
        await redisClient.set('mykey', 'Hello from IoCore ioredis module!');
        const value = await redisClient.get('mykey');
        console.log('Retrieved value from Redis:', value);

        await redisClient.del('mykey');
      } catch (error) {
        console.error('Redis command failed:', error);
      }
    } else {
      console.error('Redis client is not ready.');
    }
  }
}

Application.start(MyApp);
```

### `IORedis` 类

*   **`conn: Redis`**: 初始化后的 `ioredis` 实例。
*   **`props: IOCORE_IOREDIS_CONFIGS`**: 从环境变量加载的原始配置选项 (`RedisOptions`)。
*   **`constructor()`**: 读取并解析 `IOCORE_IOREDIS_CONFIGS` 环境变量。如果未设置，则抛出错误。
*   **`initialize(): Promise<void>`**: 基于提供的配置创建并连接 `ioredis` 实例。IoCore 会自动调用此方法。连接成功后才会 resolve。
*   **`terminate(): void`**: 断开 Redis 连接。IoCore 会自动调用此方法。

## 贡献

欢迎提交 Pull Request。对于重大更改，请先开一个 Issue 来讨论您想要更改的内容。

## 许可证

[MIT](LICENSE)
npm package: @iocore/logger
Description: Default Monorepo template
Latest version: 1.0.10

# @iocore/logger

[![npm version](https://badge.fury.io/js/%40iocore%2Flogger.svg)](https://badge.fury.io/js/%40iocore%2Flogger)

IoCore 的日志记录模块，基于 `log4js`。

提供了一个易于使用的日志记录器，可以将日志同时输出到控制台（带颜色）和按日期轮转的文件中。

## 安装

```bash
npm install @iocore/logger @iocore/component log4js --save
# or
yarn add @iocore/logger @iocore/component log4js
```

## 依赖

*   `@iocore/component`
*   `log4js`: 功能强大的 Node.js 日志库。

## 配置

该模块使用 `log4js` 的默认配置，包含两个 appender：

1.  **`console`**: 输出到控制台，使用 `colored` 布局，根据日志级别自动着色。
2.  **`rotatingFile`**: 输出到文件。
    *   文件名: `logs/app.log`
    *   轮转模式: 按日期 (`yyyy-MM-dd`)
    *   布局: `"%d{ISO8601} [%p] %m"` (包含 ISO8601 时间戳和日志级别)
    *   自动压缩旧日志 (`compress: true`)
    *   保留天数: 7 天 (`daysToKeep: 7`)

默认日志级别 (`level`) 设置为 `info`。

目前不支持通过环境变量进行配置，如果需要自定义配置，可以考虑扩展此类或直接使用 `log4js`。

## 使用

`Logger` 类是一个 IoCore `Application` 组件，通常通过依赖注入使用。

```typescript
import { Application } from '@iocore/component';
import Logger from '@iocore/logger';

@Application.Inject(Logger)
class MyApp extends Application {

  @Application.Inject(Logger)
  private logger: Logger;

  public async main() {
    this.logger.trace('Entering application main...'); // 默认 info 级别，不会输出 trace
    this.logger.debug('Debugging information.');       // 默认 info 级别，不会输出 debug
    this.logger.info('Application started successfully.', { pid: process.pid });
    this.logger.warn('Something is not quite right...');
    this.logger.error('An error occurred!', new Error('Sample error'));
    this.logger.fatal('A critical error occurred, shutting down!');

    // 动态修改日志级别
    this.logger.setLevel('debug');
    this.logger.debug('This debug message will now be logged.');

    // 使用特定级别记录日志
    this.logger.log('info', 'Another info message using log method.');
  }
}

Application.start(MyApp);
```

### `Logger` 类方法

该类包装了 `log4js` 的 Logger 实例，提供了标准的日志记录方法：

*   `trace(message: any, ...args: any[])`
*   `debug(message: any, ...args: any[])`
*   `info(message: any, ...args: any[])`
*   `warn(message: any, ...args: any[])`
*   `error(message: any, ...args: any[])`
*   `fatal(message: any, ...args: any[])`
*   `log(level: Level | string, ...args: any[])`: 使用指定的级别记录日志。
*   `setLevel(level: Level | string): this`: 动态设置当前 Logger 实例的日志级别。

## 贡献

欢迎提交 Pull Request。对于重大更改，请先开一个 Issue 来讨论您想要更改的内容。

## 许可证

[MIT](LICENSE)
npm package: @iodigital/vite-plugin-msw
Description: Mock Service Worker browser and node integration for Vite
Author: iO
Latest version: 2.0.0

# @iodigital/vite-plugin-msw

Mock Service Worker browser and node integration for Vite.

## Usage

### Install

```sh
npm install --save-dev @iodigital/vite-plugin-msw
# yarn add --dev @iodigital/vite-plugin-msw
# pnpm add --save-dev @iodigital/vite-plugin-msw
```

### Define mocks

https://mswjs.io/docs/getting-started/mocks

### Add to Vite config

```ts
// Import plugin
import msw from "@iodigital/vite-plugin-msw";

// Import msw handlers
import { handlers } from "../mocks/handlers";

// Pass them to plugin
export default defineConfig({
  plugins: [msw({ handlers })],
});
```

---

## Config

```ts
interface VitePluginMswOptions {
  handlers: RequestHandler[];
  mode?: "browser" | "node";
  build?: boolean;
}
```

### Handlers

- Required

MSW handlers. More information on how to define these: https://mswjs.io/docs/getting-started/mocks

### Mode

- Optional
- Default: `browser`

#### Browser

To start MSW in the client, please follow the [Configure worker step](https://mswjs.io/docs/getting-started/integrate/browser#configure-worker) and [Start worker step](https://mswjs.io/docs/getting-started/integrate/browser#start-worker) in the MSW docs. The `mockServiceWorker.js` file will be provided by the Vite Dev Server.

#### Node

This will handle the mocked service worker handlers via a Vite Dev Server plugin.

### Build

- Optional
- Default: `false`

A true value will output MSW's `mockServiceWorker.js` file to the Vite build directory, in case if MSW is needed in production.

---

## Development

```
npm run dev
```

### Example vite application with plugin

```
npm run build
cd examples/with-vite
npm run dev
curl http://localhost:3000/api/health
```

### Build

```
npm run build
```
npm package: @iodigital/vite-plugin-prism
Description: Prism, OpenAPI mocking server, integration for Vite
Author: iO
Latest version: 0.10.0

# @iodigital/vite-plugin-prism

[Prism](https://github.com/stoplightio/prism), OpenAPI mocking server, integration for Vite

## Usage

### Install

```sh
npm install --save-dev @iodigital/vite-plugin-prism
# yarn add --dev @iodigital/vite-plugin-prism
# pnpm add --save-dev @iodigital/vite-plugin-prism
```

### Vite

```ts
// Import plugin
import prism from "@iodigital/vite-plugin-prism";

// Pass them to plugin
export default defineConfig({
  plugins: [
    prism([
      {
        // OpenAPI doc
        specFilePathOrObject:
          "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore-expanded.yaml",
      },
    ]),
  ],
});
```

### Nuxt

```ts
import { defineNuxtConfig } from "nuxt";

// https://v3.nuxtjs.org/api/configuration/nuxt.config
export default defineNuxtConfig({
  modules: [
    [
      "@iodigital/vite-plugin-prism/dist/nuxt",
      [
        {
          specFilePathOrObject:
            "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore-expanded.yaml",
        },
      ],
    ],
  ],

  // or
  modules: ["@iodigital/vite-plugin-prism/dist/nuxt"],
  prism: [
    {
      specFilePathOrObject:
        "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore-expanded.yaml",
    },
  ],
});
```

### Config

```ts
interface PrismPluginOptions {
  // Base path for API
  // Default: /api
  route?: string;

  // URL to OpenAPI document or OpenAPI document object
  specFilePathOrObject: string | object;

  // Prism HTTP server configuration, same as Prism's IHttpConfig
  // https://github.com/stoplightio/prism/tree/master/packages/http#config-object
  // Default:
  // {
  //   mock: { dynamic: true },
  //   validateRequest: true,
  //   validateResponse: true,
  //   checkSecurity: true,
  //   errors: true,
  // };
  prismConfig?: PrismConfig;

  // Turn on Prism logging
  // Default: false
  debug?: boolean;
}
```

---

## Development

```
npm run dev
```

### Example vite application with plugin

```
npm run build
cd examples/with-vite
npm run dev
curl http://localhost:3000/api/pets
```

### Example Nuxt application with plugin

```
npm run build
cd examples/with-nuxt
npm run dev
curl http://localhost:3000/api/pets
```

### Build

```
npm run build
```
npm package: @iodp/geodesc-common
Description: This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.0.9.
Latest version: 0.0.23

# GeodescCommon

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.0.9.

## Code scaffolding

Run `ng generate component component-name --project geodesc-common` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project geodesc-common`.
> Note: Don't forget to add `--project geodesc-common` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build geodesc-common` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build geodesc-common`, go to the dist folder `cd dist/geodesc-common` and run `npm publish`.

## Running unit tests

Run `ng test geodesc-common` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.