open-index/open-npm huggingface dataset:
npm package: @smertos/tydi
Description: Simple dependency injection library for TypeScript
Author: Mikhail Vedernikov
Latest version: 1.0.3

# ty~~pescript~~DI

[![npm version](https://img.shields.io/npm/v/@smertos/tydi.svg?color=green&label=tydi&logo=npm&style=for-the-badge)](https://npmjs.com/package/@smertos/tydi)
[![why not](https://img.shields.io/badge/built%20with-nanomachines%20son-brightgreen.svg?style=for-the-badge&logo=typescript)](https://smertos.xyz)

**tydi** is a simple Dependency Injection helper, that adds 2 simple decorators for easy property/constructor parameters injection of decorated classes or any other kind of values using assigned custom keys.


## Example

First you'll need to define some service.

```typescript
import { Service } from '@smertos/tydi';

@Service()
class AuthService {
	
    isLoggedIn(): boolean {
    	return ...;
    }
    	
}
```

Then somewhere you need this service, you'll need to inject the service.

```typescript
import { Container, Inject } from '@smertos/tydi';
import { AuthService } from '...';

class LoginComponent {
	
    @Inject() authService: AuthService;
    
    logIn(): void {
    	if (this.authService.isLoggedIn) return;
        
        ...
    }

}
```

If you do not manage instantiation of class (i.e. React components) and do not pass any arguments, then you can use constructor parameter injection (works like in Angular 2+). Access modificators can be used with injected parameters without any problems.

```typescript
class LoginComponent {
	
    constructor(private authService: AuthService) {}
    
    logIn(): void {
    	if (this.authService.isLoggedIn) return;
        
        ...
    }

}
```

If you wish to do instantiation yourself as well, as pass parameters to constructor, you can do it as it is supported, but TypeScript may think about it otherwise.
npm package: @smess/auth-plugin
Description: Authentication plugin for SMESS platform with React components and services.
Latest version: 1.0.1

# @smess/auth-plugin

A comprehensive authentication plugin for SMESS platform with React components and services.

## Features

- 🔐 Complete authentication flow (login, register, forgot password, OTP)
- ⚛️ Ready-to-use React components with shadcn/ui styling
- 🛡️ Route protection with AuthGuard component
- 📱 User profile management
- 🔧 Configurable authentication services
- 🎨 Beautiful UI components built with Radix UI and Tailwind CSS

## Installation

```bash
npm install @smess/auth-plugin
```

## Quick Start

```typescript
import React from 'react';
import { AuthPlugin, LoginForm, AuthGuard } from '@smess/auth-plugin';

const config = {
  baseUrl: 'https://api.example.com',
  clientId: 'your-client-id',
  apiKey: 'your-api-key',
};

const authPlugin = new AuthPlugin(config);

function App() {
  return (
    <AuthGuard authPlugin={authPlugin}>
      <LoginForm authPlugin={authPlugin} />
    </AuthGuard>
  );
}
```

## Components

### AuthPlugin
Main authentication service class that handles all auth operations.

### React Components
- `LoginForm` - Login form with validation
- `RegisterForm` - User registration form
- `ForgotPasswordForm` - Password reset form
- `OTPForm` - OTP verification form
- `UserProfile` - User profile display
- `AuthGuard` - Route protection wrapper

## Services

- `AuthService` - Core authentication logic
- `TokenService` - Token management
- `StorageService` - Local storage handling
- `ApiService` - API communication
- `EventService` - Authentication events

## Configuration

```typescript
interface AuthConfig {
  baseUrl: string;
  clientId: string;
  apiKey: string;
  isProd?: boolean;
}
```

## Development

```bash
# Install dependencies
npm install

# Build the library
npm run build

# Run tests
npm test

# Lint code
npm run lint

# Format code
npm run format
```

## Publishing

```bash
# Build and publish to npm
npm run publish:lib
```

## License

MIT

## Support

For support and questions, please refer to the [SETUP.md](./SETUP.md) file for detailed usage instructions.
npm package: @smessie/eye-js
Description: EYE reasoning in JavaScript with WebAssembly solving your n3 reasoning with client side Prolog execution
Author: Ieben Smessaert
Latest version: 1.3.2
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# eye-js
EYE reasoning in JavaScript with WebAssembly solving your n3 reasoning with client side Prolog execution

## Usage

Install the package via NPM
```
npm install @smessie/eye-js
```

Import and use the function in your code
```javascript
import { n3reasoner} from 'eye-js';

const data = `
@prefix : <urn:example.org:> .
:Alice a :Person .
{ ?S a :Person } => { ?S a :Human } .
`;

const query = `{?S ?P ?O . } => {?S ?P ?O . } .`;

const options = { output: "derivations", blogic: false };

const result = await n3reasoner(data, query, options);
```

### Options

The `options` parameter is optional and can be used to configure the reasoning process. The following options are available:
- `output`: What to output.
    - `derivations`: output only new derived triples, a.k.a `--pass-only-new` (default)
    - `deductive_closure`: output deductive closure, a.k.a `--pass`
    - `deductive_closure_plus_rules`: output deductive closure plus rules, a.k.a `--pass-all`
    - `grounded_deductive_closure_plus_rules`: ground the rules and output deductive closure plus rules, a.k.a `--pass-all-ground`
- `blogic`: Whether to use the blogic or not. Used to support RDF surfaces.
    - `true`: use blogic
    - `false`: do not use blogic (default)


## How this works

This package is a wrapper around the [eyereasoner/eye-js](https://github.com/eyereasoner/eye-js) package and makes it to be in line with the [eye-mock](https://github.com/smessie/eye-mock) package having the same interface, more on this below.

It is thus an EYE reasoner to be used in the browser or Node, built with the technology of SWI-Prolog in the browser using WebAssembly.

Pass your data and query as n3 strings to the `n3reasoner` function, and it will return the resulting triples as a n3 string.

## Server version

Need for more computation power? Check out [eye-mock](https://github.com/smessie/eye-mock) which is a server version of this package. It works with the same interface and is a drop-in replacement. Just change your import from `eye-js` to `eye-mock` and profit from the server power.
npm package: @smfdnx/eslint-config-vue-test
Description: test npm
Latest version: 0.0.5

eslint 可共享配置学习
## 安装
> npm i @smfdnx/test-eslint-vue


## package属性：
> description：包的简介
> 
> repository：适合写上 GitHub 地址 — 所以你可以写成这种格式 username/repo
> 
> license：这里是 MIT 认证
> 
> main：包的入口文件，位置在文件夹的根目录
> 
> keywords：添加一些关键词更容易使你的包被搜索到
> 

## 更新：
### step1. 
> npm version x.x.x
> 
> npm version patch更新一个补丁
> 
> npm version minor更新一个小改动
> 
> npm version major更新一个大改动


### step2.
> npm publish
npm package: @smfdnx/test-eslint-vue
Description: test npm
Latest version: 0.0.2

eslint 可共享配置学习
## 安装
> npm i @smfdnx/test-eslint-vue


## package属性：
> description：包的简介
> repository：适合写上 GitHub 地址 — 所以你可以写成这种格式 username/repo
> license：这里是 MIT 认证
> main：包的入口文件，位置在文件夹的根目录
> keywords：添加一些关键词更容易使你的包被搜索到

## 更新：
> npm version x.x.x
> npm version patch更新一个补丁
> npm version minor更新一个小改动
> npm version major更新一个大改动
npm package: @smflow/seo-slug
Description: A utility package that generate SEO friendly and human readable slug.
Author: SM Flow
Latest version: 0.1.0

# Generate SEO friendly slug with @smflow/seo-slug

seo-slug is a utility package to generate human readable and SEO friendly slug for blog post, eCommerce site and more.

`This is a blog title -> this-is-a-blog-title12345`

[Try this online](https://npm.runkit.com/%40smflow%2Fseo-slug)

## Installation
To use is you need to install it, run this command in your terminal to install it:

```bash
npm install @smflow/seo-slug
```

## Using

This is a simple package which exports a function called `genSlug` to generate the slug. So import the function

```js
import { genSlug } from "@smflow/seo-slug"
```

generate the slug by calling `genSlug` function

```js
const slug = genSlug("This is a blog title to generate slug");
console.log(slug); // this-is-a-blog-title-to-generate-slug1234
```

## Options
- `text` The text for converting slug. Ex `genSlug("Text to convert");`
- `len` This len for generated slug length. Ex `genSlug("Text to convert", 7); -> text-to`
npm package: @smg-automotive/configuration
Description: SMG Automotive configuration conventions
Author: SMG Automotive
Latest version: 1.0.28

# SMG Automotive Configuration

[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

It loads configuration for a specific stage via `dotenv` from `.env/<CONFIG_ENV>`. If no environment is provided it defaults to `NODE_ENV`.

You can add local overrides in `.env/<CONFIG_ENV>.local`. This is useful for temporary or local changes.

## Usage
```
npm install @smg-automotive/configuration
```

Add the following line to your `.gitignore`
```
/.env/*.local
```

The configuration environment can be passed via `CONFIG_ENV` environment variable:

```
$ CONFIG_ENV=stage-prod npm run dev
```

In a nextjs project, you can call `loadConfiguration()` in `next.config.js` and pass the result to next as `env`, see https://nextjs.org/docs/api-reference/next.config.js/environment-variables - configuration values will be available on `process.env` both client- and server-side

```
const configuration = require("@smg-automotive/configuration")
module.exports = {
  env: configuration
}
```

In any node process, simply require the package in your entry point and access variables on `process.env`. Do this as early in the file as possible, ie. before requiring any files that are accessing config variables

```
require("@smg-automotive/configuration")
```

## Development
```
npm run build
```

You can link your local npm package to integrate it with any local project:
```
cd configuration-pkg
npm run build

cd project
npm link ../configuration-pkg/dist
```

## Release a new version

New versions are released on the ci using semantic-release as soon as you merge into master. Please
make sure your merge commit message adheres to the corresponding conventions.


## Circle CI

You will need to enable the repository in circle CI ui to be able to build it.

For slack notifications to work you will need to provide the token in circle settings.
npm package: @smg-automotive/eslint-config
Description: A boilerplate package setup
Author: SMG Automotive
Latest version: 5.3.8

# SMG-Automotive ESLint Config

## Usage

```shell
npm install @smg-automotive/eslint-config
```

Add a `lint` script to `package.json`:

```
  "lint": "eslint ."
```

Add a `format` script to `package.json` to be able to use auto fix:

```
  "format": "npm run lint -- --fix",
```

### ESLint configuration

Create `eslint.config.mjs` in the root of the project:

```mjs
import nextConfig from '@smg-automotive/eslint-config/next';

export default [
  ...nextConfig, 
  {
    // overwrite or add rules here
  }
];
```

- For plain TypeScript project, use the default one: `"@smg-automotive/eslint-config/default"`
- For React project, use `"@smg-automotive/eslint-config/react"`
- For Next.js project, use `"@smg-automotive/eslint-config/next"`

### EditorConfig configuration

Create/Update your `.editorconfig` by [this content](https://github.com/smg-automotive/eslint-config-pkg/blob/main/.editorconfig).

### Prettier configuration

Create `.prettierrc.mjs` in the root of the project:

```mjs
import prettierConfig from '@smg-automotive/eslint-config/prettier';

export default prettierConfig;
```
npm package: @smg-automotive/example
Description: A boilerplate package setup
Author: SMG Automotive
Latest version: 1.1.0

To use this template create a new repository and select `example-pkg` from the template dropdown. 
Make sure to name your repository following `<name>-pkg` convention.
If you're interested in automated dependency updates make sure that `renovate` has access to the new repository.

# Things to do change when you use this repository as a template:
- [ ] replace `example-pkg` with the name of your package in this `README`
- [ ] update the `@smg-automotive/example` with the name of your package in `package.json`
- [ ] update `repository` and `homepage` sections in `package.json` to point to your GitHub repository
- [ ] ensure that branch protection rules are applied to the `main` branch (Settings > Branches)
  - Require a pull request before merging
  - Require approvals
  - Require status checks to pass before merging (project needs to be built in circle for the checks to show up)
  - Require linear history
  - Include administrators
- [ ] enable `dependabot` for security updates (Settings > Code security and analysis)
- [ ] ensure that Frontend team has the admin access to the repository (Settings > Collaborators and teams)
- [ ] invite `automotiveengineeringbot` as an outside collaborator to the repository with write access (this is needed to release the package)
- [ ] login to GitHub as `automotiveengineeringbot` and accept the invitation (credentials are in 1password)
- [ ] provide usage examples in the `README.md`
- [ ] enable the project on circleci.com to build and test your package
- [ ] change the circleci status badge in this `README` to the new project
- [ ] develop an awesome package
- [ ] live long and prosper
# example-pkg

[![CircleCI](https://circleci.com/gh/smg-automotive/example-pkg/tree/main.svg?style=svg&circle-token=c183f151fea3c74453cf8dd962d31e115906a300)](https://circleci.com/gh/smg-automotive/example-pkg/tree/main)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

## Usage
```
npm install @smg-automotive/example
```

## Development
```
npm run build
```

You can link your local npm package to integrate it with any local project:
```
cd smg-automotive-example-pkg
npm run build

cd <project directory>
npm link ../smg-automotive-example-pkg
```

## Release a new version

New versions are released on the ci using semantic-release as soon as you merge into master. Please
make sure your merge commit message adheres to the corresponding [conventions](https://www.conventionalcommits.org/en/v1.0.0/) and your branch name does not contain forward slashes `/`.
npm package: @smg-automotive/phrase-pkg
Description: Phrase CLI
Author: SMG Automotive
Latest version: 1.1.0

[![CircleCI](https://circleci.com/gh/smg-automotive/phrase-pkg/tree/main.svg?style=svg)](https://circleci.com/gh/smg-automotive/phrase-pkg/tree/main)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

## Usage

This package allows syncing between Phrase and the code.
- push new translations to Phrase
- cleanup by removing in Phrase, translations deleted in the code. 

```
npm install @smg-automotive/phrase-pkg
```

```
npx au-phrase push
```

This `push` and `clean up` commands are part of the Phrase CLI and can be run on a project's main branch via circleci. 
The job will look like this in the circleci config file:
```
phrase_push:
    <<: *DOCKER_NODE
    resource_class: small
    steps:
      - attach_workspace:
          at: ~/
      - run: npx au-phrase push
      - <<: *SLACK_NOTIFY
```

## Development
```
npm run build
```

You can link your local npm package to integrate it with any local project:
```
cd smg-automotive/phrase-pkg
npm run build

cd <project directory>
npm link ../smg-automotive/phrase-pkg
```

## Release a new version

New versions are released on the ci using semantic-release as soon as you merge into master. Please
make sure your merge commit message adheres to the corresponding [conventions](https://www.conventionalcommits.org/en/v1.0.0/) and your branch name does not contain forward slashes `/`.