open-index/open-npm huggingface dataset:
npm package: @ngserveio/you-good-nest
Description: An interceptor that utilizes the @ngserveio/you-good validations to check if the body passes validations.
Author: Paul Mead
Latest version: 10.0.0

# @ngserveio/you-good-nest

Find more at libraries and examples at [NgServe.io](https://ngserve.io).

Read More at [Angular Tutorial - Sharing Validations Between Angular and NestJs](https://ngserve.io/angular-tutorial-sharing-validations/)

## Running unit tests

Run `nx test shared-api-validator` to execute the unit tests via [Jest](https://jestjs.io).

## Purpose

The purpose of the `@ngserveio/you-good-nest` library allows developers to centralize their validations for the model in the body of the request. It can be used in conjunction with [@ngserveio/you-good](https://www.npmjs.com/package/@ngserveio/you-good) and [@ngserveio/form-services](https://www.npmjs.com/package/@ngserveio/form-services).

Validations can be shared between both the front end and backend per a combination of the services packages listed above.

[1]: https://www.youtube.com/watch?v=6i-cZ8TyqHI
[2]: https://img.youtube.com/vi/6i-cZ8TyqHI/mqdefault.jpg

### See the Video Tutorial on YouTube

[![Shared Validators for Angular and NestJS][2]][1]

## Implementation

Below is a sample validator that can be used between an Angular application and a NestJs application.

```ts
type ModelT = {
  firstName: string;
  email: string;
  url: string;
  jerseyNumber: number | null;
};

const model: ModelT = {
  firstName: 'Steve',
  email: 's@s.com',
  url: 'https://detroitredwings.com',
  jerseyNumber: null,
};

const modelTValidator: (item: T) => PropertyValidationErrors<T> =
  validate<ModelT>({
    firstName: propertyValidators((p) => p.firstName, [required]),
    email: propertyValidators((p) => p.email, [required, email]),
    url: propertyValidators((p) => p.url, [url]),
    jerseyNumber: propertyValidators((p) => p.jerseyNumber, [required]),
  });

modelTValidator(model); // { jerseyNumber: { required: true } }
```

To consume this in a Nest Application import the `ValidatorInterceptorFactory` from the `@ngserveio/you-good-nest` package.

```ts
import { Body, Controller, Post, UseInterceptors } from '@nestjs/common';
import { ValidatorInterceptorFactory } from '@ngserveio/you-good-nest';
import { emailValidator, EmailListSignup } from '@ng-serve-io/common';

@Controller()
export class AppController {
  @UseInterceptors(ValidatorInterceptorFactory(emailValidator))
  @Post()
  public postData(@Body() emailList: EmailListSignup) {
    return emailList;
  }
}
```

On the intercept of the request, the interceptor checks for a request body and that it passed validations. Client will receive a `BadRequestException` if the checks fail.

The client is left to interpret the friendly error message.

```json
{
  "response": {
    "email": {
      // "email" is a property on the validator
      "required": true,
      "email": false // email is a validator returning a false value
    }
  },
  "status": 400,
  "message": "Bad Request Exception"
}
```
npm package: @ngsl/components
Description: An useful library from the **ngsl** family offering useful Angular components, directives and more...
Author: David Guzman
Latest version: 0.0.18

# @ngsl/components (BETA)

An useful library from the **ngsl** family offering useful Angular components, directives and more...

# Install

Get it on npm:

`npm install @ngsl/components --save`

## Setup

You'll need to add `NgslComponentsModule` to your application module.

```typescript
import { NgModule } from  '@angular/core';
import { AppComponent } from  './app.component';
import { NgslComponentsModule } from  '@ngsl/components'; // This one here

@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    NgslComponentsModule // And this one too!
  ],
  bootstrap: [
    AppComponent
  ],
})
export class AppModule { }
```

## Usage

### Directives
#### AsyncHandler
Usage reference [here](https://github.com/djguzmanc/ngsl/tree/master/projects/components/src/lib/directives/async-handler).
#### Visible
Usage reference [here](https://github.com/djguzmanc/ngsl/tree/master/projects/components/src/lib/directives/visible).

### Components
#### Select
Usage reference [here](https://github.com/djguzmanc/ngsl/tree/master/projects/components/src/lib/components/select).