open-index/open-npm huggingface dataset:
npm package: @semic/common
Description: `html2pdf-ts` 依赖 `puppeteer` 我们需要在 linux 机器上安装其必要的依赖
Author: Yingchun Tian
Latest version: 2.2.10

# @semic/common

`html2pdf-ts` 依赖 `puppeteer` 我们需要在 linux 机器上安装其必要的依赖

1. `yum install gtk3` ( provides libatk-bridge-2.0.so.0`)
npm package: @semic/plugin-cdn
Description: https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
Latest version: 1.0.2

# 插件 semic@plugin-cdn

https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
npm package: @semic/plugin-email
Description: it should be replacement of `@semic/plugin-email`
Author: Yingchun Tian
Latest version: 2.2.11

# @semic/plugin-email

it should be replacement of `@semic/plugin-email`

## Usage of email

### Mailgun

```shell
MAILGUN_SMTP_HOST='smtp.mailgun.org'
MAILGUN_SMTP_AUTH_USER='postmaster@xxx.com'
MAILGUN_SMTP_AUTH_PASS='xxxxx'
MAILGUN_API_KEY='key-xxxx'
MAILGUN_API_DOMAIN='xxx.domain.com'
```
npm package: @semic/plugin-email-code
Description: A Vendure plugin allow users log in using email and verification code
Author: Yingchun Tian
Latest version: 2.2.11

# @plugin/auth-email-code

A Vendure plugin allow users log in using email and verification code

## Use Case

A lot of times we want visitors (aka customers) to complete their purchase order as quick as possilble. However, they usually hesitate to create a credential to a random online shop at checkout step. So we provide a way to quickly authenticate those visitors by their email and a verification code that is sent to their email.

## What it does

1. Expose a GraphQL Query "`requestOneTimeCode`".
2. Add an authentication strategy to GraphQL mutation "`authenticate`".

---

## How to use

### 1. Install

`yarn add @semic/plugin-auth-email-code`

or

`npm i --save @semic/plugin-auth-email-code`

### 2. Add the plugin to **_vendure-config.ts_** file

```typescript
import { SemicAuthEmailCodePlugin } from "@semic/plugin-auth-email-code";
...
export const config: VendureConfig  = {
 ...
 plugins: [
   ...
   SemicAuthEmailCodePlugin.init(options) //see Options
 ]
}
```

### 3. Options for `SemicAuthEmailCodePlugin.init`

- attempts: `number`
  > Plugin will invalidate the verification code after user's `attempts`.  
  > **default**: 5
- ttl: `number`
  > Time to live  
  > How long the verification code is valid for.  
  > **default**: 600 (seconds)
- length: `number`
  > How many digits/alphabets the verification code should be.  
  > **default**: 6
- includeAlphabet: `boolean`
  > Should allow alphabet characters.  
  > **default**: false (aka `digits only`)
- isDev: `boolean`

  > If true, the verification will return along with the response of query. `requestOneTimeCode`.  
  > It's for debug and testing.  
  > **default**: false

- checkCrossStrategies: `boolean`

  > Strictly enforce unique email among all strategies

  > For example:

  - One day, user "John" sign in using Google authentication with "john@gmail.com".
  - Another day, user "John" sign in using One-time passcode authenication (this plugin) with the same email.
  - This plugin will throw an error if the flag is enabled.

  > **default**: false.  
  > **Note**: This only works if Google authentication plugin using email as an identifier

## Future Updates

- [x] Prevent cross authenticate (Ex: users use same email for GoogleAuth and SimpleAuth)
npm package: @semic/plugin-lense
Description: https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
Latest version: 1.0.2

# 插件 semic@plugin-lense

https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
npm package: @semic/plugin-paypal
Description: https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
Latest version: 1.0.5

# 插件 semic@plugin-paypal

https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
npm package: @semic/plugin-product
Description: https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
Latest version: 1.0.10

# 插件 semic@plugin-product

https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories

## 试戴资源模型的`tryonFrameModelConfig`

```ts
const glassAssetData = {
  frame: {
    framePd: 50,
    imageRealSize: {
      width: 490,
      height: 202,
    },
    frameJoint: {
      left: { x: 0, y: 15.725806451613 },
      right: { x: 100, y: 14.91935483871 },
    },
  },
  temple: {
    imageRealSize: {
      width: 405,
      height: 200,
    },
    templeJoint: {
      left: { x: 0, y: 51.351351351351 },
      right: { x: 100, y: 56.127450980392 },
    },
  },
};
// {"frame":{"framePd":50,"imageRealSize":{"width":490,"height":202},"frameJoint":{"left":{"x":0,"y":15.725806451613},"right":{"x":100,"y":14.91935483871}}},"temple":{"imageRealSize":{"width":405,"height":200},"templeJoint":{"left":{"x":0,"y":51.351351351351},"right":{"x":100,"y":56.127450980392}}}}
```

## canvas 尺寸画线模型的`dimensionModelConfig`

```ts
export const defaultDimensionModel: DimensionModelConfig = {
  /**
   * 中梁
   */
  bridge: [
    ['0.4357', '0.0850'],
    ['0.5544', '0.0850'],
  ],
  /**
   * 框高
   */
  lensHeight: [
    ['0.0000', '0.1622'],
    ['0.0000', '0.7889'],
  ],
  /**
   * 框宽
   */
  lensWidth: [
    ['0.5656', '0.0850'],
    ['0.9522', '0.0850'],
  ],
  /**
   * 整宽
   */
  totalWidth: [
    ['0.0722', '0.9044'],
    ['0.9122', '0.9044'],
  ],
  /**
   * 镜腿总长度
   */
  templeLength: [
    ['0.2211', '0.1056'],
    ['0.7567', '0.1056'],
    ['0.9689', '0.4111'],
  ],
};
// {"bridge":[["0.4357","0.0850"],["0.5544","0.0850"]],"lensHeight":[["0.0000","0.1622"],["0.0000","0.7889"]],"lensWidth":[["0.5656","0.0850"],["0.9522","0.0850"]],"totalWidth":[["0.0722","0.9044"],["0.9122","0.9044"]],"templeLength":[["0.2211","0.1056"],["0.7567","0.1056"],["0.9689","0.4111"]]}
```
npm package: @semic/plugin-promotion
Description: This is a plugin for the [Vendure e-commerce framework](https://www.vendure.io/) designed for recording emails and phones for subscriptions/newsletter.
Latest version: 1.1.0-alpha.5

# Vendure promotion Plugin

This is a plugin for the [Vendure e-commerce framework](https://www.vendure.io/) designed for recording emails and phones for subscriptions/newsletter.

After banner of your vendure project, you can just use this plugin via npm install:

`npm install @semic/plugin-promotion`

and then include it to vendure-config file as below:

```
import { SemicPromotionPlugin } from "@semic/plugin-promotion";
...
export const config: VendureConfig = {
  ...
  plugins: [
    ...,
	  SemicPromotionPlugin
  ]
}
```
npm package: @semic/plugin-tryon
Description: https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
Latest version: 1.0.2

# 插件 semic@plugin-tryon

https://github.com/search?p=2&q=vendure+plugin+-user%3Avendure-ecommerce&type=Repositories
npm package: @semic/testing
Description: ## create dev server
Author: Yingchun Tian
Latest version: 2.2.11

# @semic/testing

## create dev server

```ts
import { getDirname } from "@semic/common";
import { createTestServer, initialData } from "@semic/testing";
import { registerInitializer, SqljsInitializer } from "@vendure/testing";
import { config } from "dotenv";
import { SemicAdminPlugin } from "../src/admin.plugin.js";

config();
registerInitializer("sqljs", new SqljsInitializer("__data__"));

const { server } = await createTestServer({
  type: "dev-server",
  metaUrl: import.meta.url,
  overridePlugins: {
    plugins: [
      SemicAdminPlugin.init({
       ...
      }),
    ],
  },
});

await server.init({
  initialData,
  productsCsvPath: getDirname(
    import.meta.url,
    "../../testing/mock-data/products.csv"
  ),
});
```

## create e2e testing server

```ts
let server: TestServer;
let shopClient: SimpleGraphQLClient;
let adminClient: SimpleGraphQLClient;
const serverStarted = false;

beforeAll(async () => {
  registerInitializer("sqljs", new SqljsInitializer("__data__"));
  ({ server, adminClient, shopClient } = await createTestServer({
    type: "e2e",
    metaUrl: import.meta.url,
    overridePlugins: {
      plugins: [
        SemicAdminPlugin.init({
          ...
        }),
      ],
    },
  }));

  await server.init({
    initialData,
    productsCsvPath: getDirname(
      import.meta.url,
      "../../testing/mock-data/products.csv"
    ),
  });

  await adminClient.asSuperAdmin();
}, 60000);
```
npm package: @semicolon-ui/design-token
Description: ## Install
Author: eungyeole
Latest version: 1.0.0

# @semicolondsm/design-token

## Install

```
yarn add @semicolondsm/design-token
```

## Usage

```jsx
import { colors } from "@semicolondsm/design-token";
```

```typescript
import { colors } from "@karrotmarket/design-token";

// WebView에서 사용되는 scheme 입니다.
// 반드시 css서버에서의 link가 필요합니다.
colors.auto.scheme;

// 라이트
colors.light.scheme;

// 다크
colors.dark.scheme;
```

```html
<link rel="stylesheet" href="https://assets-fe.xquare.app/style.css" />
```

Link가 되면 CSS 에서 color: var(--blue400) 처럼 쓸 수 있습니다.
npm package: @semicolon-ui/react-emotion-theme
Description: ## Install
Author: eungyeole
Latest version: 1.0.0

# @semicolondsm/react-emotion-theme

## Install

```
yarn add @semicolondsm/react-emotion-theme
```

## Usage

```jsx
import React from "react";
import { SDSThemeProvider } from "@semicolondsm/react-emotion-theme";

<SDSThemeProvider>
  <MyComponent />
</SDSThemeProvider>;
```

## Usage `@emotion/styled`

```jsx
const Test = styled.div`
    color: ${(props) => props.theme.colors.blue400}
    background: ${(props) => props.theme.colors.indigo900}
`;
```
npm package: @semicolon-ui/ui
Description: Semicolon;에서 개발한 교내 프로젝트 전용 디자인 시스템입니다.
Latest version: 1.0.0

# SemicolonDesign Frontend

Semicolon;에서 개발한 교내 프로젝트 전용 디자인 시스템입니다.

[**View the full documentation ▸**](https://main--60e54adc171c1d003bf97d21.chromatic.com/)

## Install

```console
npm install --save @semicolondsm/ui
yarn add @semicolondsm/ui
```

## Usage

사용하 전 반드시 아래 코드를 추가해주세요

```html
<link rel="stylesheet" href="https://assets-fe.xquare.app/style.css" />
```

```jsx
import React, { Component } from "react";

import { Button } from "@semicolondsm/ui";

const Example: React.FC = () => {
  return <Button>Hello, world!</Button>;
};
```

## 🎉 Worked

아직없다!
npm package: @semicolondsm/design-token
Description: ## Install
Author: eungyeole
Latest version: 1.0.8

# @semicolondsm/design-token

## Install

```
yarn add @semicolondsm/design-token
```

## Usage

```jsx
import { colors } from "@semicolondsm/design-token";
```

```typescript
import { colors } from "@semicolondsm/design-token";

// WebView에서 사용되는 scheme 입니다.
// 반드시 css서버에서의 link가 필요합니다.
colors.auto.scheme;

// 라이트
colors.light.scheme;

// 다크
colors.dark.scheme;
```

```html
<link rel="stylesheet" href="https://style.xquare.app/styles.css" />
```

Link가 되면 CSS 에서 color: var(--blue400) 처럼 쓸 수 있습니다.
npm package: @semicolondsm/react-emotion-theme
Description: ## Install
Author: eungyeole
Latest version: 1.0.10

# @semicolondsm/react-emotion-theme

## Install

```
yarn add @semicolondsm/react-emotion-theme
```

## Usage

```jsx
import React from "react";
import { SDSThemeProvider } from "@semicolondsm/react-emotion-theme";

<SDSThemeProvider>
  <MyComponent />
</SDSThemeProvider>;
```

## Usage `@emotion/styled`

```jsx
const Test = styled.div`
    color: ${(props) => props.theme.colors.blue400}
    background: ${(props) => props.theme.colors.indigo900}
`;
```
npm package: @semicolondsm/react-styled-components-theme
Description: ## Install
Author: syi0808
Latest version: 1.0.3

# @semicolondsm/react-styled-components-theme

## Install

```
yarn add @semicolondsm/react-styled-components-theme
```

## Usage

```jsx
import React from "react";
import { SDSThemeProvider } from "@semicolondsm/react-styled-components-theme";

<SDSThemeProvider>
  <MyComponent />
</SDSThemeProvider>;
```

## Usage `@emotion/styled`

```jsx
const Test = styled.div`
    color: ${(props) => props.theme.colors.blue400}
    background: ${(props) => props.theme.colors.indigo900}
`;
```
npm package: @semicolondsm/ui
Description: Semicolon;에서 개발한 교내 프로젝트 전용 디자인 시스템입니다.
Latest version: 1.4.1

# SemicolonDesign Frontend

Semicolon;에서 개발한 교내 프로젝트 전용 디자인 시스템입니다.

[**View the full documentation ▸**](https://main--60e54adc171c1d003bf97d21.chromatic.com/)

## Install

```console
npm install --save @semicolondsm/ui
yarn add @semicolondsm/ui
```

## Usage

사용하 전 반드시 아래 코드를 추가해주세요

```html
<link rel="stylesheet" href="https://style.xquare.app/styles.css" />
```

```jsx
import React, { Component } from "react";

import { Button } from "@semicolondsm/ui";

const Example: React.FC = () => {
  return <Button>Hello, world!</Button>;
};
```

## 🎉 Worked

아직없다!
npm package: @semicons/config
Description: Shared configuration for Semicons monorepo
Latest version: 0.0.1

# @semicons/config

Shared configuration for Semicons monorepo and external projects.

## For External Projects

```bash
npm i -D @semicons/config typescript eslint prettier \
  @typescript-eslint/eslint-plugin @typescript-eslint/parser \
  eslint-plugin-react eslint-plugin-react-hooks
```

Then use as shown below.

## For Monorepo Development

The Semicons monorepo uses its own `tsconfig.base.json` for local development. External projects should use `@semicons/config` as shown above.

## Usage

### TypeScript

**packages/core/tsconfig.json** (Library):
```json
{
  "extends": "@semicons/config/tsconfig/lib.json",
  "compilerOptions": {
    "rootDir": "src",
    "outDir": "dist"
  },
  "include": ["src"]
}
```

**packages/react/tsconfig.json** (React App/Library):
```json
{
  "extends": "@semicons/config/tsconfig/app.json",
  "compilerOptions": {
    "rootDir": "src",
    "outDir": "dist"
  },
  "include": ["src"]
}
```

### ESLint (Flat Config)

**eslint.config.mjs**:
```javascript
import base from '@semicons/config/eslint/base.cjs';
import react from '@semicons/config/eslint/react.cjs';

export default [
  base,
  react
];
```

**For Astro projects**:
```javascript
import base from '@semicons/config/eslint/base.cjs';
import astro from '@semicons/config/eslint/astro.cjs';

export default [
  base,
  astro
];
```

### Prettier

**prettier.config.cjs**:
```javascript
module.exports = require('@semicons/config/prettier');
```

**prettier.config.mjs**:
```javascript
import prettierConfig from '@semicons/config/prettier';
export default prettierConfig;
```

## For External Projects

When publishing this config separately:

```bash
npm i -D @semicons/config typescript eslint prettier \
  @typescript-eslint/eslint-plugin @typescript-eslint/parser \
  eslint-plugin-react eslint-plugin-react-hooks
```

Then use as shown above.

## Extending Configs

Override rules in your project:

```javascript
// eslint.config.mjs
import base from '@semicons/config/eslint/base.cjs';

export default [{
  ...base,
  rules: {
    ...base.rules,
    '@typescript-eslint/no-explicit-any': 'off'
  }
}];
```

```json
// tsconfig.json
{
  "extends": "@semicons/config/tsconfig/app.json",
  "compilerOptions": {
    "strict": false
  }
}
```

## Available Exports

### TypeScript
- `@semicons/config/tsconfig/base.json` - Base strict config
- `@semicons/config/tsconfig/lib.json` - Library config (with declarations)
- `@semicons/config/tsconfig/app.json` - App config (with React JSX)

### ESLint
- `@semicons/config/eslint/base` - Base TypeScript rules
- `@semicons/config/eslint/react` - React specific rules
- `@semicons/config/eslint/astro` - Astro rules (TODO)

### Prettier
- `@semicons/config/prettier` - Prettier config object
npm package: @semicons/eslint-plugin
Description: ESLint plugin for Semicons icon governance - enforce semantic token usage and prevent hardcoded SVGs
Latest version: 0.0.1

# @semicons/eslint-plugin

ESLint plugin for Semicons icon governance - enforce semantic token usage and prevent hardcoded SVGs.

## Installation

```bash
pnpm add -D @semicons/eslint-plugin eslint @typescript-eslint/parser
```

## Usage

### Flat Config (ESLint 9+)

```javascript
// eslint.config.mjs
import semicons from '@semicons/eslint-plugin';

export default [
  {
    files: ['**/*.{ts,tsx,js,jsx}'],
    plugins: {
      '@semicons': semicons,
    },
    extends: ['plugin:@semicons/recommended'],
    rules: {
      // Override default rules if needed
      '@semicons/valid-icon-token': [
        'error',
        {
          iconComponentName: 'Icon',
          iconNameProp: 'name',
          registryPath: './src/icons.generated/registry.json',
        },
      ],
    },
  },
];
```

## Rules

| Rule | Description | Default Level |
|------|-------------|---------------|
| `no-hardcoded-svg-import` | Disallow importing raw SVG files | error |
| `no-img-raw-svg` | Discourage using `<img>` with SVG sources | warn |
| `valid-icon-token` | Validate Icon token names against pattern and registry | error |

## Options

### valid-icon-token

```typescript
interface SemiconsEslintOptions {
  iconComponentName?: string;  // default: "Icon"
  iconNameProp?: string;       // default: "name"
  registryPath?: string;       // e.g., "./src/icons.generated/registry.json"
}
```

### Token Name Pattern

Icon tokens must match: `^[a-z][a-z0-9-]*:[a-zA-Z0-9][a-zA-Z0-9._/-]*$`

Example: `navigation:menu`, `action:edit`, `category:icon-name`

## License

MIT
npm package: @semilayer/bridge-sdk
Description: SemiLayer Bridge SDK — adapter interface and test harness for building SemiLayer database bridges
Author: SemiLayer
Latest version: 0.1.2

# @semilayer/bridge-sdk

SemiLayer Bridge SDK — the interface and test harness for building SemiLayer database bridges.

## What's in here

- **Bridge interface** (re-exported from `@semilayer/core`) — the contract every bridge must implement: `connect`, `read`, `count`, `query`, `disconnect`.
- **`MockBridge`** — an in-memory `Bridge` implementation. Use it in your service tests when you need a deterministic bridge without standing up a real database.
- **`createBridgeTestSuite`** — a vitest compliance harness. Drop it into your bridge package's tests and it'll exercise the full Bridge contract against your implementation.

## Install

```bash
npm install --save-dev @semilayer/bridge-sdk vitest
```

`vitest` is a peer dependency — your bridge package brings its own.

## Usage

### MockBridge

```ts
import { MockBridge } from '@semilayer/bridge-sdk'

const bridge = new MockBridge()
bridge.seed('users', [
  { id: 1, name: 'Ada' },
  { id: 2, name: 'Grace' },
])
await bridge.connect()
const result = await bridge.read('users', { limit: 10 })
```

### Compliance test suite

```ts
import { createBridgeTestSuite } from '@semilayer/bridge-sdk'
import { MyBridge } from './bridge.js'

createBridgeTestSuite({
  factory: () => new MyBridge({ /* config */ }),
  seed: {
    target: 'items',
    rows: [/* ... */],
    primaryKey: 'id',
  },
})
```

## Building a new bridge

The canonical guide lives at the [bridge-sdk monorepo CONTRIBUTING.md](https://github.com/semilayer/bridge-sdk/blob/main/CONTRIBUTING.md). Use `pnpm new-bridge <name>` from the monorepo root to scaffold a new bridge package under `packages/`.

## License

MIT