open-index/open-npm huggingface dataset:
npm package: @jy-space/tools
Description: 一些函数
Author: jiyuchen
Latest version: 1.0.0

# JY-TOOLS

从业务和需求中抽象出来的一些函数

## diffObject

对象差异比较函数，用于比较两个对象之间的属性变化。

### 函数签名

```typescript
function diffObject<
  T extends Record<string, any>,
  U extends Record<string, any>,
>(obj1: T, obj2: U): DiffResult<T, U>;
```

### 参数说明

| 参数名 | 类型                            | 描述                     |
| ------ | ------------------------------- | ------------------------ |
| `obj1` | `T extends Record<string, any>` | 比较的原始对象（变更前） |
| `obj2` | `U extends Record<string, any>` | 比较的目标对象（变更后） |

### 返回值类型

```typescript
DiffResult<T, U> = {
  [K in keyof T | keyof U]?: DiffDetail<
    K extends keyof T ? T[K] : undefined,
    K extends keyof U ? U[K] : undefined
  >;
}
```

返回一个包含所有属性差异的对象，每个属性的值是一个 `DiffDetail` 对象，包含差异类型和前后值。

### 基本用例

#### 1. 属性值变更

```typescript
const before = { name: "Alice", age: 25 };
const after = { name: "Alice", age: 26 };

const result = diffObject(before, after);
console.log(result);
// 输出:
// {
//   age: {
//     type: "CHANGE",
//     beforeValue: 25,
//     afterValue: 26
//   }
// }
```

#### 2. 新增属性

```typescript
const before = { name: "Bob" };
const after = { name: "Bob", email: "bob@example.com" };

const result = diffObject(before, after);
console.log(result);
// 输出:
// {
//   email: {
//     type: "ADD",
//     beforeValue: undefined,
//     afterValue: "bob@example.com"
//   }
// }
```

#### 3. 删除属性

```typescript
const before = { name: "Charlie", age: 30 };
const after = { name: "Charlie" };

const result = diffObject(before, after);
console.log(result);
// 输出:
// {
//   age: {
//     type: "DELETE",
//     beforeValue: 30,
//     afterValue: undefined
//   }
// }
```

#### 4. 多种变更类型组合

```typescript
const before = { name: "David", age: 20, city: "Beijing" };
const after = { name: "Daniel", age: 20, email: "daniel@example.com" };

const result = diffObject(before, after);
console.log(result);
// 输出:
// {
//   name: {
//     type: "CHANGE",
//     beforeValue: "David",
//     afterValue: "Daniel"
//   },
//   city: {
//     type: "DELETE",
//     beforeValue: "Beijing",
//     afterValue: undefined
//   },
//   email: {
//     type: "ADD",
//     beforeValue: undefined,
//     afterValue: "daniel@example.com"
//   }
// }
```
npm package: @jy95/material-ui-image
Description: Material style image with loading animation
Author: Wertarbyte
Latest version: 4.0.9

# Material UI Image
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Images are ugly until they're loaded. Materialize it with material image! It will fade in like the material image loading pattern suggests.

![Example](demo.gif)

## Installation

```sh
npm install @jy95/material-ui-image
```

**Note:** This is the version for Material-UI 1.0.0-rc.0 or later. If you are using Material-UI 1.0.0-beta, you should update to the latest version. If you are still using Material-UI 0.x, you can use our [legacy version][legacy].

## Usage

Use this component just like a regular img tag.

```jsx
import Image from '@jy95/material-ui-image'

<Image
  src="http://loremflickr.com/300/200"
/>
```

### Material UI Image Properties

|Name               |Type        |Default                                   |Description
|-------------------|------------|------------------------------------------|--------------------------------
|animationDuration  | `number`   | 3000                                     | Duration of the fading animation, in milliseconds.
|aspectRatio        | `float`    | (1/1)                                    | Specifies the aspect ratio of the image.
|cover              | `bool`     | false                                    | Override the image's object fit to `cover`
|color              | `string`   | white                                    | Override the background color.
|disableError       | `bool`     | false                                    | Disables the error icon if set to `true`.
|disableSpinner     | `bool`     | false                                    | Disables the loading spinner if set to `true`.
|disableTransition  | `bool`     | false                                    | Disables the transition if set to `true`.
|errorIcon          | `node`     | <BrokenImage />                          | Override the error icon.
|iconContainerStyle | `object`   |                                          | Override the inline-styles of the container that contains the loading spinner and the error icon.
|imageStyle         | `object`   | { width: 'inherit', height: 'inherit' }  | Override the inline-styles of the image.
|loading            | `node`     | <CircularProgress size={48} />           | Override the loading component.
|onClick            | `func`     |                                          | Fired when the user clicks on the image happened.
|src*               | `string`   |                                          | Specifies the URL of an image.
|style              | `object`   |                                          | Override the inline-styles of the root element.

\* required property

All other props are passed through to the underlying `img` element after the image is loaded.

## License

The files included in this repository are licensed under the MIT license.

[legacy]: https://github.com/jy95/material-ui-image/tree/legacy
npm package: @jyan/my-project
Description: my first project
Author: Johnny Yan
Latest version: 1.0.6

# [yarn](https://yarnpkg.com/en/)

A package is a directory with some code and a package.json file that provides information to Yarn about your package.

When you run yarn init, all it is doing is creating this file. Nothing happens in the background. You can feel free to edit this file as much as you want.