3.4.10 • Published 7 months ago

dk-checker-remove-extraneous v3.4.10

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Utility for removing extraneous params via ts-interface-checker

coverage npm license size

!WARNING
It's fine if you use this library from NPM package with a static versioning in case you want it for some pet-project or to test it's capabilities.

But for production use it's strongly recommended to create a fork, because I do not write Changelogs and may break / add some functionality without notice.

Installation

Add dk-checker-remove-extraneous to package.json and install.

Usage

This lib works with ts-interface-checker. You can use dk-file-generator for suitable validators generation.

Add to places where validators are used, ex. for API response:

import _ from 'lodash';
import { createCheckers } from 'ts-interface-checker';
import { removeExtraneousParams } from 'dk-checker-remove-extraneous';

import * as apiValidatorsRaw from 'validators/api';

const apiValidators = _.mapValues(apiValidatorsRaw, (value) => createCheckers(value));

function validateResponse(
  apiName: string,
  response: any
) {
  const validators = apiValidators[apiName];

  try {
    // Check mandatory params, throw on error
    validators.TypeResponse.check(response);

    // Clear extraneous params for compatibility (mutable operation)
    removeExtraneousParams({
      data: response,
      validators: validators.TypeResponse, // TypeResponse is a checker, use your name
      logger: ({ extraneousPaths }) => {
        console.warn(`Omitted extraneous ${JSON.stringify(extraneousPaths)} for "api/${apiName}"`);
      },
    });

    // Now response is carefully checked and extraneous params are removed,
    // it's safe to use it as expected
    return response;
  } catch (error) {
    throw new Error(`validateResponse: ${error.message} for "api/${apiName}"`);
  }
}

// Use in fetch
fetch(url)
  .then(fetchResponse => fetchResponse.json())
  .then(response => validateResponse('someApi', response))
  .then(validatedResponse => someLogic(validatedResponse))
  .catch((error) => someErrorHandler(error));
3.4.10

7 months ago

3.4.5

11 months ago

3.4.4

12 months ago

3.4.3

12 months ago

3.4.2

12 months ago

3.4.0

1 year ago

3.4.1

1 year ago

3.3.9

1 year ago

3.3.8

1 year ago

3.3.6

1 year ago

3.3.1

1 year ago

3.3.0

1 year ago

3.3.5

1 year ago

3.3.4

1 year ago

3.3.3

1 year ago

3.3.2

1 year ago

3.2.24

1 year ago

3.2.23

1 year ago

3.2.26

1 year ago

3.2.25

1 year ago

3.2.28

1 year ago

3.2.27

1 year ago

3.2.20

1 year ago

3.2.22

1 year ago

3.2.21

1 year ago

3.2.17

1 year ago

3.2.16

1 year ago

3.2.19

1 year ago

3.2.18

1 year ago

3.2.15

1 year ago

3.2.9

1 year ago

3.2.13

1 year ago

3.2.12

1 year ago

3.2.14

1 year ago

3.2.11

1 year ago

3.2.10

1 year ago

3.2.8

1 year ago

3.2.7

1 year ago

3.2.6

1 year ago

3.2.6-alpha.0

1 year ago

3.2.2

1 year ago

3.2.3

1 year ago

3.2.1

1 year ago

3.2.0

1 year ago

3.1.43

1 year ago

3.1.42

1 year ago

3.1.41

1 year ago

3.1.40

1 year ago

3.1.39

1 year ago

3.1.38

1 year ago

3.1.16

2 years ago

3.1.15

2 years ago

3.1.18

2 years ago

3.1.17

2 years ago

3.1.23

2 years ago

3.1.22

2 years ago

3.1.25

2 years ago

3.1.24

2 years ago

3.1.27

2 years ago

3.1.26

2 years ago

3.1.29

2 years ago

3.1.28

2 years ago

3.1.21

2 years ago

3.1.20

2 years ago

3.1.19

2 years ago

3.1.34

2 years ago

3.1.33

2 years ago

3.1.36

2 years ago

3.1.35

2 years ago

3.1.37

2 years ago

3.1.30

2 years ago

3.1.32

2 years ago

3.1.31

2 years ago

3.1.12

2 years ago

3.1.11

2 years ago

3.1.14

2 years ago

3.1.13

2 years ago

3.1.9

2 years ago

3.1.8

2 years ago

3.0.18

2 years ago

3.0.19

2 years ago

3.0.9

2 years ago

3.0.4

2 years ago

3.1.2

2 years ago

3.0.13

2 years ago

3.1.1

2 years ago

3.0.10

2 years ago

3.1.0

2 years ago

3.0.11

2 years ago

3.1.7

2 years ago

3.0.16

2 years ago

3.0.8

2 years ago

3.1.6

2 years ago

3.0.17

2 years ago

3.0.7

2 years ago

3.1.5

2 years ago

3.0.14

2 years ago

3.0.6

2 years ago

3.1.4

2 years ago

3.0.15

2 years ago

2.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago